吉安感知网项目-前端
罗广辉
2026-01-22 27f63c34e229f6188400a93d246967c1b4dcb9e2
applications/task-work-order/src/views/orderView/orderManage/orderManage/FormDiaLog.vue
@@ -6,6 +6,7 @@
      @closed="visible = false"
      width="80%"
      destroy-on-close
      :close-on-click-modal="false"
   >
      <div class="content" style="display: flex">
         <div class="processBox" v-if="dialogMode !== 'add'">
@@ -47,6 +48,31 @@
                  <el-table-column prop="deviceName" label="设备型号" />
                  <el-table-column prop="devicePayload" label="设备负载" />
               </el-table>
               <template v-if="hasPatrolTaskList">
                  <div class="detail-title" :style="{ marginTop: pxToRem(20) }">巡查任务名称</div>
                  <el-table class="setHeight" :data="patrolTaskList" row-key="id">
                     <el-table-column prop="patrolTaskName" show-overflow-tooltip label="巡查任务名称" />
                     <el-table-column prop="patrolTaskType" show-overflow-tooltip label="巡查任务类型">
                        <template v-slot="{ row }">
                           {{ getDictLabel(row.patrolTaskType, dictObj.patrolTaskType) }}
                        </template>
                     </el-table-column>
                     <el-table-column prop="taskStatus" show-overflow-tooltip label="任务状态">
                        <template v-slot="{ row }">
                           {{ getDictLabel(row.taskStatus, dictObj.taskStatus) }}
                        </template>
                     </el-table-column>
                     <el-table-column prop="executeTime" show-overflow-tooltip label="任务执行时间" />
                     <el-table-column prop="feishou" show-overflow-tooltip label="选择飞手" />
                     <el-table-column prop="deviceId" show-overflow-tooltip label="选择设备" />
                     <el-table-column label="操作" class-name="operation-btns">
                        <template v-slot="{ row }">
                           <el-link type="primary" @click="">查看</el-link>
                        </template>
                     </el-table-column>
                  </el-table>
               </template>
            </div>
            <el-form
               class="gd-dialog-form"
@@ -201,7 +227,7 @@
<script setup>
import { computed, ref, onMounted, nextTick } from 'vue'
import { ElMessage } from 'element-plus'
import { dateRangeFormat, fieldRules, geomAnalysis, getDictLabel } from '@ztzf/utils'
import { dateRangeFormat, fieldRules, flyVisual, geomAnalysis, getDictLabel } from '@ztzf/utils'
import {
   gdWorkOrderDetailApi,
   gdWorkOrderFlowListApi,
@@ -216,6 +242,7 @@
import dayjs from 'dayjs'
import RefuseOrderDialog from '@/views/orderView/orderManage/orderManage/RefuseOrderDialog.vue'
import CommonCesiumMap from '@/components/map-container/common-cesium-map.vue'
import { gdPatrolTaskPageApi } from '@/views/orderView/orderManage/inspectionRequest/inspectionRequestApi'
// 初始化表单数据
const initForm = () => ({
@@ -233,6 +260,7 @@
const rejectVisible = ref(false)
const dictObj = inject('dictObj')
const dateRange = ref([])
const patrolTaskList = ref([])
const emit = defineEmits(['success'])
const formRef = ref(null) // 表单实例
const formData = ref(initForm()) // 表单数据
@@ -275,6 +303,8 @@
   dialogMode.value = 'edit'
   nextTick(() => {
      syncSelection()
      viewPlane && viewer.entities.remove(viewPlane)
      editPolygon()
   })
}
@@ -388,12 +418,13 @@
   drawPolygonExample.subscribe('getPolygonPositions', drawFinished)
}
let viewPlane
// 查看面
function viewPolygon() {
   if (!formData.value?.geom) return
   pointList = geomAnalysis(formData.value.geom)
   const result = pointList.map(item => [item.longitude, item.latitude]).flat()
   const mian = viewer.entities?.add({
   viewPlane = viewer.entities?.add({
      customType: 'control_group',
      position: Cesium.Cartesian3.fromDegrees(result[0], result[1]),
      polyline: {
@@ -403,7 +434,10 @@
         material: Cesium.Color.RED,
      },
   })
   viewer.flyTo(mian, { duration: 0 })
   flyVisual({
      positionsData: pointList.map(i => [i.longitude, i.latitude, i.height || 0]),
      viewer,
   })
}
// 同步关联场景
@@ -418,22 +452,27 @@
   })
}
const hasPatrolTaskList = computed(() => ['30','40','50','60'].includes(String(formData.value.workOrderStatus)))
function gdPatrolTaskPage() {
   gdPatrolTaskPageApi({ current: 1, size: 1000, workOrderId: formData.value.id }).then(res => {
      patrolTaskList.value = res.data.data.records || []
   })
}
// 打开弹框
async function open({ mode = 'add', row } = {}) {
   dialogMode.value = mode
   formData.value = dialogMode.value === 'add' ? initForm() : row
   initMap()
   if (dialogMode.value !== 'add') {
      await loadDetail()
   }
   await getDeviceList()
   if (dialogMode.value === 'add') {
      addPolygon()
   } else if (dialogMode.value === 'edit') {
      editPolygon()
   } else {
      viewPolygon()
      await loadDetail()
      hasPatrolTaskList.value && gdPatrolTaskPage()
      dialogMode.value === 'edit' ? editPolygon() : viewPolygon()
   }
   await getDeviceList()
   await nextTick()
   syncSelection()
}
@@ -446,7 +485,6 @@
}
function mapReady() {
   console.log(6363)
   dialogMode.value === 'add' && mapRef.value.flyBoundary()
}
@@ -480,7 +518,7 @@
}
.setHeight {
   max-height: 300px;
   min-height: 200px;
   //max-height: 300px;
   //min-height: 200px;
}
</style>