diff --git a/web/src/mobile/views/ClaimView.vue b/web/src/mobile/views/ClaimView.vue
index 390727d..8487daa 100644
--- a/web/src/mobile/views/ClaimView.vue
+++ b/web/src/mobile/views/ClaimView.vue
@@ -51,8 +51,8 @@
-
- {{ matchProgress }}%
+
+ {{ matchProgress }}%
-
✓{{ step }}
@@ -141,6 +141,7 @@
});
const matchStep = computed(() => (matchProgress.value < 35 ? 0 : matchProgress.value < 60 ? 1 : matchProgress.value < 85 ? 2 : 3));
const matchSteps = ['正在匹配任务', '获取商品信息', '确认任务内容', '发放任务结果'];
+ const isAutoMatching = computed(() => order.value?.dispatch_mode !== 'manual');
const matchingHint = computed(() => {
if (order.value?.dispatch_mode === 'manual') return '订单已领取,正在等待后台匹配...';
if (matchRemainingSeconds.value > 0) return `系统正在派单... ${formatCountdown(matchRemainingSeconds.value)}`;
@@ -256,7 +257,15 @@
function handleOrder(value: any) {
order.value = value;
if (value?.status === 'matching') {
- startCountdown(value);
+ if (value?.dispatch_mode === 'manual') {
+ if (countdownTimer) window.clearInterval(countdownTimer);
+ countdownTimer = undefined;
+ matchRemainingSeconds.value = 0;
+ matchTotalSeconds.value = 0;
+ matchProgress.value = 18;
+ } else {
+ startCountdown(value);
+ }
schedulePoll();
} else if (['pending', 'processing', 'completed'].includes(value?.status)) {
matchProgress.value = 100;
@@ -300,6 +309,7 @@
function startCountdown(value: any) {
if (countdownTimer) window.clearInterval(countdownTimer);
+ if (value?.dispatch_mode === 'manual') return;
const scheduledAt = Date.parse(String(value?.scheduled_match_at || ''));
if (!Number.isFinite(scheduledAt)) return;
matchTotalSeconds.value = Math.max(1, Number(value?.dispatch_delay_seconds || 0));