feat: 添加订单支付和成功页面,更新订单状态逻辑
新增了订单支付页面和支付成功页面,分别用于处理用户的支付流程和展示支付结果。同时,更新了订单状态的逻辑,确保在订单列表中正确显示各个状态。调整了设备租借逻辑,优化了扫码处理流程,提升用户体验。
This commit is contained in:
+68
-64
@@ -3,13 +3,13 @@
|
||||
<!-- 状态切换 -->
|
||||
<view class="tab-bar">
|
||||
<view
|
||||
v-for="(tab, index) in tabs"
|
||||
v-for="(tab, index) in OrderStatusTabs"
|
||||
:key="index"
|
||||
class="tab-item"
|
||||
:class="{ active: currentTab === index }"
|
||||
@click="switchTab(index)"
|
||||
>
|
||||
{{ tab }}
|
||||
{{ tab.text }}
|
||||
</view>
|
||||
</view>
|
||||
|
||||
@@ -18,7 +18,7 @@
|
||||
<view class="order-item" v-for="(order, index) in orderList" :key="index">
|
||||
<view class="order-header">
|
||||
<text class="order-no">订单号:{{ order.orderNo }}</text>
|
||||
<text class="order-status" :class="order.status">{{ order.statusText }}</text>
|
||||
<text class="order-status" :class="OrderStatusMap[order.status]?.class">{{ OrderStatusMap[order.status]?.text }}</text>
|
||||
</view>
|
||||
<view class="order-content">
|
||||
<view class="device-info">
|
||||
@@ -51,32 +51,16 @@
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import {getOrderList, queryById} from '../../config/user.js'
|
||||
import {getOrderList, queryById} from '../../config/user.js'
|
||||
import { OrderStatusMap, OrderStatusTabs } from '../../constants/orderStatus.js'
|
||||
|
||||
export default {
|
||||
data() {
|
||||
return {
|
||||
currentTab: 0,
|
||||
tabs: ['全部', '使用中', '已完成'],
|
||||
orderList: [
|
||||
{
|
||||
orderNo: 'ORDER202403200001',
|
||||
status: 'using',
|
||||
statusText: '使用中',
|
||||
deviceId: 'FAN001',
|
||||
startTime: '2024-03-20 15:30',
|
||||
endTime: '',
|
||||
amount: '2.00'
|
||||
},
|
||||
{
|
||||
orderNo: 'ORDER202403190001',
|
||||
status: 'finished',
|
||||
statusText: '已完成',
|
||||
deviceId: 'FAN002',
|
||||
startTime: '2024-03-19 13:00',
|
||||
endTime: '2024-03-19 15:00',
|
||||
amount: '4.00'
|
||||
}
|
||||
]
|
||||
OrderStatusMap,
|
||||
OrderStatusTabs,
|
||||
orderList: []
|
||||
}
|
||||
},
|
||||
async onLoad(options) {
|
||||
@@ -91,20 +75,22 @@ export default {
|
||||
// 格式化订单数据
|
||||
const formattedOrder = {
|
||||
orderNo: orderData.orderId,
|
||||
status: orderData.orderStatus === 2 ? 'using' : 'finished',
|
||||
statusText: orderData.orderStatus === 2 ? '使用中' : '已完成',
|
||||
status: orderData.orderStatus,
|
||||
deviceId: orderData.deviceNo,
|
||||
startTime: this.formatTime(new Date(orderData.createTime)),
|
||||
endTime: orderData.endTime ? this.formatTime(new Date(orderData.endTime)) : '',
|
||||
startTime: orderData.createTime,
|
||||
endTime: orderData.endTime || '',
|
||||
amount: orderData.amount || '0.00'
|
||||
};
|
||||
|
||||
// 将订单添加到列表开头
|
||||
this.orderList = [formattedOrder, ...this.orderList];
|
||||
|
||||
// 如果是使用中的订单,切换到使用中标签
|
||||
if (orderData.orderStatus === 2) {
|
||||
this.switchTab(1); // 切换到"使用中"
|
||||
// 根据订单状态切换到对应标签
|
||||
const tabIndex = this.OrderStatusTabs.findIndex(tab =>
|
||||
tab.status.includes(orderData.orderStatus)
|
||||
);
|
||||
if (tabIndex !== -1) {
|
||||
this.switchTab(tabIndex);
|
||||
}
|
||||
}
|
||||
} catch (error) {
|
||||
@@ -113,38 +99,36 @@ export default {
|
||||
}
|
||||
|
||||
// 获取订单列表
|
||||
try {
|
||||
const res = await getOrderList();
|
||||
console.log(res);
|
||||
if (res.code === 200 && res.data && res.data.records) {
|
||||
// 处理订单列表数据
|
||||
this.orderList = res.data.records.map(item => ({
|
||||
orderNo: item.orderId,
|
||||
status: item.orderStatus === 2 ? 'using' : 'finished',
|
||||
statusText: item.orderStatus === 2 ? '使用中' : '已完成',
|
||||
deviceId: item.deviceNo,
|
||||
startTime: item.startTime,
|
||||
endTime: item.endTime ? this.formatTime(new Date(item.endTime)) : '',
|
||||
amount: item.amount || '0.00'
|
||||
}));
|
||||
}
|
||||
} catch (error) {
|
||||
console.error('获取订单列表失败:', error);
|
||||
}
|
||||
await this.getOrderList();
|
||||
},
|
||||
methods: {
|
||||
formatTime(date) {
|
||||
const year = date.getFullYear()
|
||||
const month = (date.getMonth() + 1).toString().padStart(2, '0')
|
||||
const day = date.getDate().toString().padStart(2, '0')
|
||||
const hour = date.getHours().toString().padStart(2, '0')
|
||||
const minute = date.getMinutes().toString().padStart(2, '0')
|
||||
|
||||
return `${year}-${month}-${day} ${hour}:${minute}`
|
||||
async getOrderList(statusList = []) {
|
||||
try {
|
||||
const res = await getOrderList(statusList);
|
||||
if (res.code === 200 && res.data && res.data.records) {
|
||||
// 处理订单列表数据
|
||||
this.orderList = res.data.records.map(item => ({
|
||||
orderNo: item.orderId,
|
||||
status: item.orderStatus,
|
||||
deviceId: item.deviceNo,
|
||||
startTime: item.createTime,
|
||||
endTime: item.endTime || '',
|
||||
amount: item.amount || '0.00'
|
||||
}));
|
||||
}
|
||||
} catch (error) {
|
||||
console.error('获取订单列表失败:', error);
|
||||
uni.showToast({
|
||||
title: '获取订单列表失败',
|
||||
icon: 'none'
|
||||
});
|
||||
}
|
||||
},
|
||||
switchTab(index) {
|
||||
this.currentTab = index
|
||||
// TODO: 根据状态获取订单列表
|
||||
async switchTab(index) {
|
||||
this.currentTab = index;
|
||||
// 根据状态获取订单列表
|
||||
const statusList = this.OrderStatusTabs[index].status;
|
||||
await this.getOrderList(statusList);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -216,11 +200,31 @@ export default {
|
||||
.order-status {
|
||||
font-size: 26rpx;
|
||||
|
||||
&.using {
|
||||
&.status-waiting {
|
||||
color: #FF9800;
|
||||
}
|
||||
|
||||
&.status-progress {
|
||||
color: #2196F3;
|
||||
}
|
||||
|
||||
&.status-success {
|
||||
color: #4CAF50;
|
||||
}
|
||||
|
||||
&.status-using {
|
||||
color: #1976D2;
|
||||
}
|
||||
|
||||
&.finished {
|
||||
|
||||
&.status-failed {
|
||||
color: #F44336;
|
||||
}
|
||||
|
||||
&.status-cancelled {
|
||||
color: #9E9E9E;
|
||||
}
|
||||
|
||||
&.status-finished {
|
||||
color: #4CAF50;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user