From 07ccdb21597bfe0bf65e9ce814087c12bd0af959 Mon Sep 17 00:00:00 2001
From: liujie <1793218484@qq.com>
Date: 星期四, 06 八月 2026 16:32:52 +0800
Subject: [PATCH] update
---
mingdaojingjiang_uniapp/mingdaojingjiang_uniapp/pages/order-review-detail/index.vue | 72 ++++++------------------
mingdaojingjiang_uniapp/mingdaojingjiang_uniapp/pages/order-pending-review/index.vue | 46 ++++++++-------
mingdaojingjiang_uniapp/mingdaojingjiang_uniapp/pages/order-completed/index.vue | 42 +++++++------
3 files changed, 66 insertions(+), 94 deletions(-)
diff --git a/mingdaojingjiang_uniapp/mingdaojingjiang_uniapp/pages/order-completed/index.vue b/mingdaojingjiang_uniapp/mingdaojingjiang_uniapp/pages/order-completed/index.vue
index 586525b..227ca16 100644
--- a/mingdaojingjiang_uniapp/mingdaojingjiang_uniapp/pages/order-completed/index.vue
+++ b/mingdaojingjiang_uniapp/mingdaojingjiang_uniapp/pages/order-completed/index.vue
@@ -16,9 +16,9 @@
<image class="guide-avatar__icon" :src="order.guideAvatar || '/static/ui-icons/user-blue.svg'" mode="aspectFill" />
</view>
<view class="guide-main">
- <text class="guide-name">?? ? {{ order.guideName }}</text>
+ <text class="guide-name">导游 · {{ order.guideName }}</text>
<view class="guide-stars">
- <text v-for="item in 5" :key="item" class="guide-star" :class="{ 'guide-star--inactive': item > guideStarCount }">?</text>
+ <text v-for="item in 5" :key="item" class="guide-star" :class="{ 'guide-star--inactive': item > guideStarCount }">★</text>
</view>
</view>
<view class="phone-action" @tap="handleCallGuide">
@@ -41,7 +41,7 @@
<view class="price-row">
<view class="unit-block">
- <text class="unit-price">¥{{ order.unitPrice }}/人</text>
+ <text class="unit-price">¥{{ order.unitPrice }}{{ order.unit }}</text>
<text class="quantity">x{{ order.quantity }}</text>
</view>
<text class="total-price">¥{{ order.total }}</text>
@@ -89,14 +89,14 @@
id: orderDetail.value.id || orderId.value,
scenic: orderDetail.value.scenicName || '-',
service: formatServiceTitle(orderDetail.value.packageName, orderDetail.value.orderType),
- duration: orderDetail.value.durationMinutes ? `${orderDetail.value.durationMinutes}??` : '-',
+ duration: orderDetail.value.durationMinutes ? `${orderDetail.value.durationMinutes}分钟` : '-',
meetingPoint: orderDetail.value.meetingPointName || '-',
unitPrice: formatAmount(orderDetail.value.unitPrice),
- unit: String(orderDetail.value.orderType || '').startsWith('GROUP_') ? '/?' : '/?',
+ unit: String(orderDetail.value.orderType || '').startsWith('GROUP_') ? '/人' : '/团',
quantity: Number(orderDetail.value.peopleCount || 1),
total: formatAmount(orderDetail.value.amount),
familyNo: orderDetail.value.familyNo || '',
- guideName: orderDetail.value.guideName || '???',
+ guideName: orderDetail.value.guideName || '未分配',
guideMobile: orderDetail.value.guideMobile || '',
guideAvatar: resolveProfileAssetUrl(orderDetail.value.guideAvatar),
guideRating: Number(orderDetail.value.guideRating || 0)
@@ -114,12 +114,12 @@
const guideStarCount = computed(() => Math.max(0, Math.min(5, Math.round(order.value.guideRating))))
const detailRows = computed(() => [
- { label: '????', value: formatDateTime(orderDetail.value.placedAt) },
- { label: '????', value: formatDateTime(orderDetail.value.acceptedAt) },
- { label: '????', value: `?${formatAmount(orderDetail.value.paymentAmount ?? orderDetail.value.amount)}` },
- { label: '?????', value: orderDetail.value.paymentOrderNo || '-' },
- { label: '??????', value: formatDateTime(orderDetail.value.serviceStartedAt) },
- { label: '??????', value: formatDateTime(orderDetail.value.completedAt) }
+ { label: '下单时间', value: formatDateTime(orderDetail.value.placedAt) },
+ { label: '接单时间', value: formatDateTime(orderDetail.value.acceptedAt) },
+ { label: '支付金额', value: `¥${formatAmount(orderDetail.value.paymentAmount ?? orderDetail.value.amount)}` },
+ { label: '支付流水号', value: orderDetail.value.paymentOrderNo || '-' },
+ { label: '讲解开始时间', value: formatDateTime(orderDetail.value.serviceStartedAt) },
+ { label: '讲解结束时间', value: formatDateTime(orderDetail.value.completedAt) }
])
onLoad((options = {}) => {
@@ -129,19 +129,19 @@
async function loadOrderDetail() {
if (!orderId.value) {
- uni.showToast({ title: '??????', icon: 'none' })
+ uni.showToast({ title: '订单参数缺失', icon: 'none' })
return
}
try {
orderDetail.value = await getTourOrder(orderId.value)
} catch (error) {
- uni.showToast({ title: error.message || '??????', icon: 'none' })
+ uni.showToast({ title: error.message || '订单加载失败', icon: 'none' })
}
}
function handleCallGuide() {
if (!order.value.guideMobile) {
- uni.showToast({ title: '????????', icon: 'none' })
+ uni.showToast({ title: '暂无导游联系电话', icon: 'none' })
return
}
uni.makePhoneCall({ phoneNumber: order.value.guideMobile })
@@ -170,10 +170,14 @@
}
function formatServiceTitle(packageName, orderType) {
- if (packageName) return String(packageName).replace(/\s*?\s*/g, '?')
- if (String(orderType || '').startsWith('GROUP_')) return '?????'
- if (String(orderType || '').startsWith('PRIVATE_')) return '?????'
- return '????'
+ if (packageName) return String(packageName).replace(/\s*·\s*/g, '·')
+ const serviceTitleMap = {
+ GROUP_QUICK: '拼团·快讲',
+ GROUP_PREMIUM: '拼团·精讲',
+ PRIVATE_QUICK: '包团·快讲',
+ PRIVATE_PREMIUM: '包团·精讲'
+ }
+ return serviceTitleMap[orderType] || '讲解服务'
}
</script>
diff --git a/mingdaojingjiang_uniapp/mingdaojingjiang_uniapp/pages/order-pending-review/index.vue b/mingdaojingjiang_uniapp/mingdaojingjiang_uniapp/pages/order-pending-review/index.vue
index 17f4dd2..0132eaf 100644
--- a/mingdaojingjiang_uniapp/mingdaojingjiang_uniapp/pages/order-pending-review/index.vue
+++ b/mingdaojingjiang_uniapp/mingdaojingjiang_uniapp/pages/order-pending-review/index.vue
@@ -9,9 +9,9 @@
<image class="guide-avatar__icon" :src="order.guideAvatar || '/static/ui-icons/user-blue.svg'" mode="aspectFill" />
</view>
<view class="guide-main">
- <text class="guide-name">?? ? {{ order.guideName }}</text>
+ <text class="guide-name">导游 · {{ order.guideName }}</text>
<view class="guide-stars">
- <text v-for="item in 5" :key="item" class="guide-star" :class="{ 'guide-star--inactive': item > guideStarCount }">?</text>
+ <text v-for="item in 5" :key="item" class="guide-star" :class="{ 'guide-star--inactive': item > guideStarCount }">★</text>
</view>
</view>
<view class="phone-action" @tap="handleCallGuide">
@@ -142,13 +142,13 @@
id: orderDetail.value.id || orderId.value,
scenic: orderDetail.value.scenicName || '-',
service: formatServiceTitle(orderDetail.value.packageName, orderDetail.value.orderType),
- duration: orderDetail.value.durationMinutes ? `${orderDetail.value.durationMinutes}??` : '-',
+ duration: orderDetail.value.durationMinutes ? `${orderDetail.value.durationMinutes}分钟` : '-',
meetingPoint: orderDetail.value.meetingPointName || '-',
unitPrice: formatAmount(orderDetail.value.unitPrice),
- unit: String(orderDetail.value.orderType || '').startsWith('GROUP_') ? '/?' : '/?',
+ unit: String(orderDetail.value.orderType || '').startsWith('GROUP_') ? '/人' : '/团',
quantity: Number(orderDetail.value.peopleCount || 1),
total: formatAmount(orderDetail.value.amount),
- guideName: orderDetail.value.guideName || '???',
+ guideName: orderDetail.value.guideName || '未分配',
guideMobile: orderDetail.value.guideMobile || '',
guideAvatar: resolveProfileAssetUrl(orderDetail.value.guideAvatar),
guideRating: Number(orderDetail.value.guideRating || 0)
@@ -157,12 +157,12 @@
const guideStarCount = computed(() => Math.max(0, Math.min(5, Math.round(order.value.guideRating))))
const detailRows = computed(() => [
- { label: '????', value: formatDateTime(orderDetail.value.placedAt) },
- { label: '????', value: formatDateTime(orderDetail.value.acceptedAt) },
- { label: '????', value: `?${formatAmount(orderDetail.value.paymentAmount ?? orderDetail.value.amount)}` },
- { label: '?????', value: orderDetail.value.paymentOrderNo || '-' },
- { label: '??????', value: formatDateTime(orderDetail.value.serviceStartedAt) },
- { label: '??????', value: formatDateTime(orderDetail.value.completedAt) }
+ { label: '下单时间', value: formatDateTime(orderDetail.value.placedAt) },
+ { label: '接单时间', value: formatDateTime(orderDetail.value.acceptedAt) },
+ { label: '支付金额', value: `¥${formatAmount(orderDetail.value.paymentAmount ?? orderDetail.value.amount)}` },
+ { label: '支付流水号', value: orderDetail.value.paymentOrderNo || '-' },
+ { label: '讲解开始时间', value: formatDateTime(orderDetail.value.serviceStartedAt) },
+ { label: '讲解结束时间', value: formatDateTime(orderDetail.value.completedAt) }
])
onLoad((options = {}) => {
@@ -172,19 +172,19 @@
async function loadOrderDetail() {
if (!orderId.value) {
- uni.showToast({ title: '??????', icon: 'none' })
+ uni.showToast({ title: '订单参数缺失', icon: 'none' })
return
}
try {
orderDetail.value = await getTourOrder(orderId.value)
} catch (error) {
- uni.showToast({ title: error.message || '??????', icon: 'none' })
+ uni.showToast({ title: error.message || '订单加载失败', icon: 'none' })
}
}
function handleCallGuide() {
if (!order.value.guideMobile) {
- uni.showToast({ title: '????????', icon: 'none' })
+ uni.showToast({ title: '暂无导游联系电话', icon: 'none' })
return
}
uni.makePhoneCall({ phoneNumber: order.value.guideMobile })
@@ -211,7 +211,7 @@
async function submitReview() {
if (!rating.value) {
- uni.showToast({ title: '??????', icon: 'none' })
+ uni.showToast({ title: '请先选择评分', icon: 'none' })
return
}
if (!order.value.id || submitting.value || submitSuccess.value) return
@@ -225,13 +225,13 @@
})
submitting.value = false
submitSuccess.value = true
- uni.showToast({ title: '?????', icon: 'success' })
+ uni.showToast({ title: '评价成功', icon: 'success' })
setTimeout(() => {
uni.redirectTo({ url: `/pages/order-review-detail/index?id=${order.value.id}` })
}, 700)
} catch (error) {
submitting.value = false
- uni.showToast({ title: error.message || '??????', icon: 'none' })
+ uni.showToast({ title: error.message || '评价提交失败', icon: 'none' })
}
}
@@ -245,10 +245,14 @@
}
function formatServiceTitle(packageName, orderType) {
- if (packageName) return String(packageName).replace(/\s*?\s*/g, '?')
- if (String(orderType || '').startsWith('GROUP_')) return '?????'
- if (String(orderType || '').startsWith('PRIVATE_')) return '?????'
- return '????'
+ if (packageName) return String(packageName).replace(/\s*·\s*/g, '·')
+ const serviceTitleMap = {
+ GROUP_QUICK: '拼团·快讲',
+ GROUP_PREMIUM: '拼团·精讲',
+ PRIVATE_QUICK: '包团·快讲',
+ PRIVATE_PREMIUM: '包团·精讲'
+ }
+ return serviceTitleMap[orderType] || '讲解服务'
}
</script>
diff --git a/mingdaojingjiang_uniapp/mingdaojingjiang_uniapp/pages/order-review-detail/index.vue b/mingdaojingjiang_uniapp/mingdaojingjiang_uniapp/pages/order-review-detail/index.vue
index 48a8c58..534c844 100644
--- a/mingdaojingjiang_uniapp/mingdaojingjiang_uniapp/pages/order-review-detail/index.vue
+++ b/mingdaojingjiang_uniapp/mingdaojingjiang_uniapp/pages/order-review-detail/index.vue
@@ -9,9 +9,9 @@
<image class="guide-avatar__icon" :src="order.guideAvatar || '/static/ui-icons/user-blue.svg'" mode="aspectFill" />
</view>
<view class="guide-main">
- <text class="guide-name">?? ? {{ order.guideName }}</text>
+ <text class="guide-name">导游 · {{ order.guideName }}</text>
<view class="guide-stars">
- <text v-for="item in 5" :key="item" class="guide-star" :class="{ 'guide-star--inactive': item > guideStarCount }">?</text>
+ <text v-for="item in 5" :key="item" class="guide-star" :class="{ 'guide-star--inactive': item > guideStarCount }">★</text>
</view>
</view>
<view class="phone-action" @tap="handleCallGuide">
@@ -34,7 +34,7 @@
<view class="price-row">
<view class="unit-block">
- <text class="unit-price">¥{{ order.unitPrice }}/人</text>
+ <text class="unit-price">¥{{ order.unitPrice }}{{ order.unit }}</text>
<text class="quantity">x{{ order.quantity }}</text>
</view>
<text class="total-price">¥{{ order.total }}</text>
@@ -60,16 +60,6 @@
<text class="review-content__text">{{ review.content }}</text>
</view>
- <view class="review-images">
- <view
- v-for="(image, index) in review.images"
- :key="image"
- class="review-image"
- @tap="previewImage(index)"
- >
- <image class="review-image__icon" src="/static/image.png" mode="aspectFit" />
- </view>
- </view>
</view>
</view>
</scroll-view>
@@ -95,13 +85,13 @@
id: orderDetail.value.id || orderId.value,
scenic: orderDetail.value.scenicName || '-',
service: formatServiceTitle(orderDetail.value.packageName, orderDetail.value.orderType),
- duration: orderDetail.value.durationMinutes ? `${orderDetail.value.durationMinutes}??` : '-',
+ duration: orderDetail.value.durationMinutes ? `${orderDetail.value.durationMinutes}分钟` : '-',
meetingPoint: orderDetail.value.meetingPointName || '-',
unitPrice: formatAmount(orderDetail.value.unitPrice),
- unit: String(orderDetail.value.orderType || '').startsWith('GROUP_') ? '/?' : '/?',
+ unit: String(orderDetail.value.orderType || '').startsWith('GROUP_') ? '/人' : '/团',
quantity: Number(orderDetail.value.peopleCount || 1),
total: formatAmount(orderDetail.value.amount),
- guideName: orderDetail.value.guideName || reviewDetail.value.guideName || '???',
+ guideName: orderDetail.value.guideName || reviewDetail.value.guideName || '未分配',
guideMobile: orderDetail.value.guideMobile || reviewDetail.value.guideMobile || '',
guideAvatar: resolveProfileAssetUrl(orderDetail.value.guideAvatar),
guideRating: Number(orderDetail.value.guideRating || 0)
@@ -111,8 +101,7 @@
const review = computed(() => ({
rating: Number(reviewDetail.value.score || 0),
- content: reviewDetail.value.content || '??????',
- images: []
+ content: reviewDetail.value.content || '暂无评价内容'
}))
onLoad((options = {}) => {
@@ -122,7 +111,7 @@
async function loadPageData() {
if (!orderId.value) {
- uni.showToast({ title: '??????', icon: 'none' })
+ uni.showToast({ title: '订单参数缺失', icon: 'none' })
return
}
try {
@@ -133,23 +122,16 @@
orderDetail.value = orderResult || {}
reviewDetail.value = reviewResult || {}
} catch (error) {
- uni.showToast({ title: error.message || '??????', icon: 'none' })
+ uni.showToast({ title: error.message || '评价加载失败', icon: 'none' })
}
}
function handleCallGuide() {
if (!order.value.guideMobile) {
- uni.showToast({ title: '????????', icon: 'none' })
+ uni.showToast({ title: '暂无导游联系电话', icon: 'none' })
return
}
uni.makePhoneCall({ phoneNumber: order.value.guideMobile })
-}
-
-function previewImage(index) {
- uni.previewImage({
- current: review.value.images[index],
- urls: review.value.images
- })
}
function formatAmount(value) {
@@ -158,10 +140,14 @@
}
function formatServiceTitle(packageName, orderType) {
- if (packageName) return String(packageName).replace(/\s*?\s*/g, '?')
- if (String(orderType || '').startsWith('GROUP_')) return '?????'
- if (String(orderType || '').startsWith('PRIVATE_')) return '?????'
- return '????'
+ if (packageName) return String(packageName).replace(/\s*·\s*/g, '·')
+ const serviceTitleMap = {
+ GROUP_QUICK: '拼团·快讲',
+ GROUP_PREMIUM: '拼团·精讲',
+ PRIVATE_QUICK: '包团·快讲',
+ PRIVATE_PREMIUM: '包团·精讲'
+ }
+ return serviceTitleMap[orderType] || '讲解服务'
}
</script>
@@ -406,26 +392,4 @@
line-height: 1.45;
}
-.review-images {
- width: 100%;
- display: grid;
- grid-template-columns: repeat(4, 1fr);
- gap: 18rpx;
- margin-top: 30rpx;
-}
-
-.review-image {
- display: flex;
- align-items: center;
- justify-content: center;
- aspect-ratio: 1;
- border-radius: 4rpx;
- background: #e5e7eb;
-}
-
-.review-image__icon {
- width: 34rpx;
- height: 34rpx;
- opacity: 0.56;
-}
</style>
--
Gitblit v1.7.1