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

1242 lines
65 KiB
Vue
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<template>
<view>
<page-meta :page-style="'overflow:'+(ifShowPageMeta?'hidden':'visible')"></page-meta>
<!-- 顶部操作条 -->
<cu-custom :bgColor="'bg-main-color'" :isBack="true">
<block slot="backText">返回</block>
<block slot="content">{{order.orderType === 0 ? '服务订单详情' : '商品订单详情'}}</block>
</cu-custom>
<!-- 任务进度跟踪 -->
<view class="bg-white margin-lr-sm padding-lr padding-bottom margin-top-sm">
<uni-collapse v-if="taskListArr.length">
<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> <text @click.stop="showTaskDetailMdl()">任务进度跟踪</text>
</view>
</view>
</template>
<view class="cu-timeline">
<view class="cu-item text-main-color" key="cu-timeline">
<!-- :class="index === 0 ? 'bg-main-color light' : 'bg-gray'" -->
<view class="content shadow-blur bg-main-color light" >
<view>
<text>{{taskListArr[taskListArr.length-1].content}}</text>
</view>
<text>{{taskListArr[taskListArr.length-1].createTime}}</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">
<text class="text-xl margin-right">{{servDetail.goodsName}}</text>
<view class='cu-tag bg-purple radius light margin-right-sm' v-if="servDetail.orderStatus === 5">已完成</view>
<view class='cu-tag bg-purple radius light margin-right-sm' v-if="servDetail.orderStatus === 4">确认中</view>
<view class='cu-tag bg-purple radius light margin-right-sm' v-if="servDetail.orderStatus === 3">{{order.orderType === 0 ? '服务中' : '发货中'}}</view>
<view class='cu-tag bg-purple radius light margin-right-sm' v-if="servDetail.orderStatus === 2">{{order.orderType === 0 ? '待上门' : '待发货'}}</view>
<view class='cu-tag bg-purple radius light margin-right-sm' v-if="servDetail.orderStatus === 1">{{order.orderType === 0 ? '未约/未排' : '拣货/发货'}}</view>
<view class='cu-tag bg-grey radius light margin-right-sm' v-if="servDetail.orderStatus === 6">已取消</view>
</view>
<!-- <view class="margin-top-sm">
<view v-for="(item, index) in servDetail.mainServOrder.orderTag" class='cu-tag radius margin-right-sm'>
{{item}}</view>
</view> -->
<view class="margin-top-sm">
<text class="cuIcon-location text-main-color margin-right-xs"></text>
<text><text class="labels">服务地址:</text>{{servDetail.provinceName + servDetail.cityName + servDetail.countryName + servDetail.streetName + servDetail.address}}</text>
</view>
<view class="margin-top-sm">
<text class="cuIcon-people text-main-color margin-right-xs"></text>
<text class="margin-right-sm"><text class="labels">客户:</text>{{servDetail.customerName}}</text>
<text v-if="servDetail.customerPhone">{{servDetail.customerPhone.substring(0, 3) + "****" + servDetail.customerPhone.substring(7)}}</text>
<button class="cu-btn line-main-color sm" v-if="servDetail.orderStatus !== 1" @click="makeCustomerPhoneCall(servDetail)">拨打</button>
</view>
<view class="margin-top-sm" v-if="servDetail.goodsOrderMasterId">
<text class="cuIcon-friendfamous text-main-color margin-right-xs"></text>
<text class="margin-right-sm"><text class="labels">派单公司:</text>{{servDetail.masterCompanyName}}</text>
<text class="margin-right-xs">{{servDetail.masterCompanyPhone}}</text>
<button class="cu-btn line-main-color sm" @click="makePhoneCall(servDetail.masterCompanyPhone)">拨打</button>
</view>
<view class="margin-top-sm" v-else-if="servDetail.orderDetailId">
<text class="cuIcon-friendfamous text-main-color margin-right-xs"></text>
<text class="margin-right-sm"><text class="labels">派单公司:</text>{{servDetail.masterCompanyName}}</text>
<text class="margin-right-xs">{{servDetail.masterWorkerPhone}}</text>
<button class="cu-btn line-main-color sm" @click="makePhoneCall(servDetail.masterWorkerPhone)">拨打</button>
</view>
<!-- <view class="margin-top-sm" v-else-if="servDetail.masterCompanyName && servDetail.masterWorkerPhone">
<text class="cuIcon-friendfamous text-main-color margin-right-xs"></text>
<text class="margin-right-sm"><text class="labels">派单公司:</text>{{servDetail.masterCompanyName}}</text>
<text class="margin-right-xs">{{servDetail.masterWorkerPhone}}</text>
<button class="cu-btn line-main-color sm" @click="makePhoneCall(servDetail.masterWorkerPhone)">拨打</button>
</view> -->
<template v-if="order.orderType === 0">
<view class="margin-top-sm">
<text class="cuIcon-time text-main-color margin-right-xs"></text>
<text v-if="servDetail.expectTimeEndFront"><text class="labels">预约时间:</text>{{servDetail.expectTimeStartFront + '~' + servDetail.expectTimeEndFront}}</text>
<text v-else><text class="labels">预约时间:</text>{{servDetail.expectTimeStartFront}}</text>
</view>
<!-- <view class="margin-top-sm">
<text class="cuIcon-time text-main-color margin-right-xs"></text>
<text>排单时间:{{servDetail.mainServOrder.boodTime}}</text>
</view> -->
<view class="margin-top-sm" v-if="servDetail.orderDetailId != null && servDetail.orderStatus >= 3">
<text class="cuIcon-time text-main-color margin-right-xs"></text>
<text><text class="labels">上门时间:</text>{{servDetail.workBeginTime}}</text>
</view>
</template>
<!-- <view class="margin-top-sm" v-if="servDetail.orderDetailId == null && servDetail.orderMode == '02'">
<text class="cuIcon-moneybag text-main-color margin-right-xs"></text>
<text>订单金额:</text>
<text class="text-price">{{servDetail.totalMoney}}</text>
</view> -->
<!-- <view class="margin-top-sm" v-if="servDetail.customerRemark">
<text class="cuIcon-message text-main-color margin-right-xs"></text>
<text><text class="labels">备注:</text>{{servDetail.customerRemark}}</text>
</view> -->
<view class="margin-top-sm">
<text class="cuIcon-moneybag text-main-color margin-right-xs"></text>
<text class="labels">{{order.orderType === 0 ? '服务金额' : '货品金额'}}</text>
<text class="text-price" v-if="servDetail.orderDetailId != null">
{{servDetail.payAddMoney}}
<text v-if="servDetail.payType === 1 && servDetail.financialChangeRecords && servDetail.financialChangeRecords.length > 0">【订单加价,单独到账】</text>
<text v-else-if="servDetail.payType === 0 && servDetail.financialChangeRecords && servDetail.financialChangeRecords.length > 0">【订单加价,合并到账】</text>
</text>
<text class="text-price" v-else>{{servDetail.serverMoney}}</text>
</view>
<!-- <view class="text-sm text-gray margin-left-lg"
v-if="servDetail.orderDetailId != null && servDetail.timeout == 1">
<text>加减费用:<text class="text-price margin-top-xs">-3</text>
[
<text v-if="servDetail.orderStatus === 0">接单</text>
<text v-else-if="servDetail.orderStatus === 1">预约</text>
<text v-else-if="servDetail.orderStatus === 2">上门</text>
<text v-else-if="servDetail.orderStatus === 3">完单</text>
超时]
</text>
</view>
<view class="text-sm text-gray margin-left-lg" v-if="servDetail.orderDetailId != null && servDetail.financialChangeRecords != null"
v-for="(item, index) in servDetail.financialChangeRecords" :key="index">
<text v-if="item.payStatus === 1">加减费用:<text class="text-price margin-top-xs">+{{item.changeMoney}}</text>[订单加价]</text>
</view> -->
</view>
<!-- 下单备注 暂时注释, 客户说的不显示 -->
<view v-if="servDetail.customerRemark || servDetail.orderImages" class="bg-white margin-lr-sm padding margin-top-sm">
<view v-if="servDetail.orderImages">
<view class="grid col-3 grid-square flex-sub">
<view class="bg-img" v-for="imgUrl in servDetail.orderImages.split(',')" :key="imgUrl">
<image :src="imgUrl" @tap="viewImage($event, [imgUrl])" :data-url="imgUrl" mode="aspectFill">
</image>
</view>
</view>
</view>
<view>订单备注: {{servDetail.customerRemark}}</view>
</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">
<product-picked :product="servDetail" :pickedList="servDetail.standardList" :columnTitleArr="servingColumnHeaders" :valFieldArr="servingValFields"></product-picked>
</view>
</view>
<view class="bg-white margin-lr-sm padding-lr margin-top-sm padding" v-if="servDetail.serviceShop">
<template v-if="servDetail.goodsOrderMasterId && servDetail.masterWorkerName && servDetail.masterWorkerPhone && (servDetail.originalWorkerId == curUserInfo.workerId)">
<view class="cu-bar solid-bottom">
<view class="action bar-first-action">
<text class="cuIcon-titles text-main-color"></text> 服务记录
</view>
<view>
<view class="cu-btn sm bg-main-color margin-right-sm shadow-blur" v-if="[0,1,2,3].indexOf(servDetail.orderStatus) >= 0" @click="cancelMasterOrder(servDetail)">撤单</view>
<view class='cu-tag bg-purple radius light margin-right-sm' v-if="servDetail.orderStatus === 5">已完成</view>
<view class='cu-tag bg-purple radius light margin-right-sm' v-if="servDetail.orderStatus === 4">待确认</view>
<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>
<view class='cu-tag bg-purple radius light margin-right-sm' v-if="servDetail.orderStatus === 1">未约/未排</view>
<view class='cu-tag bg-purple radius light margin-right-sm' v-if="servDetail.orderStatus === 0">待接单</view>
</view>
</view>
<view class="float-clear"></view>
<view class="margin-top-sm">师傅:{{servDetail.masterWorkerName}}</view>
<view class="margin-top-sm margin-bottom-lg">
<text class="margin-right-xs">联系方式:{{servDetail.masterWorkerPhone}}</text>
<button class="cu-btn line-main-color sm" @click="makePhoneCall(servDetail.masterWorkerPhone)">拨打</button>
</view>
</template>
<view class="text-black text-bold flex justify-between">
<text>安装/服务/施工门店</text>
<!-- <text @click="goChooseShop">更多></text> -->
</view>
<view class="flex-sub flex margin-top-sm" @click="openShopLocation(servDetail.serviceShop)">
<view style="width: 150rpx;height: 150rpx;margin-right:10px;">
<image style="width: 100%;height: 100%;" :src="servDetail.serviceShop.imageUrl" mode="aspectFill"></image>
</view>
<view class="flex-sub">
<view class="text-bold" style="text-overflow: ellipsis;overflow: hidden;display: -webkit-box;-webkit-box-orient: vertical;-webkit-line-clamp: 1;">
客户已选: {{servDetail.serviceShop.shopName}}
</view>
<view class="padding-tb-xs" style="position: relative;">
<view class="margin-lr-sm" style="display: inline-block;" v-if="servDetail.serviceShop.distance">
<view class="cu-tag bg-red" style="padding: 0 2px;height: auto;">距离客户</view>
<text class="text-gray" style="vertical-align: middle;">{{servDetail.serviceShop.distance}}</text>
</view>
<image src="/static/navigation.png" style="width: 50rpx;height: 50rpx;display: inline-block;position: absolute;top: 5px;right: -10px;"></image>
</view>
<view style="text-overflow: ellipsis;overflow: hidden;display: -webkit-box;-webkit-box-orient: vertical;-webkit-line-clamp: 1;">{{servDetail.serviceShop.provinceName + servDetail.serviceShop.cityName + servDetail.serviceShop.countryName + servDetail.serviceShop.streetName + servDetail.serviceShop.address}}</view>
<view class="flex justify-between align-center margin-bottom-xs padding-top">
<view>
<text class="text-bold text-lg margin-lr-xs">店长:{{servDetail.serviceShop.phone}}</text>
</view>
<button class="cu-btn line-main-color" @click.stop="makePhoneCall(servDetail.serviceShop.phone)">拨打</button>
</view>
</view>
</view>
</view>
<view class="bg-white margin-lr-sm padding-lr margin-top-sm padding" v-else-if="servDetail.shop">
<template v-if="servDetail.goodsOrderMasterId && (servDetail.originalWorkerId == curUserInfo.workerId)">
<view class="cu-bar solid-bottom">
<view class="action bar-first-action">
<text class="cuIcon-titles text-main-color"></text> 服务记录
</view>
<view>
<view class="cu-btn sm bg-main-color margin-right-sm shadow-blur" v-if="[0,1,2,3].indexOf(servDetail.orderStatus) >= 0" @click="cancelMasterOrder(servDetail)">撤单</view>
<view class='cu-tag bg-purple radius light margin-right-sm' v-if="servDetail.orderStatus === 5">已完成</view>
<view class='cu-tag bg-purple radius light margin-right-sm' v-if="servDetail.orderStatus === 4">待确认</view>
<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>
<view class='cu-tag bg-purple radius light margin-right-sm' v-if="servDetail.orderStatus === 1">未约/未排</view>
<view class='cu-tag bg-purple radius light margin-right-sm' v-if="servDetail.orderStatus === 0">待接单</view>
</view>
</view>
<view class="float-clear"></view>
<view class="margin-top-sm">师傅:{{servDetail.masterWorkerName}}</view>
<view class="margin-top-sm margin-bottom-lg">
<text class="margin-right-xs">联系方式:{{servDetail.masterWorkerPhone}}</text>
<button class="cu-btn line-main-color sm" @click="makePhoneCall(servDetail.masterWorkerPhone)">拨打</button>
</view>
</template>
<view class="text-black text-bold flex justify-between">
<text>安装/服务/施工门店</text>
<!-- <text @click="goChooseShop">更多></text> -->
</view>
<view class="flex-sub flex margin-top-sm" @click="openShopLocation(servDetail.shop)">
<view style="width: 150rpx;height: 150rpx;margin-right:10px;">
<image style="width: 100%;height: 100%;" :src="servDetail.shop.imageUrl" mode="aspectFill"></image>
</view>
<view class="flex-sub">
<view class="text-bold" style="text-overflow: ellipsis;overflow: hidden;display: -webkit-box;-webkit-box-orient: vertical;-webkit-line-clamp: 1;">
客户已选: {{servDetail.shop.shopName}}
</view>
<view class="padding-tb-xs" style="position: relative;">
<view class="margin-lr-sm" style="display: inline-block;" v-if="servDetail.shop.distance">
<view class="cu-tag bg-red" style="padding: 0 2px;height: auto;">距离您</view>
<text class="text-gray" style="vertical-align: middle;">{{servDetail.shop.distance}}</text>
</view>
<image src="/static/navigation.png" style="width: 50rpx;height: 50rpx;display: inline-block;position: absolute;top: 5px;right: -10px;"></image>
</view>
<view>{{servDetail.shop.provinceName + servDetail.shop.cityName + servDetail.shop.countryName + servDetail.shop.streetName + servDetail.shop.address}}</view>
<view class="flex justify-between align-center margin-bottom-xs padding-top">
<view>
<text class="text-bold text-lg margin-lr-xs">店长:{{servDetail.shop.phone}}</text>
</view>
<button class="cu-btn line-main-color" @click.stop="makePhoneCall(servDetail.shop.phone)">拨打</button>
</view>
</view>
</view>
</view>
<!-- 加价记录 子单详情展示 -->
<view v-if="servDetail.orderDetailId != null && servDetail.financialChangeRecords && servDetail.financialChangeRecords.length > 0" 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="padding-tb-sm" v-for="addRecord in servDetail.financialChangeRecords" :key="addRecord.id">
<view>
<text>加价金额:</text>
<text>{{addRecord.changeMoney + (addRecord.attachmentMoney || 0)}}</text>
</view>
<view v-if="addRecord.reason && addRecord.reason.indexOf('含') > -1">
<text>{{addRecord.reason.split('含')[1]}}</text>
<text>{{addRecord.changeMoney}}</text>
</view>
<view>
<text>加价备注:</text>
<text v-if="addRecord.remark">{{addRecord.remark}}</text>
</view>
<view v-if="addRecord.urls">
<view class="grid col-3 grid-square flex-sub margin-top-sm">
<view class="bg-img" v-for="imgUrl in addRecord.urls.split(',')" :key="imgUrl">
<image :src="imgUrl" @tap="viewImage($event, [imgUrl])" :data-url="imgUrl" mode="aspectFill">
</image>
</view>
</view>
</view>
</view>
</view>
<!-- 完工图片 子单详情展示 -->
<view v-if="servDetail.orderDetailId != null && servDetail.orderStatus > 3 && servDetail.finishImgList && servDetail.finishImgList.length" 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="grid col-3 grid-square flex-sub margin-top-sm">
<view class="bg-img" v-for="(imgUrl, index) in servDetail.finishImgList" :key="index">
<image :src="imgUrl" @tap="viewImage($event, [imgUrl])" :data-url="imgUrl" mode="aspectFill"></image>
</view>
</view>
<view>
<text>备注:{{servDetail.workerRemark}}</text>
</view>
</view>
<view class="bg-white margin-lr-sm padding-lr padding-bottom margin-top-sm" v-if="servDetail.orderDetailId != null && servDetail.afterServiceRecordList && servDetail.afterServiceRecordList.length > 0">
<view class="cu-bar solid-bottom">
<view class="action bar-first-action">
<text class="cuIcon-titles text-main-color"></text> 售后记录
</view>
</view>
<view v-for="(afterServiceRecord, afterServiceRecordIndex) in servDetail.afterServiceRecordList" :key="afterServiceRecordIndex">
<afterServiceRecord
v-if="order.orderType === 0"
:after-service-record="afterServiceRecord"
:order="order"
:showActionBtn="false"
></afterServiceRecord>
<afterServiceRecordGoods
v-else
:after-service-record="afterServiceRecord"
:order="order"
:showActionBtn="false"
@getDeliveryFlow="(trackingNumber) => {showDeliveryFlow = true; showDeliveryFlowTrackingNumber = trackingNumber;}"
></afterServiceRecordGoods>
<!-- <view v-if="afterServiceRecord.createBy == 1" class="padding-tb-sm solid-top">
<view class='cu-tag bg-main-color radius light'>售后发起中</view>
<view v-if="afterServiceRecord.operType === 1">
<view class="text-gray text-sm margin-bottom-xs">退单退款已提交至商家其最大时限24小时内需完成操作</view>
<view class="flex justify-start align-end">
<text>退款申请:</text>
<uni-countdown :show-colon="false" :backgroundColor="'#eee'"
:day="$dateUtil.countDownDiff($dateUtil.addHours(afterServiceRecord.createTime, 24)).day"
:hour="$dateUtil.countDownDiff($dateUtil.addHours(afterServiceRecord.createTime, 24)).hour"
:minute="$dateUtil.countDownDiff($dateUtil.addHours(afterServiceRecord.createTime, 24)).min"
:second="$dateUtil.countDownDiff($dateUtil.addHours(afterServiceRecord.createTime, 24)).seconds">
</uni-countdown>
</view>
<view>
<text>退款金额:</text>
<text>{{afterServiceRecord.refund}}</text>
</view>
<view v-if="order.orderType === 1">
<text>售后类型:</text>
<text v-if="afterServiceRecord.afterServiceType === 1">未收到货,我要退单退款!</text>
<text v-else-if="afterServiceRecord.afterServiceType === 2">未收到货(发货在途),我要退款!</text>
<text v-else-if="afterServiceRecord.afterServiceType === 3">已收到货,我要退款退货!</text>
</view>
<view>
<text>退款原因:</text>
<template v-if="order.orderType === 1">
<text v-if="afterServiceRecord.customerReasonType === 1">不想要了</text>
<text v-else-if="afterServiceRecord.customerReasonType === 2">买错型号尺寸了</text>
<text v-else-if="afterServiceRecord.customerReasonType === 3">材质与商品描述不符</text>
<text v-else-if="afterServiceRecord.customerReasonType === 4">大小尺寸与商品描述不符</text>
<text v-else-if="afterServiceRecord.customerReasonType === 5">颜色、款式、型号与描述不符</text>
<text v-else-if="afterServiceRecord.customerReasonType === 6">出现质量问题</text>
<text v-else-if="afterServiceRecord.customerReasonType === 7">收到商品少件(少配件)</text>
<text v-else-if="afterServiceRecord.customerReasonType === 8">商家发错货</text>
<text v-else-if="afterServiceRecord.customerReasonType === 9">商品破损或污渍</text>
<text v-else-if="afterServiceRecord.customerReasonType === 10">未按承诺时间发货</text>
<text v-else-if="afterServiceRecord.customerReasonType === 11">未见快递/物流有信息</text>
<text v-else-if="afterServiceRecord.customerReasonType === 12">其它原因</text>
</template>
<template v-else>
<text v-if="afterServiceRecord.customerReasonType === 1">上门/服务不守时</text>
<text v-else-if="afterServiceRecord.customerReasonType === 2">态度不友好,无法继续</text>
<text v-else-if="afterServiceRecord.customerReasonType === 3">服务效果差,未达到合格</text>
<text v-else-if="afterServiceRecord.customerReasonType === 4">技能水平问题,未妥善完成</text>
<text v-else-if="afterServiceRecord.customerReasonType === 5">要求加费用,费用不合理</text>
<text v-else-if="afterServiceRecord.customerReasonType === 6">订单拖太久了</text>
<text v-else-if="afterServiceRecord.customerReasonType === 7">超了些服务内容,师傅不接受</text>
<text v-else-if="afterServiceRecord.customerReasonType === 8">客户/我时间不方便了</text>
<text v-else-if="afterServiceRecord.customerReasonType === 9">客户/我已让别的师傅服务了</text>
</template>
</view>
<view>
<text>具体原因:</text>
<text v-if="afterServiceRecord.customerReason">{{afterServiceRecord.customerReason}}</text>
</view>
<view class="grid col-3 grid-square flex-sub margin-top-sm">
<view class="bg-img" v-for="(imgObj, imgIndex) in afterServiceRecord.imgsList"
:key="imgIndex" v-if="imgObj.imgUploadBy === 1">
<image :src="imgObj.imgUrl" @tap="viewImage($event, [imgObj.imgUrl])"
:data-url="imgObj.imgUrl" mode="aspectFill"></image>
</view>
</view>
<view>
<text class="text-red" v-if="!item.isOnlyServ && item.payMoney < afterServiceRecord.refund">警报:退单金额大于该师傅接单金额,但客户发起的退款金额有效,您需介入处理,如让接单师傅系统上操作同意退款,系统最大按该单派单额退回客户,其余需人工处理!如属于师傅责任引起的退单,建议重做,重做后让客户撤消退单!</text>
</view>
</view>
<view v-else-if="afterServiceRecord.operType === 2">
<view class="text-gray text-sm margin-bottom-xs">售后已提交至商家其最大时限24小时内需完成操作</view>
<view class="flex justify-start align-end">
<text>待处理售后:</text>
<uni-countdown :show-colon="false" :backgroundColor="'#eee'"
:day="$dateUtil.countDownDiff($dateUtil.addHours(afterServiceRecord.createTime, 24)).day"
:hour="$dateUtil.countDownDiff($dateUtil.addHours(afterServiceRecord.createTime, 24)).hour"
:minute="$dateUtil.countDownDiff($dateUtil.addHours(afterServiceRecord.createTime, 24)).min"
:second="$dateUtil.countDownDiff($dateUtil.addHours(afterServiceRecord.createTime, 24)).seconds">
</uni-countdown>
</view>
<view v-if="order.orderType === 1">
<text>售后类型:</text>
<text v-if="afterServiceRecord.afterServiceType === 1">未收到货,我要退单退款!</text>
<text v-else-if="afterServiceRecord.afterServiceType === 2">未收到货(发货在途),我要退款!</text>
<text v-else-if="afterServiceRecord.afterServiceType === 3">已收到货,我要退款退货!</text>
</view>
<view>
<text>退款原因:</text>
<template v-if="order.orderType === 1">
<text v-if="afterServiceRecord.customerReasonType === 1">不想要了</text>
<text v-else-if="afterServiceRecord.customerReasonType === 2">买错型号尺寸了</text>
<text v-else-if="afterServiceRecord.customerReasonType === 3">材质与商品描述不符</text>
<text v-else-if="afterServiceRecord.customerReasonType === 4">大小尺寸与商品描述不符</text>
<text v-else-if="afterServiceRecord.customerReasonType === 5">颜色、款式、型号与描述不符</text>
<text v-else-if="afterServiceRecord.customerReasonType === 6">出现质量问题</text>
<text v-else-if="afterServiceRecord.customerReasonType === 7">收到商品少件(少配件)</text>
<text v-else-if="afterServiceRecord.customerReasonType === 8">商家发错货</text>
<text v-else-if="afterServiceRecord.customerReasonType === 9">商品破损或污渍</text>
<text v-else-if="afterServiceRecord.customerReasonType === 10">未按承诺时间发货</text>
<text v-else-if="afterServiceRecord.customerReasonType === 11">未见快递/物流有信息</text>
<text v-else-if="afterServiceRecord.customerReasonType === 12">其它原因</text>
</template>
<template v-else>
<text v-if="afterServiceRecord.customerReasonType === 1">上门/服务不守时</text>
<text v-else-if="afterServiceRecord.customerReasonType === 2">态度不友好,无法继续</text>
<text v-else-if="afterServiceRecord.customerReasonType === 3">服务效果差,未达到合格</text>
<text v-else-if="afterServiceRecord.customerReasonType === 4">技能水平问题,未妥善完成</text>
<text v-else-if="afterServiceRecord.customerReasonType === 5">要求加费用,费用不合理</text>
<text v-else-if="afterServiceRecord.customerReasonType === 6">订单拖太久了</text>
<text v-else-if="afterServiceRecord.customerReasonType === 7">超了些服务内容,师傅不接受</text>
<text v-else-if="afterServiceRecord.customerReasonType === 8">客户/我时间不方便了</text>
<text v-else-if="afterServiceRecord.customerReasonType === 9">客户/我已让别的师傅服务了</text>
</template>
</view>
<view>
<text>具体原因:</text>
<text v-if="afterServiceRecord.customerReason">{{afterServiceRecord.customerReason}}</text>
</view>
<view class="grid col-3 grid-square flex-sub margin-top-sm">
<view class="bg-img" v-for="(imgObj, imgIndex) in afterServiceRecord.imgsList"
:key="imgIndex" v-if="imgObj.imgUploadBy === 1">
<image :src="imgObj.imgUrl" @tap="viewImage($event, [imgObj.imgUrl])"
:data-url="imgObj.imgUrl" mode="aspectFill"></image>
</view>
</view>
</view>
</view>
<view v-if="afterServiceRecord.updateBy == 2" class="padding-tb-sm solid-top">
<view class='cu-tag bg-main-color radius light'>师傅反馈</view>
<view v-if="afterServiceRecord.operType === 1">
<view class="margin-top-xs">
<text>师傅反馈结果:</text>
<text v-if="afterServiceRecord.workerFeedbackResult === 0">拒绝</text>
<text v-else-if="afterServiceRecord.workerFeedbackResult === 1">同意</text>
<text v-else-if="afterServiceRecord.workerFeedbackResult === 2">重新上门</text>
</view>
<view v-if="afterServiceRecord.workerFeedbackResult === 1">
<text>同意退款金额:</text>
<text>{{afterServiceRecord.agreedRefund ? afterServiceRecord.agreedRefund : afterServiceRecord.refund}}</text>
</view>
<view v-if="afterServiceRecord.workerFeedbackResult !== 2">
<text>师傅反馈:</text>
<text v-if="afterServiceRecord.workerFeedbackReasonType === 1">客户原因</text>
<text v-else-if="afterServiceRecord.workerFeedbackReasonType === 2">师傅原因</text>
<text v-else>其他</text>
<text
v-if="afterServiceRecord.workerFeedbackReason">{{"" + afterServiceRecord.workerFeedbackReason}}</text>
</view>
<view class="grid col-3 grid-square flex-sub margin-top-sm">
<view class="bg-img" v-for="(imgObj, imgIndex) in afterServiceRecord.imgsList"
:key="imgIndex" v-if="imgObj.imgUploadBy === 2">
<image :src="imgObj.imgUrl" @tap="viewImage($event, [imgObj.imgUrl])"
:data-url="imgObj.imgUrl" mode="aspectFill"></image>
</view>
</view>
</view>
<view v-else-if="afterServiceRecord.operType === 2">
<view class="margin-top-xs">
<text>师傅反馈结果:</text>
<text v-if="afterServiceRecord.workerFeedbackResult === 0">拒绝</text>
<text v-else-if="afterServiceRecord.workerFeedbackResult === 1">同意</text>
<text v-else-if="afterServiceRecord.workerFeedbackResult === 2">重新上门</text>
</view>
<view v-if="afterServiceRecord.workerFeedbackResult !== 2">
<text>师傅反馈:</text>
<text v-if="afterServiceRecord.workerFeedbackReasonType === 1">客户原因</text>
<text v-else-if="afterServiceRecord.workerFeedbackReasonType === 2">师傅原因</text>
<text v-else>其他</text>
<text
v-if="afterServiceRecord.workerFeedbackReason">{{"" + afterServiceRecord.workerFeedbackReason}}</text>
</view>
<view class="grid col-3 grid-square flex-sub margin-top-sm">
<view class="bg-img" v-for="(imgObj, imgIndex) in afterServiceRecord.imgsList"
:key="imgIndex" v-if="imgObj.imgUploadBy === 2">
<image :src="imgObj.imgUrl" @tap="viewImage($event, [imgObj.imgUrl])"
:data-url="imgObj.imgUrl" mode="aspectFill"></image>
</view>
</view>
</view>
</view>
<view v-if="afterServiceRecord.customerFinalCheck != null" class="padding-tb-sm solid-top">
<view class='cu-tag bg-main-color radius light'>客户最终确认</view>
<view class="margin-top-xs">{{afterServiceRecord.customerFinalCheck === 1 ? '同意' : '不同意'}}
</view>
<view v-if="afterServiceRecord.customerFinalCheck === 0">
<view class="grid col-3 grid-square flex-sub margin-top-sm" v-if="afterServiceRecord.customerDisagreeImages">
<view class="bg-img" v-for="imgUrl in afterServiceRecord.customerDisagreeImages.split(',')" :key="imgUrl">
<image :src="imgUrl" @tap="viewImage($event, [imgUrl])" :data-url="imgUrl" mode="aspectFill"></image>
</view>
</view>
<view class="margin-bottom-xs" v-if="afterServiceRecord.customerDisagreeReason">
<text>不同意理由:{{afterServiceRecord.customerDisagreeReason}}</text>
</view>
<view class="text-red" v-if="afterServiceRecord.customerFinalCheck === 0">订单交由平台协商处理</view>
</view>
<view v-else-if="afterServiceRecord.customerFinalCheck === 1">
<template v-if="afterServiceRecord.workerFeedbackResult !== 0">
<view v-if="(afterServiceRecord.agreedRefund > 0 || afterServiceRecord.originalRefund > 0) && order.payStatus == 1">
<view>
<text>本单退款,系统已发起按客户支付的帐户原路退回</text>
<text class="text-red">{{afterServiceRecord.agreedRefund || afterServiceRecord.originalRefund}}</text>
<text>元,银行按工作日退款,节假日顺延到帐。遇客户问询,请其耐心等待,到账时会在客户端”客户最终确认“处有到账时间。</text>
</view>
<view>退款支付到账:{{afterServiceRecord.refundApplyTime}}</view>
</view>
<view v-else-if="order.payStatus == 0">
<text>本单已退款{{afterServiceRecord.agreedRefund}}元因未实际支付实退为0元。未退部分继续完成订单及正常支付</text>
</view>
</template>
<view v-else>
<text>本次售后已操作完毕,售后申请已结束!</text>
</view>
</view>
</view> -->
</view>
</view>
<!-- 完成记录 主单详情展示 -->
<view v-if="servDetail.orderDetailId == null && (servDetail.originalWorkerId != curUserInfo.workerId)" class="bg-white margin-lr-sm padding-lr padding-bottom margin-top-sm" v-for="(item, index) in servDetail.orderStandardDetailList" :key="index">
<view class="cu-bar solid-bottom">
<view class="action bar-first-action">
<text class="cuIcon-titles text-main-color"></text> {{order.orderType === 0 ? '服务记录' : '发货记录'}}
</view>
<view>
<view class="cu-btn sm bg-main-color margin-right-sm shadow-blur" v-if="[0,1,2,3].indexOf(item.orderStatus) >= 0" @click="rejectDetailOrder(item)">撤单</view>
<view class='cu-tag bg-purple radius light margin-right-sm' v-if="item.orderStatus === 5">已完成</view>
<view class='cu-tag bg-purple radius light margin-right-sm' v-if="item.orderStatus === 4">待确认</view>
<view class='cu-tag bg-purple radius light margin-right-sm' v-if="item.orderStatus === 3">{{servDetail.orderType === 0 ? '服务中' : '发货中'}}</view>
<view class='cu-tag bg-purple radius light margin-right-sm' v-if="item.orderStatus === 2">{{servDetail.orderType === 0 ? '待上门' : '待发货'}}</view>
<view class='cu-tag bg-purple radius light margin-right-sm' v-if="item.orderStatus === 1">{{servDetail.orderType === 0 ? '未约/未排' : '拣货/发货'}}</view>
<view class='cu-tag bg-purple radius light margin-right-sm' v-if="item.orderStatus === 0">待接单</view>
</view>
<!-- <view class='cu-tag bg-purple radius light margin-right-sm' v-if="item.orderStatus > 3">{{item.workFinishTime}}</view> -->
</view>
<view class="margin-top-sm">
<view class="float-left" v-for="(afterServiceRecord, afterServiceRecordIndex) in item.afterServiceRecordList" :key="afterServiceRecordIndex">
<view v-if="afterServiceRecord.createBy && !afterServiceRecord.updateBy" class='cu-tag margin-right-xs radius line-red margin-top-xs'>售后发起中</view>
<view v-if="afterServiceRecord.workerFeedbackResult == 1 && afterServiceRecord.customerFinalCheck == null" class='cu-tag margin-right-xs radius line-main-color margin-top-xs'>售后已同意</view>
<view v-if="afterServiceRecord.workerFeedbackResult == 0 && afterServiceRecord.customerFinalCheck == null" class='cu-tag margin-right-xs radius line-red margin-top-xs'>售后已拒绝</view>
<view v-if="afterServiceRecord.customerFinalCheck == 0" class='cu-tag margin-right-xs radius line-red margin-top-xs'>售后纠纷中</view>
<view v-if="afterServiceRecord.customerFinalCheck == 1 || afterServiceRecord.customerFinalCheck == 2" class='cu-tag margin-right-xs radius line-main-color margin-top-xs'>售后已完成</view>
</view>
<template v-if="item.timeout == 1">
<view class="float-left" v-if="order.orderType === 0">
<view v-if="item.orderStatus === 0" class='cu-tag margin-right-xs radius line-red margin-top-xs'>超时未接单</view>
<view v-else-if="order.orderStatus === 1 && order.isCall === '01'" class='cu-tag margin-right-xs radius line-red margin-top-xs'>超时未预约</view>
<view v-else-if="order.orderStatus === 1 && order.isCall === '02'" class='cu-tag margin-right-xs radius line-red margin-top-xs'>超时未排单</view>
<view v-else-if="order.orderStatus === 1 && order.orderDetailId != null" class='cu-tag margin-right-xs radius line-red margin-top-xs'>超时未预约</view>
<view v-else-if="item.orderStatus === 2" class='cu-tag margin-right-xs radius line-red margin-top-xs'>{{order.orderType === 0 ? '超时未上门' : '超时未发货'}}</view>
<view v-else-if="item.orderStatus === 3 && order.orderType === 0" class='cu-tag margin-right-xs radius line-red margin-top-xs'>超时未完单</view>
</view>
<view v-else class="float-left">
<view v-if="order.orderStatus === 0" class='cu-tag margin-right-xs radius line-red margin-top-xs'>超时未接单</view>
<view v-else-if="order.orderStatus === 1" class='cu-tag margin-right-xs radius line-red margin-top-xs'>超时未发货</view>
<view v-else-if="order.orderStatus === 2" class='cu-tag margin-right-xs radius line-red margin-top-xs'>超时未发货</view>
</view>
</template>
<view v-if="item.afterTimeout == 1" class='cu-tag margin-right-xs radius line-red margin-top-xs'>售后超时</view>
</view>
<view class="float-clear"></view>
<view class="margin-top-sm">师傅:{{item.workerName}}</view>
<view class="margin-top-sm">
<text class="margin-right-xs">联系方式:{{item.workerPhone}}</text>
<button class="cu-btn line-main-color sm" @click="makePhoneCall(item.workerPhone)">拨打</button>
</view>
<view class="margin-top-sm">
服务金额:
<text class="text-price">{{item.payMoney}}</text>
</view>
<view class="margin-top-sm" v-if="item.expectTimeEndFront">预约时间:{{item.expectTimeStartFront}}</view>
<view class="margin-top-sm" v-else>预约时间:{{item.expectTimeStartFront}}</view>
<view class="margin-top-sm" v-if="item.orderStatus >= 3">{{order.orderType === 1 ? '发货时间' : '上门时间'}}{{item.workBeginTime}}</view>
<view class="margin-top-sm" v-if="item.orderStatus >= 4">完成时间:{{item.workFinishTime}}</view>
<view class="margin-top-sm">
<product-picked :pickedList="item.orderStandardList" :columnTitleArr="servedColumnHeaders" :valFieldArr="servedValFields"></product-picked>
</view>
<view v-if="item.financialChangeRecord && item.financialChangeRecord.length > 0" class="bg-white">
<view class="cu-bar solid-bottom">
<view class="action bar-first-action">
<text class="cuIcon-title text-main-color"></text> 加价记录
</view>
</view>
<view class="padding-tb-sm" v-for="(changeRecord, changeRecordIndex) in item.financialChangeRecord" :key="changeRecordIndex">
<view>
<text>加价金额:</text>
<text>{{changeRecord.changeMoney + (changeRecord.attachmentMoney || 0)}}</text>
</view>
<view v-if="changeRecord.reason && changeRecord.reason.indexOf('含') > -1">
<text>{{changeRecord.reason.split('含')[1]}}</text>
<text>{{changeRecord.changeMoney}}</text>
</view>
<view>
<text>加价备注:</text>
<text v-if="changeRecord.remark">{{changeRecord.remark}}</text>
</view>
<view v-if="changeRecord.urls">
<view class="grid col-3 grid-square flex-sub margin-top-sm">
<view class="bg-img" v-for="imgUrl in changeRecord.urls.split(',')" :key="imgUrl">
<image :src="imgUrl" @tap="viewImage($event, [imgUrl])" :data-url="imgUrl" mode="aspectFill">
</image>
</view>
</view>
</view>
</view>
</view>
<view v-if="servDetail.orderStatus > 3 && item.finishImgList && item.finishImgList.length" class="bg-white">
<view class="cu-bar solid-bottom">
<view class="action bar-first-action">
<text class="cuIcon-title text-main-color"></text> 完工图片
</view>
</view>
<view class="grid col-3 grid-square flex-sub margin-top-sm">
<view class="bg-img" v-for="(imgUrl, index) in item.finishImgList" :key="index">
<image :src="imgUrl" @tap="viewImage($event, [imgUrl])" :data-url="imgUrl" mode="aspectFill">
</image>
</view>
</view>
<view>
<text>备注:{{item.remark}}</text>
</view>
</view>
<view v-if="item.afterServiceRecordList && item.afterServiceRecordList.length" class="bg-white">
<view class="cu-bar">
<view class="action bar-first-action">
<text class="cuIcon-title text-main-color"></text>
{{item.afterServiceRecordList[0].operType === 1 ? '退款记录' : '售后记录'}}
</view>
</view>
<view v-for="(afterServiceRecord, afterServiceRecordIndex) in item.afterServiceRecordList" :key="afterServiceRecordIndex">
<afterServiceRecord v-if="order.orderType === 0" :after-service-record="afterServiceRecord" :order="item" :showActionBtn="false"></afterServiceRecord>
<afterServiceRecordGoods
v-else
:after-service-record="afterServiceRecord"
:order="item"
:showActionBtn="false"
@getDeliveryFlow="(trackingNumber) => {showDeliveryFlow = true; showDeliveryFlowTrackingNumber = trackingNumber;}"
></afterServiceRecordGoods>
<!-- <view v-if="afterServiceRecord.createBy == 1" class="padding-tb-sm solid-top">
<view class='cu-tag bg-main-color radius light'>售后发起中</view>
<view v-if="afterServiceRecord.operType === 1">
<view class="text-gray text-sm margin-bottom-xs">退单退款已提交至商家其最大时限24小时内需完成操作</view>
<view class="flex justify-start align-end">
<text>退款申请:</text>
<uni-countdown :show-colon="false" :backgroundColor="'#eee'"
:day="$dateUtil.countDownDiff($dateUtil.addHours(afterServiceRecord.createTime, 24)).day"
:hour="$dateUtil.countDownDiff($dateUtil.addHours(afterServiceRecord.createTime, 24)).hour"
:minute="$dateUtil.countDownDiff($dateUtil.addHours(afterServiceRecord.createTime, 24)).min"
:second="$dateUtil.countDownDiff($dateUtil.addHours(afterServiceRecord.createTime, 24)).seconds">
</uni-countdown>
</view>
<view>
<text>退款金额:</text>
<text>{{afterServiceRecord.refund}}</text>
</view>
<view>
<text>退款原因:</text>
<text v-if="afterServiceRecord.customerReasonType === 1">上门/服务不守时</text>
<text v-else-if="afterServiceRecord.customerReasonType === 2">态度不友好,无法继续</text>
<text v-else-if="afterServiceRecord.customerReasonType === 3">服务效果差,未达到合格</text>
<text v-else-if="afterServiceRecord.customerReasonType === 4">技能水平问题,未妥善完成</text>
<text v-else-if="afterServiceRecord.customerReasonType === 5">要求加费用,费用不合理</text>
<text v-else-if="afterServiceRecord.customerReasonType === 6">订单拖太久了</text>
<text v-else-if="afterServiceRecord.customerReasonType === 7">超了些服务内容,师傅不接受</text>
<text v-else-if="afterServiceRecord.customerReasonType === 8">客户/我时间不方便了</text>
<text v-else-if="afterServiceRecord.customerReasonType === 9">客户/我已让别的师傅服务了</text>
</view>
<view>
<text>具体原因:</text>
<text v-if="afterServiceRecord.customerReason">{{afterServiceRecord.customerReason}}</text>
</view>
<view class="grid col-3 grid-square flex-sub margin-top-sm">
<view class="bg-img" v-for="(imgObj, imgIndex) in afterServiceRecord.imgsList"
:key="imgIndex" v-if="imgObj.imgUploadBy === 1">
<image :src="imgObj.imgUrl" @tap="viewImage($event, [imgObj.imgUrl])"
:data-url="imgObj.imgUrl" mode="aspectFill"></image>
</view>
</view>
<view>
<text class="text-red" v-if="!item.isOnlyServ && item.payMoney < afterServiceRecord.refund">警报:退单金额大于该师傅接单金额,但客户发起的退款金额有效,您需介入处理,如让接单师傅系统上操作同意退款,系统最大按该单派单额退回客户,其余需人工处理!如属于师傅责任引起的退单,建议重做,重做后让客户撤消退单!</text>
</view>
</view>
<view v-else-if="afterServiceRecord.operType === 2">
<view class="text-gray text-sm margin-bottom-xs">售后已提交至商家其最大时限24小时内需完成操作</view>
<view class="flex justify-start align-end">
<text>待处理售后:</text>
<uni-countdown :show-colon="false" :backgroundColor="'#eee'"
:day="$dateUtil.countDownDiff($dateUtil.addHours(afterServiceRecord.createTime, 24)).day"
:hour="$dateUtil.countDownDiff($dateUtil.addHours(afterServiceRecord.createTime, 24)).hour"
:minute="$dateUtil.countDownDiff($dateUtil.addHours(afterServiceRecord.createTime, 24)).min"
:second="$dateUtil.countDownDiff($dateUtil.addHours(afterServiceRecord.createTime, 24)).seconds">
</uni-countdown>
</view>
<view>
<text>售后原因:</text>
<text v-if="afterServiceRecord.customerReasonType === 1">上门/服务不守时</text>
<text v-else-if="afterServiceRecord.customerReasonType === 2">态度不友好,无法继续</text>
<text v-else-if="afterServiceRecord.customerReasonType === 3">服务效果差,未达到合格</text>
<text v-else-if="afterServiceRecord.customerReasonType === 4">技能水平问题,未妥善完成</text>
<text v-else-if="afterServiceRecord.customerReasonType === 5">要求加费用,费用不合理</text>
<text v-else-if="afterServiceRecord.customerReasonType === 6">订单拖太久了</text>
<text v-else-if="afterServiceRecord.customerReasonType === 7">超了些服务内容,师傅不接受</text>
<text v-else-if="afterServiceRecord.customerReasonType === 8">客户/我时间不方便了</text>
<text v-else-if="afterServiceRecord.customerReasonType === 9">客户/我已让别的师傅服务了</text>
</view>
<view>
<text>具体原因:</text>
<text v-if="afterServiceRecord.customerReason">{{afterServiceRecord.customerReason}}</text>
</view>
<view class="grid col-3 grid-square flex-sub margin-top-sm">
<view class="bg-img" v-for="(imgObj, imgIndex) in afterServiceRecord.imgsList"
:key="imgIndex" v-if="imgObj.imgUploadBy === 1">
<image :src="imgObj.imgUrl" @tap="viewImage($event, [imgObj.imgUrl])"
:data-url="imgObj.imgUrl" mode="aspectFill"></image>
</view>
</view>
</view>
</view>
<view v-if="afterServiceRecord.updateBy == 2" class="padding-tb-sm solid-top">
<view class='cu-tag bg-main-color radius light'>师傅反馈</view>
<view v-if="afterServiceRecord.operType === 1">
<view class="margin-top-xs">
<text>师傅反馈结果:</text>
<text v-if="afterServiceRecord.workerFeedbackResult === 0">拒绝</text>
<text v-else-if="afterServiceRecord.workerFeedbackResult === 1">同意</text>
<text v-else-if="afterServiceRecord.workerFeedbackResult === 2">重新上门</text>
</view>
<view v-if="afterServiceRecord.workerFeedbackResult === 1">
<text>同意退款金额:</text>
<text>{{afterServiceRecord.agreedRefund ? afterServiceRecord.agreedRefund : afterServiceRecord.refund}}</text>
</view>
<view v-if="afterServiceRecord.workerFeedbackResult !== 2">
<text>师傅反馈:</text>
<text v-if="afterServiceRecord.workerFeedbackReasonType === 1">客户原因</text>
<text v-else-if="afterServiceRecord.workerFeedbackReasonType === 2">师傅原因</text>
<text v-else>其他</text>
<text
v-if="afterServiceRecord.workerFeedbackReason">{{"" + afterServiceRecord.workerFeedbackReason}}</text>
</view>
<view class="grid col-3 grid-square flex-sub margin-top-sm">
<view class="bg-img" v-for="(imgObj, imgIndex) in afterServiceRecord.imgsList"
:key="imgIndex" v-if="imgObj.imgUploadBy === 2">
<image :src="imgObj.imgUrl" @tap="viewImage($event, [imgObj.imgUrl])"
:data-url="imgObj.imgUrl" mode="aspectFill"></image>
</view>
</view>
</view>
<view v-else-if="afterServiceRecord.operType === 2">
<view class="margin-top-xs">
<text>师傅反馈结果:</text>
<text v-if="afterServiceRecord.workerFeedbackResult === 0">拒绝</text>
<text v-else-if="afterServiceRecord.workerFeedbackResult === 1">同意</text>
<text v-else-if="afterServiceRecord.workerFeedbackResult === 2">重新上门</text>
</view>
<view v-if="afterServiceRecord.workerFeedbackResult !== 2">
<text>师傅反馈:</text>
<text v-if="afterServiceRecord.workerFeedbackReasonType === 1">客户原因</text>
<text v-else-if="afterServiceRecord.workerFeedbackReasonType === 2">师傅原因</text>
<text v-else>其他</text>
<text
v-if="afterServiceRecord.workerFeedbackReason">{{"" + afterServiceRecord.workerFeedbackReason}}</text>
</view>
<view class="grid col-3 grid-square flex-sub margin-top-sm">
<view class="bg-img" v-for="(imgObj, imgIndex) in afterServiceRecord.imgsList"
:key="imgIndex" v-if="imgObj.imgUploadBy === 2">
<image :src="imgObj.imgUrl" @tap="viewImage($event, [imgObj.imgUrl])"
:data-url="imgObj.imgUrl" mode="aspectFill"></image>
</view>
</view>
</view>
</view>
<view v-if="afterServiceRecord.customerFinalCheck != null" class="padding-tb-sm solid-top">
<view class='cu-tag bg-main-color radius light'>客户最终确认</view>
<view class="margin-top-xs">{{afterServiceRecord.customerFinalCheck === 1 ? '同意' : '不同意'}}</view>
<view v-if="afterServiceRecord.customerFinalCheck === 0">
<view class="grid col-3 grid-square flex-sub margin-top-sm" v-if="afterServiceRecord.customerDisagreeImages">
<view class="bg-img" v-for="imgUrl in afterServiceRecord.customerDisagreeImages.split(',')" :key="imgUrl">
<image :src="imgUrl" @tap="viewImage($event, [imgUrl])" :data-url="imgUrl" mode="aspectFill"></image>
</view>
</view>
<view class="margin-bottom-xs" v-if="afterServiceRecord.customerDisagreeReason">
<text>不同意理由:{{afterServiceRecord.customerDisagreeReason}}</text>
</view>
<view class="text-red" v-if="afterServiceRecord.customerFinalCheck === 0">订单交由平台协商处理</view>
</view>
<view v-if="afterServiceRecord.customerFinalCheck === 1">
<template v-if="afterServiceRecord.workerFeedbackResult !== 0">
<view v-if="(afterServiceRecord.agreedRefund > 0 || afterServiceRecord.originalRefund > 0) && order.payStatus == 1">
<view>
<text>本单退款,系统已发起按客户支付的帐户原路退回</text>
<text class="text-red">{{afterServiceRecord.agreedRefund || afterServiceRecord.originalRefund}}</text>
<text>元,银行按工作日退款,节假日顺延到帐。遇客户问询,请其耐心等待,到账时会在客户端”客户最终确认“处有到账时间。</text>
</view>
<view>退款支付到账:{{afterServiceRecord.refundApplyTime}}</view>
</view>
<view v-else-if="order.payStatus == 0">
<text>本单已退款{{afterServiceRecord.agreedRefund}}元因未实际支付实退为0元。未退部分继续完成订单及正常支付</text>
</view>
</template>
<view v-else>
<text>本次售后已操作完毕,售后申请已结束!</text>
</view>
</view>
</view> -->
</view>
</view>
</view>
<!-- 发货信息 -->
<view class="bg-white margin-top-sm padding margin-lr-sm" v-if="servDetail.deliveryType">
<view v-if="servDetail.deliveryType">
发货方式:
<text v-if="servDetail.deliveryType == 1">发快递/物流</text>
<text v-if="servDetail.deliveryType == 2">送货上门</text>
<text v-if="servDetail.deliveryType == 3">客户自提</text>
</view>
<view class="margin-top-xs" v-if="servDetail.deliveryImages">
<view class="grid col-3 grid-square flex-sub">
<view class="bg-img" v-for="imgUrl in servDetail.deliveryImages.split(',')" :key="imgUrl">
<image :src="imgUrl" @tap="viewImage($event, [imgUrl])" :data-url="imgUrl" mode="aspectFill">
</image>
</view>
</view>
</view>
<view class="margin-top-xs" v-if="servDetail.deliveryRemark"><text>发货备注:{{servDetail.deliveryRemark}}</text></view>
<view class="margin-top-xs" v-if="servDetail.trackingNumber">
<text>快递单号:{{servDetail.trackingNumber}}</text>
<text class="text-main-color margin-left-sm" @click="getDeliveryFlow(servDetail.trackingNumber)">查询</text>
</view>
</view>
<!-- 交货记录 -->
<view class="bg-white margin-top-sm padding margin-lr-sm" v-if="servDetail.handoverRemark || servDetail.handoverImages">
<view>交货记录</view>
<view class="margin-top-xs" v-if="servDetail.handoverImages">
<view class="grid col-3 grid-square flex-sub">
<view class="bg-img" v-for="imgUrl in servDetail.handoverImages.split(',')" :key="imgUrl">
<image :src="imgUrl" @tap="viewImage($event, [imgUrl])" :data-url="imgUrl" mode="aspectFill">
</image>
</view>
</view>
</view>
<view class="margin-top-xs" v-if="servDetail.deliveryRemark"><text>交货备注{{servDetail.handoverRemark}}</text></view>
</view>
<!-- 订单编码和时间 -->
<view class="bg-white margin-top-sm padding margin-lr-sm">
<view v-if="servDetail.orderDetailCode != null">订单编码:{{servDetail.orderDetailCode}}</view>
<view v-else>订单编码:{{servDetail.orderMasterCode}}</view>
<view class="margin-top-xs" v-if="servDetail.originalOrderMasterCode">原订单编码:{{servDetail.originalOrderMasterCode}}</view>
<view class="margin-top-xs">订单时间:{{servDetail.createTime}}</view>
</view>
<view class="occupancy-bottom-bar"></view>
<!-- 底部操作栏 -->
<view class="cu-bar bg-white tabbar border fixed-bottom-bar" v-if="servDetail.orderDetailId != null && servDetail.orderStatus > 0 && servDetail.orderStatus != 6">
<view class="action" data-popup="orderManage" @click="togglePopup">
<view class="cuIcon-list"></view> 订单管理
</view>
<view v-if="servDetail.orderDetailId != null && servDetail.orderStatus === 2" class="bg-main-color submit" @click="workBegin">{{order.orderType === 0 ? (servDetail.goods.storeService ? '立即服务' : '立即上门') : '立即发货'}}</view>
</view>
<!-- <view class="cu-bar bg-white tabbar border fixed-bottom-bar" v-if="servDetail.orderDetailId != null && servDetail.orderStatus === 2">
<view class="action" data-popup="orderManage" @click="togglePopup">
<view class="cuIcon-list"></view> 订单管理
</view>
<view class="action" data-modal="sendUrgentMsgModal" @click="showModal">
<view class="cuIcon-mail">
<view class="cu-tag badge" v-if="servDetail.talkMsgNum > 0">{{servDetail.talkMsgNum}}</view>
</view>
发送急报
</view>
<view class="action" data-popup="orderManage">
</view>
<view class="action" data-modal="sendUrgentMsgModal">
</view>
<view v-if="servDetail.orderStatus === 2" class="bg-main-color submit" @click="workBegin">立即上门</view>
</view> -->
<uni-popup ref="orderManage" type="bottom" @change="changePopupState">
<view class="bg-white text-center bottom-option-list-bar">
<view v-for="(menu,index) in orderManageMenu" :key="index" class="padding solid-bottom" :data-action="menu.action" :data-modal="menu.modal" @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>
<!-- <apply-extra-charge v-if="applyExtraChargeModal" :show="applyExtraChargeModal" :data="servDetail" @close="applyExtraChargeClose"></apply-extra-charge> -->
<apply-charge v-if="applyChargeModal" ref="applyChargeModal" :show="applyChargeModal" :data="servDetail" @close="applyChargeClose" @callAgain="callApplyChargeAgain"></apply-charge>
<task-process-detail :show="taskProcessDetail" :arr="taskListArr" @close="taskDetailClose"></task-process-detail>
<deliveryFlowDetail :show="showDeliveryFlow" :trackingNumber="showDeliveryFlowTrackingNumber" @close="showDeliveryFlow = false"></deliveryFlowDetail>
<deliverGoods v-if="showDeliverGoods" :show="showDeliverGoods" :data="servDetail" @close="showDeliverGoods = false" @confirmFeedback="showDeliverGoods = false;loadData()"></deliverGoods>
<on-door-immediately v-if="showOnDoorNoticeModal" :show="showOnDoorNoticeModal" :data="servDetail" @close="showOnDoorNoticeModal = false" @confirmFeedback="showOnDoorNoticeModal = false;loadData()"></on-door-immediately>
</view>
</template>
<script>
import productPicked from '@/components/goods-card/product-picked.vue';
import urgentMsg from '@/pages/order-manage/modal/urgent-msg.vue';
// import applyExtraCharge from '@/pages/order-manage/modal/apply-extra-charge.vue';
import applyCharge from '@/pages/order-manage/modal/apply-charge.vue';
import taskProcessDetail from '@/pages/order-manage/modal/task_process_detail.vue'
import deliveryFlowDetail from '@/pages/order-manage/modal/delivery_flow_detail.vue';
import deliverGoods from '@/pages/order-manage/modal/deliver-goods.vue';
import onDoorImmediately from '@/pages/order-manage/modal/on-door-immediately.vue';
import afterServiceRecord from './components/afterServiceRecord.vue';
import afterServiceRecordGoods from './components/afterServiceRecordGoods.vue';
export default {
components: {
productPicked,
urgentMsg,
// applyExtraCharge,
taskProcessDetail,
applyCharge,
deliveryFlowDetail,
deliverGoods,
onDoorImmediately,
afterServiceRecord,
afterServiceRecordGoods
},
data() {
return {
value: ['0'],
order: {},
servDetail: {},
finishRecord4Show: [],
servingColumnHeaders: ['购买型号', '购买量', '待服务'],
servedColumnHeaders: ['购买型号', '购买量', '已服务'],
servingValFields: ['standardName', 'standardNum', 'waitServerNum'],
servedValFields: ['standardName', 'standardNum', 'serverNum'],
ifShowPageMeta: false,
orderManageMenu: [
// {
// name: '申请配件',
// action: 'applyFittings'
// },
// {
// name: '申请附加费',
// action: 'applyExtraCharge',
// modal: 'applyExtraChargeModal'
// },
{
name: '申请费用',
action: 'applyCharge',
modal: 'applyChargeModal'
}
// {
// name: '拍照回单',
// action: ''
// },
// {
// name: '指派/撤回订单',
// action: ''
// },
// {
// name: '申请退单',
// action: 'applyCancelOrder'
// },
],
sendUrgentMsgModal: false,
overtimeRecords: null,
applyExtraChargeModal: false,
taskProcessDetail: false,
taskListArr: [],
applyChargeModal: false,
showDeliveryFlow: false,
showDeliverGoods: false,
showOnDoorNoticeModal: false,
curUserInfo: null,
showDeliveryFlowTrackingNumber: ''
}
},
onLoad(options) {
this.bindEvent();
if (options && options.order) {
this.order = JSON.parse(decodeURIComponent(options.order));
}
console.log(this.order);
if(this.order.orderType === 1) {
this.servingColumnHeaders = ['购买型号', '购买量', '待发货']
this.servedColumnHeaders = ['购买型号', '购买量', '已发货']
}
this.curUserInfo = this.$request.getCurUserInfo();
this.loadData();
},
onUnload() {
this.offBindEvent();
},
methods: {
openShopLocation(item) {
// const gcj02Coord = wgs84ToGcj02(item.shop.longitude, item.shop.latitude)
// const gcj02Coord = wgs84ToGcj02(102.80154676649306, 24.969456922743056)
// const gcj02Coord = [102.82868680950929, 24.864792838337802]
const gcj02Coord = [item.longitude, item.latitude]
wx.openLocation({
latitude: gcj02Coord[1],
longitude: gcj02Coord[0],
scale: 18,
name: item.shopName,
address: `${item.provinceName}${item.cityName}${item.countryName}${item.streetName}${item.address}`
})
},
// 显示任务详情进度框
showTaskDetailMdl() {
this.taskProcessDetail = true
},
taskDetailClose() {
console.log('close close');
this.taskProcessDetail = false
},
bindEvent() {
uni.$on(this.$globalFun.HIDE_MODAL, this.hideModal);
},
offBindEvent() {
uni.$off(this.$globalFun.HIDE_MODAL);
},
async loadData() {
let orderId = null;
let funName = null;
if (this.order.orderDetailId == null) {
// 展示主单信息
orderId = this.order.orderMasterId;
funName = "getOrderMasterDetail";
} else {
// 展示子单信息
orderId = this.order.orderDetailId;
funName = "getOrderDetail";
}
let servDetailRes = await this.$request[funName]({
id: orderId
});
servDetailRes.data.orderType = this.order.orderType;
this.servDetail = servDetailRes.data;
this.getProcessData()
},
async getProcessData() {
const isDetail = this.order.orderDetailId == null
const res = await this.$request.getOrderOperate({
orderId: isDetail ? this.order.orderMasterId : this.order.orderDetailId,
orderType: isDetail ? '01' : '02'
})
this.taskListArr = res.rows;
},
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("申请配件")
},
// applyExtraCharge() {
// console.log("申请charge")
// this.applyExtraChargeModal = true;
// },
// applyExtraChargeClose() {
// this.applyExtraChargeModal = false;
// },
applyCharge() {
this.applyChargeModal = true;
console.log('resetPriceChangedInfo');
this.$nextTick(() => {
this.$refs.applyChargeModal.initPriceData()
})
},
async callApplyChargeAgain() {
await this.loadData();
this.$nextTick(() => {
this.$refs.applyChargeModal.initPriceData()
})
},
applyChargeClose() {
this.applyChargeModal = false;
},
applyCancelOrder() {
let params = {
orderInfo: this.servDetail.mainServOrder
}
console.log(params)
uni.navigateTo({
url: '/pages/order-manage/cancel-order?params=' + encodeURIComponent(JSON.stringify(params))
})
},
async workBegin() {
if(this.order.orderType === 1) {
this.showDeliverGoods = true
} else {
this.showOnDoorNoticeModal = true
// 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
// }
// let res = await this.$request.updateDetailOrder(params);
// if (res && res.code === 0) {
// this.loadData(this.servDetail.orderDetailId);
// uni.showToast({
// icon: 'success'
// })
// }
}
},
showModal(e) {
this[e.currentTarget.dataset.modal] = true;
},
hideModal(e) {
this[e.currentTarget.dataset.modal] = false;
},
viewImage(e, imgList) {
uni.previewImage({
urls: imgList,
current: e.currentTarget.dataset.url
});
},
async makeCustomerPhoneCall(order) {
uni.makePhoneCall({
phoneNumber: order.customerPhone
})
if (order.orderDetailId == null) {
let res = await this.$request.callCustomer({
id: order.orderMasterId,
isCall: '02'
});
} else {
this.$request.callDetailCustomer({
id: order.orderDetailId,
isCall: '02'
});
}
this.loadData();
},
makePhoneCall(phoneNum) {
uni.makePhoneCall({
phoneNumber: phoneNum
})
},
copyData(data) {
uni.setClipboardData({
data: data
});
},
async rejectDetailOrder(order) {
let res = await this.$request.rejectDetailOrder({
id: order.orderDetailId
});
if (res && res.code === 0) {
this.loadData();
uni.showToast({
icon: 'none',
title: '操作成功',
duration: 1000
})
} else {
uni.showToast({
icon: 'none',
title: '操作失败'
})
}
},
async cancelMasterOrder(order) {
let res = await this.$request.rejectMasterOrderWhenAccepted({
id: order.orderMasterId
});
if (res && res.code === 0) {
uni.showToast({
icon: 'none',
title: '撤单成功,请回商品订单管理处理或重派。',
duration: 2000
})
setTimeout(() => {
uni.navigateBack()
}, 3000)
} else {
uni.showToast({
icon: 'none',
title: res.msg,
duration: 2000
})
}
},
// 获取物流信息
getDeliveryFlow(TrackingNumber) {
this.showDeliveryFlow = true;
this.showDeliveryFlowTrackingNumber = TrackingNumber;
}
}
}
</script>
<style scoped>
.bar-first-action {
margin-left: unset !important;
font-size: 30rpx !important;
}
.bottom-option-list-bar {
z-index: 99;
position: relative;
}
</style>