cmyy.js 5.54 KB
// pages/taocan/index.js
import util from '../../utils/util';
import App from '../../utils/api';
Page({

  /**
   * 页面的初始数据
   */
  data: {
    current:0,
    activityId:'',
    packs:{},
    hasNoSets:false,//没有任何套餐
    hasLoading:true,
  },
  activityId:'',
  /**
   * 生命周期函数--监听页面加载
   * sid  商家id
   * pid  套餐id
   */
  onLoad: function (options) {
    this.options={sid:292,pid:0}
    this.taocanInit()
  },

  /**
   * 生命周期函数--监听页面初次渲染完成
   */
  onReady: function () {
    if(wx.getMenuButtonBoundingClientRect){
      let rect=wx.getMenuButtonBoundingClientRect()
      console.log('rect',rect);
      this.setData({
        shareTop:rect.top,
        shareHeight:rect.height,
        shareLeft:rect.left-68,
      })
    }
  },

  /**
   * 生命周期函数--监听页面显示
   */
  onShow: function () {

  },

  /**
   * 生命周期函数--监听页面隐藏
   */
  onHide: function () {

  },

  /**
   * 生命周期函数--监听页面卸载
   */
  onUnload: function () {

  },

  /**
   * 页面相关事件处理函数--监听用户下拉动作
   */
  onPullDownRefresh: function () {

  },

  /**
   * 页面上拉触底事件的处理函数
   */
  onReachBottom: function () {

  },

  /**
   * 用户点击右上角分享
   */
  onShareAppMessage: function () {
    let pack=this.data.packs[this.activityId]
    let path=util.http_build_query({sid:pack.sid,pid:this.activityId,fromid:getApp().openid},'/pages/taocan/index')
    let shareParams={
      title:pack.name||'请客订包间,就上周到安排',
      path:path,
    }
    if(pack.main_url){
      shareParams.imageUrl=pack.main_url+'?imageView2/2/w/450'
    }
    console.log('shareParams==>',shareParams)
    return shareParams
  },

  async taocanInitScene(){
    if(this.options.scene){
      //解析scene追加到options
      let res=await App.Customer.GetWxLiteCodeInfo({str_code:this.options.scene})
      let scene=JSON.parse(res.data.scene)
      this.options={...this.options,...scene}
      console.log('this.options',this.options)
    }
    //fromid存在则设置推荐关系
    if(this.options.fromid) {
      App.Customer.SetShareRel({
        sid:this.options.sid,
        fid:this.options.pid,
        openid_main:this.options.fromid,
        openid_cover:await getApp().getOpenid(),
      })
    }
  },
  async taocanInit(){
    this.setData({
      hasLoading:true,
      hasLoadTimeout:false,
    })
    await this.taocanInitScene();
    let options=this.options
    this.activityId=options.pid
    App.Foodset.GetFoodsetList({sid:options.sid}).then(res=>{
      let packs={}
      res.data.some(r=>{
        r.nameSub=r.name.length>6?(r.name.substr(0,6)+'…'):r.name;
        r['包间可用']=r.service.indexOf('包间可用')>-1;
        r['免预约']=r.service.indexOf('免预约')>-1;
        r['随时退']=r.service.indexOf('随时退')>-1;
        r.sid=this.data.sid
        packs[r.id]=r
      })
      while(Object.keys(packs).length<3){
        packs[Math.random()]={}
      }
      try{
        if(!packs[this.activityId]){
          if(this.activityId>0){
            util.toast('套餐已下架','none')
          }
          this.activityId=res.data[0].id
        }
        this.setData({
          packs:packs,
          activityId:this.activityId,
          current:this.getCurrent(this.activityId,packs),
          hasLoading:false,
        })
        this.getActivityDetail()
      }catch (e){
        this.setData({
          hasNoSets:true,//没有任何套餐
          hasLoading:false,
        });
      }
    }).catch(()=>{
      this.setData({
        hasLoadTimeout:true,//网络异常
      });
    })
  },
  getCurrent(id,packs){
    let ps=Object.keys(packs)
    let index=ps.indexOf(id)
    let length=ps.length;
    let current=0
    if(index>length-3){
      current=length-3;
    }else{
      current=index>0?(index-1):0
    }
    return current>0?current:0
  },
  touchTab(e){
    let activityId=util.attr(e,'id')
    if(!activityId) return;
    this.activityId=activityId
    let obj={
      activityId:this.activityId,
    }
    let id=util.attr(e,'id')
    obj.current=this.getCurrent(id,this.data.packs)
    this.setData(obj)
    this.getActivityDetail();
  },
  swiperChange(e){
    console.log(e)
    if(e.detail.source!='touch') return;
    this.setData({
      current:e.detail.current
    })
  },
  toggleRule(){
    this.setData({
      hasShowRule:!this.data.hasShowRule,
    })
  },
  getActivityDetail(){
    let packs=this.data.packs
    if(!packs[this.activityId].operator){
      App.Foodset.GetFoodsetDetail({fid:this.activityId}).then(res=>{
        packs[this.activityId]={...packs[this.activityId],...res.data}
        this.setData({
          packs:packs,
        })
      })
    }
  },
  createSaleIng:false,
  createSale(){
    this.createSaleIng=true
    let pack=this.data.packs[this.activityId]
    App.PayOnline.JsApiPay({
      pay_type:1,
      fid:this.activityId,
      sid:pack.sid,
    }).then(res=>{
      this.createSaleIng=false
      if(res.ret==200){
        let order_id=res.data.order_id
        res.data.timeStamp+=""
        wx.requestPayment({
          ...res.data,
          success:res=>{
            util.toast('支付成功')
            setTimeout(()=>{
              wx.navigateTo({
                url:'/pages/taocan/order?id='+order_id,
              })
            },1000)
          },
        })
      }else{
        util.toast(res.msg,'none')
      }
    }).catch(res=>{
      this.createSaleIng=false
    })
  },
  share(){
    this.selectComponent('#share').show()
  },
})