@fecp/designer 5.5.101 → 5.5.102

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 (87) hide show
  1. package/es/designer/package.json.mjs +1 -1
  2. package/es/designer/src/components/DocumentParam.vue.mjs +1 -1
  3. package/es/designer/src/components/ParamsConfig.vue2.mjs +1 -1
  4. package/es/designer/src/layout/aside/HiddenFieldDialog.vue.mjs +1 -1
  5. package/es/designer/src/packages/advancedFilter/ValueInput.vue2.mjs +1 -1
  6. package/es/designer/src/packages/dataLinkage/index.vue.mjs +1 -1
  7. package/es/designer/src/packages/dialogGlobal/index.vue.mjs +1 -1
  8. package/es/designer/src/packages/eventFlow/dialog/action/RiskSch.vue.mjs +1 -1
  9. package/es/designer/src/packages/form/property/approvalHistory.vue.mjs +1 -1
  10. package/es/designer/src/packages/form/property/contract.vue.mjs +1 -1
  11. package/es/designer/src/packages/form/property/subForm.vue.mjs +1 -1
  12. package/es/designer/src/packages/prod/index.vue.mjs +1 -1
  13. package/es/designer/src/packages/table/headerBtn.vue.mjs +1 -1
  14. package/es/designer.css +357 -68
  15. package/es/packages/mobile/index.mjs +4 -0
  16. package/es/packages/mobile/src/components/all.mjs +4 -0
  17. package/es/packages/mobile/src/components/custom/appDetail/AppDetail.vue.mjs +30 -7
  18. package/es/packages/mobile/src/components/custom/approvalBar/ApprovalBar.vue.mjs +191 -0
  19. package/es/packages/mobile/src/components/custom/approvalBar/index.mjs +10 -0
  20. package/es/packages/mobile/src/components/custom/approvalList/ApprovalList.vue.mjs +391 -0
  21. package/es/packages/mobile/src/components/custom/approvalList/index.mjs +10 -0
  22. package/es/packages/mobile/src/components/dataDisplay/cardList/CardList.vue.mjs +2 -18
  23. package/es/packages/mobile/src/components/dataDisplay/table/Table.vue.mjs +41 -9
  24. package/es/packages/mobile/src/components/form/field/Field.vue.mjs +38 -26
  25. package/es/packages/mobile/src/components/form/fieldArea/FieldArea.vue.mjs +4 -2
  26. package/es/packages/mobile/src/components/form/fieldCalendarPicker/FieldCalendarPicker.vue.mjs +1 -1
  27. package/es/packages/mobile/src/components/form/fieldCascaderPicker/fieldCascaderPicker.vue.mjs +1 -1
  28. package/es/packages/mobile/src/components/form/fieldDatePicker/FieldDatePicker.vue.mjs +1 -1
  29. package/es/packages/mobile/src/components/form/fieldDateTimePicker/FieldDateTimePicker.vue.mjs +1 -1
  30. package/es/packages/mobile/src/components/form/fieldIndustry/FieldIndustry.vue.mjs +38 -27
  31. package/es/packages/mobile/src/components/form/fieldPicker/FieldPicker.vue.mjs +58 -41
  32. package/es/packages/mobile/src/components/form/fieldTimePicker/FieldTimePicker.vue.mjs +1 -1
  33. package/es/packages/mobile/src/components/navigation/tabs/Tabs.vue.mjs +8 -3
  34. package/es/packages/mobile/src/composables/usePageEvents.mjs +80 -0
  35. package/es/packages/mobile/src/index.vue.mjs +8 -5
  36. package/es/packages/mobile/src/page.vue.mjs +150 -19
  37. package/es/packages/mobile/src/utils/datasource.mjs +12 -1
  38. package/es/packages/mobile/src/utils/eventFlow/actionHandlers.mjs +852 -0
  39. package/es/packages/mobile/src/utils/eventFlow/eventFlowHandler.mjs +94 -0
  40. package/es/packages/mobile/src/utils/eventFlowParser.mjs +396 -0
  41. package/es/packages/mobile/src/utils/formatterUtil.mjs +1 -0
  42. package/es/packages/mobile/src/utils/parseFilterConfig.mjs +98 -0
  43. package/es/packages/vue/src/components/table/Table.vue.mjs +11 -1
  44. package/lib/designer/package.json.js +1 -1
  45. package/lib/designer/src/components/DocumentParam.vue.js +1 -1
  46. package/lib/designer/src/components/ParamsConfig.vue2.js +1 -1
  47. package/lib/designer/src/layout/aside/HiddenFieldDialog.vue.js +1 -1
  48. package/lib/designer/src/packages/advancedFilter/ValueInput.vue2.js +1 -1
  49. package/lib/designer/src/packages/dataLinkage/index.vue.js +1 -1
  50. package/lib/designer/src/packages/dialogGlobal/index.vue.js +1 -1
  51. package/lib/designer/src/packages/eventFlow/dialog/action/RiskSch.vue.js +1 -1
  52. package/lib/designer/src/packages/form/property/approvalHistory.vue.js +1 -1
  53. package/lib/designer/src/packages/form/property/contract.vue.js +1 -1
  54. package/lib/designer/src/packages/form/property/subForm.vue.js +1 -1
  55. package/lib/designer/src/packages/prod/index.vue.js +1 -1
  56. package/lib/designer/src/packages/table/headerBtn.vue.js +1 -1
  57. package/lib/designer.css +357 -68
  58. package/lib/packages/mobile/index.js +6 -2
  59. package/lib/packages/mobile/src/components/all.js +4 -0
  60. package/lib/packages/mobile/src/components/custom/appDetail/AppDetail.vue.js +29 -6
  61. package/lib/packages/mobile/src/components/custom/approvalBar/ApprovalBar.vue.js +191 -0
  62. package/lib/packages/mobile/src/components/custom/approvalBar/index.js +10 -0
  63. package/lib/packages/mobile/src/components/custom/approvalList/ApprovalList.vue.js +391 -0
  64. package/lib/packages/mobile/src/components/custom/approvalList/index.js +10 -0
  65. package/lib/packages/mobile/src/components/dataDisplay/cardList/CardList.vue.js +2 -18
  66. package/lib/packages/mobile/src/components/dataDisplay/table/Table.vue.js +41 -9
  67. package/lib/packages/mobile/src/components/form/field/Field.vue.js +37 -25
  68. package/lib/packages/mobile/src/components/form/fieldArea/FieldArea.vue.js +4 -2
  69. package/lib/packages/mobile/src/components/form/fieldCalendarPicker/FieldCalendarPicker.vue.js +1 -1
  70. package/lib/packages/mobile/src/components/form/fieldCascaderPicker/fieldCascaderPicker.vue.js +1 -1
  71. package/lib/packages/mobile/src/components/form/fieldDatePicker/FieldDatePicker.vue.js +1 -1
  72. package/lib/packages/mobile/src/components/form/fieldDateTimePicker/FieldDateTimePicker.vue.js +1 -1
  73. package/lib/packages/mobile/src/components/form/fieldIndustry/FieldIndustry.vue.js +37 -26
  74. package/lib/packages/mobile/src/components/form/fieldPicker/FieldPicker.vue.js +57 -40
  75. package/lib/packages/mobile/src/components/form/fieldTimePicker/FieldTimePicker.vue.js +1 -1
  76. package/lib/packages/mobile/src/components/navigation/tabs/Tabs.vue.js +8 -3
  77. package/lib/packages/mobile/src/composables/usePageEvents.js +80 -0
  78. package/lib/packages/mobile/src/index.vue.js +8 -5
  79. package/lib/packages/mobile/src/page.vue.js +149 -18
  80. package/lib/packages/mobile/src/utils/datasource.js +14 -3
  81. package/lib/packages/mobile/src/utils/eventFlow/actionHandlers.js +852 -0
  82. package/lib/packages/mobile/src/utils/eventFlow/eventFlowHandler.js +94 -0
  83. package/lib/packages/mobile/src/utils/eventFlowParser.js +396 -0
  84. package/lib/packages/mobile/src/utils/formatterUtil.js +1 -0
  85. package/lib/packages/mobile/src/utils/parseFilterConfig.js +98 -0
  86. package/lib/packages/vue/src/components/table/Table.vue.js +11 -1
  87. package/package.json +1 -1
