dingdong-master/pages/order-manage/serv-detail.vue

245 lines
8.9 KiB
Vue
Raw Normal View History

2022-05-21 23:49:53 +08:00
<template>
<page-meta :page-style="'overflow:'+(ifShowPageMeta?'hidden':'visible')"></page-meta>
2022-05-09 10:00:16 +08:00
<view>
<!-- 顶部操作条 -->
<cu-custom :bgColor="'bg-main-color'" :isBack="true">
<block slot="backText">返回</block>
<block slot="content">服务订单详情</block>
</cu-custom>
<!-- 任务进度跟踪 -->
2022-06-16 23:14:43 +08:00
<view v-if="servDetail.orderStatus === 3" class="bg-white margin-lr-sm padding-lr padding-bottom margin-top-sm">
2022-05-09 10:00:16 +08:00
<uni-collapse v-model="value">
<uni-collapse-item :open="true">
<template v-slot:title>
<view class="cu-bar">
<view class="action bar-first-action">
<text class="cuIcon-titles text-main-color"></text> 任务进度跟踪
</view>
</view>
</template>
<view class="cu-timeline">
<view class="cu-item text-main-color" v-for="(item, index) in servDetail.taskTraceLine">
<view class="content shadow-blur" :class="index === 0 ? 'bg-main-color light' : 'bg-gray'">
<text class="margin-right">{{item.time}}</text>
<text>{{item.action}}</text>
</view>
</view>
</view>
</uni-collapse-item>
</uni-collapse>
</view>
<!-- 服务单概况 -->
<view class="bg-white margin-lr-sm margin-top-sm padding">
<view class="flex align-center">
2022-06-16 23:14:43 +08:00
<text class="text-xl margin-right">{{servDetail.goodsName}}</text>
<view class='cu-tag bg-purple radius light margin-right-sm' v-if="servDetail.orderStatus === 3">服务中</view>
<view class='cu-tag bg-purple radius light margin-right-sm' v-if="servDetail.orderStatus === 2">待上门</view>
2022-05-09 10:00:16 +08:00
</view>
2022-06-16 23:14:43 +08:00
<!-- <view class="margin-top-sm">
2022-05-09 10:00:16 +08:00
<view v-for="(item, index) in servDetail.mainServOrder.orderTag" class='cu-tag radius margin-right-sm'>
{{item}}</view>
2022-06-16 23:14:43 +08:00
</view> -->
2022-05-09 10:00:16 +08:00
<view class="margin-top-sm">
<text class="cuIcon-location text-main-color margin-right-xs"></text>
2022-06-16 23:14:43 +08:00
<text>{{servDetail.address}}</text>
2022-05-09 10:00:16 +08:00
</view>
<view class="margin-top-sm">
<text class="cuIcon-people text-main-color margin-right-xs"></text>
2022-06-16 23:14:43 +08:00
<text class="margin-right-sm">{{servDetail.customerName}}</text>
<text>{{servDetail.customerPhone}}</text>
2022-05-09 10:00:16 +08:00
</view>
<view class="margin-top-sm">
<text class="cuIcon-time text-main-color margin-right-xs"></text>
2022-06-16 23:14:43 +08:00
<text>预约时间{{servDetail.serverTime}}</text>
2022-05-09 10:00:16 +08:00
</view>
2022-06-16 23:14:43 +08:00
<!-- <view class="margin-top-sm">
2022-05-09 10:00:16 +08:00
<text class="cuIcon-time text-main-color margin-right-xs"></text>
<text>排单时间{{servDetail.mainServOrder.boodTime}}</text>
2022-06-16 23:14:43 +08:00
</view> -->
<view class="margin-top-sm" v-if="servDetail.orderStatus === 3">
2022-05-09 10:00:16 +08:00
<text class="cuIcon-time text-main-color margin-right-xs"></text>
2022-06-17 18:34:14 +08:00
<text>上门时间{{servDetail.workBeginTime}}</text>
2022-05-09 10:00:16 +08:00
</view>
<view class="margin-top-sm">
<text class="cuIcon-moneybag text-main-color margin-right-xs"></text>
<text>任务金额</text>
2022-06-16 23:14:43 +08:00
<text class="text-price">{{servDetail.payMoney}}</text>
2022-05-09 10:00:16 +08:00
</view>
2022-06-16 23:14:43 +08:00
<!-- <view class="margin-top-xs text-sm text-gray"
2022-05-09 10:00:16 +08:00
v-for="(item, index) in servDetail.mainServOrder.gratuityRecord">
追加费用<text class="text-price">{{item.price}}</text>[{{item.type}}]
2022-06-16 23:14:43 +08:00
</view> -->
2022-05-09 10:00:16 +08:00
</view>
<!-- 待服务列 -->
<view class="bg-white margin-lr-sm padding-lr padding-bottom margin-top-sm">
<view class="cu-bar solid-bottom">
<view class="action bar-first-action">
<text class="cuIcon-titles text-main-color"></text> 商品信息
</view>
</view>
<view class="margin-top-sm">
2022-06-16 23:14:43 +08:00
<product-picked :product="servDetail" :pickedList="servDetail.standardList" :columnTitleArr="servingColumnHeaders" :valFieldArr="servingValFields"></product-picked>
2022-05-09 10:00:16 +08:00
</view>
</view>
<!-- 完成记录 -->
2022-06-16 23:14:43 +08:00
<view class="bg-white margin-lr-sm padding-lr padding-bottom margin-top-sm" v-for="(item, index) in servDetail.finishRecord" v-if="servDetail.orderStatus === 3">
2022-05-09 10:00:16 +08:00
<view class="cu-bar solid-bottom">
<view class="action bar-first-action">
<text class="cuIcon-titles text-main-color"></text> 完成记录{{item.finishList.length}}
</view>
<view class='cu-tag bg-purple radius light margin-right-sm'>{{item.finishTime}}</view>
</view>
<view class="margin-top-sm">
<product-picked :pickedList="item.finishList" :columnTitleArr="servedColumnHeaders" :showToServNum="true"></product-picked>
</view>
</view>
<!-- 订单编码和时间 -->
<view class="bg-white margin-top-sm padding margin-lr-sm margin-bottom-with-bar">
2022-06-16 23:14:43 +08:00
<view>订单编码{{servDetail.orderDetailCode}}</view>
2022-05-09 10:00:16 +08:00
<view class="margin-top-xs">订单时间{{servDetail.createTime}}</view>
</view>
<!-- 底部操作栏 -->
2022-05-21 23:49:53 +08:00
<view class="cu-bar bg-white tabbar border fixed-bottom-bar">
<view class="action" data-popup="orderManage" @click="togglePopup">
2022-05-09 10:00:16 +08:00
<view class="cuIcon-list"></view> 订单管理
</view>
2022-05-21 23:49:53 +08:00
<view class="action" data-modal="sendUrgentMsgModal" @click="showModal">
2022-05-09 10:00:16 +08:00
<view class="cuIcon-mail">
<view class="cu-tag badge" v-if="servDetail.talkMsgNum > 0">{{servDetail.talkMsgNum}}</view>
</view>
发送急报
</view>
2022-06-17 18:34:14 +08:00
<view v-if="servDetail.orderStatus === 2 && !servDetail.workBeginTime" class="bg-main-color submit" @click="workBegin">立即上门</view>
2022-05-21 23:49:53 +08:00
</view>
<uni-popup ref="orderManage" type="bottom" @change="changePopupState">
<view class="bg-white text-center">
<view v-for="(menu,index) in orderManageMenu" class="padding solid-bottom" :data-action="menu.action" @click="clickOrderManageMenu">
{{menu.name}}
</view>
</view>
<!-- 底部占位 -->
<view class="cu-bar bg-white fixed-bottom-bar"></view>
</uni-popup>
<!-- 模态框 -->
<urgent-msg :show="sendUrgentMsgModal" @hideModal="hideModal"></urgent-msg>
2022-05-09 10:00:16 +08:00
</view>
</template>
<script>
import productPicked from '@/components/goods-card/product-picked.vue';
2022-05-21 23:49:53 +08:00
import urgentMsg from '@/pages/order-manage/modal/urgent-msg.vue';
2022-05-09 10:00:16 +08:00
export default {
components: {
2022-05-21 23:49:53 +08:00
productPicked,
urgentMsg
2022-05-09 10:00:16 +08:00
},
data() {
return {
2022-06-16 23:14:43 +08:00
value: ['0'],
order: {},
2022-05-09 10:00:16 +08:00
servDetail: {},
finishRecord4Show: [],
servingColumnHeaders: ['购买型号', '购买量', '待服务'],
servedColumnHeaders: ['购买型号', '购买量', '已服务'],
2022-06-16 23:14:43 +08:00
servingValFields: ['standardName', 'standardNum', 'waitServerNum'],
servedValFields: ['standardName', 'standardNum', 'serverNum'],
2022-05-21 23:49:53 +08:00
ifShowPageMeta: false,
orderManageMenu: [{
name: '申请配件',
action: 'applyFittings'
}, {
name: '申请附加费',
action: ''
}, {
name: '拍照回单',
action: ''
}, {
name: '指派/撤回订单',
action: ''
}, {
name: '申请退单',
action: 'applyCancelOrder'
}],
sendUrgentMsgModal: false
2022-05-09 10:00:16 +08:00
}
},
onLoad(options) {
2022-06-16 23:14:43 +08:00
if (options && options.order) {
this.order = JSON.parse(decodeURIComponent(options.order));
2022-05-09 10:00:16 +08:00
}
2022-06-16 23:14:43 +08:00
this.loadData(this.order.orderDetailId);
2022-05-09 10:00:16 +08:00
},
methods: {
2022-06-16 23:14:43 +08:00
async loadData(orderDetailId) {
// this.servDetail = await this.$api.data('servDetail');
let servDetailRes = await this.$request.getOrderDetail({
id: orderDetailId
});
this.servDetail = servDetailRes.data;
2022-06-17 18:34:14 +08:00
// this.finishList4Show = this.servDetail.finishRecord;
// for (let i = 0; i < this.finishList4Show.length; i++) {
// let finishList = this.finishList4Show[i].finishList;
// for (let j = 0; j < finishList.length; j++) {
// finishList[j].secondColumnNum = finishList[j].servedNum;
// }
// this.finishList4Show[i].finishList = finishList;
// }
2022-05-21 23:49:53 +08:00
},
changePopupState(e) {
this.ifShowPageMeta = e.show;
},
togglePopup(e) {
if (this.ifShowPageMeta) {
this.$refs[e.currentTarget.dataset.popup].close();
} else {
this.$refs[e.currentTarget.dataset.popup].open();
}
},
clickOrderManageMenu(e) {
this[e.currentTarget.dataset.action]();
},
applyFittings() {
console.log("申请配件")
},
applyCancelOrder() {
let params = {
orderInfo: this.servDetail.mainServOrder
}
console.log(params)
uni.navigateTo({
url: '/pages/order-manage/cancel-order?params=' + encodeURIComponent(JSON.stringify(params))
})
},
2022-06-17 18:34:14 +08:00
async workBegin() {
let curDate = new Date();
let formatCurDate = curDate.getFullYear() + '-' + (curDate.getMonth() + 1) + '-' + curDate.getDate()
+ ' ' + curDate.getHours() + ':' + curDate.getMinutes() + ':' + curDate.getSeconds();
let params = {
id: this.servDetail.orderDetailId,
orderStatus: 3,
workBeginTime: formatCurDate
}
console.log(params)
let res = await this.$request.updateDetailOrder(params);
if (res && res.code === 0) {
this.loadData(this.servDetail.orderDetailId);
}
},
2022-05-21 23:49:53 +08:00
showModal(e) {
this[e.currentTarget.dataset.modal] = true;
},
hideModal(e) {
this[e.currentTarget.dataset.modal] = false;
2022-05-09 10:00:16 +08:00
}
}
}
</script>
<style scoped>
.bar-first-action {
margin-left: unset !important;
font-size: 30rpx !important;
}
</style>