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,179 +1,179 @@
1
- # EpButtons 按钮组
2
-
3
- 按钮组组件,支持权限控制、确认弹窗等功能。
4
-
5
- ## 基本用法
6
-
7
- ```vue
8
- <template>
9
- <EpButtons :list="buttons" />
10
- </template>
11
-
12
- <script setup>
13
- const buttons = [
14
- {
15
- name: '新增',
16
- prop: 'add',
17
- onClick: () => {
18
- // 新增逻辑
19
- },
20
- },
21
- {
22
- name: '删除',
23
- prop: 'delete',
24
- onClick: () => {
25
- // 删除逻辑
26
- },
27
- },
28
- ]
29
- </script>
30
- ```
31
-
32
- ## 在 Form 中使用
33
-
34
- ```tsx
35
- const formItemList = ref<FormProps['formItemList']>([
36
- {
37
- col: 24,
38
- type: 'EpButtons',
39
- props: {
40
- list: [
41
- {
42
- name: '提交审批',
43
- type: 'primary',
44
- onClick: () => {
45
- // 提交审批逻辑
46
- },
47
- },
48
- {
49
- name: '取消审批',
50
- onClick: () => {
51
- // 取消审批逻辑
52
- },
53
- },
54
- {
55
- name: '作废',
56
- onClick: () => {
57
- // 作废逻辑
58
- },
59
- },
60
- ],
61
- },
62
- },
63
- ])
64
- ```
65
-
66
- ## Props
67
-
68
- | 属性 | 说明 | 类型 | 默认值 |
69
- |------|------|------|--------|
70
- | list | 按钮列表 | `ButtonProps[]` | `[]` |
71
- | size | 按钮尺寸 | `'large' \| 'default' \| 'small'` | `'small'` |
72
- | type | 默认按钮类型 | `string` | `'default'` |
73
- | disabled | 是否禁用(支持函数) | `boolean \| () => boolean` | `false` |
74
-
75
- ## ButtonProps 配置
76
-
77
- | 属性 | 说明 | 类型 | 默认值 |
78
- |------|------|------|--------|
79
- | name | 按钮文本 | `string` | - |
80
- | prop | 唯一标识 | `string` | - |
81
- | type | 按钮类型 | `'primary' \| 'success' \| 'warning' \| 'danger' \| 'info'` | - |
82
- | plain | 朴素按钮 | `boolean` | `false` |
83
- | disabled | 是否禁用 | `boolean \| () => boolean` | `false` |
84
- | show | 是否显示(支持函数) | `boolean \| () => boolean` | `true` |
85
- | hide | 是否隐藏(支持函数) | `boolean \| () => boolean` | `false` |
86
- | permission | 权限标识 | `string` | - |
87
- | confirm | 是否需要确认 | `boolean` | `false` |
88
- | confirmText | 确认提示文本 | `string` | `'确定要${name}吗?'` |
89
- | confirmBefore | 点击前前置校验 | `() => Promise<void>` | - |
90
- | onClick | 点击回调 | `(e: MouseEvent \| TableScope) => void` | - |
91
-
92
- ## 带确认弹窗
93
-
94
- ```tsx
95
- const buttons = [
96
- {
97
- name: '删除',
98
- prop: 'delete',
99
- confirm: true,
100
- onClick: () => {
101
- // 删除逻辑
102
- },
103
- },
104
- ]
105
- ```
106
-
107
- ## 点击前前置校验
108
-
109
- 使用 `confirmBefore` 可以在点击后、确认弹窗弹出前执行异步校验逻辑,Promise reject 则阻止后续操作(不弹确认框、不执行 `onClick`)。
110
-
111
- ```tsx
112
- const buttons = [
113
- {
114
- name: '提交',
115
- prop: 'submit',
116
- confirmBefore: async () => {
117
- const valid = await validateForm()
118
- if (!valid) {
119
- return Promise.reject()
120
- }
121
- },
122
- confirm: true,
123
- onClick: () => {
124
- // 提交逻辑
125
- },
126
- },
127
- ]
128
- ```
129
-
130
- > **⚠️ 注意:需要确认弹窗时,必须使用 `confirm: true` 属性,禁止手动编写 `ElMessageBox.confirm`**
131
- >
132
- > **正确做法**:
133
- > ```tsx
134
- > { name: '取消审批', confirm: true, onClick: () => { ElMessage.success('成功') } }
135
- > ```
136
- >
137
- > **错误做法**:
138
- > ```tsx
139
- > { name: '取消审批', onClick: () => { ElMessageBox.confirm(...).then(...) } }
140
- > ```
141
-
142
- ## 权限控制
143
-
144
- ```tsx
145
- const buttons = [
146
- {
147
- name: '编辑',
148
- prop: 'edit',
149
- permission: 'order:edit', // 需要 order:edit 权限才显示
150
- onClick: () => {},
151
- },
152
- ]
153
- ```
154
-
155
- ## 动态禁用
156
-
157
- ```tsx
158
- const buttons = [
159
- {
160
- name: '提交',
161
- prop: 'submit',
162
- disabled: () => formData.status !== 'draft',
163
- onClick: () => {},
164
- },
165
- ]
166
- ```
167
-
168
- ## 动态显示
169
-
170
- ```tsx
171
- const buttons = [
172
- {
173
- name: '审核',
174
- prop: 'audit',
175
- show: () => formData.status === 'pending',
176
- onClick: () => {},
177
- },
178
- ]
179
- ```
1
+ # EpButtons 按钮组
2
+
3
+ 按钮组组件,支持权限控制、确认弹窗等功能。
4
+
5
+ ## 基本用法
6
+
7
+ ```vue
8
+ <template>
9
+ <EpButtons :list="buttons" />
10
+ </template>
11
+
12
+ <script setup>
13
+ const buttons = [
14
+ {
15
+ name: '新增',
16
+ prop: 'add',
17
+ onClick: () => {
18
+ // 新增逻辑
19
+ },
20
+ },
21
+ {
22
+ name: '删除',
23
+ prop: 'delete',
24
+ onClick: () => {
25
+ // 删除逻辑
26
+ },
27
+ },
28
+ ]
29
+ </script>
30
+ ```
31
+
32
+ ## 在 Form 中使用
33
+
34
+ ```tsx
35
+ const formItemList = ref<FormProps['formItemList']>([
36
+ {
37
+ col: 24,
38
+ type: 'EpButtons',
39
+ props: {
40
+ list: [
41
+ {
42
+ name: '提交审批',
43
+ type: 'primary',
44
+ onClick: () => {
45
+ // 提交审批逻辑
46
+ },
47
+ },
48
+ {
49
+ name: '取消审批',
50
+ onClick: () => {
51
+ // 取消审批逻辑
52
+ },
53
+ },
54
+ {
55
+ name: '作废',
56
+ onClick: () => {
57
+ // 作废逻辑
58
+ },
59
+ },
60
+ ],
61
+ },
62
+ },
63
+ ])
64
+ ```
65
+
66
+ ## Props
67
+
68
+ | 属性 | 说明 | 类型 | 默认值 |
69
+ |------|------|------|--------|
70
+ | list | 按钮列表 | `ButtonProps[]` | `[]` |
71
+ | size | 按钮尺寸 | `'large' \| 'default' \| 'small'` | `'small'` |
72
+ | type | 默认按钮类型 | `string` | `'default'` |
73
+ | disabled | 是否禁用(支持函数) | `boolean \| () => boolean` | `false` |
74
+
75
+ ## ButtonProps 配置
76
+
77
+ | 属性 | 说明 | 类型 | 默认值 |
78
+ |------|------|------|--------|
79
+ | name | 按钮文本 | `string` | - |
80
+ | prop | 唯一标识 | `string` | - |
81
+ | type | 按钮类型 | `'primary' \| 'success' \| 'warning' \| 'danger' \| 'info'` | - |
82
+ | plain | 朴素按钮 | `boolean` | `false` |
83
+ | disabled | 是否禁用 | `boolean \| () => boolean` | `false` |
84
+ | show | 是否显示(支持函数) | `boolean \| () => boolean` | `true` |
85
+ | hide | 是否隐藏(支持函数) | `boolean \| () => boolean` | `false` |
86
+ | permission | 权限标识 | `string` | - |
87
+ | confirm | 是否需要确认 | `boolean` | `false` |
88
+ | confirmText | 确认提示文本 | `string` | `'确定要${name}吗?'` |
89
+ | confirmBefore | 点击前前置校验 | `() => Promise<void>` | - |
90
+ | onClick | 点击回调 | `(e: MouseEvent \| TableScope) => void` | - |
91
+
92
+ ## 带确认弹窗
93
+
94
+ ```tsx
95
+ const buttons = [
96
+ {
97
+ name: '删除',
98
+ prop: 'delete',
99
+ confirm: true,
100
+ onClick: () => {
101
+ // 删除逻辑
102
+ },
103
+ },
104
+ ]
105
+ ```
106
+
107
+ ## 点击前前置校验
108
+
109
+ 使用 `confirmBefore` 可以在点击后、确认弹窗弹出前执行异步校验逻辑,Promise reject 则阻止后续操作(不弹确认框、不执行 `onClick`)。
110
+
111
+ ```tsx
112
+ const buttons = [
113
+ {
114
+ name: '提交',
115
+ prop: 'submit',
116
+ confirmBefore: async () => {
117
+ const valid = await validateForm()
118
+ if (!valid) {
119
+ return Promise.reject()
120
+ }
121
+ },
122
+ confirm: true,
123
+ onClick: () => {
124
+ // 提交逻辑
125
+ },
126
+ },
127
+ ]
128
+ ```
129
+
130
+ > **⚠️ 注意:需要确认弹窗时,必须使用 `confirm: true` 属性,禁止手动编写 `ElMessageBox.confirm`**
131
+ >
132
+ > **正确做法**:
133
+ > ```tsx
134
+ > { name: '取消审批', confirm: true, onClick: () => { ElMessage.success('成功') } }
135
+ > ```
136
+ >
137
+ > **错误做法**:
138
+ > ```tsx
139
+ > { name: '取消审批', onClick: () => { ElMessageBox.confirm(...).then(...) } }
140
+ > ```
141
+
142
+ ## 权限控制
143
+
144
+ ```tsx
145
+ const buttons = [
146
+ {
147
+ name: '编辑',
148
+ prop: 'edit',
149
+ permission: 'order:edit', // 需要 order:edit 权限才显示
150
+ onClick: () => {},
151
+ },
152
+ ]
153
+ ```
154
+
155
+ ## 动态禁用
156
+
157
+ ```tsx
158
+ const buttons = [
159
+ {
160
+ name: '提交',
161
+ prop: 'submit',
162
+ disabled: () => formData.status !== 'draft',
163
+ onClick: () => {},
164
+ },
165
+ ]
166
+ ```
167
+
168
+ ## 动态显示
169
+
170
+ ```tsx
171
+ const buttons = [
172
+ {
173
+ name: '审核',
174
+ prop: 'audit',
175
+ show: () => formData.status === 'pending',
176
+ onClick: () => {},
177
+ },
178
+ ]
179
+ ```
@@ -1,70 +1,70 @@
1
- # EpCustomColumn 自定义列配置
2
-
3
- 用于配置表格显示列的组件,支持拖拽排序和持久化。
4
-
5
- ## 基本用法
6
-
7
- ```vue
8
- <template>
9
- <EpCustomColumn
10
- ref="customColumn"
11
- module="orderList"
12
- @confirm="handleConfirm"
13
- />
14
- </template>
15
-
16
- <script setup>
17
- import { useTemplateRef } from 'vue'
18
-
19
- const customColumn = useTemplateRef('customColumn')
20
-
21
- // 打开配置弹窗
22
- const openCustomColumn = () => {
23
- customColumn.value?.open()
24
- }
25
-
26
- const handleConfirm = (columns) => {
27
- console.log('选中的列', columns)
28
- }
29
- </script>
30
- ```
31
-
32
- ## Props
33
-
34
- | 属性 | 说明 | 类型 | 默认值 |
35
- |------|------|------|--------|
36
- | module | 模块标识 | `string \| number` | - |
37
- | api | 获取列配置接口 | `string` \| `Function` | `/api-item/api/customizedColumns/find` |
38
- | saveApi | 保存列配置接口 | `string`\| `Function` | `/api-item/api/customizedColumns/save` |
39
- | showHandler | 显示拖拽手柄 | `boolean` | `true` |
40
-
41
- ## Events
42
-
43
- | 事件名 | 说明 | 回调参数 |
44
- |--------|------|----------|
45
- | confirm | 确认配置 | `(columns: TransferDataItem[])` |
46
- | loaded | 配置加载完成 | `(columns: TransferDataItem[])` |
47
-
48
- ## 配合 EpSearchListPage 使用
49
-
50
- ```vue
51
- <template>
52
- <EpSearchListPage
53
- :columns="columns"
54
- :custom-column-module="11"
55
- custom-column-api="/api/columns/find"
56
- custom-column-save-api="/api/columns/save"
57
- />
58
- </template>
59
- ```
60
-
61
- ## 配合 EpTable 使用
62
-
63
- ```vue
64
- <template>
65
- <EpTable
66
- :columns="columns"
67
- :custom-column-module="11"
68
- />
69
- </template>
70
- ```
1
+ # EpCustomColumn 自定义列配置
2
+
3
+ 用于配置表格显示列的组件,支持拖拽排序和持久化。
4
+
5
+ ## 基本用法
6
+
7
+ ```vue
8
+ <template>
9
+ <EpCustomColumn
10
+ ref="customColumn"
11
+ module="orderList"
12
+ @confirm="handleConfirm"
13
+ />
14
+ </template>
15
+
16
+ <script setup>
17
+ import { useTemplateRef } from 'vue'
18
+
19
+ const customColumn = useTemplateRef('customColumn')
20
+
21
+ // 打开配置弹窗
22
+ const openCustomColumn = () => {
23
+ customColumn.value?.open()
24
+ }
25
+
26
+ const handleConfirm = (columns) => {
27
+ console.log('选中的列', columns)
28
+ }
29
+ </script>
30
+ ```
31
+
32
+ ## Props
33
+
34
+ | 属性 | 说明 | 类型 | 默认值 |
35
+ |------|------|------|--------|
36
+ | module | 模块标识 | `string \| number` | - |
37
+ | api | 获取列配置接口 | `string` \| `Function` | `/api-item/api/customizedColumns/find` |
38
+ | saveApi | 保存列配置接口 | `string`\| `Function` | `/api-item/api/customizedColumns/save` |
39
+ | showHandler | 显示拖拽手柄 | `boolean` | `true` |
40
+
41
+ ## Events
42
+
43
+ | 事件名 | 说明 | 回调参数 |
44
+ |--------|------|----------|
45
+ | confirm | 确认配置 | `(columns: TransferDataItem[])` |
46
+ | loaded | 配置加载完成 | `(columns: TransferDataItem[])` |
47
+
48
+ ## 配合 EpSearchListPage 使用
49
+
50
+ ```vue
51
+ <template>
52
+ <EpSearchListPage
53
+ :columns="columns"
54
+ :custom-column-module="11"
55
+ custom-column-api="/api/columns/find"
56
+ custom-column-save-api="/api/columns/save"
57
+ />
58
+ </template>
59
+ ```
60
+
61
+ ## 配合 EpTable 使用
62
+
63
+ ```vue
64
+ <template>
65
+ <EpTable
66
+ :columns="columns"
67
+ :custom-column-module="11"
68
+ />
69
+ </template>
70
+ ```
@@ -1,61 +1,61 @@
1
- # EpDatePickerRange 日期范围选择
2
-
3
- 基于 el-date-picker 封装的日期范围选择组件,内置快捷选项。
4
-
5
- ## 基本用法
6
-
7
- ```vue
8
- <template>
9
- <EpDatePickerRange v-model="dateRange" />
10
- </template>
11
-
12
- <script setup>
13
- import { ref } from 'vue'
14
-
15
- const dateRange = ref([])
16
- </script>
17
- ```
18
-
19
- ## Props
20
-
21
- | 属性 | 说明 | 类型 | 默认值 |
22
- |------|------|------|--------|
23
- | v-model | 绑定值 ^el^ | `[Date, Date] \| [number, number]` | - |
24
- | type | 类型 ^el^ | `string` | `'daterange'` |
25
- | valueFormat | 值格式 ^el^ | `string` | `'x'` (时间戳) |
26
- | rangeSeparator | 分隔符 ^el^ | `string` | `'~'` |
27
- | startPlaceholder | 开始占位文本 ^el^ | `string` | '开始时间' |
28
- | endPlaceholder | 结束占位文本 ^el^ | `string` | '结束时间' |
29
- | size | 尺寸 ^el^ | `'large' \| 'default' \| 'small'` | `'default'` |
30
- | shortcuts | 快捷选项 ^el^ | `array` | 最近一周/一月/三月 |
31
-
32
- > ^el^ 表示继承自 [el-date-picker](https://element-plus.org/zh-CN/component/date-picker.html) 的属性
33
-
34
- ## 默认快捷选项
35
-
36
- - 最近一周
37
- - 最近一月
38
- - 最近三月
39
-
40
- ## 在 Form 中使用
41
-
42
- ```tsx
43
- const formItemList = [
44
- {
45
- prop: 'orderDate',
46
- label: '日期范围',
47
- type: 'EpDatePickerRange',
48
- props: {
49
- start: formData.orderDateStart,
50
- end: formData.orderDateEnd,
51
- },
52
- 'onUpdate:start': (val) => {
53
- formData.orderDateStart = val
54
- },
55
- 'onUpdate:end': (val) => {
56
- formData.orderDateEnd = val
57
- },
58
- }
59
- ]
60
- ```
61
-
1
+ # EpDatePickerRange 日期范围选择
2
+
3
+ 基于 el-date-picker 封装的日期范围选择组件,内置快捷选项。
4
+
5
+ ## 基本用法
6
+
7
+ ```vue
8
+ <template>
9
+ <EpDatePickerRange v-model="dateRange" />
10
+ </template>
11
+
12
+ <script setup>
13
+ import { ref } from 'vue'
14
+
15
+ const dateRange = ref([])
16
+ </script>
17
+ ```
18
+
19
+ ## Props
20
+
21
+ | 属性 | 说明 | 类型 | 默认值 |
22
+ |------|------|------|--------|
23
+ | v-model | 绑定值 ^el^ | `[Date, Date] \| [number, number]` | - |
24
+ | type | 类型 ^el^ | `string` | `'daterange'` |
25
+ | valueFormat | 值格式 ^el^ | `string` | `'x'` (时间戳) |
26
+ | rangeSeparator | 分隔符 ^el^ | `string` | `'~'` |
27
+ | startPlaceholder | 开始占位文本 ^el^ | `string` | '开始时间' |
28
+ | endPlaceholder | 结束占位文本 ^el^ | `string` | '结束时间' |
29
+ | size | 尺寸 ^el^ | `'large' \| 'default' \| 'small'` | `'default'` |
30
+ | shortcuts | 快捷选项 ^el^ | `array` | 最近一周/一月/三月 |
31
+
32
+ > ^el^ 表示继承自 [el-date-picker](https://element-plus.org/zh-CN/component/date-picker.html) 的属性
33
+
34
+ ## 默认快捷选项
35
+
36
+ - 最近一周
37
+ - 最近一月
38
+ - 最近三月
39
+
40
+ ## 在 Form 中使用
41
+
42
+ ```tsx
43
+ const formItemList = [
44
+ {
45
+ prop: 'orderDate',
46
+ label: '日期范围',
47
+ type: 'EpDatePickerRange',
48
+ props: {
49
+ start: formData.orderDateStart,
50
+ end: formData.orderDateEnd,
51
+ },
52
+ 'onUpdate:start': (val) => {
53
+ formData.orderDateStart = val
54
+ },
55
+ 'onUpdate:end': (val) => {
56
+ formData.orderDateEnd = val
57
+ },
58
+ }
59
+ ]
60
+ ```
61
+