无人机管理后台前端(已迁走)
chenyao
2025-11-17 233e4fc4f35bd00a36ee34a7fbf5e47b41db26db
src/views/job/components/DeviceJobDetails.vue
@@ -4,7 +4,7 @@
      :width="pxToRem(1800)" :close-on-click-modal="false" :destroy-on-close="true">
      <div class="content">
         <div class="contentLeft">
            <div class="machineTableDetailsTitle"><span>详情</span></div>
            <div class="machineTableDetailsTitle"><img src="/src/assets/images/task/sign.svg" alt=""><span>详情</span></div>
            <div class="infoBox">
               <div class="itemBoxLeft">
                  <div v-for="(item, index) in infoList" :key="index" class="itemCon">
@@ -29,12 +29,15 @@
            </div>
            <JobRelatedEvents :jobTimes="jobTimes" :batchNo="batchNo" />
            <div class="devicetitle" v-if="isShow">
            <div>
                  <img src="/src/assets/images/task/sign.svg" alt="">
               <p>
                  成果数据
                  <span>{{ total }}</span>
                  个
               </p>
               <div class="rightBox">
            </div>
               <div class="rightBox" v-if="total">
                  <div class="downloadBtn" @click="htlsrwxq === 100 && downloadFun()">
                     <el-progress v-if="htlsrwxq !== 100" :percentage="htlsrwxq" :show-text="false" striped striped-flow :duration="1" />
                     <div class="downloadBtnText">
@@ -95,7 +98,7 @@
                        :initial-index="index"
                        fit="cover"
                     />
                  <el-dialog
              class="ztzf-dialog"
              append-to-body
@@ -117,7 +120,7 @@
            </div>
         </el-dialog>
                  </div>
               </template>
            </div>
@@ -128,7 +131,7 @@
               @close="showViewer = false"
            />
         </div>
         <div class="content-right" v-if="isShow">
            <DeviceJobDetailsMap
               :detailsData="detailsData"
@@ -151,7 +154,7 @@
<script setup>
import PanoramaPopup from '@/components/PanoramaPopup/PanoramaPopup.vue';
import { getShowImg, getSmallImg, getzsSmallImg,getzsShowImg } from '@/utils/util';
import { getaiImagesPageAPI,cancelDownloadApi,getDownloadStatusApi,attachDownload} from '@/api/dataCenter/dataCenter';
import { getaiImagesPageAPI,cancelDownloadApi,getDownloadStatusApi,attachDownload,aiImagesPage} from '@/api/dataCenter/dataCenter';
import { pxToRem } from '@/utils/rem'
import JobRelatedEvents from './JobRelatedEvents.vue'
import { getEventMediaListApi, getJobDetails, getJobInfoFiles,getJobsAllFiles } from '@/api/job/task'
@@ -159,6 +162,7 @@
import { droneEventList } from '../const/drc'
import { ElMessage,ElLoading } from 'element-plus'
import { useStore } from 'vuex';
import EventBus from '@/utils/eventBus';
const store = useStore();
const htlsrwxq = computed(() => store.state.common.downloadProgress?.htlsrwxq || 100)
const isShow = defineModel('show')
@@ -181,7 +185,7 @@
   { name: '任务类型', value: '', field: 'industry_type_str' },
   { name: '飞行事件', value: '', field: 'event_number' },
   { name: '所属机巢', value: '', field: 'device_names' },
   { name: '所属单位', value: '', field: 'dept_name' },
   { name: '所属部门', value: '', field: 'dept_name' },
   { name: '任务时间', value: '', field: 'cycle_time_value' },
   { name: '关联算法', value: '', field: 'ai_type_str' },
   { name: '任务描述', value: '', field: 'remark' },
