潘志宝
2024-09-12 1f93e9c7d05f3a62009a37f5d4b2534b1568621c
提交 | 用户 | 时间
8056c4 1 <template>
2   <!-- 搜索 -->
3   <ContentWrap>
4     <el-form
5       class="-mb-15px"
6       :model="queryParams"
7       ref="queryFormRef"
8       :inline="true"
9       label-width="68px"
10     >
11       <el-form-item label="设备名称" prop="name">
12         <el-input
13           v-model="queryParams.name"
14           placeholder="请输入设备名称"
15           clearable
16           @keyup.enter="handleQuery"
17           class="!w-240px"
18         />
19       </el-form-item>
20       <el-form-item label="IP地址" prop="address">
21         <el-input
22           v-model="queryParams.address"
23           placeholder="请输入IP地址"
24           clearable
25           @keyup.enter="handleQuery"
26           class="!w-240px"
27         />
28       </el-form-item>
29       <el-form-item>
30         <el-button @click="handleQuery">
31           <Icon icon="ep:search" class="mr-5px" />
32           搜索
33         </el-button>
34         <el-button @click="resetQuery">
35           <Icon icon="ep:refresh" class="mr-5px" />
36           重置
37         </el-button>
38         <el-button
39           type="primary"
40           plain
41           @click="openForm('create')"
42           v-hasPermi="['system:tenant:create']"
43         >
44           <Icon icon="ep:plus" class="mr-5px" />
45           新增
46         </el-button>
47       </el-form-item>
48     </el-form>
49   </ContentWrap>
50
51   <!-- 列表 -->
52   <ContentWrap>
53     <el-table v-loading="loading" :data="list">
54       <el-table-column label="设备名称" align="center" prop="name" />
55       <el-table-column label="IP地址" align="center" prop="address" />
56       <el-table-column label="端口" align="center" prop="port" />
57       <el-table-column label="不活动超时(ms)" align="center" prop="connectInactivityTimeout" />
58       <el-table-column label="重连超时(ms)" align="center" prop="reconnectInterval" />
59       <el-table-column label="重试次数" align="center" prop="attemptsBeforeTimeout" />
60       <el-table-column label="加载类型" align="center" prop="loadType" />
61       <el-table-column label=" 重试间隔(ms)" align="center" prop="waitToRetryMilliseconds" />
62       <el-table-column label="读超时(ms)" align="center" prop="readTimeout" />
63       <el-table-column label="写超时(ms)" align="center" prop="writeTimeout" />
64       <el-table-column label="读超时(ms)" align="center" prop="readTimeout" />
65       <el-table-column label="操作" align="center" min-width="110" fixed="right">
66         <template #default="scope">
67           <el-button
68             link
69             type="primary"
70             @click="openForm('update', scope.row.id)"
71             v-hasPermi="['system:tenant:update']"
72           >
73             编辑
74           </el-button>
75           <el-button
76             link
77             type="danger"
78             @click="handleDelete(scope.row.id)"
79             v-hasPermi="['system:tenant:delete']"
80           >
81             删除
82           </el-button>
83         </template>
84       </el-table-column>
85     </el-table>
86     <!-- 分页 -->
87     <Pagination
88       :total="total"
89       v-model:page="queryParams.pageNo"
90       v-model:limit="queryParams.pageSize"
91       @pagination="getList"
92     />
93   </ContentWrap>
94
95   <!-- 表单弹窗:添加/修改 -->
96   <ModBusDeviceForm ref="formRef" @success="getList" />
97
98 </template>
99 <script lang="ts" setup>
1c14d6 100 import * as ModbusApi from '@/api/data/channel/modbus'
L 101 import ModBusDeviceForm from './ModBusDeviceForm.vue'
8056c4 102
1c14d6 103 defineOptions({name: 'DataModBus'})
8056c4 104
105   const message = useMessage() // 消息弹窗
106   const {t} = useI18n() // 国际化
107
108   const loading = ref(true) // 列表的加载中
109   const total = ref(0) // 列表的总页数
110   const list = ref([]) // 列表的数据
111   const queryParams = reactive({
112     pageNo: 1,
113     pageSize: 10,
114     name: undefined,
115     address: undefined
116   })
117   const queryFormRef = ref() // 搜索的表单
118   const exportLoading = ref(false) // 导出的加载中
119
120   /** 查询列表 */
121   const getList = async () => {
122     loading.value = true
123     try {
124       const page = await ModbusApi.getModBusDevicePage(queryParams)
125       list.value = page.list
126       total.value = page.total
127     } finally {
128       loading.value = false
129     }
130   }
131
132   /** 搜索按钮操作 */
133   const handleQuery = () => {
134     queryParams.pageNo = 1
135     getList()
136   }
137
138   /** 重置按钮操作 */
139   const resetQuery = () => {
140     queryFormRef.value.resetFields()
141     handleQuery()
142   }
143
144   /** 添加/修改操作 */
145   const formRef = ref()
146   const openForm = (type: string, id?: number) => {
147     formRef.value.open(type, id)
148   }
149
150   /** 删除按钮操作 */
151   const handleDelete = async (id: number) => {
152     try {
153       // 删除的二次确认
154       await message.delConfirm()
155       // 发起删除
156       await ModbusApi.deleteModBusDevice(id)
157       message.success(t('common.delSuccess'))
158       // 刷新列表
159       await getList()
160     } catch {
161     }
162   }
163
164   /** 初始化 **/
165   onMounted(async () => {
166     await getList()
167   })
168 </script>