@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
@@ -0,0 +1,306 @@
1
+ "use strict";
2
+ Object.defineProperties(exports, { __esModule: { value: true }, [Symbol.toStringTag]: { value: "Module" } });
3
+ ;/* empty css */
4
+ ;/* empty css */
5
+ ;/* empty css */
6
+ ;/* empty css */
7
+ ;/* empty css */
8
+ ;/* empty css */
9
+ ;/* empty css */
10
+ require("../../../../../node_modules/.pnpm/element-plus@2.13.2_vue@3.5.13_typescript@5.7.3_/node_modules/element-plus/theme-chalk/el-date-picker.css.js");
11
+ ;/* empty css */
12
+ ;/* empty css */
13
+ ;/* empty css */
14
+ const vue = require("vue");
15
+ const index$4 = require("../../../../../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.js");
16
+ const index$b = require("../forms/text/index.js");
17
+ const index$7 = require("../forms/select/index.js");
18
+ const index$8 = require("../forms/multipleSelection/index.js");
19
+ const index$a = require("../forms/date/index.js");
20
+ const index$9 = require("../forms/number/index.js");
21
+ ;/* empty css */
22
+ const _pluginVue_exportHelper = require("../../../../../_virtual/_plugin-vue_export-helper.js");
23
+ 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/form/index.js");
24
+ 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/date-picker/index.js");
25
+ 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/input-number/index.js");
26
+ const index$3 = require("../../../../../node_modules/.pnpm/element-plus@2.13.2_vue@3.5.13_typescript@5.7.3_/node_modules/element-plus/es/components/button/index.js");
27
+ const index$5 = require("../../../../../node_modules/.pnpm/element-plus@2.13.2_vue@3.5.13_typescript@5.7.3_/node_modules/element-plus/es/components/divider/index.js");
28
+ const index$6 = require("../../../../../node_modules/.pnpm/element-plus@2.13.2_vue@3.5.13_typescript@5.7.3_/node_modules/element-plus/es/components/icon/index.js");
29
+ const _hoisted_1 = {
30
+ key: 1,
31
+ style: { "display": "flex", "align-items": "center", "gap": "8px", "width": "100%" }
32
+ };
33
+ const _sfc_main = {
34
+ __name: "TableFilter",
35
+ props: {
36
+ queryConfig: {
37
+ type: Object,
38
+ default: () => ({})
39
+ },
40
+ fieldsData: {
41
+ type: Array,
42
+ default: () => []
43
+ }
44
+ },
45
+ emits: ["search", "reset"],
46
+ setup(__props, { expose: __expose, emit: __emit }) {
47
+ vue.useCssVars((_ctx) => ({
48
+ "3f99436f": `${config.value.collapseRows * 90}px`
49
+ }));
50
+ const props = __props;
51
+ const emit = __emit;
52
+ const config = vue.computed(() => {
53
+ var _a, _b, _c, _d, _e;
54
+ return {
55
+ enabled: ((_a = props.queryConfig) == null ? void 0 : _a.enabled) ?? false,
56
+ mode: ((_b = props.queryConfig) == null ? void 0 : _b.mode) || "fixed",
57
+ columnCount: ((_c = props.queryConfig) == null ? void 0 : _c.columnCount) || 3,
58
+ collapseRows: ((_d = props.queryConfig) == null ? void 0 : _d.collapseRows) || 2,
59
+ filterFields: ((_e = props.queryConfig) == null ? void 0 : _e.filterFields) || []
60
+ };
61
+ });
62
+ const getFieldConfig = (fieldId) => {
63
+ return props.fieldsData.find((field) => field.id === fieldId) || {};
64
+ };
65
+ const completeFilterFields = vue.computed(() => {
66
+ return config.value.filterFields.map((filterField) => {
67
+ const fieldConfig = getFieldConfig(filterField.fieldId);
68
+ return {
69
+ ...filterField,
70
+ ...fieldConfig
71
+ };
72
+ });
73
+ });
74
+ const filterValues = vue.ref({});
75
+ const isCollapsed = vue.ref(true);
76
+ const shouldShowToggle = vue.computed(() => {
77
+ const fieldCount = completeFilterFields.value.length;
78
+ const maxVisibleFields = config.value.columnCount * config.value.collapseRows;
79
+ return fieldCount > maxVisibleFields;
80
+ });
81
+ const isSingleLine = vue.computed(() => {
82
+ if (isCollapsed.value) {
83
+ return config.value.collapseRows === 1;
84
+ } else {
85
+ const totalRows = Math.ceil(
86
+ completeFilterFields.value.length / config.value.columnCount
87
+ );
88
+ return totalRows === 1;
89
+ }
90
+ });
91
+ const getFilterComponent = (fieldType) => {
92
+ const componentMap = {
93
+ text: index$b.Text,
94
+ select: index$7.Select,
95
+ date: index$a.Date,
96
+ number: index$9.Number,
97
+ multipleSelection: index$8.MultipleSelection,
98
+ switch: index$7.Select
99
+ };
100
+ return componentMap[fieldType] || index$b.Text;
101
+ };
102
+ const getComponentConfig = (field) => {
103
+ return { ...field };
104
+ };
105
+ const getPlaceholder = (field, type = "default") => {
106
+ const placeholderMap = {
107
+ text: "请输入",
108
+ select: "请选择",
109
+ date: type === "start" ? "开始日期" : type === "end" ? "结束日期" : "请选择日期",
110
+ number: "请输入",
111
+ number_min: "最小值",
112
+ number_max: "最大值",
113
+ radio: "请选择",
114
+ checkbox: "请选择",
115
+ switch: "请选择"
116
+ };
117
+ if (field.fieldType === "date") {
118
+ return placeholderMap.date;
119
+ }
120
+ if (field.fieldType === "number") {
121
+ return type === "min" ? placeholderMap.number_min : type === "max" ? placeholderMap.number_max : placeholderMap.number;
122
+ }
123
+ return `${placeholderMap[field.fieldType] || "请输入"}${field.label || ""}`;
124
+ };
125
+ const toggleCollapse = () => {
126
+ isCollapsed.value = !isCollapsed.value;
127
+ };
128
+ const handleSearch = () => {
129
+ const filters = {};
130
+ Object.keys(filterValues.value).forEach((key) => {
131
+ const value = filterValues.value[key];
132
+ if (value !== "" && value !== null && value !== void 0) {
133
+ const fieldConfig = completeFilterFields.value.find(
134
+ (field) => field.id == key
135
+ );
136
+ const fieldName = (fieldConfig == null ? void 0 : fieldConfig.fieldName) || key;
137
+ const maxKey = `${key}_max`;
138
+ const maxValue = filterValues.value[maxKey];
139
+ if (maxValue !== "" && maxValue !== null && maxValue !== void 0) {
140
+ filters[fieldName] = value + "|" + maxValue;
141
+ } else if (key.endsWith("_max")) {
142
+ return;
143
+ } else {
144
+ if (Array.isArray(value)) {
145
+ filters[fieldName] = value.join("|");
146
+ } else {
147
+ filters[fieldName] = value;
148
+ }
149
+ }
150
+ }
151
+ });
152
+ emit("search", { filters });
153
+ };
154
+ const handleReset = () => {
155
+ filterValues.value = {};
156
+ emit("reset");
157
+ };
158
+ vue.watch(
159
+ () => props.queryConfig,
160
+ () => {
161
+ filterValues.value = {};
162
+ isCollapsed.value = true;
163
+ },
164
+ { deep: true }
165
+ );
166
+ __expose({
167
+ getFilterValues: () => filterValues.value,
168
+ setFilterValues: (values) => {
169
+ filterValues.value = { ...values };
170
+ },
171
+ reset: handleReset
172
+ });
173
+ return (_ctx, _cache) => {
174
+ const _component_el_date_picker = index$1.ElDatePicker;
175
+ const _component_el_input_number = index$2.ElInputNumber;
176
+ const _component_el_form_item = index.ElFormItem;
177
+ const _component_el_button = index$3.ElButton;
178
+ const _component_el_form = index.ElForm;
179
+ const _component_el_icon = index$6.ElIcon;
180
+ const _component_el_divider = index$5.ElDivider;
181
+ return vue.openBlock(), vue.createElementBlock(vue.Fragment, null, [
182
+ config.value.enabled ? (vue.openBlock(), vue.createBlock(_component_el_form, {
183
+ key: 0,
184
+ model: filterValues.value,
185
+ class: "fec-table-filter",
186
+ "label-width": "100px",
187
+ "label-position": "right",
188
+ style: vue.normalizeStyle({ "--column-count": config.value.columnCount })
189
+ }, {
190
+ default: vue.withCtx(() => [
191
+ vue.createElementVNode("div", {
192
+ class: vue.normalizeClass(["filter-fields", { "is-collapsed": isCollapsed.value }])
193
+ }, [
194
+ (vue.openBlock(true), vue.createElementBlock(vue.Fragment, null, vue.renderList(completeFilterFields.value, (field, index2) => {
195
+ return vue.withDirectives((vue.openBlock(), vue.createElementBlock("div", {
196
+ key: field.id,
197
+ class: "filter-field"
198
+ }, [
199
+ vue.createVNode(_component_el_form_item, {
200
+ label: field.label || "筛选条件"
201
+ }, {
202
+ default: vue.withCtx(() => [
203
+ field.fieldType == "date" ? (vue.openBlock(), vue.createBlock(_component_el_date_picker, {
204
+ key: 0,
205
+ modelValue: filterValues.value[field.fieldId],
206
+ "onUpdate:modelValue": ($event) => filterValues.value[field.fieldId] = $event,
207
+ type: "daterange",
208
+ "start-placeholder": getPlaceholder(field, "start"),
209
+ "end-placeholder": getPlaceholder(field, "end"),
210
+ format: "YYYY-MM-DD",
211
+ "value-format": "YYYYMMDD",
212
+ clearable: "",
213
+ style: { "width": "100%" }
214
+ }, null, 8, ["modelValue", "onUpdate:modelValue", "start-placeholder", "end-placeholder"])) : field.fieldType == "number" ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_1, [
215
+ vue.createVNode(_component_el_input_number, {
216
+ modelValue: filterValues.value[field.fieldId],
217
+ "onUpdate:modelValue": ($event) => filterValues.value[field.fieldId] = $event,
218
+ placeholder: getPlaceholder(field, "min"),
219
+ controls: false,
220
+ "controls-position": "right",
221
+ style: { "flex": "1" },
222
+ clearable: ""
223
+ }, null, 8, ["modelValue", "onUpdate:modelValue", "placeholder"]),
224
+ _cache[0] || (_cache[0] = vue.createElementVNode("span", null, "-", -1)),
225
+ vue.createVNode(_component_el_input_number, {
226
+ modelValue: filterValues.value[`${field.fieldId}_max`],
227
+ "onUpdate:modelValue": ($event) => filterValues.value[`${field.fieldId}_max`] = $event,
228
+ placeholder: getPlaceholder(field, "max"),
229
+ controls: false,
230
+ "controls-position": "right",
231
+ style: { "flex": "1" },
232
+ clearable: ""
233
+ }, null, 8, ["modelValue", "onUpdate:modelValue", "placeholder"])
234
+ ])) : (vue.openBlock(), vue.createBlock(vue.resolveDynamicComponent(getFilterComponent(field.fieldType)), vue.mergeProps({
235
+ key: 2,
236
+ modelValue: filterValues.value[field.fieldId],
237
+ "onUpdate:modelValue": ($event) => filterValues.value[field.fieldId] = $event,
238
+ config: { ...field, eventHandlers: {} },
239
+ ref_for: true
240
+ }, getComponentConfig(field), {
241
+ placeholder: getPlaceholder(field)
242
+ }), null, 16, ["modelValue", "onUpdate:modelValue", "config", "placeholder"]))
243
+ ]),
244
+ _: 2
245
+ }, 1032, ["label"])
246
+ ])), [
247
+ [
248
+ vue.vShow,
249
+ !isCollapsed.value || index2 < config.value.columnCount * config.value.collapseRows
250
+ ]
251
+ ]);
252
+ }), 128))
253
+ ], 2),
254
+ vue.createElementVNode("div", {
255
+ class: vue.normalizeClass(["filter-actions", { inline: isSingleLine.value }])
256
+ }, [
257
+ vue.createVNode(_component_el_button, {
258
+ type: "primary",
259
+ onClick: handleSearch,
260
+ icon: vue.unref(index$4.Search)
261
+ }, {
262
+ default: vue.withCtx(() => _cache[1] || (_cache[1] = [
263
+ vue.createTextVNode("搜索")
264
+ ])),
265
+ _: 1
266
+ }, 8, ["icon"]),
267
+ vue.createVNode(_component_el_button, {
268
+ onClick: handleReset,
269
+ icon: vue.unref(index$4.Refresh)
270
+ }, {
271
+ default: vue.withCtx(() => _cache[2] || (_cache[2] = [
272
+ vue.createTextVNode("重置")
273
+ ])),
274
+ _: 1
275
+ }, 8, ["icon"])
276
+ ], 2)
277
+ ]),
278
+ _: 1
279
+ }, 8, ["model", "style"])) : vue.createCommentVNode("", true),
280
+ shouldShowToggle.value ? (vue.openBlock(), vue.createBlock(_component_el_divider, {
281
+ key: 1,
282
+ "border-style": "dashed",
283
+ class: "filter-divider"
284
+ }, {
285
+ default: vue.withCtx(() => [
286
+ vue.createElementVNode("div", {
287
+ onClick: toggleCollapse,
288
+ class: "collapse-toggle"
289
+ }, [
290
+ vue.createElementVNode("span", null, vue.toDisplayString(isCollapsed.value ? "更多筛选项" : "收起"), 1),
291
+ vue.createVNode(_component_el_icon, { style: { "transform": "rotate(90deg)" } }, {
292
+ default: vue.withCtx(() => [
293
+ isCollapsed.value ? (vue.openBlock(), vue.createBlock(vue.unref(index$4.DArrowRight), { key: 0 })) : (vue.openBlock(), vue.createBlock(vue.unref(index$4.DArrowLeft), { key: 1 }))
294
+ ]),
295
+ _: 1
296
+ })
297
+ ])
298
+ ]),
299
+ _: 1
300
+ })) : vue.createCommentVNode("", true)
301
+ ], 64);
302
+ };
303
+ }
304
+ };
305
+ const TableFilter = /* @__PURE__ */ _pluginVue_exportHelper.default(_sfc_main, [["__scopeId", "data-v-e72fcecc"]]);
306
+ exports.default = TableFilter;
@@ -14,10 +14,9 @@ function usePageEvents(getOptions) {
14
14
  const staticOptions = getOptions;
15
15
  getOptions = () => staticOptions;
16
16
  }
