Browse Source

fix(订单): 修复订单操作按钮显示逻辑并添加24小时限制

修改订单详情页和订单列表页的取消订单和修改订单按钮显示逻辑,增加对服务日期在24小时内的判断
支付成功后跳转至支付成功页面,失败时返回订单列表
master
前端-胡立永 3 weeks ago
parent
commit
2583e1923f
3 changed files with 68 additions and 18 deletions
  1. +3
    -2
      pages/newOrder/confirmOrder.vue
  2. +26
    -2
      pages_order/order/orderDetail.vue
  3. +39
    -14
      pages_order/order/orderList.vue

+ 3
- 2
pages/newOrder/confirmOrder.vue View File

@ -913,7 +913,8 @@
needPreFamiliarize: []
}
uni.reLaunch({
url: '/pages_order/order/orderList'
// url: '/pages_order/order/orderList'
url: '/pages_order/order/payOrderSuccessful'
});
},
fail: (err) => {
@ -921,7 +922,7 @@
console.log('支付失败', err)
this.$modal.showToast('支付失败')
uni.reLaunch({
url: '/pages_order/order/'
url: '/pages_order/order/orderList'
});
},
complete: () => {


+ 26
- 2
pages_order/order/orderDetail.vue View File

@ -25,13 +25,13 @@
<!-- 底部按钮区域 -->
<view class="order-detail-footer">
<view class="footer-btn cancel-btn" v-if="[0, 1].includes(orderDetail.status)" @click="$refs.cancelOrderPopup.open()">
<view class="footer-btn cancel-btn" v-if="[0, 1, 2].includes(orderDetail.status) && !isServiceDateWithin24Hours()" @click="$refs.cancelOrderPopup.open()">
<text>取消订单</text>
</view>
<view class="footer-btn pay-btn" v-if="orderDetail.status == '0'" @click="goToPay">
<text>去付款</text>
</view>
<view class="footer-btn modify-btn" v-if="[0, 1].includes(orderDetail.status)" @click="modifyOrder">
<view class="footer-btn modify-btn" v-if="[0, 1, 2].includes(orderDetail.status) && !isServiceDateWithin24Hours()" @click="modifyOrder">
<text>修改订单</text>
</view>
<view class="footer-btn pay-btn" v-if="[3].includes(orderDetail.status) && !order.evaluation" @click="goToReview">
@ -341,6 +341,30 @@
uni.navigateTo({
url: `/pages_order/order/orderModify?orderId=${this.orderId}`
});
},
// 24
isServiceDateWithin24Hours() {
if (!this.detail.orderServiceList || this.detail.orderServiceList.length === 0) {
return false;
}
//
const earliestServiceDate = this.detail.orderServiceList
.map(service => service.serviceDate)
.sort((a, b) => dayjs(a).valueOf() - dayjs(b).valueOf())[0];
if (!earliestServiceDate) {
return false;
}
//
const now = dayjs();
const serviceDate = dayjs(earliestServiceDate);
const hoursDiff = serviceDate.diff(now, 'hour');
// 24true
return hoursDiff < 24 && hoursDiff >= 0;
}
}
}


+ 39
- 14
pages_order/order/orderList.vue View File

@ -59,20 +59,20 @@
</view>
<!-- 订单操作 -->
<view class="order-actions">
<view class="action-btn details-btn" v-if="[0, 1].includes(order.status)"
@click="$refs.cancelOrderPopup.open(order)">
<text>取消订单</text>
</view>
<view class="action-btn details-btn" @click="viewOrderDetails(order.orderId)">
<text>查看详情</text>
</view>
<view class="action-btn pay-btn" v-if="order.status == 0" @click="goToPay(order)">
<text>去付款</text>
</view>
<view class="action-btn pay-btn" v-if="[0, 1].includes(order.status)" @click="modifyOrder(order)">
<text>修改订单</text>
</view>
<view class="order-actions">
<view class="action-btn details-btn" v-if="[0, 1, 2].includes(order.status) && !isServiceDateWithin24Hours(order)"
@click="$refs.cancelOrderPopup.open(order)">
<text>取消订单</text>
</view>
<view class="action-btn details-btn" @click="viewOrderDetails(order.orderId)">
<text>查看详情</text>
</view>
<view class="action-btn pay-btn" v-if="order.status == 0" @click="goToPay(order)">
<text>去付款</text>
</view>
<view class="action-btn pay-btn" v-if="[0, 1, 2].includes(order.status) && !isServiceDateWithin24Hours(order)" @click="modifyOrder(order)">
<text>修改订单</text>
</view>
<view class="action-btn pay-btn"
v-if="[11, 4].includes(order.status) && !order.evaluation"
@click="goToReview(order)">
@ -157,6 +157,7 @@
getOrderServiceText,
getProductNameText
} from '@/utils/serviceTime.js'
import dayjs from '@/utils/lib/dayjs.min.js'
export default {
components: {
Kefu,
@ -448,6 +449,30 @@
});
},
// 24
isServiceDateWithin24Hours(order) {
if (!order.orderServiceList || order.orderServiceList.length === 0) {
return false;
}
//
const earliestServiceDate = order.orderServiceList
.map(service => service.serviceDate)
.sort((a, b) => dayjs(a).valueOf() - dayjs(b).valueOf())[0];
if (!earliestServiceDate) {
return false;
}
//
const now = dayjs();
const serviceDate = dayjs(earliestServiceDate);
const hoursDiff = serviceDate.diff(now, 'hour');
// 24true
return hoursDiff < 24 && hoursDiff >= 0;
},
},
onLoad() {
//


Loading…
Cancel
Save