@fecp/designer 5.3.13 → 5.3.15

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 (38) hide show
  1. package/es/designer.css +130 -52
  2. package/es/packages/designer/package.json.mjs +1 -1
  3. package/es/packages/designer/src/api/index.mjs +3 -3
  4. package/es/packages/designer/src/components/OnlyFLowConfigButton.vue2.mjs +8 -3
  5. package/es/packages/designer/src/packages/form/property/index.vue.mjs +6 -6
  6. package/es/packages/designer/src/packages/form/property/pageFooterBtn.vue.mjs +13 -1
  7. package/es/packages/designer/src/packages/form/property/subTable.vue.mjs +211 -57
  8. package/es/packages/designer/src/packages/form/property/widgets.vue.mjs +21 -4
  9. package/es/packages/vue/src/components/details/header/Header.vue.mjs +14 -6
  10. package/es/packages/vue/src/components/dialog/DialogRenderer.vue2.mjs +1 -1
  11. package/es/packages/vue/src/components/forms/checkbox/Checkbox.vue.mjs +2 -3
  12. package/es/packages/vue/src/components/forms/form/Form.vue.mjs +29 -4
  13. package/es/packages/vue/src/components/forms/radio/Radio.vue.mjs +2 -3
  14. package/es/packages/vue/src/components/forms/subTable/SubTable.vue.mjs +19 -22
  15. package/es/packages/vue/src/components/forms/text/Text.vue.mjs +1 -1
  16. package/es/packages/vue/src/components/table/Table.vue.mjs +15 -6
  17. package/es/packages/vue/src/components/table/TableColumn.vue.mjs +27 -17
  18. package/es/packages/vue/src/composables/usePageEvents.mjs +1 -1
  19. package/es/packages/vue/src/utils/datasource.mjs +1 -1
  20. package/lib/designer.css +130 -52
  21. package/lib/packages/designer/package.json.js +1 -1
  22. package/lib/packages/designer/src/api/index.js +3 -3
  23. package/lib/packages/designer/src/components/OnlyFLowConfigButton.vue2.js +8 -3
  24. package/lib/packages/designer/src/packages/form/property/pageFooterBtn.vue.js +13 -1
  25. package/lib/packages/designer/src/packages/form/property/subTable.vue.js +210 -56
  26. package/lib/packages/designer/src/packages/form/property/widgets.vue.js +44 -27
  27. package/lib/packages/vue/src/components/details/header/Header.vue.js +13 -5
  28. package/lib/packages/vue/src/components/dialog/DialogRenderer.vue2.js +1 -1
  29. package/lib/packages/vue/src/components/forms/checkbox/Checkbox.vue.js +2 -3
  30. package/lib/packages/vue/src/components/forms/form/Form.vue.js +29 -4
  31. package/lib/packages/vue/src/components/forms/radio/Radio.vue.js +2 -3
  32. package/lib/packages/vue/src/components/forms/subTable/SubTable.vue.js +19 -22
  33. package/lib/packages/vue/src/components/forms/text/Text.vue.js +1 -1
  34. package/lib/packages/vue/src/components/table/Table.vue.js +15 -6
  35. package/lib/packages/vue/src/components/table/TableColumn.vue.js +26 -16
  36. package/lib/packages/vue/src/composables/usePageEvents.js +1 -1
  37. package/lib/packages/vue/src/utils/datasource.js +1 -1
  38. package/package.json +1 -1
