From 52b39c161aa6d0a003bc0d2bba114601c615a3d0 Mon Sep 17 00:00:00 2001 From: yml Date: Wed, 27 May 2026 13:51:16 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96-=E8=AE=A2=E5=8D=95=E5=88=97?= =?UTF-8?q?=E8=A1=A8=E5=92=8C=E8=AF=A6=E6=83=85=E9=A1=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../admin/orders/AdminOrderDetailView.vue | 337 ++++++++++++------ .../views/admin/orders/AdminOrdersView.vue | 241 +++++-------- 2 files changed, 312 insertions(+), 266 deletions(-) diff --git a/apps/frontend/src/views/admin/orders/AdminOrderDetailView.vue b/apps/frontend/src/views/admin/orders/AdminOrderDetailView.vue index 13adc27c..f5d45461 100644 --- a/apps/frontend/src/views/admin/orders/AdminOrderDetailView.vue +++ b/apps/frontend/src/views/admin/orders/AdminOrderDetailView.vue @@ -12,6 +12,8 @@ const loading = ref(true) const errorMessage = ref('') const detail = ref(null) +type TagType = 'success' | 'primary' | 'warning' | 'danger' | 'info' + onMounted(async () => { try { const response = await fetchAdminOrderDetail(String(route.params.orderId || '')) @@ -35,11 +37,76 @@ function formatSpecSummary(spec: Record) { return entries.length > 0 ? entries.join(' | ') : '-' } + +function resolveResourceStageLabel(status: string) { + const normalized = String(status || '').trim() + const labelMap: Record = { + system_bound: '资源已准备', + pending_binding: '待准备资源', + pending_binding_prepare: '待准备资源', + retry_pending: '待重试', + manual_review: '人工处理', + binding_exception: '资源异常', + completed: '已完成', + not_started: '未开始', + } + + return labelMap[normalized] || normalized || '-' +} + +function resolveCustomerStageLabel(status: string) { + const normalized = String(status || '').trim() + const labelMap: Record = { + not_started: '待打开链接', + waiting_user_claim: '待打开链接', + waiting_binding: '待客户绑定', + link_opened: '已打开链接', + user_binding: '客户绑定中', + binding_confirmed: '已提交', + binding_in_progress: '处理中', + binding_completed: '客户已完成', + binding_exception: '客户步骤异常', + completed: '已完成', + } + + return labelMap[normalized] || normalized || '-' +} + +function resolveStageTone(status: string): TagType { + const normalized = String(status || '').trim() + if (['system_bound', 'binding_completed', 'completed'].includes(normalized)) return 'success' + if ( + [ + 'waiting_binding', + 'waiting_user_claim', + 'link_opened', + 'user_binding', + 'binding_confirmed', + 'binding_in_progress', + ].includes(normalized) + ) return 'primary' + if (['binding_exception', 'manual_review', 'failed'].includes(normalized)) return 'danger' + if (['pending_binding', 'pending_binding_prepare', 'retry_pending'].includes(normalized)) return 'warning' + return 'info' +} + +function resolveOrderProgressText(summary: AdminOrderDetail['order']['bindingSummary']) { + if (!summary.totalTaskCount) return '未生成履约任务' + if (summary.completedBindingTaskCount >= summary.totalTaskCount) return '履约完成' + if (summary.systemBoundTaskCount > 0) return '等待客户绑定' + return '待准备领取链接' +} + +function resolveOrderProgressTone(summary: AdminOrderDetail['order']['bindingSummary']): TagType { + if (!summary.totalTaskCount) return 'warning' + if (summary.completedBindingTaskCount >= summary.totalTaskCount) return 'success' + return 'warning' +}