vue-super-crud 1.7.1 → 1.7.2

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 (269) hide show
  1. package/README.md +42 -10
  2. package/lib/index.css +1 -1
  3. package/lib/super-crud.min.js +2 -2
  4. package/package.json +21 -16
  5. package/.browserslistrc +0 -3
  6. package/.versionrc.json +0 -36
  7. package/CHANGELOG.md +0 -232
  8. package/babel.config.js +0 -12
  9. package/build/alias.js +0 -10
  10. package/build/build.js +0 -52
  11. package/build/config.js +0 -70
  12. package/deploy.bat +0 -14
  13. package/docs/.vuepress/components/button/base.vue +0 -88
  14. package/docs/.vuepress/components/common/code-format.vue +0 -331
  15. package/docs/.vuepress/components/commonConfig/presetCodeTemplate/base.vue +0 -68
  16. package/docs/.vuepress/components/commonConfig/presetCodeTemplate/customParams.vue +0 -73
  17. package/docs/.vuepress/components/commonConfig/renderType/component.vue +0 -160
  18. package/docs/.vuepress/components/commonConfig/renderType/formatter.vue +0 -49
  19. package/docs/.vuepress/components/commonConfig/renderType/render.vue +0 -91
  20. package/docs/.vuepress/components/commonConfig/renderType/slot.vue +0 -63
  21. package/docs/.vuepress/components/crud/baseUse/baseUse.vue +0 -98
  22. package/docs/.vuepress/components/crud/baseUse/columnAction.vue +0 -72
  23. package/docs/.vuepress/components/crud/baseUse/columnWidth.vue +0 -107
  24. package/docs/.vuepress/components/crud/baseUse/handleRow.vue +0 -65
  25. package/docs/.vuepress/components/crud/baseUse/height.vue +0 -82
  26. package/docs/.vuepress/components/crud/baseUse/index.vue +0 -54
  27. package/docs/.vuepress/components/crud/baseUse/loading.vue +0 -70
  28. package/docs/.vuepress/components/crud/baseUse/pagination.vue +0 -108
  29. package/docs/.vuepress/components/crud/baseUse/selection.vue +0 -114
  30. package/docs/.vuepress/components/crud/baseUse/summaryMethod.vue +0 -118
  31. package/docs/.vuepress/components/crud/baseUse/title.vue +0 -54
  32. package/docs/.vuepress/components/crud/baseUse/toolbar.vue +0 -69
  33. package/docs/.vuepress/components/crud/buttons/common.vue +0 -115
  34. package/docs/.vuepress/components/crud/buttons/fast.vue +0 -82
  35. package/docs/.vuepress/components/crud/contextMenu/base.vue +0 -72
  36. package/docs/.vuepress/components/crud/copy.vue +0 -52
  37. package/docs/.vuepress/components/crud/crudEvents/api.vue +0 -157
  38. package/docs/.vuepress/components/crud/crudEvents/deleteTip.vue +0 -93
  39. package/docs/.vuepress/components/crud/crudEvents/events.vue +0 -188
  40. package/docs/.vuepress/components/crud/dataSort/base.vue +0 -142
  41. package/docs/.vuepress/components/crud/genDynamicColumns/base.vue +0 -53
  42. package/docs/.vuepress/components/crud/genDynamicColumns/dynamicAndFixed.vue +0 -111
  43. package/docs/.vuepress/components/crud/genDynamicColumns/treeDynamic.vue +0 -68
  44. package/docs/.vuepress/components/crud/handleBar/handleRow.vue +0 -65
  45. package/docs/.vuepress/components/crud/handleBar/toolbar.vue +0 -69
  46. package/docs/.vuepress/components/crud/renderType/1.vue +0 -57
  47. package/docs/.vuepress/components/crud/renderType/2.vue +0 -63
  48. package/docs/.vuepress/components/crud/renderType/3.vue +0 -105
  49. package/docs/.vuepress/components/crud/renderType/5.vue +0 -91
  50. package/docs/.vuepress/components/crud/search/1.vue +0 -90
  51. package/docs/.vuepress/components/crud/search/2.vue +0 -78
  52. package/docs/.vuepress/components/crud/search/3.vue +0 -107
  53. package/docs/.vuepress/components/crud/search/base.vue +0 -123
  54. package/docs/.vuepress/components/crud/search/localSearch.vue +0 -124
  55. package/docs/.vuepress/components/crud/search/special.vue +0 -148
  56. package/docs/.vuepress/components/crud/selection/events.vue +0 -47
  57. package/docs/.vuepress/components/crud/selection/pagination.vue +0 -94
  58. package/docs/.vuepress/components/crud/selection/singleSelection.vue +0 -64
  59. package/docs/.vuepress/components/crud/span/base.vue +0 -69
  60. package/docs/.vuepress/components/crud/span/special.vue +0 -75
  61. package/docs/.vuepress/components/crud/summary/base.vue +0 -99
  62. package/docs/.vuepress/components/crud/tableEdit/addDeleteBtn.vue +0 -174
  63. package/docs/.vuepress/components/crud/tableEdit/cellEdit.vue +0 -194
  64. package/docs/.vuepress/components/crud/tableEdit/controlEdit.vue +0 -219
  65. package/docs/.vuepress/components/crud/tableEdit/dialog.vue +0 -172
  66. package/docs/.vuepress/components/crud/tableEdit/free.vue +0 -88
  67. package/docs/.vuepress/components/crud/tableEdit/freeColumn.vue +0 -82
  68. package/docs/.vuepress/components/crud/tableEdit/methods.vue +0 -154
  69. package/docs/.vuepress/components/crud/tableEdit/rowAction.vue +0 -107
  70. package/docs/.vuepress/components/crud/tableEdit/rowBatch.vue +0 -116
  71. package/docs/.vuepress/components/crud/tableEdit/rowClick.vue +0 -98
  72. package/docs/.vuepress/components/crud/validate/base.vue +0 -122
  73. package/docs/.vuepress/components/crud/validate/custom.vue +0 -82
  74. package/docs/.vuepress/components/crud/validate/regulars.vue +0 -88
  75. package/docs/.vuepress/components/crud/validate/relation.vue +0 -91
  76. package/docs/.vuepress/components/crud/validate/tree.vue +0 -82
  77. package/docs/.vuepress/components/dialog/baseUse/base.vue +0 -92
  78. package/docs/.vuepress/components/dialog/baseUse/beforeConfirm.vue +0 -78
  79. package/docs/.vuepress/components/dialog/baseUse/control.vue +0 -79
  80. package/docs/.vuepress/components/dialog/baseUse/drawer.vue +0 -59
  81. package/docs/.vuepress/components/dialog/baseUse/footer.vue +0 -87
  82. package/docs/.vuepress/components/dialog/baseUse/insertSlot.vue +0 -79
  83. package/docs/.vuepress/components/dict/DictLinkage.vue +0 -91
  84. package/docs/.vuepress/components/dict/baseUse.vue +0 -72
  85. package/docs/.vuepress/components/dict/component.vue +0 -82
  86. package/docs/.vuepress/components/dict/localDict.vue +0 -68
  87. package/docs/.vuepress/components/form/baseUse/base.vue +0 -48
  88. package/docs/.vuepress/components/form/baseUse/dataFormat.vue +0 -92
  89. package/docs/.vuepress/components/form/baseUse/deep.vue +0 -57
  90. package/docs/.vuepress/components/form/baseUse/gridLayout.vue +0 -47
  91. package/docs/.vuepress/components/form/baseUse/group.vue +0 -66
  92. package/docs/.vuepress/components/form/baseUse/hidden.vue +0 -40
  93. package/docs/.vuepress/components/form/baseUse/inlineLayout.vue +0 -48
  94. package/docs/.vuepress/components/form/baseUse/label.vue +0 -51
  95. package/docs/.vuepress/components/form/baseUse/tooltip.vue +0 -40
  96. package/docs/.vuepress/components/form/baseUse/validate.vue +0 -52
  97. package/docs/.vuepress/components/form/detail/base.vue +0 -78
  98. package/docs/.vuepress/components/form/detail/border.vue +0 -90
  99. package/docs/.vuepress/components/form/detail/singleDetail.vue +0 -72
  100. package/docs/.vuepress/components/formatData/baseUse.vue +0 -131
  101. package/docs/.vuepress/components/mock/index.js +0 -347
  102. package/docs/.vuepress/components/mockData/custom.vue +0 -69
  103. package/docs/.vuepress/components/mockData/example.vue +0 -290
  104. package/docs/.vuepress/components/positionSlot/base.vue +0 -24
  105. package/docs/.vuepress/components/positionSlot/form.vue +0 -71
  106. package/docs/.vuepress/components/positionSlot/table.vue +0 -85
  107. package/docs/.vuepress/components/tabs/base.vue +0 -57
  108. package/docs/.vuepress/components/temp.js +0 -195
  109. package/docs/.vuepress/config.js +0 -146
  110. package/docs/.vuepress/enhanceApp.js +0 -142
  111. package/docs/.vuepress/public/favicon.ico +0 -0
  112. package/docs/.vuepress/public/super.png +0 -0
  113. package/docs/.vuepress/styles/index.styl +0 -25
  114. package/docs/.vuepress/styles/palette.styl +0 -6
  115. package/docs/README.md +0 -14
  116. package/docs/guide/button/base.md +0 -31
  117. package/docs/guide/commonConfig/jsx.md +0 -166
  118. package/docs/guide/commonConfig/presetCodeTemplate.md +0 -68
  119. package/docs/guide/commonConfig/renderType.md +0 -181
  120. package/docs/guide/crud/baseUse.md +0 -120
  121. package/docs/guide/crud/buttons.md +0 -18
  122. package/docs/guide/crud/config.md +0 -217
  123. package/docs/guide/crud/contextMenu.md +0 -18
  124. package/docs/guide/crud/dataSort.md +0 -66
  125. package/docs/guide/crud/genDynamicColumns.md +0 -145
  126. package/docs/guide/crud/handleBar.md +0 -26
  127. package/docs/guide/crud/renderType.md +0 -4
  128. package/docs/guide/crud/search.md +0 -150
  129. package/docs/guide/crud/selection.md +0 -73
  130. package/docs/guide/crud/span.md +0 -98
  131. package/docs/guide/crud/summary.md +0 -167
  132. package/docs/guide/crud/tableEdit.md +0 -377
  133. package/docs/guide/crud/validate.md +0 -158
  134. package/docs/guide/dialog/baseUse.md +0 -81
  135. package/docs/guide/dict/baseUse.md +0 -174
  136. package/docs/guide/dict/component.md +0 -88
  137. package/docs/guide/dict/config.md +0 -44
  138. package/docs/guide/form/baseUse.md +0 -142
  139. package/docs/guide/form/detail.md +0 -38
  140. package/docs/guide/formatData/baseUse.md +0 -98
  141. package/docs/guide/formatData/config.md +0 -142
  142. package/docs/guide/mockData/base.md +0 -26
  143. package/docs/guide/positionSlot/base.md +0 -41
  144. package/docs/guide/question/base.md +0 -44
  145. package/docs/guide/start/base.md +0 -30
  146. package/docs/guide/tabs/base.md +0 -63
  147. package/examples/App.vue +0 -52
  148. package/examples/Layout/components/AppMain.vue +0 -40
  149. package/examples/Layout/components/Item.vue +0 -29
  150. package/examples/Layout/components/Link.vue +0 -44
  151. package/examples/Layout/components/SidebarItem.vue +0 -93
  152. package/examples/Layout/index.vue +0 -69
  153. package/examples/assets/logo.png +0 -0
  154. package/examples/favicon.ico +0 -0
  155. package/examples/index.html +0 -18
  156. package/examples/main.js +0 -54
  157. package/examples/router/index.js +0 -140
  158. package/examples/store/index.js +0 -0
  159. package/examples/styles/index.scss +0 -63
  160. package/examples/styles/sidebar.scss +0 -226
  161. package/examples/styles/transition.scss +0 -48
  162. package/examples/styles/variables.scss +0 -25
  163. package/examples/views/crud/base.vue +0 -68
  164. package/examples/views/crud/handleRow.vue +0 -84
  165. package/examples/views/crud/search.vue +0 -116
  166. package/examples/views/dashboard/index.vue +0 -244
  167. package/examples/views/dashboard/index1.vue +0 -234
  168. package/examples/views/dashboard/test.vue +0 -9
  169. package/examples/views/formTest/index.vue +0 -168
  170. package/examples/views/nested/menu1/index.vue +0 -7
  171. package/examples/views/nested/menu1/menu1-1/index.vue +0 -7
  172. package/examples/views/nested/menu1/menu1-2/index.vue +0 -7
  173. package/examples/views/nested/menu1/menu1-2/menu1-2-1/index.vue +0 -5
  174. package/examples/views/nested/menu1/menu1-2/menu1-2-2/index.vue +0 -5
  175. package/examples/views/nested/menu1/menu1-3/index.vue +0 -5
  176. package/examples/views/nested/menu2/index.vue +0 -5
  177. package/gulpfile.js +0 -84
  178. package/packages/button/index.vue +0 -189
  179. package/packages/core/components/comp.vue +0 -223
  180. package/packages/core/components/position.vue +0 -135
  181. package/packages/core/components/render.vue +0 -460
  182. package/packages/core/configManager.js +0 -302
  183. package/packages/core/create.js +0 -8
  184. package/packages/core/defaultRender.js +0 -64
  185. package/packages/core/dict/global.js +0 -10
  186. package/packages/core/dict/index.js +0 -432
  187. package/packages/core/dict/mixin.js +0 -94
  188. package/packages/core/event.js +0 -60
  189. package/packages/core/index.js +0 -6
  190. package/packages/core/init.js +0 -122
  191. package/packages/core/mock/genConfig.js +0 -228
  192. package/packages/core/mock/genData.js +0 -422
  193. package/packages/core/mock/index.js +0 -4
  194. package/packages/core/rules.js +0 -111
  195. package/packages/crud/column.vue +0 -205
  196. package/packages/crud/columnAction.vue +0 -207
  197. package/packages/crud/columnCell.vue +0 -146
  198. package/packages/crud/defaultColumn.vue +0 -130
  199. package/packages/crud/drawerColumn.vue +0 -225
  200. package/packages/crud/form.vue +0 -69
  201. package/packages/crud/index.vue +0 -564
  202. package/packages/crud/menuBar.vue +0 -298
  203. package/packages/crud/mixins/cacheHandler.js +0 -36
  204. package/packages/crud/mixins/calcColumnWidth.js +0 -79
  205. package/packages/crud/mixins/calcHeight.js +0 -105
  206. package/packages/crud/mixins/columnHandler.js +0 -128
  207. package/packages/crud/mixins/contextMenu.js +0 -98
  208. package/packages/crud/mixins/dataProcessor.js +0 -202
  209. package/packages/crud/mixins/dialog.js +0 -109
  210. package/packages/crud/mixins/excelHandler.js +0 -150
  211. package/packages/crud/mixins/exposeMethods.js +0 -107
  212. package/packages/crud/mixins/generateDynamicColumns.js +0 -250
  213. package/packages/crud/mixins/props.js +0 -38
  214. package/packages/crud/mixins/searchHandler.js +0 -151
  215. package/packages/crud/mixins/select.js +0 -359
  216. package/packages/crud/mixins/spanMethod.js +0 -288
  217. package/packages/crud/mixins/summary.js +0 -177
  218. package/packages/crud/mixins/tableEdit.js +0 -547
  219. package/packages/crud/mixins/validate.js +0 -219
  220. package/packages/crud/pagination.vue +0 -110
  221. package/packages/crud/search.vue +0 -119
  222. package/packages/crud/searchHeader.vue +0 -231
  223. package/packages/crud/selectBanner.vue +0 -138
  224. package/packages/crud/utils/EditState.js +0 -319
  225. package/packages/crud/utils/excelExport.js +0 -112
  226. package/packages/crud/utils/excelImport.js +0 -112
  227. package/packages/crud/utils/index.js +0 -98
  228. package/packages/dialog/dialog.js +0 -233
  229. package/packages/dialog/dialog.vue +0 -15
  230. package/packages/dialog/index.js +0 -22
  231. package/packages/dict/cascadeFormat.vue +0 -179
  232. package/packages/dict/dateFormat.vue +0 -40
  233. package/packages/dict/form/cascade.vue +0 -61
  234. package/packages/dict/form/checkbox.vue +0 -90
  235. package/packages/dict/form/extendMethod.js +0 -22
  236. package/packages/dict/form/input-base.js +0 -31
  237. package/packages/dict/form/input.js +0 -20
  238. package/packages/dict/form/radio.vue +0 -69
  239. package/packages/dict/form/select.vue +0 -118
  240. package/packages/dict/form/switch.vue +0 -75
  241. package/packages/dict/valueFormat.vue +0 -188
  242. package/packages/directive/dialog/drag.js +0 -86
  243. package/packages/directive/dialog/dragSize.js +0 -42
  244. package/packages/directive/index.js +0 -9
  245. package/packages/directive/insertSlot.js +0 -10
  246. package/packages/form/contextMenu.js +0 -192
  247. package/packages/form/draftDrawer.vue +0 -391
  248. package/packages/form/formAction.vue +0 -97
  249. package/packages/form/formItem.vue +0 -259
  250. package/packages/form/index.vue +0 -451
  251. package/packages/form/props.js +0 -15
  252. package/packages/grid/cell.vue +0 -65
  253. package/packages/grid/index.vue +0 -130
  254. package/packages/group/index.vue +0 -96
  255. package/packages/tabs/index.vue +0 -290
  256. package/packages/tooltip/index.js +0 -9
  257. package/packages/tooltip/tooltip.vue +0 -32
  258. package/packages/tooltip/tooltipComponent.js +0 -38
  259. package/packages/verifyInput/index.vue +0 -131
  260. package/styles/button.scss +0 -3
  261. package/styles/crud.scss +0 -425
  262. package/styles/dialog.scss +0 -95
  263. package/styles/form.scss +0 -532
  264. package/styles/group.scss +0 -78
  265. package/styles/index.scss +0 -94
  266. package/styles/tabs.scss +0 -139
  267. package/styles/verifyInput.scss +0 -56
  268. package/vue-jsx-sync.js +0 -90
  269. package/vue.config.js +0 -54
