@fecp/vue 1.1.2 → 1.1.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (127) hide show
  1. package/es/_virtual/bessel.mjs +7 -0
  2. package/es/_virtual/bessel2.mjs +4 -0
  3. package/es/_virtual/index.mjs +1 -1
  4. package/es/_virtual/index2.mjs +1 -1
  5. package/es/_virtual/jstat.mjs +7 -0
  6. package/es/_virtual/jstat2.mjs +4 -0
  7. package/es/node_modules/.pnpm/@formulajs_formulajs@4.5.6/node_modules/@formulajs/formulajs/lib/esm/index.mjs +7150 -0
  8. package/es/node_modules/.pnpm/@vueuse_shared@10.11.1_vue@3.5.13_typescript@5.7.3_/node_modules/@vueuse/shared/index.mjs +1 -1
  9. package/es/node_modules/.pnpm/@vxe-ui_core@4.3.1_vue@3.5.13_typescript@5.7.3_/node_modules/@vxe-ui/core/es/index.esm.mjs +1 -1
  10. package/es/node_modules/.pnpm/@vxe-ui_core@4.3.1_vue@3.5.13_typescript@5.7.3_/node_modules/@vxe-ui/core/es/src/clipboard.mjs +1 -1
  11. package/es/node_modules/.pnpm/@vxe-ui_core@4.3.1_vue@3.5.13_typescript@5.7.3_/node_modules/@vxe-ui/core/es/src/commands.mjs +1 -1
  12. package/es/node_modules/.pnpm/@vxe-ui_core@4.3.1_vue@3.5.13_typescript@5.7.3_/node_modules/@vxe-ui/core/es/src/config.mjs +1 -1
  13. package/es/node_modules/.pnpm/@vxe-ui_core@4.3.1_vue@3.5.13_typescript@5.7.3_/node_modules/@vxe-ui/core/es/src/event.mjs +1 -1
  14. package/es/node_modules/.pnpm/@vxe-ui_core@4.3.1_vue@3.5.13_typescript@5.7.3_/node_modules/@vxe-ui/core/es/src/formats.mjs +1 -1
  15. package/es/node_modules/.pnpm/@vxe-ui_core@4.3.1_vue@3.5.13_typescript@5.7.3_/node_modules/@vxe-ui/core/es/src/i18n.mjs +1 -1
  16. package/es/node_modules/.pnpm/@vxe-ui_core@4.3.1_vue@3.5.13_typescript@5.7.3_/node_modules/@vxe-ui/core/es/src/icon.mjs +1 -1
  17. package/es/node_modules/.pnpm/@vxe-ui_core@4.3.1_vue@3.5.13_typescript@5.7.3_/node_modules/@vxe-ui/core/es/src/interceptor.mjs +1 -1
  18. package/es/node_modules/.pnpm/@vxe-ui_core@4.3.1_vue@3.5.13_typescript@5.7.3_/node_modules/@vxe-ui/core/es/src/menus.mjs +1 -1
  19. package/es/node_modules/.pnpm/@vxe-ui_core@4.3.1_vue@3.5.13_typescript@5.7.3_/node_modules/@vxe-ui/core/es/src/permission.mjs +1 -1
  20. package/es/node_modules/.pnpm/@vxe-ui_core@4.3.1_vue@3.5.13_typescript@5.7.3_/node_modules/@vxe-ui/core/es/src/renderer.mjs +1 -1
  21. package/es/node_modules/.pnpm/@vxe-ui_core@4.3.1_vue@3.5.13_typescript@5.7.3_/node_modules/@vxe-ui/core/es/src/resize.mjs +1 -1
  22. package/es/node_modules/.pnpm/@vxe-ui_core@4.3.1_vue@3.5.13_typescript@5.7.3_/node_modules/@vxe-ui/core/es/src/store.mjs +1 -1
  23. package/es/node_modules/.pnpm/@vxe-ui_core@4.3.1_vue@3.5.13_typescript@5.7.3_/node_modules/@vxe-ui/core/es/src/vm.mjs +1 -1
  24. package/es/node_modules/.pnpm/bessel@1.0.2/node_modules/bessel/bessel.mjs +226 -0
  25. package/es/node_modules/.pnpm/element-plus@2.13.2_vue@3.5.13_typescript@5.7.3_/node_modules/element-plus/es/components/container/index.mjs +7 -7
  26. package/es/node_modules/.pnpm/element-plus@2.13.2_vue@3.5.13_typescript@5.7.3_/node_modules/element-plus/es/components/form/src/hooks/use-form-common-props.mjs +1 -1
  27. package/es/node_modules/.pnpm/element-plus@2.13.2_vue@3.5.13_typescript@5.7.3_/node_modules/element-plus/es/components/input/src/input.vue2.mjs +1 -1
  28. package/es/node_modules/.pnpm/jstat@1.9.6/node_modules/jstat/dist/jstat.mjs +3853 -0
  29. package/es/packages/mobile/src/components/form/field/Field.vue.mjs +1 -1
  30. package/es/packages/mobile/src/utils/formatterUtil.mjs +1 -1
  31. package/es/packages/mobile/src/utils/optionUtil.mjs +1 -1
  32. package/es/packages/vue/index.mjs +4 -0
  33. package/es/packages/vue/src/components/all.mjs +4 -0
  34. package/es/packages/vue/src/components/details/header/Header.vue.mjs +1 -1
  35. package/es/packages/vue/src/components/forms/checkbox/Checkbox.vue.mjs +8 -2
  36. package/es/packages/vue/src/components/forms/date/Date.vue.mjs +6 -6
  37. package/es/packages/vue/src/components/forms/divider/Divider.vue.mjs +15 -20
  38. package/es/packages/vue/src/components/forms/divider/index.mjs +2 -2
  39. package/es/packages/vue/src/components/forms/form/Form.vue.mjs +276 -54
  40. package/es/packages/vue/src/components/forms/form/index.mjs +2 -2
  41. package/es/packages/vue/src/components/forms/formItem/FormItem.vue.mjs +78 -50
  42. package/es/packages/vue/src/components/forms/h2/H2.vue.mjs +16 -7
  43. package/es/packages/vue/src/components/forms/multipleSelection/MultipleSelection.vue.mjs +1 -1
  44. package/es/packages/vue/src/components/forms/number/Number.vue.mjs +18 -12
  45. package/es/packages/vue/src/components/forms/radio/Radio.vue.mjs +5 -3
  46. package/es/packages/vue/src/components/forms/select/Select.vue.mjs +6 -4
  47. package/es/packages/vue/src/components/forms/subForm/SubForm.vue.mjs +90 -0
  48. package/es/packages/vue/src/components/forms/subForm/index.mjs +7 -0
  49. package/es/packages/vue/src/components/forms/subTable/SubTable.vue.mjs +109 -0
  50. package/es/packages/vue/src/components/forms/subTable/index.mjs +7 -0
  51. package/es/packages/vue/src/components/forms/switch/Switch.vue.mjs +1 -1
  52. package/es/packages/vue/src/components/forms/text/Text.vue.mjs +7 -4
  53. package/es/packages/vue/src/components/forms/text/index.mjs +2 -2
  54. package/es/packages/vue/src/components/forms/textarea/Textarea.vue.mjs +7 -4
  55. package/es/packages/vue/src/components/table/CustomButtons.vue.mjs +17 -17
  56. package/es/packages/vue/src/components/table/Table.vue.mjs +193 -72
  57. package/es/packages/vue/src/components/table/TableColumn.vue.mjs +46 -5
  58. package/es/packages/vue/src/components/table/TableFilter.vue.mjs +306 -0
  59. package/es/packages/vue/src/components/table/index.mjs +2 -2
  60. package/es/packages/vue/src/composables/usePageEvents.mjs +4 -5
  61. package/es/packages/vue/src/utils/common.mjs +5 -0
  62. package/es/packages/vue/src/utils/datasource.mjs +27 -1
  63. package/es/packages/vue/src/utils/eventFlow/actionHandlers.mjs +19 -2
  64. package/es/packages/vue/src/utils/formulajs/calculate.mjs +57 -0
  65. package/es/packages/vue/src/utils/formulajs/functionCore.mjs +17 -0
  66. package/es/packages/vue/src/utils/parseRouteParams.mjs +3 -2
  67. package/es/vue.css +255 -48
  68. package/lib/_virtual/bessel.js +7 -0
  69. package/lib/_virtual/bessel2.js +4 -0
  70. package/lib/_virtual/index.js +1 -1
  71. package/lib/_virtual/index2.js +1 -1
  72. package/lib/_virtual/jstat.js +7 -0
  73. package/lib/_virtual/jstat2.js +4 -0
  74. package/lib/node_modules/.pnpm/@formulajs_formulajs@4.5.6/node_modules/@formulajs/formulajs/lib/esm/index.js +7150 -0
  75. package/lib/node_modules/.pnpm/@vxe-ui_core@4.3.1_vue@3.5.13_typescript@5.7.3_/node_modules/@vxe-ui/core/es/index.esm.js +1 -1
  76. package/lib/node_modules/.pnpm/@vxe-ui_core@4.3.1_vue@3.5.13_typescript@5.7.3_/node_modules/@vxe-ui/core/es/src/clipboard.js +1 -1
  77. package/lib/node_modules/.pnpm/@vxe-ui_core@4.3.1_vue@3.5.13_typescript@5.7.3_/node_modules/@vxe-ui/core/es/src/commands.js +1 -1
  78. package/lib/node_modules/.pnpm/@vxe-ui_core@4.3.1_vue@3.5.13_typescript@5.7.3_/node_modules/@vxe-ui/core/es/src/config.js +1 -1
  79. package/lib/node_modules/.pnpm/@vxe-ui_core@4.3.1_vue@3.5.13_typescript@5.7.3_/node_modules/@vxe-ui/core/es/src/event.js +1 -1
  80. package/lib/node_modules/.pnpm/@vxe-ui_core@4.3.1_vue@3.5.13_typescript@5.7.3_/node_modules/@vxe-ui/core/es/src/formats.js +1 -1
  81. package/lib/node_modules/.pnpm/@vxe-ui_core@4.3.1_vue@3.5.13_typescript@5.7.3_/node_modules/@vxe-ui/core/es/src/i18n.js +1 -1
  82. package/lib/node_modules/.pnpm/@vxe-ui_core@4.3.1_vue@3.5.13_typescript@5.7.3_/node_modules/@vxe-ui/core/es/src/icon.js +1 -1
  83. package/lib/node_modules/.pnpm/@vxe-ui_core@4.3.1_vue@3.5.13_typescript@5.7.3_/node_modules/@vxe-ui/core/es/src/interceptor.js +1 -1
  84. package/lib/node_modules/.pnpm/@vxe-ui_core@4.3.1_vue@3.5.13_typescript@5.7.3_/node_modules/@vxe-ui/core/es/src/menus.js +1 -1
  85. package/lib/node_modules/.pnpm/@vxe-ui_core@4.3.1_vue@3.5.13_typescript@5.7.3_/node_modules/@vxe-ui/core/es/src/permission.js +1 -1
  86. package/lib/node_modules/.pnpm/@vxe-ui_core@4.3.1_vue@3.5.13_typescript@5.7.3_/node_modules/@vxe-ui/core/es/src/renderer.js +1 -1
  87. package/lib/node_modules/.pnpm/@vxe-ui_core@4.3.1_vue@3.5.13_typescript@5.7.3_/node_modules/@vxe-ui/core/es/src/resize.js +1 -1
  88. package/lib/node_modules/.pnpm/@vxe-ui_core@4.3.1_vue@3.5.13_typescript@5.7.3_/node_modules/@vxe-ui/core/es/src/store.js +1 -1
  89. package/lib/node_modules/.pnpm/@vxe-ui_core@4.3.1_vue@3.5.13_typescript@5.7.3_/node_modules/@vxe-ui/core/es/src/vm.js +1 -1
  90. package/lib/node_modules/.pnpm/bessel@1.0.2/node_modules/bessel/bessel.js +226 -0
  91. package/lib/node_modules/.pnpm/jstat@1.9.6/node_modules/jstat/dist/jstat.js +3853 -0
  92. package/lib/packages/mobile/src/components/form/field/Field.vue.js +1 -1
  93. package/lib/packages/mobile/src/utils/formatterUtil.js +1 -1
  94. package/lib/packages/mobile/src/utils/optionUtil.js +1 -1
  95. package/lib/packages/vue/index.js +13 -9
  96. package/lib/packages/vue/src/components/all.js +10 -6
  97. package/lib/packages/vue/src/components/details/header/Header.vue.js +1 -1
  98. package/lib/packages/vue/src/components/forms/checkbox/Checkbox.vue.js +8 -2
  99. package/lib/packages/vue/src/components/forms/date/Date.vue.js +6 -6
  100. package/lib/packages/vue/src/components/forms/divider/Divider.vue.js +14 -19
  101. package/lib/packages/vue/src/components/forms/form/Form.vue.js +275 -53
  102. package/lib/packages/vue/src/components/forms/formItem/FormItem.vue.js +63 -35
  103. package/lib/packages/vue/src/components/forms/h2/H2.vue.js +15 -6
  104. package/lib/packages/vue/src/components/forms/multipleSelection/MultipleSelection.vue.js +1 -1
  105. package/lib/packages/vue/src/components/forms/number/Number.vue.js +18 -12
  106. package/lib/packages/vue/src/components/forms/radio/Radio.vue.js +5 -3
  107. package/lib/packages/vue/src/components/forms/select/Select.vue.js +6 -4
  108. package/lib/packages/vue/src/components/forms/subForm/SubForm.vue.js +90 -0
  109. package/lib/packages/vue/src/components/forms/subForm/index.js +7 -0
  110. package/lib/packages/vue/src/components/forms/subTable/SubTable.vue.js +109 -0
  111. package/lib/packages/vue/src/components/forms/subTable/index.js +7 -0
  112. package/lib/packages/vue/src/components/forms/switch/Switch.vue.js +1 -1
  113. package/lib/packages/vue/src/components/forms/text/Text.vue.js +7 -4
  114. package/lib/packages/vue/src/components/forms/textarea/Textarea.vue.js +7 -4
  115. package/lib/packages/vue/src/components/table/CustomButtons.vue.js +16 -16
  116. package/lib/packages/vue/src/components/table/Table.vue.js +195 -74
  117. package/lib/packages/vue/src/components/table/TableColumn.vue.js +46 -5
  118. package/lib/packages/vue/src/components/table/TableFilter.vue.js +306 -0
  119. package/lib/packages/vue/src/composables/usePageEvents.js +4 -5
  120. package/lib/packages/vue/src/utils/common.js +5 -0
  121. package/lib/packages/vue/src/utils/datasource.js +27 -1
  122. package/lib/packages/vue/src/utils/eventFlow/actionHandlers.js +19 -2
  123. package/lib/packages/vue/src/utils/formulajs/calculate.js +57 -0
  124. package/lib/packages/vue/src/utils/formulajs/functionCore.js +17 -0
  125. package/lib/packages/vue/src/utils/parseRouteParams.js +3 -2
  126. package/lib/vue.css +255 -48
  127. package/package.json +1 -1
