diff --git a/src/api/iot/device/index.ts b/src/api/iot/device/index.ts
index 46e18c29..5ab9bdb7 100644
--- a/src/api/iot/device/index.ts
+++ b/src/api/iot/device/index.ts
@@ -51,8 +51,8 @@ export const DeviceApi = {
},
// 删除物联设备
- deleteDevice: async (id: number) => {
- return await request.delete({ url: `/iot/device/delete?id=` + id })
+ deleteDevice: async (ids: string) => {
+ return await request.delete({ url: `/iot/device/delete?ids=` + ids })
},
// 复制物联设备
@@ -82,8 +82,8 @@ export const DeviceApi = {
},
// 删除设备属性
- deleteDeviceAttribute: async (id: number) => {
- return await request.delete({ url: `/iot/device-contact-model/delete?id=` + id })
+ deleteDeviceAttribute: async (ids: string) => {
+ return await request.delete({ url: `/iot/device-contact-model/delete?ids=` + ids })
},
// 获得设备属性
diff --git a/src/api/iot/devicemodel/index.ts b/src/api/iot/devicemodel/index.ts
index e49cc52a..77aa1048 100644
--- a/src/api/iot/devicemodel/index.ts
+++ b/src/api/iot/devicemodel/index.ts
@@ -36,6 +36,11 @@ export const DeviceModelApi = {
return await request.delete({ url: `/iot/device-model/delete?id=` + id })
},
+ // 复制采集设备模型
+ copyDeviceModel: async (id: number) => {
+ return await request.post({ url: `/iot/device-model/copy`, params: { id } })
+ },
+
// 导出采集设备模型 Excel
exportDeviceModel: async (params) => {
return await request.download({ url: `/iot/device-model/export-excel`, params })
diff --git a/src/views/iot/device/DeviceForm.vue b/src/views/iot/device/DeviceForm.vue
index 597b02de..c40f6c77 100644
--- a/src/views/iot/device/DeviceForm.vue
+++ b/src/views/iot/device/DeviceForm.vue
@@ -76,9 +76,9 @@
-
+
新增
+
+ 批量删除
+
()
@@ -227,18 +233,32 @@ const openForm = (type: string, id?: number) => {
}
/** 删除按钮操作 */
-const handleDelete = async (id: number) => {
+const buildIdsParam = (ids: number | number[]) => {
+ return Array.isArray(ids) ? ids.join(',') : String(ids)
+}
+
+const handleDelete = async (ids: number | number[]) => {
try {
// 删除的二次确认
await message.delConfirm()
// 发起删除
- await DeviceApi.deleteDeviceAttribute(id)
+ await DeviceApi.deleteDeviceAttribute(buildIdsParam(ids))
message.success(t('common.delSuccess'))
+ selectedIds.value = []
+ tableRef.value?.clearSelection?.()
// 刷新列表
await getList()
} catch {}
}
+const handleBatchDelete = async () => {
+ if (!selectedIds.value.length) {
+ message.error('请选择需要删除的数据')
+ return
+ }
+ await handleDelete(selectedIds.value)
+}
+
onMounted(async () => {
try {
const data = await DeviceAttributeTypeApi.getDeviceAttributeTypePage({ pageNo: 1, pageSize: 10 })
diff --git a/src/views/iot/device/index.vue b/src/views/iot/device/index.vue
index 55ad5899..f72ac725 100644
--- a/src/views/iot/device/index.vue
+++ b/src/views/iot/device/index.vue
@@ -74,6 +74,9 @@
>
导出
+
+ 批量删除
+
@@ -81,13 +84,17 @@
-
-
+
+
+
-
+
-
+
-
+
-
+
@@ -205,6 +212,8 @@ defineOptions({ name: 'Device' })
const message = useMessage() // 消息弹窗
const { t } = useI18n() // 国际化
+const tableRef = ref()
+
const loading = ref(true) // 列表的加载中
const list = ref([]) // 列表的数据
const total = ref(0) // 列表的总页数
@@ -228,6 +237,11 @@ const queryParams = reactive({
const queryFormRef = ref() // 搜索的表单
const exportLoading = ref(false) // 导出的加载中
+const selectedIds = ref([])
+const handleSelectionChange = (rows: any[]) => {
+ selectedIds.value = rows?.map((row) => row.id).filter((id) => id !== undefined) ?? []
+}
+
/** 查询列表 */
const getList = async () => {
loading.value = true
@@ -259,18 +273,37 @@ const openForm = (type: string, id?: number) => {
}
/** 删除按钮操作 */
-const handleDelete = async (id: number) => {
+const buildIdsParam = (ids: number | number[]) => {
+ return Array.isArray(ids) ? ids.join(',') : String(ids)
+}
+
+const handleDelete = async (ids: number | number[]) => {
try {
// 删除的二次确认
await message.delConfirm()
// 发起删除
- await DeviceApi.deleteDevice(id)
+ const idsParam = buildIdsParam(ids)
+ await DeviceApi.deleteDevice(idsParam)
message.success(t('common.delSuccess'))
+ selectedIds.value = []
+ tableRef.value?.clearSelection?.()
+ if (attributeDeviceId.value && idsParam.split(',').includes(String(attributeDeviceId.value))) {
+ attributeDeviceId.value = undefined
+ attributeDeviceName.value = ''
+ }
// 刷新列表
await getList()
} catch {}
}
+const handleBatchDelete = async () => {
+ if (!selectedIds.value.length) {
+ message.error('请选择需要删除的数据')
+ return
+ }
+ await handleDelete(selectedIds.value)
+}
+
const handleCopy = async (id: number) => {
try {
await DeviceApi.copyDevice(id)
diff --git a/src/views/iot/devicemodel/components/ModelAttributeList.vue b/src/views/iot/devicemodel/components/ModelAttributeList.vue
index 25294714..58c894f8 100644
--- a/src/views/iot/devicemodel/components/ModelAttributeList.vue
+++ b/src/views/iot/devicemodel/components/ModelAttributeList.vue
@@ -42,7 +42,7 @@
/>
-
+
+
搜索
重置
@@ -78,7 +78,7 @@
plain
@click="handleExport"
:loading="exportLoading"
- v-hasPermi="['iot:device-model-attribute:export']"
+ v-hasPermi="['iot:device-model:export']"
>
导出
@@ -89,7 +89,7 @@
-
+
@@ -106,13 +106,13 @@
:formatter="dateFormatter"
width="180px"
/>
-
+
编辑
@@ -120,7 +120,7 @@
link
type="danger"
@click="handleDelete(scope.row.id)"
- v-hasPermi="['iot:device-model-attribute:delete']"
+ v-hasPermi="['iot:device-model:delete']"
>
删除
@@ -191,7 +191,7 @@ watch(
)
/** 查询列表 */
-const getList = async () => {
+async function getList() {
loading.value = true
try {
const data = await DeviceModelAttributeApi.getDeviceModelAttributePage(queryParams)
@@ -203,7 +203,7 @@ const getList = async () => {
}
/** 搜索按钮操作 */
-const handleQuery = () => {
+function handleQuery() {
if (!props.id) {
return
}
@@ -266,4 +266,4 @@ onMounted(async () => {
})
-
\ No newline at end of file
+
diff --git a/src/views/iot/devicemodel/index.vue b/src/views/iot/devicemodel/index.vue
index e4555624..077037a6 100644
--- a/src/views/iot/devicemodel/index.vue
+++ b/src/views/iot/devicemodel/index.vue
@@ -43,7 +43,7 @@
-
+
+
搜索
重置
@@ -90,11 +90,15 @@
+ v-loading="loading"
+ :data="list"
+ :stripe="true"
+ :show-overflow-tooltip="true"
+ highlight-current-row
+ >
-
+
@@ -109,6 +113,15 @@ v-loading="loading" :data="list" :stripe="true" :show-overflow-tooltip="true" hi
/>
+ 点位
+
+ 复制
+
-
+
-
+
+
+
+
+
+
@@ -231,14 +249,31 @@ const handleExport = async () => {
}
}
-/** 选中行操作 */
-const currentRow = ref({}) // 选中行
-const handleCurrentChange = (row) => {
- currentRow.value = row
+const attributeModelId = ref(undefined)
+const attributeModelName = ref('')
+
+const modelAttributeTabLabel = computed(() => {
+ if (!attributeModelId.value) {
+ return '采集点'
+ }
+ return attributeModelName.value ? `采集点:${attributeModelName.value}` : '采集点'
+})
+
+const handleShowAttribute = (row: any) => {
+ attributeModelId.value = row?.id
+ attributeModelName.value = row?.name ?? ''
+}
+
+const handleCopy = async (id: number) => {
+ try {
+ await DeviceModelApi.copyDeviceModel(id)
+ message.success('复制成功')
+ await getList()
+ } catch {}
}
/** 初始化 **/
onMounted(() => {
getList()
})
-
\ No newline at end of file
+