From f92b9db74e34f1d1bd02306e68147028136bbb64 Mon Sep 17 00:00:00 2001 From: zpc Date: Mon, 23 Feb 2026 00:47:13 +0800 Subject: [PATCH] =?UTF-8?q?feat(order):=20=E9=87=8D=E6=9E=84=E6=88=91?= =?UTF-8?q?=E7=9A=84=E8=AE=A2=E5=8D=95=E9=A1=B5=E9=9D=A2=E5=8C=B9=E9=85=8D?= =?UTF-8?q?=E8=93=9D=E6=B9=96=E8=AE=BE=E8=AE=A1=E7=A8=BF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 前端:按蓝湖设计重写订单列表页,胶囊标签筛选栏(全部/已测评/待测评/已退款) - 前端:卡片布局改为逐行展示(订单日期、编号、项目、金额、状态+操作按钮) - 后端:OrderItemDto 新增 AssessmentStatus 和 DisplayStatusText 字段 - 后端:GetListAsync 查询测评记录状态,计算综合显示状态文本 - 后端:新增 GetDisplayStatusText 方法,结合订单状态和测评状态生成展示文本 - 邀请码订单(Status=2, PayAmount=0)正常显示在订单列表中 --- .../Services/OrderService.cs | 41 +- .../Models/Order/OrderItemDto.cs | 14 + uniapp/api/order.js | 1 + uniapp/pages/order/list/index.vue | 443 ++++++++---------- 4 files changed, 240 insertions(+), 259 deletions(-) diff --git a/server/MiAssessment/src/MiAssessment.Core/Services/OrderService.cs b/server/MiAssessment/src/MiAssessment.Core/Services/OrderService.cs index 394ebe8..1d37cc4 100644 --- a/server/MiAssessment/src/MiAssessment.Core/Services/OrderService.cs +++ b/server/MiAssessment/src/MiAssessment.Core/Services/OrderService.cs @@ -85,14 +85,14 @@ public class OrderService : IOrderService }) .ToListAsync(); - // 获取测评订单关联的测评记录ID + // 获取测评订单关联的测评记录信息(ID + 状态) if (orders.Any(o => o.OrderType == 1)) { var orderIds = orders.Where(o => o.OrderType == 1).Select(o => o.Id).ToList(); var assessmentRecords = await _dbContext.AssessmentRecords .AsNoTracking() .Where(r => orderIds.Contains(r.OrderId) && !r.IsDeleted) - .Select(r => new { r.OrderId, r.Id }) + .Select(r => new { r.OrderId, r.Id, r.Status }) .ToListAsync(); foreach (var order in orders.Where(o => o.OrderType == 1)) @@ -101,10 +101,17 @@ public class OrderService : IOrderService if (record != null) { order.AssessmentRecordId = record.Id; + order.AssessmentStatus = record.Status; } } } + // 计算综合显示状态文本 + foreach (var order in orders) + { + order.DisplayStatusText = GetDisplayStatusText(order.Status, order.AssessmentStatus); + } + _logger.LogDebug("获取到 {Count} 条订单记录,总数: {Total}", orders.Count, total); return PagedResult.Create(orders, total, page, pageSize); @@ -635,6 +642,36 @@ public class OrderService : IOrderService }; } + /// + /// 获取综合显示状态文本(结合订单状态和测评记录状态) + /// + /// 订单状态 + /// 测评记录状态(可为null) + /// 用于前端展示的状态文本 + private static string GetDisplayStatusText(int orderStatus, int? assessmentStatus) + { + // 退款相关状态优先 + if (orderStatus == 4) return "退款中"; + if (orderStatus == 5) return "已退款"; + if (orderStatus == 6) return "已取消"; + if (orderStatus == 1) return "待支付"; + + // 已支付或已完成的订单,根据测评记录状态显示 + if (assessmentStatus.HasValue) + { + return assessmentStatus.Value switch + { + 1 => "待测评", + 2 => "测评中", + 3 => "测评生成中", + 4 => "已测评", + _ => GetOrderStatusText(orderStatus) + }; + } + + return GetOrderStatusText(orderStatus); + } + /// /// 获取测评状态文本 /// diff --git a/server/MiAssessment/src/MiAssessment.Model/Models/Order/OrderItemDto.cs b/server/MiAssessment/src/MiAssessment.Model/Models/Order/OrderItemDto.cs index fdc9659..489311f 100644 --- a/server/MiAssessment/src/MiAssessment.Model/Models/Order/OrderItemDto.cs +++ b/server/MiAssessment/src/MiAssessment.Model/Models/Order/OrderItemDto.cs @@ -1,5 +1,8 @@ namespace MiAssessment.Model.Models.Order; +/// +/// 订单列表项数据传输对象 +/// /// /// 订单列表项数据传输对象 /// @@ -49,4 +52,15 @@ public class OrderItemDto /// 关联的测评记录ID(测评订单时有值) /// public long? AssessmentRecordId { get; set; } + + /// + /// 测评记录状态:1待测评 2测评中 3生成中 4已完成(测评订单时有值) + /// + public int? AssessmentStatus { get; set; } + + /// + /// 综合显示状态文本(结合订单状态和测评状态) + /// + public string DisplayStatusText { get; set; } = null!; } + diff --git a/uniapp/api/order.js b/uniapp/api/order.js index 8f985e4..ad1196f 100644 --- a/uniapp/api/order.js +++ b/uniapp/api/order.js @@ -10,6 +10,7 @@ import { get, post } from './request' * @param {number} [params.page] - 页码 * @param {number} [params.pageSize] - 每页数量 * @param {number} [params.status] - 订单状态 + * @param {number} [params.orderType] - 订单类型:1测评订单 2规划订单 * @returns {Promise} */ export function getOrderList(params = {}) { diff --git a/uniapp/pages/order/list/index.vue b/uniapp/pages/order/list/index.vue index dbf58d7..fc9e332 100644 --- a/uniapp/pages/order/list/index.vue +++ b/uniapp/pages/order/list/index.vue @@ -1,9 +1,10 @@