From b7c8eeabe7f6b703a5f4468e64dfe36736222df5 Mon Sep 17 00:00:00 2001
From: 罗广辉 <guanghui.luo@foxmail.com>
Date: Wed, 14 Jan 2026 10:07:48 +0800
Subject: [PATCH] feat: 带筛选

---
 applications/drone-command/src/views/areaManage/defenseZone/FormDiaLog.vue |   45 ++++++++------
 applications/drone-command/src/views/areaManage/partition/FormDiaLog.vue   |   42 ++++++++-----
 applications/drone-command/src/views/areaManage/sceneConfig/FormDiaLog.vue |   43 ++++++++-----
 3 files changed, 77 insertions(+), 53 deletions(-)

diff --git a/applications/drone-command/src/views/areaManage/defenseZone/FormDiaLog.vue b/applications/drone-command/src/views/areaManage/defenseZone/FormDiaLog.vue
index 225f47f..ed069a0 100644
--- a/applications/drone-command/src/views/areaManage/defenseZone/FormDiaLog.vue
+++ b/applications/drone-command/src/views/areaManage/defenseZone/FormDiaLog.vue
@@ -26,22 +26,28 @@
 							<el-form-item label="防区面积" prop="zoneArea">{{ formatZoneArea(formData.zoneArea) }}</el-form-item>
 						</el-col>
 						<el-col :span="24">
-							<el-form-item label="关联场景" prop="defenseSceneIds">
-								<el-table
-									ref="sceneTableRef"
-									:data="sceneList"
-									row-key="id"
-									@selection-change="handleSceneSelectionChange"
-								>
-									<el-table-column type="selection" width="55" />
-									<el-table-column prop="sceneName" label="场景名称" />
-									<el-table-column prop="sceneType" label="场景类型">
-										<template v-slot="{ row }">
-											{{ getDictLabel(row.sceneType, dictObj.sceneType) }}
-										</template>
-									</el-table-column>
-								</el-table>
-							</el-form-item>
+							<div>
+								<div>
+									关联场景
+									<el-input v-model="searchName" placeholder="请输入" clearable></el-input>
+								</div>
+								<el-form-item label="关联场景" prop="defenseSceneIds" label-width="0">
+									<el-table
+										ref="sceneTableRef"
+										:data="sceneList.filter(item => item.sceneName.includes(searchName))"
+										row-key="id"
+										@selection-change="handleSceneSelectionChange"
+									>
+										<el-table-column type="selection" width="55" :reserve-selection="true" />
+										<el-table-column prop="sceneName" label="场景名称" />
+										<el-table-column prop="sceneType" label="场景类型">
+											<template v-slot="{ row }">
+												{{ getDictLabel(row.sceneType, dictObj.sceneType) }}
+											</template>
+										</el-table-column>
+									</el-table>
+								</el-form-item>
+							</div>
 						</el-col>
 					</el-row>
 				</el-form>
@@ -85,6 +91,7 @@
 const readonly = computed(() => dialogMode.value === 'view')
 const titleEnum = ref({ edit: '编辑', view: '查看', add: '新增' })
 const sceneTableRef = ref(null)
+const searchName = ref('')
 const sceneList = ref([]) // 关联场景列表
 const selectedSceneRows = ref([]) // 选中场景
 const dictObj = inject('dictObj')
@@ -139,14 +146,14 @@
 	sceneList.value = res?.data?.data ?? []
 	if (readonly.value) {
 		const ids = getSceneIdList()
-		sceneList.value = sceneList.value.filter(item => ids.includes(String(item.id)))
+		sceneList.value = sceneList.value.filter(item => ids.includes(item.id))
 	}
 }
 
 // 获取场景ID列表
 function getSceneIdList() {
 	if (!formData.value.defenseSceneIds) return []
-	return formData.value.defenseSceneIds.split(',').filter(Boolean)
+	return formData.value.defenseSceneIds.split(',')
 }
 
 // 关联场景变更
