fix:修复订单列表页搜索参数传递错误的问题;移除租借设备时手机号的验证效果;新增免押无法使用走非免押逻辑的方法
This commit is contained in:
+115
-60
@@ -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({
|
||||
|
||||
+20
-10
@@ -21,8 +21,8 @@
|
||||
<view class="order-id">
|
||||
<text>订单号:{{ order.orderNo }}</text>
|
||||
</view>
|
||||
<view class="order-status" :class="orderStatusMap[order.status]?.class">
|
||||
{{ orderStatusMap[order.status]?.text }}
|
||||
<view class="order-status" :class="orderStatusMap[order.orderStatus]?.class">
|
||||
{{ orderStatusMap[order.orderStatus]?.text }}
|
||||
</view>
|
||||
</view>
|
||||
|
||||
@@ -70,7 +70,8 @@
|
||||
<view class="price">¥{{ order.amount }}</view>
|
||||
|
||||
<view class="actions">
|
||||
<view v-if="order.status=='in_used'" class="action-item primary" @click="navigateToReturn(order.deviceId, order.orderId)">
|
||||
<view v-if="order.status=='in_used'" class="action-item primary"
|
||||
@click="navigateToReturn(order.deviceId, order.orderId)">
|
||||
归还设备
|
||||
</view>
|
||||
<view v-if="order.status === 'waiting_for_payment'" class="action-item secondary"
|
||||
@@ -133,7 +134,7 @@
|
||||
text: '已完成',
|
||||
class: 'status-finished'
|
||||
},
|
||||
'canceled': {
|
||||
'order_cancelled': {
|
||||
text: '已取消',
|
||||
class: 'status-cancelled'
|
||||
}
|
||||
@@ -144,17 +145,21 @@
|
||||
text: '全部',
|
||||
status: []
|
||||
},
|
||||
{
|
||||
text: '待付款',
|
||||
status: ['waiting_for_payment']
|
||||
},
|
||||
{
|
||||
text: '使用中',
|
||||
status: ['1', 'in_used']
|
||||
status: ['in_used']
|
||||
},
|
||||
{
|
||||
text: '已完成',
|
||||
status: ['2', 'used_done']
|
||||
status: ['used_done']
|
||||
},
|
||||
{
|
||||
text: '已取消',
|
||||
status: ['3', 'canceled']
|
||||
status: ['order_cancelled']
|
||||
}
|
||||
]);
|
||||
|
||||
@@ -208,13 +213,18 @@
|
||||
const switchTab = async (index) => {
|
||||
currentTab.value = index;
|
||||
// 根据状态获取订单列表
|
||||
const statusList = orderStatusTabs[index].status;
|
||||
const statusList = orderStatusTabs[index].status[0];
|
||||
await loadOrderList(statusList);
|
||||
};
|
||||
|
||||
// 加载订单列表
|
||||
const loadOrderList = async (statusList = []) => {
|
||||
const loadOrderList = async (statusList) => {
|
||||
try {
|
||||
if(statusList!=undefined){
|
||||
statusList = {
|
||||
orderStatus:statusList
|
||||
}
|
||||
}
|
||||
const res = await getOrderList(statusList);
|
||||
if (res.code === 200 && res.data && res.data.records) {
|
||||
// 处理订单列表数据
|
||||
@@ -225,7 +235,7 @@
|
||||
return {
|
||||
orderNo: item.orderNo,
|
||||
orderId: item.orderId,
|
||||
status: item.orderStatus,
|
||||
orderStatus: item.orderStatus,
|
||||
deviceId: item.deviceNo,
|
||||
payWay: item.payWay,
|
||||
startTime: orderStartTime,
|
||||
|
||||
Reference in New Issue
Block a user