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,151 +1,151 @@
1
- # 路由配置
2
-
3
- 本项目使用自动导入路由模块的方式,无需手动在路由文件中引入。
4
-
5
- ## 路由文件位置
6
-
7
- 所有路由配置文件位于 `src/router/modules/` 目录下,每个 `.ts` 文件会被自动导入。
8
-
9
- ::: warning 排除文件
10
- `remaining.ts` 文件不会被自动导入,用于配置不参与菜单的路由。
11
- :::
12
-
13
- ## 路由配置结构
14
-
15
- 创建文件 `src/router/modules/{模块名}.ts`,参考以下结构:
16
-
17
- ```typescript
18
- export default {
19
- path: '/demand', // 路由路径
20
- redirect: '/demand/list', // 默认重定向
21
- meta: {
22
- icon: 'ep/document', // 菜单图标
23
- title: '需求管理', // 菜单标题
24
- rank: 1 // 菜单排序权重
25
- },
26
- children: [
27
- {
28
- path: '/demand/list', // 列表页路径
29
- name: 'DemandList', // 路由名称(必须唯一)
30
- component: () => import('@/views/demand-list.vue'),
31
- meta: {
32
- title: '需求列表',
33
- keepAlive: true // 开启页面缓存
34
- }
35
- },
36
- {
37
- path: '/demand/detail', // 详情页路径
38
- name: 'DemandDetail',
39
- component: () => import('@/views/demand-detail.vue'),
40
- meta: {
41
- title: '需求详情'
42
- }
43
- }
44
- ]
45
- } satisfies RouteConfigsTable;
46
- ```
47
-
48
- ## Meta 配置说明
49
-
50
- ### 一级路由 Meta
51
-
52
- | 属性 | 类型 | 说明 |
53
- |-----|------|-----|
54
- | `title` | `string` | 菜单标题,必填 |
55
- | `icon` | `string` | 菜单图标,使用 Element Plus 图标,如 `ep/document` |
56
- | `rank` | `number` | 菜单排序权重,数字越小越靠前 |
57
- | `showLink` | `boolean` | 是否在菜单中显示,默认 `true` |
58
-
59
- ### 子路由 Meta
60
-
61
- | 属性 | 类型 | 默认值 | 说明 |
62
- |-----|------|--------|-----|
63
- | `title` | `string` | - | 页面标题,必填 |
64
- | `keepAlive` | `boolean` | `false` | 是否开启页面缓存 |
65
- | `showLink` | `boolean` | `true` | 是否在菜单中显示 |
66
- | `auths` | `string[]` | - | 权限标识,用于按钮级权限控制 |
67
-
68
- ## 常用配置示例
69
-
70
- ### 列表页路由
71
-
72
- ```typescript
73
- {
74
- path: '/user/list',
75
- name: 'UserList',
76
- component: () => import('@/views/user/list.vue'),
77
- meta: {
78
- title: '用户列表',
79
- keepAlive: true // 列表页通常需要缓存
80
- }
81
- }
82
- ```
83
-
84
- ### 详情页路由
85
-
86
- ```typescript
87
- {
88
- path: '/user/detail',
89
- name: 'UserDetail',
90
- component: () => import('@/views/user/detail.vue'),
91
- meta: {
92
- title: '用户详情'
93
- // 详情页通常不需要缓存
94
- }
95
- }
96
- ```
97
-
98
- ### 隐藏菜单项
99
-
100
- ```typescript
101
- {
102
- path: '/system/config',
103
- name: 'SystemConfig',
104
- component: () => import('@/views/system/config.vue'),
105
- meta: {
106
- title: '系统配置',
107
- showLink: false // 不在菜单中显示,但可以访问
108
- }
109
- }
110
- ```
111
-
112
- ### 嵌套路由
113
-
114
- ```typescript
115
- export default {
116
- path: '/system',
117
- meta: {
118
- icon: 'ep/setting',
119
- title: '系统管理',
120
- rank: 10
121
- },
122
- children: [
123
- {
124
- path: '/system/user',
125
- name: 'SystemUser',
126
- component: () => import('@/views/system/user.vue'),
127
- meta: { title: '用户管理' }
128
- },
129
- {
130
- path: '/system/role',
131
- name: 'SystemRole',
132
- component: () => import('@/views/system/role.vue'),
133
- meta: { title: '角色管理' }
134
- }
135
- ]
136
- } satisfies RouteConfigsTable;
137
- ```
138
-
139
- ## 注意事项
140
-
141
- ::: warning 路由名称唯一性
142
- 每个路由的 `name` 属性必须全局唯一,不能重复。
143
- :::
144
-
145
- ::: tip 组件路径
146
- `component` 使用动态导入 `() => import('@/views/xxx.vue')`,路径必须以 `@/views/` 开头。
147
- :::
148
-
149
- ::: warning 自动导入原理
150
- 路由使用 `import.meta.glob` 自动导入,文件创建后无需手动引入,项目会自动识别。
151
- :::
1
+ # 路由配置
2
+
3
+ 本项目使用自动导入路由模块的方式,无需手动在路由文件中引入。
4
+
5
+ ## 路由文件位置
6
+
7
+ 所有路由配置文件位于 `src/router/modules/` 目录下,每个 `.ts` 文件会被自动导入。
8
+
9
+ ::: warning 排除文件
10
+ `remaining.ts` 文件不会被自动导入,用于配置不参与菜单的路由。
11
+ :::
12
+
13
+ ## 路由配置结构
14
+
15
+ 创建文件 `src/router/modules/{模块名}.ts`,参考以下结构:
16
+
17
+ ```typescript
18
+ export default {
19
+ path: '/demand', // 路由路径
20
+ redirect: '/demand/list', // 默认重定向
21
+ meta: {
22
+ icon: 'ep/document', // 菜单图标
23
+ title: '需求管理', // 菜单标题
24
+ rank: 1 // 菜单排序权重
25
+ },
26
+ children: [
27
+ {
28
+ path: '/demand/list', // 列表页路径
29
+ name: 'DemandList', // 路由名称(必须唯一)
30
+ component: () => import('@/views/demand-list.vue'),
31
+ meta: {
32
+ title: '需求列表',
33
+ keepAlive: true // 开启页面缓存
34
+ }
35
+ },
36
+ {
37
+ path: '/demand/detail', // 详情页路径
38
+ name: 'DemandDetail',
39
+ component: () => import('@/views/demand-detail.vue'),
40
+ meta: {
41
+ title: '需求详情'
42
+ }
43
+ }
44
+ ]
45
+ } satisfies RouteConfigsTable;
46
+ ```
47
+
48
+ ## Meta 配置说明
49
+
50
+ ### 一级路由 Meta
51
+
52
+ | 属性 | 类型 | 说明 |
53
+ |-----|------|-----|
54
+ | `title` | `string` | 菜单标题,必填 |
55
+ | `icon` | `string` | 菜单图标,使用 Element Plus 图标,如 `ep/document` |
56
+ | `rank` | `number` | 菜单排序权重,数字越小越靠前 |
57
+ | `showLink` | `boolean` | 是否在菜单中显示,默认 `true` |
58
+
59
+ ### 子路由 Meta
60
+
61
+ | 属性 | 类型 | 默认值 | 说明 |
62
+ |-----|------|--------|-----|
63
+ | `title` | `string` | - | 页面标题,必填 |
64
+ | `keepAlive` | `boolean` | `false` | 是否开启页面缓存 |
65
+ | `showLink` | `boolean` | `true` | 是否在菜单中显示 |
66
+ | `auths` | `string[]` | - | 权限标识,用于按钮级权限控制 |
67
+
68
+ ## 常用配置示例
69
+
70
+ ### 列表页路由
71
+
72
+ ```typescript
73
+ {
74
+ path: '/user/list',
75
+ name: 'UserList',
76
+ component: () => import('@/views/user/list.vue'),
77
+ meta: {
78
+ title: '用户列表',
79
+ keepAlive: true // 列表页通常需要缓存
80
+ }
81
+ }
82
+ ```
83
+
84
+ ### 详情页路由
85
+
86
+ ```typescript
87
+ {
88
+ path: '/user/detail',
89
+ name: 'UserDetail',
90
+ component: () => import('@/views/user/detail.vue'),
91
+ meta: {
92
+ title: '用户详情'
93
+ // 详情页通常不需要缓存
94
+ }
95
+ }
96
+ ```
97
+
98
+ ### 隐藏菜单项
99
+
100
+ ```typescript
101
+ {
102
+ path: '/system/config',
103
+ name: 'SystemConfig',
104
+ component: () => import('@/views/system/config.vue'),
105
+ meta: {
106
+ title: '系统配置',
107
+ showLink: false // 不在菜单中显示,但可以访问
108
+ }
109
+ }
110
+ ```
111
+
112
+ ### 嵌套路由
113
+
114
+ ```typescript
115
+ export default {
116
+ path: '/system',
117
+ meta: {
118
+ icon: 'ep/setting',
119
+ title: '系统管理',
120
+ rank: 10
121
+ },
122
+ children: [
123
+ {
124
+ path: '/system/user',
125
+ name: 'SystemUser',
126
+ component: () => import('@/views/system/user.vue'),
127
+ meta: { title: '用户管理' }
128
+ },
129
+ {
130
+ path: '/system/role',
131
+ name: 'SystemRole',
132
+ component: () => import('@/views/system/role.vue'),
133
+ meta: { title: '角色管理' }
134
+ }
135
+ ]
136
+ } satisfies RouteConfigsTable;
137
+ ```
138
+
139
+ ## 注意事项
140
+
141
+ ::: warning 路由名称唯一性
142
+ 每个路由的 `name` 属性必须全局唯一,不能重复。
143
+ :::
144
+
145
+ ::: tip 组件路径
146
+ `component` 使用动态导入 `() => import('@/views/xxx.vue')`,路径必须以 `@/views/` 开头。
147
+ :::
148
+
149
+ ::: warning 自动导入原理
150
+ 路由使用 `import.meta.glob` 自动导入,文件创建后无需手动引入,项目会自动识别。
151
+ :::
@@ -46,11 +46,15 @@ export declare const EpAttachment: {
46
46
  type: import("vue").PropType<any[]>;
47
47
  };
