提交代码
All checks were successful
continuous-integration/drone/push Build is passing

This commit is contained in:
zpc 2026-03-24 02:13:50 +08:00
parent 5f5501dd0d
commit 2f4290d5e2
4 changed files with 50 additions and 7 deletions

View File

@ -32,7 +32,7 @@ public class PlannerService : IPlannerService
private static readonly Dictionary<int, string> BookingStatusNames = new() private static readonly Dictionary<int, string> BookingStatusNames = new()
{ {
{ 1, "待联系" }, { 1, "待联系" },
{ 2, "联系" }, { 2, "联系" },
{ 3, "已完成" }, { 3, "已完成" },
{ 4, "已取消" } { 4, "已取消" }
}; };

View File

@ -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) 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); _logger.LogDebug("获取到 {Count} 条订单记录,总数: {Total}", orders.Count, total);
@ -718,7 +738,7 @@ public class OrderService : IOrderService
/// <param name="orderStatus">订单状态</param> /// <param name="orderStatus">订单状态</param>
/// <param name="assessmentStatus">测评记录状态可为null</param> /// <param name="assessmentStatus">测评记录状态可为null</param>
/// <returns>用于前端展示的状态文本</returns> /// <returns>用于前端展示的状态文本</returns>
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 "退款中"; if (orderStatus == 4) return "退款中";
@ -726,7 +746,13 @@ public class OrderService : IOrderService
if (orderStatus == 6) return "已取消"; if (orderStatus == 6) return "已取消";
if (orderStatus == 1) return "待支付"; if (orderStatus == 1) return "待支付";
// 已支付或已完成的订单,根据测评记录状态显示 // 规划订单,根据预约状态显示
if (orderType == 2 && bookingStatus.HasValue)
{
return GetBookingStatusText(bookingStatus.Value);
}
// 测评订单,根据测评记录状态显示
if (assessmentStatus.HasValue) if (assessmentStatus.HasValue)
{ {
return assessmentStatus.Value switch return assessmentStatus.Value switch

View File

@ -59,7 +59,12 @@ public class OrderItemDto
public int? AssessmentStatus { get; set; } public int? AssessmentStatus { get; set; }
/// <summary> /// <summary>
/// 综合显示状态文本(结合订单状态和测评状态) /// 预约状态1待联系 2联系中 3已完成 4已取消规划订单时有值
/// </summary>
public int? BookingStatus { get; set; }
/// <summary>
/// 综合显示状态文本(结合订单状态和测评/预约状态)
/// </summary> /// </summary>
public string DisplayStatusText { get; set; } = null!; public string DisplayStatusText { get; set; } = null!;
} }

View File

@ -42,6 +42,7 @@ function getDisplayStatus(order) {
// //
const orderStatus = order.status const orderStatus = order.status
const assessmentStatus = order.assessmentStatus const assessmentStatus = order.assessmentStatus
const bookingStatus = order.bookingStatus
// 退// // 退//
if (orderStatus === 4) return '退款中' if (orderStatus === 4) return '退款中'
@ -49,6 +50,12 @@ function getDisplayStatus(order) {
if (orderStatus === 6) return '已取消' if (orderStatus === 6) return '已取消'
if (orderStatus === 1) return '待支付' if (orderStatus === 1) return '待支付'
//
if (order.orderType === 2 && bookingStatus) {
const bookingMap = { 1: '待联系', 2: '联系中', 3: '已完成', 4: '已取消' }
return bookingMap[bookingStatus] || order.statusText || '已支付'
}
// / // /
if (assessmentStatus) { if (assessmentStatus) {
const map = { 1: '待测评', 2: '测评中', 3: '测评生成中', 4: '已测评' } const map = { 1: '待测评', 2: '测评中', 3: '测评生成中', 4: '已测评' }
@ -77,8 +84,9 @@ const filteredList = computed(() => {
*/ */
function getStatusClass(order) { function getStatusClass(order) {
const dst = getDisplayStatus(order) const dst = getDisplayStatus(order)
if (dst === '已测评' || dst === '待测评') return 'status-green' if (dst === '已测评' || dst === '待测评' || dst === '已完成') return 'status-green'
if (dst === '测评生成中' || dst === '退款中' || dst === '已退款') return 'status-red' if (dst === '测评生成中' || dst === '退款中' || dst === '已退款' || dst === '报告生成中') return 'status-red'
if (dst === '待联系' || dst === '联系中') return 'status-orange'
return 'status-gray' return 'status-gray'
} }
@ -367,6 +375,10 @@ onShow(() => {
color: $error-color; color: $error-color;
} }
&.status-orange {
color: $warning-color;
}
&.status-gray { &.status-gray {
color: $text-placeholder; color: $text-placeholder;
} }