17
- const executeEvent = (eventName) => {
18
- var _a;
17
+ const executeEvent = async (eventName) => {
19
18
  const options = getOptions();
20
- const { pageEventConfig, ctx, formData, localConfig, components } = options;
19
+ const { pageEventConfig, ctx, formData, localConfig, components, fields } = options;
21
20
  if (!pageEventConfig || !Array.isArray(pageEventConfig) || pageEventConfig.length === 0) {
22
21
  console.log(`页面事件 ${eventName} 未配置或配置未加载完成,跳过执行`);
23
22
  return;
@@ -28,7 +27,7 @@ function usePageEvents(getOptions) {
28
27
  return;
29
28
  }
30
29
  const { getEventHandlers: createEventHandlers } = eventFlowHandler.useEventFlow({
31
- fields: ((_a = localConfig == null ? void 0 : localConfig.fieldsData) == null ? void 0 : _a.map((item) => item.component)) || [],
30
+ fields: fields || [],
32
31
  ctx,
33
32
  dataSources: (localConfig == null ? void 0 : localConfig.dataSources) || [],
34
33
  components: components || {}
@@ -41,7 +40,7 @@ function usePageEvents(getOptions) {
41
40
  const eventKeys = Object.keys(handler);
42
41
  if (eventKeys.length > 0) {
43
42
  console.log(`执行页面事件 ${eventName}`);
44
- handler[eventKeys[0]]();
43
+ await handler[eventKeys[0]]();
45
44
  }
46
45
  };
47
46
  const handleCreated = (checkConfigLoaded) => {
@@ -1,5 +1,9 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
+ const cloneDeep$1 = require("../../../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/cloneDeep.js");
4
+ function cloneDeep(data) {
5
+ return cloneDeep$1.default(data);
6
+ }
3
7
  function removeEmptyValues(data) {
4
8
  if (typeof data !== "object" || data === null) {
5
9
  return data;
@@ -20,4 +24,5 @@ function removeEmptyValues(data) {
20
24
  }
21
25
  return result;
22
26
  }
27
+ exports.cloneDeep = cloneDeep;
23
28
  exports.removeEmptyValues = removeEmptyValues;
@@ -8,8 +8,10 @@ const parseRouteParams = require("./parseRouteParams.js");
8
8
  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/message/index.js");
9
9
  class DataSourceManager {
10
10
  constructor(options = {}) {
11
+ this.templateId = options.templateId;
11
12
  this.http = options.http;
12
13
  this.params = options.params || {};
14
+ this.initSearchData = options.initSearchData || {};
13
15
  this.dataSources = options.dataSources || [];
14
16
  this.currentDataSourceId = options.currentDataSourceId;
15
17
  this.pagination = options.pagination || false;
@@ -40,6 +42,9 @@ class DataSourceManager {
40
42
  const currentDs = this.getCurrentDataSource();
41
43
  if (!currentDs) return {};
42
44
  const params = { ...this.params };
45
+ if (this.templateId) {
46
+ params.tableId = this.templateId;
47
+ }
43
48
  if (currentDs.params && Array.isArray(currentDs.params)) {
44
49
  const parsedParams = parseRouteParams.parseRouteParams(
45
50
  currentDs.params,
@@ -55,7 +60,7 @@ class DataSourceManager {
55
60
  if (this.sortRules && this.sortRules.length > 0) {
56
61
  params.sortRules = this.sortRules;
57
62
  }
58
- return { ...params, ...extraParams };
63
+ return { ...this.initSearchData, ...params, ...extraParams };
59
64
  }
60
65
  /**
61
66
  * 根据内容类型处理请求数据
@@ -273,6 +278,27 @@ class DataSourceManager {
273
278
  getPagination() {
274
279
  return this.pagination;
275
280
  }
281
+ /**
282
+ * 获取当前请求参数
283
+ */
284
+ getParams() {
285
+ return this.params;
286
+ }
287
+ /**
288
+ * 更新请求参数
289
+ */
290
+ updateParams(newParams) {
291
+ this.params = { ...this.params, ...newParams };
292
+ }
293
+ updateInitSearchData(newParams) {
294
+ this.initSearchData = newParams;
295
+ }
296
+ /**
297
+ * 清空请求参数
298
+ */
299
+ clearParams() {
300
+ this.params = {};
301
+ }
276
302
  /**
277
303
  * 销毁
278
304
  */
@@ -329,7 +329,7 @@ async function handleFormSetValue(node, data, fields, context) {
329
329
  }
330
330
  }
331
331
  async function handleFormSubmit(node, data, fields, context) {
332
- var _a, _b, _c, _d, _e;
332
+ var _a, _b, _c, _d, _e, _f, _g, _h;
333
333
  const basic = node.basic || {};
334
334
  if (!(basic == null ? void 0 : basic.dataSourceId)) {
335
335
  console.error("form-setValue: 缺少 dataSourceId 配置");
@@ -360,7 +360,7 @@ async function handleFormSubmit(node, data, fields, context) {
360
360
  }
361
361
  if (typeof getFormDataMethod === "function") {
362
362
  try {
363
- const formData = getFormDataMethod();
363
+ let formData = getFormDataMethod();
364
364
  if (basic.fieldMapping && Array.isArray(basic.fieldMapping)) {
365
365
  basic.fieldMapping.forEach((mapping) => {
366
366
  const { field, value } = mapping;
@@ -379,6 +379,23 @@ async function handleFormSubmit(node, data, fields, context) {
379
379
  if (!result.success) {
380
380
  return result;
381
381
  }
382
+ if (basic.returnToForm) {
383
+ formData = common.removeEmptyValues(result.data || {});
384
+ delete formData.pageNo;
385
+ delete formData.pageSize;
386
+ const formComponent2 = (_f = context.components) == null ? void 0 : _f.form;
387
+ const setFormDataMethod = (_h = (_g = formComponent2 == null ? void 0 : formComponent2.$) == null ? void 0 : _g.exposed) == null ? void 0 : _h.setFormData;
388
+ if (typeof setFormDataMethod === "function") {
389
+ setFormDataMethod(formData);
390
+ } else {
391
+ console.error("未找到表单组件的 setFormData 方法");
392
+ return {
393
+ success: false,
394
+ message: "表单组件未正确配置或 setFormData 方法未暴露",
395
+ shouldShowError: true
396
+ };
397
+ }
398
+ }
382
399
  return {
383
400
  success: true,
384
401
  message: "表单提交成功"
@@ -0,0 +1,57 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
+ const functionCore = require("./functionCore.js");
4
+ require("vue");
5
+ function calculate(params) {
6
+ const { text, value = {} } = params;
7
+ if (!text) return new Error("非法公式");
8
+ try {
9
+ let str = text;
10
+ let offset = 0;
11
+ const regex = /\{(\w+)\}/g;
12
+ let match;
13
+ const fields = [];
14
+ while ((match = regex.exec(text)) !== null) {
15
+ fields.push({
16
+ enCode: match[1],
17
+ startIndex: match.index,
18
+ endIndex: match.index + match[0].length
19
+ });
20
+ }
21
+ for (const field of fields) {
22
+ const { enCode, startIndex, endIndex } = field;
23
+ let data = value[enCode];
24
+ if (enCode.indexOf(".") > -1) {
25
+ const [key, subKey] = enCode.split(".");
26
+ if (value[key]) data = value[key].map((o) => o[subKey]);
27
+ }
28
+ if (data !== void 0) {
29
+ data = JSON.stringify(data);
30
+ const actualStart = startIndex + offset;
31
+ const actualEnd = endIndex + offset;
32
+ str = str.slice(0, actualStart) + data.toString() + str.slice(actualEnd);
33
+ offset += data.toString().length - (endIndex - startIndex);
34
+ }
35
+ }
36
+ const result = functionCore.default.executeFunction(str);
37
+ return result;
38
+ } catch (e) {
39
+ const errorTypes = {
40
+ TypeError: () => "类型错误",
41
+ RangeError: () => "范围错误",
42
+ SyntaxError: () => "语法错误",
43
+ ReferenceError: () => {
44
+ const regex = /^(\w+)\s+is\s+not\s+defined$/;
45
+ const match = e.message.match(regex);
46
+ return match ? `${match[1]} 未定义` : "未定义的变量";
47
+ }
48
+ };
49
+ const errorType = errorTypes[e.constructor.name];
50
+ const errorMessage = (errorType == null ? void 0 : errorType()) || `其他错误: ${e.message}`;
51
+ return {
52
+ error: true,
53
+ message: errorMessage
54
+ };
55
+ }
56
+ }
57
+ exports.calculate = calculate;
@@ -0,0 +1,17 @@
1
+ "use strict";
2
+ Object.defineProperties(exports, { __esModule: { value: true }, [Symbol.toStringTag]: { value: "Module" } });
3
+ const index = require("../../../../../node_modules/.pnpm/@formulajs_formulajs@4.5.6/node_modules/@formulajs/formulajs/lib/esm/index.js");
4
+ class FunctionCore {
5
+ constructor() {
6
+ Object.assign(FunctionCore.prototype, index);
7
+ }
8
+ executeFunction(str) {
9
+ const fn = new Function(
10
+ "with(this) { return " + str + "; }"
11
+ // 使用 `with` 来确保从当前实例中查找函数
12
+ ).bind(this);
13
+ return fn();
14
+ }
15
+ }
16
+ const functionCore = new FunctionCore();
17
+ exports.default = functionCore;
@@ -1,5 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
+ const common = require("./common.js");
3
4
  function parseSingleParamValue(value, data, fields) {
4
5
  if (typeof value !== "object" || value === null) {
5
6
  return value;
@@ -19,7 +20,7 @@ function parseSingleParamValue(value, data, fields) {
19
20
  return {};
20
21
  } else if (type === "urlParam") {
21
22
  const urlParams = new URLSearchParams(window.location.search);
22
- return urlParams.get(value.value) || "";
23
+ return urlParams.get(value.value) || null;
23
24
  } else {
24
25
  return value.value !== void 0 ? value.value : value;
25
26
  }
@@ -34,7 +35,7 @@ function parseRouteParams(routeParams, data, fields) {
34
35
  if (!key) return;
35
36
  params[key] = parseSingleParamValue(param.value, data, fields);
36
37
  });
37
- return params;
38
+ return common.removeEmptyValues(params);
38
39
  }
39
40
  exports.parseRouteParams = parseRouteParams;
40
41
  exports.parseSingleParamValue = parseSingleParamValue;