48
48
  }>> & Readonly<{
49
+ onCancel?: (() => any) | undefined;
50
+ onConfirm?: ((data: any[] | undefined) => any) | undefined;
49
51
  "onUpdate:modelValue"?: ((value: any[] | undefined) => any) | undefined;
50
52
  }>, {
51
53
  open: () => Promise<any>;
52
54
  }, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
53
- "update:modelValue": (value: any[] | undefined) => any;
55
+ cancel: () => void;
56
+ confirm: (data: any[] | undefined) => void;
57
+ "update:modelValue": (value: any[] | undefined) => void;
54
58
  }, import("vue").PublicProps, {
55
59
  formatColumns: Partial<import("element-plus").TableColumnCtx & {
56
60
  [key: string]: any;
@@ -124,6 +128,8 @@ export declare const EpAttachment: {
124
128
  type: import("vue").PropType<any[]>;
125
129
  };
126
130
  }>> & Readonly<{
131
+ onCancel?: (() => any) | undefined;
132
+ onConfirm?: ((data: any[] | undefined) => any) | undefined;
127
133
  "onUpdate:modelValue"?: ((value: any[] | undefined) => any) | undefined;
128
134
  }>, {
129
135
  open: () => Promise<any>;
@@ -184,11 +190,15 @@ export declare const EpAttachment: {
184
190
  type: import("vue").PropType<any[]>;
185
191
  };
186
192
  }>> & Readonly<{
193
+ onCancel?: (() => any) | undefined;
194
+ onConfirm?: ((data: any[] | undefined) => any) | undefined;
187
195
  "onUpdate:modelValue"?: ((value: any[] | undefined) => any) | undefined;
188
196
  }>, {
189
197
  open: () => Promise<any>;
190
198
  }, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
191
- "update:modelValue": (value: any[] | undefined) => any;
199
+ cancel: () => void;
200
+ confirm: (data: any[] | undefined) => void;
201
+ "update:modelValue": (value: any[] | undefined) => void;
192
202
  }, string, {
193
203
  formatColumns: Partial<import("element-plus").TableColumnCtx & {
194
204
  [key: string]: any;
@@ -1,6 +1,6 @@
1
1
  import _sfc_main from './src/attachment.vue2.mjs';
2
2
  import { withInstall } from '../../utils/with-install.mjs';
3
- export { attachmentProps } from './src/attachment.mjs';
3
+ export { attachmentEmits, attachmentProps } from './src/attachment.mjs';
4
4
 
5
5
  const EpAttachment = withInstall(_sfc_main);
6
6
 
@@ -1 +1 @@
1
- {"version":3,"file":"index.mjs","sources":["../../../../../packages/components/attachment/index.ts"],"sourcesContent":["import Attachment from './src/attachment.vue'\nimport { withInstall } from '@el-plus/utils/with-install'\n\nexport const EpAttachment = withInstall(Attachment)\nexport default EpAttachment\nexport * from './src/attachment'\n"],"names":["Attachment"],"mappings":";;;;AAGO,MAAM,YAAA,GAAe,YAAYA,SAAU;;;;"}
1
+ {"version":3,"file":"index.mjs","sources":["../../../../../packages/components/attachment/index.ts"],"sourcesContent":["import Attachment from './src/attachment.vue'\r\nimport { withInstall } from '@el-plus/utils/with-install'\r\n\r\nexport const EpAttachment = withInstall(Attachment)\r\nexport default EpAttachment\r\nexport * from './src/attachment'\r\n"],"names":["Attachment"],"mappings":";;;;AAGO,MAAM,YAAA,GAAe,YAAYA,SAAU;;;;"}
@@ -1,4 +1,5 @@
1
1
  import type { ExtractPublicPropTypes, PropType } from 'vue';
2
+ import type { TableProps } from 'el-plus/es/components/table';
2
3
  import type { PageMode } from 'el-plus/es/hooks/use-navigation';
3
4
  import type { Permission } from 'el-plus/es/directives/permission';
4
5
  export declare const attachmentProps: {
@@ -33,3 +34,8 @@ export declare const attachmentProps: {
33
34
  };
34
35
  };
35
36
  export type AttachmentProps = ExtractPublicPropTypes<typeof attachmentProps>;
37
+ export declare const attachmentEmits: {
38
+ confirm: (data: TableProps["data"]) => boolean;
39
+ cancel: () => boolean;
40
+ };
41
+ export type AttachmentEmits = typeof attachmentEmits;
@@ -38,6 +38,12 @@ const attachmentProps = {
38
38
  type: String
39
39
  }
40
40
  };
41
+ const attachmentEmits = {
42
+ // 确认
43
+ confirm: (data) => true,
44
+ // 取消
45
+ cancel: () => true
46
+ };
41
47
 
42
- export { attachmentProps };
48
+ export { attachmentEmits, attachmentProps };
43
49
  //# sourceMappingURL=attachment.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"attachment.mjs","sources":["../../../../../../packages/components/attachment/src/attachment.ts"],"sourcesContent":["import type { ExtractPublicPropTypes, PropType } from 'vue'\nimport { tableProps } from '@el-plus/components/table'\nimport type { PageMode } from '@el-plus/hooks/use-navigation'\nimport type {Permission} from '@el-plus/directives/permission'\nexport const attachmentProps = {\n // 格式化列\n formatColumns: {\n ...tableProps.formatColumns,\n },\n // 页面模式\n mode: {\n type: String as PropType<PageMode>,\n },\n // 展示模式\n openType: {\n type: String as PropType<'dialog' | 'normal'>,\n default: 'dialog',\n },\n // 是否需要类型\n isType: {\n type: Boolean,\n default: true,\n },\n // 是否需要备注\n isNote: {\n type: Boolean,\n default: false,\n },\n // 是否需要打开弹窗按钮\n isShowOpenDialogButton: {\n type: Boolean,\n default: false,\n },\n // 添加前校验\n beforeAdd: {\n type: Function as PropType<(fileItem: Record<string, any>) => boolean>,\n },\n // 权限\n permission: {\n type: String as PropType<Permission>,\n },\n\n} as const\nexport type AttachmentProps = ExtractPublicPropTypes<typeof attachmentProps>\n"],"names":[],"mappings":";;AAIO,MAAM,eAAA,GAAkB;AAAA;AAAA,EAE7B,aAAA,EAAe;AAAA,IACb,GAAG,UAAA,CAAW;AAAA,GAChB;AAAA;AAAA,EAEA,IAAA,EAAM;AAAA,IACJ,IAAA,EAAM;AAAA,GACR;AAAA;AAAA,EAEA,QAAA,EAAU;AAAA,IACR,IAAA,EAAM,MAAA;AAAA,IACN,OAAA,EAAS;AAAA,GACX;AAAA;AAAA,EAEA,MAAA,EAAQ;AAAA,IACN,IAAA,EAAM,OAAA;AAAA,IACN,OAAA,EAAS;AAAA,GACX;AAAA;AAAA,EAEA,MAAA,EAAQ;AAAA,IACN,IAAA,EAAM,OAAA;AAAA,IACN,OAAA,EAAS;AAAA,GACX;AAAA;AAAA,EAEA,sBAAA,EAAwB;AAAA,IACtB,IAAA,EAAM,OAAA;AAAA,IACN,OAAA,EAAS;AAAA,GACX;AAAA;AAAA,EAEA,SAAA,EAAW;AAAA,IACT,IAAA,EAAM;AAAA,GACR;AAAA;AAAA,EAEA,UAAA,EAAY;AAAA,IACV,IAAA,EAAM;AAAA;AAGV;;;;"}
1
+ {"version":3,"file":"attachment.mjs","sources":["../../../../../../packages/components/attachment/src/attachment.ts"],"sourcesContent":["import type { ExtractPublicPropTypes, PropType } from 'vue'\r\nimport { tableProps } from '@el-plus/components/table'\r\nimport type { TableProps } from '@el-plus/components/table'\r\nimport type { PageMode } from '@el-plus/hooks/use-navigation'\r\nimport type {Permission} from '@el-plus/directives/permission'\r\nexport const attachmentProps = {\r\n // 格式化列\r\n formatColumns: {\r\n ...tableProps.formatColumns,\r\n },\r\n // 页面模式\r\n mode: {\r\n type: String as PropType<PageMode>,\r\n },\r\n // 展示模式\r\n openType: {\r\n type: String as PropType<'dialog' | 'normal'>,\r\n default: 'dialog',\r\n },\r\n // 是否需要类型\r\n isType: {\r\n type: Boolean,\r\n default: true,\r\n },\r\n // 是否需要备注\r\n isNote: {\r\n type: Boolean,\r\n default: false,\r\n },\r\n // 是否需要打开弹窗按钮\r\n isShowOpenDialogButton: {\r\n type: Boolean,\r\n default: false,\r\n },\r\n // 添加前校验\r\n beforeAdd: {\r\n type: Function as PropType<(fileItem: Record<string, any>) => boolean>,\r\n },\r\n // 权限\r\n permission: {\r\n type: String as PropType<Permission>,\r\n },\r\n\r\n} as const\r\nexport type AttachmentProps = ExtractPublicPropTypes<typeof attachmentProps>\r\nexport const attachmentEmits = {\r\n // 确认\r\n confirm: (data: TableProps['data']) => true,\r\n // 取消\r\n cancel: () => true,\r\n}\r\nexport type AttachmentEmits = typeof attachmentEmits\r\n"],"names":[],"mappings":";;AAKO,MAAM,eAAA,GAAkB;AAAA;AAAA,EAE7B,aAAA,EAAe;AAAA,IACb,GAAG,UAAA,CAAW;AAAA,GAChB;AAAA;AAAA,EAEA,IAAA,EAAM;AAAA,IACJ,IAAA,EAAM;AAAA,GACR;AAAA;AAAA,EAEA,QAAA,EAAU;AAAA,IACR,IAAA,EAAM,MAAA;AAAA,IACN,OAAA,EAAS;AAAA,GACX;AAAA;AAAA,EAEA,MAAA,EAAQ;AAAA,IACN,IAAA,EAAM,OAAA;AAAA,IACN,OAAA,EAAS;AAAA,GACX;AAAA;AAAA,EAEA,MAAA,EAAQ;AAAA,IACN,IAAA,EAAM,OAAA;AAAA,IACN,OAAA,EAAS;AAAA,GACX;AAAA;AAAA,EAEA,sBAAA,EAAwB;AAAA,IACtB,IAAA,EAAM,OAAA;AAAA,IACN,OAAA,EAAS;AAAA,GACX;AAAA;AAAA,EAEA,SAAA,EAAW;AAAA,IACT,IAAA,EAAM;AAAA,GACR;AAAA;AAAA,EAEA,UAAA,EAAY;AAAA,IACV,IAAA,EAAM;AAAA;AAGV;AAEO,MAAM,eAAA,GAAkB;AAAA;AAAA,EAE7B,OAAA,EAAS,CAAC,IAAA,KAA6B,IAAA;AAAA;AAAA,EAEvC,QAAQ,MAAM;AAChB;;;;"}
@@ -34,7 +34,9 @@ declare const __VLS_export: import("vue").DefineComponent<import("vue").ExtractP
34
34
  }>, {
35
35
  open: () => Promise<any>;
36
36
  }, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
