吉安感知网项目-前端
shuishen
2026-01-14 7040e9649e51857e49261fb29f2a3a3bbf9f55e8
applications/drone-command/src/views/detectionCountermeasure/taskSchedule/FormDiaLog.vue
@@ -6,10 +6,7 @@
               <div>设备名称: {{ formData.deviceName }}</div>
            </el-col>
            <el-col :span="12">
               <div>设备编码: {{ formData.deviceCode }}</div>
            </el-col>
            <el-col :span="12">
               <div>设备状态: {{ getDeviceStatusLabel(formData.deviceStatus) }}</div>
               <div>设备编码: {{ formData.deviceSn }}</div>
            </el-col>
            <el-col :span="12">
               <div>场景: {{ formData.defenseSceneName }}</div>
@@ -40,20 +37,15 @@
      <el-form v-else ref="formRef" :model="formData" :rules="rules" :disabled="readonly" label-width="100px">
         <el-row>
            <el-col :span="12">
               <el-form-item label="设备名称" prop="deviceId">
               <el-form-item label="设备" prop="deviceId">
                  <el-select v-model="formData.deviceId" placeholder="请选择" clearable @change="handleDeviceChange">
                     <el-option v-for="item in deviceList" :key="item.id" :label="item.deviceName" :value="item.id" />
                  </el-select>
               </el-form-item>
            </el-col>
            <el-col :span="12">
               <el-form-item label="设备编码" prop="deviceCode">
                  <el-input v-model="formData.deviceCode" disabled placeholder="选择设备后自动带出" />
               </el-form-item>
            </el-col>
            <el-col :span="12">
               <el-form-item label="设备状态" prop="deviceStatus">
                  <el-input v-model="formData.deviceStatusLabel" disabled placeholder="选择设备后自动带出" />
               <el-form-item label="设备编码" prop="deviceSn">
                  <el-input v-model="formData.deviceSn" disabled placeholder="选择设备后自动带出" />
               </el-form-item>
            </el-col>
            <el-col :span="12">
@@ -70,6 +62,7 @@
                     placeholder="请先选择场景"
                     clearable
                     :disabled="!formData.defenseSceneId"
                     @change="handleAreaChange"
                  >
                     <el-option v-for="item in areaList" :key="item.id" :label="item.areaName" :value="item.id" />
                  </el-select>
@@ -94,9 +87,10 @@
            </el-col>
            <el-col :span="24">
               <el-form-item label="调度位置" prop="longitude">
                  <el-button @click="selectLocation" style="width: 100%">
<!--                  <el-button @click="selectLocation" style="width: 100%">-->
                  <el-button style="width: 100%">
                     {{
                        formData.longitude && formData.latitude ? `${formData.longitude}, ${formData.latitude}` : '点击选择位置'
                        formData.longitude && formData.latitude ? `${formData.longitude}, ${formData.latitude}` : '选择区域后自动带出'
                     }}
                  </el-button>
               </el-form-item>
@@ -139,6 +133,7 @@
            </el-col>
         </el-row>
      </el-form>
      <template #footer>
         <el-button @click="handleCancel">{{ readonly ? '关闭' : '取消' }}</el-button>
         <el-button v-if="!readonly" type="primary" :loading="submitting" :disabled="submitting" @click="handleSubmit">
@@ -168,7 +163,7 @@
// 初始化表单
const initForm = () => ({
   deviceId: '', // 设备ID
   deviceCode: '', // 设备编码
   deviceSn: '', // 设备编码
   deviceName: '', // 设备名称
   deviceStatus: '', // 设备状态
   deviceStatusLabel: '', // 设备状态标签
@@ -193,9 +188,6 @@
   deviceList: { type: Array, default: () => [] },
})
// 注入字典数据
const dictObj = inject('dictObj')
const emit = defineEmits(['success'])
const formRef = ref(null) // 表单实例
const formData = ref(initForm()) // 表单数据
@@ -209,16 +201,11 @@
const areaList = ref([]) // 区域列表
const rules = {
   deviceId: [{ required: true, message: '请选择设备', trigger: 'change' }],
   defenseSceneId: [{ required: true, message: '请选择场景', trigger: 'change' }],
   areaDivideId: [{ required: true, message: '请选择区域', trigger: 'change' }],
   deviceId: fieldRules(true),
   areaDivideId: fieldRules(true),
   defenseSceneId: fieldRules(true),
   dispatchUser: fieldRules(true, 50),
}
// 获取设备状态标签
function getDeviceStatusLabel(status) {
   const statusMap = { 0: '离线', 1: '在线' }
   return statusMap[status] || status
   dispatchDateRange: fieldRules(true),
}
// 设备选择变化处理
@@ -226,14 +213,12 @@
   const device = props.deviceList.find(item => item.id === deviceId)
   if (device) {
      formData.value.deviceName = device.deviceName
      formData.value.deviceCode = device.deviceCode
      formData.value.deviceSn = device.deviceSn
      formData.value.deviceStatus = device.deviceStatus
      formData.value.deviceStatusLabel = getDeviceStatusLabel(device.deviceStatus)
   } else {
      formData.value.deviceName = ''
      formData.value.deviceCode = ''
      formData.value.deviceSn = ''
      formData.value.deviceStatus = ''
      formData.value.deviceStatusLabel = ''
   }
}
@@ -245,6 +230,12 @@
   } else {
      areaList.value = []
   }
}
function handleAreaChange(areaId) {
   const find = areaList.value.find(item => item.id === areaId)
   formData.value.longitude = find?.longitude
   formData.value.latitude = find?.latitude
}
// 加载区域列表
@@ -285,7 +276,6 @@
   const data = res?.data?.data ?? {}
   formData.value = {
      ...data,
      deviceStatusLabel: getDeviceStatusLabel(data.deviceStatus),
      dispatchDateRange:
         data.dispatchStartTime && data.dispatchEndTime ? [data.dispatchStartTime, data.dispatchEndTime] : [],
   }