hookehuyr

refactor(支付流程): 优化支付权限检查和弹窗处理逻辑

重构支付权限检查逻辑,将权限验证从onMounted移至useDidShow统一处理
优化支付协议弹窗按钮文案和错误处理逻辑
移除未使用的组件导入和冗余代码
......@@ -23,10 +23,8 @@ declare module 'vue' {
NutEllipsis: typeof import('@nutui/nutui-taro')['Ellipsis']
NutForm: typeof import('@nutui/nutui-taro')['Form']
NutFormItem: typeof import('@nutui/nutui-taro')['FormItem']
NutIcon: typeof import('@nutui/nutui-taro')['Icon']
NutImagePreview: typeof import('@nutui/nutui-taro')['ImagePreview']
NutInput: typeof import('@nutui/nutui-taro')['Input']
NutLoading: typeof import('@nutui/nutui-taro')['Loading']
NutMenu: typeof import('@nutui/nutui-taro')['Menu']
NutMenuItem: typeof import('@nutui/nutui-taro')['MenuItem']
NutOverlay: typeof import('@nutui/nutui-taro')['Overlay']
......
......@@ -65,7 +65,7 @@
color="orange"
@click="handleConfirm"
>
{{ bindStatus.is_finish ? '确认' : '确认并签约' }}
{{ bindStatus.is_finish ? '我要发布' : '确认并签约' }}
</nut-button>
</div>
</div>
......@@ -196,10 +196,10 @@ const checkAgreementStatus = async () => {
const checkBindStatus = async () => {
try {
const result = await bindJeePayAPI()
if (result.code && result.data) {
const { auth_complement_url, auth_sign_url, is_wait_audit, is_finish } = result.data
// 更新绑定状态
bindStatus.value = {
is_finish: is_finish || false,
......@@ -238,11 +238,9 @@ const handleAgree = async () => {
if (userStore.userInfo) {
userStore.userInfo.is_signed = true
}
// 调用绑定接口
await handleBindJeePay()
} else {
console.error('更新协议状态失败:', result.message)
}
} catch (error) {
console.error('更新协议状态失败:', error)
......@@ -263,10 +261,10 @@ const handleConfirm = async () => {
const handleBindJeePay = async () => {
try {
const result = await bindJeePayAPI()
if (result.code && result.data) {
const { auth_complement_url, auth_sign_url, is_wait_audit, is_finish } = result.data
// 更新绑定状态
bindStatus.value = {
is_finish: is_finish || false,
......@@ -274,7 +272,7 @@ const handleBindJeePay = async () => {
auth_complement_url: auth_complement_url || '',
auth_sign_url: auth_sign_url || ''
}
// 1. 如果返回 auth_complement_url 非空时,需要跳转到补全信息网页
if (auth_complement_url) {
Taro.showModal({
......@@ -293,7 +291,7 @@ const handleBindJeePay = async () => {
})
return
}
// 2. 如果返回 auth_sign_url 非空时,需要跳转到签约网页
if (auth_sign_url) {
Taro.showModal({
......@@ -312,7 +310,7 @@ const handleBindJeePay = async () => {
})
return
}
// 3. 如果返回 is_wait_audit 为 true,则提示用户签约正在等待审核
if (is_wait_audit) {
Taro.showModal({
......@@ -323,18 +321,12 @@ const handleBindJeePay = async () => {
})
return
}
// 4. 如果返回 is_finish 为 true 则绑定成功,可以卖车
if (is_finish) {
emit('confirm')
return
}
} else {
console.error('绑定接口调用失败:', result.message)
Taro.showToast({
title: '绑定失败,请重试',
icon: 'none'
})
}
} catch (error) {
console.error('绑定接口调用失败:', error)
......
......@@ -1171,9 +1171,8 @@ const checkUserPermission = async () => {
url: '/pages/collectionSettings/index?target=sell'
})
}
} else {
// 用户点击关闭,返回上一页
// Taro.navigateBack()
} else if (res.cancel) {
console.log('用户点击取消')
}
}
})
......@@ -1184,15 +1183,6 @@ const checkUserPermission = async () => {
// 页面加载时执行
onMounted(async () => {
const hasPermission = await checkUserPermission()
if (!hasPermission) {
return
}
// 权限验证通过,显示收款说明弹框
paymentAgreementVisible.value = true
// 加载基础数据
await Promise.all([
loadSchools(),
......@@ -1222,17 +1212,16 @@ onMounted(async () => {
}
})
// 页面显示时执行(用户从其他页面返回时会触发
// 页面显示时执行(包括首次加载和从其他页面返回
useDidShow(async () => {
// 只有在页面已经初始化后才进行权限检查
// 避免与onMounted重复执行
const pages = Taro.getCurrentPages()
const currentPage = pages[pages.length - 1]
const hasPermission = await checkUserPermission()
// 如果页面已经加载过,则重新检查权限
if (currentPage && currentPage.data && Object.keys(currentPage.data).length > 0) {
await checkUserPermission()
if (!hasPermission) {
return
}
// 权限验证通过,显示收款说明弹框
paymentAgreementVisible.value = true
})
/**
......