@@ -162,7 +169,7 @@
 	const ids = getSceneIdList()
 	const rows = []
 	sceneList.value.forEach(row => {
-		if (ids.includes(String(row.id))) {
+		if (ids.includes(row.id)) {
 			sceneTableRef.value.toggleRowSelection(row, true)
 			rows.push(row)
 		}
diff --git a/applications/drone-command/src/views/areaManage/partition/FormDiaLog.vue b/applications/drone-command/src/views/areaManage/partition/FormDiaLog.vue
index 4141919..4d2e6d3 100644
--- a/applications/drone-command/src/views/areaManage/partition/FormDiaLog.vue
+++ b/applications/drone-command/src/views/areaManage/partition/FormDiaLog.vue
@@ -97,22 +97,28 @@
 							</el-form-item>
 						</el-col>
 						<el-col :span="24">
-							<el-form-item label="关联设备" prop="deviceIds">
-								<el-table
-									ref="deviceTableRef"
-									:data="deviceOptions"
-									row-key="id"
-									@selection-change="handleDeviceSelectionChange"
-								>
-									<el-table-column type="selection" width="55" />
-									<el-table-column prop="deviceName" label="设备名称" />
-									<el-table-column prop="deviceType" label="类型">
-										<template v-slot="{ row }">
-											{{ getDictLabel(row.deviceType, dictObj.deviceType) }}
-										</template>
-									</el-table-column>
-								</el-table>
-							</el-form-item>
+							<div>
+								<div>
+									关联设备
+									<el-input v-model="searchName" placeholder="请输入" clearable></el-input>
+								</div>
+								<el-form-item prop="deviceIds" label-width="0">
+									<el-table
+										ref="deviceTableRef"
+										:data="deviceOptions.filter(item => item.deviceName.includes(searchName))"
+										row-key="id"
+										@selection-change="handleDeviceSelectionChange"
+									>
+										<el-table-column type="selection" width="55" :reserve-selection="true" />
+										<el-table-column prop="deviceName" label="设备名称" />
+										<el-table-column prop="deviceType" label="类型">
+											<template v-slot="{ row }">
+												{{ getDictLabel(row.deviceType, dictObj.deviceType) }}
+											</template>
+										</el-table-column>
+									</el-table>
+								</el-form-item>
+							</div>
 						</el-col>
 					</el-row>
 				</el-form>
@@ -165,6 +171,7 @@
 const titleEnum = ref({ edit: '编辑', view: '查看', add: '新增' })
 const flyDateRange = ref([]) // 飞行时间
 const deviceTableRef = ref(null)
+const searchName = ref('')
 const selectedDeviceRows = ref([])
 const policeStationOptions = ref([]) // 关联派出所
 const deviceOptions = ref([]) // 关联设备
@@ -331,8 +338,9 @@
 	if (!deviceTableRef.value) return
 	deviceTableRef.value.clearSelection()
 	const rows = []
+	const arr = formData.value.deviceIds.split(',')
 	deviceOptions.value.forEach(row => {
-		if (formData.value.deviceIds.includes(row.id)) {
+		if (arr.includes(row.id)) {
 			deviceTableRef.value.toggleRowSelection(row, true)
 			rows.push(row)
 		}
diff --git a/applications/drone-command/src/views/areaManage/sceneConfig/FormDiaLog.vue b/applications/drone-command/src/views/areaManage/sceneConfig/FormDiaLog.vue
index 8d6b6ac..cc8f386 100644
--- a/applications/drone-command/src/views/areaManage/sceneConfig/FormDiaLog.vue
+++ b/applications/drone-command/src/views/areaManage/sceneConfig/FormDiaLog.vue
@@ -72,22 +72,29 @@
 							</el-form-item>
 						</el-col>
 						<el-col :span="24">
-							<el-form-item label="关联区域" prop="areaDivideIds">
-								<el-table
-									ref="areaTableRef"
-									:data="areaList"
-									row-key="id"
-									@selection-change="handleAreaSelectionChange"
-								>
-									<el-table-column type="selection" width="55" />
-									<el-table-column prop="areaName" label="区域名称" />
-									<el-table-column prop="areaType" label="区域类型">
-										<template v-slot="{ row }">
-											{{ getDictLabel(row.areaType, dictObj.areaType) }}
-										</template>
-									</el-table-column>
-								</el-table>
-							</el-form-item>
+							<div>
+								<div>
+									关联区域
+									<el-input v-model="searchName" placeholder="请输入" clearable></el-input>
+								</div>
+
+								<el-form-item prop="areaDivideIds" label-width="0">
+									<el-table
+										ref="areaTableRef"
+										:data="areaList.filter(item => item.areaName.includes(searchName))"
+										row-key="id"
+										@selection-change="handleAreaSelectionChange"
+									>
+										<el-table-column type="selection" width="55" :reserve-selection="true" />
+										<el-table-column prop="areaName" label="区域名称" />
+										<el-table-column prop="areaType" label="区域类型">
+											<template v-slot="{ row }">
+												{{ getDictLabel(row.areaType, dictObj.areaType) }}
+											</template>
+										</el-table-column>
+									</el-table>
+								</el-form-item>
+							</div>
 						</el-col>
 					</el-row>
 				</el-form>
@@ -134,6 +141,7 @@
 const readonly = computed(() => dialogMode.value === 'view')
 const titleEnum = ref({ edit: '编辑', view: '查看', add: '新增' })
 const areaTableRef = ref(null)
+const searchName = ref('')
 const areaList = ref([]) // 关联区域列表
 const selectedAreaRows = ref([]) //选中列表
 const dictObj = inject('dictObj')
@@ -229,8 +237,9 @@
 	if (!areaTableRef.value) return
 	areaTableRef.value.clearSelection()
 	const rows = []
+	const arr = formData.value.areaDivideIds.split(',')
 	areaList.value.forEach(row => {
-		if (formData.value.areaDivideIds.includes(row.id)) {
+		if (arr.includes(row.id)) {
 			areaTableRef.value.toggleRowSelection(row, true)
 			rows.push(row)
 		}

--
Gitblit v1.9.3