From cfff3569bc0a853271a40d8238688aeff7e4c55b Mon Sep 17 00:00:00 2001 From: nebula_chen Date: Thu, 9 Apr 2026 10:28:38 +0800 Subject: [PATCH] =?UTF-8?q?refactor(dashboard)=EF=BC=9A=E8=B0=83=E6=95=B4?= =?UTF-8?q?=E9=87=87=E8=B4=AD=E4=BB=AA=E8=A1=A8=E7=9B=98=E5=89=8D=E7=AB=AF?= =?UTF-8?q?=E6=95=88=E6=9E=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../pisadmin/dashboard/BuyerDashboard.vue | 24 +++++++++++++++---- 1 file changed, 19 insertions(+), 5 deletions(-) diff --git a/web/src/views/pisadmin/dashboard/BuyerDashboard.vue b/web/src/views/pisadmin/dashboard/BuyerDashboard.vue index 10f44a6..5dfe6a5 100644 --- a/web/src/views/pisadmin/dashboard/BuyerDashboard.vue +++ b/web/src/views/pisadmin/dashboard/BuyerDashboard.vue @@ -58,7 +58,7 @@ {{ task.title }} - {{ task.status }} + {{ getTaskStatusDisplay(task.status) }} @@ -81,7 +81,7 @@ @@ -256,6 +256,13 @@ const getMsg = (): void => { }); }; +/** 代办任务:后端「报价结束」在界面上展示为「待比议价」 */ +function getTaskStatusDisplay(status: string | undefined): string { + if (!status) return ''; + if (status === '报价结束') return '待比议价'; + return status; +} + function getStatusClass(status: string) { if (status?.includes('比价') || status?.includes('发布')) return 'status-badge status-blue'; if (status?.includes('议价') || status?.includes('紧急')) return 'status-badge status-pink'; @@ -275,6 +282,14 @@ function isTenderTask(task: any): boolean { return task?.method === '招标'; } +/** 招标:已超过投标截止时间(与「剩余:已结束」一致,用于灰色渲染) */ +function isTenderPastBidEnd(task: any): boolean { + if (!isTenderTask(task)) return false; + const end = task?.bid_end_time; + if (!end) return false; + return Date.now() >= new Date(end).getTime(); +} + function formatDateTimeYMDHM(iso: string | Date | null | undefined): string { if (!iso) return '-'; const d = new Date(iso); @@ -336,7 +351,7 @@ function getInquiryHoursToQuoteDeadline(task: any): number | null { } function getDeadlinePrimaryLabel(task: any): string { - return isTenderTask(task) ? '投标时间:' : '报价截止时间:'; + return isTenderTask(task) ? '投标时间范围:' : '报价截止时间:'; } function getDeadlinePrimaryValue(task: any): string { @@ -367,7 +382,7 @@ function getDeadlineRemainingValue(task: any): string { /** 第一行时间 + 第二行「剩余」数值共用样式类 */ function getDeadlineValueClass(task: any): string { if (isTenderTask(task)) { - return 'deadline-tender-accent'; + return isTenderPastBidEnd(task) ? 'deadline-expired' : 'deadline-tender-accent'; } const h = getInquiryHoursToQuoteDeadline(task); if (h == null || task?.quote_deadline == null) return ''; @@ -780,7 +795,6 @@ tr:last-child td { .deadline-expired { color: #9ca3af !important; font-weight: 500; - text-decoration: line-through; } /* 询价:距截止 >48h 时的强调色(参考稿橙红) */ .deadline-accent-normal {