37
- "update:modelValue": (value: any[] | undefined) => any;
37
+ cancel: () => void;
38
+ confirm: (data: any[] | undefined) => void;
39
+ "update:modelValue": (value: any[] | undefined) => void;
38
40
  }, string, import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<{
39
41
  formatColumns: {
40
42
  readonly type: import("vue").PropType<import("el-plus/es/components/table").TableColumn[]>;
@@ -69,6 +71,8 @@ declare const __VLS_export: import("vue").DefineComponent<import("vue").ExtractP
69
71
  type: import("vue").PropType<any[]>;
70
72
  };
71
73
  }>> & Readonly<{
74
+ onCancel?: (() => any) | undefined;
75
+ onConfirm?: ((data: any[] | undefined) => any) | undefined;
72
76
  "onUpdate:modelValue"?: ((value: any[] | undefined) => any) | undefined;
73
77
  }>, {
74
78
  formatColumns: Partial<import("element-plus").TableColumnCtx & {
@@ -1,7 +1,7 @@
1
1
  import { defineComponent, mergeModels, useModel, resolveComponent, createElementBlock, openBlock, Fragment, withDirectives, createCommentVNode, createVNode, createBlock, unref, normalizeClass, withCtx, createTextVNode, toDisplayString, createElementVNode, mergeProps } from 'vue';
2
2
  import { createNameSpace } from '../../../utils/bem.mjs';
3
3
  import { prepareStyles, prepareClassNames } from '../../../utils/props.mjs';
4
- import { attachmentProps } from './attachment.mjs';
4
+ import { attachmentEmits, attachmentProps } from './attachment.mjs';
5
5
  import { EpTable } from '../../table/index.mjs';
6
6
  import { useAttachment } from './use-attachment.mjs';
7
7
  import { useDialog } from '../../../hooks/dialog/use-dialog.mjs';
@@ -19,11 +19,12 @@ var _sfc_main = /* @__PURE__ */ defineComponent({
19
19
  "modelValue": {},
20
20
  "modelModifiers": {}
21
21
  }),
22
- emits: ["update:modelValue"],
23
- setup(__props, { expose: __expose }) {
22
+ emits: /* @__PURE__ */ mergeModels(attachmentEmits, ["update:modelValue"]),
23
+ setup(__props, { expose: __expose, emit: __emit }) {
24
24
  const { t } = useLocale();
25
25
  const bem = createNameSpace("attachment");
26
26
  const props = __props;
27
+ const emit = __emit;
27
28
  const modelValue = useModel(__props, "modelValue");
28
29
  const {
29
30
  columns,
@@ -51,10 +52,12 @@ var _sfc_main = /* @__PURE__ */ defineComponent({
51
52
  ),
52
53
  templatePromiseClass: bem.e("promise"),
53
54
  onConfirm: async (resolve) => {
54
- onConfirm(resolve);
55
+ await onConfirm(resolve);
56
+ emit("confirm", modelValue.value);
55
57
  },
56
58
  onCancel: (resolve) => {
57
59
  onCancel(resolve);
60
+ emit("cancel");
58
61
  }
59
62
  });
60
63
  const open = AttachmentDialog.open;
@@ -1 +1 @@
1
- {"version":3,"file":"attachment.vue2.mjs","sources":["../../../../../../packages/components/attachment/src/attachment.vue"],"sourcesContent":["<template>\n <ElButton\n v-if=\"props.isShowOpenDialogButton\"\n type=\"primary\"\n plain\n size=\"small\"\n :class=\"bem.e('handler')\"\n @click=\"open\"\n v-permission=\"permission\"\n >\n {{ t('ep.attachment.manageAttachment') }}({{ modelValue?.length || 0 }})\n </ElButton>\n <AttachmentDialog>\n <div style=\"margin-bottom: 10px; text-align: right\">\n <EpButtons\n v-if=\"props.openType === 'dialog' && mode !== 'browse'\"\n type=\"primary\"\n :list=\"[\n {\n name: t('ep.attachment.addAttachment'),\n type: 'primary',\n onClick: addAttachment,\n },\n ]\"\n />\n </div>\n\n <EpTable\n ref=\"tableRef\"\n :class=\"`${bem.b()} ${prepareClassNames()}`\"\n :style=\"{\n ...prepareStyles(),\n }\"\n :columns=\"columns\"\n :action-buttons=\"actionButtons\"\n actionColWidth=\"110\"\n :data=\"modelValue\"\n v-bind=\"props\"\n >\n </EpTable>\n </AttachmentDialog>\n</template>\n<script setup lang=\"ts\">\nimport { createNameSpace } from '@el-plus/utils/bem'\nimport { prepareClassNames, prepareStyles } from '@el-plus/utils/props'\nimport { attachmentProps } from './attachment'\nimport EpTable from '@el-plus/components/table'\nimport { useAttachment } from './use-attachment'\nimport type { TableProps } from '@el-plus/components/table'\nimport { useDialog } from '@el-plus/hooks/dialog/use-dialog'\nimport { useLocale } from '@el-plus/hooks/use-locale'\nimport { ElButton } from 'element-plus'\nimport { vPermission } from '@el-plus/directives'\n\nconst { t } = useLocale()\ndefineOptions({\n name: 'EpAttachment',\n inheritAttrs: false,\n})\nconst bem = createNameSpace('attachment')\nconst props = defineProps(attachmentProps)\nconst modelValue = defineModel<TableProps['data']>()\nconst {\n columns,\n actionButtons,\n addAttachment,\n isNormalOpen,\n permission,\n onConfirm,\n onCancel,\n mode,\n} = useAttachment(props, {\n data: modelValue,\n})\nconst AttachmentDialog = useDialog({\n width: isNormalOpen ? '' : 850,\n center: true,\n title: isNormalOpen ? '' : t('ep.attachment.manageAttachment'),\n modal: !isNormalOpen,\n showClose: !isNormalOpen,\n showFooter: !isNormalOpen,\n transition: isNormalOpen ? '' : 'dialog-fade',\n modalClass: bem.em(\n 'dialog',\n props.openType === 'normal' ? props.openType : '',\n ),\n templatePromiseClass: bem.e('promise'),\n onConfirm: async (resolve) => {\n onConfirm(resolve)\n },\n onCancel: (resolve) => {\n onCancel(resolve)\n },\n})\nconst open = AttachmentDialog.open\nif (isNormalOpen) {\n open()\n}\ndefineExpose({\n open,\n})\n</script>\n"],"names":["_useModel","_createBlock","_unref","_normalizeClass","_createTextVNode","_toDisplayString","_createVNode","_createElementVNode","_mergeProps"],"mappings":"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"}
1
+ {"version":3,"file":"attachment.vue2.mjs","sources":["../../../../../../packages/components/attachment/src/attachment.vue"],"sourcesContent":["<template>\r\n <ElButton\r\n v-if=\"props.isShowOpenDialogButton\"\r\n type=\"primary\"\r\n plain\r\n size=\"small\"\r\n :class=\"bem.e('handler')\"\r\n @click=\"open\"\r\n v-permission=\"permission\"\r\n >\r\n {{ t('ep.attachment.manageAttachment') }}({{ modelValue?.length || 0 }})\r\n </ElButton>\r\n <AttachmentDialog>\r\n <div style=\"margin-bottom: 10px; text-align: right\">\r\n <EpButtons\r\n v-if=\"props.openType === 'dialog' && mode !== 'browse'\"\r\n type=\"primary\"\r\n :list=\"[\r\n {\r\n name: t('ep.attachment.addAttachment'),\r\n type: 'primary',\r\n onClick: addAttachment,\r\n },\r\n ]\"\r\n />\r\n </div>\r\n\r\n <EpTable\r\n ref=\"tableRef\"\r\n :class=\"`${bem.b()} ${prepareClassNames()}`\"\r\n :style=\"{\r\n ...prepareStyles(),\r\n }\"\r\n :columns=\"columns\"\r\n :action-buttons=\"actionButtons\"\r\n actionColWidth=\"110\"\r\n :data=\"modelValue\"\r\n v-bind=\"props\"\r\n >\r\n </EpTable>\r\n </AttachmentDialog>\r\n</template>\r\n<script setup lang=\"ts\">\r\nimport { createNameSpace } from '@el-plus/utils/bem'\r\nimport { prepareClassNames, prepareStyles } from '@el-plus/utils/props'\r\nimport { attachmentProps, attachmentEmits } from './attachment'\r\nimport EpTable from '@el-plus/components/table'\r\nimport { useAttachment } from './use-attachment'\r\nimport type { TableProps } from '@el-plus/components/table'\r\nimport { useDialog } from '@el-plus/hooks/dialog/use-dialog'\r\nimport { useLocale } from '@el-plus/hooks/use-locale'\r\nimport { ElButton } from 'element-plus'\r\nimport { vPermission } from '@el-plus/directives'\r\n\r\nconst { t } = useLocale()\r\ndefineOptions({\r\n name: 'EpAttachment',\r\n inheritAttrs: false,\r\n})\r\nconst bem = createNameSpace('attachment')\r\nconst props = defineProps(attachmentProps)\r\nconst emit = defineEmits(attachmentEmits)\r\nconst modelValue = defineModel<TableProps['data']>()\r\nconst {\r\n columns,\r\n actionButtons,\r\n addAttachment,\r\n isNormalOpen,\r\n permission,\r\n onConfirm,\r\n onCancel,\r\n mode,\r\n} = useAttachment(props, {\r\n data: modelValue,\r\n})\r\nconst AttachmentDialog = useDialog({\r\n width: isNormalOpen ? '' : 850,\r\n center: true,\r\n title: isNormalOpen ? '' : t('ep.attachment.manageAttachment'),\r\n modal: !isNormalOpen,\r\n showClose: !isNormalOpen,\r\n showFooter: !isNormalOpen,\r\n transition: isNormalOpen ? '' : 'dialog-fade',\r\n modalClass: bem.em(\r\n 'dialog',\r\n props.openType === 'normal' ? props.openType : '',\r\n ),\r\n templatePromiseClass: bem.e('promise'),\r\n onConfirm: async (resolve) => {\r\n await onConfirm(resolve)\r\n emit('confirm', modelValue.value)\r\n },\r\n onCancel: (resolve) => {\r\n onCancel(resolve)\r\n emit('cancel')\r\n },\r\n})\r\nconst open = AttachmentDialog.open\r\nif (isNormalOpen) {\r\n open()\r\n}\r\ndefineExpose({\r\n open,\r\n})\r\n</script>\r\n"],"names":["_useModel","_createBlock","_unref","_normalizeClass","_createTextVNode","_toDisplayString","_createVNode","_createElementVNode","_mergeProps"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"use-attachment.mjs","sources":["../../../../../../packages/components/attachment/src/use-attachment.ts"],"sourcesContent":["import { ref, computed, useTemplateRef } from 'vue'\nimport { useNavigation } from '@el-plus/hooks/use-navigation'\nimport { useLocale } from '@el-plus/hooks/use-locale'\nimport { downloadFile, previewFile, importFile } from '@el-plus/utils/file'\nimport { Cookies } from '@el-plus/utils/cookie'\nimport type { TableInstance } from '@el-plus/components/table'\n\nexport const useAttachment = (props, { data }) => {\n const { mode: defaultMode } = useNavigation()\n const { t } = useLocale()\n const mode = computed(() => {\n return props.mode || defaultMode.value\n })\n const tableRef = useTemplateRef<TableInstance>('tableRef')\n const isNormalOpen = props.openType === 'normal'\n const isDialogOpen = props.openType === 'dialog'\n\n // 待确认的附件列表\n let toBeConfirmData: Record<string, any>[] = []\n // 待删除的附件列表\n let toBeDeleteData: {\n [key: number]: Record<string, any> // key要存储原来索引以便保留原顺序\n } = {}\n const actionButtons = ref<any>([\n {\n name: t('ep.attachment.download'),\n onClick({ row }) {\n downloadFile({\n src: row.filePath,\n fileName: row.originalFilename || row.originalFileName,\n })\n },\n },\n {\n name: t('ep.attachment.delete'),\n disabled: () => {\n return mode.value === 'browse'\n },\n onClick: ({ $index, row }) => {\n if (isDialogOpen) {\n // 待删除的附件列表\n toBeDeleteData[$index] = row\n }\n data.value.splice($index, 1)\n },\n },\n ])\n const columns = ref([\n {\n label: t('ep.attachment.attachmentType'),\n prop: 'type',\n type: 'EpSelect',\n required: true,\n show: () => props.isType,\n props: {\n desc: ({ row }) => {\n return row.typeDesc\n },\n },\n },\n {\n label: t('ep.attachment.fileName'),\n prop: 'originalFilename',\n type: 'EpLink',\n onClick({ row }) {\n previewFile(row.filePath)\n },\n },\n {\n label: t('ep.attachment.creator'),\n prop: 'createBy',\n },\n {\n label: t('ep.attachment.createTime'),\n prop: 'createTime',\n },\n {\n label: t('ep.attachment.description'),\n prop: 'note',\n type: 'EpInput',\n show: () => props.isNote,\n },\n ])\n const addAttachment = async () => {\n toBeConfirmData = []\n const fileData = await importFile({\n api: 'api-f/fast/files/save',\n extraData: {\n createBy: Cookies.get('accountName') || '',\n },\n })\n fileData.fileId = fileData.id\n delete fileData.id\n if (isDialogOpen) {\n // 待确认的附件列表\n toBeConfirmData.push(fileData)\n }\n if (props.beforeAdd) {\n await props.beforeAdd?.(fileData)\n }\n data.value.push(fileData)\n }\n // 确认\n const onConfirm = async (resolve) => {\n await tableRef.value?.validate()\n resolve(data.value)\n toBeConfirmData = []\n toBeDeleteData = {}\n }\n // 取消\n const onCancel = (resolve) => {\n if (toBeConfirmData.length) {\n // 找到待确认的附件\n const index = data.value.findIndex((item) => {\n return item.fileId === toBeConfirmData[0].fileId\n })\n if (index !== -1) {\n // 删除待确认的附件\n data.value.splice(index, 1)\n }\n // 清空待确认的附件列表\n toBeConfirmData = []\n }\n if (Object.keys(toBeDeleteData).length) {\n // 找到待删除的附件在原位置插入\n Object.keys(toBeDeleteData).forEach((oldIndex) => {\n data.value.splice(Number(oldIndex), 0, toBeDeleteData[oldIndex])\n })\n // 清空待删除的附件列表\n toBeDeleteData = {}\n }\n resolve()\n }\n const permission = computed(() => {\n const arr = props.permission?.split(':') || []\n return {\n arg: arr[0],\n value: arr[1]\n }\n })\n return {\n columns,\n actionButtons,\n addAttachment,\n isNormalOpen,\n isDialogOpen,\n onConfirm,\n onCancel,\n mode,\n permission\n }\n}\n"],"names":[],"mappings":";;;;;;AAOO,MAAM,aAAA,GAAgB,CAAC,KAAA,EAAO,EAAE,MAAK,KAAM;AAChD,EAAA,MAAM,EAAE,IAAA,EAAM,WAAA,EAAY,GAAI,aAAA,EAAc;AAC5C,EAAA,MAAM,EAAE,CAAA,EAAE,GAAI,SAAA,EAAU;AACxB,EAAA,MAAM,IAAA,GAAO,SAAS,MAAM;AAC1B,IAAA,OAAO,KAAA,CAAM,QAAQ,WAAA,CAAY,KAAA;AAAA,EACnC,CAAC,CAAA;AACD,EAAA,MAAM,QAAA,GAAW,eAA8B,UAAU,CAAA;AACzD,EAAA,MAAM,YAAA,GAAe,MAAM,QAAA,KAAa,QAAA;AACxC,EAAA,MAAM,YAAA,GAAe,MAAM,QAAA,KAAa,QAAA;AAGxC,EAAA,IAAI,kBAAyC,EAAC;AAE9C,EAAA,IAAI,iBAEA,EAAC;AACL,EAAA,MAAM,gBAAgB,GAAA,CAAS;AAAA,IAC7B;AAAA,MACE,IAAA,EAAM,EAAE,wBAAwB,CAAA;AAAA,MAChC,OAAA,CAAQ,EAAE,GAAA,EAAI,EAAG;AACf,QAAA,YAAA,CAAa;AAAA,UACX,KAAK,GAAA,CAAI,QAAA;AAAA,UACT,QAAA,EAAU,GAAA,CAAI,gBAAA,IAAoB,GAAA,CAAI;AAAA,SACvC,CAAA;AAAA,MACH;AAAA,KACF;AAAA,IACA;AAAA,MACE,IAAA,EAAM,EAAE,sBAAsB,CAAA;AAAA,MAC9B,UAAU,MAAM;AACd,QAAA,OAAO,KAAK,KAAA,KAAU,QAAA;AAAA,MACxB,CAAA;AAAA,MACA,OAAA,EAAS,CAAC,EAAE,MAAA,EAAQ,KAAI,KAAM;AAC5B,QAAA,IAAI,YAAA,EAAc;AAEhB,UAAA,cAAA,CAAe,MAAM,CAAA,GAAI,GAAA;AAAA,QAC3B;AACA,QAAA,IAAA,CAAK,KAAA,CAAM,MAAA,CAAO,MAAA,EAAQ,CAAC,CAAA;AAAA,MAC7B;AAAA;AACF,GACD,CAAA;AACD,EAAA,MAAM,UAAU,GAAA,CAAI;AAAA,IAClB;AAAA,MACE,KAAA,EAAO,EAAE,8BAA8B,CAAA;AAAA,MACvC,IAAA,EAAM,MAAA;AAAA,MACN,IAAA,EAAM,UAAA;AAAA,MACN,QAAA,EAAU,IAAA;AAAA,MACV,IAAA,EAAM,MAAM,KAAA,CAAM,MAAA;AAAA,MAClB,KAAA,EAAO;AAAA,QACL,IAAA,EAAM,CAAC,EAAE,GAAA,EAAI,KAAM;AACjB,UAAA,OAAO,GAAA,CAAI,QAAA;AAAA,QACb;AAAA;AACF,KACF;AAAA,IACA;AAAA,MACE,KAAA,EAAO,EAAE,wBAAwB,CAAA;AAAA,MACjC,IAAA,EAAM,kBAAA;AAAA,MACN,IAAA,EAAM,QAAA;AAAA,MACN,OAAA,CAAQ,EAAE,GAAA,EAAI,EAAG;AACf,QAAA,WAAA,CAAY,IAAI,QAAQ,CAAA;AAAA,MAC1B;AAAA,KACF;AAAA,IACA;AAAA,MACE,KAAA,EAAO,EAAE,uBAAuB,CAAA;AAAA,MAChC,IAAA,EAAM;AAAA,KACR;AAAA,IACA;AAAA,MACE,KAAA,EAAO,EAAE,0BAA0B,CAAA;AAAA,MACnC,IAAA,EAAM;AAAA,KACR;AAAA,IACA;AAAA,MACE,KAAA,EAAO,EAAE,2BAA2B,CAAA;AAAA,MACpC,IAAA,EAAM,MAAA;AAAA,MACN,IAAA,EAAM,SAAA;AAAA,MACN,IAAA,EAAM,MAAM,KAAA,CAAM;AAAA;AACpB,GACD,CAAA;AACD,EAAA,MAAM,gBAAgB,YAAY;AAChC,IAAA,eAAA,GAAkB,EAAC;AACnB,IAAA,MAAM,QAAA,GAAW,MAAM,UAAA,CAAW;AAAA,MAChC,GAAA,EAAK,uBAAA;AAAA,MACL,SAAA,EAAW;AAAA,QACT,QAAA,EAAU,OAAA,CAAQ,GAAA,CAAI,aAAa,CAAA,IAAK;AAAA;AAC1C,KACD,CAAA;AACD,IAAA,QAAA,CAAS,SAAS,QAAA,CAAS,EAAA;AAC3B,IAAA,OAAO,QAAA,CAAS,EAAA;AAChB,IAAA,IAAI,YAAA,EAAc;AAEhB,MAAA,eAAA,CAAgB,KAAK,QAAQ,CAAA;AAAA,IAC/B;AACA,IAAA,IAAI,MAAM,SAAA,EAAW;AACnB,MAAA,MAAM,KAAA,CAAM,YAAY,QAAQ,CAAA;AAAA,IAClC;AACA,IAAA,IAAA,CAAK,KAAA,CAAM,KAAK,QAAQ,CAAA;AAAA,EAC1B,CAAA;AAEA,EAAA,MAAM,SAAA,GAAY,OAAO,OAAA,KAAY;AACnC,IAAA,MAAM,QAAA,CAAS,OAAO,QAAA,EAAS;AAC/B,IAAA,OAAA,CAAQ,KAAK,KAAK,CAAA;AAClB,IAAA,eAAA,GAAkB,EAAC;AACnB,IAAA,cAAA,GAAiB,EAAC;AAAA,EACpB,CAAA;AAEA,EAAA,MAAM,QAAA,GAAW,CAAC,OAAA,KAAY;AAC5B,IAAA,IAAI,gBAAgB,MAAA,EAAQ;AAE1B,MAAA,MAAM,KAAA,GAAQ,IAAA,CAAK,KAAA,CAAM,SAAA,CAAU,CAAC,IAAA,KAAS;AAC3C,QAAA,OAAO,IAAA,CAAK,MAAA,KAAW,eAAA,CAAgB,CAAC,CAAA,CAAE,MAAA;AAAA,MAC5C,CAAC,CAAA;AACD,MAAA,IAAI,UAAU,EAAA,EAAI;AAEhB,QAAA,IAAA,CAAK,KAAA,CAAM,MAAA,CAAO,KAAA,EAAO,CAAC,CAAA;AAAA,MAC5B;AAEA,MAAA,eAAA,GAAkB,EAAC;AAAA,IACrB;AACA,IAAA,IAAI,MAAA,CAAO,IAAA,CAAK,cAAc,CAAA,CAAE,MAAA,EAAQ;AAEtC,MAAA,MAAA,CAAO,IAAA,CAAK,cAAc,CAAA,CAAE,OAAA,CAAQ,CAAC,QAAA,KAAa;AAChD,QAAA,IAAA,CAAK,KAAA,CAAM,OAAO,MAAA,CAAO,QAAQ,GAAG,CAAA,EAAG,cAAA,CAAe,QAAQ,CAAC,CAAA;AAAA,MACjE,CAAC,CAAA;AAED,MAAA,cAAA,GAAiB,EAAC;AAAA,IACpB;AACA,IAAA,OAAA,EAAQ;AAAA,EACV,CAAA;AACA,EAAA,MAAM,UAAA,GAAa,SAAS,MAAM;AAChC,IAAA,MAAM,MAAM,KAAA,CAAM,UAAA,EAAY,KAAA,CAAM,GAAG,KAAK,EAAC;AAC7C,IAAA,OAAO;AAAA,MACL,GAAA,EAAK,IAAI,CAAC,CAAA;AAAA,MACV,KAAA,EAAO,IAAI,CAAC;AAAA,KACd;AAAA,EACF,CAAC,CAAA;AACD,EAAA,OAAO;AAAA,IACL,OAAA;AAAA,IACA,aAAA;AAAA,IACA,aAAA;AAAA,IACA,YAAA;AAAA,IACA,YAAA;AAAA,IACA,SAAA;AAAA,IACA,QAAA;AAAA,IACA,IAAA;AAAA,IACA;AAAA,GACF;AACF;;;;"}
1
+ {"version":3,"file":"use-attachment.mjs","sources":["../../../../../../packages/components/attachment/src/use-attachment.ts"],"sourcesContent":["import { ref, computed, useTemplateRef } from 'vue'\r\nimport { useNavigation } from '@el-plus/hooks/use-navigation'\r\nimport { useLocale } from '@el-plus/hooks/use-locale'\r\nimport { downloadFile, previewFile, importFile } from '@el-plus/utils/file'\r\nimport { Cookies } from '@el-plus/utils/cookie'\r\nimport type { TableInstance } from '@el-plus/components/table'\r\n\r\nexport const useAttachment = (props, { data }) => {\r\n const { mode: defaultMode } = useNavigation()\r\n const { t } = useLocale()\r\n const mode = computed(() => {\r\n return props.mode || defaultMode.value\r\n })\r\n const tableRef = useTemplateRef<TableInstance>('tableRef')\r\n const isNormalOpen = props.openType === 'normal'\r\n const isDialogOpen = props.openType === 'dialog'\r\n\r\n // 待确认的附件列表\r\n let toBeConfirmData: Record<string, any>[] = []\r\n // 待删除的附件列表\r\n let toBeDeleteData: {\r\n [key: number]: Record<string, any> // key要存储原来索引以便保留原顺序\r\n } = {}\r\n const actionButtons = ref<any>([\r\n {\r\n name: t('ep.attachment.download'),\r\n onClick({ row }) {\r\n downloadFile({\r\n src: row.filePath,\r\n fileName: row.originalFilename || row.originalFileName,\r\n })\r\n },\r\n },\r\n {\r\n name: t('ep.attachment.delete'),\r\n disabled: () => {\r\n return mode.value === 'browse'\r\n },\r\n onClick: ({ $index, row }) => {\r\n if (isDialogOpen) {\r\n // 待删除的附件列表\r\n toBeDeleteData[$index] = row\r\n }\r\n data.value.splice($index, 1)\r\n },\r\n },\r\n ])\r\n const columns = ref([\r\n {\r\n label: t('ep.attachment.attachmentType'),\r\n prop: 'type',\r\n type: 'EpSelect',\r\n required: true,\r\n show: () => props.isType,\r\n props: {\r\n desc: ({ row }) => {\r\n return row.typeDesc\r\n },\r\n },\r\n },\r\n {\r\n label: t('ep.attachment.fileName'),\r\n prop: 'originalFilename',\r\n type: 'EpLink',\r\n onClick({ row }) {\r\n previewFile(row.filePath)\r\n },\r\n },\r\n {\r\n label: t('ep.attachment.creator'),\r\n prop: 'createBy',\r\n },\r\n {\r\n label: t('ep.attachment.createTime'),\r\n prop: 'createTime',\r\n },\r\n {\r\n label: t('ep.attachment.description'),\r\n prop: 'note',\r\n type: 'EpInput',\r\n show: () => props.isNote,\r\n },\r\n ])\r\n const addAttachment = async () => {\r\n toBeConfirmData = []\r\n const fileData = await importFile({\r\n api: 'api-f/fast/files/save',\r\n extraData: {\r\n createBy: Cookies.get('accountName') || '',\r\n },\r\n })\r\n fileData.fileId = fileData.id\r\n delete fileData.id\r\n if (isDialogOpen) {\r\n // 待确认的附件列表\r\n toBeConfirmData.push(fileData)\r\n }\r\n if (props.beforeAdd) {\r\n await props.beforeAdd?.(fileData)\r\n }\r\n data.value.push(fileData)\r\n }\r\n // 确认\r\n const onConfirm = async (resolve) => {\r\n await tableRef.value?.validate()\r\n resolve(data.value)\r\n toBeConfirmData = []\r\n toBeDeleteData = {}\r\n }\r\n // 取消\r\n const onCancel = (resolve) => {\r\n if (toBeConfirmData.length) {\r\n // 找到待确认的附件\r\n const index = data.value.findIndex((item) => {\r\n return item.fileId === toBeConfirmData[0].fileId\r\n })\r\n if (index !== -1) {\r\n // 删除待确认的附件\r\n data.value.splice(index, 1)\r\n }\r\n // 清空待确认的附件列表\r\n toBeConfirmData = []\r\n }\r\n if (Object.keys(toBeDeleteData).length) {\r\n // 找到待删除的附件在原位置插入\r\n Object.keys(toBeDeleteData).forEach((oldIndex) => {\r\n data.value.splice(Number(oldIndex), 0, toBeDeleteData[oldIndex])\r\n })\r\n // 清空待删除的附件列表\r\n toBeDeleteData = {}\r\n }\r\n resolve()\r\n }\r\n const permission = computed(() => {\r\n const arr = props.permission?.split(':') || []\r\n return {\r\n arg: arr[0],\r\n value: arr[1]\r\n }\r\n })\r\n return {\r\n columns,\r\n actionButtons,\r\n addAttachment,\r\n isNormalOpen,\r\n isDialogOpen,\r\n onConfirm,\r\n onCancel,\r\n mode,\r\n permission\r\n }\r\n}\r\n"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.mjs","sources":["../../../../../packages/components/buttons/index.ts"],"sourcesContent":["import Buttons from './src/buttons-vue'\nimport { withInstall } from '@el-plus/utils/with-install'\n\nexport const EpButtons = withInstall(Buttons)\nexport default EpButtons\nexport * from './src/buttons'\n"],"names":[],"mappings":";;;;AAGO,MAAM,SAAA,GAAY,YAAY,OAAO;;;;"}
1
+ {"version":3,"file":"index.mjs","sources":["../../../../../packages/components/buttons/index.ts"],"sourcesContent":["import Buttons from './src/buttons-vue'\r\nimport { withInstall } from '@el-plus/utils/with-install'\r\n\r\nexport const EpButtons = withInstall(Buttons)\r\nexport default EpButtons\r\nexport * from './src/buttons'\r\n"],"names":[],"mappings":";;;;AAGO,MAAM,SAAA,GAAY,YAAY,OAAO;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"buttons-vue.mjs","sources":["../../../../../../packages/components/buttons/src/buttons-vue.tsx"],"sourcesContent":["import { defineComponent, computed } from 'vue'\nimport { buttonsProps } from './buttons'\nimport { createNameSpace } from '@el-plus/utils/bem'\nimport {\n prepareProps,\n prepareEvents,\n prepareClassNames,\n prepareStyles,\n} from '@el-plus/utils/props'\nimport { vRepeatClick, vPermission } from '@el-plus/directives'\nimport { ElMessageBox } from 'element-plus'\nimport { useLocale } from '@el-plus/hooks/use-locale'\nconst bem = createNameSpace('button')\n\nexport default defineComponent({\n name: 'EpButtons',\n directives: {\n [vRepeatClick.name]: vRepeatClick,\n [vPermission.name]: vPermission,\n },\n inheritAttrs: false,\n props: buttonsProps,\n setup(props, { emit }) {\n const { t } = useLocale()\n const { list, ...buttonProps } = props\n const customList = computed(() => {\n return list.filter((button) => {\n if ('show' in button) {\n return typeof button.show === 'function'\n ? button.show(button)\n : button.show\n } else if ('hide' in button) {\n return typeof button.hide === 'function'\n ? !button.hide(button)\n : !button.hide\n }\n return true\n })\n })\n const clickFn = async (item) => {\n if (item.confirmBefore) {\n await item.confirmBefore()\n }\n if (item.confirm) {\n const confirmText =\n item.confirmText ||\n `${t('ep.buttons.secondConfirm')}${item.name}${t('ep.buttons.secondConfirmEnd')}?`\n await ElMessageBox.confirm(confirmText, t('ep.buttons.prompt'), {\n confirmButtonText: t('ep.buttons.confirm'),\n cancelButtonText: t('ep.buttons.cancel'),\n type: 'warning',\n })\n }\n item.onClick && item.onClick()\n }\n const getDisabled = (item) => {\n if (typeof item.disabled === 'function') {\n return item.disabled()\n }\n if (typeof props.disabled === 'function') {\n return props.disabled()\n }\n return props.disabled\n }\n\n return () => (\n <>\n {customList.value.map((item) => {\n const permissionArr = item.permission?.split(':') || []\n return (\n <el-button\n class={[bem.b(), prepareClassNames()]}\n style={prepareStyles()}\n key={item.prop || item.name}\n v-slots={{\n default: () => item.name,\n ...item.scopedSlots,\n }}\n {...{\n ...prepareProps(buttonProps),\n ...prepareProps(item, ['scopedSlots', 'name', 'onClick']),\n disabled: getDisabled(item),\n }}\n v-repeat-click={\n typeof item.onClick === 'function'\n ? {\n handler: () => clickFn(item),\n immediate: true,\n }\n : () => clickFn(item)\n }\n v-permission={{\n arg: permissionArr[0],\n value: permissionArr[1],\n }}\n ></el-button>\n )\n })}\n </>\n )\n },\n})\n"],"names":["bem","createNameSpace","name","directives","vRepeatClick","vPermission","inheritAttrs","props","buttonsProps","setup","emit","t","useLocale","list","buttonProps","customList","computed","filter","button","show","hide","clickFn","item","confirmBefore","confirm","confirmText","ElMessageBox","confirmButtonText","cancelButtonText","type","onClick","getDisabled","disabled","_createVNode","_Fragment","value","map","permissionArr","permission","split","_withDirectives","_resolveComponent","_mergeProps","b","prepareClassNames","prepareStyles","prop","prepareProps","default","scopedSlots","_resolveDirective","handler","immediate","arg"],"mappings":"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"}
1
+ {"version":3,"file":"buttons-vue.mjs","sources":["../../../../../../packages/components/buttons/src/buttons-vue.tsx"],"sourcesContent":["import { defineComponent, computed } from 'vue'\r\nimport { buttonsProps } from './buttons'\r\nimport { createNameSpace } from '@el-plus/utils/bem'\r\nimport {\r\n prepareProps,\r\n prepareEvents,\r\n prepareClassNames,\r\n prepareStyles,\r\n} from '@el-plus/utils/props'\r\nimport { vRepeatClick, vPermission } from '@el-plus/directives'\r\nimport { ElMessageBox } from 'element-plus'\r\nimport { useLocale } from '@el-plus/hooks/use-locale'\r\nconst bem = createNameSpace('button')\r\n\r\nexport default defineComponent({\r\n name: 'EpButtons',\r\n directives: {\r\n [vRepeatClick.name]: vRepeatClick,\r\n [vPermission.name]: vPermission,\r\n },\r\n inheritAttrs: false,\r\n props: buttonsProps,\r\n setup(props, { emit }) {\r\n const { t } = useLocale()\r\n const { list, ...buttonProps } = props\r\n const customList = computed(() => {\r\n return list.filter((button) => {\r\n if ('show' in button) {\r\n return typeof button.show === 'function'\r\n ? button.show(button)\r\n : button.show\r\n } else if ('hide' in button) {\r\n return typeof button.hide === 'function'\r\n ? !button.hide(button)\r\n : !button.hide\r\n }\r\n return true\r\n })\r\n })\r\n const clickFn = async (item) => {\r\n if (item.confirmBefore) {\r\n await item.confirmBefore()\r\n }\r\n if (item.confirm) {\r\n const confirmText =\r\n item.confirmText ||\r\n `${t('ep.buttons.secondConfirm')}${item.name}${t('ep.buttons.secondConfirmEnd')}?`\r\n await ElMessageBox.confirm(confirmText, t('ep.buttons.prompt'), {\r\n confirmButtonText: t('ep.buttons.confirm'),\r\n cancelButtonText: t('ep.buttons.cancel'),\r\n type: 'warning',\r\n })\r\n }\r\n item.onClick && item.onClick()\r\n }\r\n const getDisabled = (item) => {\r\n if (typeof item.disabled === 'function') {\r\n return item.disabled()\r\n }\r\n if (typeof props.disabled === 'function') {\r\n return props.disabled()\r\n }\r\n return props.disabled\r\n }\r\n\r\n return () => (\r\n <>\r\n {customList.value.map((item) => {\r\n const permissionArr = item.permission?.split(':') || []\r\n return (\r\n <el-button\r\n class={[bem.b(), prepareClassNames()]}\r\n style={prepareStyles()}\r\n key={item.prop || item.name}\r\n v-slots={{\r\n default: () => item.name,\r\n ...item.scopedSlots,\r\n }}\r\n {...{\r\n ...prepareProps(buttonProps),\r\n ...prepareProps(item, ['scopedSlots', 'name', 'onClick']),\r\n disabled: getDisabled(item),\r\n }}\r\n v-repeat-click={\r\n typeof item.onClick === 'function'\r\n ? {\r\n handler: () => clickFn(item),\r\n immediate: true,\r\n }\r\n : () => clickFn(item)\r\n }\r\n v-permission={{\r\n arg: permissionArr[0],\r\n value: permissionArr[1],\r\n }}\r\n ></el-button>\r\n )\r\n })}\r\n </>\r\n )\r\n },\r\n})\r\n"],"names":["bem","createNameSpace","name","directives","vRepeatClick","vPermission","inheritAttrs","props","buttonsProps","setup","emit","t","useLocale","list","buttonProps","customList","computed","filter","button","show","hide","clickFn","item","confirmBefore","confirm","confirmText","ElMessageBox","confirmButtonText","cancelButtonText","type","onClick","getDisabled","disabled","_createVNode","_Fragment","value","map","permissionArr","permission","split","_withDirectives","_resolveComponent","_mergeProps","b","prepareClassNames","prepareStyles","prop","prepareProps","default","scopedSlots","_resolveDirective","handler","immediate","arg"],"mappings":";;;;;;;;;AAYA,MAAMA,GAAAA,GAAMC,gBAAgB,QAAQ,CAAA;AAEpC,8CAA+B;AAAA,EAC7BC,IAAAA,EAAM,WAAA;AAAA,EACNC,UAAAA,EAAY;AAAA,IACV,CAACC,YAAAA,CAAaF,IAAI,GAAGE,YAAAA;AAAAA,IACrB,CAACC,UAAAA,CAAYH,IAAI,GAAGG;AAAAA,GACtB;AAAA,EACAC,YAAAA,EAAc,KAAA;AAAA,EACdC,KAAAA,EAAOC,YAAAA;AAAAA,EACPC,MAAMF,KAAAA,EAAO;AAAA,IAAEG;AAAAA,GAAK,EAAG;AACrB,IAAA,MAAM;AAAA,MAAEC;AAAAA,QAAMC,SAAAA,EAAU;AACxB,IAAA,MAAM;AAAA,MAAEC,IAAAA;AAAAA,MAAM,GAAGC;AAAAA,KAAY,GAAIP,KAAAA;AACjC,IAAA,MAAMQ,UAAAA,GAAaC,SAAS,MAAM;AAChC,MAAA,OAAOH,IAAAA,CAAKI,OAAQC,CAAAA,MAAAA,KAAW;AAC7B,QAAA,IAAI,UAAUA,MAAAA,EAAQ;AACpB,UAAA,OAAO,OAAOA,OAAOC,IAAAA,KAAS,UAAA,GAC1BD,OAAOC,IAAAA,CAAKD,MAAM,IAClBA,MAAAA,CAAOC,IAAAA;AAAAA,QACb,CAAA,MAAA,IAAW,UAAUD,MAAAA,EAAQ;AAC3B,UAAA,OAAO,OAAOA,MAAAA,CAAOE,IAAAA,KAAS,UAAA,GAC1B,CAACF,OAAOE,IAAAA,CAAKF,MAAM,CAAA,GACnB,CAACA,MAAAA,CAAOE,IAAAA;AAAAA,QACd;AACA,QAAA,OAAO,IAAA;AAAA,MACT,CAAC,CAAA;AAAA,IACH,CAAC,CAAA;AACD,IAAA,MAAMC,OAAAA,GAAU,OAAOC,IAAAA,KAAS;AAC9B,MAAA,IAAIA,KAAKC,aAAAA,EAAe;AACtB,QAAA,MAAMD,KAAKC,aAAAA,EAAc;AAAA,MAC3B;AACA,MAAA,IAAID,KAAKE,OAAAA,EAAS;AAChB,QAAA,MAAMC,WAAAA,GACJH,IAAAA,CAAKG,WAAAA,IACL,CAAA,EAAGd,CAAAA,CAAE,0BAA0B,CAAC,CAAA,EAAGW,IAAAA,CAAKpB,IAAI,CAAA,EAAGS,CAAAA,CAAE,6BAA6B,CAAC,CAAA,MAAA,CAAA;AACjF,QAAA,MAAMe,YAAAA,CAAaF,OAAAA,CAAQC,WAAAA,EAAad,CAAAA,CAAE,mBAAmB,CAAA,EAAG;AAAA,UAC9DgB,iBAAAA,EAAmBhB,EAAE,oBAAoB,CAAA;AAAA,UACzCiB,gBAAAA,EAAkBjB,EAAE,mBAAmB,CAAA;AAAA,UACvCkB,IAAAA,EAAM;AAAA,SACP,CAAA;AAAA,MACH;AACAP,MAAAA,IAAAA,CAAKQ,OAAAA,IAAWR,KAAKQ,OAAAA,EAAQ;AAAA,IAC/B,CAAA;AACA,IAAA,MAAMC,cAAeT,CAAAA,IAAAA,KAAS;AAC5B,MAAA,IAAI,OAAOA,IAAAA,CAAKU,QAAAA,KAAa,UAAA,EAAY;AACvC,QAAA,OAAOV,KAAKU,QAAAA,EAAS;AAAA,MACvB;AACA,MAAA,IAAI,OAAOzB,KAAAA,CAAMyB,QAAAA,KAAa,UAAA,EAAY;AACxC,QAAA,OAAOzB,MAAMyB,QAAAA,EAAS;AAAA,MACxB;AACA,MAAA,OAAOzB,KAAAA,CAAMyB,QAAAA;AAAAA,IACf,CAAA;AAEA,IAAA,OAAO,MAAAC,YAAAC,QAAAA,EAAA,IAAA,EAAA,CAEFnB,UAAAA,CAAWoB,KAAAA,CAAMC,IAAKd,CAAAA,IAAAA,KAAS;AAC9B,MAAA,MAAMe,gBAAgBf,IAAAA,CAAKgB,UAAAA,EAAYC,KAAAA,CAAM,GAAG,KAAK,EAAA;AACrD,MAAA,OAAAC,cAAAA,CAAAP,WAAAA,CAAAQ,gBAAAA,eAAAC,UAAAA,CAAA;AAAA,QAAA,SAEW,CAAC1C,GAAAA,CAAI2C,CAAAA,EAAE,EAAGC,mBAAmB,CAAA;AAAA,QAAC,SAC9BC,aAAAA,EAAc;AAAA,QAAC,KAAA,EACjBvB,IAAAA,CAAKwB,IAAAA,IAAQxB,IAAAA,CAAKpB;AAAAA,OAAI,EAAA;AAAA,QAMzB,GAAG6C,aAAajC,WAAW,CAAA;AAAA,QAC3B,GAAGiC,YAAAA,CAAazB,IAAAA,EAAM,CAAC,aAAA,EAAe,MAAA,EAAQ,SAAS,CAAC,CAAA;AAAA,QACxDU,QAAAA,EAAUD,YAAYT,IAAI;AAAA,OAAC,CAAA,EAPpB;AAAA,QACP0B,OAAAA,EAASA,MAAM1B,IAAAA,CAAKpB,IAAAA;AAAAA,QACpB,GAAGoB,IAAAA,CAAK2B;AAAAA,OACT,CAAA,EAAA,CAAA,CAAAC,gBAAAA,CAAA,cAAA,CAAA,EAOC,OAAO5B,IAAAA,CAAKQ,OAAAA,KAAY,UAAA,GACpB;AAAA,QACEqB,OAAAA,EAASA,MAAM9B,OAAAA,CAAQC,IAAI,CAAA;AAAA,QAC3B8B,SAAAA,EAAW;AAAA,OACb,GACA,MAAM/B,OAAAA,CAAQC,IAAI,CAAC,CAAA,EAAA,CAAA4B,gBAAAA,CAAA,YAAA,CAAA,EAEX;AAAA,QACZG,GAAAA,EAAKhB,cAAc,CAAC,CAAA;AAAA,QACpBF,KAAAA,EAAOE,cAAc,CAAC;AAAA,OACvB,CAAA,CAAA,CAAA;AAAA,IAGP,CAAC,CAAC,CAAA,CAAA;AAAA,EAGR;AACF,CAAC,CAAA;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"buttons.mjs","sources":["../../../../../../packages/components/buttons/src/buttons.ts"],"sourcesContent":["import type { PropType, ExtractPublicPropTypes, VNode } from 'vue'\nimport {\n buttonProps as elButtonProps,\n // buttonEmits as elButtonEmits,\n type ButtonProps as ElButtonProps,\n} from 'element-plus'\nimport { disabledProps } from '@el-plus/utils/props'\nimport type { VisibleProps, IDisabled } from '@el-plus/utils/props'\nimport type { TableScope } from '@el-plus/components/table'\n\nexport type ButtonProps<TClickArg = MouseEvent | TableScope> = Partial<\n Omit<ElButtonProps, 'disabled'> & {\n name: string\n prop: string // 唯一标识\n permission: string // 权限\n onClick: (e: TClickArg) => void\n scopedSlots: Record<string, () => VNode>\n disabled: IDisabled\n confirm: boolean\n confirmText: string\n confirmBefore: (e: TClickArg) => Promise<void>\n } & VisibleProps\n>\nexport const buttonsProps = {\n ...elButtonProps,\n ...disabledProps,\n list: {\n type: Array as PropType<ButtonProps[]>,\n default: () => [],\n },\n size: {\n ...elButtonProps.size,\n default: 'small',\n },\n type: {\n ...elButtonProps.type,\n default: 'default',\n },\n} as const\nexport type ButtonsProps = ExtractPublicPropTypes<typeof buttonsProps>\n// export const buttonsEmits = {\n// ...elButtonEmits,\n// }\n// export type ButtonsEmits = typeof buttonsEmits\n// export const buttonsEmitsKeys = Object.keys(buttonsEmits)\n"],"names":["elButtonProps"],"mappings":";;;AAuBO,MAAM,YAAA,GAAe;AAAA,EAC1B,GAAGA,WAAA;AAAA,EACH,GAAG,aAAA;AAAA,EACH,IAAA,EAAM;AAAA,IACJ,IAAA,EAAM,KAAA;AAAA,IACN,OAAA,EAAS,MAAM;AAAC,GAClB;AAAA,EACA,IAAA,EAAM;AAAA,IACJ,GAAGA,WAAA,CAAc,IAAA;AAAA,IACjB,OAAA,EAAS;AAAA,GACX;AAAA,EACA,IAAA,EAAM;AAAA,IACJ,GAAGA,WAAA,CAAc,IAAA;AAAA,IACjB,OAAA,EAAS;AAAA;AAEb;;;;"}
1
+ {"version":3,"file":"buttons.mjs","sources":["../../../../../../packages/components/buttons/src/buttons.ts"],"sourcesContent":["import type { PropType, ExtractPublicPropTypes, VNode } from 'vue'\r\nimport {\r\n buttonProps as elButtonProps,\r\n // buttonEmits as elButtonEmits,\r\n type ButtonProps as ElButtonProps,\r\n} from 'element-plus'\r\nimport { disabledProps } from '@el-plus/utils/props'\r\nimport type { VisibleProps, IDisabled } from '@el-plus/utils/props'\r\nimport type { TableScope } from '@el-plus/components/table'\r\n\r\nexport type ButtonProps<TClickArg = MouseEvent | TableScope> = Partial<\r\n Omit<ElButtonProps, 'disabled'> & {\r\n name: string\r\n prop: string // 唯一标识\r\n permission: string // 权限\r\n onClick: (e: TClickArg) => void\r\n scopedSlots: Record<string, () => VNode>\r\n disabled: IDisabled\r\n confirm: boolean\r\n confirmText: string\r\n confirmBefore: (e: TClickArg) => Promise<void>\r\n } & VisibleProps\r\n>\r\nexport const buttonsProps = {\r\n ...elButtonProps,\r\n ...disabledProps,\r\n list: {\r\n type: Array as PropType<ButtonProps[]>,\r\n default: () => [],\r\n },\r\n size: {\r\n ...elButtonProps.size,\r\n default: 'small',\r\n },\r\n type: {\r\n ...elButtonProps.type,\r\n default: 'default',\r\n },\r\n} as const\r\nexport type ButtonsProps = ExtractPublicPropTypes<typeof buttonsProps>\r\n// export const buttonsEmits = {\r\n// ...elButtonEmits,\r\n// }\r\n// export type ButtonsEmits = typeof buttonsEmits\r\n// export const buttonsEmitsKeys = Object.keys(buttonsEmits)\r\n"],"names":["elButtonProps"],"mappings":";;;AAuBO,MAAM,YAAA,GAAe;AAAA,EAC1B,GAAGA,WAAA;AAAA,EACH,GAAG,aAAA;AAAA,EACH,IAAA,EAAM;AAAA,IACJ,IAAA,EAAM,KAAA;AAAA,IACN,OAAA,EAAS,MAAM;AAAC,GAClB;AAAA,EACA,IAAA,EAAM;AAAA,IACJ,GAAGA,WAAA,CAAc,IAAA;AAAA,IACjB,OAAA,EAAS;AAAA,GACX;AAAA,EACA,IAAA,EAAM;AAAA,IACJ,GAAGA,WAAA,CAAc,IAAA;AAAA,IACjB,OAAA,EAAS;AAAA;AAEb;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.mjs","sources":["../../../../../packages/components/custom-column/index.ts"],"sourcesContent":["import CustomColumn from './src/custom-column.vue'\nimport { withInstall } from '@el-plus/utils/with-install'\n\nexport const EpCustomColumn = withInstall(CustomColumn)\nexport default EpCustomColumn\nexport type CustomColumnInstance = InstanceType<typeof EpCustomColumn>\nexport * from './src/custom-column'\n"],"names":["CustomColumn"],"mappings":";;;;AAGO,MAAM,cAAA,GAAiB,YAAYA,SAAY;;;;"}
1
+ {"version":3,"file":"index.mjs","sources":["../../../../../packages/components/custom-column/index.ts"],"sourcesContent":["import CustomColumn from './src/custom-column.vue'\r\nimport { withInstall } from '@el-plus/utils/with-install'\r\n\r\nexport const EpCustomColumn = withInstall(CustomColumn)\r\nexport default EpCustomColumn\r\nexport type CustomColumnInstance = InstanceType<typeof EpCustomColumn>\r\nexport * from './src/custom-column'\r\n"],"names":["CustomColumn"],"mappings":";;;;AAGO,MAAM,cAAA,GAAiB,YAAYA,SAAY;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"custom-column.mjs","sources":["../../../../../../packages/components/custom-column/src/custom-column.ts"],"sourcesContent":["import type { PropType, ExtractPublicPropTypes } from 'vue'\nimport { apiProps } from '@el-plus/utils/props'\nimport type { TransferDataItem } from 'element-plus'\n\nexport const customColumnProps = {\n module: {\n type: [Number, String] as PropType<number | string>,\n },\n api: {\n ...apiProps.api,\n default: '/api-item/api/customizedColumns/find',\n },\n saveApi: {\n ...apiProps.api,\n default: '/api-item/api/customizedColumns/save',\n },\n showHandler: {\n type: Boolean,\n default: true,\n },\n} as const\nexport type CustomColumnProps = ExtractPublicPropTypes<typeof customColumnProps>\nexport const customColumnEmits = {\n confirm: (data: TransferDataItem[]) => true,\n loaded: (data: TransferDataItem[]) => true,\n}\nexport type CustomColumnEmits = typeof customColumnEmits\n"],"names":[],"mappings":";;AAIO,MAAM,iBAAA,GAAoB;AAAA,EAC/B,MAAA,EAAQ;AAAA,IACN,IAAA,EAAM,CAAC,MAAA,EAAQ,MAAM;AAAA,GACvB;AAAA,EACA,GAAA,EAAK;AAAA,IACH,GAAG,QAAA,CAAS,GAAA;AAAA,IACZ,OAAA,EAAS;AAAA,GACX;AAAA,EACA,OAAA,EAAS;AAAA,IACP,GAAG,QAAA,CAAS,GAAA;AAAA,IACZ,OAAA,EAAS;AAAA,GACX;AAAA,EACA,WAAA,EAAa;AAAA,IACX,IAAA,EAAM,OAAA;AAAA,IACN,OAAA,EAAS;AAAA;AAEb;AAEO,MAAM,iBAAA,GAAoB;AAAA,EAC/B,OAAA,EAAS,CAAC,IAAA,KAA6B,IAAA;AAAA,EACvC,MAAA,EAAQ,CAAC,IAAA,KAA6B;AACxC;;;;"}
1
+ {"version":3,"file":"custom-column.mjs","sources":["../../../../../../packages/components/custom-column/src/custom-column.ts"],"sourcesContent":["import type { PropType, ExtractPublicPropTypes } from 'vue'\r\nimport { apiProps } from '@el-plus/utils/props'\r\nimport type { TransferDataItem } from 'element-plus'\r\n\r\nexport const customColumnProps = {\r\n module: {\r\n type: [Number, String] as PropType<number | string>,\r\n },\r\n api: {\r\n ...apiProps.api,\r\n default: '/api-item/api/customizedColumns/find',\r\n },\r\n saveApi: {\r\n ...apiProps.api,\r\n default: '/api-item/api/customizedColumns/save',\r\n },\r\n showHandler: {\r\n type: Boolean,\r\n default: true,\r\n },\r\n} as const\r\nexport type CustomColumnProps = ExtractPublicPropTypes<typeof customColumnProps>\r\nexport const customColumnEmits = {\r\n confirm: (data: TransferDataItem[]) => true,\r\n loaded: (data: TransferDataItem[]) => true,\r\n}\r\nexport type CustomColumnEmits = typeof customColumnEmits\r\n"],"names":[],"mappings":";;AAIO,MAAM,iBAAA,GAAoB;AAAA,EAC/B,MAAA,EAAQ;AAAA,IACN,IAAA,EAAM,CAAC,MAAA,EAAQ,MAAM;AAAA,GACvB;AAAA,EACA,GAAA,EAAK;AAAA,IACH,GAAG,QAAA,CAAS,GAAA;AAAA,IACZ,OAAA,EAAS;AAAA,GACX;AAAA,EACA,OAAA,EAAS;AAAA,IACP,GAAG,QAAA,CAAS,GAAA;AAAA,IACZ,OAAA,EAAS;AAAA,GACX;AAAA,EACA,WAAA,EAAa;AAAA,IACX,IAAA,EAAM,OAAA;AAAA,IACN,OAAA,EAAS;AAAA;AAEb;AAEO,MAAM,iBAAA,GAAoB;AAAA,EAC/B,OAAA,EAAS,CAAC,IAAA,KAA6B,IAAA;AAAA,EACvC,MAAA,EAAQ,CAAC,IAAA,KAA6B;AACxC;;;;"}