吉安感知网项目-前端
张含笑
2026-01-15 e65bc708df863ee0c59b39039f7db93c3ed4bd5b
applications/drone-command/src/views/detectionCountermeasure/taskSchedule/FormDiaLog.vue
@@ -1,56 +1,101 @@
<template>
   <el-dialog v-model="visible" :title="titleEnum[dialogMode]">
      <div v-if="readonly">
<template>
   <el-dialog
      class="ztzf-page-view-dialog"
      v-model="visible"
      :title="titleEnum[dialogMode]"
      destroy-on-close
      :close-on-click-modal="false"
      @closed="handleClosed"
   >
      <div v-if="readonly" class="detail-container">
         <div class="detail-title">调度详情</div>
         <el-row>
            <el-col :span="12">
               <div>设备名称: {{ formData.deviceName }}</div>
               <div class="label">设备名称</div>
               <div class="val">{{ formData.deviceName }}</div>
            </el-col>
            <el-col :span="12">
               <div>设备编码: {{ formData.deviceSn }}</div>
               <div class="label">设备编码</div>
               <div class="val">{{ formData.deviceSn }}</div>
            </el-col>
            <el-col :span="12">
               <div>场景: {{ formData.defenseSceneName }}</div>
               <div class="label">场景</div>
               <div class="val">{{ formData.defenseSceneName }}</div>
            </el-col>
            <el-col :span="12">
               <div>区域: {{ formData.areaDivideName }}</div>
               <div class="label">区域</div>
               <div class="val">{{ formData.areaDivideName }}</div>
            </el-col>
            <el-col :span="12">
               <div>调度人员: {{ formData.dispatchUser }}</div>
               <div class="label">调度人员</div>
               <div class="val">{{ formData.dispatchUser }}</div>
            </el-col>
            <el-col :span="12">
               <div>调度位置: {{ formData.longitude }}, {{ formData.latitude }}</div>
               <div class="label">调度位置</div>
               <div class="val">{{ formData.longitude }}, {{ formData.latitude }}</div>
            </el-col>
            <el-col :span="12">
               <div>调度日期: {{ formData.dispatchStartTime }} ~ {{ formData.dispatchEndTime }}</div>
               <div class="label">调度日期</div>
               <div class="val">{{ formData.dispatchStartTime }} ~ {{ formData.dispatchEndTime }}</div>
            </el-col>
            <el-col :span="24">
               <div>调度内容: {{ formData.dispatchContent }}</div>
               <div class="label">调度内容</div>
               <div class="val">{{ formData.dispatchContent }}</div>
            </el-col>
            <el-col :span="24">
               <div>调度结果: {{ formData.dispatchResult }}</div>
               <div class="label">调度结果</div>
               <div class="val">{{ formData.dispatchResult }}</div>
            </el-col>
            <el-col :span="24">
               <div>处理措施: {{ formData.disposeMeasure }}</div>
               <div class="label">处理措施</div>
               <div class="val">{{ formData.disposeMeasure }}</div>
            </el-col>
         </el-row>
      </div>
      <el-form v-else ref="formRef" :model="formData" :rules="rules" :disabled="readonly" label-width="100px">
      <el-form
         v-else
         ref="formRef"
         :model="formData"
         :rules="rules"
         :disabled="readonly"
         label-width="100px"
         class="dialog-form"
      >
         <el-row>
            <el-col :span="12">
               <el-form-item label="设备" prop="deviceId">
                  <el-select v-model="formData.deviceId" placeholder="请选择" clearable @change="handleDeviceChange">
                  <el-select
                     class="ztzf-data-cockpit-select"
                     popper-class="ztzf-data-cockpit-select-popper"
                     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="deviceSn">
                  <el-input v-model="formData.deviceSn" disabled placeholder="选择设备后自动带出" />
                  <el-input
                     class="ztzf-data-cockpit-search-input"
                     v-model="formData.deviceSn"
                     disabled
                     placeholder="选择设备后自动带出"
                  />
               </el-form-item>
            </el-col>
            <el-col :span="12">
               <el-form-item label="场景" prop="defenseSceneId">
                  <el-select v-model="formData.defenseSceneId" placeholder="请选择" clearable @change="handleSceneChange">
                  <el-select
                     class="ztzf-data-cockpit-select"
                     popper-class="ztzf-data-cockpit-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>