@@ -1,250 +0,0 @@
1
- export default {
2
- methods: {
3
- insertColumns(newColumns, columns, position) {
4
- columns = [...columns];
5
- if (!Array.isArray(newColumns)) {
6
- return columns;
7
- }
8
-
9
- let insertIndex = -1;
10
-
11
- // 通过prop查找位置
12
- if (typeof position === "string") {
13
- insertIndex = columns.findIndex((col) => col.prop === position);
14
- insertIndex += 1;
15
- if (insertIndex === -1) {
16
- console.warn(`insertColumns: 未找到prop为${position}的列`);
17
- return columns;
18
- }
19
- }
20
- // 通过index指定位置
21
- else if (typeof position === "number") {
22
- if (position < 0 || position > columns.length) {
23
- console.warn("insertColumns: index超出范围");
24
- return columns;
25
- }
26
- insertIndex = position;
27
- }
28
- // 没有指定位置则追加到末尾
29
- else {
30
- insertIndex = columns.length;
31
- }
32
-
33
- // 处理新列配置
34
- newColumns.forEach((col) => {
35
- // 初始化列配置
36
- this.initColumn(col, insertIndex);
37
- });
38
-
39
- // 插入新列
40
- columns.splice(insertIndex, 0, ...newColumns);
41
- return columns;
42
- },
43
- // 预处理数据
44
- prepareData(rawData, config, level = 0, noProcessing) {
45
- if (!Array.isArray(rawData) || !config?.length) return [];
46
-
47
- if (noProcessing) return rawData;
48
-
49
- const currentConfig = config[level];
50
- if (!currentConfig) return [];
51
-
52
- // 使用自定义转换函数
53
- if (typeof currentConfig.dataTransformer === "function") {
54
- return currentConfig.dataTransformer(rawData);
55
- }
56
-
57
- // 按数据路径提取数据
58
- return rawData.flatMap((item) => {
59
- const result = item[currentConfig.path || "children"];
60
- return Array.isArray(result) ? result : [];
61
- });
62
- },
63
- /**
64
- * 生成动态列配置
65
- * @param {Array} data - 原始数据
66
- * @param {Array} levelConfig - 层级配置数组
67
- * @returns {Array} 生成的列配置数组
68
- */
69
- generateDynamicColumns(data, levelConfig) {
70
- /**
71
- * 处理每一层级的数据
72
- * @param {Array} currentData - 当前层级的数据
73
- * @param {number} currentLevel - 当前层级索引
74
- * @param {string} parentPath - 父级路径
75
- * @returns {Array} 当前层级的列配置
76
- */
77
- const processLevel = (currentData, currentLevel = 0, parentPath = "") => {
78
- // 如果没有数据或超出配置层级,返回空数组
79
- if (!currentData?.length || currentLevel >= levelConfig.length)
80
- return [];
81
-
82
- const config = levelConfig[currentLevel];
83
- // 用于去重的Map
84
- const uniqueMap = new Map();
85
-
86
- // 遍历当前层级数据
87
- currentData.forEach((item) => {
88
- // 获取prop值,支持函数或属性名
89
- const prop = item[config.prop];
90
-
91
- // 获取label值,支持函数或属性名
92
- const label =
93
- typeof config.label === "function"
94
- ? config.label(item)
95
- : item[config.label];
96
-
97
- if (!prop) return;
98
-
99
- // 去重并收集源数据项
100
- if (!uniqueMap.has(prop)) {
101
- uniqueMap.set(prop, {
102
- ...config,
103
- prop,
104
- label: label || `未命名-${prop}`,
105
- sourceItems: [item],
106
- });
107
- } else {
108
- uniqueMap.get(prop).sourceItems.push(item);
109
- }
110
- });
111
-
112
- // 生成列配置
113
- return Array.from(uniqueMap.values()).map(
114
- ({ prop, label, sourceItems, path, dataTransformer, ...rest }) => {
115
- // 构建当前路径
116
- const currentPath = parentPath ? `${parentPath}.${prop}` : prop;
117
-
118
- const column = {
119
- ...rest,
120
- label,
121
- prop: currentPath + "." + config.prop,
122
- };
123
-
124
- // 处理子列
125
- if (currentLevel < levelConfig.length - 1) {
126
- // 递归处理下一层级
127
- const nextLevelData = this.prepareData(
128
- sourceItems,
129
- levelConfig,
130
- currentLevel + 1
131
- );
132
- column.children = processLevel(
133
- nextLevelData,
134
- currentLevel + 1,
135
- currentPath
136
- );
137
- }
138
- if (config.columnConfig) {
139
- Object.assign(
140
- column,
141
- config.columnConfig(currentPath, sourceItems)
142
- );
143
- }
144
- return column;
145
- }
146
- );
147
- };
148
-
149
- // 预处理初始数据
150
- const initialData = this.prepareData(
151
- data,
152
- levelConfig,
153
- 0,
154
- levelConfig[0].root
155
- );
156
- return processLevel(initialData);
157
- },
158
- // 打平数据 - 将多层级的数据结构转换为扁平化的对象结构
159
- flattenData(data, levelConfig) {
160
- // 将单个对象打平的内部函数
161
- const flattenObject = (item, config, parentPath = "") => {
162
- // 创建结果对象,复制原始item的属性
163
- const result = item;
164
-
165
- // 处理每一层级数据的递归函数
166
- const processLevel = (currentItem, currentConfig, currentPath) => {
167
- // 如果没有配置信息则返回
168
- if (!currentConfig) return;
169
-
170
- // 获取当前层级的子节点数据
171
- const children = currentItem[currentConfig.path || "children"];
172
- // 如果子节点不是数组则返回
173
- if (!Array.isArray(children)) return;
174
-
175
- // 遍历每个子节点
176
- children.forEach((child) => {
177
- // 获取标识符 - 可以是函数或属性名
178
- const identifier =
179
- typeof currentConfig.prop === "function"
180
- ? currentConfig.prop(child)
181
- : child[currentConfig.prop];
182
-
183
- // 如果没有标识符则跳过
184
- if (!identifier) return;
185
-
186
- // 构建新的路径名
187
- const newPath = currentPath
188
- ? `${currentPath}-${identifier}`
189
- : identifier;
190
-
191
- // 遍历子节点的所有属性
192
- Object.entries(child).forEach(([key, value]) => {
193
- // 只处理非数组类型的值
194
- if (!Array.isArray(value)) {
195
- this.$set(result, `${newPath}-${key}`, value);
196
- }
197
- });
198
-
199
- // 获取下一层级的配置
200
- const nextConfig = config[config.indexOf(currentConfig) + 1];
201
- // 如果存在下一层级配置,则递归处理
202
- if (nextConfig) {
203
- processLevel(child, nextConfig, newPath);
204
- }
205
- });
206
- };
207
-
208
- // 从第一层配置开始处理
209
- processLevel(item, config[0], parentPath);
210
- return result;
211
- };
212
-
213
- // 对数据数组中的每个对象进行打平处理
214
- data.forEach((item) => flattenObject(item, levelConfig));
215
- },
216
- // 将数据映射为树形结构
217
- transformToTree(data, levelConfig) {
218
- const transformObject = (item, config) => {
219
- const processLevel = (currentItem, currentConfig, level = 0) => {
220
- if (!currentConfig) return;
221
-
222
- const children = currentItem[currentConfig.path];
223
- if (!Array.isArray(children)) return;
224
-
225
- children.forEach((child) => {
226
- const identifier =
227
- typeof currentConfig.prop === "function"
228
- ? currentConfig.prop(child)
229
- : child[currentConfig.prop];
230
-
231
- if (!identifier) return;
232
-
233
- // 直接使用原始对象,而不是创建新对象
234
- this.$set(currentItem, identifier, child);
235
-
236
- // 递归处理下一层级
237
- const nextConfig = config[level + 1];
238
- if (nextConfig && child[nextConfig.path]) {
239
- processLevel(child, nextConfig, level + 1);
240
- }
241
- });
242
- };
243
-
244
- processLevel(item, config[0], 0);
245
- };
246
-
247
- data.forEach((item) => transformObject(item, levelConfig));
248
- },
249
- },
250
- };
@@ -1,38 +0,0 @@
1
- export default [
2
- "data",
3
- "size",
4
- "width",
5
- "height",
6
- "maxHeight",
7
- "fit",
8
- "stripe",
9
- "border",
10
- "rowKey",
11
- "context",
12
- "showHeader",
13
- "showSummary",
14
- "sumText",
15
- "summaryMethod",
16
- "rowClassName",
17
- "rowStyle",
18
- "cellClassName",
19
- "cellStyle",
20
- "headerRowClassName",
21
- "headerRowStyle",
22
- "headerCellClassName",
23
- "headerCellStyle",
24
- "highlightCurrentRow",
25
- "highlightSelectionRow",
26
- "currentRowKey",
27
- "emptyText",
28
- "expandRowKeys",
29
- "defaultExpandAll",
30
- "defaultSort",
31
- "tooltipEffect",
32
- "spanMethod",
33
- "selectOnIndeterminate",
34
- "indent",
35
- "treeProps",
36
- "lazy",
37
- "load",
38
- ];
@@ -1,151 +0,0 @@
1
- import dayjs from "dayjs";
2
- import { isFunction } from "lodash-es";
3
- import { isEmptyData } from "utils";
4
-
5
- export default {
6
- methods: {
7
- // 处理本地搜索
8
- handleLocalSearch() {
9
- if (!this.crudOptions.localSearch) return;
10
-
11
- this.localFilteredData = this.data.filter((row) => {
12
- return Object.entries(this.query).every(([key, value]) => {
13
- if (isEmptyData(value)) return true;
14
- if (Array.isArray(value) && value.every(isEmptyData)) return true;
15
-
16
- const column = this.columnsMap[key];
17
- if (!column) return true;
18
-
19
- const cellValue = row[key];
20
- if (cellValue === undefined || cellValue === null) return false;
21
-
22
- return this.filterBySearchType(column, cellValue, value, row);
23
- });
24
- });
25
-
26
- // 如果使用本地分页,重置到第一页
27
- if (this.crudOptions.localPagination) {
28
- const { pageNum } = this.crudOptions.props;
29
- this.query[pageNum] = 1;
30
- }
31
- },
32
- // 日期类型过滤
33
- filterDateValue(cellValue, searchValue) {
34
- if (!cellValue || !searchValue) return true;
35
-
36
- const cellDate = dayjs(cellValue);
37
-
38
- if (Array.isArray(searchValue)) {
39
- const [startDate, endDate] = searchValue.map((date) => dayjs(date));
40
-
41
- // 检查是否为同一天
42
- if (startDate.isSame(endDate, "day")) {
43
- return cellDate.isSame(startDate, "day");
44
- }
45
-
46
- // 范围查询处理
47
- if (startDate.isValid() && endDate.isValid()) {
48
- return (
49
- (cellDate.isAfter(startDate.startOf("day")) ||
50
- cellDate.isSame(startDate, "day")) &&
51
- (cellDate.isBefore(endDate.endOf("day")) ||
52
- cellDate.isSame(endDate, "day"))
53
- );
54
- }
55
-
56
- // 单边范围的处理
57
- if (startDate.isValid()) {
58
- return (
59
- cellDate.isAfter(startDate.startOf("day")) ||
60
- cellDate.isSame(startDate, "day")
61
- );
62
- }
63
- if (endDate.isValid()) {
64
- return (
65
- cellDate.isBefore(endDate.endOf("day")) ||
66
- cellDate.isSame(endDate, "day")
67
- );
68
- }
69
- return true;
70
- }
71
-
72
- // 单个日期的处理
73
- return cellDate.isSame(dayjs(searchValue), "day");
74
- },
75
-
76
- // 判断两个日期是否是同一天
77
- isSameDay(date1, date2) {
78
- return (
79
- date1.getFullYear() === date2.getFullYear() &&
80
- date1.getMonth() === date2.getMonth() &&
81
- date1.getDate() === date2.getDate()
82
- );
83
- },
84
-
85
- // 根据搜索类型过滤数据
86
- filterBySearchType(column, cellValue, value, row) {
87
- const COMPONENT_MAP = {
88
- "el-input": "input",
89
- "el-select": "select",
90
- "el-date-picker": "date",
91
- "el-cascader": "cascader",
92
- };
93
-
94
- const searchType =
95
- column.search?.type ||
96
- COMPONENT_MAP[column.search?.comp?.name] ||
97
- "input";
98
- if (isFunction(column.search?.filter)) {
99
- return column.search.filter(cellValue, value, row, this.data);
100
- }
101
- switch (searchType) {
102
- case "input":
103
- return String(cellValue)
104
- .toLowerCase()
105
- .includes(String(value).toLowerCase());
106
-
107
- case "select":
108
- return String(cellValue) === String(value);
109
-
110
- case "date":
111
- return this.filterDateValue(cellValue, value);
112
-
113
- default:
114
- return true;
115
- }
116
- },
117
- // 搜索
118
- handleSearch() {
119
- this.changeLoading(true);
120
- this.runBefore("search", (res) => {
121
- this.changeLoading();
122
- this.handleLocalSearch();
123
- !this.crudOptions.localSearch && this.$nextTick(this.getList);
124
- this.$emit("closeSearchPopover");
125
- });
126
- },
127
- // 重置
128
- handleReset(prop) {
129
- this.changeLoading(true);
130
- this.runBefore(
131
- "reset",
132
- (res) => {
133
- this.changeLoading();
134
- const searchRef = this.$refs.searchRef;
135
- if (!searchRef) return;
136
- if (prop) {
137
- searchRef.resetField(prop);
138
- } else {
139
- searchRef.resetFields();
140
- searchRef.searchForm.renderColumns.forEach((item) => {
141
- if (isFunction(item.reset)) item.reset();
142
- });
143
- }
144
- !this.crudOptions.localSearch && this.$nextTick(this.getList);
145
- this.crudOptions.localSearch && (this.localFilteredData = undefined);
146
- },
147
- prop
148
- );
149
- },
150
- },
151
- };