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