houzhongjian
2024-08-08 820397e43a0b64d35c6d31d2a55475061438593b
提交 | 用户 | 时间
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>