designManager.ts 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384
  1. export class designManager {
  2. private static _instance: designManager;
  3. private constructor() { };
  4. public static get instance(): designManager {
  5. if (!this._instance) {
  6. this._instance = new designManager();
  7. }
  8. return this._instance;
  9. }
  10. tb2Arr: object = {};
  11. tb2Obj: object = {};
  12. initTable(tableName: string, arr: string[]) {
  13. // 获取首行提示符
  14. let tips = arr[0].split(',');
  15. // 获取第二行字段类型
  16. let types = arr[1].split(',');
  17. // 获取第三行字段名字
  18. let names = arr[2].split(',');
  19. // 处理剩余数据
  20. let table: object = {};
  21. let rowArr = [];
  22. for (let i = 3, len = arr.length; i < len; i++) {
  23. let valArr = arr[i].split(/,/g);
  24. let id = valArr[0];
  25. if (!id) {
  26. continue;
  27. }
  28. let obj = this.initRow(names, types, valArr);
  29. table[id] = obj;
  30. rowArr.push(obj);
  31. }
  32. // 加入表格
  33. this.tb2Obj[tableName] = table;
  34. this.tb2Arr[tableName] = rowArr;
  35. }
  36. initRow(names: string[], types: string[], valArr: string[]) {
  37. let obj = {};
  38. for (let i = 0, len = valArr.length; i < len; i++) {
  39. // 如果字段不存在则跳过
  40. if (!names[i]) {
  41. continue;
  42. }
  43. // 去除空格
  44. let key = names[i].replace(/\b\s*/g, "");
  45. let typeName = types[i].replace(/\b\s*/g, "");
  46. let value = valArr[i].replace(/\b\s*/g, "");
  47. // 区分字段类型
  48. if (typeName == 'string') {
  49. if (key.length >= 3 && key.substring(key.length - 3, key.length).toLowerCase() == "arr") {
  50. let tmpArr: any = value.split("|");
  51. tmpArr.forEach((tmpVal, index) => {
  52. tmpArr[index] = parseInt(tmpVal);
  53. });
  54. obj[key] = tmpArr;
  55. } else {
  56. obj[key] = value;
  57. }
  58. } else if (typeName == "number") {
  59. obj[key] = Number(value);
  60. }
  61. }
  62. return obj;
  63. }
  64. getTable(tabelName: string) {
  65. return this.tb2Arr[tabelName];
  66. }
  67. getRowById(tableName: string, id: number) {
  68. return this.tb2Obj[tableName][id];
  69. }
  70. }