wlzboy
2025-10-19 3328aec7bc4cc2c090f015cba905a82d6d52870c
app/pages/index.vue
@@ -78,46 +78,59 @@
          
          <!-- 操作按钮 -->
          <view class="task-actions">
            <button
              class="action-btn"
              :class="{ disabled: isActionDisabled(task, 'depart') }"
              @click="handleTaskAction(task, 'depart')"
              v-if="task.status !== 'completed'"
            >
              出发
            </button>
            <button
              class="action-btn"
              :class="{ disabled: isActionDisabled(task, 'arrive') }"
              @click="handleTaskAction(task, 'arrive')"
              v-if="task.status !== 'completed'"
            >
              已到达
            </button>
            <button
              class="action-btn"
              :class="{ disabled: isActionDisabled(task, 'return') }"
              @click="handleTaskAction(task, 'return')"
              v-if="task.status !== 'completed'"
            >
              返程
            </button>
            <button
              class="action-btn"
              :class="{ disabled: isActionDisabled(task, 'settle') }"
              @click="handleTaskAction(task, 'settle')"
              v-if="task.status !== 'completed'"
            >
              结算
            </button>
            <button
              class="action-btn primary"
              :class="{ disabled: isActionDisabled(task, 'complete') }"
              @click="handleTaskAction(task, 'complete')"
              v-if="task.status !== 'completed'"
            >
              已完成
            </button>
            <!-- 待处理状态: 显示出发、取消 -->
            <template v-if="task.taskStatus === 'PENDING'">
              <button
                class="action-btn primary"
                @click="handleTaskAction(task, 'depart')"
              >
                出发
              </button>
              <button
                class="action-btn cancel"
                @click="handleTaskAction(task, 'cancel')"
              >
                取消
              </button>
            </template>
            <!-- 出发中状态: 显示已到达、强制结束 -->
            <template v-else-if="task.taskStatus === 'DEPARTING'">
              <button
                class="action-btn primary"
                @click="handleTaskAction(task, 'arrive')"
              >
                已到达
              </button>
              <button
                class="action-btn cancel"
                @click="handleTaskAction(task, 'forceCancel')"
              >
                强制结束
              </button>
            </template>
            <!-- 已到达状态: 显示已返程 -->
            <template v-else-if="task.taskStatus === 'ARRIVED'">
              <button
                class="action-btn primary"
                @click="handleTaskAction(task, 'return')"
              >
                已返程
              </button>
            </template>
            <!-- 返程中状态: 显示已完成 -->
            <template v-else-if="task.taskStatus === 'RETURNING'">
              <button
                class="action-btn primary"
                @click="handleTaskAction(task, 'complete')"
              >
                已完成
              </button>
            </template>
            <!-- 已完成/已取消: 不显示按钮 -->
          </view>
        </view>
        
@@ -383,69 +396,50 @@
        this.$tab.navigateTo(`/pages/task/detail?id=${task.taskId || task.id}`);
      },
      
      // 判断操作按钮是否禁用
      isActionDisabled(task, action) {
        // 根据任务的实际状态判断
        const taskStatus = task.taskStatus
        switch (action) {
          case 'depart':
            return taskStatus !== 'PENDING'
          case 'arrive':
            return taskStatus !== 'DEPARTING'
          case 'return':
            return taskStatus !== 'ARRIVED'
          case 'settle':
            return !['ARRIVED', 'RETURNING'].includes(taskStatus)
          case 'complete':
            return taskStatus !== 'RETURNING'
          default:
            return false
        }
      },
      // 处理任务操作
      handleTaskAction(task, action) {
        if (this.isActionDisabled(task, action)) {
          return
        }
        switch (action) {
          case 'depart':
            // 出发操作 -> 状态变为出发中
            let departMessage = '确定要出发吗?'
            if (task.taskType !== 'MAINTENANCE' && task.taskType !== 'FUEL') {
              departMessage = '出发去目的地,确认?'
            }
            this.$modal.confirm(departMessage).then(() => {
            // 出发 -> 状态变为出发中
            this.$modal.confirm('确定要出发吗?').then(() => {
              this.updateTaskStatus(task.taskId, 'DEPARTING', '任务已出发')
            }).catch(() => {})
            break
            }).catch(() => {});
            break;
          case 'cancel':
            // 取消 -> 二次确认后状态变为已取消
            this.$modal.confirm('确定要取消此任务吗?').then(() => {
              this.updateTaskStatus(task.taskId, 'CANCELLED', '任务已取消')
            }).catch(() => {});
            break;
            
          case 'arrive':
            // 已到达操作 -> 状态变为已到达
            this.$modal.confirm('已经到达目的地,确认?').then(() => {
            // 已到达 -> 状态变为已到达
            this.$modal.confirm('确认已到达目的地?').then(() => {
              this.updateTaskStatus(task.taskId, 'ARRIVED', '已到达目的地')
            }).catch(() => {})
            break
            }).catch(() => {});
            break;
          case 'forceCancel':
            // 强制结束 -> 状态变为已取消
            this.$modal.confirm('确定要强制结束此任务吗?').then(() => {
              this.updateTaskStatus(task.taskId, 'CANCELLED', '任务已强制结束')
            }).catch(() => {});
            break;
            
          case 'return':
            // 返程操作 -> 状态变为返程中
            // 已返程 -> 状态变为返程中
            this.$modal.confirm('确认开始返程?').then(() => {
              this.updateTaskStatus(task.taskId, 'RETURNING', '已开始返程')
            }).catch(() => {})
            break
          case 'settle':
            // 结算操作,跳转到结算页面
            this.$tab.navigateTo(`/pages/task/settlement?id=${task.taskId}`)
            break
            }).catch(() => {});
            break;
            
          case 'complete':
            // 已完成操作 -> 状态变为已完成
            this.$modal.confirm('任务是否已经全部完成,确认?').then(() => {
            // 已完成 -> 状态变为已完成
            this.$modal.confirm('确认任务已完成?').then(() => {
              this.updateTaskStatus(task.taskId, 'COMPLETED', '任务已完成')
            }).catch(() => {})
            break
            }).catch(() => {});
            break;
        }
      },
      
@@ -759,6 +753,11 @@
              color: white;
            }
            
            &.cancel {
              background-color: #ff3b30;
              color: white;
            }
            &.disabled {
              opacity: 0.5;
            }