@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
@@ -5,13 +5,14 @@
5
5
  /* empty css */
6
6
  /* empty css */
7
7
  /* empty css */
8
- import { getCurrentInstance, ref, onMounted, createElementBlock, openBlock, Fragment, createVNode, createTextVNode, withCtx, createBlock, createCommentVNode, unref, renderList, toDisplayString } from "vue";
8
+ import { getCurrentInstance, ref, computed, onMounted, watch, provide, createBlock, openBlock, withCtx, createCommentVNode, createVNode, unref, normalizeStyle, createElementBlock, isRef, Fragment, renderList } from "vue";
9
9
  import "../../../../../../node_modules/.pnpm/grid-layout-plus@1.1.1_vue@3.5.13_typescript@5.7.3_/node_modules/grid-layout-plus/es/index.mjs";
10
10
  import { getCurrentVueInstance } from "../../../utils/getInstance.mjs";
11
11
  import getJsonAsyncUtil from "../../../utils/getJsonAsyncUtil.mjs";
12
12
  import _FormItem from "../formItem/FormItem.vue.mjs";
13
13
  import { createDataSource } from "../../../utils/datasource.mjs";
14
14
  import { generateFieldRules } from "./validation.mjs";
15
+ import { cloneDeep } from "../../../utils/common.mjs";
15
16
  /* empty css */
16
17
  /* empty css */
17
18
  /* empty css */
@@ -23,6 +24,11 @@ import { usePageEvents } from "../../../composables/usePageEvents.mjs";
23
24
  import { header } from "../../details/header/index.mjs";
24
25
  import { main } from "../../details/main/index.mjs";
25
26
  import { footer } from "../../details/footer/index.mjs";
27
+ import { checkFilterMatch } from "../../../utils/parseFilterConfig.mjs";
28
+ import { calculate } from "../../../utils/formulajs/calculate.mjs";
29
+ import hooks from "../../../../../../node_modules/.pnpm/moment@2.30.1/node_modules/moment/dist/moment.mjs";
30
+ /* empty css */
31
+ import _export_sfc from "../../../../../../_virtual/_plugin-vue_export-helper.mjs";
26
32
  import { ElContainer } from "../../../../../../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";
27
33
  import { ElForm } from "../../../../../../node_modules/.pnpm/element-plus@2.13.2_vue@3.5.13_typescript@5.7.3_/node_modules/element-plus/es/components/form/index.mjs";
28
34
  import De from "../../../../../../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.mjs";
@@ -41,15 +47,35 @@ const _sfc_main = /* @__PURE__ */ Object.assign({
41
47
  type: Object,
42
48
  default: () => {
43
49
  }
50
+ },
51
+ modelValue: {
52
+ type: Object,
53
+ default: () => {
54
+ }
55
+ },
56
+ isSubForm: {
57
+ type: Boolean,
58
+ default: false
59
+ },
60
+ canPageEvent: {
61
+ type: Boolean,
62
+ default: true
44
63
  }
45
64
  },
