cnhis-design-vue 3.1.2 → 3.1.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (213) hide show
  1. package/CHANGELOG.md +17 -0
  2. package/env.d.ts +8 -4
  3. package/es/packages/big-table/index.d.ts +2038 -0
  4. package/es/packages/big-table/index.mjs +1 -0
  5. package/es/packages/big-table/index2.mjs +10 -0
  6. package/es/packages/big-table/src/BigTable.mjs +2 -0
  7. package/es/packages/big-table/src/BigTable.vue.d.ts +2052 -0
  8. package/es/packages/big-table/src/BigTable.vue_vue_type_script_setup_true_lang.mjs +2315 -0
  9. package/es/packages/big-table/src/BigTable2.mjs +4 -0
  10. package/es/packages/big-table/src/bigTableEmits.d.ts +2 -0
  11. package/es/packages/big-table/src/bigTableEmits.mjs +1 -0
  12. package/{packages/big-table/src/bigTableEmits.ts → es/packages/big-table/src/bigTableEmits2.mjs} +48 -48
  13. package/es/packages/big-table/src/bigTableProps.d.ts +194 -0
  14. package/es/packages/big-table/src/bigTableProps.mjs +1 -0
  15. package/{packages/big-table/src/bigTableProps.ts → es/packages/big-table/src/bigTableProps2.mjs} +116 -125
  16. package/es/packages/big-table/src/bigTableState.d.ts +55 -0
  17. package/es/packages/big-table/src/bigTableState.mjs +1 -0
  18. package/es/packages/big-table/src/bigTableState2.mjs +51 -0
  19. package/es/packages/big-table/src/components/NoData.mjs +2 -0
  20. package/es/packages/big-table/src/components/NoData.vue.d.ts +51 -0
  21. package/es/packages/big-table/src/components/NoData.vue_vue_type_script_setup_true_lang.mjs +72 -0
  22. package/es/packages/big-table/src/components/NoData2.mjs +4 -0
  23. package/es/packages/big-table/src/components/SvgIcon.mjs +2 -0
  24. package/es/packages/big-table/src/components/SvgIcon.vue.d.ts +43 -0
  25. package/es/packages/big-table/src/components/SvgIcon.vue_vue_type_script_setup_true_lang.mjs +34 -0
  26. package/es/packages/big-table/src/components/SvgIcon2.mjs +4 -0
  27. package/es/packages/big-table/src/components/TextOverTooltip.mjs +2 -0
  28. package/es/packages/big-table/src/components/TextOverTooltip.vue.d.ts +560 -0
  29. package/es/packages/big-table/src/components/TextOverTooltip.vue_vue_type_script_setup_true_lang.mjs +74 -0
  30. package/es/packages/big-table/src/components/TextOverTooltip2.mjs +4 -0
  31. package/es/packages/big-table/src/components/edit-form/edit-date.d.ts +34 -0
  32. package/es/packages/big-table/src/components/edit-form/edit-date.mjs +88 -0
  33. package/es/packages/big-table/src/components/edit-form/edit-input.d.ts +43 -0
  34. package/es/packages/big-table/src/components/edit-form/edit-input.mjs +51 -0
  35. package/es/packages/big-table/src/components/edit-form/edit-select-table.d.ts +35 -0
  36. package/es/packages/big-table/src/components/edit-form/edit-select.d.ts +35 -0
  37. package/es/packages/big-table/src/components/edit-form/edit-select.mjs +89 -0
  38. package/es/packages/big-table/src/hooks/useBatchEditing.d.ts +17 -0
  39. package/es/packages/big-table/src/hooks/useBatchEditing.mjs +1 -0
  40. package/es/packages/big-table/src/hooks/useBatchEditing2.mjs +284 -0
  41. package/es/packages/big-table/src/hooks/useEdit.d.ts +171 -0
  42. package/es/packages/big-table/src/hooks/useEdit.mjs +1 -0
  43. package/es/packages/big-table/src/hooks/useEdit2.mjs +108 -0
  44. package/es/packages/big-table/src/hooks/useFormat.d.ts +29 -0
  45. package/es/packages/big-table/src/hooks/useFormat.mjs +1 -0
  46. package/{packages/big-table/src/hooks/useFormat.ts → es/packages/big-table/src/hooks/useFormat2.mjs} +480 -612
  47. package/es/packages/big-table/src/hooks/useNestTable.d.ts +8 -0
  48. package/es/packages/big-table/src/hooks/useNestTable.mjs +1 -0
  49. package/{packages/big-table/src/hooks/useNestTable.ts → es/packages/big-table/src/hooks/useNestTable2.mjs} +84 -109
  50. package/es/packages/big-table/src/hooks/useTableParse.d.ts +6 -0
  51. package/es/packages/big-table/src/hooks/useTableParse.mjs +1 -0
  52. package/es/packages/big-table/src/hooks/useTableParse2.mjs +135 -0
  53. package/es/packages/big-table/src/utils.d.ts +54 -0
  54. package/es/packages/big-table/src/utils.mjs +1 -0
  55. package/{packages/big-table/src/utils.ts → es/packages/big-table/src/utils2.mjs} +597 -705
  56. package/es/packages/big-table/style/index.css +448 -0
  57. package/{packages/big-table/src/assets/style/table-base.less → es/packages/big-table/style/index.less} +292 -10
  58. package/es/packages/button-print/index.d.ts +7402 -0
  59. package/es/packages/button-print/index.mjs +1 -0
  60. package/es/packages/button-print/index2.mjs +10 -0
  61. package/es/packages/button-print/src/ButtonPrint.mjs +2 -0
  62. package/es/packages/button-print/src/ButtonPrint.vue.d.ts +7401 -0
  63. package/es/packages/button-print/src/ButtonPrint.vue_vue_type_script_setup_true_lang.mjs +462 -0
  64. package/es/packages/button-print/src/ButtonPrint2.mjs +4 -0
  65. package/es/packages/button-print/src/components/IdentityVerification.mjs +2 -0
  66. package/es/packages/button-print/src/components/IdentityVerification.vue.d.ts +4782 -0
  67. package/es/packages/button-print/src/components/IdentityVerification.vue_vue_type_script_setup_true_lang.mjs +126 -0
  68. package/es/packages/button-print/src/components/IdentityVerification2.mjs +4 -0
  69. package/es/packages/button-print/src/interfaces.d.ts +19 -0
  70. package/es/packages/button-print/src/interfaces.mjs +1 -0
  71. package/es/packages/button-print/src/utils/print.es.min.d.ts +2 -0
  72. package/es/packages/button-print/src/utils/print.es.min.mjs +1 -0
  73. package/es/packages/button-print/src/utils/print.es.min2.mjs +2080 -0
  74. package/es/packages/button-print/style/index.css +26 -0
  75. package/es/packages/button-print/style/index.less +32 -0
  76. package/es/packages/drag-layout/index.d.ts +20061 -0
  77. package/es/packages/drag-layout/index.mjs +1 -0
  78. package/es/packages/drag-layout/index2.mjs +10 -0
  79. package/es/packages/drag-layout/src/DragFormLeftItem.mjs +2 -0
  80. package/es/packages/drag-layout/src/DragFormLeftItem.vue.d.ts +7959 -0
  81. package/es/packages/drag-layout/src/DragFormLeftItem.vue_vue_type_script_setup_true_lang.mjs +122 -0
  82. package/es/packages/drag-layout/src/DragFormLeftItem2.mjs +4 -0
  83. package/es/packages/drag-layout/src/DragFormRightItem.mjs +2 -0
  84. package/es/packages/drag-layout/src/DragFormRightItem.vue.d.ts +3213 -0
  85. package/es/packages/drag-layout/src/DragFormRightItem.vue_vue_type_script_setup_true_lang.mjs +267 -0
  86. package/es/packages/drag-layout/src/DragFormRightItem2.mjs +4 -0
  87. package/es/packages/drag-layout/src/DragLayout.mjs +2 -0
  88. package/es/packages/drag-layout/src/DragLayout.vue.d.ts +20069 -0
  89. package/es/packages/drag-layout/src/DragLayout.vue_vue_type_script_setup_true_lang.mjs +657 -0
  90. package/es/packages/drag-layout/src/DragLayout2.mjs +4 -0
  91. package/es/packages/drag-layout/style/index.css +175 -0
  92. package/es/packages/drag-layout/style/index.less +208 -0
  93. package/es/packages/field-set/index.d.ts +2647 -0
  94. package/es/packages/field-set/index.mjs +1 -0
  95. package/es/packages/field-set/index2.mjs +10 -0
  96. package/es/packages/field-set/src/FieldSet.mjs +2 -0
  97. package/es/packages/field-set/src/FieldSet.vue.d.ts +2599 -0
  98. package/es/packages/field-set/src/FieldSet.vue_vue_type_script_setup_true_lang.mjs +330 -0
  99. package/es/packages/field-set/src/FieldSet2.mjs +4 -0
  100. package/es/packages/field-set/style/index.css +162 -0
  101. package/es/packages/field-set/style/index.less +172 -0
  102. package/es/packages/grid/index.d.ts +5 -0
  103. package/es/packages/grid/index.mjs +1 -0
  104. package/es/packages/grid/index2.mjs +13 -0
  105. package/es/packages/grid/src/Grid.d.ts +2 -0
  106. package/es/packages/grid/src/Grid.mjs +28 -0
  107. package/es/packages/grid/src/hooks.d.ts +1 -0
  108. package/es/packages/grid/src/hooks.mjs +1 -0
  109. package/es/packages/grid/src/hooks2.mjs +165 -0
  110. package/es/packages/index.css +1004 -0
  111. package/es/packages/index.d.ts +35651 -0
  112. package/es/packages/index.less +1207 -0
  113. package/es/packages/index.mjs +7 -0
  114. package/es/packages/index2.mjs +37 -0
  115. package/es/packages/select-person/index.d.ts +3500 -0
  116. package/es/packages/select-person/index.mjs +1 -0
  117. package/es/packages/select-person/index2.mjs +10 -0
  118. package/es/packages/select-person/src/SearchTree.mjs +2 -0
  119. package/es/packages/select-person/src/SearchTree.vue.d.ts +344 -0
  120. package/es/packages/select-person/src/SearchTree.vue_vue_type_script_setup_true_lang.mjs +231 -0
  121. package/es/packages/select-person/src/SearchTree2.mjs +4 -0
  122. package/es/packages/select-person/src/SelectPerson.mjs +2 -0
  123. package/es/packages/select-person/src/SelectPerson.vue.d.ts +3501 -0
  124. package/es/packages/select-person/src/SelectPerson.vue_vue_type_script_setup_true_lang.mjs +892 -0
  125. package/es/packages/select-person/src/SelectPerson2.mjs +4 -0
  126. package/es/packages/select-person/src/utils/index.d.ts +12 -0
  127. package/es/packages/select-person/src/utils/index.mjs +1 -0
  128. package/{packages/select-person/src/utils/index.js → es/packages/select-person/src/utils/index2.mjs} +57 -66
  129. package/es/packages/select-person/style/index.css +193 -0
  130. package/es/packages/select-person/style/index.less +231 -0
  131. package/{packages/big-table → es}/src/assets/iconfont/iconfont.ttf +0 -0
  132. package/{packages/big-table → es}/src/assets/img/failure.png +0 -0
  133. package/{packages/big-table → es}/src/assets/img/icon-asc.png +0 -0
  134. package/{packages/big-table → es}/src/assets/img/icon-desc.png +0 -0
  135. package/{packages/big-table → es}/src/assets/img/no-permission.png +0 -0
  136. package/{packages/big-table → es}/src/assets/img/nodata.png +0 -0
  137. package/{packages/big-table → es}/src/assets/img/notfound.png +0 -0
  138. package/{packages/big-table → es}/src/assets/img/qr.png +0 -0
  139. package/{packages/big-table → es}/src/assets/img/video_default_cover.png +0 -0
  140. package/{packages/big-table → es}/src/assets/img/xb_big.png +0 -0
  141. package/{packages/big-table → es}/src/assets/img/xb_small.png +0 -0
  142. package/es/src/core/create.d.ts +1 -0
  143. package/es/src/core/create.mjs +1 -0
  144. package/es/src/core/create2.mjs +8 -0
  145. package/es/src/global/variable.d.ts +2 -0
  146. package/es/src/global/variable.mjs +1 -0
  147. package/es/src/global/variable2.mjs +4 -0
  148. package/es/src/types/index.d.ts +4 -0
  149. package/es/src/types/index.mjs +1 -0
  150. package/es/src/utils/clickoutside.d.ts +18 -0
  151. package/es/src/utils/clickoutside.mjs +1 -0
  152. package/es/src/utils/clickoutside2.mjs +48 -0
  153. package/es/src/utils/crypto.d.ts +7 -0
  154. package/es/src/utils/crypto.mjs +1 -0
  155. package/{src/utils/crypto.js → es/src/utils/crypto2.mjs} +25 -25
  156. package/es/src/utils/vexutils.d.ts +5 -0
  157. package/es/src/utils/vexutils.mjs +3 -0
  158. package/es/src/utils/vexutils2.mjs +729 -0
  159. package/global.d.ts +8 -0
  160. package/package.json +54 -21
  161. package/yarn-error.log +122 -0
  162. package/es/big-table/index.css +0 -587
  163. package/es/big-table/index.js +0 -41709
  164. package/es/button-print/index.css +0 -617
  165. package/es/button-print/index.js +0 -8356
  166. package/es/drag-layout/index.css +0 -850
  167. package/es/drag-layout/index.js +0 -13104
  168. package/es/field-set/index.css +0 -1048
  169. package/es/field-set/index.js +0 -351
  170. package/es/grid/index.css +0 -1049
  171. package/es/grid/index.js +0 -30819
  172. package/es/index.css +0 -1323
  173. package/es/index.js +0 -46937
  174. package/es/select-person/index.css +0 -1323
  175. package/es/select-person/index.js +0 -13191
  176. package/packages/big-table/index.ts +0 -17
  177. package/packages/big-table/src/BigTable.vue +0 -2599
  178. package/packages/big-table/src/assets/iconfont/iconfont.less +0 -22
  179. package/packages/big-table/src/assets/style/table-global.less +0 -171
  180. package/packages/big-table/src/bigTableState.ts +0 -63
  181. package/packages/big-table/src/components/NoData.vue +0 -90
  182. package/packages/big-table/src/components/TextOverTooltip.vue +0 -110
  183. package/packages/big-table/src/components/edit-form/edit-date.vue +0 -75
  184. package/packages/big-table/src/components/edit-form/edit-input.vue +0 -39
  185. package/packages/big-table/src/components/edit-form/edit-select-table.vue +0 -133
  186. package/packages/big-table/src/components/edit-form/edit-select.vue +0 -95
  187. package/packages/big-table/src/hooks/useBatchEditing.ts +0 -574
  188. package/packages/big-table/src/hooks/useEdit.ts +0 -130
  189. package/packages/big-table/src/hooks/useTableParse.ts +0 -169
  190. package/packages/button-print/index.ts +0 -15
  191. package/packages/button-print/src/ButtonPrint.vue +0 -481
  192. package/packages/button-print/src/components/IdentityVerification.vue +0 -121
  193. package/packages/button-print/src/interfaces.ts +0 -19
  194. package/packages/button-print/src/utils/print.es.min.js +0 -1
  195. package/packages/drag-layout/index.ts +0 -15
  196. package/packages/drag-layout/src/DragFormLeftItem.vue +0 -131
  197. package/packages/drag-layout/src/DragFormRightItem.vue +0 -277
  198. package/packages/drag-layout/src/DragLayout.vue +0 -712
  199. package/packages/field-set/index.ts +0 -15
  200. package/packages/field-set/src/FieldSet.vue +0 -471
  201. package/packages/grid/index.ts +0 -20
  202. package/packages/grid/src/Grid.tsx +0 -18
  203. package/packages/grid/src/hooks.ts +0 -167
  204. package/packages/index.ts +0 -41
  205. package/packages/select-person/index.ts +0 -11
  206. package/packages/select-person/src/SelectPerson.vue +0 -1104
  207. package/packages/select-person/src/search-tree.vue +0 -326
  208. package/src/component/svg/index.vue +0 -49
  209. package/src/core/create.js +0 -5
  210. package/src/global/variable.ts +0 -2
  211. package/src/utils/clickoutside.ts +0 -80
  212. package/src/utils/vexutils.js +0 -811
  213. package/tsconfig.node.json +0 -8
