el-plus 0.0.113 → 0.0.115

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 (255) hide show
  1. package/CHANGELOG.md +24 -0
  2. package/README.md +85 -85
  3. package/dist/index.css +1 -1
  4. package/dist/index.full.js +15 -5
  5. package/dist/index.full.min.js +4 -4
  6. package/dist/index.full.min.js.map +1 -1
  7. package/dist/index.full.min.mjs +4 -4
  8. package/dist/index.full.min.mjs.map +1 -1
  9. package/dist/index.full.mjs +15 -6
  10. package/docs/CHANGELOG.md +5 -5
  11. package/docs/api-examples.md +49 -49
  12. package/docs/components/attachment.md +118 -111
  13. package/docs/components/buttons.md +179 -179
  14. package/docs/components/custom-column.md +70 -70
  15. package/docs/components/date-picker-range.md +61 -61
  16. package/docs/components/dialog.md +104 -104
  17. package/docs/components/footer-info.md +101 -101
  18. package/docs/components/form.md +211 -211
  19. package/docs/components/header.md +117 -117
  20. package/docs/components/input.md +111 -111
  21. package/docs/components/link.md +63 -63
  22. package/docs/components/search-list-page.md +91 -91
  23. package/docs/components/select.md +249 -249
  24. package/docs/components/table.md +145 -145
  25. package/docs/components/title.md +70 -70
  26. package/docs/components/use-choose-dialog.md +114 -114
  27. package/docs/components/use-confirm-dialog.md +86 -86
  28. package/docs/components/use-form-dialog.md +85 -85
  29. package/docs/guide/markdown-examples.md +85 -85
  30. package/docs/hooks/use-navigation.md +131 -131
  31. package/docs/hooks/use-utils.md +162 -162
  32. package/docs/index.md +25 -25
  33. package/docs/overview.md +99 -99
  34. package/docs/pages/detail.md +66 -66
  35. package/docs/pages/list.md +74 -74
  36. package/docs/pages/router.md +151 -151
  37. package/es/components/attachment/index.d.ts +12 -2
  38. package/es/components/attachment/index.mjs +1 -1
  39. package/es/components/attachment/index.mjs.map +1 -1
  40. package/es/components/attachment/src/attachment.d.ts +6 -0
  41. package/es/components/attachment/src/attachment.mjs +7 -1
  42. package/es/components/attachment/src/attachment.mjs.map +1 -1
  43. package/es/components/attachment/src/attachment.vue.d.ts +5 -1
  44. package/es/components/attachment/src/attachment.vue2.mjs +7 -4
  45. package/es/components/attachment/src/attachment.vue2.mjs.map +1 -1
  46. package/es/components/attachment/src/use-attachment.mjs.map +1 -1
  47. package/es/components/buttons/index.mjs.map +1 -1
  48. package/es/components/buttons/src/buttons-vue.mjs.map +1 -1
  49. package/es/components/buttons/src/buttons.mjs.map +1 -1
  50. package/es/components/custom-column/index.mjs.map +1 -1
  51. package/es/components/custom-column/src/custom-column.mjs.map +1 -1
  52. package/es/components/custom-column/src/custom-column.vue2.mjs.map +1 -1
  53. package/es/components/date-picker-range/index.mjs.map +1 -1
  54. package/es/components/date-picker-range/src/date-picker-range.mjs.map +1 -1
  55. package/es/components/date-picker-range/src/date-picker-range.vue2.mjs.map +1 -1
  56. package/es/components/footer-info/index.mjs.map +1 -1
  57. package/es/components/footer-info/src/footer-info.mjs.map +1 -1
  58. package/es/components/footer-info/src/footer-info.vue2.mjs.map +1 -1
  59. package/es/components/form/index.mjs.map +1 -1
  60. package/es/components/form/src/form-item-vue.mjs.map +1 -1
  61. package/es/components/form/src/form-item.mjs.map +1 -1
  62. package/es/components/form/src/form.mjs.map +1 -1
  63. package/es/components/form/src/form.vue2.mjs.map +1 -1
  64. package/es/components/form/src/hooks/use-form-item.mjs.map +1 -1
  65. package/es/components/form/src/hooks/use-form.mjs.map +1 -1
  66. package/es/components/header/index.mjs.map +1 -1
  67. package/es/components/header/src/header.mjs.map +1 -1
  68. package/es/components/header/src/header.vue2.mjs.map +1 -1
  69. package/es/components/header/src/use-header.mjs.map +1 -1
  70. package/es/components/index.mjs +1 -1
  71. package/es/components/input/index.mjs.map +1 -1
  72. package/es/components/input/src/input.mjs.map +1 -1
  73. package/es/components/input/src/input.vue2.mjs.map +1 -1
  74. package/es/components/link/index.mjs.map +1 -1
  75. package/es/components/link/src/link.mjs.map +1 -1
  76. package/es/components/link/src/link.vue2.mjs.map +1 -1
  77. package/es/components/search-list-page/index.mjs.map +1 -1
  78. package/es/components/search-list-page/src/search-list-page.mjs.map +1 -1
  79. package/es/components/search-list-page/src/search-list-page.vue2.mjs.map +1 -1
  80. package/es/components/search-list-page/src/use-search-list-page.mjs.map +1 -1
  81. package/es/components/select/index.mjs.map +1 -1
  82. package/es/components/select/src/select.mjs.map +1 -1
  83. package/es/components/select/src/select.vue2.mjs.map +1 -1
  84. package/es/components/select/src/use-select.mjs.map +1 -1
  85. package/es/components/table/index.mjs.map +1 -1
  86. package/es/components/table/src/table.mjs.map +1 -1
  87. package/es/components/table/src/table.vue2.mjs.map +1 -1
  88. package/es/components/table/src/use-table.mjs.map +1 -1
  89. package/es/components/title/index.mjs.map +1 -1
  90. package/es/components/title/src/title.mjs.map +1 -1
  91. package/es/components/title/src/title.vue2.mjs.map +1 -1
  92. package/es/components/title/src/use-title.mjs.map +1 -1
  93. package/es/components/uni-vue/index.mjs.map +1 -1
  94. package/es/components/uni-vue/src/uni-vue.mjs.map +1 -1
  95. package/es/components/uni-vue/src/uni-vue.vue2.mjs.map +1 -1
  96. package/es/components/uni-vue/src/use-uni-vue.mjs.map +1 -1
  97. package/es/components.mjs.map +1 -1
  98. package/es/directives/permission/index.mjs.map +1 -1
  99. package/es/directives/repeat-click/index.mjs.map +1 -1
  100. package/es/hooks/dialog/use-choose-dialog.mjs.map +1 -1
  101. package/es/hooks/dialog/use-confirm-dialog.mjs.map +1 -1
  102. package/es/hooks/dialog/use-dialog.mjs.map +1 -1
  103. package/es/hooks/dialog/use-form-dialog.mjs.map +1 -1
  104. package/es/hooks/use-locale.mjs.map +1 -1
  105. package/es/hooks/use-navigation.mjs.map +1 -1
  106. package/es/hooks/use-request.mjs.map +1 -1
  107. package/es/hooks/use-template-promise.mjs.map +1 -1
  108. package/es/hooks/use-utils.mjs.map +1 -1
  109. package/es/index.mjs +1 -1
  110. package/es/index.mjs.map +1 -1
  111. package/es/locale/lang/en.mjs.map +1 -1
  112. package/es/locale/lang/zh-cn.mjs.map +1 -1
  113. package/es/package.json.mjs +1 -1
  114. package/es/plugins/globalProperties.mjs.map +1 -1
  115. package/es/types/global.d.ts +30 -30
  116. package/es/types/index.d.ts +2 -2
  117. package/es/types/utils.d.ts +19 -19
  118. package/es/utils/bem.mjs.map +1 -1
  119. package/es/utils/cookie.mjs.map +1 -1
  120. package/es/utils/dom.mjs.map +1 -1
  121. package/es/utils/env.mjs.map +1 -1
  122. package/es/utils/file.mjs.map +1 -1
  123. package/es/utils/http/core/modules/interceptor.mjs.map +1 -1
  124. package/es/utils/http/core/modules/loading.mjs.map +1 -1
  125. package/es/utils/http/core/preset-interceptors.mjs.map +1 -1
  126. package/es/utils/http/core/request-client.mjs.map +1 -1
  127. package/es/utils/http/index.mjs.map +1 -1
  128. package/es/utils/mitt.mjs.map +1 -1
  129. package/es/utils/navigation.mjs.map +1 -1
  130. package/es/utils/props.mjs.map +1 -1
  131. package/es/utils/time.mjs.map +1 -1
  132. package/es/utils/utils.mjs.map +1 -1
  133. package/es/utils/with-install.mjs.map +1 -1
  134. package/global.d.ts +21 -21
  135. package/lib/components/attachment/index.d.ts +12 -2
  136. package/lib/components/attachment/index.js +1 -0
  137. package/lib/components/attachment/index.js.map +1 -1
  138. package/lib/components/attachment/src/attachment.d.ts +6 -0
  139. package/lib/components/attachment/src/attachment.js +7 -0
  140. package/lib/components/attachment/src/attachment.js.map +1 -1
  141. package/lib/components/attachment/src/attachment.vue.d.ts +5 -1
  142. package/lib/components/attachment/src/attachment.vue2.js +6 -3
  143. package/lib/components/attachment/src/attachment.vue2.js.map +1 -1
  144. package/lib/components/attachment/src/use-attachment.js.map +1 -1
  145. package/lib/components/buttons/index.js.map +1 -1
  146. package/lib/components/buttons/src/buttons-vue.js.map +1 -1
  147. package/lib/components/buttons/src/buttons.js.map +1 -1
  148. package/lib/components/custom-column/index.js.map +1 -1
  149. package/lib/components/custom-column/src/custom-column.js.map +1 -1
  150. package/lib/components/custom-column/src/custom-column.vue2.js.map +1 -1
  151. package/lib/components/date-picker-range/index.js.map +1 -1
  152. package/lib/components/date-picker-range/src/date-picker-range.js.map +1 -1
  153. package/lib/components/date-picker-range/src/date-picker-range.vue2.js.map +1 -1
  154. package/lib/components/footer-info/index.js.map +1 -1
  155. package/lib/components/footer-info/src/footer-info.js.map +1 -1
  156. package/lib/components/footer-info/src/footer-info.vue2.js.map +1 -1
  157. package/lib/components/form/index.js.map +1 -1
  158. package/lib/components/form/src/form-item-vue.js.map +1 -1
  159. package/lib/components/form/src/form-item.js.map +1 -1
  160. package/lib/components/form/src/form.js.map +1 -1
  161. package/lib/components/form/src/form.vue2.js.map +1 -1
  162. package/lib/components/form/src/hooks/use-form-item.js.map +1 -1
  163. package/lib/components/form/src/hooks/use-form.js.map +1 -1
  164. package/lib/components/header/index.js.map +1 -1
  165. package/lib/components/header/src/header.js.map +1 -1
  166. package/lib/components/header/src/header.vue2.js.map +1 -1
  167. package/lib/components/header/src/use-header.js.map +1 -1
  168. package/lib/components/index.js +1 -0
  169. package/lib/components/index.js.map +1 -1
  170. package/lib/components/input/index.js.map +1 -1
  171. package/lib/components/input/src/input.js.map +1 -1
  172. package/lib/components/input/src/input.vue2.js.map +1 -1
  173. package/lib/components/link/index.js.map +1 -1
  174. package/lib/components/link/src/link.js.map +1 -1
  175. package/lib/components/link/src/link.vue2.js.map +1 -1
  176. package/lib/components/search-list-page/index.js.map +1 -1
  177. package/lib/components/search-list-page/src/search-list-page.js.map +1 -1
  178. package/lib/components/search-list-page/src/search-list-page.vue2.js.map +1 -1
  179. package/lib/components/search-list-page/src/use-search-list-page.js.map +1 -1
  180. package/lib/components/select/index.js.map +1 -1
  181. package/lib/components/select/src/select.js.map +1 -1
  182. package/lib/components/select/src/select.vue2.js.map +1 -1
  183. package/lib/components/select/src/use-select.js.map +1 -1
  184. package/lib/components/table/index.js.map +1 -1
  185. package/lib/components/table/src/table.js.map +1 -1
  186. package/lib/components/table/src/table.vue2.js.map +1 -1
  187. package/lib/components/table/src/use-table.js.map +1 -1
  188. package/lib/components/title/index.js.map +1 -1
  189. package/lib/components/title/src/title.js.map +1 -1
  190. package/lib/components/title/src/title.vue2.js.map +1 -1
  191. package/lib/components/title/src/use-title.js.map +1 -1
  192. package/lib/components/uni-vue/index.js.map +1 -1
  193. package/lib/components/uni-vue/src/uni-vue.js.map +1 -1
  194. package/lib/components/uni-vue/src/uni-vue.vue2.js.map +1 -1
  195. package/lib/components/uni-vue/src/use-uni-vue.js.map +1 -1
  196. package/lib/components.js.map +1 -1
  197. package/lib/directives/permission/index.js.map +1 -1
  198. package/lib/directives/repeat-click/index.js.map +1 -1
  199. package/lib/hooks/dialog/use-choose-dialog.js.map +1 -1
  200. package/lib/hooks/dialog/use-confirm-dialog.js.map +1 -1
  201. package/lib/hooks/dialog/use-dialog.js.map +1 -1
  202. package/lib/hooks/dialog/use-form-dialog.js.map +1 -1
  203. package/lib/hooks/use-locale.js.map +1 -1
  204. package/lib/hooks/use-navigation.js.map +1 -1
  205. package/lib/hooks/use-request.js.map +1 -1
  206. package/lib/hooks/use-template-promise.js.map +1 -1
  207. package/lib/hooks/use-utils.js.map +1 -1
  208. package/lib/index.js +1 -0
  209. package/lib/index.js.map +1 -1
  210. package/lib/locale/lang/en.js.map +1 -1
  211. package/lib/locale/lang/zh-cn.js.map +1 -1
  212. package/lib/package.json.js +1 -1
  213. package/lib/plugins/globalProperties.js.map +1 -1
  214. package/lib/types/global.d.ts +30 -30
  215. package/lib/types/index.d.ts +2 -2
  216. package/lib/types/utils.d.ts +19 -19
  217. package/lib/utils/bem.js.map +1 -1
  218. package/lib/utils/cookie.js.map +1 -1
  219. package/lib/utils/dom.js.map +1 -1
  220. package/lib/utils/env.js.map +1 -1
  221. package/lib/utils/file.js.map +1 -1
  222. package/lib/utils/http/core/modules/interceptor.js.map +1 -1
  223. package/lib/utils/http/core/modules/loading.js.map +1 -1
  224. package/lib/utils/http/core/preset-interceptors.js.map +1 -1
  225. package/lib/utils/http/core/request-client.js.map +1 -1
  226. package/lib/utils/http/index.js.map +1 -1
  227. package/lib/utils/mitt.js.map +1 -1
  228. package/lib/utils/navigation.js.map +1 -1
  229. package/lib/utils/props.js.map +1 -1
  230. package/lib/utils/time.js.map +1 -1
  231. package/lib/utils/utils.js.map +1 -1
  232. package/lib/utils/with-install.js.map +1 -1
  233. package/package.json +1 -1
  234. package/theme-chalk/base.css +1 -1
  235. package/theme-chalk/index.css +1 -1
  236. package/theme-chalk/src/attachment.scss +39 -39
  237. package/theme-chalk/src/base.scss +2 -2
  238. package/theme-chalk/src/buttons.scss +22 -22
  239. package/theme-chalk/src/common/common.scss +7 -4
  240. package/theme-chalk/src/common/transition.scss +9 -9
  241. package/theme-chalk/src/custom-column.scss +55 -55
  242. package/theme-chalk/src/dialog.scss +62 -62
  243. package/theme-chalk/src/footer-info.scss +18 -18
  244. package/theme-chalk/src/form.scss +80 -72
  245. package/theme-chalk/src/header.scss +19 -19
  246. package/theme-chalk/src/index.scss +15 -15
  247. package/theme-chalk/src/link.scss +5 -5
  248. package/theme-chalk/src/mixins/config.scss +3 -3
  249. package/theme-chalk/src/mixins/mixins.scss +37 -37
  250. package/theme-chalk/src/search-list-page.scss +22 -22
  251. package/theme-chalk/src/select.scss +10 -10
  252. package/theme-chalk/src/table.scss +91 -91
  253. package/theme-chalk/src/tabs.scss +55 -55
  254. package/theme-chalk/src/title.scss +52 -52
  255. package/theme-chalk/src/uni-vue.scss +10 -10
