@fecp/vue 1.1.2 → 1.1.4

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 (127) hide show
  1. package/es/_virtual/bessel.mjs +7 -0
  2. package/es/_virtual/bessel2.mjs +4 -0
  3. package/es/_virtual/index.mjs +1 -1
  4. package/es/_virtual/index2.mjs +1 -1
  5. package/es/_virtual/jstat.mjs +7 -0
  6. package/es/_virtual/jstat2.mjs +4 -0
  7. package/es/node_modules/.pnpm/@formulajs_formulajs@4.5.6/node_modules/@formulajs/formulajs/lib/esm/index.mjs +7150 -0
  8. package/es/node_modules/.pnpm/@vueuse_shared@10.11.1_vue@3.5.13_typescript@5.7.3_/node_modules/@vueuse/shared/index.mjs +1 -1
  9. package/es/node_modules/.pnpm/@vxe-ui_core@4.3.1_vue@3.5.13_typescript@5.7.3_/node_modules/@vxe-ui/core/es/index.esm.mjs +1 -1
  10. package/es/node_modules/.pnpm/@vxe-ui_core@4.3.1_vue@3.5.13_typescript@5.7.3_/node_modules/@vxe-ui/core/es/src/clipboard.mjs +1 -1
  11. package/es/node_modules/.pnpm/@vxe-ui_core@4.3.1_vue@3.5.13_typescript@5.7.3_/node_modules/@vxe-ui/core/es/src/commands.mjs +1 -1
  12. package/es/node_modules/.pnpm/@vxe-ui_core@4.3.1_vue@3.5.13_typescript@5.7.3_/node_modules/@vxe-ui/core/es/src/config.mjs +1 -1
  13. package/es/node_modules/.pnpm/@vxe-ui_core@4.3.1_vue@3.5.13_typescript@5.7.3_/node_modules/@vxe-ui/core/es/src/event.mjs +1 -1
  14. package/es/node_modules/.pnpm/@vxe-ui_core@4.3.1_vue@3.5.13_typescript@5.7.3_/node_modules/@vxe-ui/core/es/src/formats.mjs +1 -1
  15. package/es/node_modules/.pnpm/@vxe-ui_core@4.3.1_vue@3.5.13_typescript@5.7.3_/node_modules/@vxe-ui/core/es/src/i18n.mjs +1 -1
  16. package/es/node_modules/.pnpm/@vxe-ui_core@4.3.1_vue@3.5.13_typescript@5.7.3_/node_modules/@vxe-ui/core/es/src/icon.mjs +1 -1
  17. package/es/node_modules/.pnpm/@vxe-ui_core@4.3.1_vue@3.5.13_typescript@5.7.3_/node_modules/@vxe-ui/core/es/src/interceptor.mjs +1 -1
  18. package/es/node_modules/.pnpm/@vxe-ui_core@4.3.1_vue@3.5.13_typescript@5.7.3_/node_modules/@vxe-ui/core/es/src/menus.mjs +1 -1
  19. package/es/node_modules/.pnpm/@vxe-ui_core@4.3.1_vue@3.5.13_typescript@5.7.3_/node_modules/@vxe-ui/core/es/src/permission.mjs +1 -1
  20. package/es/node_modules/.pnpm/@vxe-ui_core@4.3.1_vue@3.5.13_typescript@5.7.3_/node_modules/@vxe-ui/core/es/src/renderer.mjs +1 -1
  21. package/es/node_modules/.pnpm/@vxe-ui_core@4.3.1_vue@3.5.13_typescript@5.7.3_/node_modules/@vxe-ui/core/es/src/resize.mjs +1 -1
  22. package/es/node_modules/.pnpm/@vxe-ui_core@4.3.1_vue@3.5.13_typescript@5.7.3_/node_modules/@vxe-ui/core/es/src/store.mjs +1 -1
  23. package/es/node_modules/.pnpm/@vxe-ui_core@4.3.1_vue@3.5.13_typescript@5.7.3_/node_modules/@vxe-ui/core/es/src/vm.mjs +1 -1
  24. package/es/node_modules/.pnpm/bessel@1.0.2/node_modules/bessel/bessel.mjs +226 -0
  25. package/es/node_modules/.pnpm/element-plus@2.13.2_vue@3.5.13_typescript@5.7.3_/node_modules/element-plus/es/components/container/index.mjs +7 -7
  26. package/es/node_modules/.pnpm/element-plus@2.13.2_vue@3.5.13_typescript@5.7.3_/node_modules/element-plus/es/components/form/src/hooks/use-form-common-props.mjs +1 -1
  27. package/es/node_modules/.pnpm/element-plus@2.13.2_vue@3.5.13_typescript@5.7.3_/node_modules/element-plus/es/components/input/src/input.vue2.mjs +1 -1
  28. package/es/node_modules/.pnpm/jstat@1.9.6/node_modules/jstat/dist/jstat.mjs +3853 -0
  29. package/es/packages/mobile/src/components/form/field/Field.vue.mjs +1 -1
  30. package/es/packages/mobile/src/utils/formatterUtil.mjs +1 -1
  31. package/es/packages/mobile/src/utils/optionUtil.mjs +1 -1
  32. package/es/packages/vue/index.mjs +4 -0
  33. package/es/packages/vue/src/components/all.mjs +4 -0
  34. package/es/packages/vue/src/components/details/header/Header.vue.mjs +1 -1
  35. package/es/packages/vue/src/components/forms/checkbox/Checkbox.vue.mjs +8 -2
  36. package/es/packages/vue/src/components/forms/date/Date.vue.mjs +6 -6
  37. package/es/packages/vue/src/components/forms/divider/Divider.vue.mjs +15 -20
  38. package/es/packages/vue/src/components/forms/divider/index.mjs +2 -2
  39. package/es/packages/vue/src/components/forms/form/Form.vue.mjs +276 -54
  40. package/es/packages/vue/src/components/forms/form/index.mjs +2 -2
  41. package/es/packages/vue/src/components/forms/formItem/FormItem.vue.mjs +78 -50
  42. package/es/packages/vue/src/components/forms/h2/H2.vue.mjs +16 -7
  43. package/es/packages/vue/src/components/forms/multipleSelection/MultipleSelection.vue.mjs +1 -1
  44. package/es/packages/vue/src/components/forms/number/Number.vue.mjs +18 -12
  45. package/es/packages/vue/src/components/forms/radio/Radio.vue.mjs +5 -3
  46. package/es/packages/vue/src/components/forms/select/Select.vue.mjs +6 -4
  47. package/es/packages/vue/src/components/forms/subForm/SubForm.vue.mjs +90 -0
  48. package/es/packages/vue/src/components/forms/subForm/index.mjs +7 -0
  49. package/es/packages/vue/src/components/forms/subTable/SubTable.vue.mjs +109 -0
  50. package/es/packages/vue/src/components/forms/subTable/index.mjs +7 -0
  51. package/es/packages/vue/src/components/forms/switch/Switch.vue.mjs +1 -1
  52. package/es/packages/vue/src/components/forms/text/Text.vue.mjs +7 -4
  53. package/es/packages/vue/src/components/forms/text/index.mjs +2 -2
  54. package/es/packages/vue/src/components/forms/textarea/Textarea.vue.mjs +7 -4
  55. package/es/packages/vue/src/components/table/CustomButtons.vue.mjs +17 -17
  56. package/es/packages/vue/src/components/table/Table.vue.mjs +193 -72
  57. package/es/packages/vue/src/components/table/TableColumn.vue.mjs +46 -5
  58. package/es/packages/vue/src/components/table/TableFilter.vue.mjs +306 -0
  59. package/es/packages/vue/src/components/table/index.mjs +2 -2
  60. package/es/packages/vue/src/composables/usePageEvents.mjs +4 -5
  61. package/es/packages/vue/src/utils/common.mjs +5 -0
  62. package/es/packages/vue/src/utils/datasource.mjs +27 -1
  63. package/es/packages/vue/src/utils/eventFlow/actionHandlers.mjs +19 -2
  64. package/es/packages/vue/src/utils/formulajs/calculate.mjs +57 -0
  65. package/es/packages/vue/src/utils/formulajs/functionCore.mjs +17 -0
  66. package/es/packages/vue/src/utils/parseRouteParams.mjs +3 -2
  67. package/es/vue.css +255 -48
  68. package/lib/_virtual/bessel.js +7 -0
  69. package/lib/_virtual/bessel2.js +4 -0
  70. package/lib/_virtual/index.js +1 -1
  71. package/lib/_virtual/index2.js +1 -1
  72. package/lib/_virtual/jstat.js +7 -0
  73. package/lib/_virtual/jstat2.js +4 -0
  74. package/lib/node_modules/.pnpm/@formulajs_formulajs@4.5.6/node_modules/@formulajs/formulajs/lib/esm/index.js +7150 -0
  75. package/lib/node_modules/.pnpm/@vxe-ui_core@4.3.1_vue@3.5.13_typescript@5.7.3_/node_modules/@vxe-ui/core/es/index.esm.js +1 -1
  76. package/lib/node_modules/.pnpm/@vxe-ui_core@4.3.1_vue@3.5.13_typescript@5.7.3_/node_modules/@vxe-ui/core/es/src/clipboard.js +1 -1
  77. package/lib/node_modules/.pnpm/@vxe-ui_core@4.3.1_vue@3.5.13_typescript@5.7.3_/node_modules/@vxe-ui/core/es/src/commands.js +1 -1
  78. package/lib/node_modules/.pnpm/@vxe-ui_core@4.3.1_vue@3.5.13_typescript@5.7.3_/node_modules/@vxe-ui/core/es/src/config.js +1 -1
  79. package/lib/node_modules/.pnpm/@vxe-ui_core@4.3.1_vue@3.5.13_typescript@5.7.3_/node_modules/@vxe-ui/core/es/src/event.js +1 -1
  80. package/lib/node_modules/.pnpm/@vxe-ui_core@4.3.1_vue@3.5.13_typescript@5.7.3_/node_modules/@vxe-ui/core/es/src/formats.js +1 -1
  81. package/lib/node_modules/.pnpm/@vxe-ui_core@4.3.1_vue@3.5.13_typescript@5.7.3_/node_modules/@vxe-ui/core/es/src/i18n.js +1 -1
  82. package/lib/node_modules/.pnpm/@vxe-ui_core@4.3.1_vue@3.5.13_typescript@5.7.3_/node_modules/@vxe-ui/core/es/src/icon.js +1 -1
  83. package/lib/node_modules/.pnpm/@vxe-ui_core@4.3.1_vue@3.5.13_typescript@5.7.3_/node_modules/@vxe-ui/core/es/src/interceptor.js +1 -1
  84. package/lib/node_modules/.pnpm/@vxe-ui_core@4.3.1_vue@3.5.13_typescript@5.7.3_/node_modules/@vxe-ui/core/es/src/menus.js +1 -1
  85. package/lib/node_modules/.pnpm/@vxe-ui_core@4.3.1_vue@3.5.13_typescript@5.7.3_/node_modules/@vxe-ui/core/es/src/permission.js +1 -1
  86. package/lib/node_modules/.pnpm/@vxe-ui_core@4.3.1_vue@3.5.13_typescript@5.7.3_/node_modules/@vxe-ui/core/es/src/renderer.js +1 -1
  87. package/lib/node_modules/.pnpm/@vxe-ui_core@4.3.1_vue@3.5.13_typescript@5.7.3_/node_modules/@vxe-ui/core/es/src/resize.js +1 -1
  88. package/lib/node_modules/.pnpm/@vxe-ui_core@4.3.1_vue@3.5.13_typescript@5.7.3_/node_modules/@vxe-ui/core/es/src/store.js +1 -1
  89. package/lib/node_modules/.pnpm/@vxe-ui_core@4.3.1_vue@3.5.13_typescript@5.7.3_/node_modules/@vxe-ui/core/es/src/vm.js +1 -1
  90. package/lib/node_modules/.pnpm/bessel@1.0.2/node_modules/bessel/bessel.js +226 -0
  91. package/lib/node_modules/.pnpm/jstat@1.9.6/node_modules/jstat/dist/jstat.js +3853 -0
  92. package/lib/packages/mobile/src/components/form/field/Field.vue.js +1 -1
  93. package/lib/packages/mobile/src/utils/formatterUtil.js +1 -1
  94. package/lib/packages/mobile/src/utils/optionUtil.js +1 -1
  95. package/lib/packages/vue/index.js +13 -9
  96. package/lib/packages/vue/src/components/all.js +10 -6
  97. package/lib/packages/vue/src/components/details/header/Header.vue.js +1 -1
  98. package/lib/packages/vue/src/components/forms/checkbox/Checkbox.vue.js +8 -2
  99. package/lib/packages/vue/src/components/forms/date/Date.vue.js +6 -6
  100. package/lib/packages/vue/src/components/forms/divider/Divider.vue.js +14 -19
  101. package/lib/packages/vue/src/components/forms/form/Form.vue.js +275 -53
  102. package/lib/packages/vue/src/components/forms/formItem/FormItem.vue.js +63 -35
  103. package/lib/packages/vue/src/components/forms/h2/H2.vue.js +15 -6
  104. package/lib/packages/vue/src/components/forms/multipleSelection/MultipleSelection.vue.js +1 -1
  105. package/lib/packages/vue/src/components/forms/number/Number.vue.js +18 -12
  106. package/lib/packages/vue/src/components/forms/radio/Radio.vue.js +5 -3
  107. package/lib/packages/vue/src/components/forms/select/Select.vue.js +6 -4
  108. package/lib/packages/vue/src/components/forms/subForm/SubForm.vue.js +90 -0
  109. package/lib/packages/vue/src/components/forms/subForm/index.js +7 -0
  110. package/lib/packages/vue/src/components/forms/subTable/SubTable.vue.js +109 -0
  111. package/lib/packages/vue/src/components/forms/subTable/index.js +7 -0
  112. package/lib/packages/vue/src/components/forms/switch/Switch.vue.js +1 -1
  113. package/lib/packages/vue/src/components/forms/text/Text.vue.js +7 -4
  114. package/lib/packages/vue/src/components/forms/textarea/Textarea.vue.js +7 -4
  115. package/lib/packages/vue/src/components/table/CustomButtons.vue.js +16 -16
  116. package/lib/packages/vue/src/components/table/Table.vue.js +195 -74
  117. package/lib/packages/vue/src/components/table/TableColumn.vue.js +46 -5
  118. package/lib/packages/vue/src/components/table/TableFilter.vue.js +306 -0
  119. package/lib/packages/vue/src/composables/usePageEvents.js +4 -5
  120. package/lib/packages/vue/src/utils/common.js +5 -0
  121. package/lib/packages/vue/src/utils/datasource.js +27 -1
  122. package/lib/packages/vue/src/utils/eventFlow/actionHandlers.js +19 -2
  123. package/lib/packages/vue/src/utils/formulajs/calculate.js +57 -0
  124. package/lib/packages/vue/src/utils/formulajs/functionCore.js +17 -0
  125. package/lib/packages/vue/src/utils/parseRouteParams.js +3 -2
  126. package/lib/vue.css +255 -48
  127. package/package.json +1 -1