@@ -217,17 +221,19 @@
)
const getAchievement = () => {
   if (!props.jobId) return
   const attachmentsParams = {
      'wayLineJobId': props.jobId,
      'resultTypes': [0, 1, 3, 4, 5],
      'orderByCreateTime': true,
   }
  const attachmentsParams = {
    'wayLineJobId': props.jobId,
    'resultTypes': [0, 1, 2, 4, 5],
    'orderByCreateTime': true,
    current: 1,
    size: 2000,
  }
   const pageParams = {
      current: 1,
      size: 2000,
   }
      getaiImagesPageAPI(attachmentsParams,pageParams ).then(res => {
  aiImagesPage(attachmentsParams ).then(res => {
      achievementList.value = res.data.data.records.map(i => ({
         ...i,
         checked: false,
@@ -235,7 +241,7 @@
         showUrl: i.resultType === 4 ? getzsShowImg(i.link) : getShowImg(i.link),
      }))
      total.value = res.data.data.total
      console.log('成果数据', res.data.data)
      // console.log('成果数据', res.data.data)
   })
}
const jumpMore = () => {
@@ -272,8 +278,8 @@
      }).then(result => {
         if (result.data.code !== 200) return
         yuanImages.value = result.data.data.records
      })
      })
      // flystatus.value = res.data.data.ai_type_str
@@ -300,7 +306,7 @@
}
// 下载
const downloadFun = async () => {
   const list = achievementList.value.filter(i => i.checked)
   const list = achievementList.value.filter(i => i.checked)
   console.log('list',list);
   if (!list?.length) return ElMessage.warning('请选择文件')
   if (list.length === 1) {
@@ -330,7 +336,7 @@
// 从地图点击图片预览
const showViewer = ref(false)
const activeIndex = ref(0)
const previewUrls = ref([])
const previewUrls = ref([])
const showImageeclick = (list, index, categoriestype) => {
   if (categoriestype === 5) {
      panoramaParamsShow.value = true
@@ -345,7 +351,9 @@
function cancelDownload() {
   cancelDownloadApi({ type:'htlsrwxq' }).then(res =>{
      ElMessage.success('取消成功')
   })
   }).catch(e =>{
    EventBus.emit('useGlobalWS-messageHandler', {biz_code: 'DOWNLOAD_PROGRESS',data:{status: 'CANCELLED',type:'htlsrwxq'}})
  })
}
onMounted(() => {
   getDetails()
@@ -382,14 +390,18 @@
      .machineTableDetailsTitle {
         margin-bottom: 10px;
         background: url('/src/assets/images/task/detailtitle.png') no-repeat center;
         // background: url('/src/assets/images/task/detailtitle.png') no-repeat center;
         border-bottom: 2px solid #e4e7ed;
         background-size: 100% 100%;
         img{
         width: 15px;
         height: 15px;}
         span {
            display: inline-block;
            margin-left: 30px;
            margin-left: 10px;
            font-size: 16px;
            color: #0282ff;
            // color: #0282ff;
            color: #303133;
            line-height: 20px;
            text-align: left;
            margin-bottom: 8px;
@@ -398,12 +410,13 @@
      .devicetitle {
         margin-bottom: 16px;
         background: url('/src/assets/images/task/detailtitle.png') no-repeat center;
         // background: url('/src/assets/images/task/detailtitle.png') no-repeat center;
         border-bottom: 2px solid #e4e7ed;
         background-size: 100% 100%;
         display: flex;
         justify-content: space-between;
         align-content: center;
.rightBox{
         .rightBox{
            display: flex;
            align-items: center;
            padding-right: 10px;
@@ -436,7 +449,7 @@
                  :deep(){
                     .el-progress-bar__outer{
                        height: 26px !important;
                        height: 28px !important;
                        border-radius: 0 !important;
                        background: transparent !important;
@@ -449,9 +462,12 @@
            }
         }
         img{
         width: 15px;
         height: 15px;}
         p {
            display: inline-block;
            margin-left: 30px;
            margin-left: 10px;
            font-size: 16px;
            color: #363636;
            line-height: 20px;