吉安感知网项目-前端
罗广辉
2026-08-13 1d552a3bad95caae4af15322df28e6240b797693
uniapps/work-app/src/subPackages/workDetail/index.vue
@@ -39,7 +39,7 @@
               </div>
               <div class="orderRow">
                  <div class="rowTitle">工单状态</div>
                  <template v-if="[1, 3].includes(workDetailData.eventStatus)">
                  <!-- <template v-if="[1, 3].includes(workDetailData.eventStatus)">
                     <picker
                        mode="selector"
                        :range="statusOptions"
@@ -53,8 +53,8 @@
                           <text class="picker-arrow">▼</text>
                        </div>
                     </picker>
                  </template>
                  <div v-else>{{ getStatusLabel(workDetailData.eventStatus) }}</div>
                  </template> -->
                  <div>{{ getStatusLabel(workDetailData.eventStatus) }}</div>
               </div>
               <div class="orderRow">
                  <div class="rowTitle">工单处置人</div>
@@ -83,7 +83,12 @@
               </div>
               <div class="orderRow">
                  <div class="rowTitle">工单位置</div>
                  <div class="rowAddress" @click="jumpMap(workDetailData)">{{ workDetailData.eventLocation }}</div>
                  <div class="" v-if="workDetailData.attachmentType == 3">
                     {{ workDetailData.areaCode }}
                  </div>
                  <div v-else class="rowAddress" @click="jumpMap(workDetailData)">
                     {{ workDetailData.eventLocation }}
                  </div>
               </div>
            </div>
         </div>
@@ -160,7 +165,7 @@
<script setup>
// import { getShowImg, getSmallImg } from '@/utils/util'
import { getGddetailedData, backGdApi, shareCacheApi, updateStatus } from '/src/api/work/index.js'
import { getGddetailedData, backGdApi, shareCacheApi, updateStatus, addDisposeRecord } from '/src/api/work/index.js'
import { getWebViewUrl } from '@/utils/index.js'
import WebViewPlus from '@/components/WebViewPlus.vue'
import { onShow } from '@dcloudio/uni-app'
@@ -175,7 +180,7 @@
const showCompleteModal = ref(false)
const completeContent = ref('')
const completing = ref(false)
const AI_IMG_CACHE_KEY_PREFIX = 'work-detail-ai-img-'
const PREVIEW_IMG_CACHE_KEY_PREFIX = 'work-detail-ai-img-'
// 状态选项列表
const statusOptions = [
@@ -194,28 +199,30 @@
   return option?.name || ''
})
// 页面加载时读取预览图缓存
onLoad(async options => {
   eventNum.value = options.id
   const aiImgCacheKey = `${AI_IMG_CACHE_KEY_PREFIX}${options.id}`
   const aiImg = uni.getStorageSync(aiImgCacheKey)
   uni.removeStorageSync(aiImgCacheKey)
   await getDataList(options.id, aiImg)
   const previewImgCacheKey = `${PREVIEW_IMG_CACHE_KEY_PREFIX}${options.id}`
   const previewUrl = uni.getStorageSync(previewImgCacheKey)
   uni.removeStorageSync(previewImgCacheKey)
   await getDataList(options.id, previewUrl)
   checkEnvironment()
   viewUrl.value = getWebViewUrl('/workDetail', { workDetailData: JSON.stringify(workDetailData.value) })
})
// 页面显示时刷新工单详情
onShow(() => {
   getDataList(eventNum.value)
})
// 获取工单详情并保留 AI 图片
const getDataList = async (val, aiImg) => {
// 获取工单详情并保留预览原图
const getDataList = async (val, previewUrl) => {
   const params = {
      id: val,
   }
   const res = await getGddetailedData(params)
   const response = res.data.data
   workDetailData.value = { ...response, aiImg: aiImg || workDetailData.value.aiImg }
   workDetailData.value = { ...response, previewUrl: previewUrl || workDetailData.value.previewUrl }
}
// 获取状态文本
@@ -294,11 +301,12 @@
      current: currentIndex,
   })
}
// 获取详情预览图片列表
const getImageList = computed(() => {
   const imageArr = []
   const detail = workDetailData.value
   if (detail.eventImageUrl) {
      imageArr.push(detail.aiImg || detail.eventImageUrl)
      imageArr.push(detail.previewUrl || detail.eventImageUrl)
   }
   return imageArr
})
@@ -400,10 +408,18 @@
   }
   completing.value = true
   try {
      await updateStatus({
      // await updateStatus({
      //    eventId: workDetailData.value.id,
      //    targetStatus: 4,
      //    operateContent,
      // })
      await addDisposeRecord({
         eventId: workDetailData.value.id,
         targetStatus: 4,
         operateContent,
         disposeContent: operateContent,
         recordType: 1,
         targetEventStatus: 4,
         updateEventStatus: true,
         // attachUrl: ''
      })
      uni.showToast({ title: '操作成功', icon: 'success' })
      setTimeout(() => {
@@ -538,6 +554,11 @@
.workDetailContainer {
   // 添加导航栏高度的padding-top,避免内容被遮挡
   padding-top: 88rpx;
   height: 100vh;
   box-sizing: border-box;
   display: flex;
   flex-direction: column;
   overflow: hidden;
   :deep() {
      .u-navbar__content {
         background: url('https://wrj.shuixiongit.com/aiskyminio/cloud-bucket/ztzf_app_assets/images/user/bg.png')
@@ -565,6 +586,7 @@
      }
   }
   .detailTop {
      flex-shrink: 0;
      // #ifdef APP-PLUS
      padding-top: 60rpx;
      // #endif
@@ -600,12 +622,15 @@
   }
   .worderContainer {
      flex: 1;
      min-height: 0;
      padding: 0 24rpx;
      padding-bottom: 4rpx;
      background: #f6f6f6;
      margin-top: 20rpx;
      height: calc(100vh - 530rpx);
      overflow: auto;
      overflow-y: auto;
      overflow-x: hidden;
      -webkit-overflow-scrolling: touch;
   }
   .workOrderContent {
      margin-top: 30epx;