From 2f4290d5e26886cb4ecde97bd031208517bf23ab Mon Sep 17 00:00:00 2001 From: zpc Date: Tue, 24 Mar 2026 02:13:50 +0800 Subject: [PATCH] =?UTF-8?q?=E6=8F=90=E4=BA=A4=E4=BB=A3=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Services/PlannerService.cs | 2 +- .../Services/OrderService.cs | 32 +++++++++++++++++-- .../Models/Order/OrderItemDto.cs | 7 +++- uniapp/pages/order/list/index.vue | 16 ++++++++-- 4 files changed, 50 insertions(+), 7 deletions(-) diff --git a/server/MiAssessment/src/MiAssessment.Admin.Business/Services/PlannerService.cs b/server/MiAssessment/src/MiAssessment.Admin.Business/Services/PlannerService.cs index e721956..58583fe 100644 --- a/server/MiAssessment/src/MiAssessment.Admin.Business/Services/PlannerService.cs +++ b/server/MiAssessment/src/MiAssessment.Admin.Business/Services/PlannerService.cs @@ -32,7 +32,7 @@ public class PlannerService : IPlannerService private static readonly Dictionary BookingStatusNames = new() { { 1, "待联系" }, - { 2, "已联系" }, + { 2, "联系中" }, { 3, "已完成" }, { 4, "已取消" } }; diff --git a/server/MiAssessment/src/MiAssessment.Core/Services/OrderService.cs b/server/MiAssessment/src/MiAssessment.Core/Services/OrderService.cs index b99f966..0854498 100644 --- a/server/MiAssessment/src/MiAssessment.Core/Services/OrderService.cs +++ b/server/MiAssessment/src/MiAssessment.Core/Services/OrderService.cs @@ -107,10 +107,30 @@ public class OrderService : IOrderService } } + // 获取规划订单关联的预约记录状态 + if (orders.Any(o => o.OrderType == 2)) + { + var bookingOrderIds = orders.Where(o => o.OrderType == 2).Select(o => o.Id).ToList(); + var bookings = await _dbContext.PlannerBookings + .AsNoTracking() + .Where(b => bookingOrderIds.Contains(b.OrderId) && !b.IsDeleted) + .Select(b => new { b.OrderId, b.Status }) + .ToListAsync(); + + foreach (var order in orders.Where(o => o.OrderType == 2)) + { + var booking = bookings.FirstOrDefault(b => b.OrderId == order.Id); + if (booking != null) + { + order.BookingStatus = booking.Status; + } + } + } + // 计算综合显示状态文本 foreach (var order in orders) { - order.DisplayStatusText = GetDisplayStatusText(order.Status, order.AssessmentStatus); + order.DisplayStatusText = GetDisplayStatusText(order.Status, order.AssessmentStatus, order.OrderType, order.BookingStatus); } _logger.LogDebug("获取到 {Count} 条订单记录,总数: {Total}", orders.Count, total); @@ -718,7 +738,7 @@ public class OrderService : IOrderService /// 订单状态 /// 测评记录状态(可为null) /// 用于前端展示的状态文本 - private static string GetDisplayStatusText(int orderStatus, int? assessmentStatus) + private static string GetDisplayStatusText(int orderStatus, int? assessmentStatus, int orderType = 1, int? bookingStatus = null) { // 退款相关状态优先 if (orderStatus == 4) return "退款中"; @@ -726,7 +746,13 @@ public class OrderService : IOrderService if (orderStatus == 6) return "已取消"; if (orderStatus == 1) return "待支付"; - // 已支付或已完成的订单,根据测评记录状态显示 + // 规划订单,根据预约状态显示 + if (orderType == 2 && bookingStatus.HasValue) + { + return GetBookingStatusText(bookingStatus.Value); + } + + // 测评订单,根据测评记录状态显示 if (assessmentStatus.HasValue) { return assessmentStatus.Value switch diff --git a/server/MiAssessment/src/MiAssessment.Model/Models/Order/OrderItemDto.cs b/server/MiAssessment/src/MiAssessment.Model/Models/Order/OrderItemDto.cs index 489311f..612883e 100644 --- a/server/MiAssessment/src/MiAssessment.Model/Models/Order/OrderItemDto.cs +++ b/server/MiAssessment/src/MiAssessment.Model/Models/Order/OrderItemDto.cs @@ -59,7 +59,12 @@ public class OrderItemDto public int? AssessmentStatus { get; set; } /// - /// 综合显示状态文本(结合订单状态和测评状态) + /// 预约状态:1待联系 2联系中 3已完成 4已取消(规划订单时有值) + /// + public int? BookingStatus { get; set; } + + /// + /// 综合显示状态文本(结合订单状态和测评/预约状态) /// public string DisplayStatusText { get; set; } = null!; } diff --git a/uniapp/pages/order/list/index.vue b/uniapp/pages/order/list/index.vue index 45d6eda..3f16ba0 100644 --- a/uniapp/pages/order/list/index.vue +++ b/uniapp/pages/order/list/index.vue @@ -42,6 +42,7 @@ function getDisplayStatus(order) { // 前端兜底计算:根据订单状态和测评记录状态 const orderStatus = order.status const assessmentStatus = order.assessmentStatus + const bookingStatus = order.bookingStatus // 退款/取消/待支付优先 if (orderStatus === 4) return '退款中' @@ -49,6 +50,12 @@ function getDisplayStatus(order) { if (orderStatus === 6) return '已取消' if (orderStatus === 1) return '待支付' + // 规划订单,根据预约状态显示 + if (order.orderType === 2 && bookingStatus) { + const bookingMap = { 1: '待联系', 2: '联系中', 3: '已完成', 4: '已取消' } + return bookingMap[bookingStatus] || order.statusText || '已支付' + } + // 已支付/已完成的订单,根据测评记录状态显示 if (assessmentStatus) { const map = { 1: '待测评', 2: '测评中', 3: '测评生成中', 4: '已测评' } @@ -77,8 +84,9 @@ const filteredList = computed(() => { */ function getStatusClass(order) { const dst = getDisplayStatus(order) - if (dst === '已测评' || dst === '待测评') return 'status-green' - if (dst === '测评生成中' || dst === '退款中' || dst === '已退款') return 'status-red' + if (dst === '已测评' || dst === '待测评' || dst === '已完成') return 'status-green' + if (dst === '测评生成中' || dst === '退款中' || dst === '已退款' || dst === '报告生成中') return 'status-red' + if (dst === '待联系' || dst === '联系中') return 'status-orange' return 'status-gray' } @@ -367,6 +375,10 @@ onShow(() => { color: $error-color; } + &.status-orange { + color: $warning-color; + } + &.status-gray { color: $text-placeholder; }