@@ -5,13 +5,14 @@
5
5
  /* empty css */
6
6
  /* empty css */
7
7
  /* empty css */
8
- import { getCurrentInstance, ref, onMounted, createBlock, openBlock, withCtx, createCommentVNode, createVNode, unref } 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,10 +24,16 @@ 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";
29
35
  import { ElMessage } from "../../../../../../node_modules/.pnpm/element-plus@2.13.2_vue@3.5.13_typescript@5.7.3_/node_modules/element-plus/es/components/message/index.mjs";
36
+ const _hoisted_1 = ["name", "value"];
30
37
  const _sfc_main = /* @__PURE__ */ Object.assign({
31
38
  inheritAttrs: false
32
39
  }, {
@@ -40,15 +47,35 @@ const _sfc_main = /* @__PURE__ */ Object.assign({
40
47
  type: Object,
41
48
  default: () => {
42
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
43
63
  }
44
64
  },
45
- emits: ["submit", "change", "validate"],
65
+ emits: [
66
+ "submit",
67
+ "change",
68
+ "validate",
69
+ "loaded",
70
+ "update:modelValue"
71
+ ],
46
72
  setup(__props, { expose: __expose, emit: __emit }) {
47
73
  const props = __props;
48
74
  const emit = __emit;
49
75
  const instance = getCurrentInstance();
50
76
  const ctx = getCurrentVueInstance();
51
77
  const formRef = ref(null);
78
+ const gridLayout = ref(null);
52
79
  const configLoading = ref(true);
53
80
  const configLoaded = ref(false);
54
81
  const localConfig = ref({});
@@ -57,17 +84,22 @@ const _sfc_main = /* @__PURE__ */ Object.assign({
57
84
  const dataSourceOptions = ref({});
58
85
  const dictionaryOptions = ref({});
59
86
  const fieldsData = ref({});
60
- const pageEvents = usePageEvents(() => ({
87
+ const hiddenFields = ref({});
88
+ const rowHeight = ref(1);
89
+ const pageEvents = props.canPageEvent ? usePageEvents(() => ({
61
90
  pageEventConfig: localConfig.value.pageEventConfig,
91
+ fields: [...fieldsData.value, ...hiddenFields.value],
62
92
  ctx,
63
93
  formData: formData.value,
64
94
  localConfig: localConfig.value,
65
95
  components: {
66
96
  form: instance == null ? void 0 : instance.proxy
67
97
  }
68
- }));
69
- pageEvents.handleBeforeUnmount();
70
- pageEvents.handleUnmounted();
98
+ })) : null;
99
+ if (pageEvents) {
100
+ pageEvents.handleBeforeUnmount();
101
+ pageEvents.handleUnmounted();
102
+ }
71
103
  const loadConfig = async () => {
72
104
  if (!props.templateKey) {
73
105
  return;
@@ -80,13 +112,16 @@ const _sfc_main = /* @__PURE__ */ Object.assign({
80
112
  "form",
81
113
  props.initOption
82
114
  );
115
+ emit("loaded", option);
116
+ rowHeight.value = option.labelPosition == "top" ? 1.5 : 1;
83
117
  localConfig.value = option;
84
118
  fieldsData.value = option.fieldsData.map((item) => item.component);
85
- initFormData();
119
+ hiddenFields.value = option.hiddenFields || [];
120
+ loadFormData();
86
121
  await loadFieldDataSources();
87
122
  loadEventFlow();
88
123
  configLoaded.value = true;
89
- if (localConfig.value.pageEventConfig) {
124
+ if (pageEvents && localConfig.value.pageEventConfig) {
90
125
  const onCreatedEvent = localConfig.value.pageEventConfig.find(
91
126
  (e) => e.name === "onCreated"
92
127
  );
@@ -102,11 +137,11 @@ const _sfc_main = /* @__PURE__ */ Object.assign({
102
137
  configLoading.value = false;
103
138
  }
104
139
  };
105
- const initFormData = () => {
140
+ const loadFormData = () => {
106
141
  const data = {};
107
142
  const rules = {};
108
- if (localConfig.value.fieldsData) {
109
- localConfig.value.fieldsData.forEach(({ component }) => {
143
+ if (fieldsData.value) {
144
+ fieldsData.value.forEach((component) => {
110
145
  if (component.fieldName) {
111
146
  data[component.fieldName] = component.defaultValue ? component.defaultValue : null;
112
147
  }
@@ -118,15 +153,22 @@ const _sfc_main = /* @__PURE__ */ Object.assign({
118
153
  }
119
154
  });
120
155
  }
121
- formData.value = data;
156
+ if (hiddenFields.value && hiddenFields.value.length > 0) {
157
+ hiddenFields.value.forEach((field) => {
158
+ if (field.fieldName) {
159
+ data[field.fieldName] = field.value !== void 0 ? field.value : null;
160
+ }
161
+ });
162
+ }
163
+ formData.value = { ...data, ...props.modelValue };
122
164
  formRules.value = rules;
123
165
  };
124
166
  const loadFieldDataSources = async () => {
125
167
  var _a, _b;
126
- const fields = localConfig.value.fieldsData || [];
168
+ const fields = fieldsData.value || [];
127
169
  const fieldDataSources = /* @__PURE__ */ new Set();
128
170
  const dictionaryKeys = /* @__PURE__ */ new Set();
129
- for (const { component } of fields) {
171
+ for (const component of fields) {
130
172
  const fieldType = component.fieldType;
131
173
  if ((fieldType === "select" || fieldType === "multipleSelection" || fieldType === "radio" || fieldType === "checkbox") && component.optionConfig) {
132
174
  const { optionSource, dataSourceValue, dictionaryValue } = component.optionConfig;
@@ -186,8 +228,8 @@ const _sfc_main = /* @__PURE__ */ Object.assign({
186
228
  mergeOptionsToFields();
187
229
  };
188
230
  const mergeOptionsToFields = () => {
189
- if (localConfig.value.fieldsData) {
190
- localConfig.value.fieldsData.forEach(({ component }) => {
231
+ if (fieldsData.value) {
232
+ fieldsData.value.forEach((component) => {
191
233
  if (!component.optionConfig) return;
192
234
  const {
193
235
  optionSource,
@@ -226,7 +268,7 @@ const _sfc_main = /* @__PURE__ */ Object.assign({
226
268
  getEventHandlers: createEventHandlers,
227
269
  handleEvent: createHandleEvent
228
270
  } = useEventFlow({
229
- fields: fieldsData.value,
271
+ fields: [...fieldsData.value, ...hiddenFields.value],
230
272
  ctx,
231
273
  dataSources: localConfig.value.dataSources,
232
274
  components: {
@@ -237,7 +279,7 @@ const _sfc_main = /* @__PURE__ */ Object.assign({
237
279
  const getEventHandlers = (row, item, eventConfig) => {
238
280
  return createEventHandlers(item, row, eventConfig);
239
281
  };
240
- localConfig.value.fieldsData.forEach(({ component }) => {
282
+ fieldsData.value.forEach((component) => {
241
283
  if (component.fieldName) {
242
284
  component.eventHandlers = getEventHandlers(
243
285
  formData.value,
@@ -247,14 +289,132 @@ const _sfc_main = /* @__PURE__ */ Object.assign({
247
289
  }
248
290
  });
249
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
+ });
250
411
  const getFieldError = (fieldName) => {
251
412
  var _a;
252
413
  if (!formRef.value) return "";
253
414
  const field = (_a = formRef.value.fields) == null ? void 0 : _a.find((f) => f.prop === fieldName);
254
415
  return (field == null ? void 0 : field.validateMessage) || "";
255
416
  };
256
- const handleFieldChange = (value, field) => {
257
- emit("change", { field: field.fieldName, value });
417
+ const handleFieldChange = (config, value) => {
258
418
  };
259
419
  const handleCustomButtonClick = (button) => {
260
420
  var _a;
@@ -272,40 +432,80 @@ const _sfc_main = /* @__PURE__ */ Object.assign({
272
432
  var _a, _b;
273
433
  (_a = formRef.value) == null ? void 0 : _a.clearValidate();
274
434
  (_b = formRef.value) == null ? void 0 : _b.resetFields();
275
- 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"
276
450
  };
277
451
  const getFormData = () => {
278
452
  const result = { ...formData.value };
279
- if (localConfig.value.fieldsData) {
280
- localConfig.value.fieldsData.forEach(({ component }) => {
281
- const fieldName = component.fieldName;
282
- const fieldType = component.fieldType;
283
- if (fieldName && (fieldType === "checkbox" || fieldType === "multipleSelection")) {
284
- const value = result[fieldName];
285
- if (Array.isArray(value)) {
286
- result[fieldName] = value.join("|");
287
- }
453
+ const processField = (field) => {
454
+ const fieldName = field.fieldName;
455
+ const fieldType = field.fieldType;
456
+ const value = result[fieldName];
457
+ if (fieldName && (fieldType === "checkbox" || fieldType === "multipleSelection")) {
458
+ if (Array.isArray(value)) {
459
+ result[fieldName] = value.join("|");
288
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);
465
+ }
466
+ };
467
+ if (fieldsData.value) {
468
+ fieldsData.value.forEach((component) => {
469
+ processField(component);
470
+ });
471
+ }
472
+ if (hiddenFields.value && hiddenFields.value.length > 0) {
473
+ hiddenFields.value.forEach((field) => {
474
+ processField(field);
289
475
  });
290
476
  }
291
477
  return result;
292
478
  };
293
479
  const setFormData = (data) => {
294
480
  const processedData = { ...data };
295
- if (localConfig.value.fieldsData) {
296
- localConfig.value.fieldsData.forEach(({ component }) => {
297
- const fieldName = component.fieldName;
298
- const fieldType = component.fieldType;
299
- if (fieldName && (fieldType === "checkbox" || fieldType === "multipleSelection")) {
300
- const value = processedData[fieldName];
301
- if (typeof value === "string" && value.includes("|")) {
302
- processedData[fieldName] = value.split("|");
303
- } else if (typeof value === "string" && value !== "") {
304
- processedData[fieldName] = [value];
305
- } else if (value === "" || value === null || value === void 0) {
306
- processedData[fieldName] = [];
307
- }
481
+ const processField = (field) => {
482
+ const fieldName = field.fieldName;
483
+ const fieldType = field.fieldType;
484
+ const value = processedData[fieldName];
485
+ if (fieldName && (fieldType === "checkbox" || fieldType === "multipleSelection")) {
486
+ if (typeof value === "string" && value.includes("|")) {
487
+ processedData[fieldName] = value.split("|");
488
+ } else if (typeof value === "string" && value !== "") {
489
+ processedData[fieldName] = [value];
490
+ } else if (value === "" || value === null || value === void 0) {
491
+ processedData[fieldName] = [];
308
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
+ );
499
+ }
500
+ };
501
+ if (fieldsData.value) {
502
+ fieldsData.value.forEach((component) => {
503
+ processField(component);
504
+ });
505
+ }
506
+ if (hiddenFields.value && hiddenFields.value.length > 0) {
507
+ hiddenFields.value.forEach((field) => {
508
+ processField(field);
309
509
  });
310
510
  }
311
511
  Object.assign(formData.value, processedData);
@@ -313,6 +513,17 @@ const _sfc_main = /* @__PURE__ */ Object.assign({
313
513
  onMounted(() => {
314
514
  loadConfig();
315
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);
316
527
  __expose({
317
528
  validate,
318
529
  resetFields,
@@ -328,7 +539,7 @@ const _sfc_main = /* @__PURE__ */ Object.assign({
328
539
  style: { "height": "100%" }
329
540
  }, {
330
541
  default: withCtx(() => [
331
- !configLoading.value ? (openBlock(), createBlock(unref(header), {
542
+ !configLoading.value && !__props.isSubForm ? (openBlock(), createBlock(unref(header), {
332
543
  key: 0,
333
544
  pageHeaderConfig: localConfig.value.pageHeaderConfig
334
545
  }, null, 8, ["pageHeaderConfig"])) : createCommentVNode("", true),
@@ -340,16 +551,17 @@ const _sfc_main = /* @__PURE__ */ Object.assign({
340
551
  model: formData.value,
341
552
  rules: formRules.value,
342
553
  "label-position": localConfig.value.labelPosition,
343
- style: { "padding": "18px" },
554
+ style: normalizeStyle({ padding: __props.isSubForm ? "0" : "18px" }),
344
555
  "validate-on-rule-change": false
345
556
  }, {
346
557
  default: withCtx(() => [
347
558
  !configLoading.value ? (openBlock(), createBlock(unref(De), {
348
559
  key: 0,
349
- ref: "gridLayout",
350
- layout: localConfig.value.fieldsData,
351
- "onUpdate:layout": _cache[0] || (_cache[0] = ($event) => localConfig.value.fieldsData = $event),
352
- "row-height": localConfig.value.labelPosition == "top" ? 90 : 60,
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,
353
565
  margin: [0, 0],
354
566
  "col-num": localConfig.value.columns,
355
567
  "is-draggable": false,
@@ -367,23 +579,33 @@ const _sfc_main = /* @__PURE__ */ Object.assign({
367
579
  }, null, 8, ["modelValue", "onUpdate:modelValue", "config", "localConfig", "error", "formRef"])
368
580
  ]),
369
581
  _: 1
370
- }, 8, ["layout", "row-height", "col-num"])) : createCommentVNode("", true)
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))
371
591
  ]),
372
592
  _: 1
373
- }, 8, ["model", "rules", "label-position"])
593
+ }, 8, ["model", "rules", "label-position", "style"])
374
594
  ]),
375
595
  _: 1
376
596
  }),
377
- createVNode(unref(footer), {
597
+ !__props.isSubForm ? (openBlock(), createBlock(unref(footer), {
598
+ key: 1,
378
599
  pageFooterConfig: localConfig.value.pageFooterConfig,
379
600
  onCustomButtonClick: handleCustomButtonClick
380
- }, null, 8, ["pageFooterConfig"])
601
+ }, null, 8, ["pageFooterConfig"])) : createCommentVNode("", true)
381
602
  ]),
382
603
  _: 1
383
604
  });
384
605
  };
385
606
  }
386
607
  });
608
+ const _Form = /* @__PURE__ */ _export_sfc(_sfc_main, [["__scopeId", "data-v-8a7ec746"]]);
387
609
  export {
388
- _sfc_main as default
610
+ _Form as default
389
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