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