移除系统配置获取金额
This commit is contained in:
+69
-47
@@ -45,16 +45,13 @@
|
||||
import {
|
||||
getOrderList,
|
||||
queryById,
|
||||
getOrderByOrderNo,
|
||||
getOrderByOrderNoScorePayStatus,
|
||||
cancelOrder,
|
||||
createWxPayment
|
||||
cancelOrder
|
||||
} from '../../config/api/order.js';
|
||||
import {
|
||||
updateUserBalance
|
||||
} from '../../config/api/user.js';
|
||||
import {
|
||||
URL
|
||||
} from '../../config/url.js';
|
||||
getDeviceInfo
|
||||
} from '../../config/api/device.js';
|
||||
import { useI18n } from '@/utils/i18n.js'
|
||||
|
||||
const { t } = useI18n()
|
||||
@@ -283,54 +280,79 @@
|
||||
navigateToOrderDetail(order);
|
||||
};
|
||||
|
||||
// 立即支付
|
||||
/**
|
||||
* 待支付订单:与设备租借押金流程一致,进入支付详情页(微信/支付宝/H5-Antom/DANA 等在支付页内选择并完成)
|
||||
*/
|
||||
const handlePayment = async (order) => {
|
||||
const orderNo = order.orderNo
|
||||
const orderId = order.orderId || order.orderNo
|
||||
if (!orderId && !orderNo) {
|
||||
uni.showToast({
|
||||
title: t('order.orderInfoMissing'),
|
||||
icon: 'none'
|
||||
})
|
||||
return
|
||||
}
|
||||
|
||||
try {
|
||||
uni.showLoading({
|
||||
title: t('common.processing')
|
||||
});
|
||||
|
||||
// 调用后端创建微信支付订单接口
|
||||
const res = await createWxPayment(order.orderNo);
|
||||
title: t('common.loading')
|
||||
})
|
||||
|
||||
if (res && res.code === 200) {
|
||||
const payParams = res.data;
|
||||
|
||||
// 调用微信支付
|
||||
await uni.requestPayment({
|
||||
...payParams,
|
||||
success: async () => {
|
||||
uni.showToast({
|
||||
title: t('payment.paymentSuccess'),
|
||||
icon: 'success'
|
||||
});
|
||||
|
||||
// 更新用户余额
|
||||
try {
|
||||
await updateUserBalance(order.orderId || order.orderNo);
|
||||
} catch (error) {
|
||||
console.warn('更新用户余额失败:', error);
|
||||
}
|
||||
|
||||
// 刷新订单列表
|
||||
await loadOrderList(orderStatusTabs[currentTab.value].status);
|
||||
},
|
||||
fail: (err) => {
|
||||
console.error('支付失败:', err);
|
||||
throw new Error(t('payment.paymentFailedRetry'));
|
||||
}
|
||||
});
|
||||
} else {
|
||||
throw new Error(res?.msg || '创建支付订单失败');
|
||||
let od = null
|
||||
if (orderNo) {
|
||||
const res = await getOrderByOrderNo(orderNo)
|
||||
if (res && res.code === 200 && res.data) {
|
||||
od = res.data
|
||||
}
|
||||
}
|
||||
|
||||
uni.hideLoading();
|
||||
if (!od && orderId) {
|
||||
const res = await queryById(orderId)
|
||||
if (res && res.code === 200 && res.data) {
|
||||
od = res.data
|
||||
}
|
||||
}
|
||||
|
||||
const idForPay = String(od?.orderId ?? orderId ?? orderNo ?? '')
|
||||
const qsParts = [`orderId=${encodeURIComponent(idForPay)}`]
|
||||
|
||||
if (od) {
|
||||
const deposit = parseFloat(od.depositAmount)
|
||||
const packagePrice = parseFloat(od.unitPrice)
|
||||
if (Number.isFinite(packagePrice)) {
|
||||
qsParts.push(`packagePrice=${packagePrice}`)
|
||||
}
|
||||
if (Number.isFinite(deposit)) {
|
||||
const totalAmount = deposit.toFixed(2)
|
||||
qsParts.push(`totalAmount=${encodeURIComponent(totalAmount)}`)
|
||||
qsParts.push(`depositAmount=${encodeURIComponent(String(deposit))}`)
|
||||
}
|
||||
|
||||
const deviceNo = od.deviceNo || order.deviceId
|
||||
if (deviceNo) {
|
||||
try {
|
||||
const devRes = await getDeviceInfo(deviceNo)
|
||||
const feeCfg = devRes?.data?.device?.feeConfig
|
||||
if (feeCfg) {
|
||||
qsParts.push(`feeConfig=${encodeURIComponent(feeCfg)}`)
|
||||
}
|
||||
} catch (e) {
|
||||
console.warn('获取设备 feeConfig 失败,支付页将仅依赖订单信息:', e)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
uni.hideLoading()
|
||||
uni.navigateTo({
|
||||
url: `/subPackages/order/payment?${qsParts.join('&')}`
|
||||
})
|
||||
} catch (error) {
|
||||
uni.hideLoading();
|
||||
uni.hideLoading()
|
||||
console.error('跳转支付页失败:', error)
|
||||
uni.showToast({
|
||||
title: error.message || t('payment.paymentFailed'),
|
||||
title: error?.message || t('payment.paymentFailed'),
|
||||
icon: 'none'
|
||||
});
|
||||
})
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
@@ -117,12 +117,6 @@
|
||||
import {
|
||||
useI18n
|
||||
} from '@/utils/i18n.js'
|
||||
import {
|
||||
fetchAndCacheDanaPaymentConfig,
|
||||
DANA_TOTAL_STORAGE_KEY,
|
||||
DANA_SINGLE_STORAGE_KEY,
|
||||
parseDanaStorageNumber
|
||||
} from '@/utils/danaPaymentConfig.js'
|
||||
|
||||
const {
|
||||
t
|
||||
@@ -135,23 +129,6 @@
|
||||
const passedTotalAmount = ref(null)
|
||||
const passedDepositAmount = ref(null)
|
||||
const currencyCode = ref('USD')
|
||||
const IDR_DEPOSIT_DISPLAY = ref(99000)
|
||||
const IDR_SINGLE_DISPLAY = ref(6000)
|
||||
|
||||
const loadDanaTotalCache = () => {
|
||||
try {
|
||||
const cachedTotal = parseDanaStorageNumber(uni.getStorageSync(DANA_TOTAL_STORAGE_KEY))
|
||||
const cachedSingle = parseDanaStorageNumber(uni.getStorageSync(DANA_SINGLE_STORAGE_KEY))
|
||||
if (cachedTotal !== null && cachedTotal > 0) {
|
||||
IDR_DEPOSIT_DISPLAY.value = cachedTotal
|
||||
}
|
||||
if (cachedSingle !== null && cachedSingle > 0) {
|
||||
IDR_SINGLE_DISPLAY.value = cachedSingle
|
||||
}
|
||||
} catch (e) {
|
||||
console.warn('读取 DANA 预支付缓存失败,使用默认值:', e)
|
||||
}
|
||||
}
|
||||
|
||||
// 支付方式相关(微信/支付宝/H5-Antom 多平台)
|
||||
const paymentMethods = ref([])
|
||||
@@ -178,7 +155,12 @@
|
||||
|
||||
const totalAmount = computed(() => {
|
||||
if (currencyCode.value === 'IDR') {
|
||||
return `${IDR_DEPOSIT_DISPLAY.value}`
|
||||
const raw =
|
||||
passedTotalAmount.value != null && passedTotalAmount.value !== ''
|
||||
? passedTotalAmount.value
|
||||
: orderInfo.value.deposit
|
||||
const num = Number(String(raw ?? '').replace(/[^\d.-]/g, ''))
|
||||
return Number.isFinite(num) ? String(Math.trunc(num)) : String(raw || '0')
|
||||
}
|
||||
if (passedTotalAmount.value !== null) {
|
||||
return parseFloat(passedTotalAmount.value).toFixed(2);
|
||||
@@ -281,10 +263,7 @@
|
||||
currencyCode.value = (res.data?.position?.currency || currencyCode.value || 'USD').toUpperCase()
|
||||
|
||||
if (deviceInfo.value && deviceInfo.value.depositAmount) {
|
||||
orderInfo.value.deposit = deviceInfo.value.depositAmount;
|
||||
}
|
||||
if (currencyCode.value === 'IDR') {
|
||||
orderInfo.value.deposit = `${IDR_DEPOSIT_DISPLAY.value}`
|
||||
orderInfo.value.deposit = deviceInfo.value.depositAmount
|
||||
}
|
||||
}
|
||||
} catch (error) {
|
||||
@@ -350,14 +329,14 @@
|
||||
paymentMethodType: 'ALIPAY_DANA',
|
||||
paymentMethodName: t('payment.ALIPAYDANA')
|
||||
})
|
||||
methods.push({
|
||||
paymentMethodType: 'ALIPAY_HK',
|
||||
paymentMethodName: t('payment.alipayHk')
|
||||
})
|
||||
methods.push({
|
||||
paymentMethodType: 'ALIPAY_ID',
|
||||
paymentMethodName: t('payment.alipayId')
|
||||
})
|
||||
// methods.push({
|
||||
// paymentMethodType: 'ALIPAY_HK',
|
||||
// paymentMethodName: t('payment.alipayHk')
|
||||
// })
|
||||
// methods.push({
|
||||
// paymentMethodType: 'ALIPAY_ID',
|
||||
// paymentMethodName: t('payment.alipayId')
|
||||
// })
|
||||
|
||||
} catch (error) {
|
||||
console.error('获取 Antom 支付方式失败:', error);
|
||||
@@ -713,10 +692,6 @@
|
||||
}
|
||||
|
||||
onLoad((options) => {
|
||||
loadDanaTotalCache()
|
||||
void fetchAndCacheDanaPaymentConfig()
|
||||
.then(() => loadDanaTotalCache())
|
||||
.catch((e) => console.warn('DANA 配置刷新失败:', e))
|
||||
// 设置导航栏标题为待支付
|
||||
uni.setNavigationBarTitle({
|
||||
title: t('payment.waitingForPayment')
|
||||
|
||||
Reference in New Issue
Block a user