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.
- package/CHANGELOG.md +24 -0
- package/README.md +85 -85
- package/dist/index.css +1 -1
- package/dist/index.full.js +15 -5
- package/dist/index.full.min.js +4 -4
- package/dist/index.full.min.js.map +1 -1
- package/dist/index.full.min.mjs +4 -4
- package/dist/index.full.min.mjs.map +1 -1
- package/dist/index.full.mjs +15 -6
- package/docs/CHANGELOG.md +5 -5
- package/docs/api-examples.md +49 -49
- package/docs/components/attachment.md +118 -111
- package/docs/components/buttons.md +179 -179
- package/docs/components/custom-column.md +70 -70
- package/docs/components/date-picker-range.md +61 -61
- package/docs/components/dialog.md +104 -104
- package/docs/components/footer-info.md +101 -101
- package/docs/components/form.md +211 -211
- package/docs/components/header.md +117 -117
- package/docs/components/input.md +111 -111
- package/docs/components/link.md +63 -63
- package/docs/components/search-list-page.md +91 -91
- package/docs/components/select.md +249 -249
- package/docs/components/table.md +145 -145
- package/docs/components/title.md +70 -70
- package/docs/components/use-choose-dialog.md +114 -114
- package/docs/components/use-confirm-dialog.md +86 -86
- package/docs/components/use-form-dialog.md +85 -85
- package/docs/guide/markdown-examples.md +85 -85
- package/docs/hooks/use-navigation.md +131 -131
- package/docs/hooks/use-utils.md +162 -162
- package/docs/index.md +25 -25
- package/docs/overview.md +99 -99
- package/docs/pages/detail.md +66 -66
- package/docs/pages/list.md +74 -74
- package/docs/pages/router.md +151 -151
- package/es/components/attachment/index.d.ts +12 -2
- package/es/components/attachment/index.mjs +1 -1
- package/es/components/attachment/index.mjs.map +1 -1
- package/es/components/attachment/src/attachment.d.ts +6 -0
- package/es/components/attachment/src/attachment.mjs +7 -1
- package/es/components/attachment/src/attachment.mjs.map +1 -1
- package/es/components/attachment/src/attachment.vue.d.ts +5 -1
- package/es/components/attachment/src/attachment.vue2.mjs +7 -4
- package/es/components/attachment/src/attachment.vue2.mjs.map +1 -1
- package/es/components/attachment/src/use-attachment.mjs.map +1 -1
- package/es/components/buttons/index.mjs.map +1 -1
- package/es/components/buttons/src/buttons-vue.mjs.map +1 -1
- package/es/components/buttons/src/buttons.mjs.map +1 -1
- package/es/components/custom-column/index.mjs.map +1 -1
- package/es/components/custom-column/src/custom-column.mjs.map +1 -1
- package/es/components/custom-column/src/custom-column.vue2.mjs.map +1 -1
- package/es/components/date-picker-range/index.mjs.map +1 -1
- package/es/components/date-picker-range/src/date-picker-range.mjs.map +1 -1
- package/es/components/date-picker-range/src/date-picker-range.vue2.mjs.map +1 -1
- package/es/components/footer-info/index.mjs.map +1 -1
- package/es/components/footer-info/src/footer-info.mjs.map +1 -1
- package/es/components/footer-info/src/footer-info.vue2.mjs.map +1 -1
- package/es/components/form/index.mjs.map +1 -1
- package/es/components/form/src/form-item-vue.mjs.map +1 -1
- package/es/components/form/src/form-item.mjs.map +1 -1
- package/es/components/form/src/form.mjs.map +1 -1
- package/es/components/form/src/form.vue2.mjs.map +1 -1
- package/es/components/form/src/hooks/use-form-item.mjs.map +1 -1
- package/es/components/form/src/hooks/use-form.mjs.map +1 -1
- package/es/components/header/index.mjs.map +1 -1
- package/es/components/header/src/header.mjs.map +1 -1
- package/es/components/header/src/header.vue2.mjs.map +1 -1
- package/es/components/header/src/use-header.mjs.map +1 -1
- package/es/components/index.mjs +1 -1
- package/es/components/input/index.mjs.map +1 -1
- package/es/components/input/src/input.mjs.map +1 -1
- package/es/components/input/src/input.vue2.mjs.map +1 -1
- package/es/components/link/index.mjs.map +1 -1
- package/es/components/link/src/link.mjs.map +1 -1
- package/es/components/link/src/link.vue2.mjs.map +1 -1
- package/es/components/search-list-page/index.mjs.map +1 -1
- package/es/components/search-list-page/src/search-list-page.mjs.map +1 -1
- package/es/components/search-list-page/src/search-list-page.vue2.mjs.map +1 -1
- package/es/components/search-list-page/src/use-search-list-page.mjs.map +1 -1
- package/es/components/select/index.mjs.map +1 -1
- package/es/components/select/src/select.mjs.map +1 -1
- package/es/components/select/src/select.vue2.mjs.map +1 -1
- package/es/components/select/src/use-select.mjs.map +1 -1
- package/es/components/table/index.mjs.map +1 -1
- package/es/components/table/src/table.mjs.map +1 -1
- package/es/components/table/src/table.vue2.mjs.map +1 -1
- package/es/components/table/src/use-table.mjs.map +1 -1
- package/es/components/title/index.mjs.map +1 -1
- package/es/components/title/src/title.mjs.map +1 -1
- package/es/components/title/src/title.vue2.mjs.map +1 -1
- package/es/components/title/src/use-title.mjs.map +1 -1
- package/es/components/uni-vue/index.mjs.map +1 -1
- package/es/components/uni-vue/src/uni-vue.mjs.map +1 -1
- package/es/components/uni-vue/src/uni-vue.vue2.mjs.map +1 -1
- package/es/components/uni-vue/src/use-uni-vue.mjs.map +1 -1
- package/es/components.mjs.map +1 -1
- package/es/directives/permission/index.mjs.map +1 -1
- package/es/directives/repeat-click/index.mjs.map +1 -1
- package/es/hooks/dialog/use-choose-dialog.mjs.map +1 -1
- package/es/hooks/dialog/use-confirm-dialog.mjs.map +1 -1
- package/es/hooks/dialog/use-dialog.mjs.map +1 -1
- package/es/hooks/dialog/use-form-dialog.mjs.map +1 -1
- package/es/hooks/use-locale.mjs.map +1 -1
- package/es/hooks/use-navigation.mjs.map +1 -1
- package/es/hooks/use-request.mjs.map +1 -1
- package/es/hooks/use-template-promise.mjs.map +1 -1
- package/es/hooks/use-utils.mjs.map +1 -1
- package/es/index.mjs +1 -1
- package/es/index.mjs.map +1 -1
- package/es/locale/lang/en.mjs.map +1 -1
- package/es/locale/lang/zh-cn.mjs.map +1 -1
- package/es/package.json.mjs +1 -1
- package/es/plugins/globalProperties.mjs.map +1 -1
- package/es/types/global.d.ts +30 -30
- package/es/types/index.d.ts +2 -2
- package/es/types/utils.d.ts +19 -19
- package/es/utils/bem.mjs.map +1 -1
- package/es/utils/cookie.mjs.map +1 -1
- package/es/utils/dom.mjs.map +1 -1
- package/es/utils/env.mjs.map +1 -1
- package/es/utils/file.mjs.map +1 -1
- package/es/utils/http/core/modules/interceptor.mjs.map +1 -1
- package/es/utils/http/core/modules/loading.mjs.map +1 -1
- package/es/utils/http/core/preset-interceptors.mjs.map +1 -1
- package/es/utils/http/core/request-client.mjs.map +1 -1
- package/es/utils/http/index.mjs.map +1 -1
- package/es/utils/mitt.mjs.map +1 -1
- package/es/utils/navigation.mjs.map +1 -1
- package/es/utils/props.mjs.map +1 -1
- package/es/utils/time.mjs.map +1 -1
- package/es/utils/utils.mjs.map +1 -1
- package/es/utils/with-install.mjs.map +1 -1
- package/global.d.ts +21 -21
- package/lib/components/attachment/index.d.ts +12 -2
- package/lib/components/attachment/index.js +1 -0
- package/lib/components/attachment/index.js.map +1 -1
- package/lib/components/attachment/src/attachment.d.ts +6 -0
- package/lib/components/attachment/src/attachment.js +7 -0
- package/lib/components/attachment/src/attachment.js.map +1 -1
- package/lib/components/attachment/src/attachment.vue.d.ts +5 -1
- package/lib/components/attachment/src/attachment.vue2.js +6 -3
- package/lib/components/attachment/src/attachment.vue2.js.map +1 -1
- package/lib/components/attachment/src/use-attachment.js.map +1 -1
- package/lib/components/buttons/index.js.map +1 -1
- package/lib/components/buttons/src/buttons-vue.js.map +1 -1
- package/lib/components/buttons/src/buttons.js.map +1 -1
- package/lib/components/custom-column/index.js.map +1 -1
- package/lib/components/custom-column/src/custom-column.js.map +1 -1
- package/lib/components/custom-column/src/custom-column.vue2.js.map +1 -1
- package/lib/components/date-picker-range/index.js.map +1 -1
- package/lib/components/date-picker-range/src/date-picker-range.js.map +1 -1
- package/lib/components/date-picker-range/src/date-picker-range.vue2.js.map +1 -1
- package/lib/components/footer-info/index.js.map +1 -1
- package/lib/components/footer-info/src/footer-info.js.map +1 -1
- package/lib/components/footer-info/src/footer-info.vue2.js.map +1 -1
- package/lib/components/form/index.js.map +1 -1
- package/lib/components/form/src/form-item-vue.js.map +1 -1
- package/lib/components/form/src/form-item.js.map +1 -1
- package/lib/components/form/src/form.js.map +1 -1
- package/lib/components/form/src/form.vue2.js.map +1 -1
- package/lib/components/form/src/hooks/use-form-item.js.map +1 -1
- package/lib/components/form/src/hooks/use-form.js.map +1 -1
- package/lib/components/header/index.js.map +1 -1
- package/lib/components/header/src/header.js.map +1 -1
- package/lib/components/header/src/header.vue2.js.map +1 -1
- package/lib/components/header/src/use-header.js.map +1 -1
- package/lib/components/index.js +1 -0
- package/lib/components/index.js.map +1 -1
- package/lib/components/input/index.js.map +1 -1
- package/lib/components/input/src/input.js.map +1 -1
- package/lib/components/input/src/input.vue2.js.map +1 -1
- package/lib/components/link/index.js.map +1 -1
- package/lib/components/link/src/link.js.map +1 -1
- package/lib/components/link/src/link.vue2.js.map +1 -1
- package/lib/components/search-list-page/index.js.map +1 -1
- package/lib/components/search-list-page/src/search-list-page.js.map +1 -1
- package/lib/components/search-list-page/src/search-list-page.vue2.js.map +1 -1
- package/lib/components/search-list-page/src/use-search-list-page.js.map +1 -1
- package/lib/components/select/index.js.map +1 -1
- package/lib/components/select/src/select.js.map +1 -1
- package/lib/components/select/src/select.vue2.js.map +1 -1
- package/lib/components/select/src/use-select.js.map +1 -1
- package/lib/components/table/index.js.map +1 -1
- package/lib/components/table/src/table.js.map +1 -1
- package/lib/components/table/src/table.vue2.js.map +1 -1
- package/lib/components/table/src/use-table.js.map +1 -1
- package/lib/components/title/index.js.map +1 -1
- package/lib/components/title/src/title.js.map +1 -1
- package/lib/components/title/src/title.vue2.js.map +1 -1
- package/lib/components/title/src/use-title.js.map +1 -1
- package/lib/components/uni-vue/index.js.map +1 -1
- package/lib/components/uni-vue/src/uni-vue.js.map +1 -1
- package/lib/components/uni-vue/src/uni-vue.vue2.js.map +1 -1
- package/lib/components/uni-vue/src/use-uni-vue.js.map +1 -1
- package/lib/components.js.map +1 -1
- package/lib/directives/permission/index.js.map +1 -1
- package/lib/directives/repeat-click/index.js.map +1 -1
- package/lib/hooks/dialog/use-choose-dialog.js.map +1 -1
- package/lib/hooks/dialog/use-confirm-dialog.js.map +1 -1
- package/lib/hooks/dialog/use-dialog.js.map +1 -1
- package/lib/hooks/dialog/use-form-dialog.js.map +1 -1
- package/lib/hooks/use-locale.js.map +1 -1
- package/lib/hooks/use-navigation.js.map +1 -1
- package/lib/hooks/use-request.js.map +1 -1
- package/lib/hooks/use-template-promise.js.map +1 -1
- package/lib/hooks/use-utils.js.map +1 -1
- package/lib/index.js +1 -0
- package/lib/index.js.map +1 -1
- package/lib/locale/lang/en.js.map +1 -1
- package/lib/locale/lang/zh-cn.js.map +1 -1
- package/lib/package.json.js +1 -1
- package/lib/plugins/globalProperties.js.map +1 -1
- package/lib/types/global.d.ts +30 -30
- package/lib/types/index.d.ts +2 -2
- package/lib/types/utils.d.ts +19 -19
- package/lib/utils/bem.js.map +1 -1
- package/lib/utils/cookie.js.map +1 -1
- package/lib/utils/dom.js.map +1 -1
- package/lib/utils/env.js.map +1 -1
- package/lib/utils/file.js.map +1 -1
- package/lib/utils/http/core/modules/interceptor.js.map +1 -1
- package/lib/utils/http/core/modules/loading.js.map +1 -1
- package/lib/utils/http/core/preset-interceptors.js.map +1 -1
- package/lib/utils/http/core/request-client.js.map +1 -1
- package/lib/utils/http/index.js.map +1 -1
- package/lib/utils/mitt.js.map +1 -1
- package/lib/utils/navigation.js.map +1 -1
- package/lib/utils/props.js.map +1 -1
- package/lib/utils/time.js.map +1 -1
- package/lib/utils/utils.js.map +1 -1
- package/lib/utils/with-install.js.map +1 -1
- package/package.json +1 -1
- package/theme-chalk/base.css +1 -1
- package/theme-chalk/index.css +1 -1
- package/theme-chalk/src/attachment.scss +39 -39
- package/theme-chalk/src/base.scss +2 -2
- package/theme-chalk/src/buttons.scss +22 -22
- package/theme-chalk/src/common/common.scss +7 -4
- package/theme-chalk/src/common/transition.scss +9 -9
- package/theme-chalk/src/custom-column.scss +55 -55
- package/theme-chalk/src/dialog.scss +62 -62
- package/theme-chalk/src/footer-info.scss +18 -18
- package/theme-chalk/src/form.scss +80 -72
- package/theme-chalk/src/header.scss +19 -19
- package/theme-chalk/src/index.scss +15 -15
- package/theme-chalk/src/link.scss +5 -5
- package/theme-chalk/src/mixins/config.scss +3 -3
- package/theme-chalk/src/mixins/mixins.scss +37 -37
- package/theme-chalk/src/search-list-page.scss +22 -22
- package/theme-chalk/src/select.scss +10 -10
- package/theme-chalk/src/table.scss +91 -91
- package/theme-chalk/src/tabs.scss +55 -55
- package/theme-chalk/src/title.scss +52 -52
- package/theme-chalk/src/uni-vue.scss +10 -10
package/docs/pages/router.md
CHANGED
|
@@ -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
|
-
|
|
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
|
-
|
|
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":";;
|
|
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
|
-
|
|
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":";;;;;;;;;;;;;;;;;;;;;;;AAsDA,IAAA,MAAM,EAAE,CAAA,EAAE,GAAI,SAAA,EAAU;AAKxB,IAAA,MAAM,GAAA,GAAM,gBAAgB,YAAY,CAAA;AACxC,IAAA,MAAM,KAAA,GAAQ,OAAA;AACd,IAAA,MAAM,UAAA,GAAaA,QAAA,
|
|
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":"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"}
|
|
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":"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"}
|
|
@@ -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;;;;"}
|