@fecp/designer 5.3.5 → 5.3.7

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 (52) hide show
  1. package/es/designer.css +197 -240
  2. package/es/node_modules/.pnpm/element-plus@2.13.2_vue@3.5.13_typescript@5.7.3_/node_modules/element-plus/es/components/config-provider/src/hooks/use-global-config.mjs +1 -1
  3. package/es/packages/designer/package.json.mjs +1 -1
  4. package/es/packages/designer/src/components/FilterConfigDisplay.vue.mjs +2 -3
  5. package/es/packages/designer/src/components/FormulaEditorInput.vue.mjs +33 -8
  6. package/es/packages/designer/src/components/ValueSelectorPopover.vue2.mjs +62 -39
  7. package/es/packages/designer/src/layout/aside/HiddenFieldDialog.vue.mjs +3 -3
  8. package/es/packages/designer/src/layout/header/index.vue.mjs +1 -1
  9. package/es/packages/designer/src/packages/advancedFilter/AdvancedFilter.vue2.mjs +4 -4
  10. package/es/packages/designer/src/packages/advancedFilter/ValueInput.vue2.mjs +34 -28
  11. package/es/packages/designer/src/packages/dataLinkage/index.vue.mjs +75 -69
  12. package/es/packages/designer/src/packages/dialogGlobal/index.vue.mjs +1 -0
  13. package/es/packages/designer/src/packages/eventFlow/dialog/action/Dialog.vue.mjs +49 -11
  14. package/es/packages/designer/src/packages/eventFlow/dialog/action/config.mjs +2 -2
  15. package/es/packages/designer/src/packages/form/aside/index.mjs +1 -0
  16. package/es/packages/designer/src/packages/form/components/SubForm.vue.mjs +33 -7
  17. package/es/packages/designer/src/packages/form/index.vue.mjs +15 -2
  18. package/es/packages/designer/src/packages/form/property/subForm.vue.mjs +53 -11
  19. package/es/packages/designer/src/packages/formulaEditor/components/FieldVariable.vue2.mjs +3 -2
  20. package/es/packages/designer/src/packages/table/headerBtn.vue.mjs +1 -0
  21. package/es/packages/vue/src/components/bus/approvalHistory/ApprovalHistory.vue.mjs +2 -2
  22. package/es/packages/vue/src/components/forms/form/Form.vue.mjs +35 -12
  23. package/es/packages/vue/src/components/forms/form/validation.mjs +18 -6
  24. package/es/packages/vue/src/components/forms/subForm/SubForm.vue.mjs +33 -5
  25. package/es/packages/vue/src/components/forms/subTable/SubTable.vue.mjs +1 -1
  26. package/es/packages/vue/src/utils/eventFlow/actionHandlers.mjs +10 -3
  27. package/lib/designer.css +197 -240
  28. package/lib/packages/designer/package.json.js +1 -1
  29. package/lib/packages/designer/src/components/FilterConfigDisplay.vue.js +2 -3
  30. package/lib/packages/designer/src/components/FormulaEditorInput.vue.js +32 -7
  31. package/lib/packages/designer/src/components/ValueSelectorPopover.vue2.js +68 -45
  32. package/lib/packages/designer/src/layout/aside/HiddenFieldDialog.vue.js +3 -3
  33. package/lib/packages/designer/src/layout/header/index.vue.js +1 -1
  34. package/lib/packages/designer/src/packages/advancedFilter/AdvancedFilter.vue2.js +4 -4
  35. package/lib/packages/designer/src/packages/advancedFilter/ValueInput.vue2.js +34 -28
  36. package/lib/packages/designer/src/packages/dataLinkage/index.vue.js +75 -69
  37. package/lib/packages/designer/src/packages/dialogGlobal/index.vue.js +1 -0
  38. package/lib/packages/designer/src/packages/eventFlow/dialog/action/Dialog.vue.js +48 -10
  39. package/lib/packages/designer/src/packages/eventFlow/dialog/action/config.js +2 -2
  40. package/lib/packages/designer/src/packages/form/aside/index.js +1 -0
  41. package/lib/packages/designer/src/packages/form/components/SubForm.vue.js +33 -7
  42. package/lib/packages/designer/src/packages/form/index.vue.js +15 -2
  43. package/lib/packages/designer/src/packages/form/property/subForm.vue.js +53 -11
  44. package/lib/packages/designer/src/packages/formulaEditor/components/FieldVariable.vue2.js +3 -2
  45. package/lib/packages/designer/src/packages/table/headerBtn.vue.js +1 -0
  46. package/lib/packages/vue/src/components/bus/approvalHistory/ApprovalHistory.vue.js +2 -2
  47. package/lib/packages/vue/src/components/forms/form/Form.vue.js +47 -24
  48. package/lib/packages/vue/src/components/forms/form/validation.js +18 -6
  49. package/lib/packages/vue/src/components/forms/subForm/SubForm.vue.js +32 -4
  50. package/lib/packages/vue/src/components/forms/subTable/SubTable.vue.js +1 -1
  51. package/lib/packages/vue/src/utils/eventFlow/actionHandlers.js +10 -3
  52. package/package.json +1 -1
