吉安感知网项目-前端
shuishen
2026-01-21 1380fc12070426d1d4b45f7f13e5cacb86afa6e9
applications/drone-command/src/views/detectionCountermeasure/taskSchedule/FormDiaLog.vue
@@ -12,12 +12,12 @@
               <div class="val">{{ formData.deviceSn }}</div>
            </el-col>
            <el-col :span="12">
               <div class="label">场景</div>
               <div class="val">{{ formData.defenseSceneName }}</div>
            </el-col>
            <el-col :span="12">
               <div class="label">区域</div>
               <div class="val">{{ formData.areaDivideName }}</div>
            </el-col>
            <el-col :span="12">
               <div class="label">场景</div>
               <div class="val">{{ formData.defenseSceneName }}</div>
            </el-col>
            <el-col :span="12">
               <div class="label">调度人员</div>
@@ -71,25 +71,41 @@
                  </el-select>
               </el-form-item>
            </el-col>
            <el-col :span="12">
               <el-form-item label="场景" prop="defenseSceneId">
                  <el-select class="command-select" popper-class="command-select-popper"
                     v-model="formData.defenseSceneId" placeholder="请选择" clearable @change="handleSceneChange">
                     <el-option v-for="item in sceneList" :key="item.id" :label="item.sceneName"
                        :value="item.id" />
                  </el-select>
               </el-form-item>
            </el-col>
            <el-col :span="12">
               <el-form-item label="区域" prop="areaDivideId">
                  <el-select class="command-select" popper-class="command-select-popper"
                     v-model="formData.areaDivideId" placeholder="请先选择场景" clearable
                     :disabled="!formData.defenseSceneId" @change="handleAreaChange">
                      @change="handleAreaChange">
                     <el-option v-for="item in areaList" :key="item.id" :label="item.areaName"
                        :value="item.id" />
                  </el-select>
               </el-form-item>
            </el-col>
            <el-col :span="12">
               <el-form-item label="场景" prop="defenseSceneId">
                  <el-select class="command-select" popper-class="command-select-popper"
                     v-model="formData.defenseSceneId" placeholder="请先选择区域" clearable
                     :disabled="!formData.areaDivideId" @change="handleSceneChange">
                     <el-option v-for="item in sceneList" :key="item.id" :label="item.sceneName"
                        :value="item.id" />
                  </el-select>
               </el-form-item>
            </el-col>
            <el-col :span="12">
               <el-form-item label="调度位置" prop="longitude">
                  <!--                  <el-button @click="selectLocation" style="width: 100%">-->
                  <el-button style="width: 100%">
                     {{
                        formData.longitude && formData.latitude ? `${formData.longitude}, ${formData.latitude}` :
                           '选择区域后自动带出'
                     }}
                  </el-button>
               </el-form-item>
            </el-col>
            <el-col :span="12">
               <el-form-item label="调度人员" prop="dispatchUser">
                  <el-input class="command-input" v-model="formData.dispatchUser" maxlength="50" placeholder="请输入"
@@ -103,17 +119,7 @@
                     start-placeholder="开始日期" end-placeholder="结束日期" value-format="YYYY-MM-DD HH:mm:ss" />
               </el-form-item>
            </el-col>
            <el-col :span="24">
               <el-form-item label="调度位置" prop="longitude">
                  <!--                  <el-button @click="selectLocation" style="width: 100%">-->
                  <el-button style="width: 100%">
                     {{
                        formData.longitude && formData.latitude ? `${formData.longitude}, ${formData.latitude}` :
                           '选择区域后自动带出'
                     }}
                  </el-button>
               </el-form-item>
            </el-col>
            <el-col :span="24">
               <el-form-item label="调度内容" prop="dispatchContent">
                  <el-input class="command-input" v-model="formData.dispatchContent" type="textarea" :rows="3"
@@ -158,6 +164,7 @@
import { ElMessage } from 'element-plus'
import { fwTaskScheduleDetailApi, fwTaskScheduleSubmitApi } from './taskScheduleApi'
import { fwAreaDivideListApi } from '@/views/areaManage/partition/partitionApi'
import { fwDefenseSceneListApi } from '@/views/areaManage/sceneConfig/sceneConfigApi'
import { fieldRules } from '@ztzf/utils'
import { PublicCesium } from '@/utils/cesium/publicCesium'
import * as Cesium from 'cesium'
@@ -186,7 +193,6 @@
})
const props = defineProps({
   sceneList: { type: Array, default: () => [] },
   deviceList: { type: Array, default: () => [] },
})
@@ -203,6 +209,7 @@
const titleEnum = ref({ edit: '编辑', view: '查看', add: '新增' })
const tempLocation = ref({ longitude: null, latitude: null })
const areaList = ref([]) // 区域列表
const sceneList = ref([]) // 场景列表
const deviceStatus = ref('')
const rules = {
@@ -229,26 +236,32 @@
   }
}
// 场景选择变化处理
async function handleSceneChange (sceneId) {
   formData.value.areaDivideId = ''
   if (sceneId) {
      await loadAreaList(sceneId)
async function handleAreaChange (areaId) {
   formData.value.defenseSceneId = ''
   if (areaId) {
      await loadSceneList(areaId)
   } else {
      areaList.value = []
      sceneList.value = []
   }
}
function handleAreaChange (areaId) {
   const find = areaList.value.find(item => item.id === areaId)
// 场景选择变化处理
async function handleSceneChange (sceneId) {
   const find = sceneList.value.find(item => item.id === sceneId)
   formData.value.longitude = find?.longitude
   formData.value.latitude = find?.latitude
}
// 加载区域列表
async function loadAreaList (sceneId) {
   const res = await fwAreaDivideListApi({ sceneId })
async function loadAreaList () {
   const res = await fwAreaDivideListApi()
   areaList.value = res?.data?.data ?? []
}
// 加载场景列表
async function loadSceneList(areaId) {
   const res = await fwDefenseSceneListApi({areaId})
   sceneList.value = res?.data?.data ?? []
}
// 关闭弹框
@@ -385,6 +398,10 @@
}
defineExpose({ open })
onMounted(() => {
   loadAreaList()
})
</script>
<style scoped lang="scss">
#mapContainer {