@@ -14,6 +14,7 @@ const getJsonAsyncUtil = require("../../../utils/getJsonAsyncUtil.js");
14
14
  const FormItem = require("../formItem/FormItem.vue.js");
15
15
  const datasource = require("../../../utils/datasource.js");
16
16
  const validation = require("./validation.js");
17
+ const common = require("../../../utils/common.js");
17
18
  ;/* empty css */
18
19
  ;/* empty css */
19
20
  ;/* empty css */
@@ -25,10 +26,16 @@ const usePageEvents = require("../../../composables/usePageEvents.js");
25
26
  const index$1 = require("../../details/header/index.js");
26
27
  const index$2 = require("../../details/main/index.js");
27
28
  const index$4 = require("../../details/footer/index.js");
29
+ const parseFilterConfig = require("../../../utils/parseFilterConfig.js");
30
+ const calculate = require("../../../utils/formulajs/calculate.js");
31
+ const moment = require("../../../../../../node_modules/.pnpm/moment@2.30.1/node_modules/moment/dist/moment.js");
32
+ ;/* empty css */
33
+ const _pluginVue_exportHelper = require("../../../../../../_virtual/_plugin-vue_export-helper.js");
28
34
  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/container/index.js");
29
35
  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/form/index.js");
30
36
  const gridLayout_vue = require("../../../../../../node_modules/.pnpm/grid-layout-plus@1.1.1_vue@3.5.13_typescript@5.7.3_/node_modules/grid-layout-plus/es/components/grid-layout.vue.js");
