@fecp/designer 5.3.3 → 5.3.5

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 (53) hide show
  1. package/es/designer.css +208 -179
  2. package/es/packages/designer/package.json.mjs +1 -1
  3. package/es/packages/designer/src/components/FilterConfigDisplay.vue.mjs +5 -3
  4. package/es/packages/designer/src/packages/advancedFilter/ValueInput.vue2.mjs +2 -2
  5. package/es/packages/designer/src/packages/dataLinkage/index.vue.mjs +85 -75
  6. package/es/packages/designer/src/packages/dialogGlobal/index.vue.mjs +2 -0
  7. package/es/packages/designer/src/packages/eventFlow/dialog/action/TableChildRefresh.vue2.mjs +94 -0
  8. package/es/packages/designer/src/packages/eventFlow/dialog/action/TableRowDelete.vue2.mjs +54 -0
  9. package/es/packages/designer/src/packages/eventFlow/dialog/action/config.mjs +12 -1
  10. package/es/packages/designer/src/packages/form/property/approvalHistory.vue.mjs +18 -18
  11. package/es/packages/designer/src/packages/form/property/subForm.vue.mjs +18 -18
  12. package/es/packages/designer/src/packages/form/property/subTable.vue.mjs +17 -17
  13. package/es/packages/designer/src/packages/formulaEditor/index.vue2.mjs +10 -1
  14. package/es/packages/designer/src/packages/table/headerBtn.vue.mjs +2 -0
  15. package/es/packages/designer/src/packages/table/queryModule/DynamicModeConfig.vue.mjs +12 -5
  16. package/es/packages/designer/src/packages/table/queryModule/index.vue.mjs +11 -16
  17. package/es/packages/vue/src/components/bus/approvalHistory/ApprovalHistory.vue.mjs +5 -4
  18. package/es/packages/vue/src/components/forms/form/Form.vue.mjs +234 -139
  19. package/es/packages/vue/src/components/forms/formItem/FormItem.vue.mjs +20 -3
  20. package/es/packages/vue/src/components/forms/subForm/SubForm.vue.mjs +4 -4
  21. package/es/packages/vue/src/components/forms/subTable/SubTable.vue.mjs +11 -5
  22. package/es/packages/vue/src/components/table/CustomButtons.vue.mjs +11 -3
  23. package/es/packages/vue/src/components/table/DynamicQuery.vue.mjs +16 -8
  24. package/es/packages/vue/src/components/table/Table.vue.mjs +7 -5
  25. package/es/packages/vue/src/utils/eventFlow/actionHandlers.mjs +86 -5
  26. package/es/packages/vue/src/utils/parseFilterConfig.mjs +44 -0
  27. package/lib/designer.css +208 -179
  28. package/lib/packages/designer/package.json.js +1 -1
  29. package/lib/packages/designer/src/components/FilterConfigDisplay.vue.js +5 -3
  30. package/lib/packages/designer/src/packages/advancedFilter/ValueInput.vue2.js +2 -2
  31. package/lib/packages/designer/src/packages/dataLinkage/index.vue.js +93 -83
  32. package/lib/packages/designer/src/packages/dialogGlobal/index.vue.js +2 -0
  33. package/lib/packages/designer/src/packages/eventFlow/dialog/action/TableChildRefresh.vue2.js +94 -0
  34. package/lib/packages/designer/src/packages/eventFlow/dialog/action/TableRowDelete.vue2.js +54 -0
  35. package/lib/packages/designer/src/packages/eventFlow/dialog/action/config.js +12 -1
  36. package/lib/packages/designer/src/packages/form/property/approvalHistory.vue.js +20 -20
  37. package/lib/packages/designer/src/packages/form/property/subForm.vue.js +20 -20
  38. package/lib/packages/designer/src/packages/form/property/subTable.vue.js +19 -19
  39. package/lib/packages/designer/src/packages/formulaEditor/index.vue2.js +10 -1
  40. package/lib/packages/designer/src/packages/table/headerBtn.vue.js +2 -0
  41. package/lib/packages/designer/src/packages/table/queryModule/DynamicModeConfig.vue.js +12 -5
  42. package/lib/packages/designer/src/packages/table/queryModule/index.vue.js +11 -16
  43. package/lib/packages/vue/src/components/bus/approvalHistory/ApprovalHistory.vue.js +5 -4
  44. package/lib/packages/vue/src/components/forms/form/Form.vue.js +232 -137
  45. package/lib/packages/vue/src/components/forms/formItem/FormItem.vue.js +19 -2
  46. package/lib/packages/vue/src/components/forms/subForm/SubForm.vue.js +4 -4
  47. package/lib/packages/vue/src/components/forms/subTable/SubTable.vue.js +11 -5
  48. package/lib/packages/vue/src/components/table/CustomButtons.vue.js +11 -3
  49. package/lib/packages/vue/src/components/table/DynamicQuery.vue.js +16 -8
  50. package/lib/packages/vue/src/components/table/Table.vue.js +7 -5
  51. package/lib/packages/vue/src/utils/eventFlow/actionHandlers.js +92 -11
  52. package/lib/packages/vue/src/utils/parseFilterConfig.js +44 -0
  53. package/package.json +1 -1
