@fecp/vue 1.1.3 → 1.1.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (119) 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/@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
  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/src/clipboard.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/commands.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/config.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/event.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/formats.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/i18n.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/icon.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/interceptor.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/menus.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/permission.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/renderer.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/resize.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/store.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/vm.mjs +1 -1
  23. package/es/node_modules/.pnpm/bessel@1.0.2/node_modules/bessel/bessel.mjs +226 -0
  24. 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
  25. package/es/node_modules/.pnpm/jstat@1.9.6/node_modules/jstat/dist/jstat.mjs +3853 -0
  26. package/es/packages/mobile/src/components/form/field/Field.vue.mjs +1 -1
  27. package/es/packages/mobile/src/utils/formatterUtil.mjs +1 -1
  28. package/es/packages/mobile/src/utils/optionUtil.mjs +1 -1
  29. package/es/packages/vue/index.mjs +4 -0
  30. package/es/packages/vue/src/components/all.mjs +4 -0
  31. package/es/packages/vue/src/components/details/header/Header.vue.mjs +1 -1
  32. package/es/packages/vue/src/components/forms/checkbox/Checkbox.vue.mjs +8 -2
  33. package/es/packages/vue/src/components/forms/date/Date.vue.mjs +6 -6
  34. package/es/packages/vue/src/components/forms/divider/Divider.vue.mjs +15 -20
  35. package/es/packages/vue/src/components/forms/divider/index.mjs +2 -2
  36. package/es/packages/vue/src/components/forms/form/Form.vue.mjs +287 -96
  37. package/es/packages/vue/src/components/forms/form/index.mjs +2 -2
  38. package/es/packages/vue/src/components/forms/formItem/FormItem.vue.mjs +76 -48
  39. package/es/packages/vue/src/components/forms/h2/H2.vue.mjs +16 -7
  40. package/es/packages/vue/src/components/forms/multipleSelection/MultipleSelection.vue.mjs +1 -1
  41. package/es/packages/vue/src/components/forms/number/Number.vue.mjs +18 -12
  42. package/es/packages/vue/src/components/forms/radio/Radio.vue.mjs +5 -3
  43. package/es/packages/vue/src/components/forms/select/Select.vue.mjs +6 -4
  44. package/es/packages/vue/src/components/forms/subForm/SubForm.vue.mjs +90 -0
  45. package/es/packages/vue/src/components/forms/subForm/index.mjs +7 -0
  46. package/es/packages/vue/src/components/forms/subTable/SubTable.vue.mjs +110 -0
  47. package/es/packages/vue/src/components/forms/subTable/index.mjs +7 -0
  48. package/es/packages/vue/src/components/forms/switch/Switch.vue.mjs +1 -1
  49. package/es/packages/vue/src/components/forms/text/Text.vue.mjs +6 -3
  50. package/es/packages/vue/src/components/forms/textarea/Textarea.vue.mjs +7 -4
  51. package/es/packages/vue/src/components/table/CustomButtons.vue.mjs +17 -17
  52. package/es/packages/vue/src/components/table/Table.vue.mjs +143 -77
  53. package/es/packages/vue/src/components/table/TableColumn.vue.mjs +37 -5
  54. package/es/packages/vue/src/components/table/TableFilter.vue.mjs +60 -21
  55. package/es/packages/vue/src/components/table/index.mjs +2 -2
  56. package/es/packages/vue/src/composables/usePageEvents.mjs +4 -5
  57. package/es/packages/vue/src/utils/common.mjs +5 -0
  58. package/es/packages/vue/src/utils/datasource.mjs +19 -5
  59. package/es/packages/vue/src/utils/formulajs/calculate.mjs +57 -0
  60. package/es/packages/vue/src/utils/formulajs/functionCore.mjs +17 -0
  61. package/es/vue.css +170 -61
  62. package/lib/_virtual/bessel.js +7 -0
  63. package/lib/_virtual/bessel2.js +4 -0
  64. package/lib/_virtual/index.js +1 -1
  65. package/lib/_virtual/index2.js +1 -1
  66. package/lib/_virtual/jstat.js +7 -0
  67. package/lib/_virtual/jstat2.js +4 -0
  68. package/lib/node_modules/.pnpm/@formulajs_formulajs@4.5.6/node_modules/@formulajs/formulajs/lib/esm/index.js +7150 -0
  69. 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
  70. 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
  71. 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
  72. 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
  73. 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
  74. 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
  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/src/i18n.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/icon.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/interceptor.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/menus.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/permission.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/renderer.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/resize.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/store.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/vm.js +1 -1
  84. package/lib/node_modules/.pnpm/bessel@1.0.2/node_modules/bessel/bessel.js +226 -0
  85. package/lib/node_modules/.pnpm/jstat@1.9.6/node_modules/jstat/dist/jstat.js +3853 -0
  86. package/lib/packages/mobile/src/components/form/field/Field.vue.js +1 -1
  87. package/lib/packages/mobile/src/utils/formatterUtil.js +1 -1
  88. package/lib/packages/mobile/src/utils/optionUtil.js +1 -1
  89. package/lib/packages/vue/index.js +13 -9
  90. package/lib/packages/vue/src/components/all.js +10 -6
  91. package/lib/packages/vue/src/components/details/header/Header.vue.js +1 -1
  92. package/lib/packages/vue/src/components/forms/checkbox/Checkbox.vue.js +8 -2
  93. package/lib/packages/vue/src/components/forms/date/Date.vue.js +6 -6
  94. package/lib/packages/vue/src/components/forms/divider/Divider.vue.js +14 -19
  95. package/lib/packages/vue/src/components/forms/form/Form.vue.js +286 -95
  96. package/lib/packages/vue/src/components/forms/formItem/FormItem.vue.js +63 -35
  97. package/lib/packages/vue/src/components/forms/h2/H2.vue.js +15 -6
  98. package/lib/packages/vue/src/components/forms/multipleSelection/MultipleSelection.vue.js +1 -1
  99. package/lib/packages/vue/src/components/forms/number/Number.vue.js +18 -12
  100. package/lib/packages/vue/src/components/forms/radio/Radio.vue.js +5 -3
  101. package/lib/packages/vue/src/components/forms/select/Select.vue.js +6 -4
  102. package/lib/packages/vue/src/components/forms/subForm/SubForm.vue.js +90 -0
  103. package/lib/packages/vue/src/components/forms/subForm/index.js +7 -0
  104. package/lib/packages/vue/src/components/forms/subTable/SubTable.vue.js +110 -0
  105. package/lib/packages/vue/src/components/forms/subTable/index.js +7 -0
  106. package/lib/packages/vue/src/components/forms/switch/Switch.vue.js +1 -1
  107. package/lib/packages/vue/src/components/forms/text/Text.vue.js +6 -3
  108. package/lib/packages/vue/src/components/forms/textarea/Textarea.vue.js +7 -4
  109. package/lib/packages/vue/src/components/table/CustomButtons.vue.js +16 -16
  110. package/lib/packages/vue/src/components/table/Table.vue.js +145 -79
  111. package/lib/packages/vue/src/components/table/TableColumn.vue.js +37 -5
  112. package/lib/packages/vue/src/components/table/TableFilter.vue.js +82 -43
  113. package/lib/packages/vue/src/composables/usePageEvents.js +4 -5
  114. package/lib/packages/vue/src/utils/common.js +5 -0
  115. package/lib/packages/vue/src/utils/datasource.js +19 -5
  116. package/lib/packages/vue/src/utils/formulajs/calculate.js +57 -0
  117. package/lib/packages/vue/src/utils/formulajs/functionCore.js +17 -0
  118. package/lib/vue.css +170 -61
  119. 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,6 +26,11 @@ 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");
