Skip to content

Commit a2dec90

Browse files
committed
【功能新增】IoT:设备管理界面增加批量删除功能
1 parent 8f1c660 commit a2dec90

File tree

2 files changed

+42
-2
lines changed

2 files changed

+42
-2
lines changed

src/api/iot/device/index.ts

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -82,11 +82,16 @@ export const DeviceApi = {
8282
return await request.put({ url: `/iot/device/update-status`, data })
8383
},
8484

85-
// 删除设备
85+
// 删除单个设备
8686
deleteDevice: async (id: number) => {
8787
return await request.delete({ url: `/iot/device/delete?id=` + id })
8888
},
8989

90+
// 删除多个设备
91+
deleteDeviceList: async (ids: number[]) => {
92+
return await request.delete({ url: `/iot/device/delete-list`, params: { ids: ids.join(',') } })
93+
},
94+
9095
// 导出设备
9196
exportDeviceExcel: async (params: any) => {
9297
return await request.download({ url: `/iot/device/export-excel`, params })

src/views/iot/device/device/index.vue

Lines changed: 36 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -113,13 +113,29 @@
113113
>
114114
<Icon icon="ep:download" class="mr-5px" /> 导出
115115
</el-button>
116+
<el-button
117+
type="danger"
118+
plain
119+
@click="handleDeleteList"
120+
:disabled="selectedIds.length === 0"
121+
v-hasPermi="['iot:device:delete']"
122+
>
123+
<Icon icon="ep:delete" class="mr-5px" /> 批量删除
124+
</el-button>
116125
</el-form-item>
117126
</el-form>
118127
</ContentWrap>
119128

120129
<!-- 列表 -->
121130
<ContentWrap>
122-
<el-table v-loading="loading" :data="list" :stripe="true" :show-overflow-tooltip="true">
131+
<el-table
132+
v-loading="loading"
133+
:data="list"
134+
:stripe="true"
135+
:show-overflow-tooltip="true"
136+
@selection-change="handleSelectionChange"
137+
>
138+
<el-table-column type="selection" width="55" />
123139
<el-table-column label="DeviceName" align="center" prop="deviceName">
124140
<template #default="scope">
125141
<el-link @click="openDetail(scope.row.id)">{{ scope.row.deviceName }}</el-link>
@@ -231,6 +247,7 @@ const queryFormRef = ref() // 搜索的表单
231247
const exportLoading = ref(false) // 导出加载状态
232248
const products = ref<ProductVO[]>([]) // 产品列表
233249
const deviceGroups = ref<DeviceGroupVO[]>([]) // 设备分组列表
250+
const selectedIds = ref<number[]>([]) // 选中的设备编号数组
234251
235252
/** 查询列表 */
236253
const getList = async () => {
@@ -253,6 +270,7 @@ const handleQuery = () => {
253270
/** 重置按钮操作 */
254271
const resetQuery = () => {
255272
queryFormRef.value.resetFields()
273+
selectedIds.value = [] // 清空选择
256274
handleQuery()
257275
}
258276
@@ -305,4 +323,21 @@ const handleExport = async () => {
305323
exportLoading.value = false
306324
}
307325
}
326+
327+
/** 多选框选中数据 */
328+
const handleSelectionChange = (selection: DeviceVO[]) => {
329+
selectedIds.value = selection.map((item) => item.id)
330+
}
331+
332+
/** 批量删除按钮操作 */
333+
const handleDeleteList = async () => {
334+
try {
335+
await message.delConfirm()
336+
// 执行批量删除
337+
await DeviceApi.deleteDeviceList(selectedIds.value)
338+
message.success(t('common.delSuccess'))
339+
// 刷新列表
340+
await getList()
341+
} catch {}
342+
}
308343
</script>

0 commit comments

Comments
 (0)