@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
@@ -2,6 +2,11 @@
2
2
  Object.defineProperties(exports, { __esModule: { value: true }, [Symbol.toStringTag]: { value: "Module" } });
3
3
  ;/* empty css */
4
4
  ;/* empty css */
5
+ ;/* empty css */
6
+ ;/* empty css */
7
+ ;/* empty css */
8
+ ;/* empty css */
9
+ ;/* empty css */
5
10
  const vue = require("vue");
6
11
  require("../../../../../node_modules/.pnpm/vxe-table@4.17.47_vue@3.5.13_typescript@5.7.3_/node_modules/vxe-table/es/components.js");
7
12
  ;/* empty css */
@@ -9,6 +14,7 @@ const datasource = require("../../utils/datasource.js");
9
14
  const Pagination = require("./Pagination.vue.js");
10
15
  const CustomButtons = require("./CustomButtons.vue.js");
11
16
  const TableColumn = require("./TableColumn.vue.js");
17
+ const TableFilter = require("./TableFilter.vue.js");
12
18
  const getInstance = require("../../utils/getInstance.js");
13
19
  ;/* empty css */
14
20
  ;/* empty css */
@@ -20,9 +26,10 @@ const eventFlowHandler = require("../../utils/eventFlow/eventFlowHandler.js");
20
26
  const getJsonAsyncUtil = require("../../utils/getJsonAsyncUtil.js");
21
27
  ;/* empty css */
22
28
  const _pluginVue_exportHelper = require("../../../../../_virtual/_plugin-vue_export-helper.js");
23
- const index = require("../../../../../node_modules/.pnpm/vxe-table@4.17.47_vue@3.5.13_typescript@5.7.3_/node_modules/vxe-table/es/table/index.js");
29
+ 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");
30
+ const index$1 = require("../../../../../node_modules/.pnpm/vxe-table@4.17.47_vue@3.5.13_typescript@5.7.3_/node_modules/vxe-table/es/table/index.js");
24
31
  const directive = require("../../../../../node_modules/.pnpm/element-plus@2.13.2_vue@3.5.13_typescript@5.7.3_/node_modules/element-plus/es/components/loading/src/directive.js");
25
- const index$1 = require("../../../../../node_modules/.pnpm/element-plus@2.13.2_vue@3.5.13_typescript@5.7.3_/node_modules/element-plus/es/components/message/index.js");
32
+ const index$2 = require("../../../../../node_modules/.pnpm/element-plus@2.13.2_vue@3.5.13_typescript@5.7.3_/node_modules/element-plus/es/components/message/index.js");
26
33
  const _hoisted_1 = { class: "fec-table" };
