From 6647e815a8d5b6869e744a8ea1b4bab1fee24cad Mon Sep 17 00:00:00 2001 From: yml2213 Date: Wed, 8 Jul 2026 18:01:02 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=20=20=E6=B2=A1=E6=9C=89?= =?UTF-8?q?=E5=8F=AF=E7=94=A8=E7=94=B5=E5=AD=90=E5=87=AD=E8=AF=81=E6=95=B0?= =?UTF-8?q?=E6=8D=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/views/admin/tasks/AdminTaskDetail.css | 4 + .../views/admin/tasks/AdminTaskDetailView.vue | 1 - ...dminTaskKuaishouIndustryVoucherSection.vue | 182 +++++++++++------- 3 files changed, 116 insertions(+), 71 deletions(-) diff --git a/apps/frontend-vue/src/views/admin/tasks/AdminTaskDetail.css b/apps/frontend-vue/src/views/admin/tasks/AdminTaskDetail.css index f65f5fbb..376df950 100644 --- a/apps/frontend-vue/src/views/admin/tasks/AdminTaskDetail.css +++ b/apps/frontend-vue/src/views/admin/tasks/AdminTaskDetail.css @@ -149,6 +149,10 @@ color: var(--text-primary); } +.voucher-missing-alert { + margin-bottom: var(--space-3); +} + .section-copy { margin: 0 0 var(--space-3); color: var(--text-secondary); diff --git a/apps/frontend-vue/src/views/admin/tasks/AdminTaskDetailView.vue b/apps/frontend-vue/src/views/admin/tasks/AdminTaskDetailView.vue index 475ce392..33aff7c4 100644 --- a/apps/frontend-vue/src/views/admin/tasks/AdminTaskDetailView.vue +++ b/apps/frontend-vue/src/views/admin/tasks/AdminTaskDetailView.vue @@ -124,7 +124,6 @@ onMounted(loadDetail) /> +import { computed } from 'vue' + import AdminStatusTag from '@/components/admin/AdminStatusTag.vue' import type { AdminTaskDetail } from '@/types/admin' import { formatAdminDateTime } from '@/utils/admin-time' @@ -8,13 +10,30 @@ interface Props { actionLoading: boolean } -defineProps() +const props = defineProps() const emit = defineEmits<{ resendIndustryCode: [] consumeIndustryVoucher: [] }>() +const voucher = computed(() => props.detail.kuaishouIndustryVoucher) +const shouldShowSection = computed(() => Boolean(voucher.value || hasKuaishouIndustrySignal())) +const missingReason = computed(() => { + const message = props.detail.task.lastError || props.detail.task.resultMessage || '' + return message || '未找到电子凭证记录' +}) + +function hasKuaishouIndustrySignal() { + const signal = [ + props.detail.task.resultCode, + props.detail.task.resultMessage, + props.detail.task.lastError, + ].join(' ') + + return /电子凭证|核销码|发码回调|kuaishou_industry/.test(signal) +} + function formatConsumeDetailTime(value: unknown) { const parsed = Number(value || 0) if (Number.isFinite(parsed) && parsed > 0) { @@ -38,10 +57,10 @@ function formatValue(value: unknown) {