wlzboy
2026-04-01 c459808efab29dc1b8439fbb90556bdb16f4c88b
app/pagesTask/detail.vue
@@ -492,7 +492,7 @@
        </button>
      </template>
          
      <!-- 出发中状态:显示已到达、强制结束、强制完成 -->
      <!-- 出发中状态:显示已到达、强制取消、强制完成 -->
      <template v-else-if="taskDetail.taskStatus === TaskStatus.DEPARTING">
        <template v-if="canOperateTask()">
          <button 
@@ -505,7 +505,7 @@
            class="action-btn cancel" 
            @click="handleTaskAction('forceCancel')"
          >
            强制结束
            强制取消
          </button>
          <button 
            v-if="showForceCompleteFeature()"
@@ -575,7 +575,7 @@
</template>
<script>
  import { getTask, changeTaskStatus, setAssigneeReady, checkTaskConsentAttachment } from '@/api/task'
  import { getTask, changeTaskStatus, setAssigneeReady, checkTaskConsentAttachment, syncTaskStatus } from '@/api/task'
  import { checkVehicleActiveTasks } from '@/api/task'
  import { getPaymentInfo } from '@/api/payment'
  import { getDicts } from '@/api/dict'
@@ -929,9 +929,29 @@
          return
        }
        
        uni.navigateTo({
          url: '/pagesTask/settlement?taskId=' + this.taskId
        })
        // 检查任务编号是否以T2开头(未同步到旧系统)
        const serviceCode = this.taskDetail.showTaskCode;
        if (serviceCode && serviceCode.startsWith('T2')) {
          // 先同步再进入结算页
          uni.showLoading({ title: '同步中...' })
          syncTaskStatus(this.taskId).then(() => {
            uni.hideLoading()
            uni.navigateTo({
              url: '/pagesTask/settlement?taskId=' + this.taskId
            })
          }).catch((err) => {
            uni.hideLoading()
            // 同步失败不阻断结算,只记录日志
            console.warn('任务同步旧系统失败,不影响结算流程:', err)
            uni.navigateTo({
              url: '/pagesTask/settlement?taskId=' + this.taskId
            })
          })
        } else {
          uni.navigateTo({
            url: '/pagesTask/settlement?taskId=' + this.taskId
          })
        }
      },
      
      // 处理任务操作
@@ -954,7 +974,7 @@
            break;
            
          case 'forceCancel':
            // 强制结束 -> 显示取消原因选择对话框
            // 强制取消 -> 显示取消原因选择对话框
            this.showCancelReasonDialog();
            break;