@@ -0,0 +1,852 @@
1
+ "use strict";
2
+ Object.defineProperties(exports, { __esModule: { value: true }, [Symbol.toStringTag]: { value: "Module" } });
3
+ const datasource = require("../datasource.js");
4
+ const parseRouteParams = require("../parseRouteParams.js");
5
+ const common = require("../common.js");
6
+ require("../../../../../node_modules/element-plus/es/index.js");
7
+ ;/* empty css */
8
+ ;/* empty css */
9
+ ;/* empty css */
10
+ ;/* empty css */
11
+ ;/* empty css */
12
+ const index = require("../../../../../node_modules/element-plus/es/components/message-box/index.js");
13
+ const index$1 = require("../../../../../node_modules/element-plus/es/components/message/index.js");
14
+ async function handlePageJump(node, data, fields, context) {
15
+ var _a, _b, _c;
16
+ const dialogDoms = document.querySelectorAll(".el-modal-dialog");
17
+ if ((dialogDoms == null ? void 0 : dialogDoms.length) > 0) {
18
+ for (let i = 0; i < dialogDoms.length; i++) {
19
+ if (!dialogDoms[i].style.display) {
20
+ return {
21
+ success: true,
22
+ message: "页面存在弹层,跳过页面跳转"
23
+ };
24
+ }
25
+ }
26
+ }
27
+ const basic = node.basic || {};
28
+ const transitionType = basic.transitionType || "page";
29
+ const formComponent = (_a = context.components) == null ? void 0 : _a.form;
30
+ const getFormDataMethod = (_c = (_b = formComponent == null ? void 0 : formComponent.$) == null ? void 0 : _b.exposed) == null ? void 0 : _c.getFormData;
31
+ if (getFormDataMethod && typeof getFormDataMethod === "function") {
32
+ data = getFormDataMethod();
33
+ }
34
+ const params = parseRouteParams.parseRouteParams(basic.routeParams, data, fields);
35
+ if (transitionType === "external") {
36
+ const url = basic.routePath;
37
+ if (!url) {
38
+ return {
39
+ success: false,
40
+ message: "外部链接地址不能为空",
41
+ shouldShowError: true
42
+ };
43
+ }
44
+ let fullUrl = url;
45
+ if (Object.keys(params).length > 0) {
46
+ const queryString = new URLSearchParams(params).toString();
47
+ fullUrl = url + (url.includes("?") ? "&" : "?") + queryString;
48
+ }
49
+ if (basic.openNewPage) {
50
+ window.open(fullUrl, "_blank");
51
+ } else {
52
+ window.location.href = fullUrl;
53
+ }
54
+ return {
55
+ success: true,
56
+ message: basic.openNewPage ? "已在新标签页打开链接" : "已在当前页面打开链接",
57
+ url: fullUrl,
58
+ openNewPage: basic.openNewPage
59
+ };
60
+ }
61
+ if (basic.routePath) {
62
+ const router = context.ctx.$router;
63
+ if (router) {
64
+ const route = { path: basic.routePath };
65
+ if (Object.keys(params).length > 0) {
66
+ route.query = params;
67
+ }
68
+ if (basic.openNewPage === true) {
69
+ const url = router.resolve(route).href;
70
+ window.open(url, "_blank");
71
+ } else {
72
+ if (basic.canNotGoBack) {
73
+ await router.replace(route);
74
+ } else {
75
+ await router.push(route);
76
+ }
77
+ }
78
+ }
79
+ }
80
+ return {
81
+ success: true,
82
+ message: basic.openNewPage === true ? "已在新标签页打开" : "跳转成功",
83
+ routePath: basic.routePath,
84
+ routeParams: params,
85
+ transitionType,
86
+ openNewPage: basic.openNewPage
87
+ };
88
+ }
89
+ async function handlePageGoBack(node, data, fields, context) {
90
+ var _a;
91
+ const basic = node.basic || {};
92
+ const config = {
93
+ backLevel: basic.backLevel || 1,
94
+ showConfirm: basic.showConfirm || false,
95
+ confirmTitle: basic.confirmTitle || "确认回退",
96
+ confirmMessage: basic.confirmMessage || "确定要返回上一页吗?",
97
+ noHistoryAction: basic.noHistoryAction || "none"
98
+ };
99
+ if (config.showConfirm) {
100
+ try {
101
+ await index.ElMessageBox.confirm(config.confirmMessage, config.confirmTitle, {
102
+ confirmButtonText: "确定",
103
+ cancelButtonText: "取消",
104
+ type: "warning",
105
+ draggable: true,
106
+ showClose: false
107
+ });
108
+ } catch (error) {
109
+ return {
110
+ success: false,
111
+ message: "用户已取消回退操作",
112
+ confirmed: false,
113
+ shouldShowError: false
114
+ };
115
+ }
116
+ }
117
+ const router = (_a = context.ctx) == null ? void 0 : _a.$router;
118
+ if (!router) {
119
+ return {
120
+ success: false,
121
+ message: "路由实例未找到,无法执行回退操作",
122
+ shouldShowError: true
123
+ };
124
+ }
125
+ try {
126
+ const goBackSteps = -Math.abs(config.backLevel);
127
+ router.go(goBackSteps);
128
+ return {
129
+ success: true,
130
+ message: `已成功回退 ${config.backLevel} 级`,
131
+ backLevel: config.backLevel,
132
+ showConfirm: config.showConfirm
133
+ };
134
+ } catch (error) {
135
+ console.error("[EventFlow] 页面回退失败:", error);
136
+ return {
137
+ success: false,
138
+ message: error.message || "页面回退失败",
139
+ shouldShowError: true
140
+ };
141
+ }
142
+ }
143
+ async function handleApiCall(node, data, fields, context, params) {
144
+ var _a;
145
+ console.log("[EventFlow] 执行API调用:", node.basic);
146
+ const basic = node.basic || {};
147
+ const metadata = context.metadata || {};
148
+ const isApproval = ((_a = metadata == null ? void 0 : metadata.item) == null ? void 0 : _a.isApproval) || false;
149
+ if (!basic.dataSourceId) {
150
+ return {
151
+ success: false,
152
+ message: "数据源配置不完整,缺少 dataSourceId"
153
+ };
154
+ }
155
+ const dataSources = context.localConfig.dataSources || [];
156
+ const dataSourceConfig = dataSources.find((ds) => ds.id === basic.dataSourceId);
157
+ if (!dataSourceConfig) {
158
+ return {
159
+ success: false,
160
+ message: `未找到数据源: ${basic.dataSourceId}`
161
+ };
162
+ }
163
+ const dataSourceManager = datasource.createDataSource({
164
+ http: context.ctx.$http,
165
+ params,
166
+ dataSources,
167
+ currentDataSourceId: basic.dataSourceId,
168
+ showSuccessMessage: basic.showSuccessMessage,
169
+ data,
170
+ fields,
171
+ notShowMessage: isApproval
172
+ });
173
+ try {
174
+ const result = await dataSourceManager.fetch();
175
+ return {
176
+ success: true,
177
+ message: "API调用成功",
178
+ data: result,
179
+ shouldShowError: false
180
+ };
181
+ } catch (error) {
182
+ console.error("[EventFlow] API调用失败:", error);
183
+ return {
184
+ success: false,
185
+ message: error.message || "API调用失败",
186
+ error,
187
+ shouldShowError: false
188
+ // API 调用失败需要提示错误
189
+ };
190
+ } finally {
191
+ dataSourceManager.destroy();
192
+ }
193
+ }
194
+ async function handleConfirm(node, data, fields, context) {
195
+ const basic = node.basic || {};
196
+ const config = {
197
+ messageType: basic.messageType || "warning",
198
+ title: basic.title || "确认操作",
199
+ message: basic.message || "确定要执行此操作吗?",
200
+ confirmText: basic.confirmText || "确定",
201
+ cancelText: basic.cancelText || "取消",
202
+ showCancel: basic.showCancel !== false,
203
+ confirmAction: basic.confirmAction || "continue",
204
+ cancelAction: basic.cancelAction || "stop"
205
+ };
206
+ try {
207
+ await index.ElMessageBox.confirm(config.message, config.title, {
208
+ confirmButtonText: config.confirmText,
209
+ cancelButtonText: config.cancelText,
210
+ type: config.messageType,
211
+ showCancelButton: config.showCancel,
212
+ draggable: true,
213
+ showClose: false
214
+ });
215
+ if (config.confirmAction === "stop") {
216
+ return {
217
+ success: false,
218
+ message: "用户确认后停止执行",
219
+ confirmed: true,
220
+ shouldShowError: false
221
+ };
222
+ }
223
+ return {
224
+ success: true,
225
+ message: "用户已确认",
226
+ confirmed: true,
227
+ shouldShowError: false
228
+ };
229
+ } catch (error) {
230
+ return {
231
+ success: false,
232
+ message: "用户已取消",
233
+ confirmed: false,
234
+ shouldShowError: false
235
+ // 用户取消不提示错误
236
+ };
237
+ }
238
+ }
239
+ async function handleMessage(node, data, fields, context) {
240
+ var _a;
241
+ const metadata = context.metadata || {};
242
+ const isApproval = ((_a = metadata == null ? void 0 : metadata.item) == null ? void 0 : _a.isApproval) || false;
243
+ if (isApproval) {
244
+ return {
245
+ success: true,
246
+ message: "审批按钮的消息不显示"
247
+ };
248
+ }
249
+ if (node.basic) {
250
+ const messageType = node.basic.messageType || "info";
251
+ const message = node.basic.message || "操作成功";
252
+ switch (messageType) {
253
+ case "success":
254
+ index$1.ElMessage.success(message);
255
+ break;
256
+ case "warning":
257
+ index$1.ElMessage.warning(message);
258
+ break;
259
+ case "error":
260
+ index$1.ElMessage.error(message);
261
+ break;
262
+ case "info":
263
+ default:
264
+ index$1.ElMessage.info(message);
265
+ break;
266
+ }
267
+ }
268
+ return {
269
+ success: true,
270
+ message: "消息已显示"
271
+ };
272
+ }
273
+ async function handleTableRefresh(node, data, fields, context) {
274
+ var _a, _b, _c;
275
+ console.log("[EventFlow] 执行表格刷新:", node.basic);
276
+ const basic = node.basic || {};
277
+ const refreshOptions = {
278
+ resetSort: basic.resetSort !== false,
279
+ // 默认 true
280
+ resetFilter: basic.resetFilter !== false,
281
+ // 默认 true
282
+ resetPagination: basic.resetPagination !== false
283
+ // 默认 true
284
+ };
285
+ console.log("[EventFlow] 刷新选项:", refreshOptions);
286
+ const tableComponent = (_a = context.components) == null ? void 0 : _a.table;
287
+ const refreshMethod = (_c = (_b = tableComponent == null ? void 0 : tableComponent.$) == null ? void 0 : _b.exposed) == null ? void 0 : _c.refresh;
288
+ if (typeof refreshMethod === "function") {
289
+ await refreshMethod(refreshOptions);
290
+ return {
291
+ success: true,
292
+ message: "表格已刷新"
293
+ };
294
+ } else {
295
+ console.error("[EventFlow] 未找到表格组件的 refresh 方法");
296
+ return {
297
+ success: false,
298
+ message: "表格组件未正确配置或 refresh 方法未暴露",
299
+ shouldShowError: true
300
+ };
301
+ }
302
+ }
303
+ async function handleTableChildRefresh(node, data, fields, context) {
304
+ var _a, _b, _c, _d;
305
+ console.log("[EventFlow] 执行子表格刷新:", node.basic);
306
+ const basic = node.basic || {};
307
+ const formComponent = (_a = context.components) == null ? void 0 : _a.form;
308
+ const getFormItemRefMethod = (_c = (_b = formComponent == null ? void 0 : formComponent.$) == null ? void 0 : _b.exposed) == null ? void 0 : _c.getFormItemRef;
309
+ if (typeof getFormItemRefMethod === "function") {
310
+ const subTableRef = getFormItemRefMethod(
311
+ String(basic.selectSubTableFieldId)
312
+ );
313
+ context.components.table = {
314
+ $: {
315
+ exposed: {
316
+ refresh: (_d = subTableRef == null ? void 0 : subTableRef.subTableRef) == null ? void 0 : _d.refresh
317
+ }
318
+ }
319
+ };
320
+ return await handleTableRefresh(node, data, fields, context);
321
+ } else {
322
+ console.error("[EventFlow] 未找到表单组件的 getFormItemRef 方法");
323
+ return {
324
+ success: false,
325
+ message: "表单组件未正确配置或 getFormItemRef 方法未暴露",
326
+ shouldShowError: true
327
+ };
328
+ }
329
+ }
330
+ async function handleTableChildSelection(node, data, fields, context) {
331
+ var _a, _b, _c, _d, _e, _f, _g, _h;
332
+ console.log("[EventFlow] 执行子表格选择赋值:", node.basic);
333
+ const basic = node.basic || {};
334
+ const formComponent = (_a = context.components) == null ? void 0 : _a.form;
335
+ const getFormDataMethod = (_c = (_b = formComponent == null ? void 0 : formComponent.$) == null ? void 0 : _b.exposed) == null ? void 0 : _c.getFormData;
336
+ const setFormDataMethod = (_e = (_d = formComponent == null ? void 0 : formComponent.$) == null ? void 0 : _d.exposed) == null ? void 0 : _e.setFormData;
337
+ const getFormItemRefMethod = (_g = (_f = formComponent == null ? void 0 : formComponent.$) == null ? void 0 : _f.exposed) == null ? void 0 : _g.getFormItemRef;
338
+ if (typeof getFormItemRefMethod === "function") {
339
+ const subTableRef = getFormItemRefMethod(
340
+ String(basic.selectSubTableFieldId)
341
+ );
342
+ const getSelectionMethod = (_h = subTableRef == null ? void 0 : subTableRef.subTableRef) == null ? void 0 : _h.getSelection;
343
+ if (typeof getSelectionMethod === "function") {
344
+ const rows = await getSelectionMethod();
345
+ const fieldMapping = basic.subTableSelectionFieldMapping;
346
+ if (fieldMapping && Array.isArray(fieldMapping)) {
347
+ let formData = getFormDataMethod();
348
+ fieldMapping.forEach((mapping) => {
349
+ const { field, value } = mapping;
350
+ const targetField = fields.find((item) => item.id == field);
351
+ if (!targetField) {
352
+ return {
353
+ success: false,
354
+ message: `未找到字段: ${field}`
355
+ };
356
+ }
357
+ const values = rows.map((row) => row[value]);
358
+ formData[targetField.fieldName] = values.join(",");
359
+ });
360
+ if (typeof setFormDataMethod === "function") {
361
+ setFormDataMethod(formData);
362
+ return {
363
+ success: true,
364
+ message: "赋值成功"
365
+ };
366
+ } else {
367
+ console.error("未找到表单组件的 setFormData 方法");
368
+ return {
369
+ success: false,
370
+ message: "表单组件未正确配置或 setFormData 方法未暴露",
371
+ shouldShowError: true
372
+ };
373
+ }
374
+ }
375
+ } else {
376
+ console.error("[EventFlow] 未找到子列表组件的 getSelection 方法");
377
+ return {
378
+ success: false,
379
+ message: "子列表组件未正确配置或 getSelection 方法未暴露",
380
+ shouldShowError: true
381
+ };
382
+ }
383
+ } else {
384
+ console.error("[EventFlow] 未找到表单组件的 getFormItemRef 方法");
385
+ return {
386
+ success: false,
387
+ message: "表单组件未正确配置或 getFormItemRef 方法未暴露",
388
+ shouldShowError: true
389
+ };
390
+ }
391
+ }
392
+ async function handleTableRowDelete(node, data, fields, context) {
393
+ var _a, _b, _c;
394
+ console.log("[EventFlow] 执行表格行删除:", node.basic);
395
+ const basic = node.basic || {};
396
+ if (basic.showConfirmDeleteMessage) {
397
+ try {
398
+ await index.ElMessageBox.confirm(
399
+ "此操作将永久删除该记录, 是否继续",
400
+ "确认操作",
401
+ {
402
+ // confirmButtonText: "确定",
403
+ // cancelButtonText: "取消",
404
+ type: "warning",
405
+ draggable: true,
406
+ showClose: false
407
+ }
408
+ );
409
+ } catch (error) {
410
+ return {
411
+ success: false,
412
+ message: "用户已取消",
413
+ confirmed: false,
414
+ shouldShowError: false
415
+ // 用户取消不提示错误
416
+ };
417
+ }
418
+ }
419
+ const result = await handleApiCall(node, data, fields, context);
420
+ if (!result.success) {
421
+ return result;
422
+ }
423
+ if (basic.resetTableAfterDelete) {
424
+ const tableComponent = (_a = context.components) == null ? void 0 : _a.table;
425
+ const refreshMethod = (_c = (_b = tableComponent == null ? void 0 : tableComponent.$) == null ? void 0 : _b.exposed) == null ? void 0 : _c.refresh;
426
+ if (typeof refreshMethod === "function") {
427
+ const refreshOptions = {
428
+ resetSort: false,
429
+ resetFilter: false,
430
+ resetPagination: false
431
+ };
432
+ await refreshMethod(refreshOptions);
433
+ return {
434
+ success: true,
435
+ message: "表格已刷新"
436
+ };
437
+ } else {
438
+ console.error("[EventFlow] 未找到表格组件的 refresh 方法");
439
+ return {
440
+ success: false,
441
+ message: "表格组件未正确配置或 refresh 方法未暴露",
442
+ shouldShowError: true
443
+ };
444
+ }
445
+ }
446
+ return {
447
+ success: true,
448
+ message: "列表数据已删除"
449
+ };
450
+ }
451
+ async function handleCustomAction(node, data, fields, context) {
452
+ console.log("[EventFlow] 执行自定义动作:", node.basic);
453
+ return {
454
+ success: true,
455
+ message: "自定义动作已执行"
456
+ };
457
+ }
458
+ async function handleFormSetValue(node, data, fields, context) {
459
+ var _a, _b, _c, _d;
460
+ const basic = node.basic || {};
461
+ if (!(basic == null ? void 0 : basic.dataSourceId)) {
462
+ console.error("form-setValue: 缺少 dataSourceId 配置");
463
+ return;
464
+ }
465
+ const metadata = context.metadata || {};
466
+ const initSearchData = (metadata == null ? void 0 : metadata.initSearchData) || {};
467
+ const result = await handleApiCall(
468
+ node,
469
+ data,
470
+ fields,
471
+ context,
472
+ initSearchData
473
+ );
474
+ if (!result.success) {
475
+ return result;
476
+ }
477
+ let formData = result.data;
478
+ if (basic.fieldMapping && Array.isArray(basic.fieldMapping)) {
479
+ basic.fieldMapping.forEach((mapping) => {
480
+ const { field, value } = mapping;
481
+ const targetField = fields.find((item) => item.id == field);
482
+ if (!targetField) {
483
+ return {
484
+ success: false,
485
+ message: `未找到字段: ${field}`
486
+ };
487
+ }
488
+ formData[targetField.fieldName] = formData[value];
489
+ delete formData[value];
490
+ });
491
+ }
492
+ formData = common.removeEmptyValues(formData);
493
+ formData == null ? true : delete formData.pageNo;
494
+ formData == null ? true : delete formData.pageSize;
495
+ const formComponent = ((_a = context.components) == null ? void 0 : _a.form) || ((_b = context.components) == null ? void 0 : _b.table);
496
+ const setFormDataMethod = (_d = (_c = formComponent == null ? void 0 : formComponent.$) == null ? void 0 : _c.exposed) == null ? void 0 : _d.setFormData;
497
+ if (typeof setFormDataMethod === "function") {
498
+ setFormDataMethod(formData);
499
+ return {
500
+ success: true,
501
+ message: "表单已赋值"
502
+ };
503
+ } else {
504
+ console.error("未找到表单组件的 setFormData 方法");
505
+ return {
506
+ success: false,
507
+ message: "表单组件未正确配置或 setFormData 方法未暴露",
508
+ shouldShowError: true
509
+ };
510
+ }
511
+ }
512
+ async function handleFormSubmit(node, data, fields, context) {
513
+ var _a, _b, _c, _d, _e, _f, _g, _h, _i, _j;
514
+ const basic = node.basic || {};
515
+ if (!(basic == null ? void 0 : basic.dataSourceId)) {
516
+ console.error("form-setValue: 缺少 dataSourceId 配置");
517
+ return;
518
+ }
519
+ const formComponent = (_a = context.components) == null ? void 0 : _a.form;
520
+ const validateMethod = (_c = (_b = formComponent == null ? void 0 : formComponent.$) == null ? void 0 : _b.exposed) == null ? void 0 : _c.validate;
521
+ const getFormDataMethod = (_e = (_d = formComponent == null ? void 0 : formComponent.$) == null ? void 0 : _d.exposed) == null ? void 0 : _e.getFormData;
522
+ if (basic == null ? void 0 : basic.formValidate) {
523
+ try {
524
+ if (typeof validateMethod === "function") {
525
+ await validateMethod();
526
+ } else {
527
+ console.error("未找到表单组件的 validate 方法");
528
+ return {
529
+ success: false,
530
+ message: "表单组件未正确配置或 validate 方法未暴露",
531
+ shouldShowError: true
532
+ };
533
+ }
534
+ } catch (error) {
535
+ return {
536
+ success: false,
537
+ message: "表单验证失败!",
538
+ shouldShowError: false
539
+ };
540
+ }
541
+ }
542
+ if (basic == null ? void 0 : basic.docValidate) {
543
+ const docValidateMethod = (_g = (_f = formComponent == null ? void 0 : formComponent.$) == null ? void 0 : _f.exposed) == null ? void 0 : _g.docValidate;
544
+ try {
545
+ if (typeof docValidateMethod === "function") {
546
+ await docValidateMethod();
547
+ } else {
548
+ console.error("未找到表单组件的 docValidate 方法");
549
+ return {
550
+ success: false,
551
+ message: "表单组件未正确配置或 docValidate 方法未暴露",
552
+ shouldShowError: true
553
+ };
554
+ }
555
+ } catch (error) {
556
+ return {
557
+ success: false,
558
+ message: "要件校验失败!",
559
+ shouldShowError: false
560
+ };
561
+ }
562
+ }
563
+ if (typeof getFormDataMethod === "function") {
564
+ try {
565
+ let formData = getFormDataMethod();
566
+ if (basic.fieldMapping && Array.isArray(basic.fieldMapping)) {
567
+ basic.fieldMapping.forEach((mapping) => {
568
+ const { field, value } = mapping;
569
+ const targetField = fields.find((item) => item.id == field);
570
+ if (!targetField) {
571
+ return {
572
+ success: false,
573
+ message: `未找到字段: ${field}`
574
+ };
575
+ }
576
+ formData[value] = formData[targetField.fieldName];
577
+ delete formData[targetField.fieldName];
578
+ });
579
+ }
580
+ const result = await handleApiCall(node, data, fields, context, formData);
581
+ if (!result.success) {
582
+ return result;
583
+ }
584
+ if (basic.returnToForm) {
585
+ formData = common.removeEmptyValues(result.data || {});
586
+ delete formData.pageNo;
587
+ delete formData.pageSize;
588
+ const formComponent2 = (_h = context.components) == null ? void 0 : _h.form;
589
+ const setFormDataMethod = (_j = (_i = formComponent2 == null ? void 0 : formComponent2.$) == null ? void 0 : _i.exposed) == null ? void 0 : _j.setFormData;
590
+ if (typeof setFormDataMethod === "function") {
591
+ setFormDataMethod(formData);
592
+ } else {
593
+ console.error("未找到表单组件的 setFormData 方法");
594
+ return {
595
+ success: false,
596
+ message: "表单组件未正确配置或 setFormData 方法未暴露",
597
+ shouldShowError: true
598
+ };
599
+ }
600
+ }
601
+ return {
602
+ success: true,
603
+ message: "表单提交成功"
604
+ };
605
+ } catch (error) {
606
+ return {
607
+ success: false,
608
+ message: "表单验证失败!",
609
+ shouldShowError: false
610
+ };
611
+ }
612
+ } else {
613
+ console.error("未找到表单组件的 getFormData 方法");
614
+ return {
615
+ success: false,
616
+ message: "表单组件未正确配置或 getFormData 方法未暴露",
617
+ shouldShowError: true
618
+ };
619
+ }
620
+ }
621
+ async function handleDialog(node, data, fields, context) {
622
+ const basic = node.basic || {};
623
+ if (!(basic == null ? void 0 : basic.dialogId)) {
624
+ console.error("ui-dialog: 缺少 dialogId 配置");
625
+ return;
626
+ }
627
+ let dialog = null;
628
+ if (basic.dialogSource == "global") {
629
+ const data2 = await api.getTemplateDialogById(
630
+ context.ctx.$http,
631
+ basic.dialogId
632
+ );
633
+ dialog = JSON.parse(data2.config);
634
+ dialog.id = data2.id;
635
+ dialog.name = data2.name;
636
+ dialog.selectionMode = basic.selectionMode;
637
+ dialog.displayFormat = basic.displayFormat;
638
+ dialog.displayFormatText = basic.displayFormatText;
639
+ dialog.fieldMapping = basic.fieldMapping;
640
+ dialog.callbackEventConfig = basic.callbackEventConfig;
641
+ } else if (basic.dialogSource == "custom") {
642
+ const dialogList = context.localConfig.dialogs || [];
643
+ dialog = dialogList.find((item) => item.id == (basic == null ? void 0 : basic.dialogId));
644
+ dialog.subFormMode = basic.subFormMode;
645
+ }
646
+ if (!dialog) {
647
+ console.error("ui-dialog: 未找到匹配的弹层配置," + (basic == null ? void 0 : basic.dialogId));
648
+ return;
649
+ }
650
+ try {
651
+ await openDialog(
652
+ basic.displayFieldName,
653
+ dialog,
654
+ context.instance,
655
+ context.ctx,
656
+ fields,
657
+ data
658
+ );
659
+ return {
660
+ success: true,
661
+ message: "用户已确认",
662
+ shouldShowError: false
663
+ };
664
+ } catch (error) {
665
+ return {
666
+ success: false,
667
+ message: "用户已取消",
668
+ confirmed: false,
669
+ shouldShowError: false
670
+ // 用户取消不提示错误
671
+ };
672
+ }
673
+ }
674
+ async function handleRiskSchDialog(node, data, fields, context) {
675
+ var _a, _b, _c, _d, _e, _f;
676
+ const basic = node.basic || {};
677
+ if (!(basic == null ? void 0 : basic.schNo)) {
678
+ console.error("风险拦截校验: 缺少 schNo 配置");
679
+ return;
680
+ }
681
+ if (!(basic == null ? void 0 : basic.busNo)) {
682
+ console.error("风险拦截校验: 缺少 busNo 配置");
683
+ return;
684
+ }
685
+ if (basic == null ? void 0 : basic.formValidate) {
686
+ const formComponent = (_a = context.components) == null ? void 0 : _a.form;
687
+ const validateMethod = (_c = (_b = formComponent == null ? void 0 : formComponent.$) == null ? void 0 : _b.exposed) == null ? void 0 : _c.validate;
688
+ if (typeof validateMethod === "function") {
689
+ await validateMethod();
690
+ }
691
+ }
692
+ if (basic == null ? void 0 : basic.docValidate) {
693
+ const formComponent = (_d = context.components) == null ? void 0 : _d.form;
694
+ const docValidateMethod = (_f = (_e = formComponent == null ? void 0 : formComponent.$) == null ? void 0 : _e.exposed) == null ? void 0 : _f.docValidate;
695
+ if (typeof docValidateMethod === "function") {
696
+ await docValidateMethod();
697
+ }
698
+ }
699
+ const schNo = basic.schNo;
700
+ const paramList = parseRouteParams.parseRouteParams(basic == null ? void 0 : basic.params, data, fields);
701
+ const busNo = parseRouteParams.parseSingleParamValue(basic.busNo, data, fields);
702
+ try {
703
+ await openRiskSch(
704
+ { schNo, busNo, paramList },
705
+ context.instance,
706
+ context.ctx
707
+ );
708
+ return {
709
+ success: true,
710
+ message: "用户已确认",
711
+ shouldShowError: false
712
+ };
713
+ } catch (error) {
714
+ return {
715
+ success: false,
716
+ message: "用户已取消",
717
+ confirmed: false,
718
+ shouldShowError: false
719
+ // 用户取消不提示错误
720
+ };
721
+ }
722
+ }
723
+ async function handleUpload(node, data, fields, context) {
724
+ const basic = node.basic || {};
725
+ console.log("[EventFlow] 执行文件上传动作:", basic);
726
+ const dataSourceId = basic.dataSourceId || "";
727
+ const acceptType = basic.acceptType || [];
728
+ const maxSize = basic.maxSize || 0;
729
+ const multipleUpload = basic.multipleUpload || false;
730
+ if (!dataSourceId) {
731
+ return {
732
+ success: false,
733
+ message: "文件上传动作缺少必要的数据源配置(dataSourceId)",
734
+ shouldShowError: true
735
+ };
736
+ }
737
+ const acceptArr = [];
738
+ if (acceptType.includes("image")) {
739
+ acceptArr.push("image/*");
740
+ }
741
+ if (acceptType.includes("video")) {
742
+ acceptArr.push("video/*");
743
+ }
744
+ if (acceptType.includes("audio")) {
745
+ acceptArr.push("audio/*");
746
+ }
747
+ if (acceptType.includes("text")) {
748
+ acceptArr.push("text/plain");
749
+ }
750
+ if (acceptType.includes("doc")) {
751
+ acceptArr.push(".doc");
752
+ acceptArr.push(".docx");
753
+ }
754
+ if (acceptType.includes("xls")) {
755
+ acceptArr.push(".xls");
756
+ acceptArr.push(".xlsx");
757
+ }
758
+ if (acceptType.includes("ppt")) {
759
+ acceptArr.push(".ppt");
760
+ acceptArr.push(".pptx");
761
+ }
762
+ if (acceptType.includes("pdf")) {
763
+ acceptArr.push("application/pdf");
764
+ }
765
+ if (acceptType.includes("zip")) {
766
+ acceptArr.push("application/zip");
767
+ acceptArr.push("application/x-rar-compressed");
768
+ }
769
+ let accept = "";
770
+ if (acceptArr.length < 13) {
771
+ accept = acceptArr.join(",");
772
+ }
773
+ const files = await new Promise((resolve, reject) => {
774
+ const input = document.createElement("input");
775
+ input.type = "file";
776
+ input.multiple = multipleUpload;
777
+ input.accept = accept;
778
+ input.click();
779
+ input.onchange = () => {
780
+ let files2 = Array.from(input.files || []);
781
+ if (files2.length === 0) return resolve([]);
782
+ if (maxSize > 0) {
783
+ const maxByte = maxSize * 1024 * 1024;
784
+ const invalidFiles = files2.some((f) => f.size > maxByte);
785
+ if (invalidFiles) {
786
+ reject(new Error(`文件不能超过 ${maxSize}MB`));
787
+ return;
788
+ }
789
+ }
790
+ resolve(files2);
791
+ };
792
+ });
793
+ if (!files || files.length === 0) {
794
+ return { success: false, message: "未选择文件" };
795
+ }
796
+ try {
797
+ const params = multipleUpload ? { files } : { file: files[0] };
798
+ const result = await handleApiCall(node, data, fields, context, params);
799
+ if (!result.success) {
800
+ return result;
801
+ }
802
+ return {
803
+ success: true,
804
+ message: `文件上传成功'}`,
805
+ data: {
806
+ dataSourceId,
807
+ acceptType,
808
+ maxSize,
809
+ multipleUpload,
810
+ acceptType
811
+ }
812
+ };
813
+ } catch (error) {
814
+ return {
815
+ success: false,
816
+ message: "上传失败",
817
+ shouldShowError: false
818
+ };
819
+ }
820
+ }
821
+ const defaultActionHandlers = {
822
+ "page-jump": handlePageJump,
823
+ "page-go-back": handlePageGoBack,
824
+ "request-send": handleApiCall,
825
+ "ui-confirm": handleConfirm,
826
+ "ui-message": handleMessage,
827
+ "table-refresh": handleTableRefresh,
828
+ "table-row-delete": handleTableRowDelete,
829
+ "table-child-refresh": handleTableChildRefresh,
830
+ "table-child-selection": handleTableChildSelection,
831
+ "form-setValue": handleFormSetValue,
832
+ "form-submit": handleFormSubmit,
833
+ custom: handleCustomAction,
834
+ "ui-dialog": handleDialog,
835
+ "ui-upload": handleUpload,
836
+ riskSchDialog: handleRiskSchDialog
837
+ };
838
+ exports.default = defaultActionHandlers;
839
+ exports.defaultActionHandlers = defaultActionHandlers;
840
+ exports.handleApiCall = handleApiCall;
841
+ exports.handleConfirm = handleConfirm;
842
+ exports.handleCustomAction = handleCustomAction;
843
+ exports.handleDialog = handleDialog;
844
+ exports.handleMessage = handleMessage;
845
+ exports.handlePageGoBack = handlePageGoBack;
846
+ exports.handlePageJump = handlePageJump;
847
+ exports.handleRiskSchDialog = handleRiskSchDialog;
848
+ exports.handleTableChildRefresh = handleTableChildRefresh;
849
+ exports.handleTableChildSelection = handleTableChildSelection;
850
+ exports.handleTableRefresh = handleTableRefresh;
851
+ exports.handleTableRowDelete = handleTableRowDelete;
852
+ exports.handleUpload = handleUpload;