@@ -127,8 +127,12 @@ const _sfc_main = {
127
127
  desc: "让字段在特定条件成立时显示,反之隐藏"
128
128
  },
129
129
  { label: "必填", name: "required", desc: "让字段在特定条件成立时变为必填" },
130
- { label: "只读", name: "readonly", desc: "让字段在特定条件成立时变为只读" },
131
- { label: "禁用", name: "disabled", desc: "让字段在特定条件成立时变为禁用" },
130
+ {
131
+ label: "只读",
132
+ name: "disabled",
133
+ desc: "让字段在特定条件成立时变为不可编辑"
134
+ },
135
+ // { label: "禁用", name: "disabled", desc: "让字段在特定条件成立时变为禁用" },
132
136
  { label: "属性", name: "property", desc: "让字段的其他属性根据条件动态变化" }
133
137
  ]);
134
138
  const activeTab = vue.ref("dataLink");
@@ -140,14 +144,14 @@ const _sfc_main = {
140
144
  const editingRuleIndex = vue.ref(-1);
141
145
  const fieldAssignments = vue.ref([]);
142
146
  const filterTitle = vue.ref("");
143
- const filterSuccessDesc = vue.ref("条件满足时,数据联动赋值以下字段");
147
+ const filterSuccessDesc = vue.ref("条件满足时或不设置条件,数据联动赋值以下字段");
144
148
  function handleAddRule(tab) {
145
149
  const name = tab.name;
146
150
  filterTitle.value = `${tab.label}联动规则`;
147
151
  editingRuleIndex.value = -1;
148
152
  switch (name) {
149
153
  case "dataLink":
150
- filterSuccessDesc.value = `条件满足时,数据联动赋值以下字段`;
154
+ filterSuccessDesc.value = `条件满足时或不设置条件,数据联动赋值以下字段`;
151
155
  break;
152
156
  case "visibility":
153
157
  filterSuccessDesc.value = `条件满足时,显示以下字段`;
@@ -323,68 +327,71 @@ const _sfc_main = {
323
327
  class: "rule-card",
324
328
  shadow: "hover"
325
329
  }, {
326
- default: vue.withCtx(() => [
327
- vue.createElementVNode("div", _hoisted_5, [
328
- vue.createElementVNode("div", _hoisted_6, [
329
- vue.createVNode(_component_el_button, {
330
- type: "primary",
331
- link: "",
332
- size: "small",
333
- onClick: ($event) => handleEditRule(tab, item, idx)
334
- }, {
335
- default: vue.withCtx(() => _cache[3] || (_cache[3] = [
336
- vue.createTextVNode(" 编辑 ")
337
- ])),
338
- _: 2
339
- }, 1032, ["onClick"]),
340
- vue.createVNode(_component_el_button, {
341
- type: "danger",
342
- link: "",
343
- size: "small",
344
- onClick: ($event) => handleDeleteRule(tab, idx)
345
- }, {
346
- default: vue.withCtx(() => _cache[4] || (_cache[4] = [
347
- vue.createTextVNode(" 删除 ")
348
- ])),
349
- _: 2
350
- }, 1032, ["onClick"])
351
- ]),
352
- item.filterConfig ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_7, [
353
- _cache[5] || (_cache[5] = vue.createElementVNode("div", { class: "rule-section-title" }, "触发条件", -1)),
354
- vue.createElementVNode("div", _hoisted_8, [
355
- vue.createElementVNode("div", _hoisted_9, [
356
- vue.createVNode(FilterConfigDisplay.default, {
357
- config: item.filterConfig,
358
- "field-label-getter": getFieldLabel
359
- }, null, 8, ["config"])
330
+ default: vue.withCtx(() => {
331
+ var _a3;
332
+ return [
333
+ vue.createElementVNode("div", _hoisted_5, [
334
+ vue.createElementVNode("div", _hoisted_6, [
335
+ vue.createVNode(_component_el_button, {
336
+ type: "primary",
337
+ link: "",
338
+ size: "small",
339
+ onClick: ($event) => handleEditRule(tab, item, idx)
340
+ }, {
341
+ default: vue.withCtx(() => _cache[3] || (_cache[3] = [
342
+ vue.createTextVNode(" 编辑 ")
343
+ ])),
344
+ _: 2
345
+ }, 1032, ["onClick"]),
346
+ vue.createVNode(_component_el_button, {
347
+ type: "danger",
348
+ link: "",
349
+ size: "small",
350
+ onClick: ($event) => handleDeleteRule(tab, idx)
351
+ }, {
352
+ default: vue.withCtx(() => _cache[4] || (_cache[4] = [
353
+ vue.createTextVNode(" 删除 ")
354
+ ])),
355
+ _: 2
356
+ }, 1032, ["onClick"])
357
+ ]),
358
+ item.filterConfig && ((_a3 = item.filterConfig.conditions) == null ? void 0 : _a3.length) ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_7, [
359
+ _cache[5] || (_cache[5] = vue.createElementVNode("div", { class: "rule-section-title" }, "触发条件", -1)),
360
+ vue.createElementVNode("div", _hoisted_8, [
361
+ vue.createElementVNode("div", _hoisted_9, [
362
+ vue.createVNode(FilterConfigDisplay.default, {
363
+ config: item.filterConfig,
364
+ "field-label-getter": getFieldLabel
365
+ }, null, 8, ["config"])
366
+ ])
367
+ ])
368
+ ])) : vue.createCommentVNode("", true),
369
+ vue.createElementVNode("div", _hoisted_10, [
370
+ vue.createElementVNode("div", _hoisted_11, vue.toDisplayString(getFieldTitle(tab.name)), 1),
371
+ vue.createElementVNode("div", _hoisted_12, [
372
+ tab.name === "dataLink" && item.fieldAssignments && item.fieldAssignments.length > 0 ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_13, [
373
+ (vue.openBlock(true), vue.createElementBlock(vue.Fragment, null, vue.renderList(item.fieldAssignments, (assignment, index2) => {
374
+ return vue.openBlock(), vue.createElementBlock("div", {
375
+ key: index2,
376
+ class: "field-assignment-display-item"
377
+ }, [
378
+ vue.createElementVNode("span", _hoisted_14, "「" + vue.toDisplayString(getFieldLabel(assignment.fieldId)) + "」", 1),
379
+ _cache[6] || (_cache[6] = vue.createElementVNode("span", { class: "field-operator" }, "=", -1)),
380
+ vue.createElementVNode("span", _hoisted_15, [
381
+ assignment.isField ? (vue.openBlock(), vue.createElementBlock(vue.Fragment, { key: 0 }, [
382
+ vue.createTextVNode(" 「" + vue.toDisplayString(getFieldLabel(assignment.value)) + "」 ", 1)
383
+ ], 64)) : (vue.openBlock(), vue.createElementBlock(vue.Fragment, { key: 1 }, [
384
+ vue.createTextVNode(vue.toDisplayString(formatFormulaText(assignment)), 1)
385
+ ], 64))
386
+ ])
387
+ ]);
388
+ }), 128))
389
+ ])) : (vue.openBlock(), vue.createElementBlock("span", _hoisted_16, vue.toDisplayString(item.dataLinkFieldList.map((fieldId) => `${getFieldLabel(fieldId)}`).join(", ")), 1))
360
390
  ])
361
- ])
362
- ])) : vue.createCommentVNode("", true),
363
- vue.createElementVNode("div", _hoisted_10, [
364
- vue.createElementVNode("div", _hoisted_11, vue.toDisplayString(getFieldTitle(tab.name)), 1),
365
- vue.createElementVNode("div", _hoisted_12, [
366
- tab.name === "dataLink" && item.fieldAssignments && item.fieldAssignments.length > 0 ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_13, [
367
- (vue.openBlock(true), vue.createElementBlock(vue.Fragment, null, vue.renderList(item.fieldAssignments, (assignment, index2) => {
368
- return vue.openBlock(), vue.createElementBlock("div", {
369
- key: index2,
370
- class: "field-assignment-display-item"
371
- }, [
372
- vue.createElementVNode("span", _hoisted_14, "「" + vue.toDisplayString(getFieldLabel(assignment.fieldId)) + "」", 1),
373
- _cache[6] || (_cache[6] = vue.createElementVNode("span", { class: "field-operator" }, "=", -1)),
374
- vue.createElementVNode("span", _hoisted_15, [
375
- assignment.isField ? (vue.openBlock(), vue.createElementBlock(vue.Fragment, { key: 0 }, [
376
- vue.createTextVNode(" 「" + vue.toDisplayString(getFieldLabel(assignment.value)) + "」 ", 1)
377
- ], 64)) : (vue.openBlock(), vue.createElementBlock(vue.Fragment, { key: 1 }, [
378
- vue.createTextVNode(vue.toDisplayString(formatFormulaText(assignment)), 1)
379
- ], 64))
380
- ])
381
- ]);
382
- }), 128))
383
- ])) : (vue.openBlock(), vue.createElementBlock("span", _hoisted_16, vue.toDisplayString(item.dataLinkFieldList.map((fieldId) => `${getFieldLabel(fieldId)}`).join(", ")), 1))
384
391
  ])
385
392
  ])
386
- ])
387
- ]),
393
+ ];
394
+ }),
388
395
  _: 2
389
396
  }, 1024);
