lyflowchart 1.0.113 → 1.0.130

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 (198) hide show
  1. package/dist/ActionsConfig-BuvSvRbv.js +395 -0
  2. package/dist/ActionsConfig-BuvSvRbv.js.map +1 -0
  3. package/dist/ApprovalEditorModal-DZfXupU3.js +48 -0
  4. package/dist/ApprovalEditorModal-DZfXupU3.js.map +1 -0
  5. package/dist/CancelModal-BUi3ieI8.js +61 -0
  6. package/dist/CancelModal-BUi3ieI8.js.map +1 -0
  7. package/dist/Cell_click_approve-CBh0j--6.js +244 -0
  8. package/dist/Cell_click_approve-CBh0j--6.js.map +1 -0
  9. package/dist/JsonTags-BbWLqghI.js +66 -0
  10. package/dist/JsonTags-BbWLqghI.js.map +1 -0
  11. package/dist/MyProcess-FWGEwQcv.js +26434 -0
  12. package/dist/MyProcess-FWGEwQcv.js.map +1 -0
  13. package/dist/MyProcess.vue.d.ts +991 -0
  14. package/dist/approval-BW2WjPxY.js +167 -0
  15. package/dist/approval-BW2WjPxY.js.map +1 -0
  16. package/dist/approval-CuUNtG9u.js +18 -0
  17. package/dist/approval-CuUNtG9u.js.map +1 -0
  18. package/dist/approvalHistory-B2gpQbFC.js +868 -0
  19. package/dist/approvalHistory-B2gpQbFC.js.map +1 -0
  20. package/dist/approvalHistoryViewModal-DgLpv2ot.js +114 -0
  21. package/dist/approvalHistoryViewModal-DgLpv2ot.js.map +1 -0
  22. package/dist/approvalPageConfig-D0zPXOUf.js +2437 -0
  23. package/dist/approvalPageConfig-D0zPXOUf.js.map +1 -0
  24. package/dist/approveLeftConfig-BOU_UgHp.js +136 -0
  25. package/dist/approveLeftConfig-BOU_UgHp.js.map +1 -0
  26. package/dist/codeHistoryViewModal-BfSjIbEU.js +103 -0
  27. package/dist/codeHistoryViewModal-BfSjIbEU.js.map +1 -0
  28. package/dist/columnTables-DLwtgcC7.js +1272 -0
  29. package/dist/columnTables-DLwtgcC7.js.map +1 -0
  30. package/dist/components/Cell_click_approve.vue.d.ts +5 -0
  31. package/dist/components/Cell_click_data_source.vue.d.ts +6 -0
  32. package/dist/components/Process/common/bpmnUtils.d.ts +8 -0
  33. package/dist/components/Process/common/global.d.ts +16 -0
  34. package/dist/components/Process/common/index.d.ts +5 -0
  35. package/dist/components/Process/component/JsonTags2.vue.d.ts +60 -0
  36. package/dist/components/Process/component/ValueInput2.vue.d.ts +74 -0
  37. package/dist/components/Process/component/columnNameField2.vue.d.ts +51 -0
  38. package/dist/components/Process/component/data.d.ts +157 -0
  39. package/dist/components/Process/customPanel/CustomContextPad.d.ts +31 -0
  40. package/dist/components/Process/customPanel/CustomPalette.d.ts +89 -0
  41. package/dist/components/Process/customPanel/customTranslate.d.ts +1 -0
  42. package/dist/components/Process/customPanel/index.d.ts +8 -0
  43. package/dist/components/Process/designer.vue.d.ts +589 -0
  44. package/dist/components/Process/flowable/init.d.ts +1 -0
  45. package/dist/components/Process/index.vue.d.ts +812 -0
  46. package/dist/components/Process/lang/zh.d.ts +249 -0
  47. package/dist/components/Process/panel/ButtonsPanel.vue.d.ts +24 -0
  48. package/dist/components/Process/panel/PropertiesPanel.vue.d.ts +24 -0
  49. package/dist/components/Process/panel/commonPanel.vue.d.ts +40 -0
  50. package/dist/components/Process/panel/conditionPanel.vue.d.ts +271 -0
  51. package/dist/components/Process/panel/executionListener.vue.d.ts +66 -0
  52. package/dist/components/Process/panel/formPanel.vue.d.ts +7 -0
  53. package/dist/components/Process/panel/multiInstance.vue.d.ts +33 -0
  54. package/dist/components/Process/panel/otherPanel.vue.d.ts +17 -0
  55. package/dist/components/Process/panel/taskListener.vue.d.ts +64 -0
  56. package/dist/components/Process/panel/taskPanel.vue.d.ts +254 -0
  57. package/dist/components/Process/viewer/index.vue.d.ts +41 -0
  58. package/dist/components/approval/ApprovalEditorModal.vue.d.ts +26 -0
  59. package/dist/components/approval/CostCompanySelect.vue.d.ts +29 -0
  60. package/dist/components/approval/CostDepartmentSelect.vue.d.ts +35 -0
  61. package/dist/components/approval/CreateByCascader.vue.d.ts +27 -0
  62. package/dist/components/approval/CreateBySelect.vue.d.ts +35 -0
  63. package/dist/components/approval/PostionCascader.vue.d.ts +26 -0
  64. package/dist/components/approval/SystemTime.vue.d.ts +38 -0
  65. package/dist/components/approval/approvalViewId.d.ts +36 -0
  66. package/dist/components/approval/components/CancelModal.vue.d.ts +25 -0
  67. package/dist/components/approval/components/FormCodeInput.vue.d.ts +33 -0
  68. package/dist/components/approval/components/FormContextInput.vue.d.ts +33 -0
  69. package/dist/components/approval/components/FormFlowOrgInput.vue.d.ts +40 -0
  70. package/dist/components/approval/components/actionsBar.vue.d.ts +17 -0
  71. package/dist/components/approval/components/approvalHistory/approvalHistoryViewModal.vue.d.ts +41 -0
  72. package/dist/components/approval/components/approvalHistory/dataStoreSettingHistory.vue.d.ts +55 -0
  73. package/dist/components/approval/components/approvalHistory/dataStoreSettingHistoryViewModal.vue.d.ts +41 -0
  74. package/dist/components/approval/components/approvalHistory/flowHistoryViewModal.vue.d.ts +41 -0
  75. package/dist/components/approval/components/approvalHistory/flowSettingHistory.vue.d.ts +55 -0
  76. package/dist/components/approval/components/approvalHistory/index.vue.d.ts +212 -0
  77. package/dist/components/approval/components/approvalHistory/pageSettingHistory.vue.d.ts +55 -0
  78. package/dist/components/approval/components/approvalPageConfig/ActionsConfig.vue.d.ts +112 -0
  79. package/dist/components/approval/components/approvalPageConfig/BaseConditions.vue.d.ts +205 -0
  80. package/dist/components/approval/components/approvalPageConfig/CodeEditorWraper.vue.d.ts +51 -0
  81. package/dist/components/approval/components/approvalPageConfig/ColumnConfig.vue.d.ts +145 -0
  82. package/dist/components/approval/components/approvalPageConfig/ConditionFieldMulType.vue.d.ts +137 -0
  83. package/dist/components/approval/components/approvalPageConfig/JsonInput.vue.d.ts +38 -0
  84. package/dist/components/approval/components/approvalPageConfig/JsonTags.vue.d.ts +26 -0
  85. package/dist/components/approval/components/approvalPageConfig/JsonText.vue.d.ts +36 -0
  86. package/dist/components/approval/components/approvalPageConfig/approveLeftConfig.vue.d.ts +6 -0
  87. package/dist/components/approval/components/approvalPageConfig/baseConfig.vue.d.ts +10 -0
  88. package/dist/components/approval/components/approvalPageConfig/cellEdit.vue.d.ts +23 -0
  89. package/dist/components/approval/components/approvalPageConfig/configSync.vue.d.ts +76 -0
  90. package/dist/components/approval/components/approvalPageConfig/confirmInput.vue.d.ts +26 -0
  91. package/dist/components/approval/components/approvalPageConfig/defaultOperatorSelect.vue.d.ts +18 -0
  92. package/dist/components/approval/components/approvalPageConfig/index.vue.d.ts +11 -0
  93. package/dist/components/approval/components/approvalPageConfig/jsonConfig.vue.d.ts +16 -0
  94. package/dist/components/approval/components/approvalPageConfig/layoutSetting.vue.d.ts +9 -0
  95. package/dist/components/approval/components/approvalPageConfig/leftColumn.vue.d.ts +1184 -0
  96. package/dist/components/approval/components/approvalPageConfig/middleColumn.vue.d.ts +145 -0
  97. package/dist/components/approval/components/approvalPageConfig/operatorSelect.vue.d.ts +18 -0
  98. package/dist/components/approval/components/approvalPageConfig/searchConfig.vue.d.ts +166 -0
  99. package/dist/components/approval/components/approvalPageConfig/tableConfig.vue.d.ts +802 -0
  100. package/dist/components/approval/components/codeHistory/codeHistory.vue.d.ts +53 -0
  101. package/dist/components/approval/components/codeHistory/codeHistoryViewModal.vue.d.ts +32 -0
  102. package/dist/components/approval/components/columnDataList.vue.d.ts +454 -0
  103. package/dist/components/approval/components/columnForm.vue.d.ts +26 -0
  104. package/dist/components/approval/components/columnTables.vue.d.ts +502 -0
  105. package/dist/components/approval/components/columnUnknown.vue.d.ts +2 -0
  106. package/dist/components/approval/components/dataStoreConfig/ConditionConfig.vue.d.ts +199 -0
  107. package/dist/components/approval/components/dataStoreConfig/ValueInput.vue.d.ts +37 -0
  108. package/dist/components/approval/components/dataStoreConfig/dataSourceDetial.vue.d.ts +22 -0
  109. package/dist/components/approval/components/dataStoreConfig/dataStoreConfig.vue.d.ts +554 -0
  110. package/dist/components/approval/components/dataStoreConfig/dataStoreConfigItem.vue.d.ts +434 -0
  111. package/dist/components/approval/components/dataStoreConfig/dataStoreTest.vue.d.ts +39 -0
  112. package/dist/components/approval/components/dataStoreConfig/dataStoreTestsItem.vue.d.ts +17 -0
  113. package/dist/components/approval/components/dataStoreConfig/formField.vue.d.ts +28 -0
  114. package/dist/components/approval/components/dataStoreConfig/formFieldMulType.vue.d.ts +96 -0
  115. package/dist/components/approval/components/dataStoreConfig/selectExcelColumn.vue.d.ts +26 -0
  116. package/dist/components/approval/components/dataStoreConfig/selectExcelType.vue.d.ts +28 -0
  117. package/dist/components/approval/components/debugCode/debugCode.vue.d.ts +214 -0
  118. package/dist/components/approval/components/drawerDataList.vue.d.ts +504 -0
  119. package/dist/components/approval/components/drawerTablesList.vue.d.ts +551 -0
  120. package/dist/components/approval/components/flowConfig/flowConfig.vue.d.ts +1097 -0
  121. package/dist/components/approval/components/flowConfig/selectCcGroup.vue.d.ts +9 -0
  122. package/dist/components/approval/components/flowConfig/selectUsers.vue.d.ts +9 -0
  123. package/dist/components/approval/components/modelTablesList.vue.d.ts +551 -0
  124. package/dist/components/approval/components/pageConfigHistory.vue.d.ts +2 -0
  125. package/dist/components/approval/components/search.vue.d.ts +238 -0
  126. package/dist/components/approval/components/searchSummary.vue.d.ts +100 -0
  127. package/dist/components/approval/components/table.vue.d.ts +416 -0
  128. package/dist/components/approval/components/tableModal.vue.d.ts +84 -0
  129. package/dist/components/approval/configs/approval/default.d.ts +11 -0
  130. package/dist/components/approval/configs/approval/recordActions.d.ts +22 -0
  131. package/dist/components/approval/core.vue.d.ts +48 -0
  132. package/dist/components/approval/example_code/example_code.d.ts +11 -0
  133. package/dist/components/approval/index.d.ts +18 -0
  134. package/dist/components/approval/index.vue.d.ts +2 -0
  135. package/dist/components/approval/migrate/index.d.ts +1 -0
  136. package/dist/components/approval/migrate/v0001.d.ts +2 -0
  137. package/dist/components/approval/store/context.d.ts +48 -0
  138. package/dist/components/approval/store/debugCode.d.ts +7 -0
  139. package/dist/components/approval/store/settingsState.d.ts +15 -0
  140. package/dist/components/approval/typing.d.ts +210 -0
  141. package/dist/components/approval/useApprovalRecordActions.d.ts +83 -0
  142. package/dist/components/approval/utils.d.ts +164 -0
  143. package/dist/components/approval_for_details.vue.d.ts +9 -0
  144. package/dist/components/flow/ElInputTag/index.vue.d.ts +46 -0
  145. package/dist/components/flow/Expression/index.vue.d.ts +48 -0
  146. package/dist/components/flow/Role/index.vue.d.ts +68 -0
  147. package/dist/components/flow/User/index.vue.d.ts +76 -0
  148. package/dist/config/packed-config.d.ts +26 -0
  149. package/dist/constants.d.ts +1 -0
  150. package/dist/core-CctSle2c.js +1629 -0
  151. package/dist/core-CctSle2c.js.map +1 -0
  152. package/dist/dataStoreSettingHistoryViewModal-D_so-KLp.js +114 -0
  153. package/dist/dataStoreSettingHistoryViewModal-D_so-KLp.js.map +1 -0
  154. package/dist/debugCode-Cm9-WiUG.js +565 -0
  155. package/dist/debugCode-Cm9-WiUG.js.map +1 -0
  156. package/dist/debugCode-dD1YnQSD.js +11 -0
  157. package/dist/debugCode-dD1YnQSD.js.map +1 -0
  158. package/dist/default-VdDMlY4e.js +560 -0
  159. package/dist/default-VdDMlY4e.js.map +1 -0
  160. package/dist/example_code-C_xF8RRG.js +129 -0
  161. package/dist/example_code-C_xF8RRG.js.map +1 -0
  162. package/dist/flowHistoryViewModal-D8DJP7Te.js +109 -0
  163. package/dist/flowHistoryViewModal-D8DJP7Te.js.map +1 -0
  164. package/dist/index.d.ts +81 -0
  165. package/dist/index.js +507 -26691
  166. package/dist/index.js.map +1 -1
  167. package/dist/init-plugin-fQTSQzui.js +48 -0
  168. package/dist/init-plugin-fQTSQzui.js.map +1 -0
  169. package/dist/init-plugin.d.ts +57 -0
  170. package/dist/leftColumn-CsPjufue.js +209 -0
  171. package/dist/leftColumn-CsPjufue.js.map +1 -0
  172. package/dist/lyflowchart.css +1 -1
  173. package/dist/middleColumn-C7M6-eVo.js +107 -0
  174. package/dist/middleColumn-C7M6-eVo.js.map +1 -0
  175. package/dist/recordActions-BgFlNsGU.js +51 -0
  176. package/dist/recordActions-BgFlNsGU.js.map +1 -0
  177. package/dist/settingsState-CI81PG-i.js +19 -0
  178. package/dist/settingsState-CI81PG-i.js.map +1 -0
  179. package/dist/style.d.ts +3 -0
  180. package/dist/styles.d.ts +7 -0
  181. package/dist/tableConfig-uLXue-BS.js +2408 -0
  182. package/dist/tableConfig-uLXue-BS.js.map +1 -0
  183. package/dist/tableModal-BcYfVL02.js +124 -0
  184. package/dist/tableModal-BcYfVL02.js.map +1 -0
  185. package/dist/useApprovalRecordActions-BQ6MgV2L.js +843 -0
  186. package/dist/useApprovalRecordActions-BQ6MgV2L.js.map +1 -0
  187. package/dist/utils/StrUtil.d.ts +52 -0
  188. package/dist/utils/function.d.ts +8 -0
  189. package/dist/utils-CLet2gLV.js +420 -0
  190. package/dist/utils-CLet2gLV.js.map +1 -0
  191. package/dist/v0001-OaBeBCXI.js +4 -0
  192. package/dist/v0001-OaBeBCXI.js.map +1 -0
  193. package/dist/{Cell_click_data_source-CUVsbkcN.js → viewer-Dv3kQsMf.js} +1551 -2415
  194. package/dist/viewer-Dv3kQsMf.js.map +1 -0
  195. package/dist/vue-print-next-HRweUmNi.js +683 -0
  196. package/dist/vue-print-next-HRweUmNi.js.map +1 -0
  197. package/package.json +39 -8
  198. package/dist/Cell_click_data_source-CUVsbkcN.js.map +0 -1
