@aspire-ui/element-component-pro 1.0.0 → 1.0.2
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/README.md +141 -7
- package/dist/ProTable/ProTable.vue.d.ts +421 -0
- package/dist/ProTable/TableAction.vue.d.ts +43 -0
- package/dist/ProTable/index.d.ts +8 -0
- package/dist/ProTable/types/index.d.ts +252 -0
- package/dist/ProTable/useProTable.d.ts +12 -0
- package/dist/element-component-pro.es.js +740 -295
- 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 +1325 -0
- package/dist/style.css +1 -1
- package/dist/types/index.d.ts +0 -49
- package/dist/useComponentSetting.d.ts +12 -0
- package/package.json +7 -5
- package/src/ProForm/ProForm.vue +3 -1
- package/src/ProForm/useForm.ts +0 -1
- package/src/ProTable/ProTable.vue +773 -0
- package/src/ProTable/TableAction.vue +193 -0
- package/src/ProTable/index.ts +20 -0
- package/src/ProTable/types/index.ts +236 -0
- package/src/ProTable/useProTable.ts +79 -0
- package/src/index.ts +13 -10
- package/src/types/index.ts +0 -44
- package/src/useComponentSetting.ts +35 -0
|
@@ -0,0 +1,252 @@
|
|
|
1
|
+
import { VNode } from 'vue';
|
|
2
|
+
|
|
3
|
+
/** ProTable 列配置 */
|
|
4
|
+
export interface ProColumn {
|
|
5
|
+
/** 列唯一标识 */
|
|
6
|
+
key?: string;
|
|
7
|
+
/** 列标题 */
|
|
8
|
+
title: string;
|
|
9
|
+
/** 数据字段名 */
|
|
10
|
+
dataIndex: string;
|
|
11
|
+
/** 列宽度:number 为比例(如 1、2、3 表示 1:2:3),string 为 px */
|
|
12
|
+
width?: number | string;
|
|
13
|
+
/** 最小宽度(参考 VbenAdmin,比例列和固定列均生效) */
|
|
14
|
+
minWidth?: number | string;
|
|
15
|
+
/** 最大宽度(参考 VbenAdmin,用于限制列宽上限) */
|
|
16
|
+
maxWidth?: number | string;
|
|
17
|
+
/** 固定列 */
|
|
18
|
+
fixed?: 'left' | 'right';
|
|
19
|
+
/** 是否可排序 */
|
|
20
|
+
sortable?: boolean;
|
|
21
|
+
/** 对齐方式 */
|
|
22
|
+
align?: 'left' | 'center' | 'right';
|
|
23
|
+
/** 是否可调整宽度 */
|
|
24
|
+
resizable?: boolean;
|
|
25
|
+
/** 内容超出时是否省略并显示 tooltip,默认继承表格 ellipsis */
|
|
26
|
+
ellipsis?: boolean;
|
|
27
|
+
/** 是否隐藏 */
|
|
28
|
+
hideInTable?: boolean;
|
|
29
|
+
/** 默认隐藏,可在列设置中显示(参考 VbenAdmin defaultHidden) */
|
|
30
|
+
defaultHidden?: boolean;
|
|
31
|
+
/** 列头右侧帮助文本(参考 VbenAdmin helpMessage) */
|
|
32
|
+
helpMessage?: string | string[];
|
|
33
|
+
/** 值类型 */
|
|
34
|
+
valueType?: 'text' | 'date' | 'dateTime' | 'option' | 'select' | 'index';
|
|
35
|
+
/** 枚举值映射 */
|
|
36
|
+
valueEnum?: Record<string | number, {
|
|
37
|
+
text: string;
|
|
38
|
+
status?: string;
|
|
39
|
+
}>;
|
|
40
|
+
/** 自定义渲染 */
|
|
41
|
+
customRender?: (params: {
|
|
42
|
+
text: unknown;
|
|
43
|
+
record: Record<string, unknown>;
|
|
44
|
+
index: number;
|
|
45
|
+
}) => VNode | string;
|
|
46
|
+
/** Element UI formatter */
|
|
47
|
+
formatter?: (row: Record<string, unknown>, column: unknown, cellValue: unknown) => string;
|
|
48
|
+
/** 根据业务控制列是否显示 */
|
|
49
|
+
ifShow?: boolean | ((params: {
|
|
50
|
+
column: ProColumn;
|
|
51
|
+
}) => boolean);
|
|
52
|
+
/** 表单项配置(用于搜索) */
|
|
53
|
+
fieldProps?: Record<string, unknown>;
|
|
54
|
+
/** 表单项占位符 */
|
|
55
|
+
placeholder?: string;
|
|
56
|
+
}
|
|
57
|
+
/** 接口请求配置 */
|
|
58
|
+
export interface FetchSetting {
|
|
59
|
+
pageField?: string;
|
|
60
|
+
sizeField?: string;
|
|
61
|
+
listField?: string;
|
|
62
|
+
totalField?: string;
|
|
63
|
+
}
|
|
64
|
+
/** reload 请求参数(参考 VbenAdmin FetchParams) */
|
|
65
|
+
export interface FetchParams {
|
|
66
|
+
page?: number;
|
|
67
|
+
pageSize?: number;
|
|
68
|
+
searchInfo?: Record<string, unknown>;
|
|
69
|
+
}
|
|
70
|
+
/** 合并单元格回调参数 */
|
|
71
|
+
export interface SpanMethodParams {
|
|
72
|
+
row: Record<string, unknown>;
|
|
73
|
+
column: Record<string, unknown>;
|
|
74
|
+
rowIndex: number;
|
|
75
|
+
columnIndex: number;
|
|
76
|
+
}
|
|
77
|
+
/** 合并单元格返回值 */
|
|
78
|
+
export type SpanMethodResult = [number, number] | {
|
|
79
|
+
rowspan: number;
|
|
80
|
+
colspan: number;
|
|
81
|
+
};
|
|
82
|
+
/** 树形表格配置 */
|
|
83
|
+
export interface TreeProps {
|
|
84
|
+
/** 是否有子节点字段名 */
|
|
85
|
+
hasChildren?: string;
|
|
86
|
+
/** 子节点字段名 */
|
|
87
|
+
children?: string;
|
|
88
|
+
}
|
|
89
|
+
/** ProTable Props */
|
|
90
|
+
export interface ProTableProps {
|
|
91
|
+
columns?: ProColumn[];
|
|
92
|
+
dataSource?: Record<string, unknown>[];
|
|
93
|
+
api?: (params: Record<string, unknown>) => Promise<unknown>;
|
|
94
|
+
rowKey?: string;
|
|
95
|
+
title?: string;
|
|
96
|
+
titleHelpMessage?: string | string[];
|
|
97
|
+
bordered?: boolean;
|
|
98
|
+
striped?: boolean;
|
|
99
|
+
size?: 'medium' | 'small' | 'large';
|
|
100
|
+
loading?: boolean;
|
|
101
|
+
maxHeight?: number | string;
|
|
102
|
+
height?: number | string;
|
|
103
|
+
ellipsis?: boolean;
|
|
104
|
+
showIndexColumn?: boolean;
|
|
105
|
+
indexColumnProps?: Partial<ProColumn>;
|
|
106
|
+
actionColumn?: Partial<ProColumn>;
|
|
107
|
+
/** 选择列配置(参考 VbenAdmin,通过自定义列实现,不使用 type="selection") */
|
|
108
|
+
rowSelection?: {
|
|
109
|
+
type?: 'checkbox' | 'radio';
|
|
110
|
+
width?: number;
|
|
111
|
+
fixed?: 'left' | 'right';
|
|
112
|
+
/** 多选时禁用某行的勾选,(record) => { disabled?: boolean } */
|
|
113
|
+
getCheckboxProps?: (record: Record<string, unknown>) => {
|
|
114
|
+
disabled?: boolean;
|
|
115
|
+
};
|
|
116
|
+
/** 单选时禁用某行的选择,(record) => { disabled?: boolean } */
|
|
117
|
+
getRadioProps?: (record: Record<string, unknown>) => {
|
|
118
|
+
disabled?: boolean;
|
|
119
|
+
};
|
|
120
|
+
};
|
|
121
|
+
/** 切换页码时是否清空勾选,默认 false 即支持跨分页选择 */
|
|
122
|
+
clearSelectOnPageChange?: boolean;
|
|
123
|
+
pagination?: false | Record<string, unknown>;
|
|
124
|
+
fetchSetting?: FetchSetting;
|
|
125
|
+
beforeFetch?: (params: Record<string, unknown>) => Record<string, unknown>;
|
|
126
|
+
afterFetch?: (data: unknown) => unknown;
|
|
127
|
+
immediate?: boolean;
|
|
128
|
+
searchInfo?: Record<string, unknown>;
|
|
129
|
+
/** 合并行或列的方法 */
|
|
130
|
+
spanMethod?: (params: SpanMethodParams) => SpanMethodResult;
|
|
131
|
+
/** 树形表格配置 */
|
|
132
|
+
treeProps?: TreeProps;
|
|
133
|
+
/** 是否默认展开所有行(树形表格) */
|
|
134
|
+
defaultExpandAll?: boolean;
|
|
135
|
+
/** 展开的行(树形表格),需配合 rowKey 使用 */
|
|
136
|
+
expandRowKeys?: (string | number)[];
|
|
137
|
+
/** 是否懒加载子节点(树形表格) */
|
|
138
|
+
lazy?: boolean;
|
|
139
|
+
/** 懒加载子节点的方法(树形表格) */
|
|
140
|
+
load?: (row: Record<string, unknown>, treeNode: {
|
|
141
|
+
level: number;
|
|
142
|
+
expanded: boolean;
|
|
143
|
+
loaded: boolean;
|
|
144
|
+
}, resolve: (data: Record<string, unknown>[]) => void) => void;
|
|
145
|
+
}
|
|
146
|
+
/** 行选择配置(与 ProTableProps.rowSelection 一致,供 getRowSelection 返回) */
|
|
147
|
+
export type TableRowSelection = ProTableProps['rowSelection'];
|
|
148
|
+
/** TableAction 气泡确认配置(参考 VbenAdmin PopConfirm) */
|
|
149
|
+
export interface TableActionPopConfirm {
|
|
150
|
+
title: string;
|
|
151
|
+
okText?: string;
|
|
152
|
+
cancelText?: string;
|
|
153
|
+
confirm: () => void | Promise<void>;
|
|
154
|
+
cancel?: () => void | Promise<void>;
|
|
155
|
+
icon?: string;
|
|
156
|
+
}
|
|
157
|
+
/** TableAction 单个操作项(参考 VbenAdmin ActionItem) */
|
|
158
|
+
export interface TableActionItem {
|
|
159
|
+
/** 按钮文本 */
|
|
160
|
+
label: string;
|
|
161
|
+
/** 是否禁用 */
|
|
162
|
+
disabled?: boolean;
|
|
163
|
+
/** 按钮颜色(内部会映射到 Element UI 按钮类型) */
|
|
164
|
+
color?: 'success' | 'error' | 'warning';
|
|
165
|
+
/** 按钮类型,直接透传给 Element UI Button 的 type */
|
|
166
|
+
type?: string;
|
|
167
|
+
/** 额外的按钮 props,直接透传给 Element UI Button */
|
|
168
|
+
props?: Record<string, unknown>;
|
|
169
|
+
/** 图标 class(例如 element-ui 图标或自定义 iconfont) */
|
|
170
|
+
icon?: string;
|
|
171
|
+
/** 气泡确认配置 */
|
|
172
|
+
popConfirm?: TableActionPopConfirm;
|
|
173
|
+
/** 是否显示分隔线(垂直 Divider) */
|
|
174
|
+
divider?: boolean;
|
|
175
|
+
/** 权限标识,具体含义由业务自行约定 */
|
|
176
|
+
auth?: string | string[];
|
|
177
|
+
/** 是否显示当前操作项,可为布尔值或函数 */
|
|
178
|
+
ifShow?: boolean | ((action: TableActionItem) => boolean);
|
|
179
|
+
/** 点击回调 */
|
|
180
|
+
onClick?: (e: MouseEvent) => void;
|
|
181
|
+
/** Tooltip 配置:字符串或 Element UI Tooltip 的 props */
|
|
182
|
+
tooltip?: string | Record<string, unknown>;
|
|
183
|
+
}
|
|
184
|
+
/** TableAction 组件 Props(参考 VbenAdmin TableAction) */
|
|
185
|
+
export interface TableActionProps {
|
|
186
|
+
actions?: TableActionItem[];
|
|
187
|
+
dropDownActions?: TableActionItem[];
|
|
188
|
+
/** 是否阻止按钮 click 冒泡 */
|
|
189
|
+
stopButtonPropagation?: boolean;
|
|
190
|
+
}
|
|
191
|
+
/** ProTable 操作类型(参考 Vben Admin TableActionType) */
|
|
192
|
+
export interface TableActionType {
|
|
193
|
+
setProps: (props: Partial<ProTableProps>) => void;
|
|
194
|
+
reload: (opt?: FetchParams) => Promise<void>;
|
|
195
|
+
/** 重新计算表格高度/布局(参考 VbenAdmin redoHeight) */
|
|
196
|
+
redoHeight: () => void;
|
|
197
|
+
setLoading: (loading: boolean) => void;
|
|
198
|
+
getDataSource: () => Record<string, unknown>[];
|
|
199
|
+
/** 获取接口原始返回数据(参考 VbenAdmin getRawDataSource) */
|
|
200
|
+
getRawDataSource: () => Record<string, unknown>;
|
|
201
|
+
setTableData: (data: Record<string, unknown>[]) => void;
|
|
202
|
+
getColumns: () => ProColumn[];
|
|
203
|
+
/** 设置列配置,支持列数组或列 key 列表(参考 VbenAdmin setColumns) */
|
|
204
|
+
setColumns: (columns: ProColumn[] | string[]) => void;
|
|
205
|
+
setPagination: (info: Partial<{
|
|
206
|
+
page: number;
|
|
207
|
+
pageSize: number;
|
|
208
|
+
total: number;
|
|
209
|
+
}>) => void;
|
|
210
|
+
getSelectRowKeys: () => (string | number)[];
|
|
211
|
+
getSelectRows: () => Record<string, unknown>[];
|
|
212
|
+
clearSelectedRowKeys: () => void;
|
|
213
|
+
/** 设置选中行(参考 VbenAdmin setSelectedRowKeys) */
|
|
214
|
+
setSelectedRowKeys: (keys: (string | number)[]) => void;
|
|
215
|
+
/** 按 key 取消选中(参考 VbenAdmin deleteSelectRowByKey) */
|
|
216
|
+
deleteSelectRowByKey: (key: string | number) => void;
|
|
217
|
+
/** 按行索引和字段名更新单格数据(参考 VbenAdmin updateTableData) */
|
|
218
|
+
updateTableData: (index: number, key: string, value: unknown) => void;
|
|
219
|
+
/** 根据 rowKey 更新指定行(参考 VbenAdmin updateTableDataRecord) */
|
|
220
|
+
updateTableDataRecord: (rowKey: string | number, record: Record<string, unknown>) => Record<string, unknown> | void;
|
|
221
|
+
/** 根据 rowKey 删除指定行(参考 VbenAdmin deleteTableDataRecord) */
|
|
222
|
+
deleteTableDataRecord: (rowKey: string | number | (string | number)[]) => void;
|
|
223
|
+
/** 插入行(参考 VbenAdmin insertTableDataRecord) */
|
|
224
|
+
insertTableDataRecord: (record: Record<string, unknown>, index?: number) => Record<string, unknown> | void;
|
|
225
|
+
/** 获取分页信息(参考 VbenAdmin getPaginationRef) */
|
|
226
|
+
getPaginationRef: () => {
|
|
227
|
+
page: number;
|
|
228
|
+
pageSize: number;
|
|
229
|
+
total: number;
|
|
230
|
+
} | false;
|
|
231
|
+
/** 是否显示分页 */
|
|
232
|
+
getShowPagination: () => boolean;
|
|
233
|
+
/** 设置是否显示分页(参考 VbenAdmin,返回 Promise) */
|
|
234
|
+
setShowPagination: (show: boolean) => void | Promise<void>;
|
|
235
|
+
/** 获取当前行选择配置(参考 VbenAdmin getRowSelection) */
|
|
236
|
+
getRowSelection: () => TableRowSelection;
|
|
237
|
+
/** 展开树形表格所有行 */
|
|
238
|
+
expandAll?: () => void;
|
|
239
|
+
/** 折叠树形表格所有行 */
|
|
240
|
+
collapseAll?: () => void;
|
|
241
|
+
}
|
|
242
|
+
/** ProTable 工具栏配置 */
|
|
243
|
+
export interface ProTableToolBarConfig {
|
|
244
|
+
/** 是否显示刷新按钮 */
|
|
245
|
+
reload?: boolean;
|
|
246
|
+
/** 是否显示密度切换 */
|
|
247
|
+
density?: boolean;
|
|
248
|
+
/** 是否显示列设置 */
|
|
249
|
+
columnSetting?: boolean;
|
|
250
|
+
/** 是否显示全屏 */
|
|
251
|
+
fullScreen?: boolean;
|
|
252
|
+
}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { Ref } from 'vue';
|
|
2
|
+
import { ProTableProps, TableActionType } from './types';
|
|
3
|
+
|
|
4
|
+
export type UseProTableReturn = [
|
|
5
|
+
(instance: TableActionType) => void,
|
|
6
|
+
TableActionType
|
|
7
|
+
];
|
|
8
|
+
/**
|
|
9
|
+
* 用于 ProTable 的 useProTable,支持通过 ref 调用表格方法
|
|
10
|
+
* @param props ProTable 的 props 配置
|
|
11
|
+
*/
|
|
12
|
+
export declare function useProTable(props?: ProTableProps | Ref<ProTableProps | undefined>): UseProTableReturn;
|