reserveStatus.js 2.88 KB
import util from './util'
//0:待确认1:已定座2:确认到店(到店)3:用餐完成(离店)4:取消预定 5:C端在线预定(分配包间)6:拒单
const status=[
  '待确认',//0:待确认
  '已预订',//1:已定座
  '已完成',//2:确认到店(到店)
  '已完成',//3:用餐完成(离店)
  '已取消',//4:取消预定
  '已预订',//5:C端在线预定(分配包间)
  '已拒绝'//6:拒单
];
export default {
  reserve(detail){
    /*
    let ns = new Date() / 1000
    //取消
    detail.hasCancel=detail.status==4;
    //结束
    detail.hasOvered= (ns > detail.edate || (detail.status >= 2 && detail.status <= 3)) && detail.status!=6
    //正常运行已接单
    if(detail.type==0){//B端
      detail.hasRunning = !detail.hasOvered && !detail.hasCancel
    }else{//C端
      detail.hasRunning = !detail.hasOvered && !detail.hasCancel && detail.status==5
    }
    */
    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];
    }
    //mask
    if(detail.phone){
      detail.phoneMask=detail.phone.replace(/([\d]{2})([\d]+)([\d]{4})/g,($0,$1,$2,$3)=>{
        return $1+'**'+$3
      })
    }
    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//超时
    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
  },
}