27
34
  const _sfc_main = /* @__PURE__ */ Object.assign({
28
35
  inheritAttrs: false
@@ -38,15 +45,39 @@ const _sfc_main = /* @__PURE__ */ Object.assign({
38
45
  type: String,
39
46
  default: ""
40
47
  },
41
- // 表格数据(优先级高于数据源)
48
+ // 表格数据
42
49
  tableData: {
43
50
  type: Array,
44
51
  default: () => []
45
52
  },
53
+ initSearchData: {
54
+ type: Object,
55
+ default: {}
56
+ },
57
+ canLoadBySearchData: {
58
+ type: Boolean,
59
+ default: false
60
+ },
46
61
  initOption: {
47
62
  type: Object,
48
63
  default: () => {
49
64
  }
65
+ },
66
+ isSubTable: {
67
+ type: Boolean,
68
+ default: false
69
+ },
70
+ hasPagination: {
71
+ type: Boolean,
72
+ default: false
73
+ },
74
+ height: {
75
+ type: Number,
76
+ default: null
77
+ },
78
+ readonly: {
79
+ type: Boolean,
80
+ default: false
50
81
  }
51
82
  },
52
83
  emits: [
@@ -55,7 +86,8 @@ const _sfc_main = /* @__PURE__ */ Object.assign({
55
86
  "opt-click",
56
87
  "selection-change",
57
88
  "sort-change",
58
- "page-change"
89
+ "page-change",
90
+ "loaded"
59
91
  ],
60
92
  setup(__props, { expose: __expose, emit: __emit }) {
61
93
  const props = __props;
@@ -84,6 +116,14 @@ const _sfc_main = /* @__PURE__ */ Object.assign({
84
116
  }
85
117
  return ((_a = dataSourceManager.value) == null ? void 0 : _a.getLoading()) || false;
86
118
  });
119
+ const isPagination = vue.computed(() => {
120
+ var _a;
121
+ if (props.isSubTable) {
122
+ return props.hasPagination;
123
+ } else {
124
+ return (_a = localConfig.value.paginationConfig) == null ? void 0 : _a.enabled;
125
+ }
126
+ });
87
127
  const displayPagination = vue.computed(() => {
88
128
  var _a, _b, _c;
89
129
  if (props.tableData && props.tableData.length > 0) {
@@ -114,13 +154,15 @@ const _sfc_main = /* @__PURE__ */ Object.assign({
114
154
  if (!((_a = localConfig.value.dataSources) == null ? void 0 : _a.length)) return;
115
155
  dataSourceManager.value = datasource.createDataSource({
116
156
  http: ctx.$http,
157
+ initSearchData: props.initSearchData,
117
158
  dataSources: localConfig.value.dataSources,
118
159
  currentDataSourceId: localConfig.value.dataSourceId,
119
160
  pagination: {
120
161
  pageNo: 1,
121
- pageSize: ((_b = localConfig.value.paginationConfig) == null ? void 0 : _b.pageSize) || 10
162
+ pageSize: isPagination.value ? (_b = localConfig.value.paginationConfig) == null ? void 0 : _b.pageSize : 0
122
163
  },
123
- sortRules: localConfig.value.sortRules
164
+ sortRules: localConfig.value.sortRules,
165
+ templateId: localConfig.value.templateKey
124
166
  });
125
167
  dataSourceManager.value.on("loaded", (data) => {
126
168
  emit("data-loaded", data);
@@ -139,7 +181,7 @@ const _sfc_main = /* @__PURE__ */ Object.assign({
139
181
  const fieldDataSources = /* @__PURE__ */ new Set();
140
182
  const dictionaryKeys = /* @__PURE__ */ new Set();
141
183
  for (const field of fields) {
142
- if (field.fieldType === "select" && field.optionConfig) {
184
+ if ((field.fieldType === "select" || field.fieldType === "multipleSelection") && field.optionConfig) {
143
185
  const { optionSource, dataSourceValue, dictionaryValue } = field.optionConfig;
144
186
  if (optionSource === "dataSource" && dataSourceValue) {
145
187
  fieldDataSources.add(dataSourceValue);
@@ -194,6 +236,42 @@ const _sfc_main = /* @__PURE__ */ Object.assign({
194
236
  console.error("Failed to load dictionary data:", error);
195
237
  }
196
238
  }
239
+ mergeOptionsToFields();
240
+ };
241
+ const mergeOptionsToFields = () => {
242
+ if (localConfig.value.fieldsData) {
243
+ localConfig.value.fieldsData.forEach((field) => {
244
+ if (!field.optionConfig) return;
245
+ const {
246
+ optionSource,
247
+ dataSourceValue,
248
+ dictionaryValue,
249
+ displayField,
250
+ valueField
251
+ } = field.optionConfig;
252
+ if (optionSource === "dataSource" && dataSourceOptions.value[dataSourceValue]) {
253
+ const rawOptions = dataSourceOptions.value[dataSourceValue];
254
+ const labelField = displayField || "label";
255
+ const keyField = valueField || "value";
256
+ field.optionConfig.options = rawOptions.map((item) => ({
257
+ label: item[labelField],
258
+ value: item[keyField],
259
+ disabled: item.disabled || false
260
+ }));
261
+ } else if (optionSource === "dictionary" && dictionaryOptions.value[dictionaryValue]) {
262
+ const rawOptions = dictionaryOptions.value[dictionaryValue];
263
+ const labelField = "optName";
264
+ const keyField = "optCode";
265
+ field.optionConfig.options = rawOptions.map((item) => ({
266
+ label: item[labelField],
267
+ value: item[keyField],
268
+ disabled: item.disabled || false
269
+ }));
270
+ } else if (optionSource === "custom") {
271
+ field.optionConfig.options = field.optionConfig.options || [];
272
+ }
273
+ });
274
+ }
197
275
  };
198
276
  const { handleEvent } = eventFlowHandler.useEventFlow({
199
277
  fields: localConfig.value.fieldsData,
@@ -247,6 +325,18 @@ const _sfc_main = /* @__PURE__ */ Object.assign({
247
325
  const handleRadioChange = (checked) => {
248
326
  emit("selection-change", [checked.row]);
249
327
  };
328
+ const handleFilterSearch = (filters) => {
329
+ if (dataSourceManager.value) {
330
+ dataSourceManager.value.updateParams(filters);
331
+ dataSourceManager.value.fetch();
332
+ }
333
+ };
334
+ const handleFilterReset = () => {
335
+ if (dataSourceManager.value) {
336
+ dataSourceManager.value.clearParams();
337
+ dataSourceManager.value.fetch();
338
+ }
339
+ };
250
340
  const refresh = (options = {}) => {
251
341
  var _a;
252
342
  const {
@@ -340,9 +430,10 @@ const _sfc_main = /* @__PURE__ */ Object.assign({
340
430
  props.initOption
341
431
  );
342
432
  localConfig.value = option;
433
+ emit("loaded", option);
343
434
  } catch (error) {
344
435
  console.error("加载配置失败:", error);
345
- index$1.ElMessage.error("加载配置失败");
436
+ index$2.ElMessage.error("加载配置失败");
346
437
  } finally {
347
438
  configLoading.value = false;
348
439
  }
@@ -352,6 +443,16 @@ const _sfc_main = /* @__PURE__ */ Object.assign({
352
443
  initDataSourceManager();
353
444
  });
354
445
  });
446
+ vue.watch(
447
+ () => props.initSearchData,
448
+ (val) => {
449
+ if (props.canLoadBySearchData && dataSourceManager.value) {
450
+ dataSourceManager.value.updateInitSearchData(val);
451
+ refresh();
452
+ }
453
+ },
454
+ { deep: true }
455
+ );
355
456
  vue.onUnmounted(() => {
356
457
  if (dataSourceManager.value) {
357
458
  dataSourceManager.value.destroy();
@@ -367,74 +468,94 @@ const _sfc_main = /* @__PURE__ */ Object.assign({
367
468
  exportData: handleExport
368
469
  });
369
470
  return (_ctx, _cache) => {
370
- var _a;
471
+ const _component_el_container = index.ElContainer;
371
472
  const _directive_loading = directive.default;
372
- return !configLoading.value ? (vue.openBlock(), vue.createElementBlock("div", {
373
- key: 0,
374
- ref_key: "tableContainer",
375
- ref: tableContainer,
376
- class: "fec-table-container"
377
- }, [
378
- vue.createVNode(CustomButtons.default, {
379
- "custom-btns": localConfig.value.customBtns,
380
- onClick: handleCustomBtnClick
381
- }, null, 8, ["custom-btns"]),
382
- vue.createElementVNode("div", _hoisted_1, [
383
- vue.withDirectives((vue.openBlock(), vue.createBlock(vue.unref(index.VxeTable), {
384
- ref_key: "tableRef",
385
- ref: tableRef,
386
- data: displayData.value,
387
- "auto-resize": autoResize.value,
388
- height: tableHeight.value,
389
- "empty-text": "暂无数据",
390
- "export-config": vue.unref(exportConfig),
391
- "cell-config": { height: 40 },
392
- onSortChange: handleSortChange,
393
- onCheckboxChange: handleCheckboxChange,
394
- onCheckboxAll: handleCheckboxAll,
395
- onRadioChange: handleRadioChange
396
- }, {
397
- default: vue.withCtx(() => {
398
- var _a2;
399
- return [
400
- vue.createVNode(TableColumn.default, {
401
- "fields-data": localConfig.value.fieldsData,
402
- "show-index": localConfig.value.showIndex,
403
- "select-mode": localConfig.value.selectMode,
404
- "is-opt-btns": localConfig.value.isOptBtns,
405
- "opt-btns": localConfig.value.optBtns,
406
- "mode-key": currentMode.value,
407
- modes: localConfig.value.mode,
408
- "data-source-options": dataSourceOptions.value,
409
- "dictionary-options": dictionaryOptions.value,
410
- "data-sources": localConfig.value.dataSources,
411
- "table-ref": (_a2 = vue.unref(instance)) == null ? void 0 : _a2.proxy
412
- }, vue.createSlots({ _: 2 }, [
413
- vue.renderList(localConfig.value.fieldsData, (field) => {
414
- return {
415
- name: `cell-${field.fieldName}`,
416
- fn: vue.withCtx((scope) => [
417
- vue.renderSlot(_ctx.$slots, `cell-${field.fieldName}`, vue.normalizeProps(vue.guardReactiveProps(scope)), void 0, true)
418
- ])
419
- };
420
- })
421
- ]), 1032, ["fields-data", "show-index", "select-mode", "is-opt-btns", "opt-btns", "mode-key", "modes", "data-source-options", "dictionary-options", "data-sources", "table-ref"])
422
- ];
423
- }),
424
- _: 3
425
- }, 8, ["data", "auto-resize", "height", "export-config"])), [
426
- [_directive_loading, loading.value]
427
- ])
473
+ return vue.openBlock(), vue.createBlock(_component_el_container, {
474
+ direction: "vertical",
475
+ style: { "height": "100%" }
476
+ }, {
477
+ default: vue.withCtx(() => [
478
+ !configLoading.value ? (vue.openBlock(), vue.createElementBlock("div", {
479
+ key: 0,
480
+ ref_key: "tableContainer",
481
+ ref: tableContainer,
482
+ class: "fec-table-container",
483
+ style: vue.normalizeStyle(
484
+ props.height && props.height > 0 ? { height: `${props.height}px` } : {}
485
+ )
486
+ }, [
487
+ !__props.isSubTable ? (vue.openBlock(), vue.createBlock(TableFilter.default, {
488
+ key: 0,
489
+ "query-config": localConfig.value.queryConfig,
490
+ "fields-data": localConfig.value.fieldsData,
491
+ onSearch: handleFilterSearch,
492
+ onReset: handleFilterReset
493
+ }, null, 8, ["query-config", "fields-data"])) : vue.createCommentVNode("", true),
494
+ !__props.readonly ? (vue.openBlock(), vue.createBlock(CustomButtons.default, {
495
+ key: 1,
496
+ "custom-btns": localConfig.value.customBtns,
497
+ onClick: handleCustomBtnClick
498
+ }, null, 8, ["custom-btns"])) : vue.createCommentVNode("", true),
499
+ vue.createElementVNode("div", _hoisted_1, [
500
+ vue.withDirectives((vue.openBlock(), vue.createBlock(vue.unref(index$1.VxeTable), {
501
+ ref_key: "tableRef",
502
+ ref: tableRef,
503
+ data: displayData.value,
504
+ "auto-resize": autoResize.value,
505
+ height: tableHeight.value,
506
+ "empty-text": "暂无数据",
507
+ "export-config": vue.unref(exportConfig),
508
+ "cell-config": { height: 40 },
509
+ onSortChange: handleSortChange,
510
+ onCheckboxChange: handleCheckboxChange,
511
+ onCheckboxAll: handleCheckboxAll,
512
+ onRadioChange: handleRadioChange
513
+ }, {
514
+ default: vue.withCtx(() => {
515
+ var _a;
516
+ return [
517
+ vue.createVNode(TableColumn.default, {
518
+ "fields-data": localConfig.value.fieldsData,
519
+ "show-index": localConfig.value.showIndex,
520
+ "select-mode": localConfig.value.selectMode,
521
+ "is-opt-btns": localConfig.value.isOptBtns,
522
+ "opt-btns": localConfig.value.optBtns,
523
+ "mode-key": currentMode.value,
524
+ modes: localConfig.value.mode,
525
+ "data-source-options": dataSourceOptions.value,
526
+ "dictionary-options": dictionaryOptions.value,
527
+ "data-sources": localConfig.value.dataSources,
528
+ "table-ref": (_a = vue.unref(instance)) == null ? void 0 : _a.proxy,
529
+ "table-data": displayData.value
530
+ }, vue.createSlots({ _: 2 }, [
531
+ vue.renderList(localConfig.value.fieldsData, (field) => {
532
+ return {
533
+ name: `cell-${field.fieldName}`,
534
+ fn: vue.withCtx((scope) => [
535
+ vue.renderSlot(_ctx.$slots, `cell-${field.fieldName}`, vue.normalizeProps(vue.guardReactiveProps(scope)), void 0, true)
536
+ ])
537
+ };
538
+ })
539
+ ]), 1032, ["fields-data", "show-index", "select-mode", "is-opt-btns", "opt-btns", "mode-key", "modes", "data-source-options", "dictionary-options", "data-sources", "table-ref", "table-data"])
540
+ ];
541
+ }),
542
+ _: 3
543
+ }, 8, ["data", "auto-resize", "height", "export-config"])), [
544
+ [_directive_loading, loading.value]
545
+ ])
546
+ ]),
547
+ isPagination.value ? (vue.openBlock(), vue.createBlock(Pagination.default, {
548
+ key: 2,
549
+ config: localConfig.value.paginationConfig,
550
+ pagination: displayPagination.value,
551
+ onChange: handlePageChange
552
+ }, null, 8, ["config", "pagination"])) : vue.createCommentVNode("", true)
553
+ ], 4)) : vue.createCommentVNode("", true)
428
554
  ]),
429
- ((_a = localConfig.value.paginationConfig) == null ? void 0 : _a.enabled) ? (vue.openBlock(), vue.createBlock(Pagination.default, {
430
- key: 0,
431
- config: localConfig.value.paginationConfig,
432
- pagination: displayPagination.value,
433
- onChange: handlePageChange
434
- }, null, 8, ["config", "pagination"])) : vue.createCommentVNode("", true)
435
- ], 512)) : vue.createCommentVNode("", true);
555
+ _: 3
556
+ });
436
557
  };
437
558
  }
438
559
  });
439
- const _Table = /* @__PURE__ */ _pluginVue_exportHelper.default(_sfc_main, [["__scopeId", "data-v-9014257e"]]);
440
- exports.default = _Table;
560
+ const Table = /* @__PURE__ */ _pluginVue_exportHelper.default(_sfc_main, [["__scopeId", "data-v-42f50d67"]]);
561
+ exports.default = Table;
@@ -14,6 +14,7 @@ const parseFilterConfig = require("../../utils/parseFilterConfig.js");
14
14
  ;/* empty css */
15
15
  const eventFlowHandler = require("../../utils/eventFlow/eventFlowHandler.js");
16
16
  const getInstance = require("../../utils/getInstance.js");
17
+ const decimal = require("../../../../../node_modules/.pnpm/decimal.js@10.6.0/node_modules/decimal.js/decimal.js");
17
18
  ;/* empty css */
18
19
  const _pluginVue_exportHelper = require("../../../../../_virtual/_plugin-vue_export-helper.js");
19
20
  const index = require("../../../../../node_modules/.pnpm/vxe-table@4.17.47_vue@3.5.13_typescript@5.7.3_/node_modules/vxe-table/es/column/index.js");
@@ -78,6 +79,11 @@ const _sfc_main = {
78
79
  tableRef: {
79
80
  type: Object,
80
81
  default: null
82
+ },
83
+ // 表格数据
84
+ tableData: {
85
+ type: Array,
86
+ default: () => []
81
87
  }
82
88
  },
83
89
  setup(__props) {
@@ -105,11 +111,32 @@ const _sfc_main = {
105
111
  if (value === null || value === void 0) return "";
106
112
  switch (field.fieldType) {
107
113
  case "number":
114
+ let numValue = Number(value);
115
+ if (isNaN(numValue)) return value;
116
+ switch (field.format) {
117
+ case "wan":
118
+ numValue = new decimal.Decimal(numValue).div(new decimal.Decimal(1e4)).toNumber();
119
+ break;
120
+ case "million":
121
+ numValue = new decimal.Decimal(numValue).div(new decimal.Decimal(1e6)).toNumber();
122
+ break;
123
+ case "percentage":
124
+ numValue = new decimal.Decimal(numValue).mul(new decimal.Decimal(100)).toNumber();
125
+ break;
126
+ }
108
127
  if (field.hasDecimalPlaces && field.decimalPlaces !== void 0) {
109
- return Number(value).toFixed(field.decimalPlaces);
128
+ numValue = Number(numValue.toFixed(field.decimalPlaces));
110
129
  }
111
- return value;
130
+ if (field.showThousandsSeparator) {
131
+ const formatted = numValue.toLocaleString("en-US", {
132
+ minimumFractionDigits: field.hasDecimalPlaces && field.decimalPlaces !== void 0 ? field.decimalPlaces : 0,
133
+ maximumFractionDigits: field.hasDecimalPlaces && field.decimalPlaces !== void 0 ? field.decimalPlaces : 20
134
+ });
135
+ return formatted;
136
+ }
137
+ return numValue;
112
138
  case "select":
139
+ case "multipleSelection":
113
140
  if (field.optionConfig) {
114
141
  let options = [];
115
142
  let displayField = "label";
@@ -127,6 +154,14 @@ const _sfc_main = {
127
154
  displayField = "optName";
128
155
  valueField = "optCode";
129
156
  }
157
+ if (typeof value === "string" && value.includes("|")) {
158
+ const values = value.split("|");
159
+ const displayValues = values.map((val) => {
160
+ const option2 = options.find((opt) => opt[valueField] == val);
161
+ return option2 ? option2[displayField] : val;
162
+ });
163
+ return displayValues.join(", ");
164
+ }
130
165
  const option = options.find((opt) => opt[valueField] == value);
131
166
  return option ? option[displayField] : value;
132
167
  }
@@ -182,11 +217,17 @@ const _sfc_main = {
182
217
  });
183
218
  };
184
219
  const getVisibleOptBtns = (row) => {
185
- return props.optBtns.filter((item) => {
220
+ const btnList = props.optBtns.filter((item) => {
186
221
  if (!item.showCondition) return true;
187
222
  return parseFilterConfig.checkFilterMatch(item.showCondition, row, props.fieldsData);
188
223
  });
224
+ return btnList;
189
225
  };
226
+ const shouldShowOptColumn = vue.computed(() => {
227
+ if (!props.isOptBtns || !props.optBtns.length) return false;
228
+ if (!props.tableData || props.tableData.length === 0) return true;
229
+ return props.tableData.some((row) => getVisibleOptBtns(row).length > 0);
230
+ });
190
231
  const isBtnDisabled = (row, item) => {
191
232
  if (!item.disableCondition) return false;
192
233
  return parseFilterConfig.checkFilterMatch(item.disableCondition, row, props.fieldsData);
@@ -272,7 +313,7 @@ const _sfc_main = {
272
313
  _: 2
273
314
  }, 1032, ["field", "title", "width", "min-width", "fixed", "align", "header-align", "sortable"]);
274
315
  }), 128)),
275
- __props.isOptBtns && __props.optBtns.length ? (vue.openBlock(), vue.createBlock(vue.unref(index.VxeColumn), {
316
+ !_ctx.readonly && shouldShowOptColumn.value ? (vue.openBlock(), vue.createBlock(vue.unref(index.VxeColumn), {
276
317
  key: 3,
277
318
  title: "操作",
278
319
  width: __props.optBtns.length * 80 + 20,
@@ -300,5 +341,5 @@ const _sfc_main = {
300
341
  };
301
342
  }
302
343
  };
303
- const TableColumn = /* @__PURE__ */ _pluginVue_exportHelper.default(_sfc_main, [["__scopeId", "data-v-28498ce1"]]);
344
+ const TableColumn = /* @__PURE__ */ _pluginVue_exportHelper.default(_sfc_main, [["__scopeId", "data-v-c1f83204"]]);
304
345
  exports.default = TableColumn;