31
37
  const index$5 = 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");
38
+ const _hoisted_1 = ["name", "value"];
32
39
  const _sfc_main = /* @__PURE__ */ Object.assign({
33
40
  inheritAttrs: false
34
41
  }, {
@@ -42,15 +49,35 @@ const _sfc_main = /* @__PURE__ */ Object.assign({
42
49
  type: Object,
43
50
  default: () => {
44
51
  }
52
+ },
53
+ modelValue: {
54
+ type: Object,
55
+ default: () => {
56
+ }
57
+ },
58
+ isSubForm: {
59
+ type: Boolean,
60
+ default: false
61
+ },
62
+ canPageEvent: {
63
+ type: Boolean,
64
+ default: true
45
65
  }
46
66
  },
47
- emits: ["submit", "change", "validate"],
67
+ emits: [
68
+ "submit",
69
+ "change",
70
+ "validate",
71
+ "loaded",
72
+ "update:modelValue"
73
+ ],
48
74
  setup(__props, { expose: __expose, emit: __emit }) {
49
75
  const props = __props;
50
76
  const emit = __emit;
51
77
  const instance = vue.getCurrentInstance();
52
78
  const ctx = getInstance.getCurrentVueInstance();
53
79
  const formRef = vue.ref(null);
80
+ const gridLayout = vue.ref(null);
54
81
  const configLoading = vue.ref(true);
55
82
  const configLoaded = vue.ref(false);
56
83
  const localConfig = vue.ref({});
@@ -59,17 +86,22 @@ const _sfc_main = /* @__PURE__ */ Object.assign({
59
86
  const dataSourceOptions = vue.ref({});
60
87
  const dictionaryOptions = vue.ref({});
61
88
  const fieldsData = vue.ref({});
62
- const pageEvents = usePageEvents.usePageEvents(() => ({
89
+ const hiddenFields = vue.ref({});
90
+ const rowHeight = vue.ref(1);
91
+ const pageEvents = props.canPageEvent ? usePageEvents.usePageEvents(() => ({
63
92
  pageEventConfig: localConfig.value.pageEventConfig,
93
+ fields: [...fieldsData.value, ...hiddenFields.value],
64
94
  ctx,
65
95
  formData: formData.value,
66
96
  localConfig: localConfig.value,
67
97
  components: {
68
98
  form: instance == null ? void 0 : instance.proxy
69
99
  }
70
- }));
71
- pageEvents.handleBeforeUnmount();
72
- pageEvents.handleUnmounted();
100
+ })) : null;
101
+ if (pageEvents) {
102
+ pageEvents.handleBeforeUnmount();
103
+ pageEvents.handleUnmounted();
104
+ }
73
105
  const loadConfig = async () => {
74
106
  if (!props.templateKey) {
75
107
  return;
@@ -82,13 +114,16 @@ const _sfc_main = /* @__PURE__ */ Object.assign({
82
114
  "form",
83
115
  props.initOption
84
116
  );
117
+ emit("loaded", option);
118
+ rowHeight.value = option.labelPosition == "top" ? 1.5 : 1;
85
119
  localConfig.value = option;
86
120
  fieldsData.value = option.fieldsData.map((item) => item.component);
87
- initFormData();
121
+ hiddenFields.value = option.hiddenFields || [];
122
+ loadFormData();
88
123
  await loadFieldDataSources();
89
124
  loadEventFlow();
90
125
  configLoaded.value = true;
91
- if (localConfig.value.pageEventConfig) {
126
+ if (pageEvents && localConfig.value.pageEventConfig) {
92
127
  const onCreatedEvent = localConfig.value.pageEventConfig.find(
93
128
  (e) => e.name === "onCreated"
94
129
  );
@@ -104,11 +139,11 @@ const _sfc_main = /* @__PURE__ */ Object.assign({
104
139
  configLoading.value = false;
105
140
  }
106
141
  };
107
- const initFormData = () => {
142
+ const loadFormData = () => {
108
143
  const data = {};
109
144
  const rules = {};
110
- if (localConfig.value.fieldsData) {
111
- localConfig.value.fieldsData.forEach(({ component }) => {
145
+ if (fieldsData.value) {
146
+ fieldsData.value.forEach((component) => {
112
147
  if (component.fieldName) {
113
148
  data[component.fieldName] = component.defaultValue ? component.defaultValue : null;
114
149
  }
@@ -120,15 +155,22 @@ const _sfc_main = /* @__PURE__ */ Object.assign({
120
155
  }
121
156
  });
122
157
  }
123
- formData.value = data;
158
+ if (hiddenFields.value && hiddenFields.value.length > 0) {
159
+ hiddenFields.value.forEach((field) => {
160
+ if (field.fieldName) {
161
+ data[field.fieldName] = field.value !== void 0 ? field.value : null;
162
+ }
163
+ });
164
+ }
165
+ formData.value = { ...data, ...props.modelValue };
124
166
  formRules.value = rules;
125
167
  };
126
168
  const loadFieldDataSources = async () => {
127
169
  var _a, _b;
128
- const fields = localConfig.value.fieldsData || [];
170
+ const fields = fieldsData.value || [];
129
171
  const fieldDataSources = /* @__PURE__ */ new Set();
130
172
  const dictionaryKeys = /* @__PURE__ */ new Set();
131
- for (const { component } of fields) {
173
+ for (const component of fields) {
132
174
  const fieldType = component.fieldType;
133
175
  if ((fieldType === "select" || fieldType === "multipleSelection" || fieldType === "radio" || fieldType === "checkbox") && component.optionConfig) {
134
176
  const { optionSource, dataSourceValue, dictionaryValue } = component.optionConfig;
@@ -188,8 +230,8 @@ const _sfc_main = /* @__PURE__ */ Object.assign({
188
230
  mergeOptionsToFields();
189
231
  };
190
232
  const mergeOptionsToFields = () => {
191
- if (localConfig.value.fieldsData) {
192
- localConfig.value.fieldsData.forEach(({ component }) => {
233
+ if (fieldsData.value) {
234
+ fieldsData.value.forEach((component) => {
193
235
  if (!component.optionConfig) return;
194
236
  const {
195
237
  optionSource,
@@ -228,7 +270,7 @@ const _sfc_main = /* @__PURE__ */ Object.assign({
228
270
  getEventHandlers: createEventHandlers,
229
271
  handleEvent: createHandleEvent
230
272
  } = eventFlowHandler.useEventFlow({
231
- fields: fieldsData.value,
273
+ fields: [...fieldsData.value, ...hiddenFields.value],
232
274
  ctx,
233
275
  dataSources: localConfig.value.dataSources,
234
276
  components: {
@@ -239,7 +281,7 @@ const _sfc_main = /* @__PURE__ */ Object.assign({
239
281
  const getEventHandlers = (row, item, eventConfig) => {
240
282
  return createEventHandlers(item, row, eventConfig);
241
283
  };
242
- localConfig.value.fieldsData.forEach(({ component }) => {
284
+ fieldsData.value.forEach((component) => {
243
285
  if (component.fieldName) {
244
286
  component.eventHandlers = getEventHandlers(
245
287
  formData.value,
@@ -249,14 +291,132 @@ const _sfc_main = /* @__PURE__ */ Object.assign({
249
291
  }
250
292
  });
251
293
  }
294
+ const gridLayoutFieldsData = vue.computed(() => {
295
+ let gridLayoutData = common.cloneDeep(localConfig.value.fieldsData || []);
296
+ gridLayoutData = gridLayoutData.map((item) => {
297
+ item.isResizable = false;
298
+ if (!item.fixedH) {
299
+ item.h = item.h * 60;
300
+ }
301
+ return item;
302
+ });
303
+ const linkedConfig = localConfig.value.linkedConfig || {};
304
+ const dataLink = (linkedConfig == null ? void 0 : linkedConfig.dataLink) || [];
305
+ const fields = [...fieldsData.value, ...hiddenFields.value];
306
+ dataLink.forEach((item) => {
307
+ if (parseFilterConfig.checkFilterMatch(item.filterConfig, formData.value, fields)) {
308
+ const fieldAssignments = item.fieldAssignments || [];
309
+ fieldAssignments.forEach((assignment) => {
310
+ var _a, _b;
311
+ const fieldId = assignment.fieldId;
312
+ const formulaText = (_b = (_a = assignment.formula) == null ? void 0 : _a.value) == null ? void 0 : _b.text;
313
+ const field = fields.find((f) => f.id == fieldId);
314
+ if (field && formulaText) {
315
+ const calcResult = calculate.calculate({
316
+ text: formulaText,
317
+ value: formData.value
318
+ });
319
+ formData.value[field.fieldName] = calcResult;
320
+ }
321
+ });
322
+ }
323
+ });
324
+ const visibility = (linkedConfig == null ? void 0 : linkedConfig.visibility) || [];
325
+ visibility.forEach((item) => {
326
+ const dataLinkFieldList = item.dataLinkFieldList || [];
327
+ if (parseFilterConfig.checkFilterMatch(item.filterConfig, formData.value, fields)) {
328
+ dataLinkFieldList.forEach((fieldId) => {
329
+ const layoutFieldItem = gridLayoutData.find((g) => g.id == fieldId);
330
+ if (layoutFieldItem) {
331
+ layoutFieldItem.hidden = false;
332
+ }
333
+ });
334
+ } else {
335
+ dataLinkFieldList.forEach((fieldId) => {
336
+ const layoutFieldItem = gridLayoutData.find((g) => g.id == fieldId);
337
+ if (layoutFieldItem) {
338
+ layoutFieldItem.hidden = true;
339
+ }
340
+ });
341
+ }
342
+ });
343
+ gridLayoutData = gridLayoutData.filter((item) => !item.hidden);
344
+ const requiredArr = (linkedConfig == null ? void 0 : linkedConfig.required) || [];
345
+ requiredArr.forEach((item) => {
346
+ const dataLinkFieldList = item.dataLinkFieldList || [];
347
+ if (parseFilterConfig.checkFilterMatch(item.filterConfig, formData.value, fields)) {
348
+ dataLinkFieldList.forEach((fieldId) => {
349
+ const layoutFieldItem = gridLayoutData.find((g) => g.id == fieldId);
350
+ if (layoutFieldItem) {
351
+ layoutFieldItem.component.required = true;
352
+ }
353
+ });
354
+ } else {
355
+ dataLinkFieldList.forEach((fieldId) => {
356
+ const layoutFieldItem = gridLayoutData.find((g) => g.id == fieldId);
357
+ if (layoutFieldItem) {
358
+ layoutFieldItem.component.required = false;
359
+ }
360
+ });
361
+ }
362
+ });
363
+ const rules = {};
364
+ gridLayoutData.forEach(({ component }) => {
365
+ if (component.fieldName) {
366
+ const fieldRules = validation.generateFieldRules(component);
367
+ if (fieldRules.length > 0) {
368
+ rules[component.fieldName] = fieldRules;
369
+ }
370
+ }
371
+ });
372
+ formRules.value = rules;
373
+ const readonlyArr = (linkedConfig == null ? void 0 : linkedConfig.readonly) || [];
374
+ readonlyArr.forEach((item) => {
375
+ const dataLinkFieldList = item.dataLinkFieldList || [];
376
+ if (parseFilterConfig.checkFilterMatch(item.filterConfig, formData.value, fields)) {
377
+ dataLinkFieldList.forEach((fieldId) => {
378
+ const layoutFieldItem = gridLayoutData.find((g) => g.id == fieldId);
379
+ if (layoutFieldItem) {
380
+ layoutFieldItem.component.readOnly = true;
381
+ }
382
+ });
383
+ } else {
384
+ dataLinkFieldList.forEach((fieldId) => {
385
+ const layoutFieldItem = gridLayoutData.find((g) => g.id == fieldId);
386
+ if (layoutFieldItem) {
387
+ layoutFieldItem.component.readOnly = false;
388
+ }
389
+ });
390
+ }
391
+ });
392
+ const disabledArr = (linkedConfig == null ? void 0 : linkedConfig.disabled) || [];
393
+ disabledArr.forEach((item) => {
394
+ const dataLinkFieldList = item.dataLinkFieldList || [];
395
+ if (parseFilterConfig.checkFilterMatch(item.filterConfig, formData.value, fields)) {
396
+ dataLinkFieldList.forEach((fieldId) => {
397
+ const layoutFieldItem = gridLayoutData.find((g) => g.id == fieldId);
398
+ if (layoutFieldItem) {
399
+ layoutFieldItem.component.disabled = true;
400
+ }
401
+ });
402
+ } else {
403
+ dataLinkFieldList.forEach((fieldId) => {
404
+ const layoutFieldItem = gridLayoutData.find((g) => g.id == fieldId);
405
+ if (layoutFieldItem) {
406
+ layoutFieldItem.component.disabled = false;
407
+ }
408
+ });
409
+ }
410
+ });
411
+ return gridLayoutData;
412
+ });
252
413
  const getFieldError = (fieldName) => {
253
414
  var _a;
254
415
  if (!formRef.value) return "";
255
416
  const field = (_a = formRef.value.fields) == null ? void 0 : _a.find((f) => f.prop === fieldName);
256
417
  return (field == null ? void 0 : field.validateMessage) || "";
257
418
  };
258
- const handleFieldChange = (value, field) => {
259
- emit("change", { field: field.fieldName, value });
419
+ const handleFieldChange = (config, value) => {
260
420
  };
261
421
  const handleCustomButtonClick = (button) => {
262
422
  var _a;
@@ -274,40 +434,80 @@ const _sfc_main = /* @__PURE__ */ Object.assign({
274
434
  var _a, _b;
275
435
  (_a = formRef.value) == null ? void 0 : _a.clearValidate();
276
436
  (_b = formRef.value) == null ? void 0 : _b.resetFields();
277
- initFormData();
437
+ loadFormData();
438
+ };
439
+ const valueFormatMap = {
440
+ date: "YYYYMMDD",
441
+ week: "YYYYMMDD",
442
+ month: "YYYYMM",
443
+ year: "YYYY",
444
+ datetime: "YYYYMMDDHHmmss"
445
+ };
446
+ const formValueFormatMap = {
447
+ date: "YYYY-MM-DD",
448
+ week: "YYYY-MM-DD",
449
+ month: "YYYY-MM",
450
+ year: "YYYY",
451
+ datetime: "YYYY-MM-DD HH:mm:ss"
278
452
  };
279
453
  const getFormData = () => {
280
454
  const result = { ...formData.value };
281
- if (localConfig.value.fieldsData) {
282
- localConfig.value.fieldsData.forEach(({ component }) => {
283
- const fieldName = component.fieldName;
284
- const fieldType = component.fieldType;
285
- if (fieldName && (fieldType === "checkbox" || fieldType === "multipleSelection")) {
286
- const value = result[fieldName];
287
- if (Array.isArray(value)) {
288
- result[fieldName] = value.join("|");
289
- }
455
+ const processField = (field) => {
456
+ const fieldName = field.fieldName;
457
+ const fieldType = field.fieldType;
458
+ const value = result[fieldName];
459
+ if (fieldName && (fieldType === "checkbox" || fieldType === "multipleSelection")) {
460
+ if (Array.isArray(value)) {
461
+ result[fieldName] = value.join("|");
290
462
  }
463
+ } else if (fieldName && fieldType === "date" && value) {
464
+ const valueFormat = valueFormatMap[field.dateType] || "YYYYMMDD";
465
+ const formValueFormat = formValueFormatMap[field.dateType] || "YYYY-MM-DD";
466
+ result[fieldName] = moment.default(value, formValueFormat).format(valueFormat);
467
+ }
468
+ };
469
+ if (fieldsData.value) {
470
+ fieldsData.value.forEach((component) => {
471
+ processField(component);
472
+ });
473
+ }
474
+ if (hiddenFields.value && hiddenFields.value.length > 0) {
475
+ hiddenFields.value.forEach((field) => {
476
+ processField(field);
291
477
  });
292
478
  }
293
479
  return result;
294
480
  };
295
481
  const setFormData = (data) => {
296
482
  const processedData = { ...data };
297
- if (localConfig.value.fieldsData) {
298
- localConfig.value.fieldsData.forEach(({ component }) => {
299
- const fieldName = component.fieldName;
300
- const fieldType = component.fieldType;
301
- if (fieldName && (fieldType === "checkbox" || fieldType === "multipleSelection")) {
302
- const value = processedData[fieldName];
303
- if (typeof value === "string" && value.includes("|")) {
304
- processedData[fieldName] = value.split("|");
305
- } else if (typeof value === "string" && value !== "") {
306
- processedData[fieldName] = [value];
307
- } else if (value === "" || value === null || value === void 0) {
308
- processedData[fieldName] = [];
309
- }
483
+ const processField = (field) => {
484
+ const fieldName = field.fieldName;
485
+ const fieldType = field.fieldType;
486
+ const value = processedData[fieldName];
487
+ if (fieldName && (fieldType === "checkbox" || fieldType === "multipleSelection")) {
488
+ if (typeof value === "string" && value.includes("|")) {
489
+ processedData[fieldName] = value.split("|");
490
+ } else if (typeof value === "string" && value !== "") {
491
+ processedData[fieldName] = [value];
492
+ } else if (value === "" || value === null || value === void 0) {
493
+ processedData[fieldName] = [];
310
494
  }
495
+ } else if (fieldName && fieldType === "date" && value) {
496
+ const valueFormat = valueFormatMap[field.dateType] || "YYYYMMDD";
497
+ const formValueFormat = formValueFormatMap[field.dateType] || "YYYY-MM-DD";
498
+ processedData[fieldName] = moment.default(value, valueFormat).format(
499
+ formValueFormat
500
+ );
501
+ }
502
+ };
503
+ if (fieldsData.value) {
504
+ fieldsData.value.forEach((component) => {
505
+ processField(component);
506
+ });
507
+ }
508
+ if (hiddenFields.value && hiddenFields.value.length > 0) {
509
+ hiddenFields.value.forEach((field) => {
510
+ processField(field);
311
511
  });
312
512
  }
313
513
  Object.assign(formData.value, processedData);
@@ -315,6 +515,17 @@ const _sfc_main = /* @__PURE__ */ Object.assign({
315
515
  vue.onMounted(() => {
316
516
  loadConfig();
317
517
  });
518
+ vue.watch(
519
+ formData,
520
+ (newVal) => {
521
+ emit("update:modelValue", newVal);
522
+ },
523
+ { deep: true }
524
+ );
525
+ vue.provide("formData", formData);
526
+ vue.provide("rowHeight", rowHeight);
527
+ vue.provide("gridLayout", gridLayout);
528
+ vue.provide("gridLayoutFieldsData", gridLayoutFieldsData);
318
529
  __expose({
319
530
  validate,
320
531
  resetFields,
@@ -330,7 +541,7 @@ const _sfc_main = /* @__PURE__ */ Object.assign({
330
541
  style: { "height": "100%" }
331
542
  }, {
332
543
  default: vue.withCtx(() => [
333
- !configLoading.value ? (vue.openBlock(), vue.createBlock(vue.unref(index$1.header), {
544
+ !configLoading.value && !__props.isSubForm ? (vue.openBlock(), vue.createBlock(vue.unref(index$1.header), {
334
545
  key: 0,
335
546
  pageHeaderConfig: localConfig.value.pageHeaderConfig
336
547
  }, null, 8, ["pageHeaderConfig"])) : vue.createCommentVNode("", true),
@@ -342,16 +553,17 @@ const _sfc_main = /* @__PURE__ */ Object.assign({
342
553
  model: formData.value,
343
554
  rules: formRules.value,
344
555
  "label-position": localConfig.value.labelPosition,
345
- style: { "padding": "18px" },
556
+ style: vue.normalizeStyle({ padding: __props.isSubForm ? "0" : "18px" }),
346
557
  "validate-on-rule-change": false
347
558
  }, {
348
559
  default: vue.withCtx(() => [
349
560
  !configLoading.value ? (vue.openBlock(), vue.createBlock(vue.unref(gridLayout_vue.default), {
350
561
  key: 0,
351
- ref: "gridLayout",
352
- layout: localConfig.value.fieldsData,
353
- "onUpdate:layout": _cache[0] || (_cache[0] = ($event) => localConfig.value.fieldsData = $event),
354
- "row-height": localConfig.value.labelPosition == "top" ? 90 : 60,
562
+ ref_key: "gridLayout",
563
+ ref: gridLayout,
564
+ layout: vue.unref(gridLayoutFieldsData),
565
+ "onUpdate:layout": _cache[0] || (_cache[0] = ($event) => vue.isRef(gridLayoutFieldsData) ? gridLayoutFieldsData.value = $event : null),
566
+ "row-height": rowHeight.value,
355
567
  margin: [0, 0],
356
568
  "col-num": localConfig.value.columns,
357
569
  "is-draggable": false,
@@ -369,21 +581,31 @@ const _sfc_main = /* @__PURE__ */ Object.assign({
369
581
  }, null, 8, ["modelValue", "onUpdate:modelValue", "config", "localConfig", "error", "formRef"])
370
582
  ]),
371
583
  _: 1
372
- }, 8, ["layout", "row-height", "col-num"])) : vue.createCommentVNode("", true)
584
+ }, 8, ["layout", "row-height", "col-num"])) : vue.createCommentVNode("", true),
585
+ (vue.openBlock(true), vue.createElementBlock(vue.Fragment, null, vue.renderList(hiddenFields.value, (field) => {
586
+ return vue.openBlock(), vue.createElementBlock("input", {
587
+ key: field.fieldName,
588
+ type: "hidden",
589
+ name: field.fieldName,
590
+ value: formData.value[field.fieldName]
591
+ }, null, 8, _hoisted_1);
592
+ }), 128))
373
593
  ]),
374
594
  _: 1
375
- }, 8, ["model", "rules", "label-position"])
595
+ }, 8, ["model", "rules", "label-position", "style"])
376
596
  ]),
377
597
  _: 1
378
598
  }),
379
- vue.createVNode(vue.unref(index$4.footer), {
599
+ !__props.isSubForm ? (vue.openBlock(), vue.createBlock(vue.unref(index$4.footer), {
600
+ key: 1,
380
601
  pageFooterConfig: localConfig.value.pageFooterConfig,
381
602
  onCustomButtonClick: handleCustomButtonClick
382
- }, null, 8, ["pageFooterConfig"])
603
+ }, null, 8, ["pageFooterConfig"])) : vue.createCommentVNode("", true)
383
604
  ]),
384
605
  _: 1
385
606
  });
386
607
  };
387
608
  }
388
609
  });
389
- exports.default = _sfc_main;
610
+ const _Form = /* @__PURE__ */ _pluginVue_exportHelper.default(_sfc_main, [["__scopeId", "data-v-8a7ec746"]]);
611
+ exports.default = _Form;
@@ -5,8 +5,11 @@ Object.defineProperties(exports, { __esModule: { value: true }, [Symbol.toString
5
5
  require("../../../../../../node_modules/.pnpm/element-plus@2.13.2_vue@3.5.13_typescript@5.7.3_/node_modules/element-plus/theme-chalk/el-tooltip.css.js");
6
6
  ;/* empty css */
7
7
  const vue = require("vue");
8
- const index$3 = 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");
9
8
  const debounce = require("../form/debounce.js");
9
+ const index$1 = require("../divider/index.js");
10
+ const index = require("../h2/index.js");
11
+ const index$2 = require("../subForm/index.js");
12
+ const index$3 = require("../subTable/index.js");
10
13
  const Text = require("../text/Text.vue.js");
11
14
  const Textarea = require("../textarea/Textarea.vue.js");
12
15
  const Number$1 = require("../number/Number.vue.js");
@@ -17,13 +20,18 @@ const Radio = require("../radio/Radio.vue.js");
17
20
  const Checkbox = require("../checkbox/Checkbox.vue.js");
18
21
  const Switch = require("../switch/Switch.vue.js");
19
22
  const Upload = require("../upload/Upload.vue.js");
20
- const Divider = require("../divider/Divider.vue.js");
21
- const H2 = require("../h2/H2.vue.js");
22
23
  ;/* empty css */
23
24
  const _pluginVue_exportHelper = require("../../../../../../_virtual/_plugin-vue_export-helper.js");
24
- 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/form/index.js");
25
- 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/tooltip/index.js");
26
- 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/icon/index.js");
25
+ const index$4 = 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");
26
+ const index$5 = require("../../../../../../node_modules/.pnpm/element-plus@2.13.2_vue@3.5.13_typescript@5.7.3_/node_modules/element-plus/es/components/tooltip/index.js");
27
+ const _hoisted_1 = {
28
+ key: 0,
29
+ class: "iconfont icon-iconZheng credit-icon"
30
+ };
31
+ const _hoisted_2 = {
32
+ key: 1,
33
+ class: "iconfont icon-iconJian regulation-icon"
34
+ };
27
35
  const _sfc_main = /* @__PURE__ */ Object.assign({
28
36
  inheritAttrs: false
29
37
  }, {
@@ -50,10 +58,13 @@ const _sfc_main = /* @__PURE__ */ Object.assign({
50
58
  default: null
51
59
  }
52
60
  },
53
- emits: ["update:modelValue"],
61
+ emits: ["update:modelValue", "change"],
54
62
  setup(__props, { emit: __emit }) {
55
63
  const props = __props;
56
64
  const emit = __emit;
65
+ function handleChange(config, val) {
66
+ emit("change", config, val);
67
+ }
57
68
  const componentMap = {
58
69
  text: Text.default,
59
70
  textarea: Textarea.default,
@@ -64,9 +75,7 @@ const _sfc_main = /* @__PURE__ */ Object.assign({
64
75
  radio: Radio.default,
65
76
  checkbox: Checkbox.default,
66
77
  switch: Switch.default,
67
- upload: Upload.default,
68
- divider: Divider.default,
69
- h2: H2.default
78
+ upload: Upload.default
70
79
  };
71
80
  const componentType = vue.computed(() => {
72
81
  return componentMap[props.config.fieldType];
@@ -105,10 +114,24 @@ const _sfc_main = /* @__PURE__ */ Object.assign({
105
114
  }
106
115
  });
107
116
  return (_ctx, _cache) => {
108
- const _component_el_icon = index$2.ElIcon;
109
- const _component_el_tooltip = index$1.ElTooltip;
110
- const _component_el_form_item = index.ElFormItem;
111
- return vue.openBlock(), vue.createBlock(_component_el_form_item, {
117
+ const _component_el_tooltip = index$5.ElTooltip;
118
+ const _component_el_form_item = index$4.ElFormItem;
119
+ return __props.config.fieldType == "h2" ? (vue.openBlock(), vue.createBlock(vue.unref(index.H2), {
120
+ key: 0,
121
+ config: __props.config
122
+ }, null, 8, ["config"])) : __props.config.fieldType == "divider" ? (vue.openBlock(), vue.createBlock(vue.unref(index$1.Divider), {
123
+ key: 1,
124
+ config: __props.config
125
+ }, null, 8, ["config"])) : __props.config.fieldType == "subForm" ? (vue.openBlock(), vue.createBlock(vue.unref(index$2.SubForm), {
126
+ key: 2,
127
+ config: __props.config,
128
+ localConfig: __props.localConfig
129
+ }, null, 8, ["config", "localConfig"])) : __props.config.fieldType == "subTable" ? (vue.openBlock(), vue.createBlock(vue.unref(index$3.SubTable), {
130
+ key: 3,
131
+ config: __props.config,
132
+ localConfig: __props.localConfig
133
+ }, null, 8, ["config", "localConfig"])) : (vue.openBlock(), vue.createBlock(_component_el_form_item, {
134
+ key: 4,
112
135
  prop: __props.config.fieldName,
113
136
  required: __props.config.required,
114
137
  error: __props.error,
@@ -119,35 +142,40 @@ const _sfc_main = /* @__PURE__ */ Object.assign({
119
142
  key: 0,
120
143
  modelValue: compValue.value,
121
144
  "onUpdate:modelValue": _cache[0] || (_cache[0] = ($event) => compValue.value = $event)
122
- }, componentProps.value, { config: __props.config }), null, 16, ["modelValue", "config"])) : vue.createCommentVNode("", true)
145
+ }, componentProps.value, {
146
+ config: __props.config,
147
+ onChange: _cache[1] || (_cache[1] = (value) => {
148
+ handleChange(__props.config, value);
149
+ })
150
+ }), null, 16, ["modelValue", "config"])) : vue.createCommentVNode("", true)
123
151
  ]),
124
152
  _: 2
125
153
  }, [
126
154
  __props.config.labelMode != "input" ? {
127
155
  name: "label",
128
- fn: vue.withCtx(() => [
129
- vue.createElementVNode("span", null, vue.toDisplayString(__props.config.label), 1),
130
- __props.config.tooltip ? (vue.openBlock(), vue.createBlock(_component_el_tooltip, {
131
- key: 0,
132
- content: __props.config.tooltip,
133
- placement: "top"
134
- }, {
135
- default: vue.withCtx(() => [
136
- vue.createVNode(_component_el_icon, { class: "info-icon" }, {
137
- default: vue.withCtx(() => [
138
- vue.createVNode(vue.unref(index$3.QuestionFilled))
139
- ]),
140
- _: 1
141
- })
142
- ]),
143
- _: 1
144
- }, 8, ["content"])) : vue.createCommentVNode("", true)
145
- ]),
156
+ fn: vue.withCtx(() => {
157
+ var _a;
158
+ return [
159
+ __props.config.credit ? (vue.openBlock(), vue.createElementBlock("i", _hoisted_1)) : vue.createCommentVNode("", true),
160
+ __props.config.regulation ? (vue.openBlock(), vue.createElementBlock("i", _hoisted_2)) : vue.createCommentVNode("", true),
161
+ vue.createElementVNode("span", null, vue.toDisplayString(__props.config.label), 1),
162
+ ((_a = __props.config.tooltip) == null ? void 0 : _a.trim()) ? (vue.openBlock(), vue.createBlock(_component_el_tooltip, {
163
+ key: 2,
164
+ content: __props.config.tooltip,
165
+ placement: "top"
166
+ }, {
167
+ default: vue.withCtx(() => _cache[2] || (_cache[2] = [
168
+ vue.createElementVNode("i", { class: "iconfont icon-tooltip info-icon" }, null, -1)
169
+ ])),
170
+ _: 1
171
+ }, 8, ["content"])) : vue.createCommentVNode("", true)
172
+ ];
173
+ }),
146
174
  key: "0"
147
175
  } : void 0
148
- ]), 1032, ["prop", "required", "error", "label-width"]);
176
+ ]), 1032, ["prop", "required", "error", "label-width"]));
149
177
  };
150
178
  }
151
179
  });
152
- const _FormItem = /* @__PURE__ */ _pluginVue_exportHelper.default(_sfc_main, [["__scopeId", "data-v-056f6e4b"]]);
180
+ const _FormItem = /* @__PURE__ */ _pluginVue_exportHelper.default(_sfc_main, [["__scopeId", "data-v-3adaccae"]]);
153
181
  exports.default = _FormItem;