@@ -58,6 +103,8 @@
            <el-col :span="12">
               <el-form-item label="区域" prop="areaDivideId">
                  <el-select
                     class="ztzf-data-cockpit-select"
                     popper-class="ztzf-data-cockpit-select-popper"
                     v-model="formData.areaDivideId"
                     placeholder="请先选择场景"
                     clearable
@@ -70,12 +117,20 @@
            </el-col>
            <el-col :span="12">
               <el-form-item label="调度人员" prop="dispatchUser">
                  <el-input v-model="formData.dispatchUser" maxlength="50" placeholder="请输入" clearable />
                  <el-input
                     class="ztzf-data-cockpit-search-input"
                     v-model="formData.dispatchUser"
                     maxlength="50"
                     placeholder="请输入"
                     clearable
                  />
               </el-form-item>
            </el-col>
            <el-col :span="12">
               <el-form-item label="调度日期" prop="dispatchDateRange">
                  <el-date-picker
                     class="ztzf-data-cockpit-date-picker"
                     popper-class="ztzf-data-cockpit-date-picker-popper"
                     v-model="formData.dispatchDateRange"
                     type="datetimerange"
                     range-separator="至"
@@ -87,7 +142,7 @@
            </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}` : '选择区域后自动带出'
@@ -98,6 +153,7 @@
            <el-col :span="24">
               <el-form-item label="调度内容" prop="dispatchContent">
                  <el-input
                     class="ztzf-data-cockpit-search-input"
                     v-model="formData.dispatchContent"
                     type="textarea"
                     :rows="3"
@@ -110,6 +166,7 @@
            <el-col :span="24">
               <el-form-item label="调度结果" prop="dispatchResult">
                  <el-input
                     class="ztzf-data-cockpit-search-input"
                     v-model="formData.dispatchResult"
                     type="textarea"
                     :rows="3"
@@ -122,6 +179,7 @@
            <el-col :span="24">
               <el-form-item label="处理措施" prop="disposeMeasure">
                  <el-input
                     class="ztzf-data-cockpit-search-input"
                     v-model="formData.disposeMeasure"
                     type="textarea"
                     :rows="3"
@@ -135,9 +193,16 @@
      </el-form>
      <template #footer>
         <el-button @click="handleCancel">{{ readonly ? '关闭' : '取消' }}</el-button>
         <el-button v-if="!readonly" type="primary" :loading="submitting" :disabled="submitting" @click="handleSubmit">
            确定
         <el-button color="#2B2B4C" @click="handleCancel">{{ readonly ? '关闭' : '取消' }}</el-button>
         <el-button
            color="#284FE3"
            v-if="!readonly"
            type="primary"
            :loading="submitting"
            :disabled="submitting"
            @click="handleSubmit"
         >
            保存
         </el-button>
      </template>
@@ -152,7 +217,7 @@
</template>
<script setup>
import { computed, nextTick, ref, inject } from 'vue'
import { computed, nextTick, ref } from 'vue'
import { ElMessage } from 'element-plus'
import { fwTaskScheduleDetailApi, fwTaskScheduleSubmitApi } from './taskScheduleApi'
import { fwAreaDivideListApi } from '@/views/areaManage/partition/partitionApi'
@@ -249,6 +314,10 @@
   visible.value = false
}
function handleClosed() {
   formData.value = initForm()
}
// 提交新增/编辑
async function handleSubmit() {
   const isValid = await formRef.value?.validate().catch(() => false)