feat: 添加设备归还功能和时间解析逻辑

在订单页面中添加了设备归还按钮,允许用户在订单状态为1时归还设备。同时,在归还页面中优化了时间解析逻辑,确保能够正确处理后端返回的时间格式,并更新使用时长和费用信息。删除了不再使用的axios相关文件,整合了uview-ui库以提升项目性能。
This commit is contained in:
8vd8
2025-04-10 14:19:05 +08:00
parent 3fecd77739
commit 3491d93e27
16 changed files with 1174 additions and 2712 deletions
+13 -9
View File
@@ -34,7 +34,7 @@ const _sfc_main = {
}
}
} catch (error) {
common_vendor.index.__f__("error", "at pages/order/index.vue:97", "获取订单详情失败:", error);
common_vendor.index.__f__("error", "at pages/order/index.vue:98", "获取订单详情失败:", error);
}
}
await this.getOrderList();
@@ -54,7 +54,7 @@ const _sfc_main = {
}));
}
} catch (error) {
common_vendor.index.__f__("error", "at pages/order/index.vue:120", "获取订单列表失败:", error);
common_vendor.index.__f__("error", "at pages/order/index.vue:121", "获取订单列表失败:", error);
common_vendor.index.showToast({
title: "获取订单列表失败",
icon: "none"
@@ -80,16 +80,20 @@ function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
}),
b: common_vendor.f($data.orderList, (order, index, i0) => {
var _a, _b;
return {
return common_vendor.e({
a: common_vendor.t(order.orderNo),
b: common_vendor.t((_a = $data.OrderStatusMap[order.status]) == null ? void 0 : _a.text),
c: common_vendor.n((_b = $data.OrderStatusMap[order.status]) == null ? void 0 : _b.class),
d: common_vendor.t(order.deviceId),
e: common_vendor.t(order.startTime),
f: common_vendor.t(order.endTime || "-"),
g: common_vendor.t(order.amount),
h: index
};
d: order.status === 1
}, order.status === 1 ? {
e: `/pages/return/index?deviceId=${order.deviceId}&orderId=${order.orderNo}`
} : {}, {
f: common_vendor.t(order.deviceId),
g: common_vendor.t(order.startTime),
h: common_vendor.t(order.endTime || "-"),
i: common_vendor.t(order.amount),
j: index
});
}),
c: $data.orderList.length === 0
}, $data.orderList.length === 0 ? {} : {});
+1 -1
View File
@@ -1 +1 @@
<view class="order-container data-v-17a44f9d"><view class="tab-bar data-v-17a44f9d"><view wx:for="{{a}}" wx:for-item="tab" wx:key="b" class="{{['tab-item', 'data-v-17a44f9d', tab.c && 'active']}}" bindtap="{{tab.d}}">{{tab.a}}</view></view><view class="order-list data-v-17a44f9d"><view wx:for="{{b}}" wx:for-item="order" wx:key="h" class="order-item data-v-17a44f9d"><view class="order-header data-v-17a44f9d"><text class="order-no data-v-17a44f9d">订单号:{{order.a}}</text><text class="{{['order-status', 'data-v-17a44f9d', order.c]}}">{{order.b}}</text></view><view class="order-content data-v-17a44f9d"><view class="device-info data-v-17a44f9d"><text class="device-name data-v-17a44f9d">共享风扇</text><text class="device-id data-v-17a44f9d">设备号:{{order.d}}</text></view><view class="time-info data-v-17a44f9d"><view class="time-item data-v-17a44f9d"><text class="label data-v-17a44f9d">开始时间:</text><text class="value data-v-17a44f9d">{{order.e}}</text></view><view class="time-item data-v-17a44f9d"><text class="label data-v-17a44f9d">结束时间:</text><text class="value data-v-17a44f9d">{{order.f}}</text></view></view><view class="price-info data-v-17a44f9d"><text class="amount data-v-17a44f9d">¥{{order.g}}</text></view></view></view></view><view wx:if="{{c}}" class="empty-tip data-v-17a44f9d"><view class="empty-icon data-v-17a44f9d"></view><text class="data-v-17a44f9d">暂无订单记录</text></view></view>
<view class="order-container data-v-17a44f9d"><view class="tab-bar data-v-17a44f9d"><view wx:for="{{a}}" wx:for-item="tab" wx:key="b" class="{{['tab-item', 'data-v-17a44f9d', tab.c && 'active']}}" bindtap="{{tab.d}}">{{tab.a}}</view></view><view class="order-list data-v-17a44f9d"><view wx:for="{{b}}" wx:for-item="order" wx:key="j" class="order-item data-v-17a44f9d"><view class="order-header data-v-17a44f9d"><text class="order-no data-v-17a44f9d">订单号:{{order.a}}</text><text class="{{['order-status', 'data-v-17a44f9d', order.c]}}">{{order.b}}</text><navigator wx:if="{{order.d}}" url="{{order.e}}" class="return-btn data-v-17a44f9d">归还设备</navigator></view><view class="order-content data-v-17a44f9d"><view class="device-info data-v-17a44f9d"><text class="device-name data-v-17a44f9d">共享风扇</text><text class="device-id data-v-17a44f9d">设备号:{{order.f}}</text></view><view class="time-info data-v-17a44f9d"><view class="time-item data-v-17a44f9d"><text class="label data-v-17a44f9d">开始时间:</text><text class="value data-v-17a44f9d">{{order.g}}</text></view><view class="time-item data-v-17a44f9d"><text class="label data-v-17a44f9d">结束时间:</text><text class="value data-v-17a44f9d">{{order.h}}</text></view></view><view class="price-info data-v-17a44f9d"><text class="amount data-v-17a44f9d">¥{{order.i}}</text></view></view></view></view><view wx:if="{{c}}" class="empty-tip data-v-17a44f9d"><view class="empty-icon data-v-17a44f9d"></view><text class="data-v-17a44f9d">暂无订单记录</text></view></view>
+15 -14
View File
@@ -35,7 +35,17 @@ const _sfc_main = {
const result = await config_user.queryById(this.orderInfo.orderId);
if (result.code === 200 && result.data) {
const orderData = result.data;
this.orderInfo.startTime = this.formatTime(new Date(orderData.createTime));
const rawTime = orderData.startTime;
common_vendor.index.__f__("log", "at pages/return/index.vue:105", "原始时间:", rawTime);
const fixedTime = rawTime.replace(" ", "T");
const date = new Date(fixedTime);
common_vendor.index.__f__("log", "at pages/return/index.vue:108", "原始时间:", rawTime);
if (isNaN(date.getTime())) {
this.orderInfo.startTime = "时间解析错误";
} else {
common_vendor.index.__f__("log", "at pages/return/index.vue:112", "原始时间:", rawTime);
this.orderInfo.startTime = this.formatTime(date);
}
this.calculateUsedTime(orderData.createTime);
this.orderInfo.currentFee = orderData.amount || "0.00";
} else {
@@ -64,19 +74,10 @@ const _sfc_main = {
const minute = date.getMinutes().toString().padStart(2, "0");
return `${year}-${month}-${day} ${hour}:${minute}`;
},
// 计算使用时长
calculateUsedTime(startTime) {
const start = new Date(startTime);
const now = /* @__PURE__ */ new Date();
const diffMs = now - start;
const minutes = Math.floor(diffMs / (1e3 * 60));
if (minutes < 60) {
this.orderInfo.usedTime = `${minutes}分钟`;
} else {
const hours = Math.floor(minutes / 60);
const remainMinutes = minutes % 60;
this.orderInfo.usedTime = `${hours}小时${remainMinutes}分钟`;
}
// 使用后端返回的使用时长和费用数据
updateOrderInfo(orderData) {
this.orderInfo.usedTime = orderData.usedTime || "0分钟";
this.orderInfo.currentFee = orderData.currentFee || "0.00";
},
// 更新使用时长的定时器
startTimer() {