@@ -566,21 +566,23 @@ const _sfc_main = /* @__PURE__ */ Object.assign({
566
566
  onSearch: handleFilterSearch,
567
567
  onReset: handleFilterReset
568
568
  }, null, 8, ["query-config", "fields-data"]),
569
- !__props.readonly && !__props.isSubTable ? (vue.openBlock(), vue.createBlock(CustomButtons.default, {
570
- key: 0,
569
+ vue.createVNode(CustomButtons.default, {
571
570
  "custom-btns": localConfig.value.customBtns,
572
571
  localConfig: localConfig.value,
572
+ readonly: __props.readonly,
573
+ isSubTable: __props.isSubTable,
573
574
  onClick: handleCustomBtnClick
574
- }, null, 8, ["custom-btns", "localConfig"])) : vue.createCommentVNode("", true)
575
+ }, null, 8, ["custom-btns", "localConfig", "readonly", "isSubTable"])
575
576
  ], 64)) : vue.createCommentVNode("", true),
576
577
  localConfig.value.queryConfig.mode == "dynamic" ? (vue.openBlock(), vue.createBlock(DynamicQuery.default, {
577
578
  key: 1,
579
+ readonly: __props.readonly,
578
580
  isSubTable: __props.isSubTable,
579
581
  localConfig: localConfig.value,
580
582
  "fields-data": fieldsData.value,
581
583
  onSearch: handleFilterSearch,
582
584
  onClick: handleCustomBtnClick
583
- }, null, 8, ["isSubTable", "localConfig", "fields-data"])) : vue.createCommentVNode("", true),
585
+ }, null, 8, ["readonly", "isSubTable", "localConfig", "fields-data"])) : vue.createCommentVNode("", true),
584
586
  vue.createElementVNode("div", _hoisted_1, [
585
587
  vue.createVNode(vue.unref(index$1.VxeTable), {
586
588
  ref_key: "tableRef",
@@ -645,5 +647,5 @@ const _sfc_main = /* @__PURE__ */ Object.assign({
645
647
  };
646
648
  }
647
649
  });
648
- const _Table = /* @__PURE__ */ _pluginVue_exportHelper.default(_sfc_main, [["__scopeId", "data-v-d0a13549"]]);
650
+ const _Table = /* @__PURE__ */ _pluginVue_exportHelper.default(_sfc_main, [["__scopeId", "data-v-8f3c46b5"]]);
649
651
  exports.default = _Table;
@@ -10,8 +10,8 @@ const index = require("../../api/index.js");
10
10
  ;/* empty css */
11
11
  ;/* empty css */
12
12
  ;/* empty css */
13
- const index$2 = require("../../../../../node_modules/.pnpm/element-plus@2.13.2_vue@3.5.13_typescript@5.7.3_/node_modules/element-plus/es/components/message/index.js");
14
- const index$3 = require("../../../../../node_modules/.pnpm/element-plus@2.13.2_vue@3.5.13_typescript@5.7.3_/node_modules/element-plus/es/components/message-box/index.js");
13
+ const index$2 = require("../../../../../node_modules/.pnpm/element-plus@2.13.2_vue@3.5.13_typescript@5.7.3_/node_modules/element-plus/es/components/message-box/index.js");
14
+ const index$3 = require("../../../../../node_modules/.pnpm/element-plus@2.13.2_vue@3.5.13_typescript@5.7.3_/node_modules/element-plus/es/components/message/index.js");
15
15
  async function handlePageJump(node, data, fields, context) {
16
16
  const dialogDoms = document.querySelectorAll(".el-modal-dialog");
17
17
  if ((dialogDoms == null ? void 0 : dialogDoms.length) > 0) {
@@ -93,7 +93,7 @@ async function handlePageGoBack(node, data, fields, context) {
93
93
  };
94
94
  if (config.showConfirm) {
95
95
  try {
96
- await index$3.ElMessageBox.confirm(
96
+ await index$2.ElMessageBox.confirm(
97
97
  config.confirmMessage,
98
98
  config.confirmTitle,
99
99
  {
@@ -199,7 +199,7 @@ async function handleConfirm(node, data, fields, context) {
199
199
  cancelAction: basic.cancelAction || "stop"
200
200
  };
201
201
  try {
202
- await index$3.ElMessageBox.confirm(
202
+ await index$2.ElMessageBox.confirm(
203
203
  config.message,
204
204
  config.title,
205
205
  {
@@ -241,17 +241,17 @@ async function handleMessage(node, data, fields, context) {
241
241
  const message = node.basic.message || "操作成功";
242
242
  switch (messageType) {
243
243
  case "success":
244
- index$2.ElMessage.success(message);
244
+ index$3.ElMessage.success(message);
245
245
  break;
246
246
  case "warning":
247
- index$2.ElMessage.warning(message);
247
+ index$3.ElMessage.warning(message);
248
248
  break;
249
249
  case "error":
250
- index$2.ElMessage.error(message);
250
+ index$3.ElMessage.error(message);
251
251
  break;
252
252
  case "info":
253
253
  default:
254
- index$2.ElMessage.info(message);
254
+ index$3.ElMessage.info(message);
255
255
  break;
256
256
  }
257
257
  }
@@ -264,7 +264,7 @@ async function handleTableRefresh(node, data, fields, context) {
264
264
  var _a, _b, _c;
265
265
  console.log("[EventFlow] 执行表格刷新:", node.basic);
266
266
  const basic = node.basic || {};
267
- const refreshOptions = {
267
+ const refreshOptions2 = {
268
268
  resetSort: basic.resetSort !== false,
269
269
  // 默认 true
270
270
  resetFilter: basic.resetFilter !== false,
@@ -272,11 +272,11 @@ async function handleTableRefresh(node, data, fields, context) {
272
272
  resetPagination: basic.resetPagination !== false
273
273
  // 默认 true
274
274
  };
275
- console.log("[EventFlow] 刷新选项:", refreshOptions);
275
+ console.log("[EventFlow] 刷新选项:", refreshOptions2);
276
276
  const tableComponent = (_a = context.components) == null ? void 0 : _a.table;
277
277
  const refreshMethod = (_c = (_b = tableComponent == null ? void 0 : tableComponent.$) == null ? void 0 : _b.exposed) == null ? void 0 : _c.refresh;
278
278
  if (typeof refreshMethod === "function") {
279
- await refreshMethod(refreshOptions);
279
+ await refreshMethod(refreshOptions2);
280
280
  return {
281
281
  success: true,
282
282
  message: "表格已刷新"
@@ -290,6 +290,83 @@ async function handleTableRefresh(node, data, fields, context) {
290
290
  };
291
291
  }
292
292
  }
293
+ async function handleTableChildRefresh(node, data, fields, context) {
294
+ var _a, _b, _c, _d;
295
+ console.log("[EventFlow] 执行子表格刷新:", node.basic);
296
+ const basic = node.basic || {};
297
+ const formComponent = (_a = context.components) == null ? void 0 : _a.form;
298
+ const getFormItemRefMethod = (_c = (_b = formComponent == null ? void 0 : formComponent.$) == null ? void 0 : _b.exposed) == null ? void 0 : _c.getFormItemRef;
299
+ if (typeof getFormItemRefMethod === "function") {
300
+ const subTableRef = getFormItemRefMethod(String(basic.selectSubTableFieldId));
301
+ context.components.table = {
302
+ $: {
303
+ exposed: {
304
+ refresh: (_d = subTableRef == null ? void 0 : subTableRef.subTableRef) == null ? void 0 : _d.refresh
305
+ }
306
+ }
307
+ };
308
+ return await handleTableRefresh(node, data, fields, context);
309
+ } else {
310
+ console.error("[EventFlow] 未找到表单组件的 getFormItemRef 方法");
311
+ return {
312
+ success: false,
313
+ message: "表单组件未正确配置或 getFormItemRef 方法未暴露",
314
+ shouldShowError: true
315
+ };
316
+ }
317
+ }
318
+ async function handleTableRowDelete(node, data, fields, context) {
319
+ var _a, _b, _c;
320
+ console.log("[EventFlow] 执行表格行删除:", node.basic);
321
+ const basic = node.basic || {};
322
+ if (basic.showConfirmDeleteMessage) {
323
+ try {
324
+ await index$2.ElMessageBox.confirm(
325
+ "此操作将永久删除该记录, 是否继续",
326
+ "确认操作",
327
+ {
328
+ type: "warning",
329
+ draggable: true,
330
+ showClose: false
331
+ }
332
+ );
333
+ } catch (error) {
334
+ return {
335
+ success: false,
336
+ message: "用户已取消",
337
+ confirmed: false,
338
+ shouldShowError: false
339
+ // 用户取消不提示错误
340
+ };
341
+ }
342
+ }
343
+ const result = await handleApiCall(node, data, fields, context);
344
+ if (!result.success) {
345
+ return result;
346
+ }
347
+ if (basic.resetTableAfterDelete) {
348
+ const tableComponent = (_a = context.components) == null ? void 0 : _a.table;
349
+ const refreshMethod = (_c = (_b = tableComponent == null ? void 0 : tableComponent.$) == null ? void 0 : _b.exposed) == null ? void 0 : _c.refresh;
350
+ if (typeof refreshMethod === "function") {
351
+ await refreshMethod(refreshOptions);
352
+ return {
353
+ success: true,
354
+ message: "表格已刷新"
355
+ };
356
+ } else {
357
+ console.error("[EventFlow] 未找到表格组件的 refresh 方法");
358
+ return {
359
+ success: false,
360
+ message: "表格组件未正确配置或 refresh 方法未暴露",
361
+ shouldShowError: true
362
+ };
363
+ }
364
+ }
365
+ return {
366
+ success: true,
367
+ message: "列表数据已删除"
368
+ };
369
+ }
293
370
  async function handleCustomAction(node, data, fields, context) {
294
371
  console.log("[EventFlow] 执行自定义动作:", node.basic);
295
372
  return {
@@ -492,6 +569,8 @@ const defaultActionHandlers = {
492
569
  "ui-confirm": handleConfirm,
493
570
  "ui-message": handleMessage,
494
571
  "table-refresh": handleTableRefresh,
572
+ "table-row-delete": handleTableRowDelete,
573
+ "table-child-refresh": handleTableChildRefresh,
495
574
  "form-setValue": handleFormSetValue,
496
575
  "form-submit": handleFormSubmit,
497
576
  "custom": handleCustomAction,
@@ -506,4 +585,6 @@ exports.handleDialog = handleDialog;
506
585
  exports.handleMessage = handleMessage;
507
586
  exports.handlePageGoBack = handlePageGoBack;
508
587
  exports.handlePageJump = handlePageJump;
588
+ exports.handleTableChildRefresh = handleTableChildRefresh;
509
589
  exports.handleTableRefresh = handleTableRefresh;
590
+ exports.handleTableRowDelete = handleTableRowDelete;
@@ -73,4 +73,48 @@ function checkConditionMatch(condition, data, fields) {
73
73
  return dataValue == parsedValue;
74
74
  }
75
75
  }
76
+ function checkFieldInFilterConfig(filterConfig, fieldId) {
77
+ if (!fieldId) {
78
+ return true;
79
+ }
80
+ return checkFieldInGroup(filterConfig, fieldId);
81
+ }
82
+ function checkFieldInGroup(group, targetFieldId) {
83
+ const { conditions, groups } = group;
84
+ if (conditions && conditions.length > 0) {
85
+ const foundInConditions = conditions.some((cond) => cond.field === targetFieldId);
86
+ if (foundInConditions) {
87
+ return true;
88
+ }
89
+ }
90
+ if (groups && groups.length > 0) {
91
+ return groups.some((g) => checkFieldInGroup(g, targetFieldId));
92
+ }
93
+ return false;
94
+ }
95
+ function checkFieldInResultConfig(resultConfig, fieldId, fields = []) {
96
+ var _a, _b;
97
+ if (!fieldId || !Array.isArray(resultConfig)) {
98
+ return true;
99
+ }
100
+ let fieldName = fieldId;
101
+ if (fields && fields.length > 0) {
102
+ const field = fields.find((f) => f.id == fieldId);
103
+ if (field) {
104
+ fieldName = field.fieldName;
105
+ }
106
+ }
107
+ for (const item of resultConfig) {
108
+ if ((_b = (_a = item.formula) == null ? void 0 : _a.value) == null ? void 0 : _b.text) {
109
+ const formulaText = item.formula.value.text;
110
+ const fieldPattern = new RegExp(`\\{${fieldName}\\}`, "i");
111
+ if (fieldPattern.test(formulaText)) {
112
+ return true;
113
+ }
114
+ }
115
+ }
116
+ return false;
117
+ }
118
+ exports.checkFieldInFilterConfig = checkFieldInFilterConfig;
119
+ exports.checkFieldInResultConfig = checkFieldInResultConfig;
76
120
  exports.checkFilterMatch = checkFilterMatch;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fecp/designer",
3
- "version": "5.3.3",
3
+ "version": "5.3.5",
4
4
  "main": "lib/packages/designer/index.js",
5
5
  "module": "es/packages/designer/index.mjs",
6
6
  "files": [