<template>
|
|
<view class="order-detail-page">
|
|
|
|
<!-- 订单内容区域 -->
|
|
<view class="order-detail-content">
|
|
<!-- 服务地址组件 -->
|
|
<service-address :address="orderDetail.address"></service-address>
|
|
|
|
<!-- 服务宠物组件 -->
|
|
<service-pets :pets="orderDetail.pets"></service-pets>
|
|
|
|
<!-- 服务项目及费用组件 -->
|
|
<service-items :items="orderDetail.items" :totalAmount="orderDetail.totalAmount"
|
|
:discount="orderDetail.discount" :finalAmount="orderDetail.finalAmount"></service-items>
|
|
|
|
<!-- 服务备注组件 -->
|
|
<service-remarks :remarks="orderDetail.remarks"></service-remarks>
|
|
|
|
<!-- 其他信息组件 -->
|
|
<order-info :orderInfo="orderDetail.orderInfo"></order-info>
|
|
</view>
|
|
|
|
<!-- 底部按钮区域 -->
|
|
<view class="order-detail-footer">
|
|
<view class="footer-btn cancel-btn" v-if="orderDetail.status === '1'" @click="$refs.cancelOrderPopup.open()">
|
|
<text>取消订单</text>
|
|
</view>
|
|
<view class="footer-btn pay-btn" v-if="orderDetail.status === '1'" @click="goToPay">
|
|
<text>去付款</text>
|
|
</view>
|
|
<view class="footer-btn review-btn" @click="goToReview">
|
|
<text>评价订单</text>
|
|
</view>
|
|
<view class="footer-btn contact-btn">
|
|
<text>联系客服</text>
|
|
</view>
|
|
</view>
|
|
|
|
<!-- 取消订单弹窗 -->
|
|
<cancel-order-popup
|
|
ref="cancelOrderPopup"
|
|
@cancel="handleCancelOrder"
|
|
></cancel-order-popup>
|
|
|
|
<!-- 客服组件 -->
|
|
<Kefu></Kefu>
|
|
</view>
|
|
</template>
|
|
|
|
<script>
|
|
import Kefu from '@/pages/common/kefu.vue'
|
|
import ServiceAddress from '@/pages_order/components/order/ServiceAddress.vue'
|
|
import ServicePets from '@/pages_order/components/order/ServicePets.vue'
|
|
import ServiceItems from '@/pages_order/components/order/ServiceItems.vue'
|
|
import ServiceRemarks from '@/pages_order/components/order/ServiceRemarks.vue'
|
|
import OrderInfo from '@/pages_order/components/order/OrderInfo.vue'
|
|
import CancelOrderPopup from '@/pages_order/components/order/CancelOrderPopup.vue'
|
|
import { getOrderList } from "@/api/system/user.js"
|
|
import { getOpenIdKey } from '@/utils/auth'
|
|
|
|
export default {
|
|
components: {
|
|
Kefu,
|
|
ServiceAddress,
|
|
ServicePets,
|
|
ServiceItems,
|
|
ServiceRemarks,
|
|
OrderInfo,
|
|
CancelOrderPopup
|
|
},
|
|
data() {
|
|
return {
|
|
orderId: null,
|
|
orderDetail: {
|
|
status: '1', // 1-待付款, 2-已接单, 3-服务中, 4-已完成
|
|
address: {
|
|
address: '上海青浦区盈港路888号1-2号-东部公寓',
|
|
contact: '联系电话: 18629356678'
|
|
},
|
|
pets: [
|
|
{
|
|
name: '小咪',
|
|
avatar: '/static/images/personal/pet.png',
|
|
tag: '猫',
|
|
gender: '女生',
|
|
serviceDays: 2,
|
|
serviceDates: ['03-20', '03-22']
|
|
},
|
|
{
|
|
name: '小汪',
|
|
avatar: '/static/images/personal/pet.png',
|
|
tag: '狗',
|
|
gender: '男生',
|
|
serviceDays: 3,
|
|
serviceDates: ['03-20', '03-22', '03-25']
|
|
}
|
|
],
|
|
items: [
|
|
{
|
|
id: '07-07',
|
|
name: '专业喂养',
|
|
price: 75.00,
|
|
pet: '小咪',
|
|
quantity: 1
|
|
},
|
|
{
|
|
id: '07-08',
|
|
name: '专业喂养 + 定制服务1项',
|
|
price: 75.00,
|
|
pet: '小汪',
|
|
quantity: 1,
|
|
customServices: [
|
|
{
|
|
name: '专业喂养',
|
|
price: 75.00,
|
|
quantity: 1
|
|
},
|
|
{
|
|
name: '上门遛狗',
|
|
price: 40.00,
|
|
quantity: 1
|
|
}
|
|
]
|
|
},
|
|
{
|
|
id: '07-10',
|
|
name: '专业喂养 + 定制服务2项',
|
|
price: 95.00,
|
|
pet: '小汪',
|
|
quantity: 1,
|
|
customServices: [
|
|
{
|
|
name: '专业喂养',
|
|
price: 75.00,
|
|
quantity: 1
|
|
},
|
|
{
|
|
name: '上门遛狗',
|
|
price: 40.00,
|
|
quantity: 1
|
|
},
|
|
{
|
|
name: '梳毛',
|
|
price: 40.00,
|
|
quantity: 1
|
|
}
|
|
]
|
|
}
|
|
],
|
|
totalAmount: 290.00,
|
|
discount: 10.00,
|
|
memberDiscount: 20.00,
|
|
finalAmount: 260.00,
|
|
remarks: {
|
|
paymentMethod: '存于平台账户',
|
|
isUrgent: true,
|
|
notes: '* 到达05/2楼\n* 猫咪很胆小,请轻声说话,保持安静。猫粮放在门口柜子上,猫砂盆在卫生间。\n* 狗狗很活泼,喜欢玩球,球放在客厅的篮子里。'
|
|
},
|
|
orderInfo: {
|
|
orderNumber: 'fc241200396263',
|
|
orderTime: '2024-12-03 13:05:57',
|
|
paymentTime: '2024-12-03 13:06:06'
|
|
}
|
|
}
|
|
};
|
|
},
|
|
onLoad(options) {
|
|
if (options.id) {
|
|
this.orderId = options.id;
|
|
this.getOrderDetail();
|
|
}
|
|
},
|
|
methods: {
|
|
// 获取订单详情
|
|
getOrderDetail() {
|
|
// 实际项目中应调用API获取订单详情
|
|
// 示例代码:
|
|
/*
|
|
const params = {
|
|
openId: getOpenIdKey(),
|
|
orderId: this.orderId
|
|
};
|
|
|
|
getOrderDetail(params).then(res => {
|
|
if (res && res.code === 200) {
|
|
this.orderDetail = res.data;
|
|
}
|
|
}).catch(err => {
|
|
console.error('获取订单详情失败', err);
|
|
});
|
|
*/
|
|
|
|
// 这里使用模拟数据
|
|
console.log('获取订单详情,ID:', this.orderId);
|
|
},
|
|
|
|
// 去付款
|
|
goToPay() {
|
|
uni.navigateTo({
|
|
url: `/pages/details/order?id=${this.orderId}`
|
|
});
|
|
},
|
|
|
|
// 去评价
|
|
goToReview() {
|
|
uni.navigateTo({
|
|
url: `/pages_order/order/orderReview?id=${this.orderId}`
|
|
});
|
|
},
|
|
|
|
// 处理取消订单
|
|
handleCancelOrder() {
|
|
}
|
|
}
|
|
}
|
|
</script>
|
|
|
|
<style lang="scss" scoped>
|
|
.order-detail-page {
|
|
background-color: #f5f5f5;
|
|
min-height: 100vh;
|
|
display: flex;
|
|
flex-direction: column;
|
|
}
|
|
|
|
.order-detail-content {
|
|
flex: 1;
|
|
padding: 20rpx;
|
|
}
|
|
|
|
.order-detail-footer {
|
|
display: flex;
|
|
justify-content: flex-end;
|
|
align-items: center;
|
|
padding: 20rpx 30rpx;
|
|
background-color: #FFFFFF;
|
|
border-top: 1px solid #EEEEEE;
|
|
|
|
.footer-btn {
|
|
padding: 16rpx 30rpx;
|
|
border-radius: 30rpx;
|
|
font-size: 26rpx;
|
|
margin-left: 20rpx;
|
|
}
|
|
|
|
.cancel-btn {
|
|
background-color: #FFFFFF;
|
|
color: #666;
|
|
border: 1px solid #DDDDDD;
|
|
}
|
|
|
|
.pay-btn {
|
|
background-color: #FFAA48;
|
|
color: #FFFFFF;
|
|
}
|
|
|
|
.review-btn {
|
|
background-color: #FFAA48;
|
|
color: #FFFFFF;
|
|
}
|
|
|
|
.contact-btn {
|
|
background-color: #FFFFFF;
|
|
color: #666;
|
|
border: 1px solid #DDDDDD;
|
|
}
|
|
}
|
|
</style>
|