161 lines
4.2 KiB
JavaScript
161 lines
4.2 KiB
JavaScript
|
|
// 已领取的工单
|
|||
|
|
import {checkinStaffOrderApi, workOrderReceiveApi, workOrderServiceEndApi} from "./workOrder";
|
|||
|
|
import util from "../../../utils/util";
|
|||
|
|
|
|||
|
|
export const ASSIGNED = 2;
|
|||
|
|
// 待领取工单
|
|||
|
|
export const UNASSIGNED = 1;
|
|||
|
|
// 工单主页
|
|||
|
|
export const HOMEPAGE = 3;
|
|||
|
|
|
|||
|
|
/**
|
|||
|
|
* 工单服务类型
|
|||
|
|
*/
|
|||
|
|
export const serviceStatusEnum = {
|
|||
|
|
Unabsorbed: 1, //未分配
|
|||
|
|
WaitingService: 2, //已分配 待服务
|
|||
|
|
inService: 3, // 服务中
|
|||
|
|
ServiceEnd: 4, //服务结束
|
|||
|
|
};
|
|||
|
|
|
|||
|
|
/**
|
|||
|
|
* 工单操作按钮判断
|
|||
|
|
* @type {{COMPLETE: string, SERVICE_RECORD: string, SIGN_IN: string, RUSH_ORDER: string, START: string}}
|
|||
|
|
*/
|
|||
|
|
const BTN_EVENT = {
|
|||
|
|
SERVICE_RECORD: "serviceRecord",
|
|||
|
|
SIGN_IN: "signIn",
|
|||
|
|
COMPLETE: 'complete',
|
|||
|
|
RUSH_ORDER: "rush_order",
|
|||
|
|
START: "start",
|
|||
|
|
}
|
|||
|
|
export function workOrderBottomBar(workOrderNoInfo) {
|
|||
|
|
const reservationConfig = uni.getStorageSync('reservationConfig'); // 商户预约设置
|
|||
|
|
// if (!this.orderInfo || !this.merServiceConfig) return [];
|
|||
|
|
const config = [];
|
|||
|
|
if( workOrderNoInfo.refundStatus > 0 ) return [];
|
|||
|
|
// 上门serviceType === 1,2到店
|
|||
|
|
if (workOrderNoInfo.serviceType === 1) {
|
|||
|
|
// allocateType 分配类型:0-未分配,1-派单,2-抢单
|
|||
|
|
if (workOrderNoInfo.allocateType === 0) {
|
|||
|
|
config.push({
|
|||
|
|
text: "领取工单",
|
|||
|
|
type: "lang",
|
|||
|
|
event: BTN_EVENT.RUSH_ORDER
|
|||
|
|
});
|
|||
|
|
}
|
|||
|
|
if (workOrderNoInfo.serviceStatus === serviceStatusEnum.WaitingService) {
|
|||
|
|
config.push({
|
|||
|
|
text: "上门打卡",
|
|||
|
|
type: "lang",
|
|||
|
|
event: BTN_EVENT.SIGN_IN
|
|||
|
|
});
|
|||
|
|
}
|
|||
|
|
if (workOrderNoInfo.serviceStatus === serviceStatusEnum.inService && reservationConfig
|
|||
|
|
.serviceEvidenceSwitch && !workOrderNoInfo.serviceEvidenceFormId) {
|
|||
|
|
config.push({
|
|||
|
|
text: "服务留凭",
|
|||
|
|
type: "lang",
|
|||
|
|
event: BTN_EVENT.SERVICE_RECORD
|
|||
|
|
});
|
|||
|
|
}
|
|||
|
|
}else{
|
|||
|
|
if (workOrderNoInfo.serviceStatus === serviceStatusEnum.WaitingService) {
|
|||
|
|
config.push({
|
|||
|
|
text: "服务开始",
|
|||
|
|
type: "lang",
|
|||
|
|
event: BTN_EVENT.START
|
|||
|
|
});
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
if (workOrderNoInfo.serviceStatus === serviceStatusEnum.inService && ((workOrderNoInfo.serviceEvidenceFormId >0 || !reservationConfig.serviceEvidenceSwitch) || workOrderNoInfo.serviceType === 2)) {
|
|||
|
|
config.push({
|
|||
|
|
text: "服务完成",
|
|||
|
|
type: "lang",
|
|||
|
|
event: BTN_EVENT.COMPLETE
|
|||
|
|
});
|
|||
|
|
}
|
|||
|
|
return config;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
/**
|
|||
|
|
* 工单按钮操作
|
|||
|
|
* @param event 操作名称
|
|||
|
|
* @param workOrderNo 工单号
|
|||
|
|
* @returns {Promise<unknown>}
|
|||
|
|
*/
|
|||
|
|
export async function handleWorkOrderBarAction(event, workOrderNo) {
|
|||
|
|
switch (event) {
|
|||
|
|
case BTN_EVENT.SERVICE_RECORD:
|
|||
|
|
uni.navigateTo({
|
|||
|
|
url: `/pages/goods/service_record/index?workOrderNo=${workOrderNo}`
|
|||
|
|
});
|
|||
|
|
break;
|
|||
|
|
case BTN_EVENT.SIGN_IN:
|
|||
|
|
util.navigateTo(`/pages/admin/workOrder_manage/checkin?workOrderNo=${workOrderNo}`)
|
|||
|
|
break;
|
|||
|
|
case BTN_EVENT.COMPLETE:
|
|||
|
|
return new Promise(async (resolve) => {
|
|||
|
|
const result = await uni.showModal({
|
|||
|
|
content: "您确定要完成服务吗?",
|
|||
|
|
});
|
|||
|
|
if (result[0] || result[1].cancel) return;
|
|||
|
|
let data = await workOrderServiceEndApi(workOrderNo)
|
|||
|
|
if (data.code === 200) {
|
|||
|
|
util.Tips({
|
|||
|
|
title: '服务完成成功'
|
|||
|
|
});
|
|||
|
|
await resolve(BTN_EVENT.COMPLETE)
|
|||
|
|
}
|
|||
|
|
});
|
|||
|
|
break;
|
|||
|
|
case BTN_EVENT.RUSH_ORDER:
|
|||
|
|
return new Promise(async (resolve) => {
|
|||
|
|
const result = await uni.showModal({
|
|||
|
|
content: "您确定要领取此工单服务吗?",
|
|||
|
|
});
|
|||
|
|
if (result[0] || result[1].cancel) return;
|
|||
|
|
try {
|
|||
|
|
await workOrderReceiveApi(workOrderNo);
|
|||
|
|
util.Tips({
|
|||
|
|
title: '领取成功',
|
|||
|
|
icon: "success"
|
|||
|
|
});
|
|||
|
|
await resolve(BTN_EVENT.RUSH_ORDER)
|
|||
|
|
// uni.navigateTo({
|
|||
|
|
// url: `/pages/admin/workOrder_manage/workOrder_detail?workOrderNo=${workOrderNo}`
|
|||
|
|
// });
|
|||
|
|
} catch (err) {
|
|||
|
|
util.Tips({
|
|||
|
|
title: err,
|
|||
|
|
icon: "none"
|
|||
|
|
});
|
|||
|
|
}
|
|||
|
|
});
|
|||
|
|
break;
|
|||
|
|
case BTN_EVENT.START:
|
|||
|
|
return new Promise(async (resolve) => {
|
|||
|
|
const result = await uni.showModal({
|
|||
|
|
content: "您确定要开始服务吗?",
|
|||
|
|
});
|
|||
|
|
if (result[0] || result[1].cancel) return;
|
|||
|
|
try {
|
|||
|
|
await checkinStaffOrderApi({workOrderNo: workOrderNo});
|
|||
|
|
uni.hideLoading();
|
|||
|
|
util.Tips({
|
|||
|
|
title: '服务开始',
|
|||
|
|
icon: "none"
|
|||
|
|
});
|
|||
|
|
await resolve(BTN_EVENT.START)
|
|||
|
|
} catch (err) {
|
|||
|
|
uni.hideLoading();
|
|||
|
|
util.Tips({
|
|||
|
|
title: err,
|
|||
|
|
icon: "none"
|
|||
|
|
});
|
|||
|
|
}
|
|||
|
|
});
|
|||
|
|
break;
|
|||
|
|
}
|
|||
|
|
}
|