@aspire-ui/element-component-pro 1.0.25 → 1.0.27
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/dist/ProTableForm/CellEditor.vue.d.ts +33 -0
- package/dist/ProTableForm/ProTableForm.vue.d.ts +122 -102
- package/dist/ProTableForm/index.d.ts +4 -2
- package/dist/ProTableForm/types.d.ts +1 -69
- package/dist/ProTableForm/useProTableForm.d.ts +55 -0
- package/dist/element-component-pro.es.js +1433 -1255
- package/dist/element-component-pro.es.js.map +1 -1
- package/dist/element-component-pro.umd.js +2 -2
- package/dist/element-component-pro.umd.js.map +1 -1
- package/dist/index.d.ts +445 -282
- package/dist/style.css +1 -1
- package/dist/types/index.d.ts +227 -0
- package/docs/CollapseContainer.md +100 -0
- package/docs/ComponentSetting.md +113 -0
- package/docs/ProDescriptions.md +215 -0
- package/docs/ProForm.md +879 -0
- package/docs/ProTable-Redesign.md +214 -0
- package/docs/ProTable.md +556 -0
- package/docs/ProTableForm.md +207 -0
- package/docs/image.png +0 -0
- package/package.json +3 -2
- package/src/CollapseContainer/CollapseContainer.vue +1 -1
- package/src/ProDescriptions/ProDescriptions.vue +1 -1
- package/src/ProForm/FormActions.vue +1 -1
- package/src/ProForm/ProForm.vue +1 -1
- package/src/ProForm/ProFormItem.vue +1 -1
- package/src/ProForm/TreeSelect.vue +1 -1
- package/src/ProTable/ProTable.vue +1 -2
- package/src/ProTable/TableAction.vue +1 -1
- package/src/ProTableForm/CellEditor.vue +192 -0
- package/src/ProTableForm/ProTableForm.vue +350 -453
- package/src/ProTableForm/TableFormCell.vue +46 -0
- package/src/ProTableForm/index.ts +6 -7
- package/src/ProTableForm/types.ts +12 -72
- package/src/ProTableForm/useProTableForm.ts +442 -0
- package/src/index.ts +6 -4
- package/src/types/index.ts +241 -0
|
@@ -0,0 +1,214 @@
|
|
|
1
|
+
# ProTable 重新设计(参考 VbenAdmin BasicTable)
|
|
2
|
+
|
|
3
|
+
## 1. 设计目标
|
|
4
|
+
|
|
5
|
+
基于 Element UI Table 的 ProTable 参考 [Vben Admin BasicTable](https://doc.vvbin.cn/components/table.html) 进行重新设计,在保持 Vue 2.7 + Element UI 技术栈的前提下,对齐 VbenAdmin 的 API 设计、功能特性和使用体验。
|
|
6
|
+
|
|
7
|
+
## 2. 功能对比
|
|
8
|
+
|
|
9
|
+
| 功能 | VbenAdmin BasicTable | 当前 ProTable | 差距 |
|
|
10
|
+
|------|----------------------|---------------|------|
|
|
11
|
+
| **基础** |
|
|
12
|
+
| 列配置 | BasicColumn | ProColumn | 命名/字段需对齐 |
|
|
13
|
+
| 数据源 | dataSource / api | 支持 | 已对齐 |
|
|
14
|
+
| 分页 | pagination | 支持 | 已对齐 |
|
|
15
|
+
| 加载状态 | loading | 支持 | 已对齐 |
|
|
16
|
+
| 边框/条纹 | bordered / striped | 支持 | 已对齐 |
|
|
17
|
+
| **标题与工具栏** |
|
|
18
|
+
| 标题 | title | 支持 | 已对齐 |
|
|
19
|
+
| 标题帮助 | titleHelpMessage | 支持 | 已对齐 |
|
|
20
|
+
| 工具栏 | #toolbar | 支持 | 已对齐 |
|
|
21
|
+
| 表格设置 | tableSetting (redo/size/setting/fullScreen) | 部分 | 仅 redo,缺 size/setting/fullScreen |
|
|
22
|
+
| **列选择** |
|
|
23
|
+
| 行选择 | rowSelection | 支持 | 已对齐 |
|
|
24
|
+
| 跨页选择 | clearSelectOnPageChange | 支持 | 已对齐 |
|
|
25
|
+
| **列配置** |
|
|
26
|
+
| 列宽 | width / minWidth | 支持 | 已对齐 |
|
|
27
|
+
| 列宽限制 | maxWidth | 已支持 | 已对齐 |
|
|
28
|
+
| 默认隐藏 | defaultHidden | 支持 | 已对齐 |
|
|
29
|
+
| 列头帮助 | helpMessage | 支持 | 已对齐 |
|
|
30
|
+
| 权限控制 | auth | 无 | 需新增 |
|
|
31
|
+
| **表格能力** |
|
|
32
|
+
| 序号列 | showIndexColumn / indexColumnProps | 支持 | 已对齐 |
|
|
33
|
+
| 操作列 | actionColumn | 支持 | 已对齐 |
|
|
34
|
+
| 树形表格 | isTreeTable / treeProps | 支持 | 已对齐 |
|
|
35
|
+
| 合并单元格 | - | spanMethod | 已支持 |
|
|
36
|
+
| 可编辑单元格 | edit / editComponent | 无 | 需新增 |
|
|
37
|
+
| 合计行 | showSummary / summaryFunc | 无 | 需新增 |
|
|
38
|
+
| 列拖拽 | canColDrag | 无 | 可选 |
|
|
39
|
+
| 行拖拽 | canRowDrag | 无 | 可选 |
|
|
40
|
+
| **搜索表单** |
|
|
41
|
+
| 搜索表单 | useSearchForm / formConfig | 无 | 需新增 |
|
|
42
|
+
| **TableActionType** |
|
|
43
|
+
| setProps | ✓ | ✓ | 已对齐 |
|
|
44
|
+
| reload | ✓ | ✓ | 已对齐 |
|
|
45
|
+
| reload(opt) | 支持 FetchParams | 支持 | 已对齐 |
|
|
46
|
+
| getDataSource | ✓ | ✓ | 已对齐 |
|
|
47
|
+
| getRawDataSource | ✓ | ✓ | 已对齐 |
|
|
48
|
+
| setTableData | ✓ | ✓ | 已对齐 |
|
|
49
|
+
| getColumns / setColumns | ✓ | ✓ | 已对齐 |
|
|
50
|
+
| setPagination | ✓ | ✓ | 已对齐 |
|
|
51
|
+
| getSelectRowKeys / getSelectRows | ✓ | ✓ | 已对齐 |
|
|
52
|
+
| clearSelectedRowKeys | ✓ | ✓ | 已对齐 |
|
|
53
|
+
| setSelectedRowKeys | ✓ | ✓ | 已对齐 |
|
|
54
|
+
| deleteSelectRowByKey | ✓ | ✓ | 已对齐 |
|
|
55
|
+
| updateTableDataRecord | ✓ | ✓ | 已对齐 |
|
|
56
|
+
| deleteTableDataRecord | ✓ | ✓ | 已对齐 |
|
|
57
|
+
| insertTableDataRecord | ✓ | ✓ | 已对齐 |
|
|
58
|
+
| getPaginationRef | ✓ | ✓ | 已对齐 |
|
|
59
|
+
| getShowPagination / setShowPagination | ✓ | ✓ | 已对齐 |
|
|
60
|
+
| expandAll / collapseAll | ✓ | ✓ | 已对齐 |
|
|
61
|
+
| redoHeight | ✓ | ✓ | 已对齐 |
|
|
62
|
+
| getForm | ✓ | 无 | 需新增(搜索表单时) |
|
|
63
|
+
|
|
64
|
+
## 3. API 设计对齐
|
|
65
|
+
|
|
66
|
+
### 3.1 BasicColumn → ProColumn 命名与字段
|
|
67
|
+
|
|
68
|
+
| VbenAdmin BasicColumn | ProTable ProColumn | 说明 |
|
|
69
|
+
|-----------------------|--------------------|------|
|
|
70
|
+
| title | title | 一致 |
|
|
71
|
+
| dataIndex | dataIndex | 一致 |
|
|
72
|
+
| key | key | 一致 |
|
|
73
|
+
| width | width | 一致(ProTable 支持 number 比例) |
|
|
74
|
+
| minWidth | minWidth | 一致 |
|
|
75
|
+
| maxWidth | maxWidth | 已支持 |
|
|
76
|
+
| fixed | fixed | 一致 |
|
|
77
|
+
| align | align | 一致 |
|
|
78
|
+
| defaultHidden | defaultHidden | 已实现(控制列默认隐藏,可通过列设置显示) |
|
|
79
|
+
| helpMessage | helpMessage | 已实现(列头右侧帮助文案) |
|
|
80
|
+
| auth | auth | 需新增 |
|
|
81
|
+
| ifShow | ifShow | 一致 |
|
|
82
|
+
| format | format | 需新增(或与 customRender 对齐) |
|
|
83
|
+
| edit / editRow / editComponent | - | 需新增(可编辑表格) |
|
|
84
|
+
|
|
85
|
+
### 3.2 TableActionType 方法补齐(当前状态)
|
|
86
|
+
|
|
87
|
+
```ts
|
|
88
|
+
interface TableActionType {
|
|
89
|
+
// 已对齐 VbenAdmin 的方法
|
|
90
|
+
setProps: (props: Partial<ProTableProps>) => void
|
|
91
|
+
reload: (opt?: FetchParams) => Promise<void>
|
|
92
|
+
/** 重新计算表格高度/布局(Element UI doLayout) */
|
|
93
|
+
redoHeight: () => void
|
|
94
|
+
setLoading: (loading: boolean) => void
|
|
95
|
+
getDataSource: () => Record<string, unknown>[]
|
|
96
|
+
getRawDataSource: () => Record<string, unknown>
|
|
97
|
+
setTableData: (data: Record<string, unknown>[]) => void
|
|
98
|
+
getColumns: () => ProColumn[]
|
|
99
|
+
setColumns: (columns: ProColumn[] | string[]) => void
|
|
100
|
+
setPagination: (info: Partial<{ page: number; pageSize: number; total: number }>) => void
|
|
101
|
+
getSelectRowKeys: () => (string | number)[]
|
|
102
|
+
getSelectRows: () => Record<string, unknown>[]
|
|
103
|
+
clearSelectedRowKeys: () => void
|
|
104
|
+
setSelectedRowKeys: (keys: (string | number)[]) => void
|
|
105
|
+
deleteSelectRowByKey: (key: string | number) => void
|
|
106
|
+
updateTableData: (index: number, key: string, value: unknown) => void
|
|
107
|
+
updateTableDataRecord: (rowKey: string | number, record: Record<string, unknown>) => Record<string, unknown> | void
|
|
108
|
+
deleteTableDataRecord: (rowKey: string | number | (string | number)[]) => void
|
|
109
|
+
insertTableDataRecord: (record: Record<string, unknown>, index?: number) => Record<string, unknown> | void
|
|
110
|
+
getPaginationRef: () => { page: number; pageSize: number; total: number } | false
|
|
111
|
+
getShowPagination: () => boolean
|
|
112
|
+
setShowPagination: (show: boolean) => void | Promise<void>
|
|
113
|
+
expandAll?: () => void
|
|
114
|
+
collapseAll?: () => void
|
|
115
|
+
}
|
|
116
|
+
```
|
|
117
|
+
|
|
118
|
+
### 3.3 reload 增强
|
|
119
|
+
|
|
120
|
+
```ts
|
|
121
|
+
// VbenAdmin 支持
|
|
122
|
+
reload(opt?: FetchParams) => Promise<void>
|
|
123
|
+
|
|
124
|
+
interface FetchParams {
|
|
125
|
+
page?: number
|
|
126
|
+
pageSize?: number
|
|
127
|
+
searchInfo?: Record<string, unknown>
|
|
128
|
+
}
|
|
129
|
+
```
|
|
130
|
+
|
|
131
|
+
## 4. 实现优先级
|
|
132
|
+
|
|
133
|
+
### P0 - 核心对齐(必做)
|
|
134
|
+
|
|
135
|
+
1. **TableActionType 方法补齐(已完成)**
|
|
136
|
+
- setSelectedRowKeys / deleteSelectRowByKey
|
|
137
|
+
- getRawDataSource
|
|
138
|
+
- updateTableData / updateTableDataRecord / deleteTableDataRecord / insertTableDataRecord
|
|
139
|
+
- getPaginationRef / getShowPagination / setShowPagination
|
|
140
|
+
- redoHeight
|
|
141
|
+
|
|
142
|
+
2. **reload 增强(已完成)**
|
|
143
|
+
- 已支持 `reload({ page, pageSize, searchInfo })`
|
|
144
|
+
|
|
145
|
+
3. **ProColumn 扩展(已完成)**
|
|
146
|
+
- defaultHidden
|
|
147
|
+
- helpMessage
|
|
148
|
+
|
|
149
|
+
### P1 - 体验增强
|
|
150
|
+
|
|
151
|
+
4. **tableSetting 完善**
|
|
152
|
+
- size:密度切换(medium/small/large)
|
|
153
|
+
- setting:列设置(显示/隐藏、固定、排序)
|
|
154
|
+
- fullScreen:全屏
|
|
155
|
+
|
|
156
|
+
5. **auth 权限控制**
|
|
157
|
+
- 列级 auth 控制显示(需接入项目权限体系)
|
|
158
|
+
|
|
159
|
+
### P2 - 高级功能
|
|
160
|
+
|
|
161
|
+
6. **搜索表单**
|
|
162
|
+
- useSearchForm + formConfig
|
|
163
|
+
- getForm
|
|
164
|
+
|
|
165
|
+
7. **可编辑表格**
|
|
166
|
+
- edit / editRow / editComponent
|
|
167
|
+
|
|
168
|
+
8. **合计行**
|
|
169
|
+
- showSummary / summaryFunc
|
|
170
|
+
|
|
171
|
+
## 5. 技术方案
|
|
172
|
+
|
|
173
|
+
### 5.1 列设置组件(ColumnSetting)
|
|
174
|
+
|
|
175
|
+
- 弹窗展示可配置列列表
|
|
176
|
+
- 支持:显示/隐藏、固定、排序
|
|
177
|
+
- 与 showIndexColumn、rowSelection 联动
|
|
178
|
+
|
|
179
|
+
### 5.2 密度切换
|
|
180
|
+
|
|
181
|
+
- 暴露 size 到 tableSetting.size
|
|
182
|
+
- 切换 medium / small / large 传给 el-table
|
|
183
|
+
|
|
184
|
+
### 5.3 全屏
|
|
185
|
+
|
|
186
|
+
- 使用 Fullscreen API 或全屏 class
|
|
187
|
+
- 表格容器包裹一层,全屏时占满视口
|
|
188
|
+
|
|
189
|
+
### 5.4 数据操作方法
|
|
190
|
+
|
|
191
|
+
- updateTableDataRecord:按 rowKey 查找并替换
|
|
192
|
+
- deleteTableDataRecord:按 rowKey 查找并删除
|
|
193
|
+
- insertTableDataRecord:按 index 插入
|
|
194
|
+
|
|
195
|
+
## 6. 文件结构
|
|
196
|
+
|
|
197
|
+
```
|
|
198
|
+
src/ProTable/
|
|
199
|
+
├── ProTable.vue # 主组件
|
|
200
|
+
├── useProTable.ts # Hook
|
|
201
|
+
├── types/
|
|
202
|
+
│ └── index.ts # 类型定义
|
|
203
|
+
├── components/ # 可选子组件
|
|
204
|
+
│ ├── TableSetting.ts # 工具栏设置(刷新/密度/列设置/全屏)
|
|
205
|
+
│ └── ColumnSetting.vue # 列配置弹窗
|
|
206
|
+
├── hooks/
|
|
207
|
+
│ └── useTableData.ts # 数据 CRUD 逻辑
|
|
208
|
+
```
|
|
209
|
+
|
|
210
|
+
## 7. 变更影响
|
|
211
|
+
|
|
212
|
+
- **向后兼容**:新增 API 均为可选,原有用法不破坏
|
|
213
|
+
- **示例**:需更新 Basic、UseProTable 等示例
|
|
214
|
+
- **文档**:ProTable.md 需同步更新
|