390
397
  }), 128))
@@ -435,7 +442,7 @@ const _sfc_main = {
435
442
  title: vue.unref(filterTitle)
436
443
  }, {
437
444
  default: vue.withCtx(({ filterConfigData }) => {
438
- var _a, _b, _c;
445
+ var _a, _b;
439
446
  return [
440
447
  vue.createElementVNode("span", _hoisted_18, vue.toDisplayString(vue.unref(filterSuccessDesc)), 1),
441
448
  vue.unref(currentTab).name !== "dataLink" ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_19, [
@@ -530,14 +537,13 @@ const _sfc_main = {
530
537
  link: "",
531
538
  icon: "CirclePlus",
532
539
  onClick: addFieldAssignment,
533
- class: "add-assignment-btn",
534
- disabled: !filterConfigData || ((_c = filterConfigData.conditions) == null ? void 0 : _c.length) === 0
540
+ class: "add-assignment-btn"
535
541
  }, {
536
542
  default: vue.withCtx(() => _cache[7] || (_cache[7] = [
537
543
  vue.createTextVNode(" 添加字段赋值 ")
538
544
  ])),
539
- _: 2
540
- }, 1032, ["disabled"])
545
+ _: 1
546
+ })
541
547
  ]))
542
548
  ];
543
549
  }),
