From 70f281974b01fd3870691c67547a3d89ab93c8fe Mon Sep 17 00:00:00 2001 From: zhongzm Date: Wed, 22 Jan 2025 10:27:05 +0800 Subject: [PATCH] =?UTF-8?q?fix=EF=BC=9A=E6=94=AF=E4=BB=98=E6=96=B9?= =?UTF-8?q?=E5=BC=8F=E5=AF=B9=E6=8E=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../order-confirm/orderConfirmModal.vue | 155 ------------------ src/locales/langs/en-us.ts | 11 -- src/locales/langs/zh-cn.ts | 14 -- src/typings/auto-imports.d.ts | 3 - src/typings/components.d.ts | 1 - src/views/recharge/balancerecharge/index.vue | 111 +++++++------ src/views/recharge/package/index.vue | 104 ++---------- 7 files changed, 70 insertions(+), 329 deletions(-) delete mode 100644 src/components/order-confirm/orderConfirmModal.vue diff --git a/src/components/order-confirm/orderConfirmModal.vue b/src/components/order-confirm/orderConfirmModal.vue deleted file mode 100644 index b61073b..0000000 --- a/src/components/order-confirm/orderConfirmModal.vue +++ /dev/null @@ -1,155 +0,0 @@ - - - - - diff --git a/src/locales/langs/en-us.ts b/src/locales/langs/en-us.ts index 13cccad..11c2132 100644 --- a/src/locales/langs/en-us.ts +++ b/src/locales/langs/en-us.ts @@ -661,17 +661,6 @@ const local: any = { balanceRecharge:'Banlance Recharge', packageSubscription:'Package Subscription', }, - order:{ - confirmOrder:'Order Confirmation', - orderType:'Order type', - balanceRecharge:'Balance recharge', - packagePurchase:'Package processing', - orderAmount:'Amount', - orderId:'ID', - selectPayment:'Payment', - alipay:'Alipay', - wxpay:'WeChat Pay' - } }, form: { required: 'Cannot be empty', diff --git a/src/locales/langs/zh-cn.ts b/src/locales/langs/zh-cn.ts index e96ecdf..ce4fcb3 100644 --- a/src/locales/langs/zh-cn.ts +++ b/src/locales/langs/zh-cn.ts @@ -663,20 +663,6 @@ const local:any = { balanceRecharge:'余额充值', packageSubscription:'套餐办理', }, - order:{ - confirmOrder:'订单确认', - orderType:'订单类型', - balanceRecharge:'余额充值', - packagePurchase:'套餐办理', - orderAmount:'订单金额', - orderId:'订单ID', - selectPayment:'支付方式', - alipay:'支付宝支付', - wxpay:'微信支付' - }, - package:{ - - } }, form: { required: '不能为空', diff --git a/src/typings/auto-imports.d.ts b/src/typings/auto-imports.d.ts index 896f459..8bc83f7 100644 --- a/src/typings/auto-imports.d.ts +++ b/src/typings/auto-imports.d.ts @@ -14,7 +14,6 @@ declare global { const afterAll: typeof import('vitest')['afterAll'] const afterEach: typeof import('vitest')['afterEach'] const aliPayPcPay: typeof import('../service/api/payment')['aliPayPcPay'] - const aliPayWapPay: typeof import('../service/api/payment')['aliPayWapPay'] const assert: typeof import('vitest')['assert'] const assign: typeof import('lodash-es')['assign'] const asyncComputed: typeof import('@vueuse/core')['asyncComputed'] @@ -75,7 +74,6 @@ declare global { const doGetDictList: typeof import('../service/api/dict')['doGetDictList'] const doGetMenuDetail: typeof import('../service/api/menu')['doGetMenuDetail'] const doGetMenuList: typeof import('../service/api/menu')['doGetMenuList'] - const doGetOrderInfo: typeof import('../service/api/order')['doGetOrderInfo'] const doGetPostDetail: typeof import('../service/api/post')['doGetPostDetail'] const doGetPostList: typeof import('../service/api/post')['doGetPostList'] const doGetRoleList: typeof import('../service/api/role')['doGetRoleList'] @@ -435,7 +433,6 @@ declare global { const watchTriggerable: typeof import('@vueuse/core')['watchTriggerable'] const watchWithFilter: typeof import('@vueuse/core')['watchWithFilter'] const whenever: typeof import('@vueuse/core')['whenever'] - const wxPayScanCode: typeof import('../service/api/payment')['wxPayScanCode'] } // for type re-export declare global { diff --git a/src/typings/components.d.ts b/src/typings/components.d.ts index ed7ff80..7838d49 100644 --- a/src/typings/components.d.ts +++ b/src/typings/components.d.ts @@ -77,7 +77,6 @@ declare module 'vue' { LangSwitch: typeof import('./../components/common/lang-switch.vue')['default'] LookForward: typeof import('./../components/custom/look-forward.vue')['default'] MenuToggler: typeof import('./../components/common/menu-toggler.vue')['default'] - OrderConfirmModal: typeof import('./../components/order-confirm/orderConfirmModal.vue')['default'] PinToggler: typeof import('./../components/common/pin-toggler.vue')['default'] ReloadButton: typeof import('./../components/common/reload-button.vue')['default'] RouterLink: typeof import('vue-router')['RouterLink'] diff --git a/src/views/recharge/balancerecharge/index.vue b/src/views/recharge/balancerecharge/index.vue index 4510a7a..d8c9f41 100644 --- a/src/views/recharge/balancerecharge/index.vue +++ b/src/views/recharge/balancerecharge/index.vue @@ -7,7 +7,6 @@ import { message } from 'ant-design-vue'; import { useRouterPush } from '@/hooks/common/router'; import { useAppStore } from '@/store/modules/app'; import type { Ref } from 'vue'; -import OrderConfirmModal from '@/components/order-confirm/orderConfirmModal.vue'; defineOptions({ name: 'BalanceRecharge' @@ -83,14 +82,6 @@ onUnmounted(() => { document.removeEventListener('click', handleClickOutside); }); -// 添加订单确认弹窗相关状态 -const showOrderModal = ref(false); -const currentOrderInfo = ref({ - orderId: '', - orderType: 1, // 1 表示余额充值 - orderAmount: 0 -}); - // 修改充值处理方法 const handleRecharge = async () => { // 验证金额 @@ -99,54 +90,55 @@ const handleRecharge = async () => { return; } + try { + await submitOrder({ + type: 1, + orderAmount: paymentAmount.value + }); + message.success('充值订单提交成功!'); + } catch (error) { + message.error('充值失败,请重试!'); + console.error('Failed to submit recharge order:', error); + } +}; +// 测试:支付宝支付 +const handleAliPay = async () => { try { const orderRes = await submitOrder({ type: 1, orderAmount: paymentAmount.value }); + // 区分手机端和pc端支付 + let res; + if(appStore.isMobile) { + res = await aliPayWapPay({orderId: orderRes.data}); + } else { + res = await aliPayPcPay({orderId: orderRes.data}); + } + console.log(res); + const div = document.createElement("div"); + div.innerHTML = res; // html code + document.body.appendChild(div); + document.forms['punchout_form'].submit(); - // 更新订单信息并显示弹窗 - currentOrderInfo.value = { - orderId: orderRes.data, - orderType: 1, - orderAmount: paymentAmount.value - }; - showOrderModal.value = true; } catch (error) { - message.error('创建订单失败,请重试!'); - console.error('Failed to create order:', error); + message.error('充值失败,请重试!'); + console.error('Failed to submit recharge order:', error); } }; - -// 处理支付方式选择 -const handlePaymentConfirm = async (paymentMethod: 'alipay' | 'wxpay') => { +// 微信支付 +const handleWxPay = async () => { try { - if (paymentMethod === 'alipay') { - // 区分手机端和pc端支付 - let res; - if (appStore.isMobile) { - res = await aliPayWapPay({ orderId: currentOrderInfo.value.orderId }); - } else { - res = await aliPayPcPay({ orderId: currentOrderInfo.value.orderId }); - } - const div = document.createElement("div"); - div.innerHTML = res; - document.body.appendChild(div); - document.forms['punchout_form'].submit(); - } else { - const res = await wxPayScanCode({ orderId: currentOrderInfo.value.orderId }); - routerPushByKey('billing_wxpay', { - query: { - url: res.data, - orderId: currentOrderInfo.value.orderId - } - }); - } + const orderRes = await submitOrder({ + type: 1, + orderAmount: paymentAmount.value + }); + const res = await wxPayScanCode({orderId: orderRes.data}); + routerPushByKey('billing_wxpay', { query: { url: res.data, orderId: orderRes.data } }) + } catch (error) { - message.error(t('page.order.paymentFailed')); - console.error('Payment failed:', error); - } finally { - showOrderModal.value = false; + message.error('充值失败,请重试!'); + console.error('Failed to submit recharge order:', error); } }; @@ -201,14 +193,27 @@ const handlePaymentConfirm = async (paymentMethod: 'alipay' | 'wxpay') => { > ¥{{ paymentAmount.toFixed(2) }} {{ t('page.carddata.pay') }} + + + AliPay + + + + WxPay + - - - diff --git a/src/views/recharge/package/index.vue b/src/views/recharge/package/index.vue index 8fe6cd7..2f78c23 100644 --- a/src/views/recharge/package/index.vue +++ b/src/views/recharge/package/index.vue @@ -3,22 +3,12 @@ import { useI18n } from 'vue-i18n'; import { ref, onMounted } from 'vue'; import { fetchPackageList, submitOrder } from '@/service/api/auth'; import { message } from 'ant-design-vue'; -import OrderConfirmModal from '@/components/order-confirm/orderConfirmModal.vue'; -import { aliPayPcPay, wxPayScanCode } from '@/service/api/payment'; -import { useRouterPush } from '@/hooks/common/router'; defineOptions({ name: 'PackageSubscription' }); const { t } = useI18n(); -interface RateLimit { - upLimitEnable: boolean; - downLimitEnable: boolean; - upLimit: number; - downLimit: number; -} - interface PackageOption { id: string; packageName: string; @@ -34,8 +24,6 @@ interface PackageOption { periodNum: number; periodType: number; validityPeriod: string; - rateLimitEnable: boolean; - rateLimits: RateLimit; } // 添加有效期类型枚举 @@ -98,16 +86,6 @@ const formatTrafficValidity = (num: number, type: number): string => { return `${num}${unit}`; }; -// 添加速率格式化函数 -const formatSpeed = (speed: number): string => { - if (speed >= 1000000) { - return `${(speed / 1000000).toFixed(1)}Gbps`; - } else if (speed >= 1000) { - return `${(speed / 1000).toFixed(1)}Mbps`; - } - return `${speed}Kbps`; -}; - const packageOptions = ref([]); const selectedPackage = ref({ id: '1', @@ -123,25 +101,7 @@ const selectedPackage = ref({ promotion: '', periodNum: 0, periodType: PERIOD_TYPE.MONTH, - validityPeriod: '0月', - rateLimitEnable: false, - rateLimits: { - upLimitEnable: false, - downLimitEnable: false, - upLimit: 0, - downLimit: 0 - } -}); - -// 添加路由跳转方法 -const { routerPushByKey } = useRouterPush(); - -// 添加订单确认弹窗相关状态 -const showOrderModal = ref(false); -const currentOrderInfo = ref({ - orderId: '', - orderType: 0, // 0 表示购买套餐 - orderAmount: 0 + validityPeriod: '0月' }); const fetchPackages = async () => { @@ -156,22 +116,13 @@ const fetchPackages = async () => { clientNumEnable: pkg.clientNumEnable, traffic: Number(pkg.traffic), trafficEnable: pkg.trafficEnable, - trafficDisplay: pkg.trafficEnable ? formatTraffic(Number(pkg.traffic)) : '无限制', - durationEnable: Boolean(pkg.periodNum && pkg.periodType !== undefined), + trafficDisplay: pkg.trafficEnable ? `${formatTraffic(Number(pkg.traffic))},${formatTrafficValidity(Number(pkg.periodNum), Number(pkg.periodType))}内有效` : '无限制', + durationEnable: pkg.durationEnable, isRecommended: pkg.isRecommended || false, promotion: pkg.promotion || '', periodNum: Number(pkg.periodNum), periodType: Number(pkg.periodType), - validityPeriod: pkg.periodNum && pkg.periodType !== undefined - ? formatValidityPeriod(Number(pkg.periodNum), Number(pkg.periodType))+'内有效' - : '无限制', - rateLimitEnable: pkg.rateLimitEnable, - rateLimits: { - upLimitEnable: pkg.rateLimits?.upLimitEnable || false, - downLimitEnable: pkg.rateLimits?.downLimitEnable || false, - upLimit: Number(pkg.rateLimits?.upLimit) || 0, - downLimit: Number(pkg.rateLimits?.downLimit) || 0 - } + validityPeriod: pkg.durationEnable ? formatValidityPeriod(Number(pkg.periodNum), Number(pkg.periodType)) : '无限制' })); if (packageOptions.value.length > 0) { @@ -187,7 +138,7 @@ const selectPackage = (option: PackageOption) => { selectedPackage.value = option; }; -// 修改套餐办理方法 +// 套餐办理方法 const handleSubmitOrder = async () => { try { const orderRes = await submitOrder({ @@ -212,7 +163,13 @@ const handleSubmitOrder = async () => { const handlePaymentConfirm = async (paymentMethod: 'alipay' | 'wxpay') => { try { if (paymentMethod === 'alipay') { - const res = await aliPayPcPay({ orderId: currentOrderInfo.value.orderId }); + // 区分手机端和pc端支付 + let res; + if (appStore.isMobile) { + res = await aliPayWapPay({ orderId: currentOrderInfo.value.orderId }); + } else { + res = await aliPayPcPay({ orderId: currentOrderInfo.value.orderId }); + } const div = document.createElement("div"); div.innerHTML = res; document.body.appendChild(div); @@ -306,22 +263,6 @@ onMounted(async () => { {{ selectedPackage.durationEnable ? selectedPackage.validityPeriod : '无限制' }} -
-
速率限制
-
- - -
-
- - - @@ -506,18 +440,4 @@ onMounted(async () => { color: #666; margin-top: 4px; } - -.speed-limit { - font-size: 14px; - color: #666; - margin-top: 4px; -} - -.value > div { - margin-bottom: 4px; -} - -.value > div:last-child { - margin-bottom: 0; -}