zhangwencui
2026-02-27 c700b0975236978293ce666908a62de89818d16d
巡检上传功能修改
已修改1个文件
163 ■■■■ 文件已修改
src/pages/inspectionUpload/index.vue 163 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/pages/inspectionUpload/index.vue
@@ -9,7 +9,8 @@
      <view class="task-list">
        <view v-for="(item, index) in taskTableData"
              :key="index"
              class="task-item">
              class="task-item"
              :class="{ 'uninspected': item.fileStatus == 1 }">
          <view class="task-header">
            <view class="task-info">
              <text class="task-name">{{ item.taskName }}</text>
@@ -18,7 +19,8 @@
            <view class="task-actions">
              <u-button type="primary"
                        size="small"
                        @click.stop="startScanForTask(item)"
                        v-if="item.fileStatus!=2"
                        @click.stop="startScanForTask1(item)"
                        :customStyle="{
                borderRadius: '15px',
                height: '30px',
@@ -42,7 +44,7 @@
          <view class="task-details">
            <view class="detail-item">
              <text class="detail-label">任务ID</text>
              <text class="detail-value">{{ item.taskId || item.id }}</text>
              <text class="detail-value">{{ item.id }}</text>
            </view>
            <view class="detail-item">
              <text class="detail-label">备注</text>
@@ -65,11 +67,11 @@
                         type="success"
                         inverted></uni-tag>
                <uni-tag v-else-if="item.fileStatus==1"
                         text="巡检中"
                         text="超期"
                         size="small"
                         type="primary"
                         type="error"
                         inverted></uni-tag>
                <uni-tag v-else=""
                <uni-tag v-else
                         text="未巡检"
                         size="small"
                         type="warning"
@@ -98,7 +100,7 @@
          </view>
          <view class="upload-popup-body">
            <!-- 分类标签页 -->
            <view class="upload-tabs">
            <!-- <view class="upload-tabs">
              <view class="tab-item"
                    :class="{ active: currentUploadType === 'before' }"
                    @click="switchUploadType('before')">
@@ -114,7 +116,7 @@
                    @click="switchUploadType('issue')">
                生产后
              </view>
            </view>
            </view> -->
            <!-- 异常状态选择 -->
            <view class="exception-section">
              <text class="section-title">是否存在异常?</text>
@@ -211,13 +213,13 @@
                <text>请选择要上传的{{ getUploadTypeText() }}图片或视频</text>
              </view>
              <!-- 统计信息 -->
              <view class="upload-summary">
              <!-- <view class="upload-summary">
                <text class="summary-text">
                  生产前: {{ beforeModelValue.length }}个文件 |
                  生产中: {{ afterModelValue.length }}个文件 |
                  生产后: {{ issueModelValue.length }}个文件
                </text>
              </view>
              </view> -->
            </view>
          </view>
          <view class="upload-popup-footer">
@@ -253,7 +255,7 @@
          </view>
          <view class="attachment-popup-body">
            <!-- 分类标签页 -->
            <view class="attachment-tabs">
            <!-- <view class="attachment-tabs">
              <view class="tab-item"
                    :class="{ active: currentViewType === 'before' }"
                    @click="switchViewType('before')">
@@ -269,7 +271,7 @@
                    @click="switchViewType('issue')">
                生产后 ({{ getAttachmentsByType(2).length }})
              </view>
            </view>
            </view> -->
            <!-- 当前分类的附件列表 -->
            <view class="attachment-content">
              <view v-if="getCurrentViewAttachments().length > 0"
@@ -408,7 +410,7 @@
  // 计算上传URL
  const uploadFileUrl = computed(() => {
    const baseUrl = "http://114.132.189.42:9030";
    const baseUrl = "http://192.168.1.35:8888";
    return baseUrl + uploadConfig.action;
  });