@@ -547,5 +553,5 @@ const _sfc_main = {
547
553
  };
548
554
  }
549
555
  };
550
- const DataLinkage = /* @__PURE__ */ _pluginVue_exportHelper.default(_sfc_main, [["__scopeId", "data-v-57b0714c"]]);
556
+ const DataLinkage = /* @__PURE__ */ _pluginVue_exportHelper.default(_sfc_main, [["__scopeId", "data-v-2626b920"]]);
551
557
  exports.default = DataLinkage;
@@ -75,6 +75,7 @@ require("../../../../../node_modules/.pnpm/element-plus@2.13.2_vue@3.5.13_typesc
75
75
  ;/* empty css */
76
76
  ;/* empty css */
77
77
  require("../../../../../node_modules/.pnpm/element-plus@2.13.2_vue@3.5.13_typescript@5.7.3_/node_modules/element-plus/theme-chalk/el-tab-pane.css.js");
78
+ ;/* empty css */
78
79
  ;/* empty css */
79
80
  ;/* empty css */
80
81
  require("../../axios/config.js");
@@ -61,6 +61,11 @@ const _sfc_main = {
61
61
  },
62
62
  { immediate: true }
63
63
  );
64
+ function handleDialogSourceChange() {
65
+ props.formData.dialogId = null;
66
+ currDialog.value = {};
67
+ tableOptions.value = null;
68
+ }
64
69
  const handleDialogChange = async (dialogId) => {
65
70
  if (!dialogId) {
66
71
  currDialog.value = {};
@@ -83,6 +88,8 @@ const _sfc_main = {
83
88
  console.error("🚀 ~ 获取表格配置失败:", error);
84
89
  }
85
90
  }
91
+ } else if (currDialog.value.contentSource === "form") {
92
+ props.formData.subFormMode = currDialog.value.subFormMode;
86
93
  } else {
87
94
  tableOptions.value = null;
88
95
  }
