wlzboy
2025-11-11 310633feef20e9b77d44fd25e0b41778e033b33b
app/pages/task/detail.vue
@@ -328,6 +328,7 @@
<script>
  import { getTask, changeTaskStatus } from '@/api/task'
  import { checkVehicleActiveTasks } from '@/api/task'
  import { formatDateTime } from '@/utils/common'
  import AttachmentUpload from '@/components/AttachmentUpload.vue'
  
@@ -504,10 +505,8 @@
      handleTaskAction(action) {
        switch (action) {
          case 'depart':
            // 出发 -> 状态变为出发中
            this.$modal.confirm('确定要出发吗?').then(() => {
              this.updateTaskStatus('DEPARTING', '任务已出发')
            }).catch(() => {});
            // 出发 -> 检查车辆是否有其他正在进行中的任务
            this.checkVehicleAndDepart();
            break;
            
          case 'cancel':
@@ -547,6 +546,82 @@
        }
      },
      
      // 检查车辆状态并出发
      checkVehicleAndDepart() {
        // 获取任务车辆ID
        const vehicleId = this.getVehicleId();
        if (!vehicleId) {
          this.$modal.showToast('未找到任务车辆信息');
          return;
        }
        // 显示加载提示
        uni.showLoading({
          title: '检查车辆状态...'
        });
        checkVehicleActiveTasks(vehicleId).then(response => {
          uni.hideLoading();
          const activeTasks = response.data || [];
          // 过滤掉当前任务本身
          const otherActiveTasks = activeTasks.filter(task => task.taskId !== this.taskId);
          if (otherActiveTasks.length > 0) {
            // 车辆有其他正在进行中的任务
            const task = otherActiveTasks[0];
            const taskStatus = this.getStatusText(task.taskStatus);
            const message = `该车辆已有正在转运中的任务!
任务单号:${task.taskCode}
任务状态:${taskStatus}
请先完成当前任务后再出发新任务。`;
            uni.showModal({
              title: '提示',
              content: message,
              showCancel: false,
              confirmText: '我知道了'
            });
            return;
          }
          // 车辆没有其他正在进行中的任务,可以出发
          this.$modal.confirm('确定要出发吗?').then(() => {
            this.updateTaskStatus('DEPARTING', '任务已出发')
          }).catch(() => {});
        }).catch(error => {
          uni.hideLoading();
          console.error('检查车辆状态失败:', error);
          // 检查失败时,仍然允许出发
          this.$modal.confirm('检查车辆状态失败,是否继续出发?').then(() => {
            this.updateTaskStatus('DEPARTING', '任务已出发')
          }).catch(() => {});
        });
      },
      // 获取任务车辆ID
      getVehicleId() {
        if (!this.taskDetail) {
          return null;
        }
        // 从车辆列表中获取第一个车辆的ID
        if (this.taskDetail.vehicleList && this.taskDetail.vehicleList.length > 0) {
          return this.taskDetail.vehicleList[0].vehicleId;
        }
        // 或者从单个车辆对象获取
        if (this.taskDetail.vehicleId) {
          return this.taskDetail.vehicleId;
        }
        return null;
      },
      // 更新任务状态
      updateTaskStatus(status, remark) {
        // 获取GPS位置信息