1528 lines
68 KiB
Vue
1528 lines
68 KiB
Vue
<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">接收的任务</block>
|
||
</cu-custom>
|
||
<view class="sticky-bar" :style="[{top: stickyTop + 'px'}]">
|
||
<!-- 条件筛选栏 -->
|
||
<view class="padding-tb bg-white solid-bottom">
|
||
<view class="flex justify-start align-center padding-lr">
|
||
<text class="margin-right-xs inline-lable">全部</text>
|
||
<!-- <my-uni-combox class="inline-combox margin-right-xs" :candidates="stateList" placeholder="请选择"
|
||
v-model="formData.state"></my-uni-combox>
|
||
<my-uni-combox class="inline-combox" :candidates="subStateList" placeholder="请选择"
|
||
v-model="formData.subState"></my-uni-combox> -->
|
||
<!-- 区域筛选picker -->
|
||
<picker class="inline-combox margin-right-xs" :mode="'multiSelector'" @change="regionChange" @columnchange="regionColChange" :value="areaMultiIndex" :range-key="'areaName'" :range="areaList">
|
||
<input class="radius-input" disabled :value="formData.area ? formData.area[0].areaName + '-' + formData.area[1].areaName + '-' + formData.area[2].areaName : ''"
|
||
placeholder="请选择区域"></input>
|
||
</picker>
|
||
<!-- 品类筛选picker -->
|
||
<picker class="inline-combox" :mode="'multiSelector'" @change="categoryChange" @columnchange="categoryColChange" :value="categoryMultiIndex" :range-key="'goodsCategoryName'" :range="categoryList">
|
||
<input class="line-input radius-input" disabled :value="formData.category ? formData.category[0].goodsCategoryName + '-' + formData.category[1].goodsCategoryName + '-' + formData.category[2].goodsCategoryName : ''"
|
||
placeholder="请选择品类"></input>
|
||
</picker>
|
||
</view>
|
||
<view class="flex justify-between align-center margin-top-xs padding-left">
|
||
<view class="flex justify-between align-center" style="flex-basis: 55%;">
|
||
<input class="line-input radius-input margin-right-sm" v-model="formData.orderKeywords"
|
||
placeholder="请输入订单关键字"></input>
|
||
<view class="text-xl text-bold">
|
||
<text class="cuIcon-search margin-right-sm" @click="searchOrder"></text>
|
||
<text class="cuIcon-refresh" @click="resetConditions"></text>
|
||
</view>
|
||
</view>
|
||
<view class="cu-list grid no-border col-2 padding-top-sm bg-white" style="flex-basis: 42%;">
|
||
<view class="cu-item" :class="index==stateCur?'bg-main-color light cur':''" v-for="(item,index) in stateList" :key="index" :data-id="index" @tap="statusSelect" v-if="item.code > 103">
|
||
<view class="margin-bottom-xs">{{item.name}}</view>
|
||
<view v-if="item.code === 105">({{orderStatistics.monitoredOrderNum}})</view>
|
||
<view v-else-if="item.code === 104">({{orderStatistics.shelvedOrderNum}})</view>
|
||
<view v-else>(0)</view>
|
||
</view>
|
||
</view>
|
||
</view>
|
||
</view>
|
||
<!-- 状态分类tab -->
|
||
<view class="cu-list grid no-border col-5 padding-top-sm bg-white">
|
||
<view class="cu-item" :class="index==stateCur?'bg-main-color light cur':''" v-for="(item,index) in stateList" :key="index" :data-id="index" @tap="statusSelect" v-if="item.code <= 103">
|
||
<view class="margin-bottom-xs">{{item.name}}</view>
|
||
<view v-if="item.code === 0">({{orderStatistics.newOrderNum}})</view>
|
||
<view v-else-if="item.code === 101">({{orderStatistics.tomorrowOrderNum}})</view>
|
||
<view v-else-if="item.code === 102">({{orderStatistics.todayOrderNum}})</view>
|
||
<view v-else-if="item.code === 103">({{orderStatistics.overTimeOrderNum}})</view>
|
||
<view v-else>(0)</view>
|
||
</view>
|
||
<!-- <view class="cu-item" :class="stateCur === 0 ? 'bg-main-color light' : ''" :data-id="0" @tap="statusSelect">
|
||
<view class="margin-bottom-xs">超时单</view>
|
||
<view>({{myOrders.summary.overtimeOrderNum}})</view>
|
||
</view>
|
||
<view class="cu-item" :class="stateCur === 1 ? 'bg-main-color light' : ''" :data-id="1" @tap="statusSelect">
|
||
<view class="margin-bottom-xs">今日单</view>
|
||
<view>({{myOrders.summary.todayOrderNum}})</view>
|
||
</view>
|
||
<view class="cu-item" :class="stateCur === 2 ? 'bg-main-color light' : ''" :data-id="2" @tap="statusSelect">
|
||
<view class="margin-bottom-xs">明日单</view>
|
||
<view>({{myOrders.summary.tomorrowOrderNum}})</view>
|
||
</view>
|
||
<view class="cu-item" :class="stateCur === 3 ? 'bg-main-color light' : ''" :data-id="3" @tap="statusSelect">
|
||
<view class="margin-bottom-xs">急报单</view>
|
||
<view>({{myOrders.summary.urgentMsgOrderNum}})</view>
|
||
</view>
|
||
<view class="cu-item" :class="stateCur === 0 ? 'bg-main-color light' : ''" :data-id="4" @tap="statusSelect">
|
||
<view class="margin-bottom-xs">新订单</view>
|
||
<view>({{myOrders.summary.newOrderNum}})</view>
|
||
</view> -->
|
||
</view>
|
||
<!-- 子状态分类tab -->
|
||
<scroll-view scroll-x class="bg-white nav text-center" :scroll-with-animation="true" :scroll-left="scrollLeft">
|
||
<view class="cu-item" :class="index==tabCur?'text-main-color cur':''" v-for="(item,index) in subStateList"
|
||
:key="index" @tap="tabSelect" :data-id="index">
|
||
<text class="margin-right-xs">{{item.name}}</text>
|
||
<text v-if="item.code === 1">({{orderStatistics.planOrderNum}})</text>
|
||
<text v-else-if="item.code === 2">({{orderStatistics.waitServOrderNum}})</text>
|
||
<text v-else-if="item.code === 3">({{orderStatistics.servingOrderNum}})</text>
|
||
<text v-else-if="item.code === 4">({{orderStatistics.waitSureOrderNum}})</text>
|
||
<text v-else-if="item.code === 5 && item.isChild">({{orderStatistics.finishedOrderNum}})</text>
|
||
<text v-else-if="item.code === 5 && !item.isChild">({{orderStatistics.finishedMasterOrderNum}})</text>
|
||
<text v-else-if="item.other === 0">({{orderStatistics.afterListNum}})</text>
|
||
<text v-else>(0)</text>
|
||
</view>
|
||
</scroll-view>
|
||
</view>
|
||
<!-- tab content -->
|
||
<view class="padding bg-white margin-top-sm margin-lr-sm" v-for="(order, index) in orderList" :key="index">
|
||
<view class="flex justify-between">
|
||
<view class="text-lg text-bold text-cut">{{order.goodsName}}</view>
|
||
<!-- 不同状态订单使用不同角标 -->
|
||
<view v-if="([2, 5].indexOf(stateCur) >= 0 || tabCur === 4) && order.orderDetailId == null" class="right-tag padding-lr-sm padding-tb-xs bg-orange">监</view>
|
||
<view v-else-if="order.orderStatus === 0" class="right-tag padding-lr-sm padding-tb-xs bg-cyan">新</view>
|
||
<view v-else-if="order.orderStatus === 1" class="right-tag padding-lr-sm padding-tb-xs bg-main-color">未</view>
|
||
<view v-else-if="order.orderStatus === 2" class="right-tag padding-lr-sm padding-tb-xs bg-yellow">待</view>
|
||
<view v-else-if="order.orderStatus === 3" class="right-tag padding-lr-sm padding-tb-xs bg-purple">服</view>
|
||
<view v-else-if="order.orderStatus === 4" class="right-tag padding-lr-sm padding-tb-xs bg-orange">确</view>
|
||
<view v-else-if="order.orderStatus === 5" class="right-tag padding-lr-sm padding-tb-xs bg-green">完</view>
|
||
</view>
|
||
<view class="float-left">
|
||
<view v-if="order.goodsBrand" class='cu-tag margin-right-xs radius line-main-color margin-top-xs'>{{order.goodsBrand}}</view>
|
||
<view v-if="order.goodsSpecification" class='cu-tag margin-right-xs radius line-main-color margin-top-xs'>{{order.goodsSpecification}}</view>
|
||
</view>
|
||
<view class="float-left">
|
||
<view v-if="order.payType === 1" class='cu-tag margin-right-xs radius line-main-color margin-top-xs'>到付单</view>
|
||
<view v-if="order.changeMoney || order.payStatus != 1" class='cu-tag margin-right-xs radius line-red margin-top-xs'>有待付款</view>
|
||
<view v-else class='cu-tag margin-right-xs radius line-red margin-top-xs'>款已付清</view>
|
||
|
||
<view v-if="task.consultMode === '01'" class='cu-tag margin-right-xs radius line-main-color margin-top-xs'>合约订单</view>
|
||
</view>
|
||
<view>
|
||
<view v-if="order.timeout == 1" 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 && order.isCall === '1'" 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="order.orderStatus === 2" class='cu-tag margin-right-xs radius line-red margin-top-xs'>超时未上门</view>
|
||
<view v-else-if="order.orderStatus === 3" class='cu-tag margin-right-xs radius line-red margin-top-xs'>超时未完单</view>
|
||
</view>
|
||
<!-- <view class="float-left" v-else-if="order.orderTimeoutRecords" v-for="(timeoutRecord, recordIndex) in order.orderTimeoutRecords">
|
||
<view v-if="timeoutRecord.orderStatus === 0" class='cu-tag margin-right-xs radius line-red margin-top-xs'>超时未接单</view>
|
||
<view v-else-if="timeoutRecord.orderStatus === 1" class='cu-tag margin-right-xs radius line-red margin-top-xs'>超时未预约</view>
|
||
<view v-else-if="timeoutRecord.orderStatus === 2" class='cu-tag margin-right-xs radius line-red margin-top-xs'>超时未上门</view>
|
||
<view v-else-if="timeoutRecord.orderStatus === 3" class='cu-tag margin-right-xs radius line-red margin-top-xs'>超时未完单</view>
|
||
</view> -->
|
||
</view>
|
||
<view class="float-left" v-for="(afterServiceRecord, afterServiceRecordIndex) in order.afterServiceRecordList" :key="afterServiceRecord.id">
|
||
<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" class='cu-tag margin-right-xs radius line-main-color margin-top-xs'>售后已完成</view>
|
||
</view>
|
||
<view class="float-clear"></view>
|
||
<view class="margin-top-sm">
|
||
<text class="text-main-color text-lg margin-right-xs"><text class="cuIcon-people"></text></text>
|
||
<text>姓名:{{order.customerName}}</text>
|
||
</view>
|
||
<view class="margin-top-sm">
|
||
<text class="text-main-color text-lg margin-right-xs"><text class="cuIcon-location"></text></text>
|
||
<text class="margin-right-xs">{{order.address}}</text>
|
||
<text class="text-lg" @tap="copyData(order.address)"><text class="cuIcon-copy"></text></text>
|
||
</view>
|
||
<view class="margin-top-sm">
|
||
<text class="text-main-color text-lg margin-right-xs"><text class="cuIcon-time"></text></text>
|
||
<text v-if="order.expectTimeEndFront">服务时间:{{order.expectTimeStartFront + '~' + order.expectTimeEndFront}}</text>
|
||
<text v-else>服务时间:{{order.expectTimeStartFront}}</text>
|
||
</view>
|
||
<view class="margin-top-sm" v-if="order.orderDetailId != null && order.orderStatus > 2">
|
||
<text class="text-main-color text-lg margin-right-xs"><text class="cuIcon-time"></text></text>
|
||
<text>上门时间:{{order.workBeginTime}}</text>
|
||
</view>
|
||
<view class="margin-top-sm flex justify-start align-center" v-if="order.orderStatus === 2">
|
||
<text class="text-main-color text-lg margin-right-xs"><text class="cuIcon-repair"></text></text>
|
||
<text>距上门:</text>
|
||
<uni-countdown :show-colon="false" :backgroundColor="'#eee'"
|
||
:day="$dateUtil.countDownDiff(order.expectTimeStart).day"
|
||
:hour="$dateUtil.countDownDiff(order.expectTimeStart).hour"
|
||
:minute="$dateUtil.countDownDiff(order.expectTimeStart).min"
|
||
:second="$dateUtil.countDownDiff(order.expectTimeStart).seconds">
|
||
</uni-countdown>
|
||
</view>
|
||
<view class="margin-top-sm" v-if="order.orderDetailId != null && order.orderStatus > 3">
|
||
<text class="text-main-color text-lg margin-right-xs"><text class="cuIcon-time"></text></text>
|
||
<text>完成时间:{{order.workFinishTime}}</text>
|
||
</view>
|
||
<view class="margin-top-sm flex justify-start align-center" v-if="order.orderDetailId != null && tabCur === 3 && order.drawCashStatus === 0 && $dateUtil.addHours(order.workFinishTime, 1).getTime() > new Date().getTime()">
|
||
<text class="text-main-color text-lg margin-right-xs"><text class="cuIcon-time"></text></text>
|
||
<text>距完单分帐:</text>
|
||
<uni-countdown :show-colon="false" :backgroundColor="'#e35b33'" :color="'#faf3f0'"
|
||
:day="$dateUtil.countDownDiff($dateUtil.addHours(order.workFinishTime, 1)).day"
|
||
:hour="$dateUtil.countDownDiff($dateUtil.addHours(order.workFinishTime, 1)).hour"
|
||
:minute="$dateUtil.countDownDiff($dateUtil.addHours(order.workFinishTime, 1)).min"
|
||
:second="$dateUtil.countDownDiff($dateUtil.addHours(order.workFinishTime, 1)).seconds">
|
||
</uni-countdown>
|
||
</view>
|
||
<view class="margin-top-sm text-red" @click="normalShowModalByRef('ledgerAccountRemark')"
|
||
v-if="order.orderDetailId != null && tabCur === 3 && order.drawCashStatus === 0 && $dateUtil.addHours(order.workFinishTime, 1).getTime() < new Date().getTime()">
|
||
<text class="text-lg margin-right-xs"><text class="cuIcon-notice"></text></text>
|
||
<text>银联发起(T+1)支付中,正在刷新...</text>
|
||
<text class="text-main-color margin-left-sm">详情</text>
|
||
</view>
|
||
<view class="margin-top-sm text-red" @click="normalShowModalByRef('ledgerAccountRemark')"
|
||
v-if="order.orderDetailId != null && order.drawCashStatus === 1">
|
||
<text class="text-lg margin-right-xs"><text class="cuIcon-notice"></text></text>
|
||
<text>银联发起(T+1)支付中:{{order.drawCashTime}}</text>
|
||
<text class="text-main-color margin-left-sm">详情</text>
|
||
</view>
|
||
<!-- <view class="margin-top-sm text-red" v-if="order.orderDetailId != null && order.drawCashStatus === 2">
|
||
<text class="text-lg margin-right-xs"><text class="cuIcon-notice"></text></text>
|
||
<text>本单银联已确认货款结算完毕(订单支付完成),款项已到达或即将到达您所绑定帐户,同意退款的需同意后您线下与客户另行操作,系统无法提供原路返回退款!</text>
|
||
</view> -->
|
||
<view class="margin-top-sm text-red" v-if="order.orderDetailId != null && order.drawCashStatus === 2">
|
||
<text class="text-lg margin-right-xs"><text class="cuIcon-notice"></text></text>
|
||
<text>货款分账成功:{{order.arrivalTime}}</text>
|
||
</view>
|
||
<view class="margin-top-sm text-red" v-if="order.orderDetailId != null && order.drawCashStatus === -1">
|
||
<text class="text-lg margin-right-xs"><text class="cuIcon-notice"></text></text>
|
||
<text>提现失败</text>
|
||
</view>
|
||
<!-- 不同状态订单支持不同操作按钮 -->
|
||
<view v-if="order.orderStatus === 0">
|
||
<!-- <button class="cu-btn bg-main-color margin-right-xs shadow-blur margin-top-sm" data-popup="dispatchOrder" @click="getCanAssignList(order)" @tap="togglePopup($event, order)">派单</button>
|
||
<button class="cu-btn bg-main-color margin-right-xs shadow-blur margin-top-sm">改价</button>
|
||
<button class="cu-btn bg-main-color margin-right-xs shadow-blur margin-top-sm">转发</button> -->
|
||
<button class="cu-btn bg-main-color margin-right-xs shadow-blur margin-top-sm" @click="showServOrderDetail(order)">查看</button>
|
||
<button class="cu-btn bg-main-color margin-right-xs shadow-blur margin-top-sm" data-modal="showAcceptOrderNoticeModal" @click="acceptOrder($event, order, order.orderMasterId, order.orderMasterCode, 1, 'updateMasterOrder')" v-if="order.orderDetailId == null">确认接单</button>
|
||
<button class="cu-btn bg-main-color margin-right-xs shadow-blur margin-top-sm" data-modal="showAcceptOrderNoticeModal" @click="acceptOrder($event, order, order.orderDetailId, order.orderDetailCode, 1, 'updateDetailOrder')" v-else>确认接单</button>
|
||
<button class="cu-btn bg-main-color margin-right-xs shadow-blur margin-top-sm" v-if="order.orderDetailId == null" @click="rejectMasterOrder(order)">拒绝接单</button>
|
||
<button class="cu-btn bg-main-color margin-right-xs shadow-blur margin-top-sm" v-else @click="rejectDetailOrder(order)">拒绝接单</button>
|
||
</view>
|
||
<view v-if="order.orderStatus === 1 && tabCur === 0">
|
||
<button class="cu-btn bg-main-color margin-right-xs shadow-blur margin-top-sm" @click="showServOrderDetail(order)">查看</button>
|
||
<button class="cu-btn bg-main-color margin-right-xs shadow-blur margin-top-sm" data-popup="dispatchOrderPopup" @click="getCanAssignList(order)" @tap="togglePopup($event, order)" v-show="order.orderDetailId == null">派单</button>
|
||
<button class="cu-btn bg-main-color margin-right-xs shadow-blur margin-top-sm" @click="assignWork2MySelf(order)" v-show="order.orderDetailId == null">自己承接</button>
|
||
<button class="cu-btn bg-main-color margin-right-xs shadow-blur margin-top-sm" data-modal="showTimeArrangeModal" @tap="showModal($event, order)">预约时间</button>
|
||
<button class="cu-btn bg-main-color margin-right-xs shadow-blur margin-top-sm" v-if="order.orderDetailId != null" @click="rejectDetailOrder(order)">退单</button>
|
||
<button class="cu-btn bg-main-color margin-right-xs shadow-blur margin-top-sm" v-if="order.orderDetailId == null" @click="rejectMasterOrderWhenAccepted(order)">退单</button>
|
||
</view>
|
||
<view v-else-if="order.orderStatus === 1">
|
||
<button class="cu-btn bg-main-color margin-right-xs shadow-blur margin-top-sm" @click="showServOrderDetail(order)">查看</button>
|
||
</view>
|
||
<view v-if="order.orderStatus === 2">
|
||
<button class="cu-btn bg-main-color margin-right-xs shadow-blur margin-top-sm" @click="showServOrderDetail(order)">查看</button>
|
||
<button class="cu-btn bg-main-color margin-right-xs shadow-blur margin-top-sm" @click="makePhoneCall(order.customerPhone)">联系客户</button>
|
||
<button class="cu-btn bg-main-color margin-right-xs shadow-blur margin-top-sm" data-modal="showEditTimeArrangeModal" @tap="showModal($event, order)" v-show="order.orderDetailId != null">修改时间</button>
|
||
<button class="cu-btn bg-main-color margin-right-xs shadow-blur margin-top-sm" data-modal="showOnDoorNoticeModal" @tap="showModal($event, order)" v-show="order.orderDetailId != null">立即上门</button>
|
||
<button class="cu-btn bg-main-color margin-right-xs shadow-blur margin-top-sm" v-if="order.orderDetailId != null" @click="rejectDetailOrder(order)">退单</button>
|
||
</view>
|
||
<view v-if="order.orderStatus === 3">
|
||
<button class="cu-btn bg-main-color margin-right-xs shadow-blur margin-top-sm" @click="showServOrderDetail(order)">查看</button>
|
||
<button class="cu-btn bg-main-color margin-right-xs shadow-blur margin-top-sm" @click="recordClockInLocation(order)" v-if="hasAuthLocation && order.orderDetailId != null && !order.clockInLocation">打卡到达</button>
|
||
<button class="cu-btn bg-main-color margin-right-xs shadow-blur margin-top-sm" open-type="openSetting" @opensetting="authLocationCallback" v-else-if="order.orderDetailId != null && !order.clockInLocation">授权打卡</button>
|
||
<button class="cu-btn bg-main-color margin-right-xs shadow-blur margin-top-sm" @click = "changePrice($event, order)" data-ref="newServPriceOffline" data-modal="showNewServPriceOfflineModal" v-show="order.orderDetailId != null && order.clockInLocation && order.payType === 1">报价/完单</button>
|
||
<button class="cu-btn bg-main-color margin-right-xs shadow-blur margin-top-sm" @click = "changePrice($event, order)" data-ref="newServPriceOnline" data-modal="showNewServPriceOnlineModal" v-show="order.orderDetailId != null && order.clockInLocation && order.payType === 0">报价/完单</button>
|
||
<!-- <button class="cu-btn bg-main-color margin-right-xs shadow-blur margin-top-sm" @click = "changePrice($event, order)" data-ref="newServPriceOffline" data-modal="showNewServPriceOfflineModal" v-show="order.orderDetailId != null && order.payType === 1">报价/完单</button> -->
|
||
<!-- <button class="cu-btn bg-main-color margin-right-xs shadow-blur margin-top-sm" @click = "changePrice($event, order)" data-ref="newServPriceOnline" data-modal="showNewServPriceOnlineModal" v-show="order.orderDetailId != null && order.payType === 0">报价/完单</button> -->
|
||
<button class="cu-btn bg-main-color margin-right-xs shadow-blur margin-top-sm" @click="makePhoneCall(order.customerPhone)">联系客户</button>
|
||
<button class="cu-btn bg-main-color margin-right-xs shadow-blur margin-top-sm" data-modal="showEditTimeArrangeModal" @tap="showModal($event, order)" v-show="order.orderDetailId != null">重新排期</button>
|
||
<!-- <button class="cu-btn bg-main-color margin-right-xs shadow-blur margin-top-sm" @tap="finishOrder(order)" v-if="order.payStatus === 1" v-show="order.orderDetailId != null">发起完单</button> -->
|
||
<!-- <button class="cu-btn bg-main-color margin-right-xs shadow-blur margin-top-sm" data-modal="showPayQrcodeModal" v-if="order.payStatus === 0" @tap="makePayQrcode($event, order)" v-show="order.orderDetailId != null">生成收款码</button> -->
|
||
<button class="cu-btn bg-main-color margin-right-xs shadow-blur margin-top-sm" v-if="order.orderDetailId != null" @click="rejectDetailOrder(order)">退单</button>
|
||
</view>
|
||
<view v-if="order.orderStatus === 4 || order.orderStatus === 5">
|
||
<button class="cu-btn bg-main-color margin-right-xs shadow-blur margin-top-sm" @click="showServOrderDetail(order)">查看</button>
|
||
</view>
|
||
<!-- <view v-if="order.orderStatus === 'afterSaleService'">
|
||
<button class="cu-btn bg-main-color margin-right-xs shadow-blur margin-top-sm" @tap="makePhoneCall(order.customerPhone)">联系客户</button>
|
||
<button class="cu-btn bg-main-color margin-right-xs shadow-blur margin-top-sm" data-modal="showEditTimeArrangeModal" @tap="showModal($event, order)">修改时间</button>
|
||
<button class="cu-btn bg-main-color margin-right-xs shadow-blur margin-top-sm">立即上门</button>
|
||
</view> -->
|
||
<view v-if="order.afterServiceRecordList && order.afterServiceRecordList.length && order.orderDetailId != null" class="bg-white margin-top-sm">
|
||
<view v-for="(afterServiceRecord, afterServiceRecordIndex) in order.afterServiceRecordList" :key="afterServiceRecord.id">
|
||
<view v-if="afterServiceRecord.createBy == 1" class="padding-tb solid-top">
|
||
<view class='cu-tag bg-main-color radius light'>售后发起中</view>
|
||
<view v-if="afterServiceRecord.operType === 1">
|
||
<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.refund">{{afterServiceRecord.refund}}</text>
|
||
<text v-else-if="order.payMoney">{{order.payMoney}}</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>
|
||
<view v-else-if="afterServiceRecord.operType === 2">
|
||
<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>
|
||
<text>完成操作:点击“操作处理”提交由客服回访!</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 class="flex justify-end align-end margin-tb-sm" v-if="!afterServiceRecord.updateBy">
|
||
<button class="cu-btn sm bg-yellow margin-right-sm" @tap="showModalByRef('sure2Revisit', order, null)">上门重做</button>
|
||
<button class="cu-btn sm bg-yellow margin-right-sm" data-modal="rejectAfterSale" @tap="showModal($event, order)">拒绝处理</button>
|
||
<button class="cu-btn sm bg-yellow margin-right-sm" data-modal="agreeAfterSale" @tap="showModal($event, order)">操作处理</button>
|
||
</view>
|
||
</view>
|
||
<view v-if="afterServiceRecord.updateBy == 2" class="padding-tb 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 v-if="afterServiceRecord.agreedRefund">{{afterServiceRecord.agreedRefund}}</text>
|
||
<text v-else-if="afterServiceRecord.refund">{{afterServiceRecord.refund}}</text>
|
||
<text v-else-if="order.payMoney">{{order.payMoney}}</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-if="afterServiceRecord.workerFeedbackReasonType === 3">其他</text>
|
||
<text v-if="afterServiceRecord.workerFeedbackReason">
|
||
<text v-if="afterServiceRecord.workerFeedbackReasonType">,</text>
|
||
{{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-if="afterServiceRecord.workerFeedbackReasonType === 3">其他</text>
|
||
<text v-if="afterServiceRecord.workerFeedbackReason">
|
||
<text v-if="afterServiceRecord.workerFeedbackReasonType">,</text>
|
||
{{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 solid-top">
|
||
<view class='cu-tag bg-main-color radius light'>客户最终确认</view>
|
||
<view class="margin-top-xs">{{afterServiceRecord.customerFinalCheck === 1 ? '同意' : '不同意'}}</view>
|
||
<view class="text-red" v-if="afterServiceRecord.customerFinalCheck === 0">订单交由平台协商处理</view>
|
||
<view v-else-if="afterServiceRecord.customerFinalCheck === 1">
|
||
<view v-if="afterServiceRecord.originalRefund > 0">
|
||
<view>
|
||
<text>本单退款,系统已发起按客户支付的帐户原路退回</text>
|
||
<text class="text-red">{{afterServiceRecord.originalRefund}}</text>
|
||
<text>元,银行按工作日退款,节假日顺延到帐。遇客户问询,请其耐心等待,到账时会在客户端”客户最终确认“处有到账时间。</text>
|
||
</view>
|
||
<view>退款支付到账:{{afterServiceRecord.refundApplyTime}}</view>
|
||
</view>
|
||
<view v-else-if="afterServiceRecord.originalRefund == 0 && order.payStatus == 0">
|
||
<text>本单未支付,实际退回0.00元</text>
|
||
</view>
|
||
</view>
|
||
</view>
|
||
</view>
|
||
</view>
|
||
<view class="margin-top-sm solid-top padding-top-sm" v-if="Boolean(order.customerRemark)">
|
||
<text class="text-main-color text-lg margin-right-xs"><text class="cuIcon-comment"></text></text>
|
||
<text>备注:{{order.customerRemark}}</text>
|
||
</view>
|
||
</view>
|
||
<load-status-bar v-show="[5,6].indexOf(tabCur) >= 0 || (stateCur != null && stateList[stateCur].code === 105)" ref="loadStatusBar" @loadMore="loadMasterOrderPage"></load-status-bar>
|
||
<view v-show="tabCur !== 5 && stateCur !== 0" class="cu-tabbar-height"></view>
|
||
<!-- 模态框 -->
|
||
<agree-after-sale v-if="agreeAfterSale" :show="agreeAfterSale" :data="curOrder" @confirmFeedback="reloadMasterOrderPage" @close="agreeAfterSale = false"></agree-after-sale>
|
||
<reject-after-sale v-if="rejectAfterSale" :show="rejectAfterSale" :data="curOrder" @confirmFeedback="reloadMasterOrderPage" @close="rejectAfterSale = false"></reject-after-sale>
|
||
<time-arrange v-if="showTimeArrangeModal" :show="showTimeArrangeModal" :data="curOrder" :curDate="curDate" @showArrangeFailTime="showArrangeFailTime" @editServTime="editServTime" @close="showTimeArrangeModal = false"></time-arrange>
|
||
<time-arrange-fail v-if="showArrangeFailTimeModal" :show="showArrangeFailTimeModal" :data="curOrder" @close="showArrangeFailTimeModal = false"></time-arrange-fail>
|
||
<new-serv-price-online v-if="showNewServPriceOnlineModal" ref="newServPriceOnline" :show="showNewServPriceOnlineModal" :data="curOrder" @finishOrder="finishOrder" @close="showNewServPriceOnlineModal = false"></new-serv-price-online>
|
||
<new-serv-price-offline v-if="showNewServPriceOfflineModal" ref="newServPriceOffline" :show="showNewServPriceOfflineModal" :data="curOrder" @finishOrder="finishOrder" @close="showNewServPriceOfflineModal = false"></new-serv-price-offline>
|
||
<pay-qrcode v-if="showPayQrcodeModal" ref="payQrcode" :show="showPayQrcodeModal" :data="curOrder" @finishQrPay="finishQrPay"></pay-qrcode>
|
||
<edit-time-arrange v-if="showEditTimeArrangeModal" :show="showEditTimeArrangeModal" :data="curOrder" :curDate="curDate" @showArrangeFailTime="showArrangeFailTime" @editServTime="editServTime" :ifRollback2WS="true" @close="showEditTimeArrangeModal = false"></edit-time-arrange>
|
||
<urgent-msg v-if="sendUrgentMsgModal" :show="sendUrgentMsgModal" @hideModal="sendUrgentMsgModal = false"></urgent-msg>
|
||
<pic-modal ref="showPicModal" :imgList="picModalImgList"></pic-modal>
|
||
<on-door-immediately v-if="showOnDoorNoticeModal" :show="showOnDoorNoticeModal" :data="curOrder" @close="showOnDoorNoticeModal = false" @confirmFeedback="reloadMasterOrderPage"></on-door-immediately>
|
||
<accept-order-notice v-if="showAcceptOrderNoticeModal" :show="showAcceptOrderNoticeModal" :data="curOrder" @close="showAcceptOrderNoticeModal = false" @confirmFeedback="setCurTab(0)"></accept-order-notice>
|
||
<confirm-modal ref="ledgerAccountRemark" :showCancel="false" :showConfirm="true">
|
||
<block slot="contentView">
|
||
<view class="text-left">
|
||
<view class="text-bold">T+1银联结算动态:</view>
|
||
<view>订单款项已进入发起银联分帐付款指令中,请确保您的银行帐户已绑定(银联支持任意个人银行帐户绑定结算)。根据支付规则,分帐支付按T+1结算方式(即按发起时间,次日内清算机构【银联】根据清算信息,完成支付到帐,如遇节假日,则节假日后的次日内完成支付到帐)!</view>
|
||
</view>
|
||
</block>
|
||
</confirm-modal>
|
||
<confirm-modal ref="sure2Revisit" :content="'您选择上门重做/补做,请先与客户协商一致,并重新排单!选择上门重做则客户发起退款的默认退额为0元。'" :cancelMsg="'退出'" @confirm="revisit" @cancel="hideModal"></confirm-modal>
|
||
|
||
<!-- popup -->
|
||
<uni-popup ref="dispatchOrderPopup" type="bottom" @change="changePopupState">
|
||
<view class="text-bold text-gray text-lg text-center left-top-sm-bar" data-popup="dispatchOrderPopup" @click="togglePopup"><text
|
||
class="cuIcon-close"></text></view>
|
||
<view class="bg-white padding" style="padding-top: 74rpx; min-height: 1000rpx;">
|
||
<dispatch-order ref="dispatchOrder" v-if="myTeamMembers && myTeamMembers.length > 0" @assignWork="assignWork" :members="myTeamMembers" :totalMoney="curOrder.serverMoney"></dispatch-order>
|
||
<view v-else class="align-center-view text-xl">无可指派的师傅</view>
|
||
</view>
|
||
<!-- 底部占位 -->
|
||
<view class="cu-bar bg-white fixed-bottom-bar"></view>
|
||
</uni-popup>
|
||
<!-- 账户及实名弹窗 -->
|
||
<vertify-bank-bind ref="vertifyBankBind"></vertify-bank-bind>
|
||
<vertify-certify ref="vertifyCertify"></vertify-certify>
|
||
</view>
|
||
</template>
|
||
|
||
<script>
|
||
import myUniCombox from '@/components/uni-combox/my-uni-combox.vue';
|
||
import timeArrange from '@/pages/order-manage/modal/time-arrange.vue';
|
||
import timeArrangeFail from '@/pages/order-manage/modal/time-arrange-fail.vue';
|
||
import editTimeArrange from '@/pages/order-manage/modal/edit-time-arrange.vue';
|
||
import dispatchOrder from '@/pages/order-manage/dispatch-order.vue';
|
||
import newServPriceOnline from '@/pages/order-manage/modal/new-serv-price-online.vue';
|
||
import newServPriceOffline from '@/pages/order-manage/modal/new-serv-price-offline.vue';
|
||
import payQrcode from '@/pages/order-manage/modal/pay-qrcode.vue';
|
||
import urgentMsg from '@/pages/order-manage/modal/urgent-msg.vue';
|
||
import picModal from '@/components/modal/pic-modal.vue';
|
||
import loadStatusBar from '@/components/custom-bar/load-status-bar.vue';
|
||
import agreeAfterSale from '@/pages/order-manage/modal/agree-after-sale.vue';
|
||
import rejectAfterSale from '@/pages/order-manage/modal/reject-after-sale.vue';
|
||
import onDoorImmediately from '@/pages/order-manage/modal/on-door-immediately.vue';
|
||
import acceptOrderNotice from '@/pages/order-manage/modal/accept-order-notice.vue';
|
||
|
||
export default {
|
||
components: {
|
||
myUniCombox,
|
||
timeArrange,
|
||
timeArrangeFail,
|
||
editTimeArrange,
|
||
dispatchOrder,
|
||
newServPriceOnline,
|
||
newServPriceOffline,
|
||
payQrcode,
|
||
urgentMsg,
|
||
picModal,
|
||
loadStatusBar,
|
||
agreeAfterSale,
|
||
rejectAfterSale,
|
||
onDoorImmediately,
|
||
acceptOrderNotice
|
||
},
|
||
data() {
|
||
return {
|
||
formData: {
|
||
category: null,
|
||
area: null,
|
||
orderKeywords: ''
|
||
},
|
||
areaList: [],
|
||
areaMultiIndex: [0, 0, 0],
|
||
categoryList: [],
|
||
categoryMultiIndex: [0, 0, 0],
|
||
stateList: [{
|
||
code: 105,
|
||
name: '监控单'
|
||
}, {
|
||
code: 104,
|
||
name: '搁置单'
|
||
}, {
|
||
code: 103,
|
||
name: '超时单'
|
||
}, {
|
||
code: 102,
|
||
name: '今日单'
|
||
}, {
|
||
code: 101,
|
||
name: '明日单'
|
||
}, {
|
||
code: 100,
|
||
name: '急报单'
|
||
}, {
|
||
code: 0,
|
||
name: '新订单'
|
||
}],
|
||
subStateList: [{
|
||
code: 1,
|
||
name: '未约/未排'
|
||
}, {
|
||
code: 2,
|
||
name: '待上门'
|
||
}, {
|
||
code: 3,
|
||
name: '服务中'
|
||
}, {
|
||
code: 4,
|
||
name: '确认中'
|
||
},
|
||
// {
|
||
// code: '-',
|
||
// name: '售后中'
|
||
// },
|
||
{
|
||
other: 0,
|
||
name: '售后中',
|
||
}, {
|
||
code: 5,
|
||
name: '已完成/子',
|
||
isChild: true
|
||
}, {
|
||
code: 5,
|
||
name: '已完成/主',
|
||
isChild: false
|
||
}],
|
||
myOrders: {},
|
||
orderList: [],
|
||
// pageParams: [],
|
||
pageNum: 1,
|
||
pageSize: 0,
|
||
curOrder: {},
|
||
myTeamMembers: [],
|
||
scrollLeft: 0,
|
||
stickyTop: this.CustomBar,
|
||
tabCur: 0,
|
||
stateCur: null,
|
||
showTimeArrangeModal: false,
|
||
showArrangeFailTimeModal: false,
|
||
showNewServPriceOnlineModal: false,
|
||
showNewServPriceOfflineModal: false,
|
||
showPayQrcodeModal: false,
|
||
showEditTimeArrangeModal: false,
|
||
showOnDoorNoticeModal: false,
|
||
showAcceptOrderNoticeModal: false,
|
||
sendUrgentMsgModal: false,
|
||
agreeAfterSale: false,
|
||
rejectAfterSale: false,
|
||
ifShowPageMeta: false,
|
||
picModalImgList: [],
|
||
curDate: '',
|
||
curUserInfo: {},
|
||
orderStatistics: {},
|
||
hasAuthLocation: true
|
||
}
|
||
},
|
||
onLoad(option) {
|
||
if (option && option.tabCur) {
|
||
this.tabCur = option.tabCur;
|
||
}
|
||
this.loadData();
|
||
this.bindEvent();
|
||
},
|
||
onShow() {
|
||
if(this.orderList.length){
|
||
this.reloadMasterOrderPage();
|
||
}
|
||
},
|
||
onUnload() {
|
||
this.offBindEvent();
|
||
},
|
||
methods: {
|
||
async loadData() {
|
||
// 获取当前登录用户信息
|
||
this.curUserInfo = this.$request.getCurUserInfo();
|
||
// let myTeamInfo = await this.$api.data('myTeamInfo');
|
||
// this.myTeamMembers = myTeamInfo.members;
|
||
this.myOrders = await this.$api.data('myOrders');
|
||
// this.orderList = this.myOrders.orderList;
|
||
// this.areaList = await this.$api.data('areaList');
|
||
// this.categoryList = await this.$api.data('categoryList');
|
||
|
||
// 初始化分页参数
|
||
// for(let i = 0; i < this.subStateList.length; i++) {
|
||
// this.pageParams.push({
|
||
// pageNum: 0
|
||
// });
|
||
// }
|
||
// 初始化订单列表
|
||
this.loadMasterOrderPage({
|
||
orderStatus: this.subStateList[0].code
|
||
});
|
||
// 初始化品类及区域列表
|
||
this.loadCategoryList();
|
||
this.loadRegionList();
|
||
// 初始化指派成员
|
||
this.loadTeamMembers();
|
||
// 订单统计
|
||
this.loadOrderStatistics();
|
||
},
|
||
reloadMasterOrderPage(params = {}) {
|
||
// this.pageParams = [];
|
||
// for(let i = 0; i < this.subStateList.length; i++) {
|
||
// this.pageParams.push({
|
||
// pageNum: 0
|
||
// });
|
||
// }
|
||
this.pageNum = 1;
|
||
this.orderList = [];
|
||
// this.$refs.loadStatusBar.showLoadMore();
|
||
this.loadMasterOrderPage();
|
||
// 订单统计
|
||
this.loadOrderStatistics();
|
||
},
|
||
async loadMasterOrderPage(params = {}) {
|
||
// 公共条件
|
||
params.shelveStatus = 0;
|
||
params.goodsName = this.formData.orderKeywords;
|
||
params.countryId = this.formData.area && this.formData.area.length > 2 ? this.formData.area[2].areaId : null;
|
||
params.goodsCategoryId = this.formData.category && this.formData.category.length > 2 ? this.formData.category[2].goodsCategoryId : null;
|
||
params.orderByColumn = "updateTime";
|
||
params.isAsc = "desc";
|
||
// 状态
|
||
if (this.tabCur != null) {
|
||
params.orderStatus = this.subStateList[this.tabCur].code;
|
||
} else if (this.stateCur != null && (this.stateList[this.stateCur].code === 0 || this.stateList[this.stateCur].code === 100)) {
|
||
params.orderStatus = this.stateList[this.stateCur].code;
|
||
}
|
||
// 分页
|
||
if ((this.stateCur != null && [105].indexOf(this.stateList[this.stateCur].code) >= 0) || [0, 4, 5, 6].indexOf(this.tabCur) >= 0) {
|
||
params.pageSize = this.$globalData.initPageSize;
|
||
params.pageNum = this.pageNum;
|
||
} else {
|
||
params.pageSize = 10000;
|
||
params.pageNum = 1;
|
||
}
|
||
// 其他需要特别处理的条件
|
||
let date = new Date();
|
||
if (this.stateCur != null) {
|
||
if (this.stateList[this.stateCur].code === 102) {
|
||
// 今日单
|
||
params.orderStatus = 2;
|
||
params.expectTimeStart = date.getFullYear() + '-' + (date.getMonth() + 1) + '-' + date.getDate() + " 00:00:00",
|
||
params.expectTimeEnd = date.getFullYear() + '-' + (date.getMonth() + 1) + '-' + date.getDate() + " 23:59:59"
|
||
params.orderByColumn = "expectTimeStart";
|
||
params.isAsc = "asc";
|
||
} else if (this.stateList[this.stateCur].code === 101) {
|
||
// 明日单
|
||
params.orderStatus = 2;
|
||
params.expectTimeStart = date.getFullYear() + '-' + (date.getMonth() + 1) + '-' + (date.getDate() + 1) + " 00:00:00",
|
||
params.expectTimeEnd = date.getFullYear() + '-' + (date.getMonth() + 1) + '-' + (date.getDate() + 1) + " 23:59:59"
|
||
params.orderByColumn = "expectTimeStart";
|
||
params.isAsc = "asc";
|
||
} else if (this.stateList[this.stateCur].code === 104) {
|
||
// 搁置单
|
||
params.shelveStatus = 1;
|
||
// params.isMonitoredOrder = true;
|
||
// params.allSelfAssigned = 0;
|
||
} else if (this.stateList[this.stateCur].code === 105) {
|
||
// 监控单
|
||
// params.orderStatuses = "2,3,4,5";
|
||
params.allSelfAssigned = 0;
|
||
params.isMonitoredOrder = true;
|
||
} else if (this.stateList[this.stateCur].code === 103) {
|
||
// 超时单
|
||
params.isMonitoredOrder = true;
|
||
params.orderByColumn = "createTime";
|
||
params.isAsc = "desc";
|
||
} else if (this.stateList[this.stateCur].code === 0) {
|
||
// 新订单
|
||
params.orderByColumn = "createTime";
|
||
params.isAsc = "desc";
|
||
}
|
||
// else if (this.stateList[this.stateCur].code === 100) {
|
||
// // 急报单
|
||
// params.isMonitoredOrder = true;
|
||
// params.allSelfAssigned = 0;
|
||
// }
|
||
} else if (this.tabCur != null) {
|
||
if (this.tabCur === 4) {
|
||
// 售后中的单
|
||
params.isMonitoredOrder = true;
|
||
params.allSelfAssigned = 0;
|
||
} else if (this.tabCur === 3) {
|
||
// 确认中的单
|
||
params.workFinishTimeExisted = true;
|
||
params.drawCashStatusList = [0,1];
|
||
params.orderStatus = null;
|
||
params.orderStatusList = [4,5];
|
||
} else if (this.tabCur === 5) {
|
||
// 已完成/子单
|
||
params.workFinishTimeExisted = true;
|
||
params.drawCashStatus = 2;
|
||
} else if (this.tabCur === 1) {
|
||
// 待上门
|
||
params.orderByColumn = "expectTimeStart";
|
||
params.isAsc = "asc";
|
||
}
|
||
}
|
||
try {
|
||
let res = null;
|
||
let tmpStateCur = this.stateCur;
|
||
let tmpTabCur = this.tabCur;
|
||
// 不同状态的单需要请求不同接口
|
||
if ((this.stateCur != null && [105].indexOf(this.stateList[this.stateCur].code) >= 0) || (this.tabCur === 6)) {
|
||
// 只查询主单,需要进行分页处理
|
||
this.$refs.loadStatusBar.showLoading();
|
||
res = await this.$request.qryMasterOrderPage(params);
|
||
// 如果选中的状态栏已经切换,则直接返回
|
||
if (this.stateCur !== tmpStateCur || this.tabCur !== tmpTabCur) {
|
||
return;
|
||
}
|
||
if (res && res.rows) {
|
||
let rowsLength = res.rows.length;
|
||
if (rowsLength > 0) {
|
||
this.orderList = this.orderList.concat(res.rows);
|
||
this.pageNum++;
|
||
if (rowsLength === params.pageSize) {
|
||
this.$refs.loadStatusBar.showLoadMore();
|
||
return;
|
||
}
|
||
}
|
||
}
|
||
this.$refs.loadStatusBar.showLoadOver();
|
||
} else if ((this.stateCur != null && [103, 100, 0].indexOf(this.stateList[this.stateCur].code) >= 0) || [0, 4].indexOf(this.tabCur) >= 0) {
|
||
let funName = "qryMixOrderList";
|
||
// 展示混合单,不做分页处理
|
||
if (this.stateCur != null && this.stateList[this.stateCur].code === 103) {
|
||
// 超时单
|
||
params.orderStatus = null;
|
||
params.timeout = 1;
|
||
} else if (this.tabCur === 4) {
|
||
funName = "qryMixAfterList";
|
||
}
|
||
res = await this.$request[funName](params);
|
||
// 如果选中的状态栏已经切换,则直接返回
|
||
if (this.stateCur !== tmpStateCur || this.tabCur !== tmpTabCur) {
|
||
return;
|
||
}
|
||
if (res && res.data) {
|
||
this.orderList = res.data;
|
||
}
|
||
} else {
|
||
// 只查询子单,需要进行分页处理
|
||
this.$refs.loadStatusBar.showLoading();
|
||
let funName = "qryDetailOrderPage";
|
||
if (this.tabCur === 4) {
|
||
funName = "getAfterList";
|
||
}
|
||
res = await this.$request[funName](params);
|
||
// 如果选中的状态栏已经切换,则直接返回
|
||
if (this.stateCur !== tmpStateCur || this.tabCur !== tmpTabCur) {
|
||
return;
|
||
}
|
||
if (res && res.rows) {
|
||
let rowsLength = res.rows.length;
|
||
if (rowsLength > 0) {
|
||
this.orderList = this.orderList.concat(res.rows);
|
||
this.pageNum++;
|
||
if (rowsLength === params.pageSize) {
|
||
this.$refs.loadStatusBar.showLoadMore();
|
||
return;
|
||
}
|
||
}
|
||
}
|
||
this.$refs.loadStatusBar.showLoadOver();
|
||
}
|
||
} catch (e) {
|
||
console.error(e)
|
||
this.$refs.loadStatusBar.showLoadErr();
|
||
}
|
||
},
|
||
async loadCategoryList(idArr) {
|
||
let typeList = await this.$request.listByStep({
|
||
type: 1
|
||
});
|
||
typeList = typeList.data;
|
||
let col1Id = idArr ? idArr[0] : typeList[0].goodsCategoryId;
|
||
let subTypeList = await this.$request.listByStep({
|
||
type: 1,
|
||
goodsCategoryId: col1Id
|
||
});
|
||
subTypeList = subTypeList.data;
|
||
let col2Id = idArr ? idArr[1] : subTypeList[0].goodsCategoryId;
|
||
let subSubTypeList = await this.$request.listByStep({
|
||
type: 1,
|
||
goodsCategoryId: col2Id
|
||
});
|
||
subSubTypeList = subSubTypeList.data;
|
||
let col3Id = idArr ? idArr[2] : subSubTypeList[0].goodsCategoryId;
|
||
let thirdTypeList = await this.$request.listByStep({
|
||
type: 1,
|
||
goodsCategoryId: col3Id
|
||
});
|
||
thirdTypeList = thirdTypeList.data;
|
||
this.categoryList.push(subTypeList);
|
||
this.categoryList.push(subSubTypeList);
|
||
this.categoryList.push(thirdTypeList);
|
||
},
|
||
async loadRegionList() {
|
||
let regionList = await this.$request.areaListByStep();
|
||
regionList = regionList.data;
|
||
let subRegionList = [];
|
||
let subSubRegionList = [];
|
||
if (regionList && regionList.length > 0) {
|
||
subRegionList = await this.$request.areaListByStep({
|
||
parentCode: regionList[0].areaCode
|
||
});
|
||
subRegionList = subRegionList.data;
|
||
}
|
||
if (subRegionList && subRegionList.length > 0) {
|
||
subSubRegionList = await this.$request.areaListByStep({
|
||
parentCode: subRegionList[0].areaCode
|
||
});
|
||
subSubRegionList = subSubRegionList.data;
|
||
}
|
||
this.areaList.push(regionList);
|
||
this.areaList.push(subRegionList);
|
||
this.areaList.push(subSubRegionList);
|
||
},
|
||
async loadTeamMembers() {
|
||
let res = await this.$request.getTeamPage({
|
||
leaderId: this.curUserInfo.workerId,
|
||
workerId: null
|
||
});
|
||
this.myTeamMembers = res.rows;
|
||
},
|
||
async loadOrderStatistics() {
|
||
let res = await this.$request.orderStatistics();
|
||
this.orderStatistics = res.data;
|
||
},
|
||
bindEvent() {
|
||
uni.$on(this.$globalFun.HIDE_MODAL, this.hideModal);
|
||
},
|
||
offBindEvent() {
|
||
uni.$off(this.$globalFun.HIDE_MODAL);
|
||
},
|
||
async regionColChange(e) {
|
||
let colObj = e.detail;
|
||
if (colObj.column == 0) {
|
||
// 通过一级查二级
|
||
let subAreaList = await this.$request.areaListByStep({parentCode: this.areaList[0][colObj.value].areaCode});
|
||
subAreaList = subAreaList.data;
|
||
let subSubAreaList = [];
|
||
if (subAreaList.length) {
|
||
subSubAreaList = await this.$request.areaListByStep({parentCode: subAreaList[0].areaCode});
|
||
subSubAreaList = subSubAreaList.data;
|
||
}
|
||
this.areaList.pop();
|
||
this.areaList.pop();
|
||
this.areaList.push(subAreaList);
|
||
this.areaList.push(subSubAreaList);
|
||
this.areaMultiIndex = [colObj.value, 0, 0];
|
||
} else if (colObj.column == 1) {
|
||
// 通过二级查三级
|
||
let subAreaList = await this.$request.areaListByStep({parentCode: this.areaList[1][colObj.value].areaCode});
|
||
subAreaList = subAreaList.data;
|
||
this.areaList.pop();
|
||
this.areaList.push(subAreaList);
|
||
this.areaMultiIndex = [this.areaMultiIndex[0], colObj.value, 0];
|
||
}
|
||
},
|
||
regionChange(e) {
|
||
this.areaMultiIndex = e.detail.value;
|
||
let chosenArea = [];
|
||
for(let i = 0; i < this.areaList.length; i++) {
|
||
chosenArea.push(this.areaList[i][this.areaMultiIndex[i]]);
|
||
}
|
||
this.formData.area = chosenArea;
|
||
},
|
||
async categoryColChange(e) {
|
||
let colObj = e.detail;
|
||
if (colObj.column == 0) {
|
||
// 通过一级查询二级
|
||
let subTypeList = await this.$request.listByStep({
|
||
type: 1,
|
||
goodsCategoryId: this.categoryList[0][colObj.value].goodsCategoryId
|
||
});
|
||
subTypeList = subTypeList.data;
|
||
let subSubTypeList = [];
|
||
if (subTypeList && subTypeList.length) {
|
||
subSubTypeList = await this.$request.listByStep({
|
||
type: 1,
|
||
goodsCategoryId: subTypeList[0].goodsCategoryId
|
||
});
|
||
subSubTypeList = subSubTypeList.data;
|
||
}
|
||
this.categoryList.pop();
|
||
this.categoryList.pop();
|
||
this.categoryList.push(subTypeList);
|
||
this.categoryList.push(subSubTypeList);
|
||
this.categoryMultiIndex = [colObj.value, 0, 0];
|
||
} else if (colObj.column == 1) {
|
||
// 通过二级查三级
|
||
let subSubTypeList = await this.$request.listByStep({
|
||
type: 1,
|
||
goodsCategoryId: this.categoryList[1][colObj.value].goodsCategoryId
|
||
});
|
||
subSubTypeList = subSubTypeList.data;
|
||
this.categoryList.pop();
|
||
this.categoryList.push(subSubTypeList);
|
||
this.categoryMultiIndex = [this.categoryMultiIndex[0], colObj.value, 0];
|
||
}
|
||
},
|
||
categoryChange(e) {
|
||
this.categoryMultiIndex = e.detail.value;
|
||
let chosenCategory = [];
|
||
for(let i = 0; i < this.categoryList.length; i++) {
|
||
chosenCategory.push(this.categoryList[i][this.categoryMultiIndex[i]]);
|
||
}
|
||
this.formData.category = chosenCategory;
|
||
},
|
||
searchOrder() {
|
||
this.reloadMasterOrderPage();
|
||
},
|
||
resetConditions() {
|
||
this.formData = {
|
||
category: null,
|
||
area: null,
|
||
orderKeywords: ''
|
||
}
|
||
},
|
||
tabSelect(e) {
|
||
this.stateCur = null;
|
||
this.tabCur = e.currentTarget.dataset.id;
|
||
this.scrollLeft = (e.currentTarget.dataset.id - 1) * 60
|
||
// this.reloadMasterOrderPage(this.stateCur, this.subStateList[this.tabCur].code);
|
||
this.reloadMasterOrderPage();
|
||
},
|
||
statusSelect(e) {
|
||
this.tabCur = null;
|
||
this.stateCur = e.currentTarget.dataset.id;
|
||
this.reloadMasterOrderPage();
|
||
},
|
||
getCurDateAndTime() {
|
||
let date = new Date();
|
||
this.curDate = date.getFullYear() + '-' + (date.getMonth() + 1) + '-' + date.getDate() + " 00:00:00";
|
||
},
|
||
showModal(e, orderInfo) {
|
||
this.getCurDateAndTime();
|
||
if (orderInfo) {
|
||
this.curOrder = orderInfo;
|
||
}
|
||
this[e.currentTarget.dataset.modal] = true;
|
||
},
|
||
showModalByRef(refName, curOrder, params) {
|
||
this.$refs[refName].showModal(curOrder, params);
|
||
this.curOrder = curOrder;
|
||
},
|
||
normalShowModalByRef(refName) {
|
||
this.$refs[refName].showModal();
|
||
},
|
||
hideModal(e) {
|
||
console.log(e);
|
||
this.curOrder = null;
|
||
this[e.currentTarget.dataset.modal] = false;
|
||
},
|
||
copyData(data) {
|
||
uni.setClipboardData({
|
||
data: data
|
||
});
|
||
},
|
||
async editServTime(id, datetimeArr, ifRollback2WS, order) {
|
||
// 确定方法名
|
||
let reqFunName = "updateOrder";
|
||
if (this.tabCur === 0 && order.orderDetailId == null) {
|
||
id = order.orderMasterId;
|
||
} else {
|
||
reqFunName = "updateDetailOrder";
|
||
id = order.orderDetailId;
|
||
}
|
||
// 确定参数
|
||
let params = datetimeArr && datetimeArr.length > 1 ? {
|
||
id: id,
|
||
expectTimeStart: datetimeArr[0],
|
||
expectTimeEnd: datetimeArr[1],
|
||
useTimeNotRange: datetimeArr[1] == null ? true : false
|
||
} : {
|
||
id: id,
|
||
revTime: datetime
|
||
}
|
||
|
||
let res = await this.$request[reqFunName](params);
|
||
if (res.code === 0) {
|
||
let finishFlag = false;
|
||
if (ifRollback2WS) {
|
||
let statusUpdateRes = await this.updateOrderDetailStatus({
|
||
id: id,
|
||
orderStatus: 2,
|
||
workBeginTime: ''
|
||
});
|
||
if (statusUpdateRes && statusUpdateRes.code === 0) {
|
||
finishFlag = true;
|
||
}
|
||
} else if (order && order.orderDetailId == null) {
|
||
finishFlag = await this.assignWork2MySelf(order);
|
||
} else {
|
||
finishFlag = await this.updateOrderStatus(order.orderDetailId, 2, 'updateDetailOrder');
|
||
}
|
||
if (finishFlag) {
|
||
this.reloadMasterOrderPage();
|
||
// this.addOrderOperate({
|
||
// orderId: id,
|
||
// orderType: reqFunName === 'updateOrder' ? '01' : '02',
|
||
// content: '预约时间'
|
||
// })
|
||
uni.showToast({
|
||
title: '预约时间成功',
|
||
icon: 'none',
|
||
duration: 2000
|
||
})
|
||
}
|
||
}
|
||
},
|
||
async updateOrderDetailStatus(params = {}) {
|
||
let res = await this.$request.updateDetailOrder(params);
|
||
return res;
|
||
},
|
||
// 添加操作节点
|
||
async addOrderOperate(params = {}) {
|
||
let res = await this.$request.addOrderOperate(params);
|
||
return res;
|
||
},
|
||
// async ledgerAccountcountdownTimeup(order = {}, index) {
|
||
// let res = await this.$request.updateDetailOrder({
|
||
// id: order.orderDetailId,
|
||
// ledgerAccountStatus: 1
|
||
// });
|
||
// if (!res || res.code !== 0) {
|
||
// uni.showToast({
|
||
// icon: 'none',
|
||
// title: '分账倒计时异常,订单号:' + order.orderDetailId,
|
||
// duration: 2000
|
||
// })
|
||
// } else if (this.tabCur === 3) {
|
||
// // TODO:更新此订单信息
|
||
// uni.showToast({
|
||
// icon: 'none',
|
||
// title: '订单编码:' + order.orderDetailCode + '已进入分账中,请再次点击确认中栏目',
|
||
// duration: 3000
|
||
// })
|
||
// }
|
||
// },
|
||
showArrangeFailTime(e) {
|
||
this.showTimeArrangeModal = false;
|
||
this.showEditTimeArrangeModal = false;
|
||
this.showArrangeFailTimeModal = true;
|
||
},
|
||
finishQrPay(e) {
|
||
this.hideModal(e);
|
||
this.reloadMasterOrderPage();
|
||
},
|
||
togglePopup(e, orderInfo) {
|
||
if (this.ifShowPageMeta) {
|
||
this.$refs[e.currentTarget.dataset.popup].close();
|
||
let timeout = setTimeout(() => {
|
||
this.curOrder = null;
|
||
}, 100);
|
||
} else {
|
||
if (orderInfo) {
|
||
this.curOrder = orderInfo;
|
||
}
|
||
this.$refs[e.currentTarget.dataset.popup].open();
|
||
}
|
||
},
|
||
changePopupState(e) {
|
||
this.ifShowPageMeta = e.show;
|
||
},
|
||
makePhoneCall(tel) {
|
||
console.log('order.customerPhone==='+tel);
|
||
if(!tel) return
|
||
uni.makePhoneCall({
|
||
phoneNumber: tel
|
||
})
|
||
},
|
||
async makePayQrcode(e, orderInfo) {
|
||
if (orderInfo.payStatus === 1) {
|
||
uni.showToast({
|
||
title: '订单已支付,不要重复付款!',
|
||
icon: 'none'
|
||
})
|
||
return;
|
||
}
|
||
let res = await this.$request.qrPay(orderInfo);
|
||
if (res && res.code === 0) {
|
||
this.showModal(e, orderInfo);
|
||
this.$refs.payQrcode.showQrcode(res.data.expend.qrcode_url);
|
||
}
|
||
},
|
||
showServOrderDetail(order) {
|
||
uni.navigateTo({
|
||
url: '/pages/order-manage/serv-detail?order=' + encodeURIComponent(JSON.stringify(order))
|
||
})
|
||
},
|
||
async finishOrder(order) {
|
||
let checkRes = await this.checkBankAndCertify();
|
||
if (!checkRes) {
|
||
return;
|
||
}
|
||
uni.navigateTo({
|
||
url: '/pages/order-manage/finish-order?order=' + encodeURIComponent(JSON.stringify(order))
|
||
})
|
||
},
|
||
async checkBankAndCertify() {
|
||
// 查询账户绑定信息
|
||
let bankCardRes = await this.$request.getBindBankCardByWorkerId({
|
||
workerId: this.curUserInfo.workerId
|
||
});
|
||
this.bankCard = bankCardRes.data;
|
||
// 查询实名信息
|
||
let certifyInfoRes = await this.$request.getWorkerCertify();
|
||
this.certifyInfo = certifyInfoRes.data;
|
||
if (!this.certifyInfo || !this.certifyInfo.workerCertificationId) {
|
||
this.$refs.vertifyCertify.showModal();
|
||
return false;
|
||
} else if (this.certifyInfo.status != 1) {
|
||
uni.showToast({
|
||
icon: 'none',
|
||
title: '实名认证审核通过后才可进行操作',
|
||
duration: 2500
|
||
})
|
||
return false;
|
||
} else if (!this.bankCard || !this.bankCard.bankNum) {
|
||
this.$refs.vertifyBankBind.showModal();
|
||
return false;
|
||
}
|
||
return true;
|
||
},
|
||
async acceptOrder(e, order, id, code, status, funName) {
|
||
let res = await this.$request[funName]({
|
||
id: id,
|
||
orderStatus: status,
|
||
});
|
||
if (res && res.code === 0) {
|
||
this.reloadMasterOrderPage();
|
||
this.showModal(e, order);
|
||
if(funName == 'updateMasterOrder') {
|
||
this.addOrderOperate({
|
||
orderId: id,
|
||
orderType: '01',
|
||
content: `师傅接单`
|
||
})
|
||
} else {
|
||
this.addOrderOperate({
|
||
orderId: id,
|
||
orderType: '02',
|
||
content: `师傅接单`
|
||
})
|
||
}
|
||
}
|
||
},
|
||
async noticeMsg(params = {}) {
|
||
this.$request.noticeMsg({
|
||
openId: this.curUserInfo.openId,
|
||
remind: params.remind,
|
||
orderId: params.orderId,
|
||
name: params.name,
|
||
orderStatus: 'RECEIVE'
|
||
});
|
||
},
|
||
async updateOrderStatus(id, status, funName) {
|
||
let res = await this.$request[funName]({
|
||
id: id,
|
||
orderStatus: status,
|
||
});
|
||
if (res && res.code === 0) {
|
||
this.reloadMasterOrderPage();
|
||
uni.showToast({
|
||
icon: 'success'
|
||
})
|
||
return true;
|
||
}
|
||
return false;
|
||
},
|
||
updateRefundStatus(status, index) {
|
||
this.orderList[index].refundStatus = status;
|
||
},
|
||
updateAfterSaleDealStatus(status, index) {
|
||
this.orderList[index].afterSaleDealStatus = status;
|
||
},
|
||
getCanAssignList(order) {
|
||
if (this.myTeamMembers && this.myTeamMembers.length) {
|
||
this.$refs.dispatchOrderPopup.$children[0].loadData(order);
|
||
}
|
||
},
|
||
async workBegin(order) {
|
||
let curDate = new Date();
|
||
let formatCurDate = curDate.getFullYear() + '-' + (curDate.getMonth() + 1) + '-' + curDate.getDate()
|
||
+ ' ' + curDate.getHours() + ':' + curDate.getMinutes() + ':' + curDate.getSeconds();
|
||
let params = {
|
||
id: order.orderDetailId,
|
||
orderStatus: 3,
|
||
workBeginTime: formatCurDate
|
||
}
|
||
let res = await this.$request.updateDetailOrder(params);
|
||
if (res && res.code === 0) {
|
||
this.reloadMasterOrderPage();
|
||
uni.showToast({
|
||
icon: 'success',
|
||
duration: 1000
|
||
})
|
||
}
|
||
},
|
||
/* modal,popup确认或关闭后的回调 */
|
||
async showAfterSalePic() {
|
||
// TODO:查询该售后单中的拒绝原因中上传的截图
|
||
this.picModalImgList = await this.$api.data('picImgList');
|
||
console.log(this.picModalImgList)
|
||
},
|
||
async assignWork(params) {
|
||
let res = await this.$request.assign(params);
|
||
if (res && res.code === 0) {
|
||
this.getCanAssignList(this.curOrder);
|
||
this.reloadMasterOrderPage();
|
||
uni.showToast({
|
||
title: '派单成功',
|
||
icon: 'success'
|
||
})
|
||
|
||
if(params.workerName) {
|
||
this.addOrderOperate({
|
||
orderId: this.curOrder.orderDetailId == null ? this.curOrder.orderMasterId : this.curOrder.orderDetailId,
|
||
orderType: this.curOrder.orderDetailId == null ? '01' : '02',
|
||
content: `师傅派单给-${params.workerName}`
|
||
})
|
||
}
|
||
|
||
return true;
|
||
} else {
|
||
uni.showToast({
|
||
title: '派单失败,请确认派单价格不高于本订单价格',
|
||
icon: 'none'
|
||
})
|
||
return false;
|
||
}
|
||
},
|
||
async assignWork2MySelf(orderInfo) {
|
||
let res = await this.$request.getCanAssignList({
|
||
orderMasterId: orderInfo.orderMasterId
|
||
});
|
||
let pickedList = res.data;
|
||
let goodsToAssign = [];
|
||
pickedList.forEach((goods) => {
|
||
goodsToAssign.push({
|
||
goodsStandardId: goods.goodsStandardId,
|
||
num: goods.goodsNum
|
||
})
|
||
});
|
||
let params = {
|
||
goodsList: goodsToAssign,
|
||
workerId: this.curUserInfo.workerId,
|
||
totalPay: orderInfo.totalMoney,
|
||
orderMasterId: orderInfo.orderMasterId,
|
||
isAll: 1
|
||
}
|
||
this.addOrderOperate({
|
||
orderId: orderInfo.orderDetailId == null ? orderInfo.orderMasterId : orderInfo.orderDetailId,
|
||
orderType: orderInfo.orderDetailId == null ? '01' : '02',
|
||
content: '师傅接单'
|
||
})
|
||
return await this.assignWork(params);
|
||
},
|
||
async rejectMasterOrder(order) {
|
||
let res = await this.$request.updateOrder({
|
||
id: order.orderMasterId,
|
||
workerId: -1
|
||
});
|
||
if (res && res.code === 0) {
|
||
this.reloadMasterOrderPage();
|
||
uni.showToast({
|
||
icon: 'success',
|
||
title: '拒单成功',
|
||
duration: 1000
|
||
})
|
||
} else {
|
||
uni.showToast({
|
||
icon: 'none',
|
||
title: '拒单失败'
|
||
})
|
||
}
|
||
},
|
||
async rejectDetailOrder(order) {
|
||
let res = await this.$request.rejectDetailOrder({
|
||
id: order.orderDetailId
|
||
});
|
||
if (res && res.code === 0) {
|
||
this.reloadMasterOrderPage();
|
||
uni.showToast({
|
||
icon: 'success',
|
||
title: '退单成功',
|
||
duration: 1000
|
||
})
|
||
this.addOrderOperate({
|
||
orderId: order.orderDetailId,
|
||
orderType: '02',
|
||
content: '师傅退单'
|
||
})
|
||
} else {
|
||
uni.showToast({
|
||
icon: 'none',
|
||
title: '退单失败'
|
||
})
|
||
}
|
||
},
|
||
async rejectMasterOrderWhenAccepted(order) {
|
||
let res = await this.$request.rejectMasterOrderWhenAccepted({
|
||
id: order.orderMasterId
|
||
});
|
||
if (res && res.code === 0) {
|
||
this.reloadMasterOrderPage();
|
||
uni.showToast({
|
||
icon: 'none',
|
||
title: '退单成功',
|
||
duration: 1000
|
||
})
|
||
this.addOrderOperate({
|
||
orderId: order.orderMasterId,
|
||
orderType: '01',
|
||
content: '师傅退单'
|
||
})
|
||
} else {
|
||
uni.showToast({
|
||
icon: 'none',
|
||
title: res.msg,
|
||
duration: 2000
|
||
})
|
||
}
|
||
},
|
||
async getChangedPrice(order) {
|
||
let res = await this.$request.getChangeOrderPrice(order);
|
||
if (res && res.code === 0 && res.data) {
|
||
return res.data;
|
||
}
|
||
return null;
|
||
},
|
||
async changePrice(e, order) {
|
||
let priceObj = await this.getChangedPrice(order);
|
||
let refName = e.currentTarget.dataset.ref;
|
||
this.showModal(e, order);
|
||
this.$nextTick(() => {
|
||
this.$refs[refName].init(priceObj);
|
||
})
|
||
},
|
||
viewImage(e, imgList) {
|
||
uni.previewImage({
|
||
urls: imgList,
|
||
current: e.currentTarget.dataset.url
|
||
});
|
||
},
|
||
async authLocationCallback(res) {
|
||
if (res.detail.authSetting['scope.userLocation']) {
|
||
this.hasAuthLocation = true;
|
||
}
|
||
},
|
||
async recordClockInLocation(order) {
|
||
let _this = this;
|
||
// 通过 wx.getSetting 先查询一下用户是否授权了authScope
|
||
let res1 = await wx.getSetting();
|
||
if (res1) {
|
||
if (!res1.authSetting['scope.userLocation']) {
|
||
let res2 = await wx.getLocation({
|
||
type: 'gcj02',
|
||
fail: async (result) => {
|
||
console.log(result)
|
||
if (result.errno === 103) {
|
||
this.hasAuthLocation = false;
|
||
// 用户授权
|
||
uni.showToast({
|
||
title: '请先授权',
|
||
icon: 'none',
|
||
duration: 1500
|
||
})
|
||
} else {
|
||
// 用户授权
|
||
uni.showToast({
|
||
title: '请确认是否开启定位',
|
||
icon: 'none',
|
||
duration: 1500
|
||
})
|
||
}
|
||
},
|
||
success: async (result) => {
|
||
_this.persistClockInLocation(order, result);
|
||
}
|
||
})
|
||
} else {
|
||
wx.getLocation({
|
||
type: 'gcj02',
|
||
fail: async (result) => {
|
||
console.log(result)
|
||
if (result.errCode === 2 || result.errCode === 404) {
|
||
uni.showToast({
|
||
title: '定位获取失败,请确认是否开启定位',
|
||
icon: 'none',
|
||
duration: 2500
|
||
})
|
||
} else {
|
||
uni.showToast({
|
||
title: '定位获取失败,请稍后重试',
|
||
icon: 'none',
|
||
duration: 2500
|
||
})
|
||
}
|
||
},
|
||
success: async (result) => {
|
||
_this.persistClockInLocation(order, result);
|
||
}
|
||
})
|
||
}
|
||
}
|
||
},
|
||
async persistClockInLocation(order, res) {
|
||
let params = {
|
||
id: order.orderDetailId,
|
||
clockInLocation: res.longitude + "," + res.latitude
|
||
}
|
||
let updateOrderRes = await this.$request.updateDetailOrder(params);
|
||
if (updateOrderRes && updateOrderRes.code === 0) {
|
||
this.reloadMasterOrderPage();
|
||
uni.showToast({
|
||
icon: 'success',
|
||
duration: 1000
|
||
})
|
||
this.addOrderOperate({
|
||
orderId: order.orderDetailId,
|
||
orderType: '02',
|
||
content: '打卡到达'
|
||
})
|
||
}
|
||
},
|
||
async revisit() {
|
||
let res = await this.$request.editAfterServiceRecord({
|
||
id: this.curOrder.afterServiceRecordList[0].id,
|
||
orderDetailId: this.curOrder.orderDetailId,
|
||
workerFeedbackResult: 2,
|
||
updateBy: 2
|
||
});
|
||
if (res && res.code === 0) {
|
||
uni.showToast({
|
||
icon: 'success',
|
||
title: '提交成功',
|
||
duration: 1000
|
||
})
|
||
this.reloadMasterOrderPage();
|
||
return;
|
||
}
|
||
uni.showToast({
|
||
icon: 'error',
|
||
duration: 1000,
|
||
title: '提交失败',
|
||
})
|
||
},
|
||
setCurTab(curTab) {
|
||
this.tabCur = curTab;
|
||
this.stateCur = null;
|
||
this.reloadMasterOrderPage();
|
||
}
|
||
}
|
||
}
|
||
</script>
|
||
|
||
<style scoped>
|
||
.inline-combox {
|
||
display: inline-block;
|
||
width: calc((90vw - 80rpx)/2);
|
||
}
|
||
|
||
.cu-list.grid.no-border {
|
||
padding: unset;
|
||
}
|
||
|
||
.cu-list.grid.no-border>.cu-item {
|
||
padding-top: 20rpx;
|
||
padding-bottom: 20rpx;
|
||
}
|
||
|
||
.right-tag {
|
||
position: relative;
|
||
right: -30rpx;
|
||
border-radius: 40rpx 0 0 40rpx;
|
||
}
|
||
|
||
.cu-tag+.cu-tag {
|
||
margin-left: unset;
|
||
}
|
||
|
||
.left-top-sm-bar {
|
||
position: absolute;
|
||
right: 25rpx;
|
||
top: 25rpx;
|
||
z-index: 99;
|
||
}
|
||
</style>
|