feat(order): 收银台与购标流程改为先选支付方式再发起支付
- 新增 useHjcPayFlow(select/code 两段状态机)与 HjcPayPanel(两处共用): 进页只查单、不发起支付,不预选支付方式;出码后不再有切换控件, 只能显式「更换支付方式」回到选择态(不自动重发、不停查单) - 发起失败留在选择态并保留所选(渠道侧什么都没产生,没有理由锁住用户) - 收银台 pages/tender/pay.vue 只留订单侧职责:取单、终态屏、超时锁、付款成功跳列表 - 购标流程 BuyDocument:下单后停在选择态(不再按默认微信自动发起), 补支付剩余时间与超时锁,超时后回表单步重新下单 - 订单详情:只有已完成订单才显示支付方式渠道名,其余显示「—」; 标签按前缀判,修掉 ALIPAY_QR 被显示成「微信支付」 - useHjcPayStatus:新增结构化 channelClosed——「渠道单已关闭」在选择态说 「重新选择支付方式」、出码态才说「重新获取二维码」,不靠匹配 message 字符串 Refs .scratch/cashier-pay-method-selection/issues/01-pay-method-before-pay.md
This commit is contained in:
@@ -185,6 +185,7 @@ import type { HjcOrder } from '~/types/tender'
|
||||
import {
|
||||
hjcCanActOn,
|
||||
hjcOrderStatusClass,
|
||||
hjcOrderStatusKey,
|
||||
hjcOrderStatusLabel
|
||||
} from '~/utils/orderStatus'
|
||||
|
||||
@@ -221,7 +222,26 @@ const cancelling = ref(false)
|
||||
|
||||
/** 已支付:标书附件是否下发的唯一依据(与后端 `isPaid` 同一口径,只看 payStatus) */
|
||||
const isPaid = computed(() => order.value?.payStatus === 1)
|
||||
const payMethodLabel = computed(() => (order.value?.payMethod === 'ALIPAY' ? '支付宝' : '微信支付'))
|
||||
|
||||
/**
|
||||
* 「支付方式」这一行的显示口径。
|
||||
*
|
||||
* **只有已完成的订单才把 `payMethod` 当事实**:它建单时就被写成 `WECHAT_NATIVE`,只有真发起过
|
||||
* 一次支付才会被渠道响应改写——所以未支付订单上的值并不代表买家选过什么,也区分不了
|
||||
* "没选过"与"选过微信没付"(见 CONTEXT.md 的「支付渠道」)。未支付一律显示「—」,
|
||||
* 不去声称一种买家可能根本没选过的方式。
|
||||
*
|
||||
* 标签按**前缀**判而不是精确等值:支付宝侧有 `ALIPAY`(电脑网站支付)与 `ALIPAY_QR`(扫码),
|
||||
* 原先只认 `ALIPAY` 一个值,扫码支付过的单在详情里会被显示成"微信支付"。
|
||||
*/
|
||||
const payMethodLabel = computed(() => {
|
||||
const o = order.value
|
||||
if (!o || hjcOrderStatusKey(o) !== 'done') return '—'
|
||||
const method = String(o.payMethod || '')
|
||||
if (method.startsWith('ALIPAY')) return '支付宝'
|
||||
if (method.startsWith('WECHAT')) return '微信支付'
|
||||
return '—'
|
||||
})
|
||||
|
||||
/**
|
||||
* 还能不能操作(去支付 / 取消):共享判定,**不在这里重写一遍**——
|
||||
|
||||
Reference in New Issue
Block a user