From 757777de505845bf76915dc2a90d20e2d7eb0e13 Mon Sep 17 00:00:00 2001
From: WindowBird <13870814+windows-bird@user.noreply.gitee.com>
Date: Mon, 25 Aug 2025 14:12:27 +0800
Subject: [PATCH] =?UTF-8?q?=E8=AE=A2=E5=8D=95=E9=A1=B5=E9=9D=A2=E5=88=86?=
=?UTF-8?q?=E9=A1=B5=E5=8A=A0=E8=BD=BD=E7=9A=84=E5=AE=8C=E5=96=84?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
pages/myOrder/OrderDetail.vue | 134 +++++++++++++++++-----------------
pages/myOrder/myOrder.vue | 114 ++++++++++++++---------------
pages/profile/profile.vue | 17 ++---
3 files changed, 129 insertions(+), 136 deletions(-)
diff --git a/pages/myOrder/OrderDetail.vue b/pages/myOrder/OrderDetail.vue
index d1c56a8..891fd77 100644
--- a/pages/myOrder/OrderDetail.vue
+++ b/pages/myOrder/OrderDetail.vue
@@ -8,14 +8,14 @@ const loading = ref(false)
const orderId = ref('')
// 页面加载时获取参数
-onLoad((options) => {
+onLoad(options => {
if (options.id) {
orderId.value = options.id
loadOrderDetail()
} else {
uni.showToast({
title: '订单ID不能为空',
- icon: 'none'
+ icon: 'none',
})
setTimeout(() => {
uni.navigateBack()
@@ -32,20 +32,20 @@ onLoad((options) => {
function mapOrderStatus(type, value) {
const maps = {
status: {
- '1': '未支付',
- '2': '支付成功',
- '3': '退款',
- '未支付': '1',
- '支付成功': '2',
- '退款': '3',
+ 1: '未支付',
+ 2: '支付成功',
+ 3: '退款',
+ 未支付: '1',
+ 支付成功: '2',
+ 退款: '3',
},
logistic: {
- '1': '未签收',
- '2': '已签收',
- '3': '已归还',
- '未签收': '1',
- '已签收': '2',
- '已归还': '3',
+ 1: '未签收',
+ 2: '已签收',
+ 3: '已归还',
+ 未签收: '1',
+ 已签收: '2',
+ 已归还: '3',
},
}
@@ -59,9 +59,9 @@ function mapOrderStatus(type, value) {
*/
function getStatusClass(status) {
const statusMap = {
- '1': 'status-pending',
- '2': 'status-success',
- '3': 'status-refund'
+ 1: 'status-pending',
+ 2: 'status-success',
+ 3: 'status-refund',
}
return statusMap[status] || 'status-unknown'
}
@@ -73,9 +73,9 @@ function getStatusClass(status) {
*/
function getLogisticClass(status) {
const statusMap = {
- '1': 'logistic-pending',
- '2': 'logistic-success',
- '3': 'logistic-returned'
+ 1: 'logistic-pending',
+ 2: 'logistic-success',
+ 3: 'logistic-returned',
}
return statusMap[status] || 'logistic-unknown'
}
@@ -87,7 +87,7 @@ function getLogisticClass(status) {
*/
function formatTime(timeStr) {
if (!timeStr) return '--'
-
+
try {
// 处理iOS兼容性问题,将 "yyyy-MM-dd HH:mm:ss" 转换为 "yyyy/MM/dd HH:mm:ss"
let normalizedTimeStr = timeStr
@@ -95,20 +95,20 @@ function formatTime(timeStr) {
// 将 "2027-08-22 17:17:01" 转换为 "2027/08/22 17:17:01"
normalizedTimeStr = timeStr.replace(/-/g, '/')
}
-
+
const date = new Date(normalizedTimeStr)
-
+
// 检查日期是否有效
if (isNaN(date.getTime())) {
return timeStr
}
-
+
const year = date.getFullYear()
const month = String(date.getMonth() + 1).padStart(2, '0')
const day = String(date.getDate()).padStart(2, '0')
const hours = String(date.getHours()).padStart(2, '0')
const minutes = String(date.getMinutes()).padStart(2, '0')
-
+
return `${year}-${month}-${day} ${hours}:${minutes}`
} catch (error) {
console.error('时间格式化错误:', error, '原始时间:', timeStr)
@@ -121,11 +121,11 @@ function formatTime(timeStr) {
*/
const loadOrderDetail = async () => {
if (!orderId.value) return
-
+
try {
loading.value = true
const res = await getOrderDetail(orderId.value)
-
+
if (res.code === 200 && res.data) {
orderDetail.value = res.data
console.log('订单详情:', orderDetail.value)
@@ -151,14 +151,14 @@ const loadOrderDetail = async () => {
正在加载订单详情...
-
+
@@ -167,7 +167,7 @@ const loadOrderDetail = async () => {
创建时间:{{ formatTime(orderDetail.createTime) }}
-
+
@@ -196,7 +196,7 @@ const loadOrderDetail = async () => {
-
+
@@ -215,13 +215,13 @@ const loadOrderDetail = async () => {
安装地址:
{{ orderDetail.address || '--' }}
-
+
详细地址:
{{ orderDetail.detailed }}
-
+
@@ -234,23 +234,23 @@ const loadOrderDetail = async () => {
支付状态:
-
+
{{ mapOrderStatus('status', orderDetail.status) }}
物流状态:
-
+
{{ mapOrderStatus('logistic', orderDetail.logisticStatus) }}
-
+
支付单号:
{{ orderDetail.payId }}
-
+
@@ -265,14 +265,14 @@ const loadOrderDetail = async () => {
是否续租:
{{ orderDetail.renew ? '是' : '否' }}
-
+
备注信息:
{{ orderDetail.remark }}
-
+
❌
@@ -294,7 +294,7 @@ const loadOrderDetail = async () => {
justify-content: center;
align-items: center;
height: 400rpx;
-
+
.loading-text {
font-size: 28rpx;
color: #666;
@@ -307,18 +307,18 @@ const loadOrderDetail = async () => {
justify-content: center;
align-items: center;
height: 400rpx;
-
+
.error-icon {
font-size: 80rpx;
margin-bottom: 20rpx;
}
-
+
.error-text {
font-size: 28rpx;
color: #999;
margin-bottom: 30rpx;
}
-
+
.retry-btn {
background-color: #007aff;
color: #fff;
@@ -331,44 +331,44 @@ const loadOrderDetail = async () => {
.detail-content {
.status-card {
- background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
+ background: linear-gradient(135deg, #f15a04 0%, #f15a04 100%);
border-radius: 16rpx;
padding: 40rpx 30rpx;
margin-bottom: 20rpx;
color: #fff;
-
+
.status-header {
display: flex;
justify-content: space-between;
align-items: center;
margin-bottom: 20rpx;
-
+
.status-title {
font-size: 32rpx;
font-weight: 600;
}
-
+
.status-value {
font-size: 26rpx;
padding: 8rpx 16rpx;
border-radius: 20rpx;
background-color: rgba(255, 255, 255, 0.2);
font-weight: 500;
-
+
&.status-pending {
background-color: rgba(250, 140, 22, 0.8);
}
-
+
&.status-success {
background-color: rgba(82, 196, 26, 0.8);
}
-
+
&.status-refund {
background-color: rgba(255, 77, 79, 0.8);
}
}
}
-
+
.status-info {
.order-number {
display: block;
@@ -376,7 +376,7 @@ const loadOrderDetail = async () => {
margin-bottom: 10rpx;
opacity: 0.9;
}
-
+
.create-time {
display: block;
font-size: 24rpx;
@@ -384,79 +384,79 @@ const loadOrderDetail = async () => {
}
}
}
-
+
.info-card {
background-color: #fff;
border-radius: 16rpx;
margin-bottom: 20rpx;
overflow: hidden;
box-shadow: 0 2rpx 12rpx rgba(0, 0, 0, 0.08);
-
+
.card-title {
background-color: #f8f9fa;
padding: 20rpx 30rpx;
border-bottom: 1rpx solid #f0f0f0;
-
+
.title-text {
font-size: 30rpx;
font-weight: 600;
color: #333;
}
}
-
+
.card-content {
padding: 30rpx;
-
+
.info-item {
display: flex;
justify-content: space-between;
align-items: flex-start;
margin-bottom: 20rpx;
-
+
&:last-child {
margin-bottom: 0;
}
-
+
.label {
font-size: 28rpx;
color: #666;
min-width: 160rpx;
flex-shrink: 0;
}
-
+
.value {
font-size: 28rpx;
color: #333;
flex: 1;
text-align: right;
word-break: break-all;
-
+
&.amount {
font-size: 32rpx;
color: #f15a04;
font-weight: bold;
}
-
+
&.status-pending {
color: #fa8c16;
}
-
+
&.status-success {
color: #52c41a;
}
-
+
&.status-refund {
color: #ff4d4f;
}
-
+
&.logistic-pending {
color: #fa8c16;
}
-
+
&.logistic-success {
color: #52c41a;
}
-
+
&.logistic-returned {
color: #1890ff;
}
diff --git a/pages/myOrder/myOrder.vue b/pages/myOrder/myOrder.vue
index d03763c..1ad9898 100644
--- a/pages/myOrder/myOrder.vue
+++ b/pages/myOrder/myOrder.vue
@@ -4,32 +4,32 @@
正在加载...
-
+
📋
暂无订单数据
-
+
-
+
订单号:{{ item.orderNumber || item.id }}
¥{{ item.amount || '0.00' }}
-
+
租赁套餐:
@@ -45,14 +45,14 @@
物流状态:
-
+
{{ mapOrderStatus('logistic', item.logisticStatus) }}
-
+
没有更多数据了
@@ -79,20 +79,20 @@ const loading = ref(false)
function mapOrderStatus(type, value) {
const maps = {
status: {
- '1': '未支付',
- '2': '支付成功',
- '3': '退款',
- '未支付': '1',
- '支付成功': '2',
- '退款': '3',
+ 1: '未支付',
+ 2: '支付成功',
+ 3: '退款',
+ 未支付: '1',
+ 支付成功: '2',
+ 退款: '3',
},
logistic: {
- '1': '未签收',
- '2': '已签收',
- '3': '已归还',
- '未签收': '1',
- '已签收': '2',
- '已归还': '3',
+ 1: '未签收',
+ 2: '已签收',
+ 3: '已归还',
+ 未签收: '1',
+ 已签收: '2',
+ 已归还: '3',
},
}
@@ -106,9 +106,9 @@ function mapOrderStatus(type, value) {
*/
function getStatusClass(status) {
const statusMap = {
- '1': 'status-pending',
- '2': 'status-success',
- '3': 'status-refund'
+ 1: 'status-pending',
+ 2: 'status-success',
+ 3: 'status-refund',
}
return statusMap[status] || 'status-unknown'
}
@@ -120,9 +120,9 @@ function getStatusClass(status) {
*/
function getLogisticClass(status) {
const statusMap = {
- '1': 'logistic-pending',
- '2': 'logistic-success',
- '3': 'logistic-returned'
+ 1: 'logistic-pending',
+ 2: 'logistic-success',
+ 3: 'logistic-returned',
}
return statusMap[status] || 'logistic-unknown'
}
@@ -134,7 +134,7 @@ function getLogisticClass(status) {
*/
function formatTime(timeStr) {
if (!timeStr) return '--'
-
+
try {
// 处理iOS兼容性问题,将 "yyyy-MM-dd HH:mm:ss" 转换为 "yyyy/MM/dd HH:mm:ss"
let normalizedTimeStr = timeStr
@@ -142,20 +142,20 @@ function formatTime(timeStr) {
// 将 "2027-08-22 17:17:01" 转换为 "2027/08/22 17:17:01"
normalizedTimeStr = timeStr.replace(/-/g, '/')
}
-
+
const date = new Date(normalizedTimeStr)
-
+
// 检查日期是否有效
if (isNaN(date.getTime())) {
return timeStr
}
-
+
const year = date.getFullYear()
const month = String(date.getMonth() + 1).padStart(2, '0')
const day = String(date.getDate()).padStart(2, '0')
const hours = String(date.getHours()).padStart(2, '0')
const minutes = String(date.getMinutes()).padStart(2, '0')
-
+
return `${year}-${month}-${day} ${hours}:${minutes}`
} catch (error) {
console.error('时间格式化错误:', error, '原始时间:', timeStr)
@@ -183,7 +183,7 @@ onReachBottom(() => {
// 获取列表
const getList = async () => {
if (loading.value) return
-
+
try {
loading.value = true
let res = await getMyOrder(queryParams)
@@ -198,10 +198,10 @@ const getList = async () => {
list.value = [...list.value, ...newData]
}
- if (newData.length < queryParams.pageSize) {
+ if (queryParams.pageNum * queryParams.pageSize >= res.total) {
noData.value = true
}
-
+
console.log('订单列表:', list.value)
} catch (error) {
console.error('获取订单列表失败:', error)
@@ -215,11 +215,11 @@ const getList = async () => {
}
// 点击订单卡片
-const onClick = (item) => {
+const onClick = item => {
console.log('点击订单:', item)
// 跳转到订单详情页
uni.navigateTo({
- url: `/pages/myOrder/orderDetail?id=${item.id}`
+ url: `/pages/myOrder/orderDetail?id=${item.id}`,
})
}
@@ -244,7 +244,7 @@ onUnload(() => {
justify-content: center;
align-items: center;
height: 200rpx;
-
+
.loading-text {
font-size: 28rpx;
color: #666;
@@ -257,12 +257,12 @@ onUnload(() => {
justify-content: center;
align-items: center;
height: 400rpx;
-
+
.empty-icon {
font-size: 80rpx;
margin-bottom: 20rpx;
}
-
+
.empty-text {
font-size: 28rpx;
color: #999;
@@ -275,7 +275,7 @@ onUnload(() => {
margin-bottom: 20rpx;
padding: 30rpx;
box-shadow: 0 2rpx 12rpx rgba(0, 0, 0, 0.08);
-
+
&:active {
background-color: #f8f8f8;
}
@@ -283,47 +283,47 @@ onUnload(() => {
.order-header {
margin-bottom: 20rpx;
-
+
.order-title {
display: flex;
justify-content: space-between;
align-items: center;
margin-bottom: 10rpx;
-
+
.title-text {
font-size: 32rpx;
font-weight: 600;
color: #333;
}
-
+
.status-text {
font-size: 24rpx;
padding: 6rpx 12rpx;
border-radius: 20rpx;
font-weight: 500;
-
+
&.status-pending {
background-color: #fff7e6;
color: #fa8c16;
}
-
+
&.status-success {
background-color: #f6ffed;
color: #52c41a;
}
-
+
&.status-refund {
background-color: #fff2f0;
color: #ff4d4f;
}
-
+
&.status-unknown {
background-color: #f5f5f5;
color: #999;
}
}
}
-
+
.order-time {
font-size: 24rpx;
color: #999;
@@ -338,49 +338,49 @@ onUnload(() => {
margin-bottom: 20rpx;
padding-bottom: 15rpx;
border-bottom: 1rpx solid #f0f0f0;
-
+
.order-id {
font-size: 26rpx;
color: #666;
}
-
+
.order-amount {
font-size: 32rpx;
color: #f15a04;
font-weight: bold;
}
}
-
+
.order-details {
.detail-item {
display: flex;
justify-content: space-between;
margin-bottom: 12rpx;
-
+
.label {
font-size: 26rpx;
color: #666;
min-width: 140rpx;
}
-
+
.value {
font-size: 26rpx;
color: #333;
flex: 1;
text-align: right;
-
+
&.logistic-pending {
color: #fa8c16;
}
-
+
&.logistic-success {
color: #52c41a;
}
-
+
&.logistic-returned {
color: #1890ff;
}
-
+
&.logistic-unknown {
color: #999;
}
@@ -392,7 +392,7 @@ onUnload(() => {
.load-more {
margin-top: 20rpx;
text-align: center;
-
+
.no-more-text {
font-size: 24rpx;
color: #999;
diff --git a/pages/profile/profile.vue b/pages/profile/profile.vue
index 03cda7b..5bfcbcb 100644
--- a/pages/profile/profile.vue
+++ b/pages/profile/profile.vue
@@ -98,13 +98,13 @@
申请代理
-
+
我的订单
-
+