feat(order): 收银台支付倒计时,超时锁死并引导重新下单
- 到期时刻由后端下发(payDeadline),倒计时与"到点锁页面"都用它,前端不自己算时限 - 解析后端时间时把空格换成 T:后端格式是 `yyyy-MM-dd HH:mm:ss`, 而 iOS Safari / 微信内置浏览器解析不了不带 T 的写法(返回 NaN, 会让倒计时与锁页在最主要的那一端静默失效) - 修正收银台写死的「2 小时」文案:有效期由后端配置,页面不该复述一个具体数字 - 订单列表/详情:超时后不再给「去支付」,并显示「已取消(支付超时)」 - `hjcCanActOn` 收成共享导出,两个页面不再各写一份判定 - 与 hjc-h5 的 utils/orderStatus 保持同一套定义(两仓逐字对齐)
This commit is contained in:
@@ -66,8 +66,12 @@
|
||||
<HjcInvoiceFiles :files="order.invoices" />
|
||||
</div>
|
||||
|
||||
<!-- 待支付订单的操作区(与列表页同一判定:hjcCanActOnOrder) -->
|
||||
<div v-if="hjcCanActOnOrder(order)" class="mt-4 flex justify-end gap-3 rounded-lg border border-gray-200 p-5">
|
||||
<!--
|
||||
待支付订单的操作区(与列表页同一判定)。
|
||||
`canAct` = hjcCanActOnOrder 再排除「支付时限已到」——已超时的单后端会拒绝出码,
|
||||
留一个点了必然失败的「去支付」只会让人白点一次。
|
||||
-->
|
||||
<div v-if="canAct" class="mt-4 flex justify-end gap-3 rounded-lg border border-gray-200 p-5">
|
||||
<button
|
||||
type="button"
|
||||
class="rounded-md border border-gray-300 px-4 py-1.5 text-sm text-gray-700 hover:bg-gray-50 disabled:opacity-50"
|
||||
@@ -178,7 +182,11 @@
|
||||
|
||||
<script setup lang="ts">
|
||||
import type { HjcOrder } from '~/types/tender'
|
||||
import { hjcCanActOnOrder, hjcOrderStatusClass, hjcOrderStatusLabel } from '~/utils/orderStatus'
|
||||
import {
|
||||
hjcCanActOn,
|
||||
hjcOrderStatusClass,
|
||||
hjcOrderStatusLabel
|
||||
} from '~/utils/orderStatus'
|
||||
|
||||
/**
|
||||
* 订单详情页(PC 端)。
|
||||
@@ -215,6 +223,12 @@ const cancelling = ref(false)
|
||||
const isPaid = computed(() => order.value?.payStatus === 1)
|
||||
const payMethodLabel = computed(() => (order.value?.payMethod === 'ALIPAY' ? '支付宝' : '微信支付'))
|
||||
|
||||
/**
|
||||
* 还能不能操作(去支付 / 取消):共享判定,**不在这里重写一遍**——
|
||||
* 两个页面各写一份必然分叉,出现"列表里不能点、详情里能点"。
|
||||
*/
|
||||
const canAct = computed(() => hjcCanActOn(order.value))
|
||||
|
||||
function formatMoney(n?: number | string) {
|
||||
return Number(n ?? 0).toFixed(2)
|
||||
}
|
||||
|
||||
@@ -63,8 +63,10 @@
|
||||
<!--
|
||||
待支付订单的操作区。判定用 hjcCanActOnOrder(payStatus===0 && orderStatus!==2),
|
||||
**不用** statusKey==='pending'——payStatus=2(支付失败)也会落进 pending 兜底。
|
||||
再排除「支付时限已到」:那种单后端会拒绝出码、渠道单也已随同一时刻失效(ADR 0019),
|
||||
留一个点了必然失败的「去支付」只会让人白点一次。
|
||||
-->
|
||||
<div v-if="hjcCanActOnOrder(o)" class="flex justify-end gap-3">
|
||||
<div v-if="canAct(o)" class="flex justify-end gap-3">
|
||||
<button
|
||||
type="button"
|
||||
class="rounded-md border border-gray-300 px-4 py-1.5 text-sm text-gray-700 hover:bg-gray-50 disabled:opacity-50"
|
||||
@@ -103,7 +105,11 @@
|
||||
</template>
|
||||
|
||||
<script setup lang="ts">
|
||||
import { hjcCanActOnOrder, hjcOrderStatusClass, hjcOrderStatusLabel } from '~/utils/orderStatus'
|
||||
import {
|
||||
hjcCanActOn,
|
||||
hjcOrderStatusClass,
|
||||
hjcOrderStatusLabel
|
||||
} from '~/utils/orderStatus'
|
||||
|
||||
const { isLoggedIn, handleAuthCode } = useHjcAuth()
|
||||
/**
|
||||
|
||||
Reference in New Issue
Block a user