Jay
2024-11-01 6c26363653eff403da477c8681fa3723d87f4b99
提交 | 用户 | 时间
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')"
b05c43 42           v-hasPermi="['data:channel-modbus:create']"
8056c4 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)"
b05c43 71             v-hasPermi="['data:channel-modbus:update']"
8056c4 72           >
73             编辑
74           </el-button>
75           <el-button
76             link
b05c43 77             type="primary"
78             @click="openTagList(scope.row.name)"
79             v-hasPermi="['data:channel-modbus:update']"
80           >
81             TAG
82           </el-button>
83           <el-button
84             link
8056c4 85             type="danger"
86             @click="handleDelete(scope.row.id)"
b05c43 87             v-hasPermi="['data:channel-modbus:delete']"
8056c4 88           >
89             删除
90           </el-button>
91         </template>
92       </el-table-column>
93     </el-table>
94     <!-- 分页 -->
95     <Pagination
96       :total="total"
97       v-model:page="queryParams.pageNo"
98       v-model:limit="queryParams.pageSize"
99       @pagination="getList"
100     />
101   </ContentWrap>
102
103   <!-- 表单弹窗:添加/修改 -->
104   <ModBusDeviceForm ref="formRef" @success="getList" />
105
b05c43 106   <!-- TAG弹窗:添加/修改 -->
107   <TagList ref="tagRef" @success="getList" />
108
8056c4 109 </template>
110 <script lang="ts" setup>
1c14d6 111 import * as ModbusApi from '@/api/data/channel/modbus'
L 112 import ModBusDeviceForm from './ModBusDeviceForm.vue'
b05c43 113 import TagList from './tag/index.vue'
8056c4 114
1c14d6 115 defineOptions({name: 'DataModBus'})
8056c4 116
117   const message = useMessage() // 消息弹窗
118   const {t} = useI18n() // 国际化
119
120   const loading = ref(true) // 列表的加载中
121   const total = ref(0) // 列表的总页数
122   const list = ref([]) // 列表的数据
123   const queryParams = reactive({
124     pageNo: 1,
125     pageSize: 10,
126     name: undefined,
127     address: undefined
128   })
129   const queryFormRef = ref() // 搜索的表单
130   const exportLoading = ref(false) // 导出的加载中
131
132   /** 查询列表 */
133   const getList = async () => {
134     loading.value = true
135     try {
136       const page = await ModbusApi.getModBusDevicePage(queryParams)
137       list.value = page.list
138       total.value = page.total
139     } finally {
140       loading.value = false
141     }
142   }
143
144   /** 搜索按钮操作 */
145   const handleQuery = () => {
146     queryParams.pageNo = 1
147     getList()
148   }
149
150   /** 重置按钮操作 */
151   const resetQuery = () => {
152     queryFormRef.value.resetFields()
153     handleQuery()
154   }
155
156   /** 添加/修改操作 */
157   const formRef = ref()
158   const openForm = (type: string, id?: number) => {
159     formRef.value.open(type, id)
160   }
161
b05c43 162   /** TAG操作 */
163   const tagRef = ref()
164   const openTagList = (name?: string) => {
165     tagRef.value.open(name)
166   }
167
8056c4 168   /** 删除按钮操作 */
169   const handleDelete = async (id: number) => {
170     try {
171       // 删除的二次确认
172       await message.delConfirm()
173       // 发起删除
174       await ModbusApi.deleteModBusDevice(id)
175       message.success(t('common.delSuccess'))
176       // 刷新列表
177       await getList()
178     } catch {
179     }
180   }
181
182   /** 初始化 **/
183   onMounted(async () => {
184     await getList()
185   })
186 </script>