提交 | 用户 | 时间
|
820397
|
1 |
<template> |
H |
2 |
<!-- 操作栏 --> |
|
3 |
<ContentWrap> |
|
4 |
<el-button type="primary" plain @click="openForm()"> |
|
5 |
<Icon icon="ep:plus" class="mr-5px" /> IP 查询 |
|
6 |
</el-button> |
|
7 |
</ContentWrap> |
|
8 |
|
|
9 |
<!-- 列表 --> |
|
10 |
<ContentWrap> |
|
11 |
<div style="width: 100%; height: 700px"> |
|
12 |
<!-- AutoResizer 自动调节大小 --> |
|
13 |
<el-auto-resizer> |
|
14 |
<template #default="{ height, width }"> |
|
15 |
<!-- Virtualized Table 虚拟化表格:高性能,解决表格在大数据量下的卡顿问题 --> |
|
16 |
<el-table-v2 |
|
17 |
:columns="columns" |
|
18 |
:data="list" |
|
19 |
:width="width" |
|
20 |
:height="height" |
|
21 |
expand-column-key="id" |
|
22 |
/> |
|
23 |
</template> |
|
24 |
</el-auto-resizer> |
|
25 |
</div> |
|
26 |
</ContentWrap> |
|
27 |
|
|
28 |
<!-- 表单弹窗:添加/修改 --> |
|
29 |
<AreaForm ref="formRef" /> |
|
30 |
</template> |
|
31 |
<script setup lang="tsx"> |
|
32 |
import type { Column } from 'element-plus' |
|
33 |
import AreaForm from './AreaForm.vue' |
|
34 |
import * as AreaApi from '@/api/system/area' |
|
35 |
|
|
36 |
defineOptions({ name: 'SystemArea' }) |
|
37 |
|
|
38 |
// 表格的 column 字段 |
|
39 |
const columns: Column[] = [ |
|
40 |
{ |
|
41 |
dataKey: 'id', // 需要渲染当前列的数据字段。例如说:{id:9527, name:'Mike'},则填 id |
|
42 |
title: '编号', // 显示在单元格表头的文本 |
|
43 |
width: 400, // 当前列的宽度,必须设置 |
|
44 |
fixed: true, // 是否固定列 |
|
45 |
key: 'id' // 树形展开对应的 key |
|
46 |
}, |
|
47 |
{ |
|
48 |
dataKey: 'name', |
|
49 |
title: '地名', |
|
50 |
width: 200 |
|
51 |
} |
|
52 |
] |
|
53 |
// 表格的数据 |
|
54 |
const list = ref([]) |
|
55 |
|
|
56 |
/** |
|
57 |
* 获得数据列表 |
|
58 |
*/ |
|
59 |
const getList = async () => { |
|
60 |
list.value = await AreaApi.getAreaTree() |
|
61 |
} |
|
62 |
|
|
63 |
/** 添加/修改操作 */ |
|
64 |
const formRef = ref() |
|
65 |
const openForm = () => { |
|
66 |
formRef.value.open() |
|
67 |
} |
|
68 |
|
|
69 |
/** 初始化 **/ |
|
70 |
onMounted(() => { |
|
71 |
getList() |
|
72 |
}) |
|
73 |
</script> |