Skip to content

Commit 94800b0

Browse files
feat: Table重构
1 parent 002d03a commit 94800b0

File tree

13 files changed

+575
-307
lines changed

13 files changed

+575
-307
lines changed

mock/role/index.ts

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -142,6 +142,14 @@ const adminList = [
142142
title: 'UseTable'
143143
}
144144
},
145+
{
146+
path: 'tree-table',
147+
component: 'views/Components/Table/TreeTable',
148+
name: 'TreeTable',
149+
meta: {
150+
title: 'TreeTable'
151+
}
152+
},
145153
{
146154
path: 'ref-table',
147155
component: 'views/Components/Table/RefTable',
@@ -481,6 +489,7 @@ const testList: string[] = [
481489
'/components/table',
482490
'/components/table/default-table',
483491
'/components/table/use-table',
492+
'/components/table/tree-table',
484493
'/components/table/ref-table',
485494
'/components/editor-demo',
486495
'/components/editor-demo/editor',

mock/table/index.ts

Lines changed: 122 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,15 +12,28 @@ const count = 100
1212
const baseContent =
1313
'<p>I am testing data, I am testing data.</p><p><img src="https://wpimg.wallstcn.com/4c69009c-0fd4-4153-b112-6cb53d1cf943"></p>'
1414

15-
let List: {
15+
interface ListProps {
1616
id: string
1717
author: string
1818
title: string
1919
content: string
2020
importance: number
2121
display_time: string
2222
pageviews: number
23-
}[] = []
23+
}
24+
25+
interface TreeListProps {
26+
id: string
27+
author: string
28+
title: string
29+
content: string
30+
importance: number
31+
display_time: string
32+
pageviews: number
33+
children: TreeListProps[]
34+
}
35+
36+
let List: ListProps[] = []
2437

2538
for (let i = 0; i < count; i++) {
2639
List.push(
@@ -38,7 +51,114 @@ for (let i = 0; i < count; i++) {
3851
)
3952
}
4053

54+
const treeList: TreeListProps[] = []
55+
56+
for (let i = 0; i < count; i++) {
57+
treeList.push(
58+
Mock.mock({
59+
id: toAnyString(),
60+
// timestamp: +Mock.Random.date('T'),
61+
author: '@first',
62+
title: '@title(5, 10)',
63+
content: baseContent,
64+
importance: '@integer(1, 3)',
65+
display_time: '@datetime',
66+
pageviews: '@integer(300, 5000)',
67+
children: [
68+
{
69+
id: toAnyString(),
70+
// timestamp: +Mock.Random.date('T'),
71+
author: '@first',
72+
title: '@title(5, 10)',
73+
content: baseContent,
74+
importance: '@integer(1, 3)',
75+
display_time: '@datetime',
76+
pageviews: '@integer(300, 5000)',
77+
children: [
78+
{
79+
id: toAnyString(),
80+
// timestamp: +Mock.Random.date('T'),
81+
author: '@first',
82+
title: '@title(5, 10)',
83+
content: baseContent,
84+
importance: '@integer(1, 3)',
85+
display_time: '@datetime',
86+
pageviews: '@integer(300, 5000)'
87+
},
88+
{
89+
id: toAnyString(),
90+
// timestamp: +Mock.Random.date('T'),
91+
author: '@first',
92+
title: '@title(5, 10)',
93+
content: baseContent,
94+
importance: '@integer(1, 3)',
95+
display_time: '@datetime',
96+
pageviews: '@integer(300, 5000)'
97+
}
98+
]
99+
},
100+
{
101+
id: toAnyString(),
102+
// timestamp: +Mock.Random.date('T'),
103+
author: '@first',
104+
title: '@title(5, 10)',
105+
content: baseContent,
106+
importance: '@integer(1, 3)',
107+
display_time: '@datetime',
108+
pageviews: '@integer(300, 5000)'
109+
},
110+
{
111+
id: toAnyString(),
112+
// timestamp: +Mock.Random.date('T'),
113+
author: '@first',
114+
title: '@title(5, 10)',
115+
content: baseContent,
116+
importance: '@integer(1, 3)',
117+
display_time: '@datetime',
118+
pageviews: '@integer(300, 5000)'
119+
},
120+
{
121+
id: toAnyString(),
122+
// timestamp: +Mock.Random.date('T'),
123+
author: '@first',
124+
title: '@title(5, 10)',
125+
content: baseContent,
126+
importance: '@integer(1, 3)',
127+
display_time: '@datetime',
128+
pageviews: '@integer(300, 5000)'
129+
}
130+
]
131+
// image_uri
132+
})
133+
)
134+
}
135+
41136
export default [
137+
// 树形列表接口
138+
{
139+
url: '/example/treeList',
140+
method: 'get',
141+
timeout,
142+
response: ({ query }) => {
143+
const { title, pageIndex, pageSize } = query
144+
const mockList = treeList.filter((item) => {
145+
if (title && item.title.indexOf(title) < 0) return false
146+
return true
147+
})
148+
const pageList = mockList.filter(
149+
(_, index) => index < pageSize * pageIndex && index >= pageSize * (pageIndex - 1)
150+
)
151+
return {
152+
data: {
153+
code: code,
154+
data: {
155+
total: mockList.length,
156+
list: pageList
157+
}
158+
}
159+
}
160+
}
161+
},
42162
// 列表接口
43163
{
44164
url: '/example/list',

src/api/table/index.ts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,10 @@ export const getTableListApi = (params: any) => {
55
return request.get({ url: '/example/list', params })
66
}
77

8+
export const getTreeTableListApi = (params: any) => {
9+
return request.get({ url: '/example/treeList', params })
10+
}
11+
812
export const saveTableApi = (data: Partial<TableData>): Promise<IResponse> => {
913
return request.post({ url: '/example/save', data })
1014
}

src/components/Table/index.ts

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import Table from './src/Table.vue'
22
import { ElTable } from 'element-plus'
3-
import { TableSetProps } from './src/types'
3+
import { TableColumn, TableSetProps } from './src/types'
44

55
export type {
66
TableColumn,
@@ -13,6 +13,8 @@ export type {
1313
export interface TableExpose {
1414
setProps: (props: Recordable) => void
1515
setColumn: (columnProps: TableSetProps[]) => void
16+
addColumn: (column: TableColumn, index?: number) => void
17+
delColumn: (field: string) => void
1618
selections: Recordable[]
1719
elTableRef: ComponentRef<typeof ElTable>
1820
}

0 commit comments

Comments
 (0)