hzzt-table 0.0.1
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 +238 -0
- package/dist/index.cjs.js +23 -0
- package/dist/index.css +1 -0
- package/dist/index.es.js +48431 -0
- package/package.json +45 -0
- package/types/components/JsxTable.vue.d.ts +46 -0
- package/types/components/VxeJsxTable.vue.d.ts +47 -0
- package/types/components/useColumn.d.ts +4 -0
- package/types/components/useSelection.d.ts +18 -0
- package/types/components/useSize.d.ts +2 -0
- package/types/components/useTableMethod.d.ts +18 -0
- package/types/const/index.d.ts +2 -0
- package/types/index.d.ts +8 -0
- package/types/plugins/i18n.d.ts +6 -0
- package/types/plugins/index.d.ts +13 -0
- package/types/plugins/table.d.ts +9 -0
- package/types/types/instances.d.ts +77 -0
- package/web-types.json +385 -0
package/README.md
ADDED
|
@@ -0,0 +1,238 @@
|
|
|
1
|
+
# 说明
|
|
2
|
+
|
|
3
|
+
hzzt-table封装了vxe-table和element-plus的el-table,兼容两者的API,使他们保持一致的用法
|
|
4
|
+
|
|
5
|
+
注:内部没有引用vxe-table和el-table相关的样式,需要单独引用
|
|
6
|
+
|
|
7
|
+
# 安装方式
|
|
8
|
+
|
|
9
|
+
```shell
|
|
10
|
+
npm install hzzt-table
|
|
11
|
+
```
|
|
12
|
+
|
|
13
|
+
```javascript
|
|
14
|
+
import HzztTable from 'hzzt-table';
|
|
15
|
+
import 'hzzt-table/dist/index.css'
|
|
16
|
+
import {createApp} from 'vue'
|
|
17
|
+
import App from './App.vue'
|
|
18
|
+
|
|
19
|
+
const app = createApp(App);
|
|
20
|
+
|
|
21
|
+
app.use(HzztTable, {
|
|
22
|
+
size: 'small', // 表格尺寸大小
|
|
23
|
+
// i18n: i18n vue-i18n实例,
|
|
24
|
+
config: { // 参考vxe-table的全局参数配置
|
|
25
|
+
table: {},
|
|
26
|
+
}
|
|
27
|
+
})
|
|
28
|
+
|
|
29
|
+
app.mount('#app')
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
# VxeJsxTable和JsxTable组件
|
|
33
|
+
|
|
34
|
+
## Props
|
|
35
|
+
|
|
36
|
+
| 属性 | 类型 | 默认值 | 说明 |
|
|
37
|
+
|-------------------|---------------------------------------------------------------|---------|------------------------|
|
|
38
|
+
| loading | boolean | false | 表格是否显示加载中 |
|
|
39
|
+
| data | Record<string, any>[] | [] | 表格数据 |
|
|
40
|
+
| columns | ColumnItem[] | [] | 表格列配置 |
|
|
41
|
+
| rowKey | string | null | 自定义行数据唯一主键的字段名(默认自动生成) |
|
|
42
|
+
| size | enum `'large' \| 'medium' \| 'default' \| 'small' \| 'mini'` | default | 表格尺寸 |
|
|
43
|
+
| enableCollapseAll | boolean | false | tree和expand表格是否支持一键展开 |
|
|
44
|
+
| defaultExpandAll | boolean | false | 默认全部展开 |
|
|
45
|
+
| enableDrag | boolean | false | 启用行拖拽 |
|
|
46
|
+
| shiftPick | boolean | true | 启用shift建快速选择 |
|
|
47
|
+
| height | string | number | 表格高度 |
|
|
48
|
+
| tableProps | Record<string, any> | null | vxe-table和el-table的参数 |
|
|
49
|
+
| expandOnClick | boolean | false | 点击行展开tree和expand表格 |
|
|
50
|
+
| selectOnClick | boolean | false | 点击行进行选中 |
|
|
51
|
+
| selectOnCellClick | boolean | true | 点击checkbox单元格进行选中 |
|
|
52
|
+
| expandOnCellClick | boolean | true | 点击tree和expand单元格进行选中 |
|
|
53
|
+
| selection | Record<string, any>[] | [] | 选择行的数据 |
|
|
54
|
+
|
|
55
|
+
## ColumnItem 参数说明
|
|
56
|
+
|
|
57
|
+
| 属性名 | 类型 | 说明 |
|
|
58
|
+
|----------|-----------------------------------------------------------------------------|-------------|
|
|
59
|
+
| type | enum `'checkbox' \| 'selection' \| 'seq' \| 'tree' \| 'expand' \| 'index'` | 名称 |
|
|
60
|
+
| label | `string` | 列名称 |
|
|
61
|
+
| title | `string` | 列名称,同label |
|
|
62
|
+
| prop | `string` | 列属性值 |
|
|
63
|
+
| field | `string` | 列属性值,同field |
|
|
64
|
+
| slots | Record<string, any> | 插槽 |
|
|
65
|
+
| children | `ColumnItem[]` | 多级表头配置 |
|
|
66
|
+
|
|
67
|
+
## Event
|
|
68
|
+
|
|
69
|
+
### sort-change
|
|
70
|
+
表格排序变化时触发
|
|
71
|
+
|
|
72
|
+
**参数:**
|
|
73
|
+
- `params.column`: 排序列配置信息
|
|
74
|
+
- `params.order`: 排序顺序 ('asc' | 'desc' | null)
|
|
75
|
+
- `params.prop`: 排序字段名
|
|
76
|
+
|
|
77
|
+
### update:selection
|
|
78
|
+
选中行数据更新时触发(支持 v-model:selection)
|
|
79
|
+
|
|
80
|
+
**参数:**
|
|
81
|
+
- `selection`: 当前选中的行数据数组
|
|
82
|
+
|
|
83
|
+
### row-drag
|
|
84
|
+
行拖拽操作完成时触发
|
|
85
|
+
|
|
86
|
+
**参数:**
|
|
87
|
+
- `draggedId`: 被拖拽行的ID
|
|
88
|
+
- `targetId`: 目标位置的行的ID
|
|
89
|
+
- `type`: 拖拽位置类型 ('before' | 'after')
|
|
90
|
+
- `newIndex`: 新的索引位置
|
|
91
|
+
- `oldIndex`: 原始索引位置
|
|
92
|
+
|
|
93
|
+
### header-click
|
|
94
|
+
表头点击时触发
|
|
95
|
+
|
|
96
|
+
**参数:**
|
|
97
|
+
- `column`: 列配置信息
|
|
98
|
+
- `event`: 原生事件对象
|
|
99
|
+
|
|
100
|
+
### cell-click
|
|
101
|
+
单元格点击时触发
|
|
102
|
+
|
|
103
|
+
**参数:**
|
|
104
|
+
- `row`: 行数据
|
|
105
|
+
- `column`: 列配置
|
|
106
|
+
- `cell`: 单元格信息
|
|
107
|
+
- `event`: 原生事件对象
|
|
108
|
+
|
|
109
|
+
### row-click
|
|
110
|
+
整行点击时触发
|
|
111
|
+
|
|
112
|
+
**参数:**
|
|
113
|
+
- `row`: 行数据
|
|
114
|
+
- `column`: 列配置
|
|
115
|
+
- `cell`: 单元格信息
|
|
116
|
+
- `event`: 原生事件对象
|
|
117
|
+
|
|
118
|
+
### checkbox-change
|
|
119
|
+
复选框状态变化时触发
|
|
120
|
+
|
|
121
|
+
**参数:**
|
|
122
|
+
- `params.records`: 涉及的行记录数组
|
|
123
|
+
- `params.row`: 当前行数据(单个复选框时)
|
|
124
|
+
- `params.column`: 列配置
|
|
125
|
+
- `params.checked`: 选中状态
|
|
126
|
+
|
|
127
|
+
### checkbox-all
|
|
128
|
+
全选复选框变化时触发
|
|
129
|
+
|
|
130
|
+
**参数:**
|
|
131
|
+
- `params.records`: 所有选中的行记录
|
|
132
|
+
|
|
133
|
+
### cell-dblclick
|
|
134
|
+
单元格双击时触发
|
|
135
|
+
|
|
136
|
+
**参数:**
|
|
137
|
+
- `params.row`: 行数据
|
|
138
|
+
- `params.column`: 列配置
|
|
139
|
+
|
|
140
|
+
**示例**
|
|
141
|
+
|
|
142
|
+
```vue3
|
|
143
|
+
<template>
|
|
144
|
+
<!-- <el-table>
|
|
145
|
+
<el-table-column label="title" prop="title"></el-table-column>
|
|
146
|
+
<el-table-column label="name" prop="name"></el-table-column>
|
|
147
|
+
</el-table>-->
|
|
148
|
+
<div>VxeJsxTable</div>
|
|
149
|
+
<vxe-jsx-table ref="tableRef" v-model:selection="selection" enable-drag enable-collapse-all :data="data"
|
|
150
|
+
:columns="columns"
|
|
151
|
+
:table-props="{
|
|
152
|
+
treeConfig: {
|
|
153
|
+
childrenField: 'children',
|
|
154
|
+
}
|
|
155
|
+
}"
|
|
156
|
+
default-expand-all
|
|
157
|
+
select-on-click expand-on-click
|
|
158
|
+
@selection-change="selectionChange"></vxe-jsx-table>
|
|
159
|
+
<div>JsxTable</div>
|
|
160
|
+
<jsx-table ref="tableRef" row-key="id" v-model:selection="selection" enable-drag enable-collapse-all :data="data"
|
|
161
|
+
:columns="columns" default-expand-all
|
|
162
|
+
select-on-click expand-on-click
|
|
163
|
+
@selection-change="selectionChange"></jsx-table>
|
|
164
|
+
</template>
|
|
165
|
+
<script setup>
|
|
166
|
+
|
|
167
|
+
import {ref} from 'vue'
|
|
168
|
+
import {VxeJsxTable, JsxTable} from "hzzt-table";
|
|
169
|
+
|
|
170
|
+
const tableRef = ref(null);
|
|
171
|
+
const selection = ref([]);
|
|
172
|
+
const data = ref([])
|
|
173
|
+
|
|
174
|
+
const columns = ref([{
|
|
175
|
+
type: 'checkbox',
|
|
176
|
+
width: '50px',
|
|
177
|
+
}, {
|
|
178
|
+
type: 'index',
|
|
179
|
+
width: '50px',
|
|
180
|
+
}, {
|
|
181
|
+
label: 'Title',
|
|
182
|
+
prop: 'title',
|
|
183
|
+
treeNode: true,
|
|
184
|
+
type: 'tree',
|
|
185
|
+
}, {
|
|
186
|
+
label: 'Name',
|
|
187
|
+
prop: 'name',
|
|
188
|
+
children: [{
|
|
189
|
+
label: 'Name1',
|
|
190
|
+
prop: 'name1',
|
|
191
|
+
}, {
|
|
192
|
+
label: 'Name2',
|
|
193
|
+
prop: 'name2',
|
|
194
|
+
}]
|
|
195
|
+
}, {
|
|
196
|
+
label: 'Age',
|
|
197
|
+
prop: 'age',
|
|
198
|
+
}])
|
|
199
|
+
|
|
200
|
+
function selectionChange(selection) {
|
|
201
|
+
console.log(selection);
|
|
202
|
+
}
|
|
203
|
+
|
|
204
|
+
setTimeout(() => {
|
|
205
|
+
data.value = [{
|
|
206
|
+
id: 1,
|
|
207
|
+
title: '标题1',
|
|
208
|
+
name1: '姓名1-1',
|
|
209
|
+
name2: '姓名1-2',
|
|
210
|
+
age: '11',
|
|
211
|
+
}, {
|
|
212
|
+
id: 2,
|
|
213
|
+
title: '标题2',
|
|
214
|
+
name1: '姓名2-1',
|
|
215
|
+
name2: '姓名2-2',
|
|
216
|
+
age: '22',
|
|
217
|
+
children: [{
|
|
218
|
+
id: 22,
|
|
219
|
+
title: '标题2-2',
|
|
220
|
+
name1: '姓名2-1-1',
|
|
221
|
+
name2: '姓名2-2-2',
|
|
222
|
+
age: '22-2',
|
|
223
|
+
}]
|
|
224
|
+
}, {
|
|
225
|
+
id: 3,
|
|
226
|
+
title: '标题3',
|
|
227
|
+
name1: '姓名3-1',
|
|
228
|
+
name2: '姓名3-2',
|
|
229
|
+
age: '33',
|
|
230
|
+
}]
|
|
231
|
+
}, 1000);
|
|
232
|
+
|
|
233
|
+
</script>
|
|
234
|
+
|
|
235
|
+
<style scoped>
|
|
236
|
+
|
|
237
|
+
</style>
|
|
238
|
+
```
|