@@ -555,17 +557,71 @@
  };
  const getFileStatus = record => {
    let _beforeProduction =
      record.beforeProduction && record.beforeProduction.length;
    let _afterProduction =
      record.afterProduction && record.afterProduction.length;
    let _productionIssues =
      record.productionIssues && record.productionIssues.length;
    if (_beforeProduction && _afterProduction && _productionIssues) {
    // let _beforeProduction =
    //   record.beforeProduction && record.beforeProduction.length;
    // let _afterProduction =
    //   record.afterProduction && record.afterProduction.length;
    // let _productionIssues =
    //   record.productionIssues && record.productionIssues.length;
    // if (_beforeProduction && _afterProduction && _productionIssues) {
    //   return 2;
    // } else if (_beforeProduction || _afterProduction || _productionIssues) {
    //   return 1;
    // } else {
    //   return 0;
    // }
    // let _beforeProduction =
    //   record.beforeProduction && record.beforeProduction.length;
    if (record.takePhone) {
      if (record.commonFileListBefore && record.commonFileListBefore.length) {
        return 2;
      }
      if (record.frequencyType == "DAILY") {
        if (Number(record.inspectionDeadline) && record.createTime) {
          // 计算时间差(小时)
          const now = new Date().getTime();
          const createTime = new Date(record.createTime).getTime();
          const hoursDiff = (now - createTime) / (1000 * 60 * 60);
          if (hoursDiff > Number(record.inspectionDeadline)) {
            return 1;
          }
        }
      } else {
        if (Number(record.inspectionDeadline) && record.createTime) {
          // 计算时间差(天)
          const now = new Date().getTime();
          const createTime = new Date(record.createTime).getTime();
          const daysDiff = (now - createTime) / (1000 * 60 * 60 * 24);
          if (daysDiff > Number(record.inspectionDeadline)) {
            return 1;
          }
        }
      }
      return 0;
    } else if (record.inspectionSubmitted) {
      return 2;
    } else if (_beforeProduction || _afterProduction || _productionIssues) {
      return 1;
    } else {
      if (record.frequencyType == "DAILY") {
        if (Number(record.inspectionDeadline) && record.createTime) {
          // 计算时间差(小时)
          const now = new Date().getTime();
          const createTime = new Date(record.createTime).getTime();
          const hoursDiff = (now - createTime) / (1000 * 60 * 60);
          if (hoursDiff > Number(record.inspectionDeadline)) {
            return 1;
          }
        }
      } else {
        if (Number(record.inspectionDeadline) && record.createTime) {
          // 计算时间差(天)
          const now = new Date().getTime();
          const createTime = new Date(record.createTime).getTime();
          const daysDiff = (now - createTime) / (1000 * 60 * 60 * 24);
          if (daysDiff > Number(record.inspectionDeadline)) {
            return 1;
          }
        }
      }
      return 0;
    }
  };
@@ -620,8 +676,7 @@
        return;
      }
      const currentTaskId =
        currentScanningTask.value?.taskId || currentScanningTask.value?.id;
      const currentTaskId = currentScanningTask.value?.id;
      if (!currentTaskId) {
        uni.showToast({ title: "任务信息缺失", icon: "error" });
        return;
@@ -648,7 +703,6 @@
    if (task) {
      infoData.value = {
        ...task,
        taskId: task.taskId || task.id,
        storageBlobDTO: [], // 初始化文件列表
      };
    }
@@ -662,7 +716,22 @@
    // 显示上传弹窗
    showUploadDialog.value = true;
  };
  const startScanForTask1 = async task => {
    currentScanningTask.value = task;
    if (task) {
      infoData.value = {
        ...task,
        storageBlobDTO: [], // 初始化文件列表
      };
    }
    // 设置上传状态类型(可以根据任务类型设置不同的状态)
    uploadStatusType.value = 0; // 默认状态
    // 清空之前的文件
    uploadFiles.value = [];
    showUploadDialog.value = true;
  };
  // 关闭上传弹窗
  const closeUploadDialog = () => {
    showUploadDialog.value = false;
@@ -724,7 +793,7 @@
    try {
      // 存储当前任务信息到本地存储,供报修页面使用
      const taskInfo = {
        taskId: infoData.value?.taskId || infoData.value?.id,
        id: infoData.value?.id,
        taskName: infoData.value?.taskName,
        inspectionLocation: infoData.value?.inspectionLocation,
        inspector: infoData.value?.inspector,
@@ -771,12 +840,14 @@
        beforeModelValue.value.length +
        afterModelValue.value.length +
        issueModelValue.value.length;
      if (totalFiles === 0) {
        uni.showToast({
          title: "请先上传文件",
          icon: "none",
        });
        return;
      if (currentScanningTask.value.takePhone) {
        if (totalFiles === 0) {
          uni.showToast({
            title: "请先上传文件",
            icon: "none",
          });
          return;
        }
      }
      // 显示提交中的加载提示
@@ -808,7 +879,10 @@
      // 添加异常状态信息
      infoData.value.hasException = hasException.value;
      infoData.value.tempFileIds = tempFileIds;
      const result = await uploadInspectionTask({ ...infoData.value });
      const result = await uploadInspectionTask({
        ...infoData.value,
        inspectionSubmitted: true,
      });
      // 检查提交结果
      if (result && (result.code === 200 || result.success)) {
@@ -971,7 +1045,7 @@
  };
  // 文件访问基础域(后端要求前缀)
  const filePreviewBase = "http://114.132.189.42:9098";
  const filePreviewBase = "http://192.168.1.35:8888";
  // 将后端返回的文件地址规范成可访问URL
  // 兼容场景:
@@ -1061,7 +1135,9 @@
        count: Math.min(remaining, 1),
        mediaType: [type || "image"],
        sizeType: ["compressed", "original"],
        sourceType: ["camera"],
        sourceType: currentScanningTask.value?.takeAlbum
          ? ["camera", "album"]
          : ["camera"], // 是否允许相册上传
        success: res => {
          try {
            const files = res?.tempFiles || [];
@@ -1081,6 +1157,8 @@
                createTime: Date.now(),
                uid: Date.now() + Math.random() + idx,
              };
              console.log("chooseMedia 成功获取文件:", file);
              handleBeforeUpload(file);
            });
          } catch (e) {
@@ -1103,7 +1181,7 @@
      uni.chooseImage({
        count: 1,
        sizeType: ["compressed", "original"],
        sourceType: ["camera"],
        sourceType: ["camera", "album"],
        success: res => {
          const tempFilePath = res?.tempFilePaths?.[0];
          const tempFile = res?.tempFiles?.[0] || {};
@@ -1136,7 +1214,7 @@
      count: 1,
      mediaType: ["image", "video"],
      sizeType: ["compressed", "original"],
      sourceType: ["camera"],
      sourceType: ["camera", "album"],
      success: res => {
        try {
          if (!res.tempFiles || res.tempFiles.length === 0) {
@@ -1537,6 +1615,17 @@
    transition: all 0.3s ease;
  }
  .task-item.uninspected {
    border: 1px solid #f56c6cb3;
    background-color: #fef2f2;
  }
  .task-item.uninspected .task-name,
  .task-item.uninspected .task-location,
  .task-item.uninspected .detail-value {
    color: #000000;
  }
  .task-header {
    display: flex;
    justify-content: space-between;