@@ -78,6 +78,10 @@ const _sfc_main = /* @__PURE__ */ Object.assign({
78
78
  initFormMode: {
79
79
  type: String,
80
80
  default: ""
81
+ },
82
+ isApproval: {
83
+ type: Boolean,
84
+ default: false
81
85
  }
82
86
  },
83
87
  emits: [
@@ -553,6 +557,24 @@ const _sfc_main = /* @__PURE__ */ Object.assign({
553
557
  (_a = button.eventConfig) == null ? void 0 : _a.find((item) => item.name == "Click")
554
558
  );
555
559
  };
560
+ const handleApprovalEvent = () => {
561
+ return new Promise((resolve, reject) => {
562
+ var _a, _b;
563
+ const actions = ((_a = localConfig.value.pageFooterConfig) == null ? void 0 : _a.actions) || [];
564
+ const approvalAction = actions.find((item) => item.isApproval);
565
+ if (approvalAction) {
566
+ handleEvent.value(
567
+ formData.value,
568
+ approvalAction,
569
+ (_b = approvalAction.eventConfig) == null ? void 0 : _b.find((item) => item.name == "Click")
570
+ ).then(() => {
571
+ resolve();
572
+ }).catch((error) => {
573
+ reject(error);
574
+ });
575
+ }
576
+ });
577
+ };
556
578
  const validate = () => {
557
579
  var _a;
558
580
  return (_a = formRef.value) == null ? void 0 : _a.validate();
@@ -889,6 +911,7 @@ const _sfc_main = /* @__PURE__ */ Object.assign({
889
911
  provide("gridLayoutFieldsData", gridLayoutFieldsData);
890
912
  provide("setFormItemHeight", setFormItemHeight);
891
913
  provide("formCtx", ctx);
914
+ provide("handleEvent", handleEvent);
892
915
  __expose({
893
916
  validate,
894
917
  resetFields,
@@ -896,7 +919,8 @@ const _sfc_main = /* @__PURE__ */ Object.assign({
896
919
  setFormData,
897
920
  getFormItemRef,
898
921
  formRef,
899
- localConfig
922
+ localConfig,
923
+ handleApprovalEvent
900
924
  });
901
925
  return (_ctx, _cache) => {
902
926
  const _component_el_form = ElForm;
@@ -912,8 +936,9 @@ const _sfc_main = /* @__PURE__ */ Object.assign({
912
936
  default: withCtx(() => [
913
937
  !configLoading.value && !__props.isSubForm && !__props.isDialog ? (openBlock(), createBlock(unref(header), {
914
938
  key: 0,
939
+ isApproval: __props.isApproval,
915
940
  pageHeaderConfig: localConfig.value.pageHeaderConfig
916
- }, null, 8, ["pageHeaderConfig"])) : createCommentVNode("", true),
941
+ }, null, 8, ["isApproval", "pageHeaderConfig"])) : createCommentVNode("", true),
917
942
  createVNode(unref(main), null, {
918
943
  default: withCtx(() => [
919
944
  createVNode(_component_el_form, {
@@ -968,7 +993,7 @@ const _sfc_main = /* @__PURE__ */ Object.assign({
968
993
  ]),
969
994
  _: 1
970
995
  }),
971
- !__props.isSubForm && !__props.isDialog ? (openBlock(), createBlock(unref(footer), {
996
+ !__props.isSubForm && !__props.isDialog && !__props.isApproval ? (openBlock(), createBlock(unref(footer), {
972
997
  key: 1,
973
998
  formMode: formMode.value,
974
999
  pageFooterConfig: localConfig.value.pageFooterConfig,
@@ -980,7 +1005,7 @@ const _sfc_main = /* @__PURE__ */ Object.assign({
980
1005
  };
981
1006
  }
982
1007
  });
983
- const _Form = /* @__PURE__ */ _export_sfc(_sfc_main, [["__scopeId", "data-v-884f35d8"]]);
1008
+ const _Form = /* @__PURE__ */ _export_sfc(_sfc_main, [["__scopeId", "data-v-bf001c7c"]]);
984
1009
  export {
985
1010
  _Form as default
986
1011
  };
@@ -64,9 +64,8 @@ const _sfc_main = /* @__PURE__ */ Object.assign({
64
64
  (openBlock(true), createElementBlock(Fragment, null, renderList(options.value, (option) => {
65
65
  return openBlock(), createBlock(_component_el_radio, {
66
66
  value: option.value,
67
- label: option.label,
68
- disabled: option.disabled
69
- }, null, 8, ["value", "label", "disabled"]);
67
+ label: option.label
68
+ }, null, 8, ["value", "label"]);
70
69
  }), 256))
71
70
  ]),
72
71
  _: 1
@@ -28,26 +28,6 @@ const _sfc_main = /* @__PURE__ */ Object.assign({
28
28
  type: String,
29
29
  default: ""
30
30
  }
31
- // subFormId: {
32
- // type: String,
33
- // required: true,
34
- // },
35
- // subFormKey: {
36
- // type: String,
37
- // default: "",
38
- // },
39
- // subFormName: {
40
- // type: String,
41
- // default: "",
42
- // },
43
- // dataSourceFrom: {
44
- // type: String,
45
- // default: "",
46
- // },
47
- // triggerSubFormPageEvent: {
48
- // type: Boolean,
49
- // default: false,
50
- // },
51
31
  },
52
32
  setup(__props, { expose: __expose }) {
53
33
  const props = __props;
@@ -55,6 +35,22 @@ const _sfc_main = /* @__PURE__ */ Object.assign({
55
35
  inject("rowHeight");
56
36
  inject("gridLayout");
57
37
  const setFormItemHeight = inject("setFormItemHeight");
38
+ const handleEvent = inject("handleEvent");
39
+ const btnRollbackEvent = computed(() => {
40
+ const btnRollback = props.config.btnRollback || [];
41
+ const data = {};
42
+ for (const item of btnRollback) {
43
+ const handleFunc = () => {
44
+ handleEvent.value(
45
+ formData.value,
46
+ {},
47
+ { eventFlow: item.callbackEventConfig }
48
+ );
49
+ };
50
+ data[item.id] = handleFunc;
51
+ }
52
+ return data;
53
+ });
58
54
  const subTableData = computed(() => {
59
55
  if (props.config.dataSourceFrom == "main") {
60
56
  return formData.value[props.config.fieldName];
@@ -202,8 +198,9 @@ const _sfc_main = /* @__PURE__ */ Object.assign({
202
198
  tableData: unref(subTableData),
203
199
  initHiddenData: unref(initHiddenData),
204
200
  canLoadBySearchData: __props.config.reloadOnParamsChange,
205
- readonly: __props.config.isSubTableReadOnly || __props.formMode == "query"
206
- }, null, 8, ["templateKey", "mode", "titleMode", "hasPagination", "height", "tableData", "initHiddenData", "canLoadBySearchData", "readonly"])
201
+ readonly: __props.config.isSubTableReadOnly || __props.formMode == "query",
202
+ btnRollbackEvent: unref(btnRollbackEvent)
203
+ }, null, 8, ["templateKey", "mode", "titleMode", "hasPagination", "height", "tableData", "initHiddenData", "canLoadBySearchData", "readonly", "btnRollbackEvent"])
207
204
  ], 64);
208
205
  };
209
206
  }
@@ -2,9 +2,9 @@
2
2
  /* empty css */
3
3
  /* empty css */
4
4
  import { computed, getCurrentInstance, inject, createElementBlock, openBlock, createVNode, createCommentVNode, mergeProps, toHandlers, createSlots, withCtx, createElementVNode, toDisplayString, createBlock, createTextVNode, unref } from "vue";
5
- /* empty css */
6
5
  /* empty css */
7
6
  /* empty css */
7
+ /* empty css */
8
8
  import { openDialog } from "../../dialog/index.mjs";
9
9
  import api from "../../../api/index.mjs";
10
10
  /* empty css */
@@ -98,6 +98,10 @@ const _sfc_main = /* @__PURE__ */ Object.assign({
98
98
  initHiddenData: {
99
99
  type: Object,
100
100
  default: {}
101
+ },
102
+ btnRollbackEvent: {
103
+ type: Object,
104
+ default: {}
101
105
  }
102
106
  },
103
107
  emits: [
@@ -291,7 +295,7 @@ const _sfc_main = /* @__PURE__ */ Object.assign({
291
295
  }
292
296
  };
293
297
  const handleFlowEvent = ref(null);
294
- const handleCustomBtnClick = ({ btn, event, type }) => {
298
+ const handleCustomBtnClick = async ({ btn, event, type }) => {
295
299
  var _a, _b;
296
300
  switch (btn.btnType) {
297
301
  case "refresh":
@@ -304,12 +308,16 @@ const _sfc_main = /* @__PURE__ */ Object.assign({
304
308
  handlePersonalize();
305
309
  break;
306
310
  default:
307
- (_b = handleFlowEvent.value) == null ? void 0 : _b.call(
311
+ await ((_b = handleFlowEvent.value) == null ? void 0 : _b.call(
308
312
  handleFlowEvent,
309
313
  hiddenFormData.value,
310
314
  btn,
311
315
  (_a = btn.eventConfig) == null ? void 0 : _a.find((item) => item.name == "Click")
312
- );
316
+ ));
317
+ const handleFunc = props.btnRollbackEvent[btn.id];
318
+ if (handleFunc && typeof handleFunc == "function") {
319
+ handleFunc();
320
+ }
313
321
  }
314
322
  };
315
323
  const handleSortChange = ({ property, order }) => {
@@ -622,7 +630,8 @@ const _sfc_main = /* @__PURE__ */ Object.assign({
622
630
  "table-data": displayData.value,
623
631
  readonly: __props.readonly,
624
632
  isDialog: __props.isDialog,
625
- hiddenFormData: hiddenFormData.value
633
+ hiddenFormData: hiddenFormData.value,
634
+ btnRollbackEvent: __props.btnRollbackEvent
626
635
  }, createSlots({ _: 2 }, [
627
636
  renderList(fieldsData.value, (field) => {
628
637
  return {
@@ -632,7 +641,7 @@ const _sfc_main = /* @__PURE__ */ Object.assign({
632
641
  ])
633
642
  };
634
643
  })
635
- ]), 1032, ["fields-data", "show-index", "select-mode", "is-opt-btns", "opt-btns", "mode-key", "modes", "data-source-options", "dictionary-options", "localConfig", "table-ref", "table-data", "readonly", "isDialog", "hiddenFormData"])
644
+ ]), 1032, ["fields-data", "show-index", "select-mode", "is-opt-btns", "opt-btns", "mode-key", "modes", "data-source-options", "dictionary-options", "localConfig", "table-ref", "table-data", "readonly", "isDialog", "hiddenFormData", "btnRollbackEvent"])
636
645
  ];
637
646
  }),
638
647
  _: 3
@@ -651,7 +660,7 @@ const _sfc_main = /* @__PURE__ */ Object.assign({
651
660
  };
652
661
  }
653
662
  });
654
- const _Table = /* @__PURE__ */ _export_sfc(_sfc_main, [["__scopeId", "data-v-fa5e2171"]]);
663
+ const _Table = /* @__PURE__ */ _export_sfc(_sfc_main, [["__scopeId", "data-v-3c129bed"]]);
655
664
  export {
656
665
  _Table as default
657
666
  };
@@ -1,14 +1,14 @@
1
1
  /* empty css */
2
2
  /* empty css */
3
3
  /* empty css */
4
- import { getCurrentInstance, computed, createElementBlock, openBlock, createBlock, createCommentVNode, unref, Fragment, renderList, withCtx, renderSlot, toDisplayString, mergeProps, toHandlers, createTextVNode, createVNode } from "vue";
4
+ import { getCurrentInstance, computed, createElementBlock, openBlock, createBlock, createCommentVNode, unref, Fragment, renderList, withCtx, renderSlot, toDisplayString, createTextVNode, createVNode } from "vue";
5
5
  import "../../../../../node_modules/.pnpm/vxe-table@4.17.47_vue@3.5.13_typescript@5.7.3_/node_modules/vxe-table/es/components.mjs";
6
6
  import { CopyDocument as copy_document_default } from "../../../../../node_modules/.pnpm/@element-plus_icons-vue@2.3.2_vue@3.5.13_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/index.mjs";
7
7
  import { checkFilterMatch } from "../../utils/parseFilterConfig.mjs";
8
8
  import { removeEmptyValues } from "../../utils/common.mjs";
9
- /* empty css */
10
9
  /* empty css */
11
10
  /* empty css */
11
+ /* empty css */
12
12
  /* empty css */
13
13
  /* empty css */
14
14
  import "./index.mjs";
@@ -103,6 +103,10 @@ const _sfc_main = {
103
103
  hiddenFormData: {
104
104
  type: Object,
105
105
  default: {}
106
+ },
107
+ btnRollbackEvent: {
108
+ type: Object,
109
+ default: {}
106
110
  }
107
111
  },
108
112
  setup(__props) {
@@ -269,7 +273,7 @@ const _sfc_main = {
269
273
  );
270
274
  return Math.max(maxVisibleBtns, 1) * btnWidth + padding;
271
275
  });
272
- const { getEventHandlers: createEventHandlers } = useEventFlow({
276
+ const { handleEvent } = useEventFlow({
273
277
  fields: props.fieldsData,
274
278
  instance,
275
279
  localConfig: props.localConfig,
@@ -277,13 +281,17 @@ const _sfc_main = {
277
281
  table: props.tableRef
278
282
  }
279
283
  });
280
- const getEventHandlers = (row, item, eventConfig) => {
281
- return createEventHandlers(
282
- item,
284
+ async function handleButtonClick(row, btn, eventConfig) {
285
+ await handleEvent(
283
286
  { ...row, ...removeEmptyValues(props.hiddenFormData) },
284
- eventConfig
287
+ btn,
288
+ eventConfig == null ? void 0 : eventConfig.find((item) => item.name == "Click")
285
289
  );
286
- };
290
+ const handleFunc = props.btnRollbackEvent[btn.id];
291
+ if (handleFunc && typeof handleFunc == "function") {
292
+ handleFunc();
293
+ }
294
+ }
287
295
  return (_ctx, _cache) => {
288
296
  const _component_el_link = ElLink;
289
297
  const _component_el_icon = ElIcon;
@@ -333,15 +341,16 @@ const _sfc_main = {
333
341
  field
334
342
  }, () => [
335
343
  field.prefix ? (openBlock(), createElementBlock("span", _hoisted_2, toDisplayString(field.prefix), 1)) : createCommentVNode("", true),
336
- field.isLink ? (openBlock(), createBlock(_component_el_link, mergeProps({
344
+ field.isLink ? (openBlock(), createBlock(_component_el_link, {
337
345
  key: 1,
338
- type: "primary"
339
- }, toHandlers(getEventHandlers(row, field, field.linkConfig))), {
346
+ type: "primary",
347
+ onClick: ($event) => handleButtonClick(row, field, field.linkConfig)
348
+ }, {
340
349
  default: withCtx(() => [
341
350
  createTextVNode(toDisplayString(formatCellValue(row, field)), 1)
342
351
  ]),
343
352
  _: 2
344
- }, 1040)) : (openBlock(), createElementBlock(Fragment, { key: 2 }, [
353
+ }, 1032, ["onClick"])) : (openBlock(), createElementBlock(Fragment, { key: 2 }, [
345
354
  createTextVNode(toDisplayString(formatCellValue(row, field)), 1)
346
355
  ], 64)),
347
356
  field.suffix ? (openBlock(), createElementBlock("span", _hoisted_3, toDisplayString(field.suffix), 1)) : createCommentVNode("", true),
@@ -369,17 +378,18 @@ const _sfc_main = {
369
378
  }, {
370
379
  default: withCtx(({ row }) => [
371
380
  (openBlock(true), createElementBlock(Fragment, null, renderList(getVisibleOptBtns(row), (btn) => {
372
- return openBlock(), createBlock(_component_el_button, mergeProps({
381
+ return openBlock(), createBlock(_component_el_button, {
373
382
  key: btn.id,
374
383
  type: "primary",
375
384
  link: "",
376
- disabled: isBtnDisabled(row, btn)
377
- }, toHandlers(getEventHandlers(row, btn, btn.eventConfig))), {
385
+ disabled: isBtnDisabled(row, btn),
386
+ onClick: ($event) => handleButtonClick(row, btn, btn.eventConfig)
387
+ }, {
378
388
  default: withCtx(() => [
379
389
  createTextVNode(toDisplayString(btn.label), 1)
380
390
  ]),
381
391
  _: 2
382
- }, 1040, ["disabled"]);
392
+ }, 1032, ["disabled", "onClick"]);
383
393
  }), 128))
384
394
  ]),
385
395
  _: 1
@@ -388,7 +398,7 @@ const _sfc_main = {
388
398
  };
389
399
  }
390
400
  };
391
- const TableColumn = /* @__PURE__ */ _export_sfc(_sfc_main, [["__scopeId", "data-v-2352d631"]]);
401
+ const TableColumn = /* @__PURE__ */ _export_sfc(_sfc_main, [["__scopeId", "data-v-77ad8323"]]);
392
402
  export {
393
403
  TableColumn as default
394
404
  };
@@ -1,8 +1,8 @@
1
1
  import { onUnmounted, onBeforeUnmount, onMounted } from "vue";
2
2
  /* empty css */
3
- /* empty css */
4
3
  /* empty css */
5
4
  /* empty css */
5
+ /* empty css */
6
6
  /* empty css */
7
7
  /* empty css */
8
8
  /* empty css */
@@ -1,9 +1,9 @@
1
1
  import { reactive } from "vue";
2
2
  import { parseRouteParams } from "./parseRouteParams.mjs";
3
3
  /* empty css */
4
- /* empty css */
5
4
  /* empty css */
6
5
  /* empty css */
6
+ /* empty css */
7
7
  import { ElLoading } from "../../../../node_modules/.pnpm/element-plus@2.13.2_vue@3.5.13_typescript@5.7.3_/node_modules/element-plus/es/components/loading/index.mjs";
8
8
  import { ElMessage } from "../../../../node_modules/.pnpm/element-plus@2.13.2_vue@3.5.13_typescript@5.7.3_/node_modules/element-plus/es/components/message/index.mjs";
9
9
  class DataSourceManager {