fix(order): 前端兜底计算订单显示状态,不依赖后端 displayStatusText

- 新增 getDisplayStatus() 方法,优先使用后端 displayStatusText
- 后端未部署时,前端根据 status + assessmentStatus 自行计算显示状态
- 修复订单状态不显示的问题
This commit is contained in:
zpc 2026-02-23 00:50:44 +08:00
parent f92b9db74e
commit b8fe6fc9b0

View File

@ -32,14 +32,39 @@ const pageSize = ref(10)
const total = ref(0)
const noMore = ref(false)
/**
* 获取订单的综合显示状态文本
* 优先使用后端返回的 displayStatusText否则前端根据订单状态和测评状态计算
*/
function getDisplayStatus(order) {
if (order.displayStatusText) return order.displayStatusText
//
const orderStatus = order.status
const assessmentStatus = order.assessmentStatus
// 退//
if (orderStatus === 4) return '退款中'
if (orderStatus === 5) return '已退款'
if (orderStatus === 6) return '已取消'
if (orderStatus === 1) return '待支付'
// /
if (assessmentStatus) {
const map = { 1: '待测评', 2: '测评中', 3: '测评生成中', 4: '已测评' }
return map[assessmentStatus] || order.statusText || '已支付'
}
return order.statusText || '已支付'
}
/**
* 根据当前tab过滤订单列表
* 前端过滤tab分类基于 displayStatusText 的混合状态
*/
const filteredList = computed(() => {
if (activeTab.value === 'all') return orderList.value
return orderList.value.filter(order => {
const dst = order.displayStatusText
const dst = getDisplayStatus(order)
if (activeTab.value === 'completed') return dst === '已测评'
if (activeTab.value === 'pending') return dst === '待测评' || dst === '测评中'
if (activeTab.value === 'refunded') return dst === '已退款' || dst === '退款中'
@ -51,7 +76,7 @@ const filteredList = computed(() => {
* 获取显示状态的样式类
*/
function getStatusClass(order) {
const dst = order.displayStatusText
const dst = getDisplayStatus(order)
if (dst === '已测评' || dst === '待测评') return 'status-green'
if (dst === '测评生成中' || dst === '退款中' || dst === '已退款') return 'status-red'
return 'status-gray'
@ -148,14 +173,14 @@ function startAssessment(order) {
* 判断是否显示查看结果按钮
*/
function showViewResultBtn(order) {
return order.displayStatusText === '已测评'
return getDisplayStatus(order) === '已测评'
}
/**
* 判断是否显示开始测评按钮
*/
function showStartBtn(order) {
return order.displayStatusText === '待测评'
return getDisplayStatus(order) === '待测评'
}
onShow(() => {
@ -216,7 +241,7 @@ onShow(() => {
<view class="status-wrap">
<text class="info-label">订单状态</text>
<text class="status-text" :class="getStatusClass(order)">
{{ order.displayStatusText }}
{{ getDisplayStatus(order) }}
</text>
</view>
<view class="action-wrap">