|
@@ -96,9 +96,9 @@ const loading = ref(true)
|
|
const tip = ref('')
|
|
const tip = ref('')
|
|
|
|
|
|
// 步骤:
|
|
// 步骤:
|
|
-// 1. 创建支付订单(先获取有无创建的,没有就创建)
|
|
|
|
-// 2. 获取支付方式类型列表
|
|
|
|
-// 3. 如果是二维码类型支付(isQrCodePay=true)生成二维码(需要第一步的订单号绑定)
|
|
|
|
|
|
+// 1. 获取支付方式类型列表getCodeList
|
|
|
|
+// 2. 创建支付订单(先获取有无创建的,没有就创建)getUnpaidOrderList
|
|
|
|
+// 3. 如果是二维码类型支付(isQrCodePay=true)生成二维码(需要绑定支付订单的订单号)
|
|
|
|
|
|
|
|
|
|
const balance = JSON.parse(localStorage.getItem('enterpriseUserAccount'))?.balance || 0
|
|
const balance = JSON.parse(localStorage.getItem('enterpriseUserAccount'))?.balance || 0
|
|
@@ -106,7 +106,35 @@ const balanceNotEnough = computed(() => {
|
|
return (Number(props.cost) > Number(balance))
|
|
return (Number(props.cost) > Number(balance))
|
|
})
|
|
})
|
|
|
|
|
|
-const payOrder = ref({}) // 支付订单
|
|
|
|
|
|
+
|
|
|
|
+// 生成二维码内容
|
|
|
|
+const timer = ref(null)
|
|
|
|
+onUnmounted(() => {
|
|
|
|
+ if (timer.value) clearInterval(timer.value); timer.value = null
|
|
|
|
+})
|
|
|
|
+const initPayQrCode = async () => { // 生成二维码内容
|
|
|
|
+ if (!payOrder.value?.id || !payOrder.value.notifyUrl || !payType.value) return
|
|
|
|
+ if (timer.value) clearInterval(timer.value); timer.value = null
|
|
|
|
+ try {
|
|
|
|
+ if (payOrder.value) {
|
|
|
|
+ // 提交支付订单
|
|
|
|
+ const params = {
|
|
|
|
+ id: payOrder.value.id, // 支付单编号
|
|
|
|
+ channelCode: payType.value, // 支付渠道
|
|
|
|
+ displayMode: payOrder.value.notifyUrl, // 展示模式 notifyUrl
|
|
|
|
+ // returnUrl: location.href, // 支付成功后,支付渠道跳转回当前页;再由当前页,跳转回 {@link returnUrl} 对应的地址
|
|
|
|
+ }
|
|
|
|
+ const res = await payOrderSubmit(params)
|
|
|
|
+ payQrCodeTxt.value = res?.displayContent || '' // 支付二维码
|
|
|
|
+ timer.value = setInterval(() => { payStatus() }, 1000) // 轮巡查询用户是否支付
|
|
|
|
+ }
|
|
|
|
+ } catch (error) {
|
|
|
|
+ console.log(error)
|
|
|
|
+ }
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+// 2.支付订单
|
|
|
|
+const payOrder = ref({})
|
|
let maxCount = 0
|
|
let maxCount = 0
|
|
const getUnpaidOrderList = async () => {
|
|
const getUnpaidOrderList = async () => {
|
|
try {
|
|
try {
|
|
@@ -127,42 +155,16 @@ const getUnpaidOrderList = async () => {
|
|
}
|
|
}
|
|
//
|
|
//
|
|
payOrder.value = data?.payOrder || null
|
|
payOrder.value = data?.payOrder || null
|
|
- initPayQrCode() // 生成二维码内容
|
|
|
|
|
|
+ if (isQrCodePay.value) initPayQrCode() // 生成二维码内容
|
|
} catch (error) {
|
|
} catch (error) {
|
|
console.log(error)
|
|
console.log(error)
|
|
} finally {
|
|
} finally {
|
|
loading.value = false
|
|
loading.value = false
|
|
}
|
|
}
|
|
}
|
|
}
|
|
-getUnpaidOrderList() // getUnpaidOrder
|
|
|
|
|
|
+// getUnpaidOrderList() // getUnpaidOrder
|
|
|
|
|
|
|
|
|
|
-// 生成二维码内容
|
|
|
|
-const timer = ref(null)
|
|
|
|
-onUnmounted(() => {
|
|
|
|
- if (timer.value) clearInterval(timer.value); timer.value = null
|
|
|
|
-})
|
|
|
|
-const initPayQrCode = async () => { // 生成二维码内容
|
|
|
|
- if (!payOrder.value?.id || !payOrder.value.notifyUrl || !payType.value) return
|
|
|
|
- if (timer.value) clearInterval(timer.value); timer.value = null
|
|
|
|
- try {
|
|
|
|
- if (payOrder.value) {
|
|
|
|
- // 提交支付订单
|
|
|
|
- const params = {
|
|
|
|
- id: payOrder.value.id, // 支付单编号
|
|
|
|
- channelCode: payType.value, // 支付渠道
|
|
|
|
- displayMode: payOrder.value.notifyUrl, // 展示模式 notifyUrl
|
|
|
|
- // returnUrl: location.href, // 支付成功后,支付渠道跳转回当前页;再由当前页,跳转回 {@link returnUrl} 对应的地址
|
|
|
|
- }
|
|
|
|
- const res = await payOrderSubmit(params)
|
|
|
|
- payQrCodeTxt.value = res?.displayContent || '' // 支付二维码
|
|
|
|
- timer.value = setInterval(() => { payStatus() }, 1000) // 轮巡查询用户是否支付
|
|
|
|
- }
|
|
|
|
- } catch (error) {
|
|
|
|
- console.log(error)
|
|
|
|
- }
|
|
|
|
-}
|
|
|
|
-
|
|
|
|
// 支付方式
|
|
// 支付方式
|
|
const isWalletPay = ref(false)
|
|
const isWalletPay = ref(false)
|
|
const isQrCodePay = ref(false)
|
|
const isQrCodePay = ref(false)
|
|
@@ -174,8 +176,7 @@ const payTypeChange = (value) => {
|
|
initPayQrCode() // 生成二维码内容
|
|
initPayQrCode() // 生成二维码内容
|
|
emit('payTypeChange', value, balanceNotEnough)
|
|
emit('payTypeChange', value, balanceNotEnough)
|
|
}
|
|
}
|
|
-
|
|
|
|
-// 支付方式
|
|
|
|
|
|
+// 1.支付方式
|
|
const payType = ref('')
|
|
const payType = ref('')
|
|
const payTypeList = ref([])
|
|
const payTypeList = ref([])
|
|
const sharedState = useSharedState()
|
|
const sharedState = useSharedState()
|
|
@@ -204,6 +205,7 @@ const getCodeList = async () => {
|
|
}
|
|
}
|
|
})
|
|
})
|
|
}
|
|
}
|
|
|
|
+ getUnpaidOrderList()
|
|
}
|
|
}
|
|
}
|
|
}
|
|
getCodeList()
|
|
getCodeList()
|
|
@@ -218,15 +220,27 @@ const walletPaySubmit = () => {
|
|
}
|
|
}
|
|
|
|
|
|
import Snackbar from '@/plugins/snackbar'
|
|
import Snackbar from '@/plugins/snackbar'
|
|
|
|
+import { useRoute } from 'vue-router'; const route = useRoute()
|
|
import { useRouter } from 'vue-router'; const router = useRouter()
|
|
import { useRouter } from 'vue-router'; const router = useRouter()
|
|
const payStatus = async () => {
|
|
const payStatus = async () => {
|
|
|
|
+ // if (timer.value) clearInterval(timer.value); timer.value = null
|
|
|
|
+ // setTimeout(() => {
|
|
|
|
+ // console.log('fullPath1', route.fullPath)
|
|
|
|
+ // console.log('returnUrl2',props.returnUrl)
|
|
|
|
+ // debugger
|
|
|
|
+ // if (route.fullPath === props.returnUrl) router.go(0)
|
|
|
|
+ // else if (props.returnUrl) router.push(props.returnUrl) // 返回指定页面
|
|
|
|
+ // else emit('paySuccess')
|
|
|
|
+ // Snackbar.success('付款成功')
|
|
|
|
+ // }, 2000)
|
|
try {
|
|
try {
|
|
const data = await getOrderPayStatus({ id: payOrder.value.id })
|
|
const data = await getOrderPayStatus({ id: payOrder.value.id })
|
|
if ((data?.status - 0) === 10) {
|
|
if ((data?.status - 0) === 10) {
|
|
// 支付成功
|
|
// 支付成功
|
|
if (timer.value) clearInterval(timer.value); timer.value = null
|
|
if (timer.value) clearInterval(timer.value); timer.value = null
|
|
setTimeout(() => {
|
|
setTimeout(() => {
|
|
- if (props.returnUrl) router.push(props.returnUrl) // 返回指定页面
|
|
|
|
|
|
+ if (route.fullPath === props.returnUrl) router.go(0)
|
|
|
|
+ else if (props.returnUrl) router.push(props.returnUrl) // 返回指定页面
|
|
else emit('paySuccess')
|
|
else emit('paySuccess')
|
|
Snackbar.success('付款成功')
|
|
Snackbar.success('付款成功')
|
|
}, 1000);
|
|
}, 1000);
|