46
- emits: ["submit", "change", "validate"],
65
+ emits: [
66
+ "submit",
67
+ "change",
68
+ "validate",
69
+ "loaded",
70
+ "update:modelValue"
71
+ ],
47
72
  setup(__props, { expose: __expose, emit: __emit }) {
48
73
  const props = __props;
49
74
  const emit = __emit;
50
75
  const instance = getCurrentInstance();
51
76
  const ctx = getCurrentVueInstance();
52
77
  const formRef = ref(null);
78
+ const gridLayout = ref(null);
53
79
  const configLoading = ref(true);
54
80
  const configLoaded = ref(false);
55
81
  const localConfig = ref({});
@@ -59,17 +85,21 @@ const _sfc_main = /* @__PURE__ */ Object.assign({
59
85
  const dictionaryOptions = ref({});
60
86
  const fieldsData = ref({});
61
87
  const hiddenFields = ref({});
62
- const pageEvents = usePageEvents(() => ({
88
+ const rowHeight = ref(1);
89
+ const pageEvents = props.canPageEvent ? usePageEvents(() => ({
63
90
  pageEventConfig: localConfig.value.pageEventConfig,
91
+ fields: [...fieldsData.value, ...hiddenFields.value],
64
92
  ctx,
65
93
  formData: formData.value,
66
94
  localConfig: localConfig.value,
67
95
  components: {
68
96
  form: instance == null ? void 0 : instance.proxy
69
97
  }
70
- }));
71
- pageEvents.handleBeforeUnmount();
72
- pageEvents.handleUnmounted();
98
+ })) : null;
99
+ if (pageEvents) {
100
+ pageEvents.handleBeforeUnmount();
101
+ pageEvents.handleUnmounted();
102
+ }
73
103
  const loadConfig = async () => {
74
104
  if (!props.templateKey) {
75
105
  return;
@@ -82,14 +112,16 @@ const _sfc_main = /* @__PURE__ */ Object.assign({
82
112
  "form",
83
113
  props.initOption
84
114
  );
115
+ emit("loaded", option);
116
+ rowHeight.value = option.labelPosition == "top" ? 1.5 : 1;
85
117
  localConfig.value = option;
86
118
  fieldsData.value = option.fieldsData.map((item) => item.component);
87
119
  hiddenFields.value = option.hiddenFields || [];
88
- initFormData();
120
+ loadFormData();
89
121
  await loadFieldDataSources();
90
122
  loadEventFlow();
91
123
  configLoaded.value = true;
92
- if (localConfig.value.pageEventConfig) {
124
+ if (pageEvents && localConfig.value.pageEventConfig) {
93
125
  const onCreatedEvent = localConfig.value.pageEventConfig.find(
94
126
  (e) => e.name === "onCreated"
95
127
  );
@@ -105,11 +137,11 @@ const _sfc_main = /* @__PURE__ */ Object.assign({
105
137
  configLoading.value = false;
106
138
  }
107
139
  };
108
- const initFormData = () => {
140
+ const loadFormData = () => {
109
141
  const data = {};
110
142
  const rules = {};
111
- if (localConfig.value.fieldsData) {
112
- localConfig.value.fieldsData.forEach(({ component }) => {
143
+ if (fieldsData.value) {
144
+ fieldsData.value.forEach((component) => {
113
145
  if (component.fieldName) {
114
146
  data[component.fieldName] = component.defaultValue ? component.defaultValue : null;
115
147
  }
@@ -128,15 +160,15 @@ const _sfc_main = /* @__PURE__ */ Object.assign({
128
160
  }
129
161
  });
130
162
  }
131
- formData.value = data;
163
+ formData.value = { ...data, ...props.modelValue };
132
164
  formRules.value = rules;
133
165
  };
134
166
  const loadFieldDataSources = async () => {
135
167
  var _a, _b;
136
- const fields = localConfig.value.fieldsData || [];
168
+ const fields = fieldsData.value || [];
137
169
  const fieldDataSources = /* @__PURE__ */ new Set();
138
170
  const dictionaryKeys = /* @__PURE__ */ new Set();
139
- for (const { component } of fields) {
171
+ for (const component of fields) {
140
172
  const fieldType = component.fieldType;
141
173
  if ((fieldType === "select" || fieldType === "multipleSelection" || fieldType === "radio" || fieldType === "checkbox") && component.optionConfig) {
142
174
  const { optionSource, dataSourceValue, dictionaryValue } = component.optionConfig;
@@ -196,8 +228,8 @@ const _sfc_main = /* @__PURE__ */ Object.assign({
196
228
  mergeOptionsToFields();
197
229
  };
198
230
  const mergeOptionsToFields = () => {
199
- if (localConfig.value.fieldsData) {
200
- localConfig.value.fieldsData.forEach(({ component }) => {
231
+ if (fieldsData.value) {
232
+ fieldsData.value.forEach((component) => {
201
233
  if (!component.optionConfig) return;
202
234
  const {
203
235
  optionSource,
@@ -247,7 +279,7 @@ const _sfc_main = /* @__PURE__ */ Object.assign({
247
279
  const getEventHandlers = (row, item, eventConfig) => {
248
280
  return createEventHandlers(item, row, eventConfig);
249
281
  };
250
- localConfig.value.fieldsData.forEach(({ component }) => {
282
+ fieldsData.value.forEach((component) => {
251
283
  if (component.fieldName) {
252
284
  component.eventHandlers = getEventHandlers(
253
285
  formData.value,
@@ -257,14 +289,132 @@ const _sfc_main = /* @__PURE__ */ Object.assign({
257
289
  }
258
290
  });
259
291
  }
292
+ const gridLayoutFieldsData = computed(() => {
293
+ let gridLayoutData = cloneDeep(localConfig.value.fieldsData || []);
294
+ gridLayoutData = gridLayoutData.map((item) => {
295
+ item.isResizable = false;
296
+ if (!item.fixedH) {
297
+ item.h = item.h * 60;
298
+ }
299
+ return item;
300
+ });
301
+ const linkedConfig = localConfig.value.linkedConfig || {};
302
+ const dataLink = (linkedConfig == null ? void 0 : linkedConfig.dataLink) || [];
303
+ const fields = [...fieldsData.value, ...hiddenFields.value];
304
+ dataLink.forEach((item) => {
305
+ if (checkFilterMatch(item.filterConfig, formData.value, fields)) {
306
+ const fieldAssignments = item.fieldAssignments || [];
307
+ fieldAssignments.forEach((assignment) => {
308
+ var _a, _b;
309
+ const fieldId = assignment.fieldId;
310
+ const formulaText = (_b = (_a = assignment.formula) == null ? void 0 : _a.value) == null ? void 0 : _b.text;
311
+ const field = fields.find((f) => f.id == fieldId);
312
+ if (field && formulaText) {
313
+ const calcResult = calculate({
314
+ text: formulaText,
315
+ value: formData.value
316
+ });
317
+ formData.value[field.fieldName] = calcResult;
318
+ }
319
+ });
320
+ }
321
+ });
322
+ const visibility = (linkedConfig == null ? void 0 : linkedConfig.visibility) || [];
323
+ visibility.forEach((item) => {
324
+ const dataLinkFieldList = item.dataLinkFieldList || [];
325
+ if (checkFilterMatch(item.filterConfig, formData.value, fields)) {
326
+ dataLinkFieldList.forEach((fieldId) => {
327
+ const layoutFieldItem = gridLayoutData.find((g) => g.id == fieldId);
328
+ if (layoutFieldItem) {
329
+ layoutFieldItem.hidden = false;
330
+ }
331
+ });
332
+ } else {
333
+ dataLinkFieldList.forEach((fieldId) => {
334
+ const layoutFieldItem = gridLayoutData.find((g) => g.id == fieldId);
335
+ if (layoutFieldItem) {
336
+ layoutFieldItem.hidden = true;
337
+ }
338
+ });
339
+ }
340
+ });
341
+ gridLayoutData = gridLayoutData.filter((item) => !item.hidden);
342
+ const requiredArr = (linkedConfig == null ? void 0 : linkedConfig.required) || [];
343
+ requiredArr.forEach((item) => {
344
+ const dataLinkFieldList = item.dataLinkFieldList || [];
345
+ if (checkFilterMatch(item.filterConfig, formData.value, fields)) {
346
+ dataLinkFieldList.forEach((fieldId) => {
347
+ const layoutFieldItem = gridLayoutData.find((g) => g.id == fieldId);
348
+ if (layoutFieldItem) {
349
+ layoutFieldItem.component.required = true;
350
+ }
351
+ });
352
+ } else {
353
+ dataLinkFieldList.forEach((fieldId) => {
354
+ const layoutFieldItem = gridLayoutData.find((g) => g.id == fieldId);
355
+ if (layoutFieldItem) {
356
+ layoutFieldItem.component.required = false;
357
+ }
358
+ });
359
+ }
360
+ });
361
+ const rules = {};
362
+ gridLayoutData.forEach(({ component }) => {
363
+ if (component.fieldName) {
364
+ const fieldRules = generateFieldRules(component);
365
+ if (fieldRules.length > 0) {
366
+ rules[component.fieldName] = fieldRules;
367
+ }
368
+ }
369
+ });
370
+ formRules.value = rules;
371
+ const readonlyArr = (linkedConfig == null ? void 0 : linkedConfig.readonly) || [];
372
+ readonlyArr.forEach((item) => {
373
+ const dataLinkFieldList = item.dataLinkFieldList || [];
374
+ if (checkFilterMatch(item.filterConfig, formData.value, fields)) {
375
+ dataLinkFieldList.forEach((fieldId) => {
376
+ const layoutFieldItem = gridLayoutData.find((g) => g.id == fieldId);
377
+ if (layoutFieldItem) {
378
+ layoutFieldItem.component.readOnly = true;
379
+ }
380
+ });
381
+ } else {
382
+ dataLinkFieldList.forEach((fieldId) => {
383
+ const layoutFieldItem = gridLayoutData.find((g) => g.id == fieldId);
384
+ if (layoutFieldItem) {
385
+ layoutFieldItem.component.readOnly = false;
386
+ }
387
+ });
388
+ }
389
+ });
390
+ const disabledArr = (linkedConfig == null ? void 0 : linkedConfig.disabled) || [];
391
+ disabledArr.forEach((item) => {
392
+ const dataLinkFieldList = item.dataLinkFieldList || [];
393
+ if (checkFilterMatch(item.filterConfig, formData.value, fields)) {
394
+ dataLinkFieldList.forEach((fieldId) => {
395
+ const layoutFieldItem = gridLayoutData.find((g) => g.id == fieldId);
396
+ if (layoutFieldItem) {
397
+ layoutFieldItem.component.disabled = true;
398
+ }
399
+ });
400
+ } else {
401
+ dataLinkFieldList.forEach((fieldId) => {
402
+ const layoutFieldItem = gridLayoutData.find((g) => g.id == fieldId);
403
+ if (layoutFieldItem) {
404
+ layoutFieldItem.component.disabled = false;
405
+ }
406
+ });
407
+ }
408
+ });
409
+ return gridLayoutData;
410
+ });
260
411
  const getFieldError = (fieldName) => {
261
412
  var _a;
262
413
  if (!formRef.value) return "";
263
414
  const field = (_a = formRef.value.fields) == null ? void 0 : _a.find((f) => f.prop === fieldName);
264
415
  return (field == null ? void 0 : field.validateMessage) || "";
265
416
  };
266
- const handleFieldChange = (value, field) => {
267
- emit("change", { field: field.fieldName, value });
417
+ const handleFieldChange = (config, value) => {
268
418
  };
269
419
  const handleCustomButtonClick = (button) => {
270
420
  var _a;
@@ -282,22 +432,40 @@ const _sfc_main = /* @__PURE__ */ Object.assign({
282
432
  var _a, _b;
283
433
  (_a = formRef.value) == null ? void 0 : _a.clearValidate();
284
434
  (_b = formRef.value) == null ? void 0 : _b.resetFields();
285
- initFormData();
435
+ loadFormData();
436
+ };
437
+ const valueFormatMap = {
438
+ date: "YYYYMMDD",
439
+ week: "YYYYMMDD",
440
+ month: "YYYYMM",
441
+ year: "YYYY",
442
+ datetime: "YYYYMMDDHHmmss"
443
+ };
444
+ const formValueFormatMap = {
445
+ date: "YYYY-MM-DD",
446
+ week: "YYYY-MM-DD",
447
+ month: "YYYY-MM",
448
+ year: "YYYY",
449
+ datetime: "YYYY-MM-DD HH:mm:ss"
286
450
  };
287
451
  const getFormData = () => {
288
452
  const result = { ...formData.value };
289
453
  const processField = (field) => {
290
454
  const fieldName = field.fieldName;
291
455
  const fieldType = field.fieldType;
456
+ const value = result[fieldName];
292
457
  if (fieldName && (fieldType === "checkbox" || fieldType === "multipleSelection")) {
293
- const value = result[fieldName];
294
458
  if (Array.isArray(value)) {
295
459
  result[fieldName] = value.join("|");
296
460
  }
461
+ } else if (fieldName && fieldType === "date" && value) {
462
+ const valueFormat = valueFormatMap[field.dateType] || "YYYYMMDD";
463
+ const formValueFormat = formValueFormatMap[field.dateType] || "YYYY-MM-DD";
464
+ result[fieldName] = hooks(value, formValueFormat).format(valueFormat);
297
465
  }
298
466
  };
299
- if (localConfig.value.fieldsData) {
300
- localConfig.value.fieldsData.forEach(({ component }) => {
467
+ if (fieldsData.value) {
468
+ fieldsData.value.forEach((component) => {
301
469
  processField(component);
302
470
  });
303
471
  }
@@ -313,8 +481,8 @@ const _sfc_main = /* @__PURE__ */ Object.assign({
313
481
  const processField = (field) => {
314
482
  const fieldName = field.fieldName;
315
483
  const fieldType = field.fieldType;
484
+ const value = processedData[fieldName];
316
485
  if (fieldName && (fieldType === "checkbox" || fieldType === "multipleSelection")) {
317
- const value = processedData[fieldName];
318
486
  if (typeof value === "string" && value.includes("|")) {
319
487
  processedData[fieldName] = value.split("|");
320
488
  } else if (typeof value === "string" && value !== "") {
@@ -322,10 +490,16 @@ const _sfc_main = /* @__PURE__ */ Object.assign({
322
490
  } else if (value === "" || value === null || value === void 0) {
323
491
  processedData[fieldName] = [];
324
492
  }
493
+ } else if (fieldName && fieldType === "date" && value) {
494
+ const valueFormat = valueFormatMap[field.dateType] || "YYYYMMDD";
495
+ const formValueFormat = formValueFormatMap[field.dateType] || "YYYY-MM-DD";
496
+ processedData[fieldName] = hooks(value, valueFormat).format(
497
+ formValueFormat
498
+ );
325
499
  }
326
500
  };
327
- if (localConfig.value.fieldsData) {
328
- localConfig.value.fieldsData.forEach(({ component }) => {
501
+ if (fieldsData.value) {
502
+ fieldsData.value.forEach((component) => {
329
503
  processField(component);
330
504
  });
331
505
  }
@@ -339,6 +513,17 @@ const _sfc_main = /* @__PURE__ */ Object.assign({
339
513
  onMounted(() => {
340
514
  loadConfig();
341
515
  });
516
+ watch(
517
+ formData,
518
+ (newVal) => {
519
+ emit("update:modelValue", newVal);
520
+ },
521
+ { deep: true }
522
+ );
523
+ provide("formData", formData);
524
+ provide("rowHeight", rowHeight);
525
+ provide("gridLayout", gridLayout);
526
+ provide("gridLayoutFieldsData", gridLayoutFieldsData);
342
527
  __expose({
343
528
  validate,
344
529
  resetFields,
@@ -349,78 +534,78 @@ const _sfc_main = /* @__PURE__ */ Object.assign({
349
534
  return (_ctx, _cache) => {
350
535
  const _component_el_form = ElForm;
351
536
  const _component_el_container = ElContainer;
352
- return openBlock(), createElementBlock(Fragment, null, [
353
- createVNode(_component_el_container, {
354
- direction: "vertical",
355
- style: { "height": "100%" }
356
- }, {
357
- default: withCtx(() => [
358
- !configLoading.value ? (openBlock(), createBlock(unref(header), {
359
- key: 0,
360
- pageHeaderConfig: localConfig.value.pageHeaderConfig
361
- }, null, 8, ["pageHeaderConfig"])) : createCommentVNode("", true),
362
- createVNode(unref(main), null, {
363
- default: withCtx(() => [
364
- createVNode(_component_el_form, {
365
- ref_key: "formRef",
366
- ref: formRef,
367
- model: formData.value,
368
- rules: formRules.value,
369
- "label-position": localConfig.value.labelPosition,
370
- style: { "padding": "18px" },
371
- "validate-on-rule-change": false
372
- }, {
373
- default: withCtx(() => [
374
- !configLoading.value ? (openBlock(), createBlock(unref(De), {
375
- key: 0,
376
- ref: "gridLayout",
377
- layout: localConfig.value.fieldsData,
378
- "onUpdate:layout": _cache[0] || (_cache[0] = ($event) => localConfig.value.fieldsData = $event),
379
- "row-height": localConfig.value.labelPosition == "top" ? 90 : 60,
380
- margin: [0, 0],
381
- "col-num": localConfig.value.columns,
382
- "is-draggable": false,
383
- "is-resizable": false
384
- }, {
385
- item: withCtx(({ item: { component } }) => [
386
- createVNode(_FormItem, {
387
- modelValue: formData.value[component.fieldName],
388
- "onUpdate:modelValue": ($event) => formData.value[component.fieldName] = $event,
389
- config: component,
390
- localConfig: localConfig.value,
391
- error: getFieldError(component.fieldName),
392
- formRef: formRef.value,
393
- onChange: handleFieldChange
394
- }, null, 8, ["modelValue", "onUpdate:modelValue", "config", "localConfig", "error", "formRef"])
395
- ]),
396
- _: 1
397
- }, 8, ["layout", "row-height", "col-num"])) : createCommentVNode("", true),
398
- (openBlock(true), createElementBlock(Fragment, null, renderList(hiddenFields.value, (field) => {
399
- return openBlock(), createElementBlock("input", {
400
- key: field.fieldName,
401
- type: "hidden",
402
- name: field.fieldName,
403
- value: formData.value[field.fieldName]
404
- }, null, 8, _hoisted_1);
405
- }), 128))
406
- ]),
407
- _: 1
408
- }, 8, ["model", "rules", "label-position"])
409
- ]),
410
- _: 1
411
- }),
412
- createVNode(unref(footer), {
413
- pageFooterConfig: localConfig.value.pageFooterConfig,
414
- onCustomButtonClick: handleCustomButtonClick
415
- }, null, 8, ["pageFooterConfig"])
416
- ]),
417
- _: 1
418
- }),
419
- createTextVNode(" " + toDisplayString(formData.value), 1)
420
- ], 64);
537
+ return openBlock(), createBlock(_component_el_container, {
538
+ direction: "vertical",
539
+ style: { "height": "100%" }
540
+ }, {
541
+ default: withCtx(() => [
542
+ !configLoading.value && !__props.isSubForm ? (openBlock(), createBlock(unref(header), {
543
+ key: 0,
544
+ pageHeaderConfig: localConfig.value.pageHeaderConfig
545
+ }, null, 8, ["pageHeaderConfig"])) : createCommentVNode("", true),
546
+ createVNode(unref(main), null, {
547
+ default: withCtx(() => [
548
+ createVNode(_component_el_form, {
549
+ ref_key: "formRef",
550
+ ref: formRef,
551
+ model: formData.value,
552
+ rules: formRules.value,
553
+ "label-position": localConfig.value.labelPosition,
554
+ style: normalizeStyle({ padding: __props.isSubForm ? "0" : "18px" }),
555
+ "validate-on-rule-change": false
556
+ }, {
557
+ default: withCtx(() => [
558
+ !configLoading.value ? (openBlock(), createBlock(unref(De), {
559
+ key: 0,
560
+ ref_key: "gridLayout",
561
+ ref: gridLayout,
562
+ layout: unref(gridLayoutFieldsData),
563
+ "onUpdate:layout": _cache[0] || (_cache[0] = ($event) => isRef(gridLayoutFieldsData) ? gridLayoutFieldsData.value = $event : null),
564
+ "row-height": rowHeight.value,
565
+ margin: [0, 0],
566
+ "col-num": localConfig.value.columns,
567
+ "is-draggable": false,
568
+ "is-resizable": false
569
+ }, {
570
+ item: withCtx(({ item: { component } }) => [
571
+ createVNode(_FormItem, {
572
+ modelValue: formData.value[component.fieldName],
573
+ "onUpdate:modelValue": ($event) => formData.value[component.fieldName] = $event,
574
+ config: component,
575
+ localConfig: localConfig.value,
576
+ error: getFieldError(component.fieldName),
577
+ formRef: formRef.value,
578
+ onChange: handleFieldChange
579
+ }, null, 8, ["modelValue", "onUpdate:modelValue", "config", "localConfig", "error", "formRef"])
580
+ ]),
581
+ _: 1
582
+ }, 8, ["layout", "row-height", "col-num"])) : createCommentVNode("", true),
583
+ (openBlock(true), createElementBlock(Fragment, null, renderList(hiddenFields.value, (field) => {
584
+ return openBlock(), createElementBlock("input", {
585
+ key: field.fieldName,
586
+ type: "hidden",
587
+ name: field.fieldName,
588
+ value: formData.value[field.fieldName]
589
+ }, null, 8, _hoisted_1);
590
+ }), 128))
591
+ ]),
592
+ _: 1
593
+ }, 8, ["model", "rules", "label-position", "style"])
594
+ ]),
595
+ _: 1
596
+ }),
597
+ !__props.isSubForm ? (openBlock(), createBlock(unref(footer), {
598
+ key: 1,
599
+ pageFooterConfig: localConfig.value.pageFooterConfig,
600
+ onCustomButtonClick: handleCustomButtonClick
601
+ }, null, 8, ["pageFooterConfig"])) : createCommentVNode("", true)
602
+ ]),
603
+ _: 1
604
+ });
421
605
  };
422
606
  }
423
607
  });
608
+ const _Form = /* @__PURE__ */ _export_sfc(_sfc_main, [["__scopeId", "data-v-8a7ec746"]]);
424
609
  export {
425
- _sfc_main as default
610
+ _Form as default
426
611
  };
@@ -1,6 +1,6 @@
1
- import _sfc_main from "./Form.vue.mjs";
1
+ import _Form from "./Form.vue.mjs";
2
2
  import install from "../../../utils/install.mjs";
3
- const Form = install.withInstall("Form", _sfc_main);
3
+ const Form = install.withInstall("Form", _Form);
4
4
  export {
5
5
  Form,
6
6
  Form as default