|
@@ -74,18 +74,8 @@ const paymentMethods = ref([
|
|
// 选中的支付方式
|
|
// 选中的支付方式
|
|
const selectedPayment = ref('bandhubuy')
|
|
const selectedPayment = ref('bandhubuy')
|
|
|
|
|
|
-// DialogBox 相关状态
|
|
|
|
-const dialogConfig = ref({
|
|
|
|
- show: false,
|
|
|
|
- icon: 'info-circle',
|
|
|
|
- iconSize: '120rpx',
|
|
|
|
- message: '',
|
|
|
|
- tip: '',
|
|
|
|
- btnText: t('checkout.dialog.gotIt'),
|
|
|
|
- showButton: true,
|
|
|
|
- showTip: false,
|
|
|
|
- closeOnClickOverlay: true,
|
|
|
|
-})
|
|
|
|
|
|
+// DialogBox 函数式调用配置
|
|
|
|
+const dialogConfig = ref({})
|
|
|
|
|
|
// 处理支付方式选择
|
|
// 处理支付方式选择
|
|
function selectPayment(methodId: string) {
|
|
function selectPayment(methodId: string) {
|
|
@@ -97,12 +87,12 @@ function selectPayment(methodId: string) {
|
|
|
|
|
|
// 显示余额不足对话框
|
|
// 显示余额不足对话框
|
|
function showInsufficientBalanceDialog() {
|
|
function showInsufficientBalanceDialog() {
|
|
- Object.assign(dialogConfig.value, DialogUtils.warning(
|
|
|
|
|
|
+ Object.assign(dialogConfig.value, DialogUtils.info(
|
|
t('checkout.dialog.insufficientBalance'),
|
|
t('checkout.dialog.insufficientBalance'),
|
|
{
|
|
{
|
|
tip: t('checkout.dialog.rechargeDiscount'),
|
|
tip: t('checkout.dialog.rechargeDiscount'),
|
|
showTip: true,
|
|
showTip: true,
|
|
- btnText: t('checkout.dialog.rechargeNow'),
|
|
|
|
|
|
+ confirmText: t('checkout.dialog.rechargeNow'),
|
|
},
|
|
},
|
|
))
|
|
))
|
|
}
|
|
}
|
|
@@ -112,8 +102,8 @@ function showPaymentSuccessDialog() {
|
|
Object.assign(dialogConfig.value, DialogUtils.success(
|
|
Object.assign(dialogConfig.value, DialogUtils.success(
|
|
t('checkout.dialog.paymentSuccess'),
|
|
t('checkout.dialog.paymentSuccess'),
|
|
{
|
|
{
|
|
- btnText: t('checkout.dialog.viewOrder'),
|
|
|
|
- showButton: true,
|
|
|
|
|
|
+ confirmText: t('checkout.dialog.viewOrder'),
|
|
|
|
+ showConfirm: true,
|
|
},
|
|
},
|
|
))
|
|
))
|
|
}
|
|
}
|
|
@@ -123,7 +113,7 @@ function showPaymentFailedDialog() {
|
|
Object.assign(dialogConfig.value, DialogUtils.error(
|
|
Object.assign(dialogConfig.value, DialogUtils.error(
|
|
t('checkout.dialog.paymentFailed'),
|
|
t('checkout.dialog.paymentFailed'),
|
|
{
|
|
{
|
|
- btnText: t('checkout.dialog.retryPayment'),
|
|
|
|
|
|
+ confirmText: t('checkout.dialog.retryPayment'),
|
|
},
|
|
},
|
|
))
|
|
))
|
|
}
|
|
}
|
|
@@ -133,7 +123,7 @@ function showNetworkErrorDialog() {
|
|
Object.assign(dialogConfig.value, DialogUtils.error(
|
|
Object.assign(dialogConfig.value, DialogUtils.error(
|
|
t('checkout.dialog.networkError'),
|
|
t('checkout.dialog.networkError'),
|
|
{
|
|
{
|
|
- btnText: t('checkout.dialog.retry'),
|
|
|
|
|
|
+ confirmText: t('checkout.dialog.retry'),
|
|
iconSize: '100rpx',
|
|
iconSize: '100rpx',
|
|
},
|
|
},
|
|
))
|
|
))
|
|
@@ -166,25 +156,30 @@ async function handlePlaceOrder() {
|
|
|
|
|
|
// 处理对话框确认事件
|
|
// 处理对话框确认事件
|
|
function handleDialogConfirm() {
|
|
function handleDialogConfirm() {
|
|
- const { icon } = dialogConfig.value
|
|
|
|
|
|
+ const config = dialogConfig.value as any
|
|
|
|
+ const { type, confirmText } = config
|
|
|
|
|
|
- if (icon === 'warning') {
|
|
|
|
|
|
+ // 根据确认按钮文本判断是哪种对话框
|
|
|
|
+ if (confirmText === t('checkout.dialog.rechargeNow')) {
|
|
// 余额不足,跳转到充值页面
|
|
// 余额不足,跳转到充值页面
|
|
uni.navigateTo({ url: '/pages/wallet/recharge' })
|
|
uni.navigateTo({ url: '/pages/wallet/recharge' })
|
|
}
|
|
}
|
|
- else if (icon === 'success') {
|
|
|
|
|
|
+ else if (type === 'success') {
|
|
// 支付成功,跳转到订单页面
|
|
// 支付成功,跳转到订单页面
|
|
uni.showToast({ title: t('checkout.toast.redirecting'), icon: 'none' })
|
|
uni.showToast({ title: t('checkout.toast.redirecting'), icon: 'none' })
|
|
}
|
|
}
|
|
- else if (icon === 'error') {
|
|
|
|
|
|
+ else if (type === 'error') {
|
|
// 支付失败或网络错误,重新尝试
|
|
// 支付失败或网络错误,重新尝试
|
|
uni.showToast({ title: t('checkout.toast.retrying'), icon: 'loading' })
|
|
uni.showToast({ title: t('checkout.toast.retrying'), icon: 'loading' })
|
|
}
|
|
}
|
|
|
|
+
|
|
|
|
+ // 关闭对话框
|
|
|
|
+ dialogConfig.value = {}
|
|
}
|
|
}
|
|
|
|
|
|
// 处理对话框关闭事件
|
|
// 处理对话框关闭事件
|
|
function handleDialogClose() {
|
|
function handleDialogClose() {
|
|
- console.log('Dialog closed')
|
|
|
|
|
|
+ dialogConfig.value = {}
|
|
}
|
|
}
|
|
</script>
|
|
</script>
|
|
|
|
|
|
@@ -269,17 +264,9 @@ function handleDialogClose() {
|
|
</view>
|
|
</view>
|
|
</template>
|
|
</template>
|
|
|
|
|
|
- <!-- DialogBox 组件示例 -->
|
|
|
|
|
|
+ <!-- DialogBox 函数式调用 -->
|
|
<DialogBox
|
|
<DialogBox
|
|
- v-model:show="dialogConfig.show"
|
|
|
|
- :icon="dialogConfig.icon"
|
|
|
|
- :icon-size="dialogConfig.iconSize"
|
|
|
|
- :message="dialogConfig.message"
|
|
|
|
- :tip="dialogConfig.tip"
|
|
|
|
- :btn-text="dialogConfig.btnText"
|
|
|
|
- :show-button="dialogConfig.showButton"
|
|
|
|
- :show-tip="dialogConfig.showTip"
|
|
|
|
- :close-on-click-overlay="dialogConfig.closeOnClickOverlay"
|
|
|
|
|
|
+ v-bind="dialogConfig"
|
|
@confirm="handleDialogConfirm"
|
|
@confirm="handleDialogConfirm"
|
|
@close="handleDialogClose"
|
|
@close="handleDialogClose"
|
|
/>
|
|
/>
|