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,73 +0,0 @@
1
- # 表格选中
2
-
3
- ## 概述
4
-
5
- 表格选中分为单选和多选,通过 `selected` 响应式绑定选中数据。
6
-
7
-
8
- ## 跨分页选中
9
-
10
- `selected` 绑定响应式选中数据,存在数据时会自动选中 </br>
11
- `selection` 开启表格多选选中 </br>
12
- `selection.reserveSelection` 开启数据更新时保持选中状态 </br>
13
-
14
- <ClientOnly>
15
- <common-code-format>
16
- <crud-selection-pagination slot="source"></crud-selection-pagination>
17
-
18
- <<< @/docs/.vuepress/components/crud/selection/pagination.vue
19
- </common-code-format>
20
- </ClientOnly>
21
-
22
- ## 选中事件
23
-
24
- `@selection-change` 选中项发生变化时触发 </br>
25
- `@select` 用户手动选择/取消选择某一行时触发 </br>
26
- `@select-all` 用户手动选择/取消选择所有行时触发
27
-
28
- <ClientOnly>
29
- <common-code-format>
30
- <crud-selection-events slot="source"></crud-selection-events>
31
-
32
- <<< @/docs/.vuepress/components/crud/selection/events.vue
33
- </common-code-format>
34
- </ClientOnly>
35
-
36
-
37
- ## 单选
38
-
39
- `selected` 绑定响应式选中数据,存在数据时会自动选中 </br>
40
- `singleSelection` 开启单选模式 </br>
41
-
42
- <ClientOnly>
43
- <common-code-format>
44
- <crud-selection-singleSelection slot="source"></crud-selection-singleSelection>
45
-
46
- <<< @/docs/.vuepress/components/crud/selection/singleSelection.vue
47
- </common-code-format>
48
- </ClientOnly>
49
-
50
-
51
- ## selection 配置项
52
-
53
- | 参数 | 说明 | 类型 | 可选值 | 默认值 |
54
- | ---------------- | ------------------------- | -------------------- | ------ | ------ |
55
- | reserveSelection | 是否启用分页选中 | boolean | - | false |
56
- | selectable | 是否可以勾选 | Function(row, index) | - | - |
57
- | banner | 是否显示选中项横幅 | boolean | - | false |
58
- | ctrlSelect | 是否启用 Ctrl 键点击选中 | boolean | - | true |
59
- | shiftSelect | 是否启用 Shift 键批量选中 | boolean | - | true |
60
- | maxDisplay | 直接显示的最大数量 | number | - | 3 |
61
- | labelKey | 显示的字段名 | string | - | 'id' |
62
- | clear | 是否显示清除按钮 | boolean | - | true |
63
-
64
-
65
- ## singleSelection 配置项
66
-
67
- | 参数 | 说明 | 类型 | 可选值 | 默认值 |
68
- | ---------- | ------------------------ | -------------------- | ------ | ------ |
69
- | selectable | 是否可以勾选 | Function(row, index) | - | - |
70
- | banner | 是否显示选中项横幅 | boolean | - | false |
71
- | ctrlSelect | 是否启用 Ctrl 键点击选中 | boolean | - | true |
72
- | labelKey | 显示的字段名 | string | - | 'id' |
73
- | clear | 是否显示清除按钮 | boolean | - | true |
@@ -1,98 +0,0 @@
1
- # 表格合并
2
-
3
- 表格支持按照指定字段对行进行合并,支持多字段优先级合并。并根据配置的合并字段,自动使用多级排序。
4
-
5
- ## 基础用法
6
-
7
- 通过配置合并字段 `spanProp` 启用列的合并功能。自动合并`相同字段值`的行。</br>
8
- 特殊列也可以启用合并功能,`index` 列可以获取合并后的索引。
9
-
10
- <ClientOnly>
11
- <common-code-format>
12
- <crud-span-base slot="source"></crud-span-base>
13
-
14
- <<< @/docs/.vuepress/components/crud/span/base.vue
15
- </common-code-format>
16
- </ClientOnly>
17
-
18
- ## 特殊列处理
19
-
20
- 索引列配置`spanProp`,可以获取合并后的索引。</br>
21
- 选中列配置`spanProp`,可以操作合并后的选中数据,实际选中还是合并前的数据。</br>
22
-
23
- <ClientOnly>
24
- <common-code-format>
25
- <crud-span-special slot="source"></crud-span-special>
26
-
27
- <<< @/docs/.vuepress/components/crud/span/special.vue
28
- </common-code-format>
29
- </ClientOnly>
30
-
31
- ## 列级别自定义
32
-
33
- 通过 `spanMethod` 属性可以自定义某一列的合并规则。
34
-
35
- ```js
36
- renderColumns: [
37
- {
38
- prop: "status",
39
- label: "状态",
40
- // 自定义合并规则
41
- spanMethod: ({ row, rowIndex }) => {
42
- if (row.status === "pending") {
43
- return {
44
- rowspan: 2,
45
- colspan: 1,
46
- };
47
- }
48
- return {
49
- rowspan: 1,
50
- colspan: 1,
51
- };
52
- },
53
- },
54
- ];
55
- ```
56
-
57
- ## 表格级别自定义
58
-
59
- 通过 `spanMethod` 可以自定义整个表格的合并规则。
60
-
61
- ```js
62
- spanMethod: ({ row, column, rowIndex, columnIndex }) => {
63
- if (row.status === "pending") {
64
- return {
65
- rowspan: 2,
66
- colspan: 1,
67
- };
68
- }
69
- return {
70
- rowspan: 1,
71
- colspan: 1,
72
- };
73
- };
74
- ```
75
-
76
- ## API
77
-
78
- ### Column 配置
79
-
80
- | 参数 | 说明 | 类型 | 默认值 |
81
- | ---------- | -------------------- | -------------- | ------ |
82
- | spanProp | 是否启用列合并 | boolean/string | false |
83
- | spanMethod | 列级别自定义合并方法 | Function | - |
84
-
85
- ### Options 配置
86
-
87
- | 参数 | 说明 | 类型 | 默认值 |
88
- | ---------- | ---------------------- | -------- | ------ |
89
- | spanMethod | 表格级别自定义合并方法 | Function | - |
90
-
91
- ### spanMethod 参数
92
-
93
- | 参数 | 说明 | 类型 |
94
- | ----------- | ------ | ------ |
95
- | row | 行数据 | object |
96
- | column | 列配置 | object |
97
- | rowIndex | 行索引 | number |
98
- | columnIndex | 列索引 | number |
@@ -1,167 +0,0 @@
1
- # 表格统计
2
-
3
- 表格支持在底部显示统计信息,内置多种统计方式,也支持自定义统计逻辑。
4
-
5
- ## 基础用法
6
-
7
- 通过配置列的 `summary` 属性启用统计功能。支持以下统计方式:
8
- - `sum`: 求和
9
- - `avg`: 平均值
10
- - `max`: 最大值
11
- - `min`: 最小值
12
- - `count`: 计数
13
-
14
- <ClientOnly>
15
- <common-code-format>
16
- <crud-summary-base slot="source"></crud-summary-base>
17
-
18
- <<< @/docs/.vuepress/components/crud/summary/base.vue
19
- </common-code-format>
20
- </ClientOnly>
21
-
22
- ## 格式化配置
23
-
24
- 通过 `prefix`、`suffix` 和 `decimals` 属性可以对统计结果进行格式化:
25
-
26
- ```js
27
- renderColumns: [
28
- {
29
- prop: "amount",
30
- label: "金额",
31
- summary: {
32
- type: "sum",
33
- prefix: "¥", // 添加前缀
34
- suffix: "元", // 添加后缀
35
- decimals: 2 // 保留2位小数
36
- }
37
- }
38
- ]
39
- ```
40
-
41
- ## 高级统计
42
-
43
- ### 加权平均值
44
- ```js
45
- {
46
- prop: "score",
47
- label: "加权平均分",
48
- summary: {
49
- type: "avg",
50
- decimals: 1,
51
- suffix: "分"
52
- }
53
- }
54
- ```
55
-
56
- ### 条件统计
57
- ```js
58
- {
59
- prop: "status",
60
- label: "状态统计",
61
- summary: {
62
- type: "count",
63
- predicate: value => value === 'active', // 只统计active状态
64
- suffix: "个"
65
- }
66
- }
67
- ```
68
-
69
- ## 自定义统计方法
70
-
71
- 通过传入函数作为 `method` 可以自定义统计逻辑:
72
-
73
- ```js
74
- {
75
- prop: "custom",
76
- label: "自定义统计",
77
- summary: {
78
- type: "custom",
79
- method: (values, data) => {
80
- // values: 当前列的所有数值
81
- // data: 表格完整数据
82
- return values.reduce((sum, val) => sum + val, 0);
83
- },
84
- prefix: "¥",
85
- decimals: 2
86
- }
87
- }
88
- ```
89
-
90
- ## 表格级别自定义
91
-
92
- 通过 `summaryMethod` 可以自定义整个表格的统计规则:
93
-
94
- ```js
95
- options: {
96
- summaryMethod: ({ columns, data }) => {
97
- const sums = [];
98
- columns.forEach((column, index) => {
99
- if (index === 0) {
100
- sums[index] = '总计';
101
- return;
102
- }
103
- const values = data.map(item => Number(item[column.property]));
104
- sums[index] = values.reduce((sum, val) => sum + val, 0);
105
- });
106
- return sums;
107
- }
108
- }
109
- ```
110
-
111
- ## 嵌套数据统计
112
-
113
- 通过 `path` 属性可以统计嵌套对象中的数据:
114
-
115
- ```js
116
- {
117
- prop: "nested.value",
118
- label: "嵌套数据",
119
- summary: {
120
- type: "sum",
121
- path: "nested.value", // 指定数据路径
122
- decimals: 2
123
- }
124
- }
125
- ```
126
-
127
- ## API
128
-
129
- ### Column Summary 配置
130
-
131
- | 参数 | 说明 | 类型 | 默认值 |
132
- | ---------- | ------------------------------ | -------- | ------ |
133
- | type | 统计类型 | string | - |
134
- | prefix | 统计值前缀 | string | '' |
135
- | suffix | 统计值后缀 | string | '' |
136
- | decimals | 小数位数 | number | 2 |
137
- | path | 数据路径(用于嵌套数据) | string | - |
138
- | ignoreZero | 是否忽略0值 | boolean | false |
139
- | absolute | 是否取绝对值 | boolean | false |
140
- | predicate | 计数条件(仅用于count) | function | - |
141
- | method | 自定义统计方法(仅用于custom) | function | - |
142
-
143
- ### Options 配置
144
-
145
- | 参数 | 说明 | 类型 | 默认值 |
146
- | ------------- | -------------------------------------------- | -------- | ------ |
147
- | summaryData | 不使用表格data数据,而使用外部传入的统计数据 | array | - |
148
- | showSummary | 是否显示统计行 | boolean | false |
149
- | summaryMethod | 自定义统计方法 | function | - |
150
-
151
- ### 内置统计类型
152
-
153
- | 类型 | 说明 | 可选值 |
154
- | ------ | ---------- | --------------------- |
155
- | sum | 求和 | ignoreZero, absolute |
156
- | avg | 平均值 | ignoreZero |
157
- | count | 计数 | ignoreZero, predicate |
158
- | max | 最大值 | absolute |
159
- | min | 最小值 | absolute |
160
- | custom | 自定义方法 | method |
161
-
162
- ### summaryMethod 参数
163
-
164
- | 参数 | 说明 | 类型 |
165
- | ------- | ---------- | ----- |
166
- | columns | 列配置数组 | array |
167
- | data | 表格数据 | array |