@@ -1,612 +1,480 @@
1
- import vexutils from '@/utils/vexutils.js';
2
- interface Idata {
3
- tableList: any[];
4
- fieldList: any[];
5
- btnList: any[];
6
- oldtableData: any[];
7
- showButtonTop: number;
8
- isNestTabel?: boolean;
9
- mainTableTheUniqueKey?: string;
10
- mainTableRow?: {
11
- [key: string]: any;
12
- };
13
- nestTableId?: string;
14
- }
15
-
16
- export const useFormat = (state: any) => {
17
- // 行数据解析逻辑
18
- const formatData = (
19
- data: Idata = {
20
- tableList: [],
21
- fieldList: [],
22
- btnList: [],
23
- oldtableData: [],
24
- showButtonTop: 0,
25
- isNestTabel: false,
26
- mainTableTheUniqueKey: "",
27
- mainTableRow: {},
28
- nestTableId: "",
29
- }
30
- ) => {
31
- const {
32
- tableList,
33
- fieldList,
34
- btnList,
35
- oldtableData,
36
- showButtonTop,
37
- isNestTabel,
38
- mainTableTheUniqueKey,
39
- mainTableRow,
40
- nestTableId,
41
- } = data;
42
- const { nobutton = false } = state.options?.config || {}; // 调用表格,设置表格是否要按钮操作。
43
- return tableList.map((item, index) => {
44
- if (isNestTabel) {
45
- // 嵌套列表中, 点击子表需要获取主表theUniqueKey, 所以格式化子表数据时, 保存主表 theUniqueKey
46
- Object.assign(item, {
47
- __mainTableTheUniqueKey__: mainTableTheUniqueKey,
48
- __isNestTabel__: isNestTabel,
49
- __mainTableRow__: mainTableRow,
50
- __nestTableId__: nestTableId
51
- })
52
- }
53
- // 因为存在树形表格,这里一定要用theUniqueKey,后面才能找到对应节点
54
- Object.assign(item, {
55
- my_index: item.theUniqueKey,
56
- isClick: false,
57
- isChecked: false
58
- })
59
- item._triggerMethodField = state.triggerMethodField;
60
- const originalValue: any = {}; // 记录修改前的值
61
- Object.keys(item).forEach(key => {
62
- originalValue[key] = item[key];
63
- if (vexutils.isPlainObject(item[key])) {
64
- item[key] = JSON.stringify(item[key]);
65
- }
66
- const matchFieldList = fieldList.find(field => field.columnName === key);
67
- if (!matchFieldList) return;
68
- // attrType colorAndIcon 在 formatData 方法外处理的。
69
- const { attrType, colorAndIcon, settingObj } = matchFieldList || {};
70
- if (!attrType) {
71
- matchFieldList.attrType = settingObj?.attr || undefined;
72
- }
73
- if (!colorAndIcon) {
74
- matchFieldList.colorAndIcon = settingObj?.colorAndIcon || undefined;
75
- }
76
-
77
- // 将字段为百分数类型的值 先转化
78
- if (item[key] && matchFieldList?.settingObj?.attr === "PERCENTAGE") {
79
- if (vexutils.isNumber(+item[key])) {
80
- // item[key] = ((+item[key] > 1 ? 1 : +item[key]) * 1000000) / 10000 + "%";
81
- item[key] = accMul(+item[key], 100) + "%";
82
- }
83
- }
84
- if (vexutils.isString(item[key])) {
85
- if (matchFieldList && matchFieldList.attrType) {
86
- if (
87
- item[key] &&
88
- (item[key].includes("http://") || item[key].includes("https://")) &&
89
- matchFieldList.attrType != "PICTURE"
90
- ) {
91
- if (vexutils.isJSON(item[key])) {
92
- item[key] = JSON.parse(item[key]);
93
- }
94
- }
95
- // MULTISELECT PICTURE FILE
96
- if (matchFieldList.attrType == "FILE") {
97
- item[key] = handleJson(item[key], "str", "");
98
- } else if (matchFieldList.attrType == "MULTISELECT") {
99
- if (vexutils.isJSON(item[key])) {
100
- item[key] = JSON.parse(item[key]);
101
- }
102
- item[key] = handleMULTISELECT(item[key], "objStr");
103
- } else if (matchFieldList.attrType == "LABEL") {
104
- if (vexutils.isJSON(item[key])) {
105
- item[key] = JSON.parse(item[key]);
106
- if (!item[key].labels) {
107
- item[key] = handleJson(item[key], "type", "labelStr");
108
- }
109
- }
110
- if (item[key]) {
111
- const labels = item[key].labels || item[key].split(",");
112
- let curHtml = [];
113
- if (labels?.length > 0) {
114
- curHtml = handleLabel(labels);
115
- }
116
- item[key] = state.source === "guageChoice" ? curHtml.join("") : curHtml.join("");
117
- }
118
- } else if (matchFieldList.attrType == "CASCADE") {
119
- if (vexutils.isJSON(item[key])) {
120
- item[key] = JSON.parse(item[key]);
121
- }
122
- item[key] = handleJson(item[key], "type", "objStr");
123
- } else if (matchFieldList.attrType == "EVALUATE") {
124
- const str = item[key];
125
- if (vexutils.isJSON(str)) {
126
- const obj = JSON.parse(str);
127
- item[key] = obj.star ? `${obj.star}星` : "";
128
- } else {
129
- item[key] = str;
130
- }
131
- } else if (matchFieldList.attrType == "MAP") {
132
- const str = item[key];
133
- if (vexutils.isJSON(str)) {
134
- const obj = JSON.parse(str);
135
- item[key] = obj.address || "";
136
- } else {
137
- item[key] = str;
138
- }
139
- } else if (
140
- matchFieldList.attrType == "PICTURE" &&
141
- vexutils.isJSON(item[key])
142
- ) {
143
- let pics = JSON.parse(item[key]);
144
- pics = pics.map((ii: any) => ii.url);
145
- item[key] = pics.join(",");
146
- }
147
- } else if (item[key].includes("http://") || item[key].includes("https://")) {
148
- try {
149
- item[key] = JSON.parse(item[key]);
150
- item[key] = handleJson(item[key], "str", "");
151
- } catch (e) {
152
- e;
153
- }
154
- }
155
- // 样式处理
156
- if (
157
- item[key] &&
158
- vexutils.isString(item[key]) &&
159
- item[key].startsWith("###{")
160
- ) {
161
- const temp = JSON.parse(item[key].replace("###", ""));
162
- // 格式化时间
163
- if ("tooltip" in temp) {
164
- item[key] = temp;
165
- // item[key] = temp.value;
166
- } else {
167
- if (state.source === "guageChoice") {
168
- item[key] = temp.change_text;
169
- } else {
170
- if (temp.background != "#ffffff") {
171
- item[key] = `<span class="field-span" style="color:${
172
- temp.background
173
- }"><span class="${temp.icon}"></span>${temp.change_text || ""}</span>`;
174
- } else {
175
- item[key] = temp.change_text;
176
- }
177
- }
178
- }
179
- }
180
- }
181
- const SPANTAG_REGEXP = /<\/?span.*?>/g;
182
- if (
183
- item[key] &&
184
- matchFieldList &&
185
- matchFieldList.colorAndIcon &&
186
- !SPANTAG_REGEXP.test(item[key])
187
- ) {
188
- const { colorAndIcon = [] } = matchFieldList;
189
- if (colorAndIcon && colorAndIcon.length) {
190
- const findC = colorAndIcon.find((c: any) =>
191
- vexutils.parseCondition(
192
- c.condition,
193
- {
194
- form: {},
195
- table: { ...oldtableData[index] },
196
- sys: {},
197
- },
198
- fieldList
199
- )
200
- );
201
- if (findC) {
202
- if (state.source !== "guageChoice") {
203
- item[key] = `<span style="color:${findC.color}"><span class="${
204
- findC.icon
205
- }"></span>${item[key] || ""}</span>`;
206
- }
207
- }
208
- }
209
- }
210
- });
211
- if (item.operatorColumn) {
212
- item["btnList"] = [];
213
- item["allBtnList"] = [];
214
- item["tileBtnList"] = [];
215
- item["foldBtnList"] = [];
216
- // this.$set(item, 'btnList', []);
217
- // this.$set(item, 'allBtnList', []);
218
- // this.$set(item, 'tileBtnList', []);
219
- // this.$set(item, 'foldBtnList', []);
220
- const btnLinks: any[] = [];
221
- if (!nobutton) {
222
- btnList.forEach(btn => {
223
- const rowOperatorId = item.operatorColumn.find((v: any) => v.includes(btn.sid));
224
- if (rowOperatorId) {
225
- /** 获取按钮的操作对象 */
226
- if (btn.isShow == "1") {
227
- if (btn.type == "LINK") {
228
- btnLinks.push(btn.name);
229
- // 如果是 switch 类型的 需要取原始值(###开头的值会被解析,switch的有一套自己的解析逻辑)
230
- const settingObj = Array.isArray(btn.settingObj)
231
- ? btn.settingObj[0]
232
- : btn.settingObj;
233
- const name = btn.name;
234
- if (settingObj && settingObj.linkShowType == "switch") {
235
- item[name] = originalValue[name] || item[name];
236
- }
237
- }
238
- item.btnList.push(btn);
239
- item.allBtnList.push(btn);
240
- if (!isPrintBtn(btn)) {
241
- // 不是打印按钮才显示在列表的操作按钮
242
- if (btn.toggle == "fold") {
243
- // if (showButtonTop == 1) {
244
- // if (
245
- // ["EDIT", "DELETE"].includes(btn.type) &&
246
- // btn.showStyle == "only_icon"
247
- // ) {
248
- // item.foldBtnList.push(btn);
249
- // item.showOperatorBtn = true;
250
- // }
251
- // } else {
252
- // item.foldBtnList.push(btn);
253
- // }
254
- item.foldBtnList.push(btn);
255
- } else {
256
- // if (showButtonTop == 1) {
257
- // if (
258
- // ["EDIT", "DELETE"].includes(btn.type) &&
259
- // btn.showStyle == "only_icon"
260
- // ) {
261
- // item.tileBtnList.push(btn);
262
- // item.showOperatorBtn = true;
263
- // }
264
- // } else {
265
- // item.tileBtnList.push(btn);
266
- // }
267
- item.tileBtnList.push(btn);
268
- }
269
- }
270
- }
271
- } else if (btn.type == "ADD" || btn.type == "BATCH") {
272
- btn.isShow == "1" ? item.allBtnList.push(btn) : null;
273
- }
274
- });
275
- }
276
- item["btnLinks"] = btnLinks;
277
- // this.$set(item, 'btnLinks', btnLinks);
278
- }
279
- fieldList.forEach(field => {
280
- if (
281
- field.fieldType == "DATE" ||
282
- field.fieldType == "DATETIME" ||
283
- field.fieldType == "TIME"
284
- ) {
285
- if (field.settingObj && field.settingObj.attr == "BIRTHDAY" && field.settingObj.format) {
286
- const year = 31536000000;
287
- const nowDate = +new Date();
288
- let curAge, curStr, mmdd;
289
- const hasAge = field.settingObj.format.includes("age");
290
- if (vexutils.isNumber(+item[field.columnName])) {
291
- curStr = new Date(+item[field.columnName]).toLocaleDateString().replace(/\//g, "-");
292
- } else {
293
- curStr = item[field.columnName];
294
- }
295
- if (!curStr) return;
296
- // let curDate = +new Date(curStr.replace((/-/g, '/')));
297
- const curDate = +new Date(curStr.replace("/"));
298
- if (hasAge) {
299
- mmdd = curStr.split("-");
300
- mmdd.shift();
301
- curAge = (nowDate - curDate) / year;
302
- if (curAge < 0 || isNaN(curAge)) {
303
- curAge = 0;
304
- }
305
- item[field.columnName] =
306
- field.settingObj.format == "age"
307
- ? curAge + ""
308
- : mmdd.join("-") + `(${curAge}岁)`;
309
- } else {
310
- item[field.columnName] = vexutils.toDateString(
311
- curStr,
312
- field.settingObj.format
313
- );
314
- }
315
- } else if (vexutils.isNumber(+item[field.columnName])) {
316
- item[field.columnName] = vexutils.formatTime(
317
- field.fieldType,
318
- item[field.columnName]
319
- );
320
- } else if (vexutils.isJSON(field.guageSetting)) {
321
- const guageSetting = JSON.parse(field.guageSetting);
322
- if (guageSetting.startToStop === "1") {
323
- try {
324
- const arr = JSON.parse(item[field.columnName]);
325
- item[field.columnName] = arr.join("~");
326
- } catch {
327
- item[field.columnName] = "";
328
- }
329
- }
330
- }
331
- }
332
- if (field.settingObj && field.settingObj.attr == "WEBSITE") {
333
- if (item[field.columnName]) {
334
- let showKey = field.columnName;
335
- let showName = "";
336
- if (field.settingObj.websiteAttr) {
337
- if (field.settingObj.websiteAttr.startsWith("table.")) {
338
- showKey = field.settingObj.websiteAttr.split(".")[1];
339
- } else {
340
- showName = field.settingObj.websiteAttr;
341
- }
342
- }
343
- showName = showName ? showName : item[showKey] || item[field.columnName];
344
- if (state.source === "guageChoice") {
345
- item[field.columnName] = showName;
346
- } else {
347
- item[field.columnName] = `<span ><a href="${item[field.columnName]}" title="${
348
- item[field.columnName]
349
- }" target="_blank">${showName}</a></span>`;
350
- }
351
- }
352
- } else if (field.fieldSetting) {
353
- item.fieldSetting = field.fieldSetting;
354
- }
355
-
356
- // 处理量表数据
357
- if (field.guageType) {
358
- const { guageType, columnName, guageSetting, settingObj = {} } = field;
359
- let guageSettingObj = null;
360
- if (vexutils.isJSON(guageSetting)) {
361
- guageSettingObj = JSON.parse(guageSetting);
362
- }
363
- if (guageType == "CHECKBOX_BLOCK" || guageType == "EVALUATE_CHECKBOX_BLOCK") {
364
- if (vexutils.isJSON(item[columnName])) {
365
- item[columnName] = JSON.parse(item[columnName]).join(",");
366
- }
367
- } else if (guageType == "SELECT") {
368
- if (guageSettingObj.isMultiple) {
369
- if (vexutils.isJSON(item[columnName])) {
370
- item[columnName] = item[columnName] ? JSON.parse(item[columnName]).join(",") : "";
371
- }
372
- }
373
- } else if (guageType == "SEARCH_CASCADE") {
374
- if (item[columnName]) {
375
- if (vexutils.isJSON(item[columnName])) {
376
- item[columnName] = JSON.parse(item[columnName]).join(",");
377
- } else {
378
- if (Array.isArray(item[columnName])) {
379
- item[columnName] = item[columnName].join(",");
380
- }
381
- }
382
- }
383
- } else if (guageType == "DATE" || guageType == "TIME") {
384
- if (guageSettingObj.startToStop == 1) {
385
- item[columnName] = item[columnName] ? JSON.parse(item[columnName]).join(",") : "";
386
- }
387
- } else if (guageType == "LOCATION") {
388
- if (vexutils.isJSON(item[columnName])) {
389
- const valObj = JSON.parse(item[columnName]);
390
- item[columnName] = valObj.address || valObj.name || "";
391
- }
392
- } else if (guageType == "LABEL" && settingObj.attr !== "LABEL") {
393
- if (vexutils.isJSON(item[columnName])) {
394
- item[columnName] = JSON.parse(item[columnName]);
395
- if (!item[columnName].labels) {
396
- item[columnName] = handleJson(item[columnName], "type", "labelStr");
397
- }
398
- }
399
- if (item[columnName]) {
400
- let { labels } = item[columnName];
401
- let curHtml = [];
402
- if (labels && vexutils.isJSON(labels)) {
403
- labels = JSON.parse(labels);
404
- }
405
- if (Array.isArray(labels) && labels?.length > 0) {
406
- curHtml = handleLabel(labels);
407
- }
408
- item[columnName] =
409
- state.source === "guageChoice" ? curHtml.join("、") : curHtml.join("");
410
- }
411
- } else if (guageType == "ADDRESS") {
412
- if (vexutils.isJSON(item[columnName])) {
413
- const valObj: any = JSON.parse(item[columnName]);
414
- const p = valObj.province?.label || "";
415
- const c = valObj.city?.label || "";
416
- const a = valObj.area?.label || "";
417
- const d = valObj.address || "";
418
- if (!!p && !c && !a && !d) {
419
- item[columnName] = `${p}`;
420
- } else if (!!p && !!c && !a && !d) {
421
- item[columnName] = `${p}/${c}`;
422
- } else if (!!p && !!c && !!a && !d) {
423
- item[columnName] = `${p}/${c}/${a}`;
424
- } else if (!!p && !!c && !!a && !!d) {
425
- item[columnName] = `${p}/${c}/${a}/${d}`;
426
- }
427
- }
428
- }
429
- }
430
-
431
- // 过滤"{}" "[]" 字符串
432
-
433
- if (item[field.columnName] == "[]" || item[field.columnName] == "{}") {
434
- item[field.columnName] = "";
435
- }
436
- });
437
-
438
- if (item.children) {
439
- item.childrenList = item.children;
440
- item.hasChildren = true;
441
- delete item.children;
442
- formatData({
443
- tableList: item.childrenList,
444
- fieldList,
445
- btnList,
446
- oldtableData,
447
- showButtonTop,
448
- });
449
- }
450
- return item;
451
- });
452
- };
453
- const isPrintBtn = (btn: any) => {
454
- if (!btn.settingList) return false;
455
- const copySettingObj = JSON.parse(btn.settingList);
456
- let settingObj: any = {};
457
- if (Array.isArray(copySettingObj)) {
458
- settingObj = copySettingObj[0];
459
- } else {
460
- settingObj = copySettingObj;
461
- }
462
- return settingObj.trigger_type === "PRINT";
463
- };
464
- /**
465
- * 量表下拉框为数据源时 需要解析数据
466
- * @param {*} labels
467
- */
468
- const handleLabel = (labels: any) => {
469
- return labels.map((v: any) => {
470
- if (state.source === "guageChoice") {
471
- return v.labelName || v;
472
- } else {
473
- let color = "#5585f5";
474
- if (v?.color?.includes("-")) {
475
- color = "#5585f5";
476
- } else {
477
- color = v.color || "#5585f5";
478
- }
479
- return `<span class="table-label" style="background: ${color}; border-color: ${color}; color: #fff;">${
480
- v.labelName || v
481
- }</span>`;
482
- }
483
- });
484
- };
485
- const handleJson = (target: any, func: any, type: any) => {
486
- if (target && target.length > 0) {
487
- if (func == "str") {
488
- target = toStr(target);
489
- } else if (func == "type") {
490
- target = dataTypeFormat(target, type);
491
- }
492
- } else if (target.value && target.value.length > 0) {
493
- if (func == "str") {
494
- target = toStr(JSON.parse(target.value));
495
- } else if (func == "type") {
496
- target = dataTypeFormat(JSON.parse(target.value), type);
497
- }
498
- } else {
499
- if (target[type]) {
500
- return target[type];
501
- }
502
- // 没有解析的属性 “type” 返回空,避免列表展示出 json 字符串
503
- return "";
504
- }
505
- return target;
506
- };
507
- // 单独处理搜索多选
508
- const handleMULTISELECT = (target: any, type: any) => {
509
- if (Array.isArray(target)) {
510
- return "";
511
- } else {
512
- target = dataTypeFormat(target, type);
513
- return target;
514
- }
515
- };
516
- // 处理表格中附件
517
- const toStr = (list: any) => {
518
- const text: any = [];
519
- if (!Array.isArray(list) || list.length === 0) return "";
520
- list.forEach(obj => {
521
- let res = `<span ><a href="${obj.url}" target="_blank">${obj.name}</a></span>`;
522
- if (state.source === "guageChoice") {
523
- res = obj.name;
524
- }
525
- text.push(res);
526
- });
527
- if (state.source === "guageChoice") {
528
- return text.join("、");
529
- }
530
- return text.join(",");
531
- };
532
- // MULTISELECT 搜索多选
533
- const dataTypeFormat = (list: any, type: any) => {
534
- let text = "";
535
-
536
- if (Array.isArray(list)) return text || list;
537
- if (vexutils.isPlainObject(list)) {
538
- text = list[type];
539
- } else {
540
- return text;
541
- }
542
- return text;
543
- };
544
- /**
545
- * 百分比精度计算
546
- */
547
- const accMul = (value: number | string, percent: number | string) => {
548
- let m = 0;
549
- const s1 = value.toString();
550
- const s2 = percent.toString();
551
- try {
552
- const len = s1.split(".")[1]?.length || 0;
553
- m += len;
554
- } catch (e) {
555
- console.log(e);
556
- }
557
- try {
558
- const len = s2.split(".")[1]?.length || 0;
559
- m += len;
560
- } catch (e) {
561
- console.log(e);
562
- }
563
-
564
- return (Number(s1.replace(".", "")) * Number(s2.replace(".", ""))) / Math.pow(10, m);
565
- };
566
- /**
567
- * @description: 将HTML格式转换为纯文本
568
- */
569
- const htmlToText = (HTML: any) => {
570
- const input = HTML;
571
- return input
572
- .replace(/<(style|script|iframe)[^>]*?>[\s\S]+?<\/\1\s*>/gi, "")
573
- .replace(/<[^>]+?>/g, "")
574
- .replace(/\s+/g, " ")
575
- .replace(/ /g, " ")
576
- .replace(/>/g, " ");
577
- };
578
-
579
- /**
580
- * 获取按钮自定义颜色
581
- * @param {string} v
582
- */
583
- const getBtnStyle = (v: any) => {
584
- // custom_bg, white_bg, none_bg
585
- if (v.showStyle == "white_bg") {
586
- return {
587
- "border-color": v.color,
588
- color: v.color,
589
- };
590
- } else if (v.showStyle == "none_bg") {
591
- return {
592
- color: v.color,
593
- };
594
- } else if (v.showStyle == "only_icon") {
595
- return {
596
- "background-color": v.color,
597
- "border-color": v.color,
598
- // color: v.color
599
- };
600
- }
601
- return {
602
- "background-color": v.color,
603
- "border-color": v.color,
604
- };
605
- };
606
-
607
- return {
608
- formatData,
609
- htmlToText,
610
- getBtnStyle,
611
- };
612
- };
1
+ import vexutils from 'cnhis-design-vue/es/src/utils/vexutils';
2
+
3
+ const useFormat = (state) => {
4
+ const formatData = (data = {
5
+ tableList: [],
6
+ fieldList: [],
7
+ btnList: [],
8
+ oldtableData: [],
9
+ showButtonTop: 0,
10
+ isNestTabel: false,
11
+ mainTableTheUniqueKey: "",
12
+ mainTableRow: {},
13
+ nestTableId: ""
14
+ }) => {
15
+ const {
16
+ tableList,
17
+ fieldList,
18
+ btnList,
19
+ oldtableData,
20
+ showButtonTop,
21
+ isNestTabel,
22
+ mainTableTheUniqueKey,
23
+ mainTableRow,
24
+ nestTableId
25
+ } = data;
26
+ const { nobutton = false } = state.options?.config || {};
27
+ return tableList.map((item, index) => {
28
+ if (isNestTabel) {
29
+ Object.assign(item, {
30
+ __mainTableTheUniqueKey__: mainTableTheUniqueKey,
31
+ __isNestTabel__: isNestTabel,
32
+ __mainTableRow__: mainTableRow,
33
+ __nestTableId__: nestTableId
34
+ });
35
+ }
36
+ Object.assign(item, {
37
+ my_index: item.theUniqueKey,
38
+ isClick: false,
39
+ isChecked: false
40
+ });
41
+ item._triggerMethodField = state.triggerMethodField;
42
+ const originalValue = {};
43
+ Object.keys(item).forEach((key) => {
44
+ originalValue[key] = item[key];
45
+ if (vexutils.isPlainObject(item[key])) {
46
+ item[key] = JSON.stringify(item[key]);
47
+ }
48
+ const matchFieldList = fieldList.find((field) => field.columnName === key);
49
+ if (!matchFieldList)
50
+ return;
51
+ const { attrType, colorAndIcon, settingObj } = matchFieldList || {};
52
+ if (!attrType) {
53
+ matchFieldList.attrType = settingObj?.attr || void 0;
54
+ }
55
+ if (!colorAndIcon) {
56
+ matchFieldList.colorAndIcon = settingObj?.colorAndIcon || void 0;
57
+ }
58
+ if (item[key] && matchFieldList?.settingObj?.attr === "PERCENTAGE") {
59
+ if (vexutils.isNumber(+item[key])) {
60
+ item[key] = accMul(+item[key], 100) + "%";
61
+ }
62
+ }
63
+ if (vexutils.isString(item[key])) {
64
+ if (matchFieldList && matchFieldList.attrType) {
65
+ if (item[key] && (item[key].includes("http://") || item[key].includes("https://")) && matchFieldList.attrType != "PICTURE") {
66
+ if (vexutils.isJSON(item[key])) {
67
+ item[key] = JSON.parse(item[key]);
68
+ }
69
+ }
70
+ if (matchFieldList.attrType == "FILE") {
71
+ item[key] = handleJson(item[key], "str", "");
72
+ } else if (matchFieldList.attrType == "MULTISELECT") {
73
+ if (vexutils.isJSON(item[key])) {
74
+ item[key] = JSON.parse(item[key]);
75
+ }
76
+ item[key] = handleMULTISELECT(item[key], "objStr");
77
+ } else if (matchFieldList.attrType == "LABEL") {
78
+ if (vexutils.isJSON(item[key])) {
79
+ item[key] = JSON.parse(item[key]);
80
+ if (!item[key].labels) {
81
+ item[key] = handleJson(item[key], "type", "labelStr");
82
+ }
83
+ }
84
+ if (item[key]) {
85
+ const labels = item[key].labels || item[key].split(",");
86
+ let curHtml = [];
87
+ if (labels?.length > 0) {
88
+ curHtml = handleLabel(labels);
89
+ }
90
+ item[key] = state.source === "guageChoice" ? curHtml.join("\u3001") : curHtml.join("");
91
+ }
92
+ } else if (matchFieldList.attrType == "CASCADE") {
93
+ if (vexutils.isJSON(item[key])) {
94
+ item[key] = JSON.parse(item[key]);
95
+ }
96
+ item[key] = handleJson(item[key], "type", "objStr");
97
+ } else if (matchFieldList.attrType == "EVALUATE") {
98
+ const str = item[key];
99
+ if (vexutils.isJSON(str)) {
100
+ const obj = JSON.parse(str);
101
+ item[key] = obj.star ? `${obj.star}\u661F` : "";
102
+ } else {
103
+ item[key] = str;
104
+ }
105
+ } else if (matchFieldList.attrType == "MAP") {
106
+ const str = item[key];
107
+ if (vexutils.isJSON(str)) {
108
+ const obj = JSON.parse(str);
109
+ item[key] = obj.address || "";
110
+ } else {
111
+ item[key] = str;
112
+ }
113
+ } else if (matchFieldList.attrType == "PICTURE" && vexutils.isJSON(item[key])) {
114
+ let pics = JSON.parse(item[key]);
115
+ pics = pics.map((ii) => ii.url);
116
+ item[key] = pics.join(",");
117
+ }
118
+ } else if (item[key].includes("http://") || item[key].includes("https://")) {
119
+ try {
120
+ item[key] = JSON.parse(item[key]);
121
+ item[key] = handleJson(item[key], "str", "");
122
+ } catch (e) {
123
+ }
124
+ }
125
+ if (item[key] && vexutils.isString(item[key]) && item[key].startsWith("###{")) {
126
+ const temp = JSON.parse(item[key].replace("###", ""));
127
+ if ("tooltip" in temp) {
128
+ item[key] = temp;
129
+ } else {
130
+ if (state.source === "guageChoice") {
131
+ item[key] = temp.change_text;
132
+ } else {
133
+ if (temp.background != "#ffffff") {
134
+ item[key] = `<span class="field-span" style="color:${temp.background}"><span class="${temp.icon}"></span>${temp.change_text || ""}</span>`;
135
+ } else {
136
+ item[key] = temp.change_text;
137
+ }
138
+ }
139
+ }
140
+ }
141
+ }
142
+ const SPANTAG_REGEXP = /<\/?span.*?>/g;
143
+ if (item[key] && matchFieldList && matchFieldList.colorAndIcon && !SPANTAG_REGEXP.test(item[key])) {
144
+ const { colorAndIcon: colorAndIcon2 = [] } = matchFieldList;
145
+ if (colorAndIcon2 && colorAndIcon2.length) {
146
+ const findC = colorAndIcon2.find((c) => vexutils.parseCondition(c.condition, {
147
+ form: {},
148
+ table: { ...oldtableData[index] },
149
+ sys: {}
150
+ }, fieldList));
151
+ if (findC) {
152
+ if (state.source !== "guageChoice") {
153
+ item[key] = `<span style="color:${findC.color}"><span class="${findC.icon}"></span>${item[key] || ""}</span>`;
154
+ }
155
+ }
156
+ }
157
+ }
158
+ });
159
+ if (item.operatorColumn) {
160
+ item["btnList"] = [];
161
+ item["allBtnList"] = [];
162
+ item["tileBtnList"] = [];
163
+ item["foldBtnList"] = [];
164
+ const btnLinks = [];
165
+ if (!nobutton) {
166
+ btnList.forEach((btn) => {
167
+ const rowOperatorId = item.operatorColumn.find((v) => v.includes(btn.sid));
168
+ if (rowOperatorId) {
169
+ if (btn.isShow == "1") {
170
+ if (btn.type == "LINK") {
171
+ btnLinks.push(btn.name);
172
+ const settingObj = Array.isArray(btn.settingObj) ? btn.settingObj[0] : btn.settingObj;
173
+ const name = btn.name;
174
+ if (settingObj && settingObj.linkShowType == "switch") {
175
+ item[name] = originalValue[name] || item[name];
176
+ }
177
+ }
178
+ item.btnList.push(btn);
179
+ item.allBtnList.push(btn);
180
+ if (!isPrintBtn(btn)) {
181
+ if (btn.toggle == "fold") {
182
+ item.foldBtnList.push(btn);
183
+ } else {
184
+ item.tileBtnList.push(btn);
185
+ }
186
+ }
187
+ }
188
+ } else if (btn.type == "ADD" || btn.type == "BATCH") {
189
+ btn.isShow == "1" ? item.allBtnList.push(btn) : null;
190
+ }
191
+ });
192
+ }
193
+ item["btnLinks"] = btnLinks;
194
+ }
195
+ fieldList.forEach((field) => {
196
+ if (field.fieldType == "DATE" || field.fieldType == "DATETIME" || field.fieldType == "TIME") {
197
+ if (field.settingObj && field.settingObj.attr == "BIRTHDAY" && field.settingObj.format) {
198
+ const year = 31536e6;
199
+ const nowDate = +new Date();
200
+ let curAge, curStr, mmdd;
201
+ const hasAge = field.settingObj.format.includes("age");
202
+ if (vexutils.isNumber(+item[field.columnName])) {
203
+ curStr = new Date(+item[field.columnName]).toLocaleDateString().replace(/\//g, "-");
204
+ } else {
205
+ curStr = item[field.columnName];
206
+ }
207
+ if (!curStr)
208
+ return;
209
+ const curDate = +new Date(curStr.replace("/"));
210
+ if (hasAge) {
211
+ mmdd = curStr.split("-");
212
+ mmdd.shift();
213
+ curAge = (nowDate - curDate) / year;
214
+ if (curAge < 0 || isNaN(curAge)) {
215
+ curAge = 0;
216
+ }
217
+ item[field.columnName] = field.settingObj.format == "age" ? curAge + "\u5C81" : mmdd.join("-") + `\uFF08${curAge}\u5C81\uFF09`;
218
+ } else {
219
+ item[field.columnName] = vexutils.toDateString(curStr, field.settingObj.format);
220
+ }
221
+ } else if (vexutils.isNumber(+item[field.columnName])) {
222
+ item[field.columnName] = vexutils.formatTime(field.fieldType, item[field.columnName]);
223
+ } else if (vexutils.isJSON(field.guageSetting)) {
224
+ const guageSetting = JSON.parse(field.guageSetting);
225
+ if (guageSetting.startToStop === "1") {
226
+ try {
227
+ const arr = JSON.parse(item[field.columnName]);
228
+ item[field.columnName] = arr.join("~");
229
+ } catch {
230
+ item[field.columnName] = "";
231
+ }
232
+ }
233
+ }
234
+ }
235
+ if (field.settingObj && field.settingObj.attr == "WEBSITE") {
236
+ if (item[field.columnName]) {
237
+ let showKey = field.columnName;
238
+ let showName = "";
239
+ if (field.settingObj.websiteAttr) {
240
+ if (field.settingObj.websiteAttr.startsWith("table.")) {
241
+ showKey = field.settingObj.websiteAttr.split(".")[1];
242
+ } else {
243
+ showName = field.settingObj.websiteAttr;
244
+ }
245
+ }
246
+ showName = showName ? showName : item[showKey] || item[field.columnName];
247
+ if (state.source === "guageChoice") {
248
+ item[field.columnName] = showName;
249
+ } else {
250
+ item[field.columnName] = `<span ><a href="${item[field.columnName]}" title="${item[field.columnName]}" target="_blank">${showName}</a></span>`;
251
+ }
252
+ }
253
+ } else if (field.fieldSetting) {
254
+ item.fieldSetting = field.fieldSetting;
255
+ }
256
+ if (field.guageType) {
257
+ const { guageType, columnName, guageSetting, settingObj = {} } = field;
258
+ let guageSettingObj = null;
259
+ if (vexutils.isJSON(guageSetting)) {
260
+ guageSettingObj = JSON.parse(guageSetting);
261
+ }
262
+ if (guageType == "CHECKBOX_BLOCK" || guageType == "EVALUATE_CHECKBOX_BLOCK") {
263
+ if (vexutils.isJSON(item[columnName])) {
264
+ item[columnName] = JSON.parse(item[columnName]).join(",");
265
+ }
266
+ } else if (guageType == "SELECT") {
267
+ if (guageSettingObj.isMultiple) {
268
+ if (vexutils.isJSON(item[columnName])) {
269
+ item[columnName] = item[columnName] ? JSON.parse(item[columnName]).join(",") : "";
270
+ }
271
+ }
272
+ } else if (guageType == "SEARCH_CASCADE") {
273
+ if (item[columnName]) {
274
+ if (vexutils.isJSON(item[columnName])) {
275
+ item[columnName] = JSON.parse(item[columnName]).join(",");
276
+ } else {
277
+ if (Array.isArray(item[columnName])) {
278
+ item[columnName] = item[columnName].join(",");
279
+ }
280
+ }
281
+ }
282
+ } else if (guageType == "DATE" || guageType == "TIME") {
283
+ if (guageSettingObj.startToStop == 1) {
284
+ item[columnName] = item[columnName] ? JSON.parse(item[columnName]).join(",") : "";
285
+ }
286
+ } else if (guageType == "LOCATION") {
287
+ if (vexutils.isJSON(item[columnName])) {
288
+ const valObj = JSON.parse(item[columnName]);
289
+ item[columnName] = valObj.address || valObj.name || "";
290
+ }
291
+ } else if (guageType == "LABEL" && settingObj.attr !== "LABEL") {
292
+ if (vexutils.isJSON(item[columnName])) {
293
+ item[columnName] = JSON.parse(item[columnName]);
294
+ if (!item[columnName].labels) {
295
+ item[columnName] = handleJson(item[columnName], "type", "labelStr");
296
+ }
297
+ }
298
+ if (item[columnName]) {
299
+ let { labels } = item[columnName];
300
+ let curHtml = [];
301
+ if (labels && vexutils.isJSON(labels)) {
302
+ labels = JSON.parse(labels);
303
+ }
304
+ if (Array.isArray(labels) && labels?.length > 0) {
305
+ curHtml = handleLabel(labels);
306
+ }
307
+ item[columnName] = state.source === "guageChoice" ? curHtml.join("\u3001") : curHtml.join("");
308
+ }
309
+ } else if (guageType == "ADDRESS") {
310
+ if (vexutils.isJSON(item[columnName])) {
311
+ const valObj = JSON.parse(item[columnName]);
312
+ const p = valObj.province?.label || "";
313
+ const c = valObj.city?.label || "";
314
+ const a = valObj.area?.label || "";
315
+ const d = valObj.address || "";
316
+ if (!!p && !c && !a && !d) {
317
+ item[columnName] = `${p}`;
318
+ } else if (!!p && !!c && !a && !d) {
319
+ item[columnName] = `${p}/${c}`;
320
+ } else if (!!p && !!c && !!a && !d) {
321
+ item[columnName] = `${p}/${c}/${a}`;
322
+ } else if (!!p && !!c && !!a && !!d) {
323
+ item[columnName] = `${p}/${c}/${a}/${d}`;
324
+ }
325
+ }
326
+ }
327
+ }
328
+ if (item[field.columnName] == "[]" || item[field.columnName] == "{}") {
329
+ item[field.columnName] = "";
330
+ }
331
+ });
332
+ if (item.children) {
333
+ item.childrenList = item.children;
334
+ item.hasChildren = true;
335
+ delete item.children;
336
+ formatData({
337
+ tableList: item.childrenList,
338
+ fieldList,
339
+ btnList,
340
+ oldtableData,
341
+ showButtonTop
342
+ });
343
+ }
344
+ return item;
345
+ });
346
+ };
347
+ const isPrintBtn = (btn) => {
348
+ if (!btn.settingList)
349
+ return false;
350
+ const copySettingObj = JSON.parse(btn.settingList);
351
+ let settingObj = {};
352
+ if (Array.isArray(copySettingObj)) {
353
+ settingObj = copySettingObj[0];
354
+ } else {
355
+ settingObj = copySettingObj;
356
+ }
357
+ return settingObj.trigger_type === "PRINT";
358
+ };
359
+ const handleLabel = (labels) => {
360
+ return labels.map((v) => {
361
+ if (state.source === "guageChoice") {
362
+ return v.labelName || v;
363
+ } else {
364
+ let color = "#5585f5";
365
+ if (v?.color?.includes("-")) {
366
+ color = "#5585f5";
367
+ } else {
368
+ color = v.color || "#5585f5";
369
+ }
370
+ return `<span class="table-label" style="background: ${color}; border-color: ${color}; color: #fff;">${v.labelName || v}</span>`;
371
+ }
372
+ });
373
+ };
374
+ const handleJson = (target, func, type) => {
375
+ if (target && target.length > 0) {
376
+ if (func == "str") {
377
+ target = toStr(target);
378
+ } else if (func == "type") {
379
+ target = dataTypeFormat(target, type);
380
+ }
381
+ } else if (target.value && target.value.length > 0) {
382
+ if (func == "str") {
383
+ target = toStr(JSON.parse(target.value));
384
+ } else if (func == "type") {
385
+ target = dataTypeFormat(JSON.parse(target.value), type);
386
+ }
387
+ } else {
388
+ if (target[type]) {
389
+ return target[type];
390
+ }
391
+ return "";
392
+ }
393
+ return target;
394
+ };
395
+ const handleMULTISELECT = (target, type) => {
396
+ if (Array.isArray(target)) {
397
+ return "";
398
+ } else {
399
+ target = dataTypeFormat(target, type);
400
+ return target;
401
+ }
402
+ };
403
+ const toStr = (list) => {
404
+ const text = [];
405
+ if (!Array.isArray(list) || list.length === 0)
406
+ return "";
407
+ list.forEach((obj) => {
408
+ let res = `<span ><a href="${obj.url}" target="_blank">${obj.name}</a></span>`;
409
+ if (state.source === "guageChoice") {
410
+ res = obj.name;
411
+ }
412
+ text.push(res);
413
+ });
414
+ if (state.source === "guageChoice") {
415
+ return text.join("\u3001");
416
+ }
417
+ return text.join(",");
418
+ };
419
+ const dataTypeFormat = (list, type) => {
420
+ let text = "";
421
+ if (Array.isArray(list))
422
+ return text || list;
423
+ if (vexutils.isPlainObject(list)) {
424
+ text = list[type];
425
+ } else {
426
+ return text;
427
+ }
428
+ return text;
429
+ };
430
+ const accMul = (value, percent) => {
431
+ let m = 0;
432
+ const s1 = value.toString();
433
+ const s2 = percent.toString();
434
+ try {
435
+ const len = s1.split(".")[1]?.length || 0;
436
+ m += len;
437
+ } catch (e) {
438
+ console.log(e);
439
+ }
440
+ try {
441
+ const len = s2.split(".")[1]?.length || 0;
442
+ m += len;
443
+ } catch (e) {
444
+ console.log(e);
445
+ }
446
+ return Number(s1.replace(".", "")) * Number(s2.replace(".", "")) / Math.pow(10, m);
447
+ };
448
+ const htmlToText = (HTML) => {
449
+ const input = HTML;
450
+ return input.replace(/<(style|script|iframe)[^>]*?>[\s\S]+?<\/\1\s*>/gi, "").replace(/<[^>]+?>/g, "").replace(/\s+/g, " ").replace(/ /g, " ").replace(/>/g, " ");
451
+ };
452
+ const getBtnStyle = (v) => {
453
+ if (v.showStyle == "white_bg") {
454
+ return {
455
+ "border-color": v.color,
456
+ color: v.color
457
+ };
458
+ } else if (v.showStyle == "none_bg") {
459
+ return {
460
+ color: v.color
461
+ };
462
+ } else if (v.showStyle == "only_icon") {
463
+ return {
464
+ "background-color": v.color,
465
+ "border-color": v.color
466
+ };
467
+ }
468
+ return {
469
+ "background-color": v.color,
470
+ "border-color": v.color
471
+ };
472
+ };
473
+ return {
474
+ formatData,
475
+ htmlToText,
476
+ getBtnStyle
477
+ };
478
+ };
479
+
480
+ export { useFormat };