@fecp/designer 5.3.4 → 5.3.6

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 (47) 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/formulaEditor/index.vue2.mjs +10 -1
  11. package/es/packages/designer/src/packages/table/headerBtn.vue.mjs +2 -0
  12. package/es/packages/designer/src/packages/table/queryModule/DynamicModeConfig.vue.mjs +12 -5
  13. package/es/packages/designer/src/packages/table/queryModule/index.vue.mjs +11 -16
  14. package/es/packages/vue/src/components/bus/approvalHistory/ApprovalHistory.vue.mjs +5 -4
  15. package/es/packages/vue/src/components/forms/form/Form.vue.mjs +246 -139
  16. package/es/packages/vue/src/components/forms/formItem/FormItem.vue.mjs +20 -3
  17. package/es/packages/vue/src/components/forms/subForm/SubForm.vue.mjs +5 -6
  18. package/es/packages/vue/src/components/forms/subTable/SubTable.vue.mjs +12 -6
  19. package/es/packages/vue/src/components/table/CustomButtons.vue.mjs +11 -3
  20. package/es/packages/vue/src/components/table/DynamicQuery.vue.mjs +16 -8
  21. package/es/packages/vue/src/components/table/Table.vue.mjs +7 -5
  22. package/es/packages/vue/src/utils/eventFlow/actionHandlers.mjs +88 -2
  23. package/es/packages/vue/src/utils/parseFilterConfig.mjs +44 -0
  24. package/lib/designer.css +208 -179
  25. package/lib/packages/designer/package.json.js +1 -1
  26. package/lib/packages/designer/src/components/FilterConfigDisplay.vue.js +5 -3
  27. package/lib/packages/designer/src/packages/advancedFilter/ValueInput.vue2.js +2 -2
  28. package/lib/packages/designer/src/packages/dataLinkage/index.vue.js +93 -83
  29. package/lib/packages/designer/src/packages/dialogGlobal/index.vue.js +2 -0
  30. package/lib/packages/designer/src/packages/eventFlow/dialog/action/TableChildRefresh.vue2.js +94 -0
  31. package/lib/packages/designer/src/packages/eventFlow/dialog/action/TableRowDelete.vue2.js +54 -0
  32. package/lib/packages/designer/src/packages/eventFlow/dialog/action/config.js +12 -1
  33. package/lib/packages/designer/src/packages/formulaEditor/index.vue2.js +10 -1
  34. package/lib/packages/designer/src/packages/table/headerBtn.vue.js +2 -0
  35. package/lib/packages/designer/src/packages/table/queryModule/DynamicModeConfig.vue.js +12 -5
  36. package/lib/packages/designer/src/packages/table/queryModule/index.vue.js +11 -16
  37. package/lib/packages/vue/src/components/bus/approvalHistory/ApprovalHistory.vue.js +5 -4
  38. package/lib/packages/vue/src/components/forms/form/Form.vue.js +244 -137
  39. package/lib/packages/vue/src/components/forms/formItem/FormItem.vue.js +19 -2
  40. package/lib/packages/vue/src/components/forms/subForm/SubForm.vue.js +5 -6
  41. package/lib/packages/vue/src/components/forms/subTable/SubTable.vue.js +12 -6
  42. package/lib/packages/vue/src/components/table/CustomButtons.vue.js +11 -3
  43. package/lib/packages/vue/src/components/table/DynamicQuery.vue.js +16 -8
  44. package/lib/packages/vue/src/components/table/Table.vue.js +7 -5
  45. package/lib/packages/vue/src/utils/eventFlow/actionHandlers.js +94 -8
  46. package/lib/packages/vue/src/utils/parseFilterConfig.js +44 -0
  47. package/package.json +1 -1
