吉安感知网项目-前端
罗广辉
2026-06-06 5e2926edddb3e89f1aa3882290fec577246e5e2c
applications/task-work-order/src/views/orderView/orderManage/inspectionRequest/ViewDiaLog.vue
@@ -82,15 +82,22 @@
                     任务成果({{ taskResultList.length || 0 }}条)
                  </div>
                  <div class="imgBox">
                     <div v-for="item in taskResultList">
                     <div v-for="item in taskResultList.filter(item => item.resultUrl && [1,2,3].includes( item.attachmentType))">
                        <el-image
                           v-if="item.attachmentType === 0 && item.resultUrl"
                           v-if="item.attachmentType === 1"
                           :src="item.resultUrl"
                           :preview-src-list="[item.resultUrl]"
                           fit="cover"
                           preview-teleported
                        />
                        <div class="video-btn" v-if="item.attachmentType === 1 && item.resultUrl" @click="videoClick(item)">
                        <el-image
                           v-if="item.attachmentType === 2"
                           :src="item.resultUrl"
                           :preview-src-list="[item.resultUrl]"
                           fit="cover"
                           preview-teleported
                        />
                        <div class="video-btn" v-if="item.attachmentType === 3" @click="videoClick(item)">
                           <el-icon :size="30" color="#fff">
                              <VideoPlay />
                           </el-icon>
@@ -116,8 +123,9 @@
                           popper-class="gd-select-popper"
                           v-model="formData.patrolTaskType"
                           :options="workOrderTypeXT"
                           :props="taskTypeCascaderProps"
                           :props="{...taskTypeCascaderProps,multiple:true}"
                           placeholder="请选择"
                           collapse-tags
                           clearable
                        />
                     </el-form-item>
@@ -298,7 +306,7 @@
import { queryAirById, airlineListApi, algorithmGroupedApi } from '@/api/zkxt'
import * as Cesium from 'cesium'
import { useStore } from 'vuex'
import { getTaskTypeLabel, taskTypeCascaderProps, toTaskTypeCascaderValue, toTaskTypeRequestValue } from '../taskTypeOptions'
import { getTaskTypeLabel, taskTypeCascaderProps } from '../taskTypeOptions'
// 初始化表单数据
const initForm = () => ({
@@ -489,11 +497,7 @@
   if (!isValid) return
   submitting.value = true
   try {
      const payload = {
         ...formData.value,
         patrolTaskType: toTaskTypeRequestValue(formData.value.patrolTaskType),
      }
      await gdPatrolTaskRepublish(payload)
      await gdPatrolTaskRepublish(formData.value)
      ElMessage.success('更新成功')
      visible.value = false
      emit('success')
@@ -584,7 +588,6 @@
   const res = await gdPatrolTaskDetailApi({ id: row.id })
   formData.value = { ...initForm(), ...res.data.data }
   formData.value.patrolTaskType = toTaskTypeCascaderValue(formData.value.patrolTaskType)
   // 确保 algorithmIds 是数组
   if (formData.value.algorithmIds && typeof formData.value.algorithmIds === 'string') {
      formData.value.algorithmIds = formData.value.algorithmIds.split(',').filter(Boolean)
@@ -669,6 +672,18 @@
      width: calc((100% - 40px) / 5); /* 5列布局,减去4个10px间隙 */
      height: 110px;
      flex-shrink: 0;
      position: relative;
      overflow: hidden;
      border-radius: 4px;
      cursor: pointer;
      box-shadow: inset 0 0 0 1px rgba(17, 31, 68, 0.08);
      transition: box-shadow 0.16s ease;
      &:hover {
         box-shadow:
            inset 0 0 0 2px rgba(76, 52, 255, 0.48),
            0 8px 20px rgba(76, 52, 255, 0.24);
      }
   }
   .el-image {
      width: 100%;
@@ -677,11 +692,42 @@
   .video-btn {
      width: 100%;
      height: 100%;
      background-color: #9E9E9E;
      position: relative;
      overflow: hidden;
      //border: 1px solid #D8D6FF;
      border-radius: 4px;
      background:
         linear-gradient(135deg, rgba(76, 52, 255, 0.14), rgba(76, 52, 255, 0) 48%),
         linear-gradient(180deg, #F4F5FF 0%, #E9ECFF 100%);
      box-shadow: inset 0 0 0 1px rgba(255, 255, 255, 0.7);
      display: flex;
      align-items: center;
      justify-content: center;
      cursor: pointer;
      &::before {
         content: "";
         position: absolute;
         inset: 0;
         background-image: linear-gradient(
            90deg,
            rgba(76, 52, 255, 0.05) 0,
            rgba(76, 52, 255, 0.05) 1px,
            transparent 1px,
            transparent 12px
         );
         opacity: 0.42;
      }
      .el-icon {
         position: relative;
         z-index: 1;
         width: 42px;
         height: 42px;
         border-radius: 50%;
         background: rgba(76, 52, 255, 0.72);
         box-shadow: 0 4px 12px rgba(76, 52, 255, 0.2);
      }
   }
}
:deep(.el-timeline-item__timestamp) {