@@ -122,17 +129,18 @@ const _sfc_main = {
122
129
  default: vue.withCtx(() => [
123
130
  vue.createVNode(_component_el_radio_group, {
124
131
  modelValue: __props.formData.dialogSource,
125
- "onUpdate:modelValue": _cache[0] || (_cache[0] = ($event) => __props.formData.dialogSource = $event)
132
+ "onUpdate:modelValue": _cache[0] || (_cache[0] = ($event) => __props.formData.dialogSource = $event),
133
+ onChange: handleDialogSourceChange
126
134
  }, {
127
135
  default: vue.withCtx(() => [
128
136
  vue.createVNode(_component_el_radio_button, { value: "global" }, {
129
- default: vue.withCtx(() => _cache[7] || (_cache[7] = [
137
+ default: vue.withCtx(() => _cache[8] || (_cache[8] = [
130
138
  vue.createTextVNode("全局")
131
139
  ])),
132
140
  _: 1
133
141
  }),
134
142
  vue.createVNode(_component_el_radio_button, { value: "custom" }, {
135
- default: vue.withCtx(() => _cache[8] || (_cache[8] = [
143
+ default: vue.withCtx(() => _cache[9] || (_cache[9] = [
136
144
  vue.createTextVNode("自定义")
137
145
  ])),
138
146
  _: 1
@@ -169,7 +177,7 @@ const _sfc_main = {
169
177
  ]),
170
178
  _: 1
171
179
  }),
172
- __props.formData.dialogSource == "global" && __props.formData.dialogId ? (vue.openBlock(), vue.createElementBlock(vue.Fragment, { key: 0 }, [
180
+ __props.formData.dialogSource == "global" && __props.formData.dialogId && currDialog.value.contentSource == "table" ? (vue.openBlock(), vue.createElementBlock(vue.Fragment, { key: 0 }, [
173
181
  vue.createVNode(_component_el_form_item, { label: "选择模式" }, {
174
182
  default: vue.withCtx(() => [
175
183
  vue.createVNode(_component_el_radio_group, {
@@ -178,19 +186,19 @@ const _sfc_main = {
178
186
  }, {
179
187
  default: vue.withCtx(() => [
180
188
  vue.createVNode(_component_el_radio_button, { value: "none" }, {
181
- default: vue.withCtx(() => _cache[9] || (_cache[9] = [
189
+ default: vue.withCtx(() => _cache[10] || (_cache[10] = [
182
190
  vue.createTextVNode("无")
183
191
  ])),
184
192
  _: 1
185
193
  }),
186
194
  vue.createVNode(_component_el_radio_button, { value: "single" }, {
187
- default: vue.withCtx(() => _cache[10] || (_cache[10] = [
195
+ default: vue.withCtx(() => _cache[11] || (_cache[11] = [
188
196
  vue.createTextVNode("单选")
189
197
  ])),
190
198
  _: 1
191
199
  }),
192
200
  vue.createVNode(_component_el_radio_button, { value: "multiple" }, {
193
- default: vue.withCtx(() => _cache[11] || (_cache[11] = [
201
+ default: vue.withCtx(() => _cache[12] || (_cache[12] = [
194
202
  vue.createTextVNode("多选")
195
203
  ])),
196
204
  _: 1
@@ -238,7 +246,10 @@ const _sfc_main = {
238
246
  _: 1
239
247
  })
240
248
  ], 64)) : vue.createCommentVNode("", true),
241
- vue.createVNode(_component_el_form_item, { label: "回调事件配置" }, {
249
+ __props.formData.selectionMode != "none" ? (vue.openBlock(), vue.createBlock(_component_el_form_item, {
250
+ key: 1,
251
+ label: "回调事件配置"
252
+ }, {
242
253
  default: vue.withCtx(() => [
243
254
  vue.createVNode(OnlyFLowConfigButton.default, {
244
255
  config: __props.formData.callbackEventConfig,
@@ -246,8 +257,35 @@ const _sfc_main = {
246
257
  }, null, 8, ["config"])
247
258
  ]),
248
259
  _: 1
249
- })
250
- ], 64)) : vue.createCommentVNode("", true)
260
+ })) : vue.createCommentVNode("", true)
261
+ ], 64)) : currDialog.value.contentSource == "form" ? (vue.openBlock(), vue.createBlock(_component_el_form_item, {
262
+ key: 1,
263
+ label: "表单模式"
264
+ }, {
265
+ default: vue.withCtx(() => [
266
+ vue.createVNode(_component_el_radio_group, {
267
+ modelValue: __props.formData.subFormMode,
268
+ "onUpdate:modelValue": _cache[7] || (_cache[7] = ($event) => __props.formData.subFormMode = $event)
269
+ }, {
270
+ default: vue.withCtx(() => [
271
+ vue.createVNode(_component_el_radio_button, { value: "edit" }, {
272
+ default: vue.withCtx(() => _cache[13] || (_cache[13] = [
273
+ vue.createTextVNode("编辑")
274
+ ])),
275
+ _: 1
276
+ }),
277
+ vue.createVNode(_component_el_radio_button, { value: "query" }, {
278
+ default: vue.withCtx(() => _cache[14] || (_cache[14] = [
279
+ vue.createTextVNode("查看")
280
+ ])),
281
+ _: 1
282
+ })
283
+ ]),
284
+ _: 1
285
+ }, 8, ["modelValue"])
286
+ ]),
287
+ _: 1
288
+ })) : vue.createCommentVNode("", true)
251
289
  ], 64);
252
290
  };
253
291
  }
@@ -59,8 +59,8 @@ const menuData = [
59
59
  index: "form",
60
60
  label: "表单",
61
61
  items: [
62
- { index: "form-setValue", label: "表单赋值", desc: "设置表单字段的值", component: FormSetValue.default, default: { fieldMapping: [] } },
63
- { index: "form-submit", label: "表单提交", desc: "提交表单数据", component: FormSubmit.default, default: { formValidate: true, fieldMapping: [], extraParams: [] } }
62
+ { index: "form-setValue", label: "请求表单赋值", desc: "通过请求设置表单字段的值", component: FormSetValue.default, default: { fieldMapping: [] } },
63
+ { index: "form-submit", label: "请求表单提交", desc: "提交表单数据到后台服务", component: FormSubmit.default, default: { formValidate: true, fieldMapping: [], extraParams: [] } }
64
64
  ]
65
65
  },
66
66
  {
@@ -102,6 +102,7 @@ const components = [
102
102
  label: "子表单",
103
103
  titleMode: "none",
104
104
  dataSourceFrom: "main",
105
+ formSource: "select",
105
106
  ...defaultProperty
106
107
  },
107
108
  {
@@ -6,7 +6,6 @@ const index$1 = require("../../../../../../node_modules/.pnpm/@element-plus_icon
6
6
  const H2Wrapper = require("./H2Wrapper.vue.js");
7
7
  const SubTitle = require("./SubTitle.vue.js");
8
8
  ;/* empty css */
9
- ;/* empty css */
10
9
  const _pluginVue_exportHelper = require("../../../../../../_virtual/_plugin-vue_export-helper.js");
11
10
  const index = require("../../../../../../node_modules/.pnpm/element-plus@2.13.2_vue@3.5.13_typescript@5.7.3_/node_modules/element-plus/es/components/icon/index.js");
12
11
  const _hoisted_1 = { class: "sub-form-container" };
@@ -41,13 +40,40 @@ const _sfc_main = {
41
40
  const mode = ((_a = props.componentData) == null ? void 0 : _a.titleMode) || "none";
42
41
  return mode;
43
42
  });
44
- const formName = vue.computed(() => {
43
+ const formSource = vue.computed(() => {
45
44
  var _a;
46
- return ((_a = props.componentData) == null ? void 0 : _a.subFormName) || "";
45
+ return ((_a = props.componentData) == null ? void 0 : _a.formSource) || "select";
46
+ });
47
+ const formName = vue.computed(() => {
48
+ var _a, _b;
49
+ if (formSource.value === "select") {
50
+ return ((_a = props.componentData) == null ? void 0 : _a.subFormName) || "";
51
+ } else if (formSource.value === "dynamic") {
52
+ const dynamicValue = (_b = props.componentData) == null ? void 0 : _b.dynamicSubFormKey;
53
+ if (dynamicValue && typeof dynamicValue === "object" && dynamicValue !== null) {
54
+ return dynamicValue.label || "";
55
+ }
56
+ return dynamicValue || "";
57
+ }
58
+ return "";
47
59
  });
48
60
  const formKey = vue.computed(() => {
49
61
  var _a;
50
- return ((_a = props.componentData) == null ? void 0 : _a.subFormKey) || "";
62
+ if (formSource.value === "select") {
63
+ return ((_a = props.componentData) == null ? void 0 : _a.subFormKey) || "";
64
+ } else if (formSource.value === "dynamic") {
65
+ return "动态表单";
66
+ }
67
+ return "";
68
+ });
69
+ const hasForm = vue.computed(() => {
70
+ var _a, _b;
71
+ if (formSource.value === "select") {
72
+ return !!((_a = props.componentData) == null ? void 0 : _a.subFormName);
73
+ } else if (formSource.value === "dynamic") {
74
+ return !!((_b = props.componentData) == null ? void 0 : _b.dynamicSubFormKey);
75
+ }
76
+ return false;
51
77
  });
52
78
  return (_ctx, _cache) => {
53
79
  const _component_el_icon = index.ElIcon;
@@ -62,9 +88,9 @@ const _sfc_main = {
62
88
  }, null, 8, ["componentData"])) : vue.createCommentVNode("", true)
63
89
  ])) : vue.createCommentVNode("", true),
64
90
  vue.createElementVNode("div", {
65
- class: vue.normalizeClass(["sub-form-display", { "is-empty": !formName.value, "has-form": formName.value }])
91
+ class: vue.normalizeClass(["sub-form-display", { "is-empty": !hasForm.value, "has-form": hasForm.value }])
66
92
  }, [
67
- !formName.value ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_3, [
93
+ !hasForm.value ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_3, [
68
94
  vue.createVNode(_component_el_icon, { class: "icon" }, {
69
95
  default: vue.withCtx(() => [
70
96
  vue.createVNode(vue.unref(index$1.DocumentAdd))
@@ -97,5 +123,5 @@ const _sfc_main = {
97
123
  };
98
124
  }
99
125
  };
100
- const SubForm = /* @__PURE__ */ _pluginVue_exportHelper.default(_sfc_main, [["__scopeId", "data-v-5c0333c7"]]);
126
+ const SubForm = /* @__PURE__ */ _pluginVue_exportHelper.default(_sfc_main, [["__scopeId", "data-v-cd333a16"]]);
101
127
  exports.default = SubForm;
@@ -330,6 +330,16 @@ const _sfc_main = {
330
330
  var _a;
331
331
  return ((_a = gridLayout.value) == null ? void 0 : _a.state.isDragging) || false;
332
332
  });
333
+ function isLinkedVisibility(id) {
334
+ var _a;
335
+ const linkedVisibility = ((_a = editConfigData.value.linkedConfig) == null ? void 0 : _a.visibility) || [];
336
+ for (const item of linkedVisibility) {
337
+ if (item.dataLinkFieldList.includes(id)) {
338
+ return true;
339
+ }
340
+ }
341
+ return false;
342
+ }
333
343
  __expose({
334
344
  onFormDragMove
335
345
  });
@@ -519,7 +529,10 @@ const _sfc_main = {
519
529
  vue.createElementVNode("div", {
520
530
  class: vue.normalizeClass(["component-content", {
521
531
  "is-disabled": item.component.disabled,
522
- "is-readonly": item.component.readOnly && !item.component.disabled
532
+ "is-readonly": item.component.readOnly && !item.component.disabled,
533
+ "is-linked-visibility": isLinkedVisibility(
534
+ item.component.id
535
+ )
523
536
  }])
524
537
  }, [
525
538
  item.component.fieldType == "subTitle" ? (vue.openBlock(), vue.createBlock(SubTitle.default, {
@@ -569,5 +582,5 @@ const _sfc_main = {
569
582
  };
570
583
  }
571
584
  };
572
- const formWorkArea = /* @__PURE__ */ _pluginVue_exportHelper.default(_sfc_main, [["__scopeId", "data-v-838fb4f9"]]);
585
+ const formWorkArea = /* @__PURE__ */ _pluginVue_exportHelper.default(_sfc_main, [["__scopeId", "data-v-f689abe4"]]);
573
586
  exports.default = formWorkArea;
@@ -14,6 +14,7 @@ const vue = require("vue");
14
14
  const common = require("../../utils/common.js");
15
15
  const TemplateSelector = require("../../../components/TemplateSelector.vue.js");
16
16
  const eventBus = require("../../utils/eventBus.js");
17
+ const ValueSelector = require("../../../components/ValueSelector.vue2.js");
17
18
  const index = require("../../../../../../node_modules/.pnpm/element-plus@2.13.2_vue@3.5.13_typescript@5.7.3_/node_modules/element-plus/es/components/collapse/index.js");
18
19
  const index$1 = require("../../../../../../node_modules/.pnpm/element-plus@2.13.2_vue@3.5.13_typescript@5.7.3_/node_modules/element-plus/es/components/form/index.js");
19
20
  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/input/index.js");
@@ -50,7 +51,7 @@ const _sfc_main = {
50
51
  return vue.openBlock(), vue.createBlock(_component_el_collapse, {
51
52
  class: "setting",
52
53
  modelValue: vue.unref(activeName),
53
- "onUpdate:modelValue": _cache[9] || (_cache[9] = ($event) => vue.isRef(activeName) ? activeName.value = $event : null)
54
+ "onUpdate:modelValue": _cache[11] || (_cache[11] = ($event) => vue.isRef(activeName) ? activeName.value = $event : null)
54
55
  }, {
55
56
  default: vue.withCtx(() => [
56
57
  vue.createVNode(_component_el_collapse_item, {
@@ -87,19 +88,19 @@ const _sfc_main = {
87
88
  }, {
88
89
  default: vue.withCtx(() => [
89
90
  vue.createVNode(_component_el_radio_button, { value: "none" }, {
90
- default: vue.withCtx(() => _cache[10] || (_cache[10] = [
91
+ default: vue.withCtx(() => _cache[12] || (_cache[12] = [
91
92
  vue.createTextVNode("无")
92
93
  ])),
93
94
  _: 1
94
95
  }),
95
96
  vue.createVNode(_component_el_radio_button, { value: "label" }, {
96
- default: vue.withCtx(() => _cache[11] || (_cache[11] = [
97
+ default: vue.withCtx(() => _cache[13] || (_cache[13] = [
97
98
  vue.createTextVNode("标题")
98
99
  ])),
99
100
  _: 1
100
101
  }),
101
102
  vue.createVNode(_component_el_radio_button, { value: "subLabel" }, {
102
- default: vue.withCtx(() => _cache[12] || (_cache[12] = [
103
+ default: vue.withCtx(() => _cache[14] || (_cache[14] = [
103
104
  vue.createTextVNode("子标题")
104
105
  ])),
105
106
  _: 1
@@ -136,7 +137,7 @@ const _sfc_main = {
136
137
  }, {
137
138
  default: vue.withCtx(() => [
138
139
  vue.createVNode(_component_el_radio_button, { value: "main" }, {
139
- default: vue.withCtx(() => _cache[13] || (_cache[13] = [
140
+ default: vue.withCtx(() => _cache[15] || (_cache[15] = [
140
141
  vue.createTextVNode("主页面获取")
141
142
  ])),
142
143
  _: 1
@@ -145,7 +146,7 @@ const _sfc_main = {
145
146
  value: "self",
146
147
  disabled: ""
147
148
  }, {
148
- default: vue.withCtx(() => _cache[14] || (_cache[14] = [
149
+ default: vue.withCtx(() => _cache[16] || (_cache[16] = [
149
150
  vue.createTextVNode("子表单自加载")
150
151
  ])),
151
152
  _: 1
@@ -174,20 +175,61 @@ const _sfc_main = {
174
175
  ]),
175
176
  _: 1
176
177
  }),
177
- vue.createVNode(_component_el_form_item, { label: "选择子表单" }, {
178
+ vue.createVNode(_component_el_form_item, { label: "表单来源" }, {
179
+ default: vue.withCtx(() => [
180
+ vue.createVNode(_component_el_radio_group, {
181
+ modelValue: vue.unref(currentItem).formSource,
182
+ "onUpdate:modelValue": _cache[6] || (_cache[6] = ($event) => vue.unref(currentItem).formSource = $event),
183
+ size: "small"
184
+ }, {
185
+ default: vue.withCtx(() => [
186
+ vue.createVNode(_component_el_radio_button, { value: "select" }, {
187
+ default: vue.withCtx(() => _cache[17] || (_cache[17] = [
188
+ vue.createTextVNode("选择表单")
189
+ ])),
190
+ _: 1
191
+ }),
192
+ vue.createVNode(_component_el_radio_button, { value: "dynamic" }, {
193
+ default: vue.withCtx(() => _cache[18] || (_cache[18] = [
194
+ vue.createTextVNode("动态表单")
195
+ ])),
196
+ _: 1
197
+ })
198
+ ]),
199
+ _: 1
200
+ }, 8, ["modelValue"])
201
+ ]),
202
+ _: 1
203
+ }),
204
+ vue.unref(currentItem).formSource == "select" ? (vue.openBlock(), vue.createBlock(_component_el_form_item, {
205
+ key: 1,
206
+ label: "选择子表单"
207
+ }, {
178
208
  default: vue.withCtx(() => [
179
209
  vue.createVNode(TemplateSelector.default, {
180
210
  modelValue: vue.unref(currentItem).subFormName,
181
- "onUpdate:modelValue": _cache[6] || (_cache[6] = ($event) => vue.unref(currentItem).subFormName = $event),
211
+ "onUpdate:modelValue": _cache[7] || (_cache[7] = ($event) => vue.unref(currentItem).subFormName = $event),
182
212
  templateKey: vue.unref(currentItem).subFormKey,
183
- "onUpdate:templateKey": _cache[7] || (_cache[7] = ($event) => vue.unref(currentItem).subFormKey = $event),
213
+ "onUpdate:templateKey": _cache[8] || (_cache[8] = ($event) => vue.unref(currentItem).subFormKey = $event),
184
214
  templateId: vue.unref(currentItem).subFormId,
185
- "onUpdate:templateId": _cache[8] || (_cache[8] = ($event) => vue.unref(currentItem).subFormId = $event),
215
+ "onUpdate:templateId": _cache[9] || (_cache[9] = ($event) => vue.unref(currentItem).subFormId = $event),
186
216
  templateType: "form"
187
217
  }, null, 8, ["modelValue", "templateKey", "templateId"])
188
218
  ]),
189
219
  _: 1
190
- })
220
+ })) : vue.unref(currentItem).formSource == "dynamic" ? (vue.openBlock(), vue.createBlock(_component_el_form_item, {
221
+ key: 2,
222
+ label: "表单标识"
223
+ }, {
224
+ default: vue.withCtx(() => [
225
+ vue.createVNode(ValueSelector.default, {
226
+ modelValue: vue.unref(currentItem).dynamicSubFormKey,
227
+ "onUpdate:modelValue": _cache[10] || (_cache[10] = ($event) => vue.unref(currentItem).dynamicSubFormKey = $event),
228
+ size: "default"
229
+ }, null, 8, ["modelValue"])
230
+ ]),
231
+ _: 1
232
+ })) : vue.createCommentVNode("", true)
191
233
  ]),
192
234
  _: 1
193
235
  }, 8, ["model"]))
@@ -33,7 +33,8 @@ const _sfc_main = {
33
33
  multipleSelection: "数组",
34
34
  checkbox: "数组",
35
35
  date: "日期",
36
- switch: "布尔值"
36
+ switch: "布尔值",
37
+ hidden: "隐藏域"
37
38
  };
38
39
  const searchVariable = vue.ref("");
39
40
  const filterFieldList = vue.ref([]);
@@ -80,5 +81,5 @@ const _sfc_main = {
80
81
  };
81
82
  }
82
83
  };
83
- const FieldVariable = /* @__PURE__ */ _pluginVue_exportHelper.default(_sfc_main, [["__scopeId", "data-v-66e49c9f"]]);
84
+ const FieldVariable = /* @__PURE__ */ _pluginVue_exportHelper.default(_sfc_main, [["__scopeId", "data-v-c2ceeb58"]]);
84
85
  exports.default = FieldVariable;
@@ -43,6 +43,7 @@ require("../../../../../node_modules/.pnpm/element-plus@2.13.2_vue@3.5.13_typesc
43
43
  ;/* empty css */
44
44
  const index$1 = require("../../../../../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.js");
45
45
  ;/* empty css */
46
+ ;/* empty css */
46
47
  require("../../store/index.js");
47
48
  ;/* empty css */
48
49
  ;/* empty css */
@@ -70,7 +70,7 @@ const _sfc_main = /* @__PURE__ */ Object.assign({
70
70
  if (foundItem) {
71
71
  foundItem.fixedH = true;
72
72
  foundItem.h = dom.offsetHeight + titleHeight;
73
- setFormItemHeight(props.config.id, dom.offsetHeight + titleHeight);
73
+ setFormItemHeight(props.config.id, true, dom.offsetHeight + titleHeight);
74
74
  }
75
75
  }
76
76
  return (_ctx, _cache) => {
@@ -127,5 +127,5 @@ const _sfc_main = /* @__PURE__ */ Object.assign({
127
127
  };
128
128
  }
129
129
  });
130
- const _ApprovalHistory = /* @__PURE__ */ _pluginVue_exportHelper.default(_sfc_main, [["__scopeId", "data-v-ca0519c9"]]);
130
+ const _ApprovalHistory = /* @__PURE__ */ _pluginVue_exportHelper.default(_sfc_main, [["__scopeId", "data-v-f7d02612"]]);
131
131
  exports.default = _ApprovalHistory;