@@ -38,8 +38,9 @@ const _sfc_main = /* @__PURE__ */ Object.assign({
38
38
  const traceNo = vue.ref("");
39
39
  const formData = vue.inject("formData");
40
40
  vue.inject("rowHeight");
41
- const gridLayout = vue.inject("gridLayout");
41
+ vue.inject("gridLayout");
42
42
  vue.inject("gridLayoutFieldsData");
43
+ const setFormItemHeight = vue.inject("setFormItemHeight");
43
44
  const fieldsData = props.localConfig.fieldsData.map((item) => {
44
45
  return item.component;
45
46
  });
@@ -65,11 +66,11 @@ const _sfc_main = /* @__PURE__ */ Object.assign({
65
66
  const foundItem = props.localConfig.fieldsData.find(
66
67
  (item) => item.id == props.config.id
67
68
  );
68
- const titleHeight = config.titleMode != "none" ? 60 : 0;
69
+ const titleHeight = props.config.titleMode != "none" ? 60 : 0;
69
70
  if (foundItem) {
70
71
  foundItem.fixedH = true;
71
72
  foundItem.h = dom.offsetHeight + titleHeight;
72
- gridLayout.value.resizeEvent();
73
+ setFormItemHeight(props.config.id, true, dom.offsetHeight + titleHeight);
73
74
  }
74
75
  }
75
76
  return (_ctx, _cache) => {
@@ -126,5 +127,5 @@ const _sfc_main = /* @__PURE__ */ Object.assign({
126
127
  };
127
128
  }
128
129
  });
129
- const _ApprovalHistory = /* @__PURE__ */ _pluginVue_exportHelper.default(_sfc_main, [["__scopeId", "data-v-7be2a6d2"]]);
130
+ const _ApprovalHistory = /* @__PURE__ */ _pluginVue_exportHelper.default(_sfc_main, [["__scopeId", "data-v-f7d02612"]]);
130
131
  exports.default = _ApprovalHistory;
@@ -149,8 +149,12 @@ const _sfc_main = /* @__PURE__ */ Object.assign({
149
149
  });
150
150
  hiddenFields.value = option.hiddenFields || [];
151
151
  await loadFieldDataSources();
152
+ await loadProductData();
153
+ applyProductConfigToForm();
154
+ mergeOptionsToFields();
152
155
  loadFormData();
153
156
  loadEventFlow();
157
+ initGridLayoutDataConfig();
154
158
  if (pageEvents && localConfig.value.pageEventConfig) {
155
159
  const onCreatedEvent = localConfig.value.pageEventConfig.find(
156
160
  (e) => e.name === "onCreated"
@@ -160,9 +164,6 @@ const _sfc_main = /* @__PURE__ */ Object.assign({
160
164
  await pageEvents.executeEvent("onCreated");
161
165
  }
162
166
  }
163
- await loadProductData();
164
- applyProductConfigToForm();
165
- mergeOptionsToFields();
166
167
  } catch (error) {
167
168
  console.error("加载配置失败:", error);
168
169
  index$5.ElMessage.error("加载配置失败");
@@ -176,7 +177,11 @@ const _sfc_main = /* @__PURE__ */ Object.assign({
176
177
  if (fieldsData.value) {
177
178
  fieldsData.value.forEach((component) => {
178
179
  if (component.fieldName) {
179
- defaultData[component.fieldName] = component.defaultValue ? component.defaultValue : null;
180
+ let defaultValue = component.defaultValue || null;
181
+ if (component.fieldType == "number") {
182
+ defaultValue = Number(defaultValue || 0);
183
+ }
184
+ defaultData[component.fieldName] = defaultValue;
180
185
  }
181
186
  if (component.fieldName) {
182
187
  const fieldRules = validation.generateFieldRules(component);
@@ -359,16 +364,6 @@ const _sfc_main = /* @__PURE__ */ Object.assign({
359
364
  prodRules.value[formField.fieldName] = [];
360
365
  }
361
366
  const customValidator = (rule, value, callback) => {
362
- console.log(
363
- "🚀 ~ customValidator 被调用 ~ 字段:",
364
- formField == null ? void 0 : formField.fieldName,
365
- "值:",
366
- value,
367
- "minValue:",
368
- minValue,
369
- "maxValue:",
370
- maxValue
371
- );
372
367
  if (value === null || value === void 0 || value === "") {
373
368
  callback();
374
369
  return;
@@ -474,7 +469,36 @@ const _sfc_main = /* @__PURE__ */ Object.assign({
474
469
  }
475
470
  });
476
471
  }
477
- const gridLayoutDataConfig = vue.ref([]);
472
+ const gridLayoutFieldsData = vue.ref([]);
473
+ const oriGridLayoutData = vue.ref([]);
474
+ const formItemRefs = vue.ref(/* @__PURE__ */ new Map());
475
+ const setFormItemRef = (el, component) => {
476
+ if (!el) {
477
+ if (component && component.id) {
478
+ formItemRefs.value.delete(component.id);
479
+ }
480
+ return;
481
+ }
482
+ if (component && component.id) {
483
+ formItemRefs.value.set(String(component.id), el);
484
+ }
485
+ };
486
+ const getFormItemRef = (fieldId) => {
487
+ const formItem = formItemRefs.value.get(fieldId);
488
+ if (!formItem) {
489
+ console.log(`未找到 fieldId: ${fieldId} 的 FormItem 组件`);
490
+ return null;
491
+ }
492
+ console.log(`找到 FormItem 组件:`, formItem);
493
+ if (typeof formItem.getInnerComponentRef === "function") {
494
+ const innerRef = formItem.getInnerComponentRef();
495
+ console.log(`内部组件 ref:`, innerRef);
496
+ return innerRef;
497
+ } else {
498
+ console.log(`FormItem 组件没有 getInnerComponentRef 方法`);
499
+ return null;
500
+ }
501
+ };
478
502
  function initGridLayoutDataConfig() {
479
503
  let gridLayoutData = common.cloneDeep(localConfig.value.fieldsData || []);
480
504
  gridLayoutData = gridLayoutData.map((item) => {
@@ -492,125 +516,8 @@ const _sfc_main = /* @__PURE__ */ Object.assign({
492
516
  }
493
517
  return item;
494
518
  });
495
- gridLayoutDataConfig.value = gridLayoutData;
519
+ oriGridLayoutData.value = gridLayoutData;
496
520
  }
497
- const gridLayoutFieldsData = vue.computed(() => {
498
- initGridLayoutDataConfig();
499
- let gridLayoutData = common.cloneDeep(gridLayoutDataConfig.value || []);
500
- const linkedConfig = localConfig.value.linkedConfig || {};
501
- const dataLink = (linkedConfig == null ? void 0 : linkedConfig.dataLink) || [];
502
- const fields = [...fieldsData.value, ...hiddenFields.value];
503
- dataLink.forEach((item) => {
504
- if (parseFilterConfig.checkFilterMatch(item.filterConfig, formData.value, fields)) {
505
- const fieldAssignments = item.fieldAssignments || [];
506
- fieldAssignments.forEach((assignment) => {
507
- var _a, _b;
508
- const fieldId = assignment.fieldId;
509
- const formulaText = (_b = (_a = assignment.formula) == null ? void 0 : _a.value) == null ? void 0 : _b.text;
510
- const field = fields.find((f) => f.id == fieldId);
511
- if (field && formulaText) {
512
- const calcResult = calculate.calculate({
513
- text: formulaText,
514
- marks: [],
515
- value: formData.value
516
- });
517
- formData.value[field.fieldName] = calcResult;
518
- }
519
- });
520
- }
521
- });
522
- const visibility = (linkedConfig == null ? void 0 : linkedConfig.visibility) || [];
523
- visibility.forEach((item) => {
524
- const dataLinkFieldList = item.dataLinkFieldList || [];
525
- if (parseFilterConfig.checkFilterMatch(item.filterConfig, formData.value, fields)) {
526
- dataLinkFieldList.forEach((fieldId) => {
527
- const layoutFieldItem = gridLayoutData.find((g) => g.id == fieldId);
528
- if (layoutFieldItem) {
529
- layoutFieldItem.hidden = false;
530
- }
531
- });
532
- } else {
533
- dataLinkFieldList.forEach((fieldId) => {
534
- const layoutFieldItem = gridLayoutData.find((g) => g.id == fieldId);
535
- if (layoutFieldItem) {
536
- layoutFieldItem.hidden = true;
537
- }
538
- });
539
- }
540
- });
541
- gridLayoutData = gridLayoutData.filter((item) => !item.hidden);
542
- const requiredArr = (linkedConfig == null ? void 0 : linkedConfig.required) || [];
543
- requiredArr.forEach((item) => {
544
- const dataLinkFieldList = item.dataLinkFieldList || [];
545
- if (parseFilterConfig.checkFilterMatch(item.filterConfig, formData.value, fields)) {
546
- dataLinkFieldList.forEach((fieldId) => {
547
- const layoutFieldItem = gridLayoutData.find((g) => g.id == fieldId);
548
- if (layoutFieldItem) {
549
- layoutFieldItem.component.required = true;
550
- }
551
- });
552
- } else {
553
- dataLinkFieldList.forEach((fieldId) => {
554
- const layoutFieldItem = gridLayoutData.find((g) => g.id == fieldId);
555
- if (layoutFieldItem) {
556
- layoutFieldItem.component.required = false;
557
- }
558
- });
559
- }
560
- });
561
- const rules = {};
562
- gridLayoutData.forEach(({ component }) => {
563
- if (component.fieldName) {
564
- const fieldRules = validation.generateFieldRules(component);
565
- if (fieldRules.length > 0) {
566
- rules[component.fieldName] = fieldRules;
567
- }
568
- }
569
- });
570
- for (let fieldName in prodRules.value) {
571
- rules[fieldName] = prodRules.value[fieldName];
572
- }
573
- formRules.value = rules;
574
- const readonlyArr = (linkedConfig == null ? void 0 : linkedConfig.readonly) || [];
575
- readonlyArr.forEach((item) => {
576
- const dataLinkFieldList = item.dataLinkFieldList || [];
577
- if (parseFilterConfig.checkFilterMatch(item.filterConfig, formData.value, fields)) {
578
- dataLinkFieldList.forEach((fieldId) => {
579
- const layoutFieldItem = gridLayoutData.find((g) => g.id == fieldId);
580
- if (layoutFieldItem) {
581
- layoutFieldItem.component.readOnly = true;
582
- }
583
- });
584
- } else {
585
- dataLinkFieldList.forEach((fieldId) => {
586
- const layoutFieldItem = gridLayoutData.find((g) => g.id == fieldId);
587
- if (layoutFieldItem) {
588
- layoutFieldItem.component.readOnly = false;
589
- }
590
- });
591
- }
592
- });
593
- const disabledArr = (linkedConfig == null ? void 0 : linkedConfig.disabled) || [];
594
- disabledArr.forEach((item) => {
595
- const dataLinkFieldList = item.dataLinkFieldList || [];
596
- if (parseFilterConfig.checkFilterMatch(item.filterConfig, formData.value, fields)) {
597
- dataLinkFieldList.forEach((fieldId) => {
598
- const layoutFieldItem = gridLayoutData.find((g) => g.id == fieldId);
599
- if (layoutFieldItem) {
600
- layoutFieldItem.component.disabled = true;
601
- }
602
- });
603
- } else {
604
- dataLinkFieldList.forEach((fieldId) => {
605
- const layoutFieldItem = gridLayoutData.find((g) => g.id == fieldId);
606
- if (layoutFieldItem) {
607
- layoutFieldItem.component.disabled = false;
608
- }
609
- });
610
- }
611
- });
612
- return gridLayoutData;
613
- });
614
521
  const getFieldError = (fieldName) => {
615
522
  var _a;
616
523
  if (!formRef.value) return "";
@@ -748,13 +655,210 @@ const _sfc_main = /* @__PURE__ */ Object.assign({
748
655
  vue.onMounted(() => {
749
656
  loadConfig();
750
657
  });
658
+ vue.onBeforeUnmount(() => {
659
+ formItemRefs.value.clear();
660
+ });
661
+ const prevFormData = vue.ref({});
662
+ const findChangedFields = (newData, oldData) => {
663
+ const changedFields = [];
664
+ const allKeys = /* @__PURE__ */ new Set([
665
+ ...Object.keys(newData || {}),
666
+ ...Object.keys(oldData || {})
667
+ ]);
668
+ for (const key of allKeys) {
669
+ const newVal = newData[key];
670
+ const oldVal = oldData[key];
671
+ if (newVal !== oldVal) {
672
+ changedFields.push(key);
673
+ }
674
+ }
675
+ return changedFields;
676
+ };
677
+ const filterRelevantLinkageConfigs = (changedFieldNames, linkedConfig, fields) => {
678
+ const result = {
679
+ dataLink: [],
680
+ visibility: [],
681
+ required: [],
682
+ readonly: [],
683
+ disabled: []
684
+ };
685
+ if (!linkedConfig || changedFieldNames.length === 0) {
686
+ return result;
687
+ }
688
+ const changedFieldIds = changedFieldNames.map((fieldName) => {
689
+ const field = fields.find((f) => f.fieldName == fieldName);
690
+ return field ? field.id : null;
691
+ }).filter((id) => id !== null);
692
+ if (linkedConfig.dataLink) {
693
+ result.dataLink = linkedConfig.dataLink.filter((item) => {
694
+ return changedFieldIds.some(
695
+ (fieldId) => parseFilterConfig.checkFieldInFilterConfig(item.filterConfig, fieldId) || parseFilterConfig.checkFieldInResultConfig(item.fieldAssignments, fieldId, fields)
696
+ );
697
+ });
698
+ }
699
+ if (linkedConfig.visibility) {
700
+ result.visibility = linkedConfig.visibility;
701
+ }
702
+ if (linkedConfig.required) {
703
+ result.required = linkedConfig.required;
704
+ }
705
+ if (linkedConfig.readonly) {
706
+ result.readonly = linkedConfig.readonly;
707
+ }
708
+ if (linkedConfig.disabled) {
709
+ result.disabled = linkedConfig.disabled;
710
+ }
711
+ return result;
712
+ };
713
+ const applyLinkageEffectsForChangedFields = (changedFieldNames) => {
714
+ var _a;
715
+ console.log(
716
+ "🚀 ~ applyLinkageEffectsForChangedFields ~ 变化的字段:",
717
+ changedFieldNames
718
+ );
719
+ const linkedConfig = localConfig.value.linkedConfig || {};
720
+ const fields = [...fieldsData.value, ...hiddenFields.value];
721
+ const relevantConfigs = filterRelevantLinkageConfigs(
722
+ changedFieldNames,
723
+ linkedConfig,
724
+ fields
725
+ );
726
+ relevantConfigs.dataLink.forEach((item) => {
727
+ if (parseFilterConfig.checkFilterMatch(item.filterConfig, formData.value, fields)) {
728
+ const fieldAssignments = item.fieldAssignments || [];
729
+ fieldAssignments.forEach((assignment) => {
730
+ var _a2, _b;
731
+ const fieldId = assignment.fieldId;
732
+ const formulaText = (_b = (_a2 = assignment.formula) == null ? void 0 : _a2.value) == null ? void 0 : _b.text;
733
+ const field = fields.find((f) => f.id == fieldId);
734
+ if (field && formulaText) {
735
+ const calcResult = calculate.calculate({
736
+ text: formulaText,
737
+ marks: [],
738
+ value: formData.value
739
+ });
740
+ formData.value[field.fieldName] = calcResult;
741
+ }
742
+ });
743
+ }
744
+ });
745
+ const updatedLayoutData = common.cloneDeep(oriGridLayoutData.value || []);
746
+ relevantConfigs.visibility.forEach((item) => {
747
+ const dataLinkFieldList = item.dataLinkFieldList || [];
748
+ if (parseFilterConfig.checkFilterMatch(item.filterConfig, formData.value, fields)) {
749
+ dataLinkFieldList.forEach((fieldId) => {
750
+ const layoutFieldItem = updatedLayoutData.find((g) => g.id == fieldId);
751
+ if (layoutFieldItem) {
752
+ layoutFieldItem.hidden = false;
753
+ }
754
+ });
755
+ } else {
756
+ dataLinkFieldList.forEach((fieldId) => {
757
+ const layoutFieldItem = updatedLayoutData.find((g) => g.id == fieldId);
758
+ if (layoutFieldItem) {
759
+ layoutFieldItem.hidden = true;
760
+ }
761
+ });
762
+ }
763
+ });
764
+ relevantConfigs.required.forEach((item) => {
765
+ const dataLinkFieldList = item.dataLinkFieldList || [];
766
+ if (parseFilterConfig.checkFilterMatch(item.filterConfig, formData.value, fields)) {
767
+ dataLinkFieldList.forEach((fieldId) => {
768
+ const layoutFieldItem = updatedLayoutData.find((g) => g.id == fieldId);
769
+ if (layoutFieldItem) {
770
+ layoutFieldItem.component.required = true;
771
+ }
772
+ });
773
+ } else {
774
+ dataLinkFieldList.forEach((fieldId) => {
775
+ const layoutFieldItem = updatedLayoutData.find((g) => g.id == fieldId);
776
+ if (layoutFieldItem) {
777
+ layoutFieldItem.component.required = false;
778
+ }
779
+ });
780
+ }
781
+ });
782
+ const rules = {};
783
+ updatedLayoutData.forEach(({ component }) => {
784
+ if (component.fieldName) {
785
+ const fieldRules = validation.generateFieldRules(component);
786
+ if (fieldRules.length > 0) {
787
+ rules[component.fieldName] = fieldRules;
788
+ }
789
+ }
790
+ });
791
+ for (let fieldName in prodRules.value) {
792
+ rules[fieldName] = prodRules.value[fieldName];
793
+ }
794
+ formRules.value = rules;
795
+ relevantConfigs.readonly.forEach((item) => {
796
+ const dataLinkFieldList = item.dataLinkFieldList || [];
797
+ if (parseFilterConfig.checkFilterMatch(item.filterConfig, formData.value, fields)) {
798
+ dataLinkFieldList.forEach((fieldId) => {
799
+ const layoutFieldItem = updatedLayoutData.find((g) => g.id == fieldId);
800
+ if (layoutFieldItem) {
801
+ layoutFieldItem.component.readOnly = true;
802
+ }
803
+ });
804
+ } else {
805
+ dataLinkFieldList.forEach((fieldId) => {
806
+ const layoutFieldItem = updatedLayoutData.find((g) => g.id == fieldId);
807
+ if (layoutFieldItem) {
808
+ layoutFieldItem.component.readOnly = false;
809
+ }
810
+ });
811
+ }
812
+ });
813
+ relevantConfigs.disabled.forEach((item) => {
814
+ const dataLinkFieldList = item.dataLinkFieldList || [];
815
+ if (parseFilterConfig.checkFilterMatch(item.filterConfig, formData.value, fields)) {
816
+ dataLinkFieldList.forEach((fieldId) => {
817
+ const layoutFieldItem = updatedLayoutData.find((g) => g.id == fieldId);
818
+ if (layoutFieldItem) {
819
+ layoutFieldItem.component.disabled = true;
820
+ }
821
+ });
822
+ } else {
823
+ dataLinkFieldList.forEach((fieldId) => {
824
+ const layoutFieldItem = updatedLayoutData.find((g) => g.id == fieldId);
825
+ if (layoutFieldItem) {
826
+ layoutFieldItem.component.disabled = false;
827
+ }
828
+ });
829
+ }
830
+ });
831
+ gridLayoutFieldsData.value = updatedLayoutData.filter((item) => !item.hidden);
832
+ (_a = gridLayout == null ? void 0 : gridLayout.value) == null ? void 0 : _a.resizeEvent();
833
+ };
751
834
  vue.watch(
752
835
  formData,
753
- (newVal) => {
836
+ (newVal, oldVal) => {
837
+ const changedFields = findChangedFields(newVal, prevFormData.value);
838
+ if (changedFields.length > 0) {
839
+ applyLinkageEffectsForChangedFields(changedFields);
840
+ }
841
+ prevFormData.value = { ...newVal };
754
842
  emit("update:modelValue", newVal);
755
843
  },
756
844
  { deep: true }
757
845
  );
846
+ function setFormItemHeight(id, fixedH, h) {
847
+ var _a;
848
+ const item = gridLayoutFieldsData.value.find((item2) => item2.id == id);
849
+ if (!fixedH) {
850
+ item.h = h * 60;
851
+ } else if (fixedH) {
852
+ item.h = h / (localConfig.value.labelPosition == "top" ? 1.5 : 1);
853
+ }
854
+ const oriItem = oriGridLayoutData.value.find((item2) => item2.id == id);
855
+ if (!fixedH) {
856
+ oriItem.h = h * 60;
857
+ } else if (fixedH) {
858
+ oriItem.h = h / (localConfig.value.labelPosition == "top" ? 1.5 : 1);
859
+ }
860
+ (_a = gridLayout == null ? void 0 : gridLayout.value) == null ? void 0 : _a.resizeEvent();
861
+ }
758
862
  vue.provide("formData", formData);
759
863
  vue.provide("localConfig", localConfig);
760
864
  vue.provide("fieldsData", fieldsData);
@@ -762,12 +866,14 @@ const _sfc_main = /* @__PURE__ */ Object.assign({
762
866
  vue.provide("rowHeight", rowHeight);
763
867
  vue.provide("gridLayout", gridLayout);
764
868
  vue.provide("gridLayoutFieldsData", gridLayoutFieldsData);
869
+ vue.provide("setFormItemHeight", setFormItemHeight);
765
870
  vue.provide("formCtx", ctx);
766
871
  __expose({
767
872
  validate,
768
873
  resetFields,
769
874
  getFormData,
770
875
  setFormData,
876
+ getFormItemRef,
771
877
  formRef,
772
878
  localConfig
773
879
  });
@@ -803,8 +909,8 @@ const _sfc_main = /* @__PURE__ */ Object.assign({
803
909
  key: 0,
804
910
  ref_key: "gridLayout",
805
911
  ref: gridLayout,
806
- layout: vue.unref(gridLayoutFieldsData),
807
- "onUpdate:layout": _cache[0] || (_cache[0] = ($event) => vue.isRef(gridLayoutFieldsData) ? gridLayoutFieldsData.value = $event : null),
912
+ layout: gridLayoutFieldsData.value,
913
+ "onUpdate:layout": _cache[0] || (_cache[0] = ($event) => gridLayoutFieldsData.value = $event),
808
914
  "row-height": rowHeight.value,
809
915
  margin: [0, 0],
810
916
  "use-css-transforms": false,
@@ -814,6 +920,7 @@ const _sfc_main = /* @__PURE__ */ Object.assign({
814
920
  }, {
815
921
  item: vue.withCtx(({ item: { component } }) => [
816
922
  vue.createVNode(FormItem.default, {
923
+ ref: (el) => setFormItemRef(el, component),
817
924
  modelValue: formData.value[component.fieldName],
818
925
  "onUpdate:modelValue": ($event) => formData.value[component.fieldName] = $event,
819
926
  config: component,
@@ -852,5 +959,5 @@ const _sfc_main = /* @__PURE__ */ Object.assign({
852
959
  };
853
960
  }
854
961
  });
855
- const _Form = /* @__PURE__ */ _pluginVue_exportHelper.default(_sfc_main, [["__scopeId", "data-v-f1c90d7c"]]);
962
+ const _Form = /* @__PURE__ */ _pluginVue_exportHelper.default(_sfc_main, [["__scopeId", "data-v-a3082b55"]]);
856
963
  exports.default = _Form;
@@ -56,7 +56,7 @@ const _sfc_main = /* @__PURE__ */ Object.assign({
56
56
  }
57
57
  },
58
58
  emits: ["update:modelValue", "change"],
59
- setup(__props, { emit: __emit }) {
59
+ setup(__props, { expose: __expose, emit: __emit }) {
60
60
  const props = __props;
61
61
  const emit = __emit;
62
62
  function handleChange(config, val) {
@@ -90,6 +90,7 @@ const _sfc_main = /* @__PURE__ */ Object.assign({
90
90
  }
91
91
  });
92
92
  }, 300);
93
+ const innerComponentRef = vue.ref(null);
93
94
  const compValue = vue.computed({
94
95
  get: () => props.modelValue,
95
96
  set: (val) => {
@@ -99,6 +100,14 @@ const _sfc_main = /* @__PURE__ */ Object.assign({
99
100
  }
100
101
  }
101
102
  });
103
+ const getInnerComponentRef = () => {
104
+ debugger;
105
+ return innerComponentRef.value;
106
+ };
107
+ __expose({
108
+ config: props.config,
109
+ getInnerComponentRef
110
+ });
102
111
  return (_ctx, _cache) => {
103
112
  const _component_el_tooltip = index$8.ElTooltip;
104
113
  const _component_el_form_item = index$7.ElFormItem;
@@ -110,15 +119,21 @@ const _sfc_main = /* @__PURE__ */ Object.assign({
110
119
  config: __props.config
111
120
  }, null, 8, ["config"])) : __props.config.fieldType == "subForm" ? (vue.openBlock(), vue.createBlock(vue.unref(index$4.SubForm), {
112
121
  key: 2,
122
+ ref_key: "innerComponentRef",
123
+ ref: innerComponentRef,
113
124
  config: __props.config,
114
125
  localConfig: __props.localConfig,
115
126
  formMode: __props.formMode
116
127
  }, null, 8, ["config", "localConfig", "formMode"])) : __props.config.fieldType == "subTable" ? (vue.openBlock(), vue.createBlock(vue.unref(index$5.SubTable), {
117
128
  key: 3,
129
+ ref_key: "innerComponentRef",
130
+ ref: innerComponentRef,
118
131
  config: __props.config,
119
132
  localConfig: __props.localConfig
120
133
  }, null, 8, ["config", "localConfig"])) : __props.config.fieldType == "approvalHistory" ? (vue.openBlock(), vue.createBlock(vue.unref(index$6.ApprovalHistory), {
121
134
  key: 4,
135
+ ref_key: "innerComponentRef",
136
+ ref: innerComponentRef,
122
137
  config: __props.config,
123
138
  localConfig: __props.localConfig
124
139
  }, null, 8, ["config", "localConfig"])) : __props.config.fieldType == "blank" || __props.config.fieldType == "divider" ? (vue.openBlock(), vue.createElementBlock("div", {
@@ -134,6 +149,8 @@ const _sfc_main = /* @__PURE__ */ Object.assign({
134
149
  default: vue.withCtx(() => [
135
150
  __props.config.labelMode != "label" ? (vue.openBlock(), vue.createBlock(vue.resolveDynamicComponent(componentType.value), vue.mergeProps({
136
151
  key: 0,
152
+ ref_key: "innerComponentRef",
153
+ ref: innerComponentRef,
137
154
  modelValue: compValue.value,
138
155
  "onUpdate:modelValue": _cache[0] || (_cache[0] = ($event) => compValue.value = $event)
139
156
  }, componentProps.value, {
@@ -172,5 +189,5 @@ const _sfc_main = /* @__PURE__ */ Object.assign({
172
189
  };
173
190
  }
174
191
  });
175
- const _FormItem = /* @__PURE__ */ _pluginVue_exportHelper.default(_sfc_main, [["__scopeId", "data-v-c5553ecf"]]);
192
+ const _FormItem = /* @__PURE__ */ _pluginVue_exportHelper.default(_sfc_main, [["__scopeId", "data-v-1fbcd248"]]);
176
193
  exports.default = _FormItem;
@@ -50,8 +50,8 @@ const _sfc_main = /* @__PURE__ */ Object.assign({
50
50
  const props = __props;
51
51
  const formData = vue.inject("formData");
52
52
  vue.inject("rowHeight");
53
- const gridLayout = vue.inject("gridLayout");
54
- vue.inject("gridLayoutFieldsData");
53
+ vue.inject("gridLayout");
54
+ const setFormItemHeight = vue.inject("setFormItemHeight");
55
55
  function subFormLoaded(subOption) {
56
56
  const fieldsData = subOption.fieldsData;
57
57
  console.log("🚀 ~ loaded ~ subOption:", subOption);
@@ -61,11 +61,10 @@ const _sfc_main = /* @__PURE__ */ Object.assign({
61
61
  const foundItem = props.localConfig.fieldsData.find(
62
62
  (item) => item.id == props.config.id
63
63
  );
64
- const y = 1;
65
- const titleHeight = config.titleMode != "none" ? 1 : 0;
64
+ const titleHeight = props.config.titleMode != "none" ? 1 : 0;
66
65
  if (foundItem) {
67
- foundItem.h = maxY + y + titleHeight;
68
- gridLayout.value.resizeEvent();
66
+ foundItem.h = maxY + titleHeight;
67
+ setFormItemHeight(props.config.id, false, maxY + titleHeight);
69
68
  }
70
69
  }
71
70
  return (_ctx, _cache) => {
@@ -46,12 +46,12 @@ const _sfc_main = /* @__PURE__ */ Object.assign({
46
46
  // default: false,
47
47
  // },
48
48
  },
49
- setup(__props) {
49
+ setup(__props, { expose: __expose }) {
50
50
  const props = __props;
51
51
  const formData = vue.inject("formData");
52
52
  vue.inject("rowHeight");
53
- const gridLayout = vue.inject("gridLayout");
54
- vue.inject("gridLayoutFieldsData");
53
+ vue.inject("gridLayout");
54
+ const setFormItemHeight = vue.inject("setFormItemHeight");
55
55
  const subTableData = vue.computed(() => {
56
56
  if (props.config.dataSourceFrom == "main") {
57
57
  return formData.value[props.config.fieldName];
@@ -81,15 +81,18 @@ const _sfc_main = /* @__PURE__ */ Object.assign({
81
81
  });
82
82
  function subTableLoaded(subOption) {
83
83
  subTableOption.value = subOption;
84
- console.log("🚀 ~ subTableLoaded ~ subOption:", subOption);
85
84
  const foundItem = props.localConfig.fieldsData.find(
86
85
  (item) => item.id == props.config.id
87
86
  );
88
- const titleHeight = config.titleMode != "none" ? 60 : 0;
87
+ const titleHeight = props.config.titleMode != "none" ? 60 : 0;
89
88
  if (foundItem) {
90
89
  foundItem.fixedH = true;
91
90
  foundItem.h = props.config.subTableHeight + titleHeight;
92
- gridLayout.value.resizeEvent();
91
+ setFormItemHeight(
92
+ props.config.id,
93
+ true,
94
+ props.config.subTableHeight + titleHeight
95
+ );
93
96
  }
94
97
  }
95
98
  const tableRef = vue.ref();
@@ -101,6 +104,9 @@ const _sfc_main = /* @__PURE__ */ Object.assign({
101
104
  type: "custom"
102
105
  });
103
106
  };
107
+ __expose({
108
+ subTableRef: tableRef
109
+ });
104
110
  return (_ctx, _cache) => {
105
111
  const _component_el_button = index$1.ElButton;
106
112
  return vue.openBlock(), vue.createElementBlock(vue.Fragment, null, [
@@ -29,6 +29,14 @@ const _sfc_main = {
29
29
  localConfig: {
30
30
  type: Object,
31
31
  default: {}
32
+ },
33
+ readOnly: {
34
+ type: Boolean,
35
+ default: false
36
+ },
37
+ isSubTable: {
38
+ type: Boolean,
39
+ default: false
32
40
  }
33
41
  },
34
42
  emits: ["click"],
@@ -90,10 +98,10 @@ const _sfc_main = {
90
98
  })
91
99
  ])) : vue.createCommentVNode("", true),
92
100
  __props.localConfig.showTitle ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_2, vue.toDisplayString(__props.localConfig.templateName), 1)) : vue.createCommentVNode("", true),
93
- hasButtons.value ? (vue.openBlock(), vue.createBlock(vue.unref(index$2.VxeToolbar), {
101
+ !__props.readOnly && !__props.isSubTable && hasButtons.value ? (vue.openBlock(), vue.createBlock(vue.unref(index$2.VxeToolbar), {
94
102
  key: 2,
95
103
  ref: "toolbarRef",
96
- style: { "flex": "1" }
104
+ style: { "flex": "1", "margin-bottom": "8px" }
97
105
  }, {
98
106
  buttons: vue.withCtx(() => [
99
107
  leftButtons.value.length ? (vue.openBlock(true), vue.createElementBlock(vue.Fragment, { key: 0 }, vue.renderList(leftButtons.value, (btn) => {
@@ -131,5 +139,5 @@ const _sfc_main = {
131
139
  };
132
140
  }
133
141
  };
134
- const CustomButtons = /* @__PURE__ */ _pluginVue_exportHelper.default(_sfc_main, [["__scopeId", "data-v-827a5895"]]);
142
+ const CustomButtons = /* @__PURE__ */ _pluginVue_exportHelper.default(_sfc_main, [["__scopeId", "data-v-4a702348"]]);
135
143
  exports.default = CustomButtons;