@fecp/vue 1.1.3 → 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 (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 +281 -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 +109 -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 +9 -1
  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 +280 -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 +109 -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 +9 -1
  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,132 @@ 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.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
+ });
262
413
  const getFieldError = (fieldName) => {
263
414
  var _a;
264
415
  if (!formRef.value) return "";
265
416
  const field = (_a = formRef.value.fields) == null ? void 0 : _a.find((f) => f.prop === fieldName);
266
417
  return (field == null ? void 0 : field.validateMessage) || "";
267
418
  };
268
- const handleFieldChange = (value, field) => {
269
- emit("change", { field: field.fieldName, value });
419
+ const handleFieldChange = (config, value) => {
270
420
  };
271
421
  const handleCustomButtonClick = (button) => {
272
422
  var _a;
@@ -284,22 +434,40 @@ const _sfc_main = /* @__PURE__ */ Object.assign({
284
434
  var _a, _b;
285
435
  (_a = formRef.value) == null ? void 0 : _a.clearValidate();
286
436
  (_b = formRef.value) == null ? void 0 : _b.resetFields();
287
- 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"
288
452
  };
289
453
  const getFormData = () => {
290
454
  const result = { ...formData.value };
291
455
  const processField = (field) => {
292
456
  const fieldName = field.fieldName;
293
457
  const fieldType = field.fieldType;
458
+ const value = result[fieldName];
294
459
  if (fieldName && (fieldType === "checkbox" || fieldType === "multipleSelection")) {
295
- const value = result[fieldName];
296
460
  if (Array.isArray(value)) {
297
461
  result[fieldName] = value.join("|");
298
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);
299
467
  }
300
468
  };
301
- if (localConfig.value.fieldsData) {
302
- localConfig.value.fieldsData.forEach(({ component }) => {
469
+ if (fieldsData.value) {
470
+ fieldsData.value.forEach((component) => {
303
471
  processField(component);
304
472
  });
305
473
  }
@@ -315,8 +483,8 @@ const _sfc_main = /* @__PURE__ */ Object.assign({
315
483
  const processField = (field) => {
316
484
  const fieldName = field.fieldName;
317
485
  const fieldType = field.fieldType;
486
+ const value = processedData[fieldName];
318
487
  if (fieldName && (fieldType === "checkbox" || fieldType === "multipleSelection")) {
319
- const value = processedData[fieldName];
320
488
  if (typeof value === "string" && value.includes("|")) {
321
489
  processedData[fieldName] = value.split("|");
322
490
  } else if (typeof value === "string" && value !== "") {
@@ -324,10 +492,16 @@ const _sfc_main = /* @__PURE__ */ Object.assign({
324
492
  } else if (value === "" || value === null || value === void 0) {
325
493
  processedData[fieldName] = [];
326
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
+ );
327
501
  }
328
502
  };
329
- if (localConfig.value.fieldsData) {
330
- localConfig.value.fieldsData.forEach(({ component }) => {
503
+ if (fieldsData.value) {
504
+ fieldsData.value.forEach((component) => {
331
505
  processField(component);
332
506
  });
333
507
  }
@@ -341,6 +515,17 @@ const _sfc_main = /* @__PURE__ */ Object.assign({
341
515
  vue.onMounted(() => {
342
516
  loadConfig();
343
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);
344
529
  __expose({
345
530
  validate,
346
531
  resetFields,
@@ -351,76 +536,76 @@ const _sfc_main = /* @__PURE__ */ Object.assign({
351
536
  return (_ctx, _cache) => {
352
537
  const _component_el_form = index$3.ElForm;
353
538
  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);
539
+ return vue.openBlock(), vue.createBlock(_component_el_container, {
540
+ direction: "vertical",
541
+ style: { "height": "100%" }
542
+ }, {
543
+ default: vue.withCtx(() => [
544
+ !configLoading.value && !__props.isSubForm ? (vue.openBlock(), vue.createBlock(vue.unref(index$1.header), {
545
+ key: 0,
546
+ pageHeaderConfig: localConfig.value.pageHeaderConfig
547
+ }, null, 8, ["pageHeaderConfig"])) : vue.createCommentVNode("", true),
548
+ vue.createVNode(vue.unref(index$2.main), null, {
549
+ default: vue.withCtx(() => [
550
+ vue.createVNode(_component_el_form, {
551
+ ref_key: "formRef",
552
+ ref: formRef,
553
+ model: formData.value,
554
+ rules: formRules.value,
555
+ "label-position": localConfig.value.labelPosition,
556
+ style: vue.normalizeStyle({ padding: __props.isSubForm ? "0" : "18px" }),
557
+ "validate-on-rule-change": false
558
+ }, {
559
+ default: vue.withCtx(() => [
560
+ !configLoading.value ? (vue.openBlock(), vue.createBlock(vue.unref(gridLayout_vue.default), {
561
+ key: 0,
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,
567
+ margin: [0, 0],
568
+ "col-num": localConfig.value.columns,
569
+ "is-draggable": false,
570
+ "is-resizable": false
571
+ }, {
572
+ item: vue.withCtx(({ item: { component } }) => [
573
+ vue.createVNode(FormItem.default, {
574
+ modelValue: formData.value[component.fieldName],
575
+ "onUpdate:modelValue": ($event) => formData.value[component.fieldName] = $event,
576
+ config: component,
577
+ localConfig: localConfig.value,
578
+ error: getFieldError(component.fieldName),
579
+ formRef: formRef.value,
580
+ onChange: handleFieldChange
581
+ }, null, 8, ["modelValue", "onUpdate:modelValue", "config", "localConfig", "error", "formRef"])
582
+ ]),
583
+ _: 1
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))
593
+ ]),
594
+ _: 1
595
+ }, 8, ["model", "rules", "label-position", "style"])
596
+ ]),
597
+ _: 1
598
+ }),
599
+ !__props.isSubForm ? (vue.openBlock(), vue.createBlock(vue.unref(index$4.footer), {
600
+ key: 1,
601
+ pageFooterConfig: localConfig.value.pageFooterConfig,
602
+ onCustomButtonClick: handleCustomButtonClick
603
+ }, null, 8, ["pageFooterConfig"])) : vue.createCommentVNode("", true)
604
+ ]),
605
+ _: 1
606
+ });
423
607
  };
424
608
  }
425
609
  });
426
- exports.default = _sfc_main;
610
+ const _Form = /* @__PURE__ */ _pluginVue_exportHelper.default(_sfc_main, [["__scopeId", "data-v-8a7ec746"]]);
611
+ exports.default = _Form;