吉安感知网项目-前端
罗广辉
2026-01-14 b7c8eeabe7f6b703a5f4468e64dfe36736222df5
feat: 带筛选
3 files modified
130 ■■■■■ changed files
applications/drone-command/src/views/areaManage/defenseZone/FormDiaLog.vue 45 ●●●●● patch | view | raw | blame | history
applications/drone-command/src/views/areaManage/partition/FormDiaLog.vue 42 ●●●●● patch | view | raw | blame | history
applications/drone-command/src/views/areaManage/sceneConfig/FormDiaLog.vue 43 ●●●●● patch | view | raw | blame | history
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)
        }
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)
        }
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)
        }