fix:修复订单列表页搜索参数传递错误的问题;移除租借设备时手机号的验证效果;新增免押无法使用走非免押逻辑的方法

This commit is contained in:
2025-07-01 10:48:35 +08:00
parent 7be1e97b7c
commit f8c119d489
33 changed files with 281 additions and 167 deletions
+115 -60
View File
@@ -73,7 +73,7 @@
</view>
<!-- 手机号输入 -->
<view class="card phone-card" v-if="!hasActiveOrder">
<!-- <view class="card phone-card" v-if="!hasActiveOrder">
<view class="card-header">
<text class="card-title">联系方式</text>
</view>
@@ -83,9 +83,8 @@
<input type="number" class="phone-input" maxlength="11" placeholder="请输入手机号码"
v-model="phoneNumber" />
</view>
<!-- <text class="phone-tip">租借将发送验证码至此号码请确保可正常接收短信</text> -->
</view>
</view>
</view> -->
<!-- 使用须知 -->
<view class="card notice-card">
@@ -119,9 +118,13 @@
</view>
</view>
<button class="rent-button" :class="{ 'return-button': hasActiveOrder }" @click="handleRent">
<button class="rent-button" :class="{ 'return-button': hasActiveOrder }"
@click="handleRent('wx-score-pay')">
<text>{{ hasActiveOrder ? '归还设备' : '免押金租借' }}</text>
</button>
<view class="" style="align-items: center;align-content: center;text-align: center;line-height: 50rpx;"
@click="handleRent('wx-pay')">
无法免押点这里></view>
</view>
</view>
</template>
@@ -139,7 +142,9 @@
getDeviceInfo,
rentPowerBank,
getOrderByOrderNoScore,
getOrderByOrderNoScorePayStatus
getOrderByOrderNoScorePayStatus,
getOrderByOrderNo,
updateOrderPackage
} from '@/config/user.js'
import {
URL
@@ -242,36 +247,42 @@
}
// 处理租借操作
const handleRent = () => {
const handleRent = (payWay) => {
if (!isLoggedIn.value) {
showLoginTip()
return
}
// 添加手机号验证
if (!phoneNumber.value) {
uni.showToast({
title: '请输入手机号码',
icon: 'none'
})
return
}
// // 添加手机号验证
// if (!phoneNumber.value) {
// uni.showToast({
// title: '请输入手机号码',
// icon: 'none'
// })
// return
// }
// 验证手机号格式
if (!/^1[3-9]\d{9}$/.test(phoneNumber.value)) {
uni.showToast({
title: '请输入正确的手机号码',
icon: 'none'
})
return
}
// // 验证手机号格式
// if (!/^1[3-9]\d{9}$/.test(phoneNumber.value)) {
// uni.showToast({
// title: '请输入正确的手机号码',
// icon: 'none'
// })
// return
// }
// 直接提交订单,不显示确认对话框
submitRentOrder()
submitRentOrder(payWay);
}
const selectedPkg = reactive({
time: '1小时',
price: '5.00'
})
const depositAmount = ref('99.00')
// 提交租借订单
const submitRentOrder = async () => {
const submitRentOrder = async (payWay) => {
try {
uni.showLoading({
title: '处理中'
@@ -285,49 +296,93 @@
// 获取后端返回的订单信息
const order = rentResult.data
// 获取支付分所需参数
const res = await getOrderByOrderNoScore(order.orderNo);
console.log(res);
uni.hideLoading()
if (res && res.code === 200) {
//当支付方式为押金支付时
if (payWay == 'wx-pay') {
//当支付方式为押金支付时
uni.hideLoading()
const res = await getOrderByOrderNo(order.orderNo);
console.log(res);
try {
// 调用微信支付分小程序
const payResult = await initiateWeChatScorePayment(res);
// 支付成功后的逻辑处理 - 可以根据业务需求决定是否跳转或刷新页面
if (payResult.errCode == '0') {
const res = await getOrderByOrderNoScorePayStatus(order.orderNo);
// 用户完成了支付流程,可以查询订单状态或跳转到订单页
uni.showToast({
title: '设备租借成功',
icon: 'success'
});
setTimeout(() => {
// 延迟跳转到租用中页面或订单页
uni.redirectTo({
url: '/pages/order/index'
});
}, 1500);
let packageTimeMinutes = 0;
if (selectedPkg.time.includes('小时')) {
packageTimeMinutes = parseInt(selectedPkg.time) * 60;
} else if (selectedPkg.time.includes('分钟')) {
packageTimeMinutes = parseInt(selectedPkg.time);
} else {
packageTimeMinutes = parseInt(selectedPkg.time) * 60; // 默认按小时处理
}
// 用户取消等其他情况,不做特殊处理
} catch (payError) {
const updateRes = await updateOrderPackage({
orderId: order.orderId,
packageTime: packageTimeMinutes,
packagePrice: parseFloat(selectedPkg.price)
});
if (updateRes.code !== 200) {
console.warn("更新订单套餐信息失败:", updateRes.msg);
// 这里可以选择是否提示用户或阻止流程,当前不阻止
} else {
console.log("订单套餐信息已提前更新");
}
} catch (updateError) {
console.error("更新订单套餐信息时出错:", updateError);
// 即使更新失败,也继续尝试跳转支付,让用户完成支付
}
// --- 新增:计算总金额 ---
const deposit = parseFloat(deviceInfo.value.depositAmount);
const packagePrice = parseFloat(selectedPkg.price);
const totalAmount = (deposit + packagePrice).toFixed(2);
// --- 计算结束 ---
uni.hideLoading()
// 跳转到订单支付页面,传递订单ID、套餐信息和总金额
uni.redirectTo({
url: `/pages/order/payment?orderId=${order.orderId}&packageTimeHours=${selectedPkg.time.replace('小时', '')}&packagePrice=${selectedPkg.price}&totalAmount=${totalAmount}&depositAmount=${depositAmount.value}${deviceInfo.value && deviceInfo.value.feeConfig ? '&feeConfig=' + encodeURIComponent(deviceInfo.value.feeConfig) : ''}`
})
} else if ('wx-score-pay') {
// 当支付方式为支付分支付时
uni.hideLoading()
// 获取支付分所需参数
const res = await getOrderByOrderNoScore(order.orderNo);
console.log(res);
uni.hideLoading()
if (res && res.code === 200) {
try {
// 调用微信支付分小程序
const payResult = await initiateWeChatScorePayment(res);
// 支付成功后的逻辑处理 - 可以根据业务需求决定是否跳转或刷新页面
if (payResult.errCode == '0') {
const res = await getOrderByOrderNoScorePayStatus(order.orderNo);
// 用户完成了支付流程,可以查询订单状态或跳转到订单页
uni.showToast({
title: '设备租借成功',
icon: 'success'
});
setTimeout(() => {
// 延迟跳转到租用中页面或订单页
uni.redirectTo({
url: '/pages/order/index'
});
}, 1500);
}
// 用户取消等其他情况,不做特殊处理
} catch (payError) {
uni.showToast({
title: '支付分调用失败,请重试',
icon: 'none'
});
}
} else {
uni.showToast({
title: '支付分调用失败,请重试',
title: res?.msg || '获取支付参数失败',
icon: 'none'
});
}
} else {
uni.showToast({
title: res?.msg || '获取支付参数失败',
icon: 'none'
});
}
console.log(order);
} catch (error) {
uni.hideLoading()
uni.showToast({