@@ -1,145 +1,145 @@
1
- # EpTable 数据表格
2
-
3
- 基于 el-table 封装,支持配置化列、分页、操作列等功能。
4
-
5
- ## 基本用法
6
-
7
- ```vue
8
- <template>
9
- <EpTable
10
- :data="tableData"
11
- :columns="columns"
12
- :action-buttons="actionButtons"
13
- />
14
- </template>
15
-
16
- <script setup lang="tsx">
17
- import { ref } from 'vue'
18
-
19
- const tableData = ref([])
20
-
21
- const columns = [
22
- { prop: 'name', label: '名称' },
23
- { prop: 'status', label: '状态' },
24
- ]
25
-
26
- const actionButtons = [
27
- { name: '编辑', onClick: (row) => {} },
28
- { name: '删除', onClick: (row) => {} },
29
- ]
30
- </script>
31
- ```
32
-
33
- ## Props
34
-
35
- | 属性 | 说明 | 类型 | 默认值 |
36
- |------|------|------|--------|
37
- | data | 表格数据 ^el^ | `array` | `[]` |
38
- | columns | 列配置 | [`TableColumn[]`](#tablecolumn-配置) | `[]` |
39
- | api | 数据接口 | `string \| (reqData) => Promise` | - |
40
- | method | 请求方法 | `string` | `'post'` |
41
- | reqData | 请求体数据 | `object` | `{}` |
42
- | reqParams | URL 参数 | `object` | `{}` |
43
- | reqBefore | 请求前处理 | `(reqData) => reqData` | - |
44
- | reqAfter | 响应后处理 | `(res) => data` | - |
45
- | size | 表格尺寸 ^el^ | `'large' \| 'default' \| 'small'` | `'default'` |
46
- | border | 是否带边框 ^el^ | `boolean` | `true` |
47
- | headerCellStyle | 表头样式 ^el^ | `object` | `{ background: '#EEEFF3', fontSize: '14px', color: '#505050' }` |
48
- | showSelectionCol | 显示多选列 | `boolean` | `false` |
49
- | showSingleSelectionCol | 显示单选列 | `boolean` | `false` |
50
- | showIndexCol | 显示序号列 | `boolean` | `true` |
51
- | align | 对齐方式 | `'left' \| 'center' \| 'right'` | `'center'` |
52
- | minWidth | 列最小宽度 | `number \| string` | - |
53
- | actionColWidth | 操作列宽度 | `number \| string` | `200` |
54
- | actionButtons | 操作列按钮 | [`ButtonProps[]`](./buttons.md#buttonprops-配置) | `[]` |
55
- | formatColumns | 格式化列配置 | [`TableColumn[]`](#tablecolumn-配置) | `[]` |
56
- | showPagination | 显示分页 | `boolean` | `false` |
57
- | paginationProps | 分页属性 | `object` | `{}` |
58
- | isFrontPage | 前端分页 | `boolean` | `false` |
59
- | isInitSearch | 初始化加载 | `boolean` | `true` |
60
- | disabled | 是否禁用 | `boolean` | `false` |
61
- | reserveSelection | 保留选择 | `boolean` | `false` |
62
- | selectable | 可选择函数 | `(row, index) => boolean` | - |
63
- | indexFormatter | 序号列格式化 | `number \| Function` | - |
64
-
65
- > ^el^ 表示继承自 [el-table](https://element-plus.org/zh-CN/component/table.html) 的属性
66
-
67
- ## TableColumn 配置
68
-
69
- | 属性 | 说明 | 类型 |
70
- |------|------|------|
71
- | prop | 字段名 | `string` |
72
- | label | 列标题 | `string` |
73
- | width | 列宽度 | `number \| string` |
74
- | minWidth | 最小宽度 | `number \| string` |
75
- | type | 组件类型 | `string` |
76
- | props | 组件属性 | `object` |
77
- | render | 自定义渲染 | `({ row, $index }) => VNode` |
78
- | headerRender | 自定义表头渲染 | `() => VNode` |
79
- | required | 是否必填 | `boolean \| () => boolean` |
80
- | disabled | 是否禁用 | `boolean \| (scope) => boolean` |
81
- | show | 是否显示(支持函数) | `boolean \| () => boolean` |
82
- | hide | 是否隐藏(支持函数) | `boolean \| () => boolean` |
83
- | filter | 显示筛选 | `boolean` |
84
- | editable | 可批量编辑 | `boolean` |
85
-
86
- ## 在 Form 中使用
87
-
88
- ```tsx
89
- const formItemList = [
90
- {
91
- col: 24,
92
- type: 'EpTable',
93
- props: {
94
- data: formData.detailList,
95
- showSelectionCol: true,
96
- columns: [
97
- { prop: 'itemCode', label: '编号' },
98
- { prop: 'itemName', label: '名称' },
99
- {
100
- prop: 'quantity',
101
- label: '数量',
102
- type: 'EpInput',
103
- },
104
- ],
105
- },
106
- },
107
- ]
108
- ```
109
-
110
- ## 注意事项
111
-
112
- ### 在 columns 中使用表单项
113
-
114
- 在 EpTable 的 columns 中使用表单项时,`type` 不能省略,否则会显示为普通文本。
115
-
116
- ```json
117
- // ❌ 错误:表格列中省略 type,会显示为文本
118
- { "prop": "quantity", "label": "数量" }
119
- // ✅ 正确:表格列中必须指定 type
120
- { "prop": "quantity", "label": "数量", "type": "EpInput" }
121
- ```
122
-
123
- ## 自定义渲染
124
-
125
- ```tsx
126
- const columns = [
127
- {
128
- prop: 'status',
129
- label: '状态',
130
- render: ({ row }) => (
131
- <el-tag type={row.status === 1 ? 'success' : 'danger'}>
132
- {row.status === 1 ? '启用' : '禁用'}
133
- </el-tag>
134
- ),
135
- },
136
- ]
137
- ```
138
-
139
- ## Expose 方法
140
-
141
- | 方法 | 说明 |
142
- |------|------|
143
- | getSelectionRows | 获取选中行 |
144
- | clearSelection | 清空选择 |
145
- | search | 重新加载数据 |
1
+ # EpTable 数据表格
2
+
3
+ 基于 el-table 封装,支持配置化列、分页、操作列等功能。
4
+
5
+ ## 基本用法
6
+
7
+ ```vue
8
+ <template>
9
+ <EpTable
10
+ :data="tableData"
11
+ :columns="columns"
12
+ :action-buttons="actionButtons"
13
+ />
14
+ </template>
15
+
16
+ <script setup lang="tsx">
17
+ import { ref } from 'vue'
18
+
19
+ const tableData = ref([])
20
+
21
+ const columns = [
22
+ { prop: 'name', label: '名称' },
23
+ { prop: 'status', label: '状态' },
24
+ ]
25
+
26
+ const actionButtons = [
27
+ { name: '编辑', onClick: (row) => {} },
28
+ { name: '删除', onClick: (row) => {} },
29
+ ]
30
+ </script>
31
+ ```
32
+
33
+ ## Props
34
+
35
+ | 属性 | 说明 | 类型 | 默认值 |
36
+ |------|------|------|--------|
37
+ | data | 表格数据 ^el^ | `array` | `[]` |
38
+ | columns | 列配置 | [`TableColumn[]`](#tablecolumn-配置) | `[]` |
39
+ | api | 数据接口 | `string \| (reqData) => Promise` | - |
40
+ | method | 请求方法 | `string` | `'post'` |
41
+ | reqData | 请求体数据 | `object` | `{}` |
42
+ | reqParams | URL 参数 | `object` | `{}` |
43
+ | reqBefore | 请求前处理 | `(reqData) => reqData` | - |
44
+ | reqAfter | 响应后处理 | `(res) => data` | - |
45
+ | size | 表格尺寸 ^el^ | `'large' \| 'default' \| 'small'` | `'default'` |
46
+ | border | 是否带边框 ^el^ | `boolean` | `true` |
47
+ | headerCellStyle | 表头样式 ^el^ | `object` | `{ background: '#EEEFF3', fontSize: '14px', color: '#505050' }` |
48
+ | showSelectionCol | 显示多选列 | `boolean` | `false` |
49
+ | showSingleSelectionCol | 显示单选列 | `boolean` | `false` |
50
+ | showIndexCol | 显示序号列 | `boolean` | `true` |
51
+ | align | 对齐方式 | `'left' \| 'center' \| 'right'` | `'center'` |
52
+ | minWidth | 列最小宽度 | `number \| string` | - |
53
+ | actionColWidth | 操作列宽度 | `number \| string` | `200` |
54
+ | actionButtons | 操作列按钮 | [`ButtonProps[]`](./buttons.md#buttonprops-配置) | `[]` |
55
+ | formatColumns | 格式化列配置 | [`TableColumn[]`](#tablecolumn-配置) | `[]` |
56
+ | showPagination | 显示分页 | `boolean` | `false` |
57
+ | paginationProps | 分页属性 | `object` | `{}` |
58
+ | isFrontPage | 前端分页 | `boolean` | `false` |
59
+ | isInitSearch | 初始化加载 | `boolean` | `true` |
60
+ | disabled | 是否禁用 | `boolean` | `false` |
61
+ | reserveSelection | 保留选择 | `boolean` | `false` |
62
+ | selectable | 可选择函数 | `(row, index) => boolean` | - |
63
+ | indexFormatter | 序号列格式化 | `number \| Function` | - |
64
+
65
+ > ^el^ 表示继承自 [el-table](https://element-plus.org/zh-CN/component/table.html) 的属性
66
+
67
+ ## TableColumn 配置
68
+
69
+ | 属性 | 说明 | 类型 |
70
+ |------|------|------|
71
+ | prop | 字段名 | `string` |
72
+ | label | 列标题 | `string` |
73
+ | width | 列宽度 | `number \| string` |
74
+ | minWidth | 最小宽度 | `number \| string` |
75
+ | type | 组件类型 | `string` |
76
+ | props | 组件属性 | `object` |
77
+ | render | 自定义渲染 | `({ row, $index }) => VNode` |
78
+ | headerRender | 自定义表头渲染 | `() => VNode` |
79
+ | required | 是否必填 | `boolean \| () => boolean` |
80
+ | disabled | 是否禁用 | `boolean \| (scope) => boolean` |
81
+ | show | 是否显示(支持函数) | `boolean \| () => boolean` |
82
+ | hide | 是否隐藏(支持函数) | `boolean \| () => boolean` |
83
+ | filter | 显示筛选 | `boolean` |
84
+ | editable | 可批量编辑 | `boolean` |
85
+
86
+ ## 在 Form 中使用
87
+
88
+ ```tsx
89
+ const formItemList = [
90
+ {
91
+ col: 24,
92
+ type: 'EpTable',
93
+ props: {
94
+ data: formData.detailList,
95
+ showSelectionCol: true,
96
+ columns: [
97
+ { prop: 'itemCode', label: '编号' },
98
+ { prop: 'itemName', label: '名称' },
99
+ {
100
+ prop: 'quantity',
101
+ label: '数量',
102
+ type: 'EpInput',
103
+ },
104
+ ],
105
+ },
106
+ },
107
+ ]
108
+ ```
109
+
110
+ ## 注意事项
111
+
112
+ ### 在 columns 中使用表单项
113
+
114
+ 在 EpTable 的 columns 中使用表单项时,`type` 不能省略,否则会显示为普通文本。
115
+
116
+ ```json
117
+ // ❌ 错误:表格列中省略 type,会显示为文本
118
+ { "prop": "quantity", "label": "数量" }
119
+ // ✅ 正确:表格列中必须指定 type
120
+ { "prop": "quantity", "label": "数量", "type": "EpInput" }
121
+ ```
122
+
123
+ ## 自定义渲染
124
+
125
+ ```tsx
126
+ const columns = [
127
+ {
128
+ prop: 'status',
129
+ label: '状态',
130
+ render: ({ row }) => (
131
+ <el-tag type={row.status === 1 ? 'success' : 'danger'}>
132
+ {row.status === 1 ? '启用' : '禁用'}
133
+ </el-tag>
134
+ ),
135
+ },
136
+ ]
137
+ ```
138
+
139
+ ## Expose 方法
140
+
141
+ | 方法 | 说明 |
142
+ |------|------|
143
+ | getSelectionRows | 获取选中行 |
144
+ | clearSelection | 清空选择 |
145
+ | search | 重新加载数据 |
@@ -1,70 +1,70 @@
1
- # EpTitle 标题分组
2
-
3
- 用于表单分组的标题组件,支持右侧按钮和展开折叠。
4
-
5
- ## 基本用法
6
-
7
- ```vue
8
- <template>
9
- <EpTitle title="基本信息" />
10
- </template>
11
- ```
12
-
13
- ## Props
14
-
15
- | 属性 | 说明 | 类型 | 默认值 |
16
- |------|------|------|--------|
17
- | title | 标题文本 | `string` | - |
18
- | buttons | 右侧按钮列表 | [`ButtonProps[]`](./buttons.md#buttonprops-配置) | `[]` |
19
- | showDownUp | 显示展开折叠 | `boolean` | `false` |
20
-
21
- ## Events
22
-
23
- | 事件名 | 说明 | 回调参数 |
24
- |--------|------|----------|
25
- | toggle | 折叠状态切换 | `(expanded: boolean)` |
26
-
27
- ## 带按钮
28
-
29
- ```vue
30
- <template>
31
- <EpTitle title="商品明细" :buttons="buttons" />
32
- </template>
33
-
34
- <script setup>
35
- const buttons = [
36
- {
37
- name: '新增',
38
- type: 'primary',
39
- onClick: () => {},
40
- },
41
- {
42
- name: '删除',
43
- type: 'danger',
44
- plain: true,
45
- onClick: () => {},
46
- },
47
- ]
48
- </script>
49
- ```
50
-
51
- ## 在 Form 中使用
52
-
53
- ```tsx
54
- const formItemList = [
55
- {
56
- col: 24,
57
- type: 'EpTitle',
58
- props: {
59
- title: '基本信息',
60
- buttons: [
61
- {
62
- name: '操作',
63
- onClick: () => {},
64
- },
65
- ],
66
- },
67
- },
68
- // 其他表单项...
69
- ]
70
- ```
1
+ # EpTitle 标题分组
2
+
3
+ 用于表单分组的标题组件,支持右侧按钮和展开折叠。
4
+
5
+ ## 基本用法
6
+
7
+ ```vue
8
+ <template>
9
+ <EpTitle title="基本信息" />
10
+ </template>
11
+ ```
12
+
13
+ ## Props
14
+
15
+ | 属性 | 说明 | 类型 | 默认值 |
16
+ |------|------|------|--------|
17
+ | title | 标题文本 | `string` | - |
18
+ | buttons | 右侧按钮列表 | [`ButtonProps[]`](./buttons.md#buttonprops-配置) | `[]` |
19
+ | showDownUp | 显示展开折叠 | `boolean` | `false` |
20
+
21
+ ## Events
22
+
23
+ | 事件名 | 说明 | 回调参数 |
24
+ |--------|------|----------|
25
+ | toggle | 折叠状态切换 | `(expanded: boolean)` |
26
+
27
+ ## 带按钮
28
+
29
+ ```vue
30
+ <template>
31
+ <EpTitle title="商品明细" :buttons="buttons" />
32
+ </template>
33
+
34
+ <script setup>
35
+ const buttons = [
36
+ {
37
+ name: '新增',
38
+ type: 'primary',
39
+ onClick: () => {},
40
+ },
41
+ {
42
+ name: '删除',
43
+ type: 'danger',
44
+ plain: true,
45
+ onClick: () => {},
46
+ },
47
+ ]
48
+ </script>
49
+ ```
50
+
51
+ ## 在 Form 中使用
52
+
53
+ ```tsx
54
+ const formItemList = [
55
+ {
56
+ col: 24,
57
+ type: 'EpTitle',
58
+ props: {
59
+ title: '基本信息',
60
+ buttons: [
61
+ {
62
+ name: '操作',
63
+ onClick: () => {},
64
+ },
65
+ ],
66
+ },
67
+ },
68
+ // 其他表单项...
69
+ ]
70
+ ```
@@ -1,114 +1,114 @@
1
- # useChooseDialog 选择对话框
2
-
3
- 基于 useDialog 实现的选择对话框,集成 EpSearchListPage 组件,支持单选和多选。
4
-
5
- ## 基本用法
6
-
7
- ```vue
8
- <template>
9
- <el-button @click="handleChoose">选择用户</el-button>
10
- </template>
11
-
12
- <script setup lang="tsx">
13
- import { useChooseDialog } from 'el-plus'
14
-
15
- const ChooseDialog = useChooseDialog({
16
- title: '选择用户',
17
- multiple: false, // 单选模式
18
- dialogProps: {
19
- destroyOnClose: true, // 关闭时销毁对话框内容
20
- },
21
- formItemList: [
22
- { prop: 'name', label: '姓名' },
23
- ],
24
- columns: [
25
- { prop: 'name', label: '姓名' },
26
- { prop: 'dept', label: '部门' },
27
- ],
28
- api: getUserList, // 列表接口
29
- })
30
-
31
- const handleChoose = async () => {
32
- try {
33
- const selection = await ChooseDialog.open()
34
- console.log('选中', selection)
35
- } catch (e) {
36
- console.log('取消')
37
- }
38
- }
39
- </script>
40
- ```
41
-
42
- ## Options
43
-
44
- | 属性 | 说明 | 类型 | 默认值 |
45
- |------|------|------|--------|
46
- | title | 对话框标题 | `string` | - |
47
- | dialogProps | 对话框属性,继承自 useDialog | `DialogOptions` | - |
48
- | multiple | 是否多选 | `boolean` | `false` |
49
- | formItemList | 搜索表单项配置,参考 [EpForm](./form.md) | `FormItemProps[]` | - |
50
- | columns | 表格列配置,参考 [EpTable](./table.md) | `TableColumn[]` | - |
51
- | api | 列表数据接口 | `(params) => Promise` | - |
52
- | formData | 搜索表单数据 | `object` | - |
53
- | formProps | 表单属性,参考 [EpForm](./form.md) | `FormProps` | `{ col: 3 }` |
54
- | tableProps | 表格属性,参考 [EpTable](./table.md) | `TableProps` | `{ height: 300 }` |
55
-
56
- ## 多选模式
57
-
58
- ```tsx
59
- const ChooseDialog = useChooseDialog({
60
- title: '选择用户',
61
- multiple: true, // 多选模式
62
- formItemList: [
63
- { prop: 'name', label: '姓名' },
64
- ],
65
- columns: [
66
- { prop: 'name', label: '姓名' },
67
- { prop: 'dept', label: '部门' },
68
- ],
69
- api: getUserList,
70
- })
71
- ```
72
-
73
- 多选模式下,底部会显示已选数量,确认后返回选中的行数据数组。
74
-
75
- ## 单选模式
76
-
77
- ```tsx
78
- const ChooseDialog = useChooseDialog({
79
- title: '选择用户',
80
- multiple: false, // 单选模式(默认)
81
- columns: [
82
- { prop: 'name', label: '姓名' },
83
- ],
84
- api: getUserList,
85
- })
86
- ```
87
-
88
- 单选模式下,点击行即可选中并关闭对话框,返回选中的行数据对象。
89
-
90
- ## 自定义表格高度
91
-
92
- ```tsx
93
- const ChooseDialog = useChooseDialog({
94
- title: '选择用户',
95
- tableProps: {
96
- height: 500, // 自定义表格高度
97
- },
98
- columns: [...],
99
- api: getUserList,
100
- })
101
- ```
102
-
103
- ## 返回值
104
-
105
- - **单选模式**: 返回选中的行数据对象
106
- - **多选模式**: 返回选中的行数据数组
107
-
108
- ## 方法
109
-
110
- | 方法 | 说明 | 类型 |
111
- |------|------|------|
112
- | open | 打开对话框并返回 Promise | `() => Promise<Selection>` |
113
- | open | 打开对话框 | `() => void` |
114
- | close | 关闭对话框 | `() => void` |
1
+ # useChooseDialog 选择对话框
2
+
3
+ 基于 useDialog 实现的选择对话框,集成 EpSearchListPage 组件,支持单选和多选。
4
+
5
+ ## 基本用法
6
+
7
+ ```vue
8
+ <template>
9
+ <el-button @click="handleChoose">选择用户</el-button>
10
+ </template>
11
+
12
+ <script setup lang="tsx">
13
+ import { useChooseDialog } from 'el-plus'
14
+
15
+ const ChooseDialog = useChooseDialog({
16
+ title: '选择用户',
17
+ multiple: false, // 单选模式
18
+ dialogProps: {
19
+ destroyOnClose: true, // 关闭时销毁对话框内容
20
+ },
21
+ formItemList: [
22
+ { prop: 'name', label: '姓名' },
23
+ ],
24
+ columns: [
25
+ { prop: 'name', label: '姓名' },
26
+ { prop: 'dept', label: '部门' },
27
+ ],
28
+ api: getUserList, // 列表接口
29
+ })
30
+
31
+ const handleChoose = async () => {
32
+ try {
33
+ const selection = await ChooseDialog.open()
34
+ console.log('选中', selection)
35
+ } catch (e) {
36
+ console.log('取消')
37
+ }
38
+ }
39
+ </script>
40
+ ```
41
+
42
+ ## Options
43
+
44
+ | 属性 | 说明 | 类型 | 默认值 |
45
+ |------|------|------|--------|
46
+ | title | 对话框标题 | `string` | - |
47
+ | dialogProps | 对话框属性,继承自 useDialog | `DialogOptions` | - |
48
+ | multiple | 是否多选 | `boolean` | `false` |
49
+ | formItemList | 搜索表单项配置,参考 [EpForm](./form.md) | `FormItemProps[]` | - |
50
+ | columns | 表格列配置,参考 [EpTable](./table.md) | `TableColumn[]` | - |
51
+ | api | 列表数据接口 | `(params) => Promise` | - |
52
+ | formData | 搜索表单数据 | `object` | - |
53
+ | formProps | 表单属性,参考 [EpForm](./form.md) | `FormProps` | `{ col: 3 }` |
54
+ | tableProps | 表格属性,参考 [EpTable](./table.md) | `TableProps` | `{ height: 300 }` |
55
+
56
+ ## 多选模式
57
+
58
+ ```tsx
59
+ const ChooseDialog = useChooseDialog({
60
+ title: '选择用户',
61
+ multiple: true, // 多选模式
62
+ formItemList: [
63
+ { prop: 'name', label: '姓名' },
64
+ ],
65
+ columns: [
66
+ { prop: 'name', label: '姓名' },
67
+ { prop: 'dept', label: '部门' },
68
+ ],
69
+ api: getUserList,
70
+ })
71
+ ```
72
+
73
+ 多选模式下,底部会显示已选数量,确认后返回选中的行数据数组。
74
+
75
+ ## 单选模式
76
+
77
+ ```tsx
78
+ const ChooseDialog = useChooseDialog({
79
+ title: '选择用户',
80
+ multiple: false, // 单选模式(默认)
81
+ columns: [
82
+ { prop: 'name', label: '姓名' },
83
+ ],
84
+ api: getUserList,
85
+ })
86
+ ```
87
+
88
+ 单选模式下,点击行即可选中并关闭对话框,返回选中的行数据对象。
89
+
90
+ ## 自定义表格高度
91
+
92
+ ```tsx
93
+ const ChooseDialog = useChooseDialog({
94
+ title: '选择用户',
95
+ tableProps: {
96
+ height: 500, // 自定义表格高度
97
+ },
98
+ columns: [...],
99
+ api: getUserList,
100
+ })
101
+ ```
102
+
103
+ ## 返回值
104
+
105
+ - **单选模式**: 返回选中的行数据对象
106
+ - **多选模式**: 返回选中的行数据数组
107
+
108
+ ## 方法
109
+
110
+ | 方法 | 说明 | 类型 |
111
+ |------|------|------|
112
+ | open | 打开对话框并返回 Promise | `() => Promise<Selection>` |
113
+ | open | 打开对话框 | `() => void` |
114
+ | close | 关闭对话框 | `() => void` |