@@ -43,15 +49,35 @@ const _sfc_main = /* @__PURE__ */ Object.assign({
43
49
  type: Object,
44
50
  default: () => {
45
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
46
65
  }
47
66
  },
48
- emits: ["submit", "change", "validate"],
67
+ emits: [
68
+ "submit",
69
+ "change",
70
+ "validate",
71
+ "loaded",
72
+ "update:modelValue"
73
+ ],
49
74
  setup(__props, { expose: __expose, emit: __emit }) {
50
75
  const props = __props;
51
76
  const emit = __emit;
52
77
  const instance = vue.getCurrentInstance();
53
78
  const ctx = getInstance.getCurrentVueInstance();
54
79
  const formRef = vue.ref(null);
80
+ const gridLayout = vue.ref(null);
55
81
  const configLoading = vue.ref(true);
56
82
  const configLoaded = vue.ref(false);
57
83
  const localConfig = vue.ref({});
@@ -61,17 +87,21 @@ const _sfc_main = /* @__PURE__ */ Object.assign({
61
87
  const dictionaryOptions = vue.ref({});
62
88
  const fieldsData = vue.ref({});
63
89
  const hiddenFields = vue.ref({});
64
- const pageEvents = usePageEvents.usePageEvents(() => ({
90
+ const rowHeight = vue.ref(1);
91
+ const pageEvents = props.canPageEvent ? usePageEvents.usePageEvents(() => ({
65
92
  pageEventConfig: localConfig.value.pageEventConfig,
93
+ fields: [...fieldsData.value, ...hiddenFields.value],
66
94
  ctx,
67
95
  formData: formData.value,
68
96
  localConfig: localConfig.value,
69
97
  components: {
70
98
  form: instance == null ? void 0 : instance.proxy
71
99
  }
72
- }));
73
- pageEvents.handleBeforeUnmount();
74
- pageEvents.handleUnmounted();
100
+ })) : null;
101
+ if (pageEvents) {
102
+ pageEvents.handleBeforeUnmount();
103
+ pageEvents.handleUnmounted();
104
+ }
75
105
  const loadConfig = async () => {
76
106
  if (!props.templateKey) {
77
107
  return;
@@ -84,14 +114,16 @@ const _sfc_main = /* @__PURE__ */ Object.assign({
84
114
  "form",
85
115
  props.initOption
86
116
  );
117
+ emit("loaded", option);
118
+ rowHeight.value = option.labelPosition == "top" ? 1.5 : 1;
87
119
  localConfig.value = option;
88
120
  fieldsData.value = option.fieldsData.map((item) => item.component);
89
121
  hiddenFields.value = option.hiddenFields || [];
90
- initFormData();
122
+ loadFormData();
91
123
  await loadFieldDataSources();
92
124
  loadEventFlow();
93
125
  configLoaded.value = true;
94
- if (localConfig.value.pageEventConfig) {
126
+ if (pageEvents && localConfig.value.pageEventConfig) {
95
127
  const onCreatedEvent = localConfig.value.pageEventConfig.find(
96
128
  (e) => e.name === "onCreated"
97
129
  );
@@ -107,11 +139,11 @@ const _sfc_main = /* @__PURE__ */ Object.assign({
107
139
  configLoading.value = false;
108
140
  }
109
141
  };
110
- const initFormData = () => {
142
+ const loadFormData = () => {
111
143
  const data = {};
112
144
  const rules = {};
113
- if (localConfig.value.fieldsData) {
114
- localConfig.value.fieldsData.forEach(({ component }) => {
145
+ if (fieldsData.value) {
146
+ fieldsData.value.forEach((component) => {
115
147
  if (component.fieldName) {
116
148
  data[component.fieldName] = component.defaultValue ? component.defaultValue : null;
117
149
  }
@@ -130,15 +162,15 @@ const _sfc_main = /* @__PURE__ */ Object.assign({
130
162
  }
131
163
  });
132
164
  }
133
- formData.value = data;
165
+ formData.value = { ...data, ...props.modelValue };
134
166
  formRules.value = rules;
135
167
  };
136
168
  const loadFieldDataSources = async () => {
137
169
  var _a, _b;
138
- const fields = localConfig.value.fieldsData || [];
170
+ const fields = fieldsData.value || [];
139
171
  const fieldDataSources = /* @__PURE__ */ new Set();
140
172
  const dictionaryKeys = /* @__PURE__ */ new Set();
141
- for (const { component } of fields) {
173
+ for (const component of fields) {
142
174
  const fieldType = component.fieldType;
143
175
  if ((fieldType === "select" || fieldType === "multipleSelection" || fieldType === "radio" || fieldType === "checkbox") && component.optionConfig) {
144
176
  const { optionSource, dataSourceValue, dictionaryValue } = component.optionConfig;
@@ -198,8 +230,8 @@ const _sfc_main = /* @__PURE__ */ Object.assign({
198
230
  mergeOptionsToFields();
199
231
  };
200
232
  const mergeOptionsToFields = () => {
201
- if (localConfig.value.fieldsData) {
202
- localConfig.value.fieldsData.forEach(({ component }) => {
233
+ if (fieldsData.value) {
234
+ fieldsData.value.forEach((component) => {
203
235
  if (!component.optionConfig) return;
204
236
  const {
205
237
  optionSource,
@@ -249,7 +281,7 @@ const _sfc_main = /* @__PURE__ */ Object.assign({
249
281
  const getEventHandlers = (row, item, eventConfig) => {
250
282
  return createEventHandlers(item, row, eventConfig);
251
283
  };
252
- localConfig.value.fieldsData.forEach(({ component }) => {
284
+ fieldsData.value.forEach((component) => {
253
285
  if (component.fieldName) {
254
286
  component.eventHandlers = getEventHandlers(
255
287
  formData.value,
@@ -259,14 +291,138 @@ const _sfc_main = /* @__PURE__ */ Object.assign({
259
291
  }
260
292
  });
261
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.y = item.y * 60;
300
+ item.h = item.h * 60;
301
+ }
302
+ return item;
303
+ });
304
+ console.log(
305
+ "🚀 ~ localConfig.value.fieldsData:",
306
+ localConfig.value.fieldsData
307
+ );
308
+ const linkedConfig = localConfig.value.linkedConfig || {};
309
+ const dataLink = (linkedConfig == null ? void 0 : linkedConfig.dataLink) || [];
310
+ const fields = [...fieldsData.value, ...hiddenFields.value];
311
+ dataLink.forEach((item) => {
312
+ if (parseFilterConfig.checkFilterMatch(item.filterConfig, formData.value, fields)) {
313
+ const fieldAssignments = item.fieldAssignments || [];
314
+ fieldAssignments.forEach((assignment) => {
315
+ var _a, _b;
316
+ const fieldId = assignment.fieldId;
317
+ const formulaText = (_b = (_a = assignment.formula) == null ? void 0 : _a.value) == null ? void 0 : _b.text;
318
+ const field = fields.find((f) => f.id == fieldId);
319
+ if (field && formulaText) {
320
+ const calcResult = calculate.calculate({
321
+ text: formulaText,
322
+ value: formData.value
323
+ });
324
+ formData.value[field.fieldName] = calcResult;
325
+ }
326
+ });
327
+ }
328
+ });
329
+ const visibility = (linkedConfig == null ? void 0 : linkedConfig.visibility) || [];
330
+ visibility.forEach((item) => {
331
+ const dataLinkFieldList = item.dataLinkFieldList || [];
332
+ if (parseFilterConfig.checkFilterMatch(item.filterConfig, formData.value, fields)) {
333
+ dataLinkFieldList.forEach((fieldId) => {
334
+ const layoutFieldItem = gridLayoutData.find((g) => g.id == fieldId);
335
+ if (layoutFieldItem) {
336
+ layoutFieldItem.hidden = false;
337
+ }
338
+ });
339
+ } else {
340
+ dataLinkFieldList.forEach((fieldId) => {
341
+ const layoutFieldItem = gridLayoutData.find((g) => g.id == fieldId);
342
+ if (layoutFieldItem) {
343
+ layoutFieldItem.hidden = true;
344
+ }
345
+ });
346
+ }
347
+ });
348
+ gridLayoutData = gridLayoutData.filter((item) => !item.hidden);
349
+ const requiredArr = (linkedConfig == null ? void 0 : linkedConfig.required) || [];
350
+ requiredArr.forEach((item) => {
351
+ const dataLinkFieldList = item.dataLinkFieldList || [];
352
+ if (parseFilterConfig.checkFilterMatch(item.filterConfig, formData.value, fields)) {
353
+ dataLinkFieldList.forEach((fieldId) => {
354
+ const layoutFieldItem = gridLayoutData.find((g) => g.id == fieldId);
355
+ if (layoutFieldItem) {
356
+ layoutFieldItem.component.required = true;
357
+ }
358
+ });
359
+ } else {
360
+ dataLinkFieldList.forEach((fieldId) => {
361
+ const layoutFieldItem = gridLayoutData.find((g) => g.id == fieldId);
362
+ if (layoutFieldItem) {
363
+ layoutFieldItem.component.required = false;
364
+ }
365
+ });
366
+ }
367
+ });
368
+ const rules = {};
369
+ gridLayoutData.forEach(({ component }) => {
370
+ if (component.fieldName) {
371
+ const fieldRules = validation.generateFieldRules(component);
372
+ if (fieldRules.length > 0) {
373
+ rules[component.fieldName] = fieldRules;
374
+ }
375
+ }
376
+ });
377
+ formRules.value = rules;
378
+ const readonlyArr = (linkedConfig == null ? void 0 : linkedConfig.readonly) || [];
379
+ readonlyArr.forEach((item) => {
380
+ const dataLinkFieldList = item.dataLinkFieldList || [];
381
+ if (parseFilterConfig.checkFilterMatch(item.filterConfig, formData.value, fields)) {
382
+ dataLinkFieldList.forEach((fieldId) => {
383
+ const layoutFieldItem = gridLayoutData.find((g) => g.id == fieldId);
384
+ if (layoutFieldItem) {
385
+ layoutFieldItem.component.readOnly = true;
386
+ }
387
+ });
388
+ } else {
389
+ dataLinkFieldList.forEach((fieldId) => {
390
+ const layoutFieldItem = gridLayoutData.find((g) => g.id == fieldId);
391
+ if (layoutFieldItem) {
392
+ layoutFieldItem.component.readOnly = false;
393
+ }
394
+ });
395
+ }
396
+ });
397
+ const disabledArr = (linkedConfig == null ? void 0 : linkedConfig.disabled) || [];
398
+ disabledArr.forEach((item) => {
399
+ const dataLinkFieldList = item.dataLinkFieldList || [];
400
+ if (parseFilterConfig.checkFilterMatch(item.filterConfig, formData.value, fields)) {
401
+ dataLinkFieldList.forEach((fieldId) => {
402
+ const layoutFieldItem = gridLayoutData.find((g) => g.id == fieldId);
403
+ if (layoutFieldItem) {
404
+ layoutFieldItem.component.disabled = true;
405
+ }
406
+ });
407
+ } else {
408
+ dataLinkFieldList.forEach((fieldId) => {
409
+ const layoutFieldItem = gridLayoutData.find((g) => g.id == fieldId);
410
+ if (layoutFieldItem) {
411
+ layoutFieldItem.component.disabled = false;
412
+ }
413
+ });
414
+ }
415
+ });
416
+ console.log("🚀 ~ gridLayoutData:", gridLayoutData);
417
+ return gridLayoutData;
418
+ });
262
419
  const getFieldError = (fieldName) => {
263
420
  var _a;
264
421
  if (!formRef.value) return "";
265
422
  const field = (_a = formRef.value.fields) == null ? void 0 : _a.find((f) => f.prop === fieldName);
266
423
  return (field == null ? void 0 : field.validateMessage) || "";
267
424
  };
268
- const handleFieldChange = (value, field) => {
269
- emit("change", { field: field.fieldName, value });
425
+ const handleFieldChange = (config, value) => {
270
426
  };
271
427
  const handleCustomButtonClick = (button) => {
272
428
  var _a;
@@ -284,22 +440,40 @@ const _sfc_main = /* @__PURE__ */ Object.assign({
284
440
  var _a, _b;
285
441
  (_a = formRef.value) == null ? void 0 : _a.clearValidate();
286
442
  (_b = formRef.value) == null ? void 0 : _b.resetFields();
287
- initFormData();
443
+ loadFormData();
444
+ };
445
+ const valueFormatMap = {
446
+ date: "YYYYMMDD",
447
+ week: "YYYYMMDD",
448
+ month: "YYYYMM",
449
+ year: "YYYY",
450
+ datetime: "YYYYMMDDHHmmss"
451
+ };
452
+ const formValueFormatMap = {
453
+ date: "YYYY-MM-DD",
454
+ week: "YYYY-MM-DD",
455
+ month: "YYYY-MM",
456
+ year: "YYYY",
457
+ datetime: "YYYY-MM-DD HH:mm:ss"
288
458
  };
289
459
  const getFormData = () => {
290
460
  const result = { ...formData.value };
291
461
  const processField = (field) => {
292
462
  const fieldName = field.fieldName;
293
463
  const fieldType = field.fieldType;
464
+ const value = result[fieldName];
294
465
  if (fieldName && (fieldType === "checkbox" || fieldType === "multipleSelection")) {
295
- const value = result[fieldName];
296
466
  if (Array.isArray(value)) {
297
467
  result[fieldName] = value.join("|");
298
468
  }
469
+ } else if (fieldName && fieldType === "date" && value) {
470
+ const valueFormat = valueFormatMap[field.dateType] || "YYYYMMDD";
471
+ const formValueFormat = formValueFormatMap[field.dateType] || "YYYY-MM-DD";
472
+ result[fieldName] = moment.default(value, formValueFormat).format(valueFormat);
299
473
  }
300
474
  };
301
- if (localConfig.value.fieldsData) {
302
- localConfig.value.fieldsData.forEach(({ component }) => {
475
+ if (fieldsData.value) {
476
+ fieldsData.value.forEach((component) => {
303
477
  processField(component);
304
478
  });
305
479
  }
@@ -315,8 +489,8 @@ const _sfc_main = /* @__PURE__ */ Object.assign({
315
489
  const processField = (field) => {
316
490
  const fieldName = field.fieldName;
317
491
  const fieldType = field.fieldType;
492
+ const value = processedData[fieldName];
318
493
  if (fieldName && (fieldType === "checkbox" || fieldType === "multipleSelection")) {
319
- const value = processedData[fieldName];
320
494
  if (typeof value === "string" && value.includes("|")) {
321
495
  processedData[fieldName] = value.split("|");
322
496
  } else if (typeof value === "string" && value !== "") {
@@ -324,10 +498,16 @@ const _sfc_main = /* @__PURE__ */ Object.assign({
324
498
  } else if (value === "" || value === null || value === void 0) {
325
499
  processedData[fieldName] = [];
326
500
  }
501
+ } else if (fieldName && fieldType === "date" && value) {
502
+ const valueFormat = valueFormatMap[field.dateType] || "YYYYMMDD";
503
+ const formValueFormat = formValueFormatMap[field.dateType] || "YYYY-MM-DD";
504
+ processedData[fieldName] = moment.default(value, valueFormat).format(
505
+ formValueFormat
506
+ );
327
507
  }
328
508
  };
329
- if (localConfig.value.fieldsData) {
330
- localConfig.value.fieldsData.forEach(({ component }) => {
509
+ if (fieldsData.value) {
510
+ fieldsData.value.forEach((component) => {
331
511
  processField(component);
332
512
  });
333
513
  }
@@ -341,6 +521,17 @@ const _sfc_main = /* @__PURE__ */ Object.assign({
341
521
  vue.onMounted(() => {
342
522
  loadConfig();
343
523
  });
524
+ vue.watch(
525
+ formData,
526
+ (newVal) => {
527
+ emit("update:modelValue", newVal);
528
+ },
529
+ { deep: true }
530
+ );
531
+ vue.provide("formData", formData);
532
+ vue.provide("rowHeight", rowHeight);
533
+ vue.provide("gridLayout", gridLayout);
534
+ vue.provide("gridLayoutFieldsData", gridLayoutFieldsData);
344
535
  __expose({
345
536
  validate,
346
537
  resetFields,
@@ -351,76 +542,76 @@ const _sfc_main = /* @__PURE__ */ Object.assign({
351
542
  return (_ctx, _cache) => {
352
543
  const _component_el_form = index$3.ElForm;
353
544
  const _component_el_container = index.ElContainer;
354
- return vue.openBlock(), vue.createElementBlock(vue.Fragment, null, [
355
- vue.createVNode(_component_el_container, {
356
- direction: "vertical",
357
- style: { "height": "100%" }
358
- }, {
359
- default: vue.withCtx(() => [
360
- !configLoading.value ? (vue.openBlock(), vue.createBlock(vue.unref(index$1.header), {
361
- key: 0,
362
- pageHeaderConfig: localConfig.value.pageHeaderConfig
363
- }, null, 8, ["pageHeaderConfig"])) : vue.createCommentVNode("", true),
364
- vue.createVNode(vue.unref(index$2.main), null, {
365
- default: vue.withCtx(() => [
366
- vue.createVNode(_component_el_form, {
367
- ref_key: "formRef",
368
- ref: formRef,
369
- model: formData.value,
370
- rules: formRules.value,
371
- "label-position": localConfig.value.labelPosition,
372
- style: { "padding": "18px" },
373
- "validate-on-rule-change": false
374
- }, {
375
- default: vue.withCtx(() => [
376
- !configLoading.value ? (vue.openBlock(), vue.createBlock(vue.unref(gridLayout_vue.default), {
377
- key: 0,
378
- ref: "gridLayout",
379
- layout: localConfig.value.fieldsData,
380
- "onUpdate:layout": _cache[0] || (_cache[0] = ($event) => localConfig.value.fieldsData = $event),
381
- "row-height": localConfig.value.labelPosition == "top" ? 90 : 60,
382
- margin: [0, 0],
383
- "col-num": localConfig.value.columns,
384
- "is-draggable": false,
385
- "is-resizable": false
386
- }, {
387
- item: vue.withCtx(({ item: { component } }) => [
388
- vue.createVNode(FormItem.default, {
389
- modelValue: formData.value[component.fieldName],
390
- "onUpdate:modelValue": ($event) => formData.value[component.fieldName] = $event,
391
- config: component,
392
- localConfig: localConfig.value,
393
- error: getFieldError(component.fieldName),
394
- formRef: formRef.value,
395
- onChange: handleFieldChange
396
- }, null, 8, ["modelValue", "onUpdate:modelValue", "config", "localConfig", "error", "formRef"])
397
- ]),
398
- _: 1
399
- }, 8, ["layout", "row-height", "col-num"])) : vue.createCommentVNode("", true),
400
- (vue.openBlock(true), vue.createElementBlock(vue.Fragment, null, vue.renderList(hiddenFields.value, (field) => {
401
- return vue.openBlock(), vue.createElementBlock("input", {
402
- key: field.fieldName,
403
- type: "hidden",
404
- name: field.fieldName,
405
- value: formData.value[field.fieldName]
406
- }, null, 8, _hoisted_1);
407
- }), 128))
408
- ]),
409
- _: 1
410
- }, 8, ["model", "rules", "label-position"])
411
- ]),
412
- _: 1
413
- }),
414
- vue.createVNode(vue.unref(index$4.footer), {
415
- pageFooterConfig: localConfig.value.pageFooterConfig,
416
- onCustomButtonClick: handleCustomButtonClick
417
- }, null, 8, ["pageFooterConfig"])
418
- ]),
419
- _: 1
420
- }),
421
- vue.createTextVNode(" " + vue.toDisplayString(formData.value), 1)
422
- ], 64);
545
+ return vue.openBlock(), vue.createBlock(_component_el_container, {
546
+ direction: "vertical",
547
+ style: { "height": "100%" }
548
+ }, {
549
+ default: vue.withCtx(() => [
550
+ !configLoading.value && !__props.isSubForm ? (vue.openBlock(), vue.createBlock(vue.unref(index$1.header), {
551
+ key: 0,
552
+ pageHeaderConfig: localConfig.value.pageHeaderConfig
553
+ }, null, 8, ["pageHeaderConfig"])) : vue.createCommentVNode("", true),
554
+ vue.createVNode(vue.unref(index$2.main), null, {
555
+ default: vue.withCtx(() => [
556
+ vue.createVNode(_component_el_form, {
557
+ ref_key: "formRef",
558
+ ref: formRef,
559
+ model: formData.value,
560
+ rules: formRules.value,
561
+ "label-position": localConfig.value.labelPosition,
562
+ style: vue.normalizeStyle({ padding: __props.isSubForm ? "0" : "18px" }),
563
+ "validate-on-rule-change": false
564
+ }, {
565
+ default: vue.withCtx(() => [
566
+ !configLoading.value ? (vue.openBlock(), vue.createBlock(vue.unref(gridLayout_vue.default), {
567
+ key: 0,
568
+ ref_key: "gridLayout",
569
+ ref: gridLayout,
570
+ layout: vue.unref(gridLayoutFieldsData),
571
+ "onUpdate:layout": _cache[0] || (_cache[0] = ($event) => vue.isRef(gridLayoutFieldsData) ? gridLayoutFieldsData.value = $event : null),
572
+ "row-height": rowHeight.value,
573
+ margin: [0, 0],
574
+ "col-num": localConfig.value.columns,
575
+ "is-draggable": false,
576
+ "is-resizable": false
577
+ }, {
578
+ item: vue.withCtx(({ item: { component } }) => [
579
+ vue.createVNode(FormItem.default, {
580
+ modelValue: formData.value[component.fieldName],
581
+ "onUpdate:modelValue": ($event) => formData.value[component.fieldName] = $event,
582
+ config: component,
583
+ localConfig: localConfig.value,
584
+ error: getFieldError(component.fieldName),
585
+ formRef: formRef.value,
586
+ onChange: handleFieldChange
587
+ }, null, 8, ["modelValue", "onUpdate:modelValue", "config", "localConfig", "error", "formRef"])
588
+ ]),
589
+ _: 1
590
+ }, 8, ["layout", "row-height", "col-num"])) : vue.createCommentVNode("", true),
591
+ (vue.openBlock(true), vue.createElementBlock(vue.Fragment, null, vue.renderList(hiddenFields.value, (field) => {
592
+ return vue.openBlock(), vue.createElementBlock("input", {
593
+ key: field.fieldName,
594
+ type: "hidden",
595
+ name: field.fieldName,
596
+ value: formData.value[field.fieldName]
597
+ }, null, 8, _hoisted_1);
598
+ }), 128))
599
+ ]),
600
+ _: 1
601
+ }, 8, ["model", "rules", "label-position", "style"])
602
+ ]),
603
+ _: 1
604
+ }),
605
+ !__props.isSubForm ? (vue.openBlock(), vue.createBlock(vue.unref(index$4.footer), {
606
+ key: 1,
607
+ pageFooterConfig: localConfig.value.pageFooterConfig,
608
+ onCustomButtonClick: handleCustomButtonClick
609
+ }, null, 8, ["pageFooterConfig"])) : vue.createCommentVNode("", true)
610
+ ]),
611
+ _: 1
612
+ });
423
613
  };
424
614
  }
425
615
  });
426
- exports.default = _sfc_main;
616
+ const _Form = /* @__PURE__ */ _pluginVue_exportHelper.default(_sfc_main, [["__scopeId", "data-v-5ea07f4a"]]);
617
+ exports.default = _Form;