finish-plan-detail.vue 4.11 KB
<template>
  <view class="page-container">
    <!-- 页面级加载组件 -->
    <up-loading-page
        v-if="loading"
        :loading="true"
        title="加载中..."
        color="#3c9cff"
    ></up-loading-page>

    <!-- 内容容器 -->
    <view v-else class="content-wrap">
      <template v-for="(i, index) in orderDetail" :key="index">
        <!-- 工单详情内容 -->
        <up-cell-group :border="false" inset style="margin: 20rpx;">
          <!-- 1. 工单编号 -->
          <up-cell
              :title="i.planName"

              class="up-line-1"
              align="middle"
          ></up-cell>

          <!-- 2. 工单位置 -->
          <up-cell
              title="计划编码"
              :value="i.planNo || '--'"
              class="up-line-1"
              align="middle"
          ></up-cell>

          <!-- 3. 工单名称 -->
          <up-cell
              title="养护周期"
              :value="`${i.rate}${uni.$dict.getDictLabel('cycle_id_type', i.cycleId)}`"
              class="up-line-1"
              align="middle"
          ></up-cell>

          <!-- 4. 情况描述 -->
          <up-cell
              title="计划有效期"
              :value="`${timeFormat(i.beginTime,'yyyy-mm-dd')} 至 ${timeFormat(i. endTime,'yyyy-mm-dd')}`"
              class="up-line-1"
              align="middle"
          ></up-cell>

          <!-- 5. 问题照片(核心修复:判断条件+空值处理) -->
          <up-cell title="照片">
            <template #value>
              <view class="cell-content-wrap">

                <!-- 修复1:正确判断problemImgsList,补充空数组默认值 -->
                <up-album
                    v-if="!!i.imgList?.length"
                    :urls="i.imgList || []"
                    singleSize="70"
                    :preview-full-image="true"

                ></up-album>
                <text v-else class="empty-text">暂无问题照片</text>
              </view>
            </template>
          </up-cell>

          <!-- 7. 处理结果 -->
          <up-cell
              title="巡查描述"
              :value="i.remark || '--'"
              class="up-line-1"
              align="middle"

          ></up-cell>

          <up-cell
              title="提交时间"
              :value="timeFormat(i.finishTime,'yyyy-mm-dd hh:MM:ss') || '--'"
              class="up-line-1"
              align="middle"

          ></up-cell>


          <up-cell
              title="提交人"
              :value="i.userName || '--'"
              class="up-line-1"
              align="middle"
              :border="false"
          ></up-cell>
        </up-cell-group>
      </template>


    </view>
  </view>
</template>

<script setup lang="ts">
import {ref} from 'vue';
import {detailList} from "@/api/maintain-manage/maintain-manage";
import {onLoad} from '@dcloudio/uni-app';
import {timeFormat} from '@/uni_modules/uview-plus';
// 状态管理
const loading = ref(true);
const orderDetail = ref([]);


/**
 * 获取工单详情
 */
const getOrderDetail = async (plan_no: string) => {
  try {
    loading.value = true;
    const res = await detailList({plan_no});
    console.log('接口返回:', res);
    // 优化:确保图片数组为数组类型,避免非数组导致渲染错误
    // orderDetail.value
    // orderDetail.value = {
    //   ...res,
    //   problemImgsList: Array.isArray(res.problemImgsList) ? res.problemImgsList : [],
    //   completeImgsList: Array.isArray(res.completeImgsList) ? res.completeImgsList : []
    // };

    orderDetail.value = res;
  } catch (error) {
    console.error('获取工单详情失败:', error);
    uni.showToast({title: '加载失败,请重试', icon: 'none'});
  } finally {
    loading.value = false;
  }
};

// 页面加载
onLoad((options) => {
  const {planNo} = options;
  if (planNo) {
    getOrderDetail(planNo);
  } else {
    loading.value = false;
    uni.showToast({title: '缺少工单ID', icon: 'none'});
  }
});
</script>

<style scoped lang="scss">

// 内容容器
.content-wrap {
  background: #fff;
  width: 100%;
  box-sizing: border-box;
  margin-bottom: 20rpx;
}


</style>