fix(order): 前端兜底计算订单显示状态,不依赖后端 displayStatusText
- 新增 getDisplayStatus() 方法,优先使用后端 displayStatusText - 后端未部署时,前端根据 status + assessmentStatus 自行计算显示状态 - 修复订单状态不显示的问题
This commit is contained in:
parent
f92b9db74e
commit
b8fe6fc9b0
|
|
@ -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">
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user