Browse Source

fix: prevent blank payment tabs

Pchen. 1 week ago
parent
commit
1bd24e1d3c

+ 5 - 1
src/pages/store/goodsDetail/index.vue

@@ -180,7 +180,6 @@ const applyCoupon = async () => {
     couponError.value = ''
     return
   }
-  const paymentWindow = window.open('', '_blank')
   try {
     couponLoading.value = true
     couponError.value = ''
@@ -206,6 +205,11 @@ const submitOrder = async () => {
     Message.warning('请选择支付方式')
     return
   }
+  const paymentWindow = window.open('', '_blank')
+  if (!paymentWindow) {
+    Message.warning('浏览器拦截了支付页弹窗,请允许弹窗后重试')
+    return
+  }
   try {
     submitting.value = true
     const payload = { goods_id: id, pay_type: payType.value }

+ 5 - 1
src/pages/store/orders/orderDetail/index.vue

@@ -241,7 +241,6 @@ const updatePaymentCountdown = () => {
 }
 
 const getOrderDetail = async () => {
-  const paymentWindow = window.open('', '_blank')
   try {
     const res = await orderDeatil({ orderId: id })
     if (!res || res.code !== 0) {
@@ -328,6 +327,11 @@ const pay = async () => {
     Message.warning('请选择支付方式')
     return
   }
+  const paymentWindow = window.open('', '_blank')
+  if (!paymentWindow) {
+    Message.warning('浏览器拦截了支付页弹窗,请允许弹窗后重试')
+    return
+  }
   try {
     payLoading.value = true
     const res = await payOrder({ orderId: id, pay_type: selectedPayType.value })