优化了支付选择界面 ui

This commit is contained in:
yml
2026-06-18 23:19:15 +08:00
parent 550db63d4d
commit ae28858318
7 changed files with 543 additions and 93 deletions
@@ -0,0 +1,33 @@
import { ref } from 'vue'
import type { PaymentPayWay } from '@/features/orders/api/orders'
// useMobilePayWaySelect 提供移动端"选择支付方式"底部弹层的状态与 Promise 化选择逻辑。
// 与 MobilePayWaySelectPopup 配合:select() 打开弹层并返回用户所选渠道,关闭即视为取消。
export function useMobilePayWaySelect() {
const visible = ref(false)
let resolver: ((value: PaymentPayWay | null) => void) | null = null
// select 打开弹层并返回 Promise,resolve 为所选渠道;取消则为 null。
function select(): Promise<PaymentPayWay | null> {
visible.value = true
return new Promise(resolve => {
resolver = resolve
})
}
// choose 用户点选某渠道,关闭弹层并 resolve。
function choose(payWay: PaymentPayWay) {
resolver?.(payWay)
resolver = null
visible.value = false
}
// handleClosed 弹层关闭(含遮罩/返回)时若未选择则按取消处理。
function handleClosed() {
resolver?.(null)
resolver = null
}
return { visible, select, choose, handleClosed }
}