reserveStatus.js
3.32 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
/*
channel 预定渠道 1/2/3/4 微信小程序/电话机/安卓手机客户端/C端
is_set_ddate 是否设置到底时间 1/0 是/否
action 默认为0 未发短信 1 已发短信 2已回访
type 0商家 1顾客
status 0:待确认1:已定座2:确认到店(到店)3:用餐完成(离店)4:取消预定 5:C端在线预定(分配包间)6:拒单
ddate_solt 未设置/早市/午市/晚市/夜宵 0/1/2/3/4
*/
import util from './util'
const status=[
'待确认',//0:待确认
'已预订',//1:已定座
'已完成',//2:确认到店(到店)
'已完成',//3:用餐完成(离店)
'已取消',//4:取消预定
'已预订',//5:C端在线预定(分配包间)
'已拒绝'//6:拒单
];
const soltName=['','早餐','午餐','晚餐','夜宵']
export default {
reserve(detail){
detail.hasRunning=this.hasRunningFlag(detail)
if(!detail.hasRunning){
detail.hasCancel=detail.status==4;
detail.hasOvered=detail.status!=0 && detail.status!=6;
}
//是否可以修改到店时间
detail.hasUpdateDate=detail.type==1 && detail.is_set_ddate==0
console.log('detail.hasUpdateDate',detail.hasUpdateDate)
detail.getStatusStr='';
if(detail.status>=0){
detail.getStatusStr=status[detail.status];
if(!detail.hasRunning && (detail.status==1 || detail.status==5)){
detail.getStatusStr=status[3];
}
}
//mask
if(detail.phone){
detail.phoneMask=detail.phone.replace(/([\d]{2})([\d]+)([\d]{4})/g,($0,$1,$2,$3)=>{
return $1+'**'+$3
})
}
//room_demand
if(detail.room_demand && typeof detail.room_demand=='string'){
detail.room_demand=JSON.parse(detail.room_demand)
detail.room_demand_str=detail.room_demand[0].name
let how=detail.room_demand.length
if(how>1){
detail.room_demand_str+=' 等'+how+'间'
}
}
detail.soltName=soltName[detail.ddate_solt]
return detail;
},
hasRunningFlag(detail){//判断订单正在运行
let ns = new Date() / 1000
let flag=true;
if(detail.status==0 || detail.status==6 || detail.status==4) return false//未进行状态
if(detail.status==3) return false //用餐完成(离店)
//if(ns > detail.edate) return false//超时
//console.log('ns > this.getNextTime(detail)',ns , this.getNextTime(detail))
if(ns > this.getNextTime(detail)) return false//超时
return flag
},
getNextTime(detail){//获取下时段时间
if(!detail.seller) return detail.edate
let solt=['','morning','noon','night','ye'];
let daily=detail.seller.daily
if(!daily) return detail.edate;
let solt_index=solt[detail.ddate_solt]
if(!solt_index) return detail.edate;
let dur=daily[solt[detail.ddate_solt]]
if(!dur) return detail.edate;
let last_time='';
let hasToday=true
for(let i=(parseInt(detail.ddate_solt)+1);i<solt.length;i++){
if(daily[solt[i]]){
last_time=daily[solt[i]]
break;
}
}
if(!last_time){//跨天
for(let i=1;i<solt.length;i++){
if(daily[solt[i]]){
hasToday=false
last_time=daily[solt[i]]
break;
}
}
}
if(!last_time) return detail.edate;
let ns=util.timetouUnix(util.unixtoTime(detail.edate,"YYYY-MM-DD "+last_time.substr(0,5)+':00'))
if(hasToday) return ns
return parseInt(ns)+86400
},
}