@@ -0,0 +1,420 @@
1
+ import { l as e, m as t, o as n } from "./init-plugin-fQTSQzui.js";
2
+ import { message as r } from "ant-design-vue";
3
+ import { cloneDeep as i } from "lodash";
4
+ //#region src/utils/function.ts
5
+ var a = (e) => e != null && e !== "", o = (e) => e === null || e == null || e === "", s = (e) => {
6
+ let t = "", n = "复制成功";
7
+ e?.message ? (t = e.val, n = e.message) : t = e;
8
+ let i = document.createElement("textarea");
9
+ i.setAttribute("readonly", "readonly"), i.value = t, document.body.appendChild(i), i.select(), document.execCommand("copy") && r.info(n), document.body.removeChild(i);
10
+ }, c = (t, n) => {
11
+ let r = e();
12
+ return t == "input" && n == "in" ? "等于" : r[n];
13
+ };
14
+ function l(e, t = /* @__PURE__ */ new Set(), n = []) {
15
+ let r = [];
16
+ return e.forEach((e, i) => {
17
+ let a = [...n, i], o = e.name;
18
+ if (t.has(o)) e.children && Array.isArray(e.children) && l(e.children, t, a);
19
+ else {
20
+ t.add(o);
21
+ let n = { ...e };
22
+ n.children && Array.isArray(n.children) && (n.children = l(n.children, t, a)), r.push(n);
23
+ }
24
+ }), r;
25
+ }
26
+ //#endregion
27
+ //#region src/components/approval/utils.ts
28
+ var u = () => e(), d = [
29
+ {
30
+ value: "上月",
31
+ label: "上月"
32
+ },
33
+ {
34
+ value: "本月",
35
+ label: "本月"
36
+ },
37
+ {
38
+ value: "今日",
39
+ label: "今日"
40
+ },
41
+ {
42
+ value: "昨日",
43
+ label: "昨日"
44
+ },
45
+ {
46
+ value: "期初",
47
+ label: "期初"
48
+ }
49
+ ], f = (e, n) => t()[e], p = (e) => e ? e.filter((e) => e.value instanceof Array && e.value.length > 0 && !e.value.some((e) => o(e))) : [], m = /\{\{\s*([^{}]+?)\s*\}\}/g, h = /^\{\{\s*([^{}]+?)\s*\}\}$/, g = (e, t) => {
50
+ let n = t ? t[e] : void 0;
51
+ if (n == null || n === "") throw Error(`查询条件参数 {{${e}}} 未提供,请检查调用方是否传入了该参数`);
52
+ return n;
53
+ }, _ = (e, t) => {
54
+ if (Array.isArray(e)) return e.map((e) => _(e, t));
55
+ if (typeof e != "string" || !e.includes("{{")) return e;
56
+ let n = e.match(h);
57
+ return n ? g(n[1], t) : e.replace(m, (e, n) => String(g(n, t)));
58
+ }, v = (e) => ({ menu_flag: e }), y = (e, t) => {
59
+ e.forEach((e) => {
60
+ t[e.name] = e.verbose_name, e.children && y(e.children, t);
61
+ });
62
+ }, b = async (e) => {
63
+ if (!e) return [];
64
+ let t = await n({}, e.split("-")[0] + "/obtain_" + e.split("-")[1] + "_column_data", !1, { skip_error: !0 }), r = {};
65
+ return y(l(t || []), r), "id" in r || (r.id = "ID"), Object.keys(r).map((e) => ({
66
+ value: e,
67
+ label: r[e]
68
+ }));
69
+ }, x = [
70
+ {
71
+ label: "把(新建/修改)表单暂时保存,审批处于待提交状态(save_approve)",
72
+ value: "save_approve"
73
+ },
74
+ {
75
+ label: "选择待提交/已通过(可修改)的审批进行编辑(edit_approve)",
76
+ value: "edit_approve"
77
+ },
78
+ {
79
+ label: "将处于待提交状态的审批提交(commit_approve)",
80
+ value: "commit_approve"
81
+ },
82
+ {
83
+ label: "删除处于待提交状态的审批(delete_approve)",
84
+ value: "delete_approve"
85
+ },
86
+ {
87
+ label: "撤销审批(cancel_approve)",
88
+ value: "cancel_approve"
89
+ },
90
+ {
91
+ label: "作废已经通过的审批(cancel_agree_approve)",
92
+ value: "cancel_agree_approve"
93
+ },
94
+ {
95
+ label: "催办(send_reminder)",
96
+ value: "send_reminder"
97
+ },
98
+ {
99
+ label: "清空表单内容(clear_form)",
100
+ value: "clear_form"
101
+ },
102
+ {
103
+ label: "数据处理(process)",
104
+ value: "process"
105
+ },
106
+ {
107
+ label: "复制为新审批(copy_approve)",
108
+ value: "copy_approve"
109
+ }
110
+ ], S = [
111
+ {
112
+ key: "form_code",
113
+ label: "单据编号",
114
+ children: [{
115
+ key: "code",
116
+ label: "单据编号"
117
+ }]
118
+ },
119
+ {
120
+ key: "create_date",
121
+ label: "制单日期",
122
+ children: [
123
+ {
124
+ key: "date",
125
+ label: "YYYY-MM-DD"
126
+ },
127
+ {
128
+ key: "date_ch",
129
+ label: "YYYY年MM月DD日"
130
+ },
131
+ {
132
+ key: "date_short",
133
+ label: "YYYYMMDD"
134
+ }
135
+ ]
136
+ },
137
+ {
138
+ key: "cost_company",
139
+ label: "切换组织",
140
+ children: [
141
+ {
142
+ key: "name",
143
+ label: "切换组织"
144
+ },
145
+ {
146
+ key: "id",
147
+ label: "ID"
148
+ },
149
+ {
150
+ key: "area",
151
+ label: "地区"
152
+ },
153
+ {
154
+ key: "code",
155
+ label: "组织编码"
156
+ }
157
+ ]
158
+ },
159
+ {
160
+ key: "cost_department",
161
+ label: "切换部门",
162
+ children: [
163
+ {
164
+ key: "name",
165
+ label: "切换部门"
166
+ },
167
+ {
168
+ key: "id",
169
+ label: "ID"
170
+ },
171
+ {
172
+ key: "kind",
173
+ label: "是否核算部门"
174
+ },
175
+ {
176
+ key: "bz",
177
+ label: "备注"
178
+ },
179
+ {
180
+ key: "start_date",
181
+ label: "启用时间"
182
+ },
183
+ {
184
+ key: "end_date",
185
+ label: "关闭时间"
186
+ }
187
+ ]
188
+ },
189
+ {
190
+ key: "create_by",
191
+ label: "制单人",
192
+ children: [
193
+ {
194
+ key: "name",
195
+ label: "制单人"
196
+ },
197
+ {
198
+ key: "id",
199
+ label: "ID"
200
+ },
201
+ {
202
+ key: "code",
203
+ label: "人员编号"
204
+ },
205
+ {
206
+ key: "id_str",
207
+ label: "身份证号"
208
+ },
209
+ {
210
+ key: "bz",
211
+ label: "备注"
212
+ }
213
+ ]
214
+ },
215
+ {
216
+ key: "person_cost_company",
217
+ label: "员工组织",
218
+ children: [
219
+ {
220
+ key: "name",
221
+ label: "员工组织"
222
+ },
223
+ {
224
+ key: "id",
225
+ label: "ID"
226
+ },
227
+ {
228
+ key: "area",
229
+ label: "地区"
230
+ },
231
+ {
232
+ key: "code",
233
+ label: "组织编码"
234
+ }
235
+ ]
236
+ },
237
+ {
238
+ key: "person_department",
239
+ label: "员工部门",
240
+ children: [
241
+ {
242
+ key: "name",
243
+ label: "员工部门"
244
+ },
245
+ {
246
+ key: "id",
247
+ label: "ID"
248
+ },
249
+ {
250
+ key: "kind",
251
+ label: "是否核算部门"
252
+ },
253
+ {
254
+ key: "bz",
255
+ label: "备注"
256
+ },
257
+ {
258
+ key: "start_date",
259
+ label: "启用时间"
260
+ },
261
+ {
262
+ key: "end_date",
263
+ label: "关闭时间"
264
+ }
265
+ ]
266
+ },
267
+ {
268
+ key: "person_position",
269
+ label: "员工职位",
270
+ children: [
271
+ {
272
+ key: "name",
273
+ label: "员工职位"
274
+ },
275
+ {
276
+ key: "id",
277
+ label: "ID"
278
+ },
279
+ {
280
+ key: "bz",
281
+ label: "备注"
282
+ },
283
+ {
284
+ key: "start_date",
285
+ label: "启用时间"
286
+ },
287
+ {
288
+ key: "启用时间",
289
+ label: "关闭时间"
290
+ }
291
+ ]
292
+ },
293
+ {
294
+ key: "flow_org",
295
+ label: "流程组织",
296
+ children: [{
297
+ key: "name",
298
+ label: "流程组织"
299
+ }, {
300
+ key: "id",
301
+ label: "流程组织ID"
302
+ }]
303
+ },
304
+ {
305
+ key: "context",
306
+ label: "流程主题",
307
+ children: [{
308
+ key: "context",
309
+ label: "流程主题"
310
+ }]
311
+ }
312
+ ], C = (e) => {
313
+ for (let t of e?.columns || []) if (t.type === "form") return t.form?.dynamicFieldList || [];
314
+ return [];
315
+ }, w = (e, t) => {
316
+ if (!e || !(t instanceof Array)) return e;
317
+ for (let n of t) if (n?.children instanceof Array) {
318
+ for (let t of n.children) if (t?.name) {
319
+ if (t.type === "dynamicvaluefield") delete e[t.name];
320
+ else if (t.type === "formtemplate" || t.type === "remotetablepro") {
321
+ let n = t.form?.dynamicFieldList || t.children || [], r = e[t.name];
322
+ if (r instanceof Array) for (let e of r) w(e, n);
323
+ else r && typeof r == "object" && w(r, n);
324
+ }
325
+ }
326
+ }
327
+ return e;
328
+ }, T = () => {
329
+ let e = new Uint8Array(16);
330
+ return window.crypto.getRandomValues(e), Array.from(e, (e) => e.toString(16).padStart(2, "0")).join("");
331
+ }, E = [
332
+ "config_hint",
333
+ "config_hint_cleared",
334
+ "config_hint_detail"
335
+ ], D = (e) => {
336
+ if (!Array.isArray(e)) return e;
337
+ for (let t of e) for (let e of t?.fields || []) if (e) for (let t of E) t in e && delete e[t];
338
+ return e;
339
+ }, O = (e) => n(e, "/approve/create_modify_approve"), k = (e) => {
340
+ let t = typeof e == "string" ? Number(e) : e;
341
+ if (typeof t != "number" || !Number.isFinite(t)) return null;
342
+ let n = Math.floor(t);
343
+ return n > 0 ? n : null;
344
+ }, A = (e) => {
345
+ if (!e) return null;
346
+ let t = k(e.min_count), n = k(e.max_count);
347
+ return t === null && n === null ? null : t !== null && n !== null && t > n ? (console.warn(`[showTables] 表 ${e.id} 的 min_count(${t}) 大于 max_count(${n}),该表的选择数量校验已忽略`, e), null) : {
348
+ min: t,
349
+ max: n
350
+ };
351
+ }, j = (e) => {
352
+ if (!e) return "";
353
+ let { min: t, max: n } = e;
354
+ return t !== null && n !== null ? `最少 ${t} 条,最多 ${n} 条` : t === null ? `最多 ${n} 条` : `最少 ${t} 条`;
355
+ }, M = (e, t) => {
356
+ if (!e) return !1;
357
+ let n = Number(t) || 0;
358
+ return e.min !== null && n < e.min || e.max !== null && n > e.max;
359
+ }, N = (e, t) => {
360
+ let n = [];
361
+ for (let r of e || []) {
362
+ let e = A(r);
363
+ if (!e) continue;
364
+ let i = Number(t?.[r.id]) || 0;
365
+ if (!M(e, i)) continue;
366
+ let a = r.title || r.id;
367
+ n.push(`「${a}」${j(e)},当前已选 ${i} 条`);
368
+ }
369
+ return n.length > 0 ? `选择数量不符合要求:${n.join(";")}` : "";
370
+ }, P = [
371
+ "title",
372
+ "is_normal_model",
373
+ "list_url",
374
+ "modelType",
375
+ "query_params"
376
+ ], F = [
377
+ "columns",
378
+ "search_config",
379
+ "base_conditions",
380
+ "row_actions",
381
+ "actions"
382
+ ], I = {
383
+ standard: "标准同步",
384
+ append: "自动追加配置"
385
+ }, L = {
386
+ actions: "底部按钮配置",
387
+ base_conditions: "基础查询条件",
388
+ columns: "列配置",
389
+ row_actions: "行按钮配置",
390
+ search_config: "查询配置"
391
+ }, R = {
392
+ title: "名称",
393
+ is_normal_model: "是否为标准模型查询",
394
+ list_url: "列表URL",
395
+ modelType: "模型",
396
+ query_params: "查询参数"
397
+ }, z = (e) => {
398
+ e && (e.action_code_id && delete e.action_code_id, e.showCode?.enable && e.showCode.action_code_id && delete e.showCode.action_code_id, e.disableCode?.enable && e.disableCode.action_code_id && delete e.disableCode.action_code_id);
399
+ }, B = (e) => {
400
+ for (let t of e || []) z(t);
401
+ }, V = (e, t = [], n = "standard") => {
402
+ let r = {}, a = [], o = [];
403
+ if (!e) return {
404
+ data: r,
405
+ fields: a,
406
+ skipped: [...t]
407
+ };
408
+ let s = i(e);
409
+ B(s.actions), B(s.row_actions);
410
+ let c = n === "append" ? [...P, ...F] : t;
411
+ for (let e of c) s[e] !== void 0 && (r[e] = s[e], t.includes(e) && a.push(e));
412
+ for (let e of t) s[e] === void 0 && o.push(e);
413
+ return {
414
+ data: r,
415
+ fields: a,
416
+ skipped: o
417
+ };
418
+ };
419
+ //#endregion
420
+ export { u as C, o as D, c as E, a as O, D as S, s as T, j as _, L as a, d as b, w as c, T as d, b as f, A as g, v as h, F as i, l as k, O as l, f as m, R as n, x as o, C as p, I as r, V as s, P as t, p as u, S as v, N as w, _ as x, M as y };
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils-CLet2gLV.js","names":[],"sources":["../src/utils/function.ts","../src/components/approval/utils.ts"],"sourcesContent":["/**\n * 纯函数本地实现。\n *\n * 这些函数原本 import 自 liyu-pc-base / liyu-pc-lib,但它们不依赖宿主的任何实例或状态,\n * 属于纯逻辑,因此直接移植到 lyflowchart 内部,不再让公共库反向依赖宿主库(详见 src/init-plugin.ts 说明)。\n *\n * 对应关系:\n * - isEmpty / isNotEmpty / copyValue / get_operator_type_map <- liyu-pc-base/utils/function.ts\n * - removeNestedDuplicates <- liyu-pc-lib/components/form-modal/FormDesignModal/utils.ts\n *\n * 注意:get_operator_type_map 依赖宿主的操作符文案映射(ConditionOperatorMap),\n * 该常量由宿主注入,通过 useConditionOperatorMap() 读取。\n */\nimport { message } from 'ant-design-vue';\nimport { useConditionOperatorMap } from '@/init-plugin';\n\nexport const isNotEmpty = (value: any) => {\n return value !== null && value !== undefined && value !== '';\n};\n\nexport const isEmpty = (value: any) => {\n return value === null || value == undefined || value === '';\n};\n\n/** 复制文本到剪贴板并提示。val 允许传 { val, message } 形式自定义提示文案。 */\nexport const copyValue = (val: any) => {\n let str = '';\n let messages = '复制成功';\n if (val?.message) {\n str = val.val;\n messages = val.message;\n } else {\n str = val;\n }\n const textarea = document.createElement('textarea');\n textarea.setAttribute('readonly', 'readonly');\n textarea.value = str;\n document.body.appendChild(textarea);\n textarea.select();\n if (document.execCommand('copy')) {\n message.info(messages);\n }\n document.body.removeChild(textarea);\n};\n\n/** 操作符 -> 展示文案,format 为 input 且操作符为 in 时固定展示「等于」 */\nexport const get_operator_type_map = (format: string, operator: string) => {\n const operator_type_map = useConditionOperatorMap();\n if (format == 'input' && operator == 'in') {\n return '等于';\n }\n return operator_type_map[operator];\n};\n\n/** 按 name 去重(保留先出现的节点,同时保留其子树) */\nexport function removeNestedDuplicates(\n nodes: any[],\n seenIds: Set<any> = new Set(),\n parentPath: any[] = [],\n): any[] {\n const result: any[] = [];\n\n nodes.forEach((node, index) => {\n const currentPath = [...parentPath, index]; // 记录当前节点的路径\n const nodeId = node.name;\n\n if (!seenIds.has(nodeId)) {\n seenIds.add(nodeId);\n const newNode = { ...node };\n\n if (newNode.children && Array.isArray(newNode.children)) {\n newNode.children = removeNestedDuplicates(newNode.children, seenIds, currentPath);\n }\n\n result.push(newNode);\n } else {\n // 如果需要处理子对象(即使父对象被忽略了),则递归调用\n if (node.children && Array.isArray(node.children)) {\n // 注意:这里我们不将子对象添加到结果数组中,只是处理它们以避免丢失新的 id\n removeNestedDuplicates(node.children, seenIds, currentPath);\n }\n }\n });\n\n return result;\n}\n","import { isEmpty, removeNestedDuplicates } from '@/utils/function';\nimport { getApiData, useConditionOperatorMap, useOperatorParamsCount } from '@/init-plugin';\nimport { cloneDeep } from 'lodash';\n\n/** 操作符 -> 展示文案(值来自宿主注入的 ConditionOperatorMap) */\nexport const useOperatorTypeMap = () => useConditionOperatorMap();\n\nexport const options_for_date_eq = [\n { value: '上月', label: '上月' },\n { value: '本月', label: '本月' },\n { value: '今日', label: '今日' },\n { value: '昨日', label: '昨日' },\n { value: '期初', label: '期初' },\n];\n\nexport const getParamsCount = (operator, configItem) => {\n return useOperatorParamsCount()[operator];\n};\n\nexport const filterConditions = conditions => {\n if (!conditions) {\n return [];\n }\n const res = conditions.filter(item => {\n return (\n item.value instanceof Array &&\n item.value.length > 0 &&\n !item.value.some(item => isEmpty(item))\n );\n });\n return res;\n};\n\n/**\n * 查询值里的参数占位符,例如 {{menu_flag}}。\n *\n * 页面配置只存占位符,实际值由「执行查询的地方」注入(见 getQueryConditionParams)。\n * 这样同一份页面配置就不含任何与节点绑定的具体值,可以原样同步到其他节点,\n * 不必在同步时按节点改写配置内容。\n */\nconst PARAM_TOKEN_RE = /\\{\\{\\s*([^{}]+?)\\s*\\}\\}/g;\nconst PARAM_TOKEN_FULL_RE = /^\\{\\{\\s*([^{}]+?)\\s*\\}\\}$/;\n\nconst getParamValue = (key: string, params: Record<string, any>) => {\n const value = params ? params[key] : undefined;\n if (value === undefined || value === null || value === '') {\n // 缺参数时若把占位符原样带下去,filterConditions 会认为「有值」照常下发,结果是查不到数据;\n // 若直接丢条件,又会把过滤整体放开。两种都是静默的错误结果,所以这里直接报错,\n // 由调用方决定怎么提示。\n throw new Error(`查询条件参数 {{${key}}} 未提供,请检查调用方是否传入了该参数`);\n }\n return value;\n};\n\n/**\n * 解析条件值里的 {{xxx}} 占位符:\n * - 整串就是一个占位符('{{menu_flag}}')→ 返回参数原值,保留类型(true / 数字 / 数组等)\n * - 占位符嵌在字符串中间('{{prefix}}-{{id}}')→ 按字符串拼接\n * - 不含占位符 → 原样返回\n * 值为数组时逐个元素解析(兼容 eq / in 这类多值条件)。\n */\nexport const resolveParamValue = (value: any, params: Record<string, any>): any => {\n if (Array.isArray(value)) {\n return value.map(item => resolveParamValue(item, params));\n }\n if (typeof value !== 'string' || !value.includes('{{')) {\n return value;\n }\n const full = value.match(PARAM_TOKEN_FULL_RE);\n if (full) {\n return getParamValue(full[1], params);\n }\n return value.replace(PARAM_TOKEN_RE, (_match, key) => String(getParamValue(key, params)));\n};\n\n/**\n * 查询参数的实际值来源 —— 页面配置里 {{xxx}} 占位符的唯一取值出处。\n * menu_flag 即当前审批页对应的菜单标识(组件上的 modelType)。\n */\nexport const getQueryConditionParams = (modelType?: string): Record<string, any> => ({\n menu_flag: modelType,\n});\n\nconst processColumnDataSource = (res_data: any, name_map: object) => {\n res_data.forEach((item: any) => {\n name_map[item.name] = item.verbose_name;\n if (item.children) {\n processColumnDataSource(item.children, name_map);\n }\n });\n};\n\nexport const getColumnNameList = async (modelType: string): Promise<any[]> => {\n if (!modelType) {\n return [];\n }\n const url = modelType.split('-')[0] + '/obtain_' + modelType.split('-')[1] + '_column_data';\n const res = await getApiData({}, url, false, { skip_error: true });\n const name_map = {};\n let res_data = removeNestedDuplicates(res || []);\n processColumnDataSource(res_data, name_map);\n if (!('id' in name_map)) {\n name_map['id'] = 'ID';\n }\n return Object.keys(name_map).map((item: any) => ({\n value: item,\n label: name_map[item],\n }));\n};\n\nexport const actionTypes = [\n {\n label: '把(新建/修改)表单暂时保存,审批处于待提交状态(save_approve)',\n value: 'save_approve',\n },\n {\n label: '选择待提交/已通过(可修改)的审批进行编辑(edit_approve)',\n value: 'edit_approve',\n },\n {\n label: '将处于待提交状态的审批提交(commit_approve)',\n value: 'commit_approve',\n },\n {\n label: '删除处于待提交状态的审批(delete_approve)',\n value: 'delete_approve',\n },\n {\n label: '撤销审批(cancel_approve)',\n value: 'cancel_approve',\n },\n {\n label: '作废已经通过的审批(cancel_agree_approve)',\n value: 'cancel_agree_approve',\n },\n {\n label: '催办(send_reminder)',\n value: 'send_reminder',\n },\n {\n label: '清空表单内容(clear_form)',\n value: 'clear_form',\n },\n {\n label: '数据处理(process)',\n value: 'process',\n },\n {\n label: '复制为新审批(copy_approve)',\n value: 'copy_approve',\n },\n];\nexport const globalOptions = [\n {\n key: 'form_code',\n label: '单据编号',\n children: [\n {\n key: 'code',\n label: '单据编号',\n },\n ],\n },\n {\n key: 'create_date',\n label: '制单日期',\n children: [\n {\n key: 'date',\n label: 'YYYY-MM-DD',\n },\n {\n key: 'date_ch',\n label: 'YYYY年MM月DD日',\n },\n {\n key: 'date_short',\n label: 'YYYYMMDD',\n },\n ],\n },\n {\n key: 'cost_company',\n label: '切换组织',\n children: [\n {\n key: 'name',\n label: '切换组织',\n },\n {\n key: 'id',\n label: 'ID',\n },\n {\n key: 'area',\n label: '地区',\n },\n {\n key: 'code',\n label: '组织编码',\n },\n ],\n },\n {\n key: 'cost_department',\n label: '切换部门',\n children: [\n {\n key: 'name',\n label: '切换部门',\n },\n {\n key: 'id',\n label: 'ID',\n },\n {\n key: 'kind',\n label: '是否核算部门',\n },\n {\n key: 'bz',\n label: '备注',\n },\n {\n key: 'start_date',\n label: '启用时间',\n },\n {\n key: 'end_date',\n label: '关闭时间',\n },\n ],\n },\n {\n key: 'create_by',\n label: '制单人',\n children: [\n {\n key: 'name',\n label: '制单人',\n },\n {\n key: 'id',\n label: 'ID',\n },\n {\n key: 'code',\n label: '人员编号',\n },\n {\n key: 'id_str',\n label: '身份证号',\n },\n {\n key: 'bz',\n label: '备注',\n },\n ],\n },\n\n {\n key: 'person_cost_company',\n label: '员工组织',\n children: [\n {\n key: 'name',\n label: '员工组织',\n },\n {\n key: 'id',\n label: 'ID',\n },\n {\n key: 'area',\n label: '地区',\n },\n {\n key: 'code',\n label: '组织编码',\n },\n ],\n },\n {\n key: 'person_department',\n label: '员工部门',\n children: [\n {\n key: 'name',\n label: '员工部门',\n },\n {\n key: 'id',\n label: 'ID',\n },\n {\n key: 'kind',\n label: '是否核算部门',\n },\n {\n key: 'bz',\n label: '备注',\n },\n {\n key: 'start_date',\n label: '启用时间',\n },\n {\n key: 'end_date',\n label: '关闭时间',\n },\n ],\n },\n {\n key: 'person_position',\n label: '员工职位',\n children: [\n {\n key: 'name',\n label: '员工职位',\n },\n {\n key: 'id',\n label: 'ID',\n },\n {\n key: 'bz',\n label: '备注',\n },\n {\n key: 'start_date',\n label: '启用时间',\n },\n {\n key: '启用时间',\n label: '关闭时间',\n },\n ],\n },\n {\n key: 'flow_org',\n label: '流程组织',\n children: [\n {\n key: 'name',\n label: '流程组织',\n },\n {\n key: 'id',\n label: '流程组织ID',\n },\n ],\n },\n {\n key: 'context',\n label: '流程主题',\n children: [\n {\n key: 'context',\n label: '流程主题',\n },\n ],\n },\n];\n/**\n * 取页面配置中表单(type === 'form')的动态字段列表 dynamicFieldList\n */\nexport const getFormDynamicFieldList = (approvalConfig: any): any[] => {\n for (const column of approvalConfig?.columns || []) {\n if (column.type === 'form') {\n return column.form?.dynamicFieldList || [];\n }\n }\n return [];\n};\n\n/**\n * 清空表单数据中「只读动态值」(type === 'dynamicvaluefield') 字段的值。\n *\n * 复制为新审批时必须清空:这类字段多为序号、覆盖ID 等,\n * computeDynamicValue 的「已有值不重复分配」守卫(守卫1)会让旧值一直保留,\n * 导致新审批沿用源单据的序号/覆盖ID。\n * 清空后由 DynamicValueField(单字段)与 FormTemplate.syncDynamicValues(子表批量)\n * 重新向后端取号/计算,与 Excel 导入行的处理方式一致。\n *\n * 子表(formtemplate / remotetablepro)的模型是该字段名下的行数组或对象,\n * 需要递归进每一行处理。\n *\n * @param model 表单数据(会被就地修改)\n * @param dynamicFieldList 字段列表(表单 root 或子表自己的)\n */\nexport const clearDynamicValueFields = (model: any, dynamicFieldList: any[]): any => {\n if (!model || !(dynamicFieldList instanceof Array)) {\n return model;\n }\n for (const group of dynamicFieldList) {\n if (!(group?.children instanceof Array)) {\n continue;\n }\n for (const field of group.children) {\n if (!field?.name) {\n continue;\n }\n if (field.type === 'dynamicvaluefield') {\n delete model[field.name];\n } else if (field.type === 'formtemplate' || field.type === 'remotetablepro') {\n const sub_dynamic_field_list = field.form?.dynamicFieldList || field.children || [];\n const value = model[field.name];\n if (value instanceof Array) {\n for (const row of value) {\n clearDynamicValueFields(row, sub_dynamic_field_list);\n }\n } else if (value && typeof value === 'object') {\n clearDynamicValueFields(value, sub_dynamic_field_list);\n }\n }\n }\n }\n return model;\n};\n\nexport const genID = (): string => {\n const array = new Uint8Array(16); // 16 字节 = 128 位\n window.crypto.getRandomValues(array);\n return Array.from(array, byte => byte.toString(16).padStart(2, '0')).join('');\n};\n\n/**\n * 「规则更新」在 rule.fields[] 上落的临时标记字段。它们只用于「点完规则更新」后,\n * 在**当次会话内**提示哪些列变了、哪些列的数据源配置被清空需要重配,**不属于配置数据**:\n * - 读取(get_data_store_setting / 导入配置文件 / 应用历史版本)时必须过滤掉,否则重新进入\n * 页面会把上一次的「新增/变更」标记当成当前状态渲染出来 —— 灰色「变更」尤其顽固:它代表\n * 「仅属性变更、原配置已保留、无需操作」的列,用户没有理由去编辑它,标记永远清不掉。\n * - 保存(set_data_store_setting / 导出配置文件)时必须剥掉,不再落库。\n * 写入方:components/dataStoreConfig/dataStoreConfig.vue(updateRules);\n * 读取方:components/dataStoreConfig/dataStoreConfigItem.vue(# 列提示标签)。\n * ⚠️ 增删/改名这些标记字段时,上面两处需同步。\n */\nexport const CONFIG_HINT_KEYS = ['config_hint', 'config_hint_cleared', 'config_hint_detail'];\n\n/** 就地剥离数据存储配置里所有临时标记字段(原地修改并返回,便于链式使用) */\nexport const stripDataStoreConfigHints = (config: any): any => {\n if (!Array.isArray(config)) {\n return config;\n }\n for (const rule of config) {\n for (const field of rule?.fields || []) {\n if (!field) {\n continue;\n }\n for (const key of CONFIG_HINT_KEYS) {\n if (key in field) {\n delete field[key];\n }\n }\n }\n }\n return config;\n};\n\nexport interface CreateModifyApproveParams {\n source_approve_record_id: any;\n data: any;\n page_setting_history_id?: any;\n}\n\n/**\n * 修改模式保存:调用后端 create_modify_approve,\n * 新建一条待提交审批记录(关联源记录),源记录置「已修改」。\n * org_id 由后端装饰器从请求上下文解析,无需前端传参。\n */\nexport const createModifyApprove = (params: CreateModifyApproveParams) => {\n return getApiData(params, '/approve/create_modify_approve');\n};\n\n/**\n * ────────── showTables「数据选择」弹窗:按表限制选择数量 ──────────\n *\n * 契约:`showTables({ title, tables })` 的 tables[i] 支持两个**可选**配置:\n * - `min_count`:最少选择条数\n * - `max_count`:最多选择条数\n * 字段名与表单设计端「最小数量/最大数量」(liyu-pc-base FormTemplate 的 min_count/max_count)保持一致。\n *\n * 规则(务必保持):\n * 1. **两个都没配 → 不校验、不提示**,行为与历史版本完全一致(对外只增不减)。\n * 2. `<= 0`、非数字、空值一律视为「未配置」,不产生提示也不参与校验。\n * 3. 校验粒度是**每张表各自校验**(多表弹窗互不影响);配了 `min_count` 的表等同「必选」。\n * 4. 只在点「确定」时拦截,不限制勾选动作本身(勾多了给提示,由用户改回来)。\n * 5. `min_count > max_count` 属非法配置:忽略该表的校验并告警,**不锁死用户**(否则弹窗永远关不掉)。\n *\n * 消费方:components/columnTables.vue(表头提示)、components/tableModal.vue(确定前校验 + 底部红字)。\n */\nexport interface TableSelectLimit {\n min: number | null;\n max: number | null;\n}\n\n/** 归一化单个数量配置:非数字 / 空值 / <= 0 一律视为「未配置」 */\nexport const normalizeSelectCount = (value: any): number | null => {\n const num = typeof value === 'string' ? Number(value) : value;\n if (typeof num !== 'number' || !Number.isFinite(num)) {\n return null;\n }\n const int = Math.floor(num);\n return int > 0 ? int : null;\n};\n\n/**\n * 解析某张表的选择数量限制;未配置(或配置非法)时返回 null,表示「不校验、不提示」。\n */\nexport const getTableSelectLimit = (tableConfig: any): TableSelectLimit | null => {\n if (!tableConfig) {\n return null;\n }\n const min = normalizeSelectCount(tableConfig.min_count);\n const max = normalizeSelectCount(tableConfig.max_count);\n if (min === null && max === null) {\n return null;\n }\n if (min !== null && max !== null && min > max) {\n console.warn(\n `[showTables] 表 ${tableConfig.id} 的 min_count(${min}) 大于 max_count(${max}),该表的选择数量校验已忽略`,\n tableConfig,\n );\n return null;\n }\n return { min, max };\n};\n\n/** 规则文案:`最少 1 条,最多 3 条`(单边配置只出对应半边) */\nexport const getTableSelectLimitText = (limit: TableSelectLimit | null): string => {\n if (!limit) {\n return '';\n }\n const { min, max } = limit;\n if (min !== null && max !== null) {\n return `最少 ${min} 条,最多 ${max} 条`;\n }\n if (min !== null) {\n return `最少 ${min} 条`;\n }\n return `最多 ${max} 条`;\n};\n\n/** 已选条数是否越界(未配置限制时恒为 false) */\nexport const isTableSelectCountInvalid = (\n limit: TableSelectLimit | null,\n count: number,\n): boolean => {\n if (!limit) {\n return false;\n }\n const num = Number(count) || 0;\n if (limit.min !== null && num < limit.min) {\n return true;\n }\n if (limit.max !== null && num > limit.max) {\n return true;\n }\n return false;\n};\n\n/**\n * 逐表校验已选条数,返回错误文案(全部通过返回空字符串)。\n * @param tables 参与校验的表配置(调用方需先按「实际渲染出来的表」过滤,避免配了不存在的表 id 把用户锁死)\n * @param counts 表 id → 已选条数(缺失按 0 计)\n */\nexport const validateTableSelectCounts = (\n tables: any[],\n counts: Record<string, number> | null | undefined,\n): string => {\n const errors: string[] = [];\n for (const table of tables || []) {\n const limit = getTableSelectLimit(table);\n if (!limit) {\n continue;\n }\n const count = Number(counts?.[table.id]) || 0;\n if (!isTableSelectCountInvalid(limit, count)) {\n continue;\n }\n const name = table.title || table.id;\n errors.push(`「${name}」${getTableSelectLimitText(limit)},当前已选 ${count} 条`);\n }\n return errors.length > 0 ? `选择数量不符合要求:${errors.join(';')}` : '';\n};\n\n/**\n * ============================ 配置同步 ============================\n *\n * approvalPageConfig 的「配置同步」tab 把**当前节点的某一张表**上勾选的配置块\n * 同步到其它流程节点,走 /approve/sync_page_setting(服务端合并逻辑见\n * PSMSystem2/approve/page_sync.py)。\n *\n * 为什么不能直接把服务器上保存的配置发过去:\n * 页面配置里按钮存的只是 action_code_id,真正的代码按 menu_flag 存在 ActionCodeSetting 里。\n * 若把 action_code_id 一起同步过去,目标节点就会共用同一份代码配置,改一处等于改所有节点。\n * 因此同步走的是「前端处理过的配置」——**保留内联 code、剥离 action_code_id**,\n * 目标节点重新加载时会各自分配新的 action_code_id,各节点代码互相独立。\n * 处理规则与 index.vue::exportConfig 走的\n * processData(data, null, { clear_code: false, clear_action_code_id: true }) 完全一致。\n */\n\n/**\n * 可勾选的基础配置:描述「这张表是什么」。按勾选写入,**不是固定随附**——\n * 有时只想同步列配置、不想覆盖目标节点的名称/查询参数。\n * 表格标识 `id` 不在这里:它只是「在目标节点定位这张表」的键(type + table_id),\n * 不作为同步内容发送。\n */\nexport const SYNC_BASE_FIELDS = [\n 'title',\n 'is_normal_model',\n 'list_url',\n 'modelType',\n 'query_params',\n];\n\n/** 界面上可勾选的配置块(顺序即界面顺序:列 → 查询 → 基础查询条件 → 行按钮 → 底部按钮) */\nexport const SYNC_OPTION_FIELDS = [\n 'columns',\n 'search_config',\n 'base_conditions',\n 'row_actions',\n 'actions',\n];\n\n/** 同步类型 */\nexport type SyncMode = 'standard' | 'append';\n\nexport const SYNC_MODE_TITLES: Record<SyncMode, string> = {\n standard: '标准同步',\n append: '自动追加配置',\n};\n\nexport const SYNC_OPTION_FIELD_TITLES: Record<string, string> = {\n actions: '底部按钮配置',\n base_conditions: '基础查询条件',\n columns: '列配置',\n row_actions: '行按钮配置',\n search_config: '查询配置',\n};\n\nexport const SYNC_BASE_FIELD_TITLES: Record<string, string> = {\n title: '名称',\n is_normal_model: '是否为标准模型查询',\n list_url: '列表URL',\n modelType: '模型',\n query_params: '查询参数',\n};\n\n/** 剥离按钮上的 action_code_id(保留内联的 action / code) */\nconst stripActionCodeId = (actionItem: any) => {\n if (!actionItem) {\n return;\n }\n if (actionItem.action_code_id) {\n delete actionItem.action_code_id;\n }\n if (actionItem.showCode?.enable && actionItem.showCode.action_code_id) {\n delete actionItem.showCode.action_code_id;\n }\n if (actionItem.disableCode?.enable && actionItem.disableCode.action_code_id) {\n delete actionItem.disableCode.action_code_id;\n }\n};\n\nexport const stripActionCodeIds = (actions: any) => {\n for (const actionItem of actions || []) {\n stripActionCodeId(actionItem);\n }\n};\n\n/**\n * 抽取「要同步的表格配置」:\n * - 在副本上操作,不污染页面上的表格对象;\n * - `selectedFields` 是界面勾选的全部同步内容(基础配置 + 配置块混在一起),\n * 基础配置不再固定随附,全按勾选来;\n * - `id`(表格标识)永远不进 data——它只是定位键(table_id 单独传);\n * - append(自动追加配置)模式下,目标节点找不到该表时要**整表完整写入**,\n * 因此 data 带上当前表格全部存在的配置块(不受勾选限制),\n * `fields` 仍回勾选项——目标已存在该表时后端只按勾选合并;\n * - `fields` 返回真正会写入的配置项;`skipped` 是勾选了但当前表格里不存在的\n * (例如老配置没有 row_actions),调用方据此提示用户,避免「勾了却没同步」的静默失败。\n */\nexport const buildSyncTableData = (\n table: any,\n selectedFields: string[] = [],\n syncMode: SyncMode = 'standard',\n): { data: Record<string, any>; fields: string[]; skipped: string[] } => {\n const data: Record<string, any> = {};\n const fields: string[] = [];\n const skipped: string[] = [];\n if (!table) {\n return { data, fields, skipped: [...selectedFields] };\n }\n const cloned = cloneDeep(table);\n stripActionCodeIds(cloned.actions);\n stripActionCodeIds(cloned.row_actions);\n const includeKeys = syncMode === 'append' ? [...SYNC_BASE_FIELDS, ...SYNC_OPTION_FIELDS] : selectedFields;\n for (const key of includeKeys) {\n if (cloned[key] === undefined) {\n continue;\n }\n data[key] = cloned[key];\n if (selectedFields.includes(key)) {\n fields.push(key);\n }\n }\n for (const key of selectedFields) {\n if (cloned[key] === undefined) {\n skipped.push(key);\n }\n }\n return { data, fields, skipped };\n};\n"],"mappings":"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ACR;CACD;EACE,OAAO;EACP,OAAO;EACR;CACD;EACE,OAAO;EACP,OAAO;EACR;CACD;EACE,OAAO;EACP,OAAO;EACR;CACF,EACY,IAAgB;CAC3B;EACE,KAAK;EACL,OAAO;EACP,UAAU,CACR;GACE,KAAK;GACL,OAAO;GACR,CACF;EACF;CACD;EACE,KAAK;EACL,OAAO;EACP,UAAU;GACR;IACE,KAAK;IACL,OAAO;IACR;GACD;IACE,KAAK;IACL,OAAO;IACR;GACD;IACE,KAAK;IACL,OAAO;IACR;GACF;EACF;CACD;EACE,KAAK;EACL,OAAO;EACP,UAAU;GACR;IACE,KAAK;IACL,OAAO;IACR;GACD;IACE,KAAK;IACL,OAAO;IACR;GACD;IACE,KAAK;IACL,OAAO;IACR;GACD;IACE,KAAK;IACL,OAAO;IACR;GACF;EACF;CACD;EACE,KAAK;EACL,OAAO;EACP,UAAU;GACR;IACE,KAAK;IACL,OAAO;IACR;GACD;IACE,KAAK;IACL,OAAO;IACR;GACD;IACE,KAAK;IACL,OAAO;IACR;GACD;IACE,KAAK;IACL,OAAO;IACR;GACD;IACE,KAAK;IACL,OAAO;IACR;GACD;IACE,KAAK;IACL,OAAO;IACR;GACF;EACF;CACD;EACE,KAAK;EACL,OAAO;EACP,UAAU;GACR;IACE,KAAK;IACL,OAAO;IACR;GACD;IACE,KAAK;IACL,OAAO;IACR;GACD;IACE,KAAK;IACL,OAAO;IACR;GACD;IACE,KAAK;IACL,OAAO;IACR;GACD;IACE,KAAK;IACL,OAAO;IACR;GACF;EACF;CAED;EACE,KAAK;EACL,OAAO;EACP,UAAU;GACR;IACE,KAAK;IACL,OAAO;IACR;GACD;IACE,KAAK;IACL,OAAO;IACR;GACD;IACE,KAAK;IACL,OAAO;IACR;GACD;IACE,KAAK;IACL,OAAO;IACR;GACF;EACF;CACD;EACE,KAAK;EACL,OAAO;EACP,UAAU;GACR;IACE,KAAK;IACL,OAAO;IACR;GACD;IACE,KAAK;IACL,OAAO;IACR;GACD;IACE,KAAK;IACL,OAAO;IACR;GACD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"}
@@ -0,0 +1,4 @@
1
+ //#region src/components/approval/migrate/v0001.ts
2
+ var e = (e) => e;
3
+ //#endregion
4
+ export { e as default };
@@ -0,0 +1 @@
1
+ {"version":3,"file":"v0001-OaBeBCXI.js","names":[],"sources":["../src/components/approval/migrate/v0001.ts"],"sourcesContent":["export default data => {\n return data;\n};\n"],"mappings":";AAAA,IAAA,KAAe,MACN"}