lifanagju_citu преди 9 месеца
родител
ревизия
906e6c5c45

+ 49 - 35
src/components/pay/index.vue

@@ -96,9 +96,9 @@ const loading = ref(true)
 const tip = ref('')
 
 // 步骤:
-//      1. 创建支付订单(先获取有无创建的,没有就创建)
-//      2. 获取支付方式类型列表
-//      3. 如果是二维码类型支付(isQrCodePay=true)生成二维码(需要第一步的订单号绑定
+//      1. 获取支付方式类型列表getCodeList
+//      2. 创建支付订单(先获取有无创建的,没有就创建)getUnpaidOrderList
+//      3. 如果是二维码类型支付(isQrCodePay=true)生成二维码(需要绑定支付订单的订单号
 
 
 const balance = JSON.parse(localStorage.getItem('enterpriseUserAccount'))?.balance || 0
@@ -106,7 +106,35 @@ const balanceNotEnough = computed(() => {
   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
 const getUnpaidOrderList = async () => {
   try {
@@ -127,42 +155,16 @@ const getUnpaidOrderList = async () => {
     }
     // 
     payOrder.value = data?.payOrder || null
-    initPayQrCode() // 生成二维码内容
+    if (isQrCodePay.value) initPayQrCode() // 生成二维码内容
   } catch (error) {
     console.log(error)
   } finally {
     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 isQrCodePay = ref(false)
@@ -174,8 +176,7 @@ const payTypeChange = (value) => {
   initPayQrCode() // 生成二维码内容
   emit('payTypeChange', value, balanceNotEnough)
 }
-
-// 支付方式
+// 1.支付方式
 const payType = ref('')
 const payTypeList = ref([])
 const sharedState = useSharedState()
@@ -204,6 +205,7 @@ const getCodeList = async () => {
         }
       })
     }
+    getUnpaidOrderList()
   }
 }
 getCodeList()
@@ -218,15 +220,27 @@ const walletPaySubmit = () => {
 }
 
 import Snackbar from '@/plugins/snackbar'
+import { useRoute } from 'vue-router'; const route = useRoute()
 import { useRouter } from 'vue-router'; const router = useRouter()
 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 {
     const data = await getOrderPayStatus({ id: payOrder.value.id })
     if ((data?.status - 0) === 10) {
       // 支付成功
       if (timer.value) clearInterval(timer.value); timer.value = null
       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')
         Snackbar.success('付款成功')
       }, 1000);

+ 2 - 1
src/utils/position.js

@@ -91,7 +91,8 @@ const getRation = async () => {
 getRation()
 
 export const commissionCalculation = (count, type) => {
-  if (count && type === 'realPay') return ((count - 0)/100) // 众聘发布需要支付金额(需要统一除以100)
+  if (count && type === 'emitPay') return ((count - 0)*100) // 众聘职位金额回显需要除以100
+  if (count && type === 'realPay') return ((count - 0)/100) // 众聘职位发布金额需要提交时需要乘以100
   if (!data || !Object.keys(data).length) return
   const ratio = parseFloat(data[list[type]]) / 100
   const value = (count * ratio)/100 // 后端需要除100

+ 1 - 1
src/views/recruit/enterprise/positionManagement/components/add.vue

@@ -121,7 +121,7 @@ const getPositionDetail = async (id) => {
 if (route.query && route.query.id) {
   if (route.query.id) getPositionDetail(route.query.id)
 }
-// getPositionDetail('1821495780406075393') // 测试使用
+// getPositionDetail('1824338255638728705') // 测试使用
 
 // 取消
 const handleCancel = (hire) => { //  hire:是否是众聘岗位

+ 4 - 1
src/views/recruit/enterprise/positionManagement/components/baseInfo.vue

@@ -249,6 +249,7 @@ watch(
         return
       }
       if (e.noParam) return
+      if (e.key === 'hirePrice') return e.value = commissionCalculation(val[e.key], 'realPay')
       e.value = val[e.key]
       e.change && e.change(e.value)
     })
@@ -286,8 +287,10 @@ const getQuery = async () => {
   if (!obj.hire) {
     // obj.hirePoint = 0
     obj.hirePrice = 0
+  } else {
+    obj.hirePrice = commissionCalculation(obj.hirePrice, 'emitPay')
   }
-  obj.hirePrice = (obj.hirePrice - 0)*100 // 后端需要
+  
   query = Object.assign(query, obj)
   return query
 }

+ 1 - 1
src/views/recruit/enterprise/positionManagement/index.vue

@@ -57,7 +57,7 @@ const query = ref({
 
 const showHire = (route.query?.hire - 0) || 0
 const tab = ref(showHire ? 4: 1)
-if (showHire) history.replaceState({ ...route.query, hire: 0 }, '', route.path) // 更新浏览器历史记录,不触发页面重新加载 ( 目的:去除目标参数 )
+// if (showHire) history.replaceState({ ...route.query, hire: 0 }, '', route.path) // 更新浏览器历史记录,不触发页面重新加载 ( 目的:去除目标参数 )
 
 const tabList = [
   { label: t('position.recruitmentInProgress'), value: 1 },