<template>
|
|
<view class="order-modify-page">
|
|
<!-- 页面头部 -->
|
|
<view class="page-header">
|
|
<text class="header-title">修改订单</text>
|
|
</view>
|
|
|
|
<!-- 订单内容区域 -->
|
|
<view class="order-modify-content">
|
|
<!-- 订单修改说明 -->
|
|
<view class="modify-notice">
|
|
<view class="notice-item">
|
|
<text class="notice-icon">🐾</text>
|
|
<text class="notice-text">您可以对<text class="highlight-text">未服务或未支付</text>的订单进行修改或取消</text>
|
|
</view>
|
|
<view class="notice-item">
|
|
<text class="notice-icon">🐾</text>
|
|
<text class="notice-text">若需修改已支付的服务项目,如「增加服务时间/服务项目」,可点击下方按钮【<text class="highlight-text">联系客服</text>】寻求帮助,感谢!</text>
|
|
</view>
|
|
</view>
|
|
|
|
<!-- 服务修改信息 -->
|
|
<view class="modify-info-card">
|
|
<view class="card-title">
|
|
<text>服务修改信息</text>
|
|
</view>
|
|
|
|
<view class="info-content">
|
|
<view class="info-item">
|
|
<text class="info-label">联系人</text>
|
|
<text class="info-value">{{modifyInfo.contactName}}</text>
|
|
</view>
|
|
|
|
<view class="info-item">
|
|
<text class="info-label">联系方式</text>
|
|
<text class="info-value">{{modifyInfo.contactPhone}}</text>
|
|
</view>
|
|
|
|
<view class="info-item payment-method">
|
|
<text class="info-label">销售支持方式</text>
|
|
<view class="info-value payment-value">
|
|
<text>{{modifyInfo.paymentMethod}}</text>
|
|
<text class="arrow-right">></text>
|
|
</view>
|
|
</view>
|
|
</view>
|
|
</view>
|
|
|
|
<!-- 修改原因 -->
|
|
<view class="modify-reason-card">
|
|
<view class="card-title">
|
|
<text>修改原因</text>
|
|
</view>
|
|
|
|
<view class="reason-content">
|
|
<textarea
|
|
class="reason-input"
|
|
v-model="modifyReason"
|
|
placeholder="请输入修改原因(选填)"
|
|
maxlength="200"
|
|
></textarea>
|
|
<view class="word-count">
|
|
<text>{{modifyReason.length}}/200</text>
|
|
</view>
|
|
</view>
|
|
</view>
|
|
</view>
|
|
|
|
<!-- 底部按钮区域 -->
|
|
<view class="order-modify-footer">
|
|
<view class="footer-btn cancel-service-btn" @click="$refs.cancelPopup.open()">
|
|
<text>取消服务</text>
|
|
</view>
|
|
<view class="footer-btn confirm-modify-btn" @click="confirmModify">
|
|
<text>确认修改</text>
|
|
</view>
|
|
</view>
|
|
|
|
<!-- 取消订单弹窗 -->
|
|
<cancel-order-popup
|
|
ref="cancelPopup"
|
|
@cancel="handleCancelOrder"
|
|
></cancel-order-popup>
|
|
|
|
<!-- 客服组件 -->
|
|
<Kefu></Kefu>
|
|
</view>
|
|
</template>
|
|
|
|
<script>
|
|
import CancelOrderPopup from '../../components/order/CancelOrderPopup.vue';
|
|
|
|
export default {
|
|
components: {
|
|
CancelOrderPopup
|
|
},
|
|
data() {
|
|
return {
|
|
orderId: '', // 订单ID
|
|
modifyInfo: {
|
|
contactName: '张小二',
|
|
contactPhone: '18888888888',
|
|
paymentMethod: '存子快递宝'
|
|
},
|
|
modifyReason: '', // 修改原因
|
|
showCancelOrderPopup: false // 是否显示取消订单弹窗
|
|
};
|
|
},
|
|
onLoad(options) {
|
|
// 获取路由参数中的订单ID
|
|
if (options.id) {
|
|
this.orderId = options.id;
|
|
// 加载订单数据
|
|
this.loadOrderData();
|
|
}
|
|
},
|
|
methods: {
|
|
// 加载订单数据
|
|
loadOrderData() {
|
|
// 这里应该调用API获取订单详情
|
|
// 示例代码:
|
|
/*
|
|
const params = {
|
|
openId: getOpenIdKey(),
|
|
orderId: this.orderId
|
|
};
|
|
|
|
getOrderDetail(params).then(res => {
|
|
if (res && res.code === 200) {
|
|
// 设置订单信息
|
|
this.modifyInfo = {
|
|
contactName: res.data.contactName,
|
|
contactPhone: res.data.contactPhone,
|
|
paymentMethod: res.data.paymentMethod
|
|
};
|
|
}
|
|
}).catch(err => {
|
|
console.error('获取订单详情失败', err);
|
|
uni.showToast({
|
|
title: '获取订单信息失败',
|
|
icon: 'none'
|
|
});
|
|
});
|
|
*/
|
|
|
|
// 这里使用模拟数据
|
|
console.log('加载订单数据,ID:', this.orderId);
|
|
},
|
|
|
|
// 确认修改订单
|
|
confirmModify() {
|
|
// 这里应该调用API修改订单
|
|
// 示例代码:
|
|
/*
|
|
const params = {
|
|
openId: getOpenIdKey(),
|
|
orderId: this.orderId,
|
|
reason: this.modifyReason
|
|
};
|
|
|
|
modifyOrder(params).then(res => {
|
|
if (res && res.code === 200) {
|
|
uni.showToast({
|
|
title: '订单修改成功',
|
|
icon: 'success'
|
|
});
|
|
// 修改成功后返回订单详情页
|
|
setTimeout(() => {
|
|
uni.navigateBack();
|
|
}, 1500);
|
|
}
|
|
}).catch(err => {
|
|
console.error('修改订单失败', err);
|
|
uni.showToast({
|
|
title: '修改订单失败',
|
|
icon: 'none'
|
|
});
|
|
});
|
|
*/
|
|
|
|
// 这里使用模拟数据,显示修改成功提示
|
|
uni.showToast({
|
|
title: '订单修改成功',
|
|
icon: 'success'
|
|
});
|
|
|
|
// 1.5秒后返回订单详情页
|
|
setTimeout(() => {
|
|
uni.navigateBack();
|
|
}, 1500);
|
|
},
|
|
|
|
// 处理取消订单
|
|
handleCancelOrder(orderId) {
|
|
this.hideCancelPopup();
|
|
|
|
// 这里应该调用API取消订单
|
|
// 示例代码:
|
|
/*
|
|
const params = {
|
|
openId: getOpenIdKey(),
|
|
orderId: this.orderId,
|
|
reason: this.modifyReason
|
|
};
|
|
|
|
cancelOrder(params).then(res => {
|
|
if (res && res.code === 200) {
|
|
uni.showToast({
|
|
title: '订单已取消',
|
|
icon: 'success'
|
|
});
|
|
// 取消成功后返回订单列表页
|
|
setTimeout(() => {
|
|
uni.navigateBack({delta: 2});
|
|
}, 1500);
|
|
}
|
|
}).catch(err => {
|
|
console.error('取消订单失败', err);
|
|
});
|
|
*/
|
|
|
|
// 这里使用模拟数据,显示取消成功提示
|
|
uni.showToast({
|
|
title: '订单已取消',
|
|
icon: 'success'
|
|
});
|
|
|
|
// 1.5秒后返回订单列表页
|
|
setTimeout(() => {
|
|
uni.navigateBack({delta: 2});
|
|
}, 1500);
|
|
}
|
|
}
|
|
};
|
|
</script>
|
|
|
|
<style lang="scss" scoped>
|
|
.order-modify-page {
|
|
background-color: #f5f5f5;
|
|
min-height: 100vh;
|
|
display: flex;
|
|
flex-direction: column;
|
|
}
|
|
|
|
.page-header {
|
|
background-color: #FFAA48;
|
|
padding: 20rpx 30rpx;
|
|
color: #FFFFFF;
|
|
|
|
.header-title {
|
|
font-size: 36rpx;
|
|
font-weight: bold;
|
|
}
|
|
}
|
|
|
|
.order-modify-content {
|
|
flex: 1;
|
|
padding: 20rpx;
|
|
}
|
|
|
|
.modify-notice {
|
|
background-color: #FFF9F0;
|
|
border-radius: 20rpx;
|
|
padding: 20rpx;
|
|
margin-bottom: 20rpx;
|
|
|
|
.notice-item {
|
|
display: flex;
|
|
align-items: flex-start;
|
|
margin-bottom: 10rpx;
|
|
|
|
&:last-child {
|
|
margin-bottom: 0;
|
|
}
|
|
|
|
.notice-icon {
|
|
margin-right: 10rpx;
|
|
font-size: 28rpx;
|
|
}
|
|
|
|
.notice-text {
|
|
font-size: 26rpx;
|
|
color: #666;
|
|
line-height: 1.5;
|
|
flex: 1;
|
|
|
|
.highlight-text {
|
|
color: #FFAA48;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
.modify-info-card, .modify-reason-card {
|
|
background-color: #FFFFFF;
|
|
border-radius: 20rpx;
|
|
padding: 30rpx;
|
|
margin-bottom: 20rpx;
|
|
box-shadow: 0 2rpx 10rpx rgba(0, 0, 0, 0.05);
|
|
}
|
|
|
|
.card-title {
|
|
font-size: 32rpx;
|
|
font-weight: bold;
|
|
color: #333;
|
|
margin-bottom: 20rpx;
|
|
display: flex;
|
|
align-items: center;
|
|
|
|
&::before {
|
|
content: '';
|
|
display: inline-block;
|
|
width: 8rpx;
|
|
height: 32rpx;
|
|
background-color: #FFAA48;
|
|
margin-right: 16rpx;
|
|
border-radius: 4rpx;
|
|
}
|
|
}
|
|
|
|
.info-content {
|
|
.info-item {
|
|
display: flex;
|
|
justify-content: space-between;
|
|
align-items: center;
|
|
padding: 20rpx 0;
|
|
border-bottom: 1px solid #EEEEEE;
|
|
|
|
&:last-child {
|
|
border-bottom: none;
|
|
}
|
|
|
|
.info-label {
|
|
font-size: 28rpx;
|
|
color: #666;
|
|
}
|
|
|
|
.info-value {
|
|
font-size: 28rpx;
|
|
color: #333;
|
|
}
|
|
|
|
&.payment-method {
|
|
.payment-value {
|
|
display: flex;
|
|
align-items: center;
|
|
|
|
.arrow-right {
|
|
margin-left: 10rpx;
|
|
color: #999;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
.reason-content {
|
|
.reason-input {
|
|
width: 100%;
|
|
height: 200rpx;
|
|
background-color: #F8F8F8;
|
|
border-radius: 10rpx;
|
|
padding: 20rpx;
|
|
font-size: 28rpx;
|
|
color: #333;
|
|
box-sizing: border-box;
|
|
}
|
|
|
|
.word-count {
|
|
text-align: right;
|
|
margin-top: 10rpx;
|
|
|
|
text {
|
|
font-size: 24rpx;
|
|
color: #999;
|
|
}
|
|
}
|
|
}
|
|
|
|
.order-modify-footer {
|
|
display: flex;
|
|
justify-content: space-between;
|
|
align-items: center;
|
|
padding: 20rpx 30rpx;
|
|
background-color: #FFFFFF;
|
|
border-top: 1px solid #EEEEEE;
|
|
|
|
.footer-btn {
|
|
padding: 16rpx 30rpx;
|
|
border-radius: 30rpx;
|
|
font-size: 28rpx;
|
|
text-align: center;
|
|
width: 45%;
|
|
}
|
|
|
|
.cancel-service-btn {
|
|
background-color: #F5F5F5;
|
|
color: #666;
|
|
border: 1px solid #DDDDDD;
|
|
}
|
|
|
|
.confirm-modify-btn {
|
|
background-color: #FFAA48;
|
|
color: #FFFFFF;
|
|
}
|
|
}
|
|
</style>
|