Sanakey
2021-02-06 a50a5b3b9a589356da21bfc55700d037e3f6dd27
pages/detail/detail.js
@@ -12,7 +12,7 @@
};
import {Http} from "../../utils/http-p.js";
const Request = new Http();
// Object.assign({}, Quantity,
// Object.assign({}, Quantity,
Page({
  /**
@@ -34,6 +34,7 @@
    ],
    isShow: false,
    isCanBuy:true,
    isCanBuy2:true,
    actionType: "payOrder",
    Quantity: {
      quantity: 1,
@@ -44,7 +45,37 @@
    overflow: "auto",
    list: [],
    isPullTelephone: false,
    cltcode: ''
    cltcode: '',
    attrList:[
      {
        title: '颜色',
        list: [
          {
            name:'红',
            checked: true
          },
          {
            name:'黄',
            checked: false
          },
        ]
      },
      {
        title: '尺寸',
        list: [
          {
            name:'大',
            checked: false
          },
          {
            name:'小',
            checked: true
          },
        ]
      }
    ]
  },
@@ -54,7 +85,7 @@
  onLoad: function(options) {
    // homeLayoutStyle = options.homeLayoutStyle;
    imgDownloadSum = 0;
    // this.setData({
    //   homeLayoutStyle: homeLayoutStyle
    // })
@@ -121,6 +152,9 @@
        that.setData({
          goodsItem: res.data.list,
          CouponList:res.data.CouponList,
          groupBuyingList:res.data.groupBuyingList,
          SkuParameterList:res.data.SkuParameterList,
          SkuMatCodeList:res.data.SkuMatCodeList,
          title: res.data.list.MatName,
          num: 0,
          description: res.data.list.Description,
@@ -128,42 +162,11 @@
          ['Quantity.quantity']: res.data.list.Mininum||1
          // price: goodsItem.Price
        })
        let {
          Quantity,
          isRestrictQuantity,
          isStartupPanicBuying,
          PanicBuyingStartTimeBalance,
          PanicBuyingEndTimeBalance,
          PanicBuyingStartTime,
          PanicBuyingEndTime,
        } = res.data.list;
        if (isStartupPanicBuying&&PanicBuyingStartTimeBalance>0) {
          this.setData({
            noticeText:`未开抢,开抢时间${PanicBuyingStartTime}至${PanicBuyingEndTime}`,
            isCanBuy:false
          })
        }
        else if (isStartupPanicBuying&&PanicBuyingStartTimeBalance<=0&&PanicBuyingEndTimeBalance>0) {
          this.setData({
            noticeText:`商品抢购中,结束时间为${PanicBuyingEndTime}`,
            isCanBuy:true
          })
        }
       else if (isStartupPanicBuying&&PanicBuyingEndTimeBalance<=0) {
          this.setData({
            noticeText:`本次商品抢购已结束`,
            isCanBuy:false
          })
        }
        if (isRestrictQuantity&&Quantity<=0) {
          this.setData({
            noticeText:`该商品已售罄`,
            isCanBuy:false
          })
        }
        this.handleNoticeText(res.data.list);
        // WxParse.wxParse('article', 'html', res.data.list.Description, that, 5);
        this.getPosterQrCode();
        this.handleCurrentGoods();
        wx.setNavigationBarTitle({
          title: res.data.list.MatName,
        })
@@ -182,6 +185,69 @@
     * 4.target为Page对象,一般为this(必填)
     * 5.imagePadding为当图片自适应是左右的单一padding(默认为0,可选)
     */
  },
  handleNoticeText(res){
    let {
      Quantity,
      isRestrictQuantity,
      isStartupPanicBuying,
      PanicBuyingStartTimeBalance,
      PanicBuyingEndTimeBalance,
      PanicBuyingStartTime,
      PanicBuyingEndTime,
      isStartupGroupBuying,
      GroupBuyingMembers,
      GroupBuyingPrice,
      GroupBuyingStartTime,
      GroupBuyingEndTime,
      GroupBuyingStartTimeBalance,
      GroupBuyingEndTimeBalance
    } = res;
    if (isStartupPanicBuying&&PanicBuyingStartTimeBalance>0) {
      this.setData({
        noticeText:`未开抢,开抢时间${PanicBuyingStartTime}至${PanicBuyingEndTime}`,
        isCanBuy:false
      })
    }
    else if (isStartupPanicBuying&&PanicBuyingStartTimeBalance<=0&&PanicBuyingEndTimeBalance>0) {
      this.setData({
        noticeText:`商品抢购中,结束时间为${PanicBuyingEndTime}`,
        isCanBuy:true
      })
    }
    else if (isStartupPanicBuying&&PanicBuyingEndTimeBalance<=0) {
      this.setData({
        noticeText:`本次商品抢购已结束`,
        isCanBuy:false
      })
    }
    if (isStartupGroupBuying&&GroupBuyingStartTimeBalance>0) {
      this.setData({
        noticeText:`未开抢,开抢时间${GroupBuyingStartTime}至${GroupBuyingEndTime}`,
        isCanBuy:false
      })
    }
    else if (isStartupGroupBuying&&GroupBuyingStartTimeBalance<=0&&GroupBuyingEndTimeBalance>0) {
      this.setData({
        noticeText:`商品拼团抢购中,结束时间为${GroupBuyingEndTime}`,
        isCanBuy:true
      })
    }
    else if (isStartupGroupBuying&&GroupBuyingEndTimeBalance<=0) {
      this.setData({
        noticeText:`本次商品限时团购已结束`,
        isCanBuy:false
      })
    }
    if (isRestrictQuantity&&Quantity<=0) {
      this.setData({
        noticeText:`该商品已售罄`,
        isCanBuy:false
      })
    }
  },
  btnTap: function (e) {
@@ -244,7 +310,7 @@
  },
  getPosterQrCode(){
    wx.request({
      url: utils.getUrl('/shopping/poster/getQrCodeForPoster.do'),
      header: {
@@ -263,7 +329,7 @@
        this.setData({
          QrCode:res.data.QrCode
        })
      },
      fail: function (errmsg) {
@@ -391,11 +457,13 @@
    var that = this;
    utils.hideLayer(that, "translateY", 500);
    this.setData({
      ['Quantity.quantity']: this.data.Mininum||1
      ['Quantity.quantity']: this.data.Mininum||1,
      isSelectedSku: false
    })
  },
    // downloadFile(){
    //   console.log(app.globalData.cardUserData)
    //   console.log('头像',app.globalData.cardUserData.Avatar)
@@ -458,23 +526,23 @@
    //         // } else if (res.cancel) {
    //         //   console.log('用户点击取消')
    //         // }
    //       }
    //     })
    //   })
    // },
    // createCanvas(e){
    //   wx.showToast({
    //     title: '生成中...',
    //     icon: 'loading',
    //     mask:true,
    //     duration: 10000
    //   });
    //   if (imgDownloadObj.isComplete) {
    //     // wx.hideToast()
    //     // let posterCreate =  this.selectComponent('#posterCreate');
@@ -493,11 +561,11 @@
    //       // wx.hideToast()
    //       // let posterCreate =  this.selectComponent('#posterCreate');
    //       // posterCreate.formSubmit(e);
    //     })
    //   }
    // },
    // sendCommand(e){
@@ -522,7 +590,7 @@
    // },
    //将canvas转换为图片保存到本地,然后将图片路径传给image图片的src
    // createPoster (e) {
    //   let posterCreate =  this.selectComponent('#posterCreate');
@@ -531,7 +599,7 @@
    //   // let context = canvas.getContext('2d');
    //   let context = e.detail.context;
    //   // let context = wx.createCanvasContext('mycanvas');
    //   // let path = "../../imgs/gobg.png";
    //   // //不知道是什么原因,手机环境能正常显示
    //   // context.drawImage(path, 0, 0, 375, 183);
@@ -562,7 +630,7 @@
    //   context.textAlign='left';
    //   context.fillText("我看上了这款商品", 140, 50);
    //   context.stroke();
    //   context.setFontSize(16);
    //   context.fillStyle='#333333';
    //   context.textAlign='left';
@@ -573,7 +641,7 @@
    //   context.beginPath();
    //   context.drawImage(goodsImg, 48, 125, 280, 280);
    //   // 商品文字
    //   context.setFontSize(16);
    //   context.fillStyle='#333333';
    //   context.textAlign='left';
@@ -585,7 +653,7 @@
    //       context.fillText(line, 50, lineHeight * index + 435);
    //       // context.fillText("商品描述", 50, 445);
    //   });
    //   context.stroke();
    //   context.setFontSize(32);
    //   context.fillStyle='#f23232';
@@ -593,7 +661,7 @@
    //   context.fillText("¥1999.00", 45, 505);
    //   context.stroke();
    //   context.closePath();
    //   // 绘制分割线
    //   context.beginPath()
    //   context.strokeStyle='#ddd'
@@ -610,7 +678,7 @@
    //   //绘制左下角文字背景图
    //   context.beginPath();
    //   context.drawImage(qrCodeImg, 20, 530, 120, 120);
    //   //绘制右下角扫码提示语
    //   // context.drawImage(path5, 248, 578, 90, 25);
    //   context.setFontSize(16);
@@ -631,7 +699,7 @@
    //   //将生成好的图片保存到本地,需要延迟一会,绘制期间耗时
    //   setTimeout( ()=> {
    //     posterCreate.createPoster(canvas);
    //     console.log('将生成好的图片保存到本地',avatarImg,goodsImg,qrCodeImg)
    //    }, 500);
@@ -690,7 +758,7 @@
    //       context.fillText(line, 50, lineHeight * index + 435);
    //       // context.fillText("商品描述", 50, 445);
    //   });
    //   context.stroke();
    //   context.setFontSize(32);
    //   context.setFillStyle('#f23232');
@@ -698,7 +766,7 @@
    //   context.fillText(goodsItem.CurrencySign+goodsItem.Price, 45, 495);
    //   context.stroke();
    //   context.closePath();
    //   // 绘制分割线
    //   context.beginPath()
    //   context.strokeStyle='#ddd'
@@ -714,7 +782,7 @@
    //   // context.stroke();
    //   //绘制左下角二维码
    //   context.drawImage(qrCodeImg, 20, 530, 120, 120);
    //   //绘制右下角扫码提示语
    //   // context.drawImage(path5, 248, 578, 90, 25);
    //   context.setFontSize(16);
@@ -737,8 +805,12 @@
  buyTap: function(event) {
    // 根据按钮不同区分“下一步”触发的事件
    var name = event.target.dataset.name;
    if (name == "order") {
    let name = event.target.dataset.name || event.detail.name;
    console.log(event);
    this.setData({
      groupCode:event.detail.groupCode||'',
    });
    if (name === "order") {
      this.setData({
        actionType: 'payOrder'
      })
@@ -751,17 +823,240 @@
      //     }
      //   }
      // })
    } else if (name == "cart") {
    } else if (name === "cart") {
      this.setData({
        actionType: 'addCart'
      })
    }
    else if (name === "group") {
      this.setData({
        actionType: 'groupBuying'
      })
    }
    if (this.data.isShow) {
        this.hideLayer();
      } else {
        this.showLayer();
      }
  },
  selectedSku(){
    // console.log(888);
    if (!this.data.isCanBuy) return;
    this.setData({
      isSelectedSku: true
    })
    if (this.data.isShow) {
      this.hideLayer();
    } else {
      this.showLayer();
    }
  },
  handleCurrentGoods(){
  /*
  *
  * 首先拿到当前商品的所有skuid [],同时也是选中的id
  * 处理所有商品的skuid为字符串
  * 用户点击sku[i],拼接为字符串与上面的对比
  * */
    let SkuParameterList = this.data.SkuParameterList;
    let SkuMatCodeList = this.data.SkuMatCodeList;
    let MatCode = this.data.goodsItem.MatCode;
    let selectedSkuId = [];
    let selectedSkuName = [];
    let goodsSkuIdStrings = [];
    let goodsSkuIdList = [];
    let skuIdList = [];
    let skuSetName = [];
    SkuParameterList.forEach((item) => {
      let arr = [];
      item.skuList.forEach((item) => {
        arr.push(item.skuId)
      })
      skuIdList.push(arr);
      skuSetName.push(item.skuSetName);
    })
    SkuMatCodeList.forEach((item,index)=>{
      let skuIdString = '';
      let skuIdArr = [];
      for (let i = 1; i < 11; i++) {
        if (item.MatCode === MatCode && item[`skuId${i}`]){
          selectedSkuId.push(item[`skuId${i}`])
          selectedSkuName.push(item[`skuName${i}`])
        }
        if (item[`skuId${i}`]){
          skuIdString+=item[`skuId${i}`]
          skuIdArr.push(item[`skuId${i}`])
        }
      }
      goodsSkuIdStrings.push(skuIdString)
      goodsSkuIdList.push(skuIdArr)
    })
    this.setData({
      selectedSkuId,
      selectedSkuName,
      selectedSkuNameStr: selectedSkuName.join(' '),
      goodsSkuIdStrings,
      skuIdList,
      goodsSkuIdList,
      skuSetName,
      skuSetNameStr:skuSetName.join(','),
    })
    console.log('selectedSkuId',selectedSkuId);
    console.log('selectedSkuName',selectedSkuName);
    console.log('goodsSkuIdStrings',goodsSkuIdStrings);
    console.log('skuIdList',skuIdList);
    console.log('goodsSkuIdList',goodsSkuIdList);
    console.log('skuSetName',skuSetName);
    this.handleSkuIds();
  },
  async selectGoodsAttr(e){
    let attrIndex = e.currentTarget.dataset.i;
    let listIndex = e.currentTarget.dataset.index;
    let skuId = e.currentTarget.dataset.skuId;
    let skuName = e.currentTarget.dataset.skuName;
    let isEnabled = e.currentTarget.dataset.isEnabled;
    let selectedSkuId = this.data.selectedSkuId;
    let selectedSkuName = this.data.selectedSkuName;
    let length = selectedSkuId.length;
    console.log(e,selectedSkuId);
    if (!isEnabled) return;
    selectedSkuId[attrIndex] =  skuId;
    selectedSkuName[attrIndex] =  skuName;
    selectedSkuId.forEach((item,index)=>{
      if (index>attrIndex){
        selectedSkuId[index] = ''
        selectedSkuName[index] = ''
        length--;
      }
    })
    this.setData({
      // [`selectedSkuId[${attrIndex}]`]:skuId,
      selectedSkuId:selectedSkuId,
      // [`selectedskuName[${attrIndex}]`]:skuName,
      // [`selectedskuName[${attrIndex}]`]:skuName,
      selectedSkuNameStr: selectedSkuName.join(' '),
      selectedSkuIdLength: length
    })
    console.log(selectedSkuId,selectedSkuName,this.data.selectedSkuIdLength);
    // console.log(await this.getSkuParameterByMatCode());
    let [errMsg,spRes] = await this.getSkuParameterByMatCode();
    if (errMsg) {
      return;
    }
    console.log(spRes);
    if (length<selectedSkuId.length) {
      this.setData({
        SkuParameterList:spRes.SkuParameterList,
        isCanBuy2:false,
      })
    } else {
      this.setData({
        SkuParameterList:spRes.SkuParameterList,
        CouponList:spRes.CouponList,
        goodsItem:spRes.list,
        groupBuyingList:spRes.groupBuyingList,
        isCanBuy2:true,
      })
      matcode = spRes.list.MatCode
      this.handleNoticeText(spRes.list);
    }
    // selectedSkuId[attrIndex] =  skuId;
    // let goodsSkuIdStrings = this.data.goodsSkuIdStrings;
    // let hasSkuId = goodsSkuIdStrings.includes(selectedSkuId.join(''));
    // console.log(goodsSkuIdStrings,selectedSkuId.join(''));
    // if (goodsSkuIdStrings.includes(selectedSkuId.join(''))){
    //   this.setData({
    //     [`selectedSkuId[${attrIndex}]`]:skuId
    //   })
    // } else{
    //
    // }
    // this.handleDisabledSkuId();
    /*
    * 遍历第一列,把没有的标记
    * 点击第一列可选的项后,遍历剩下所有列,把没有的标记
    * */
    // let list = this.data.attrList[attrIndex].list;
    // list.forEach((item,index)=>{
    //   item.checked = index === listIndex;
    // })
    // this.setData({
    //   [`attrList[${attrIndex}].list`]:list
    // })
  },
  async getSkuParameterByMatCode(){
    this.handleSkuIds();
    let data = this.data.skuIds;
    let [errMsg,res] = await utils.to(
      wx.$http.request({
        url:'/shopping/getSkuParameterByMatCode.do',
        data
      })
    )
    return [errMsg,res];
  },
  handleSkuIds(){
    let data = {};
    let selectedSkuId = this.data.selectedSkuId;
    let selectedSkuIdLength = this.data.selectedSkuIdLength;
    for (let i = 1; i < 11; i++) {
      if (selectedSkuId[i-1]){
        data[`skuId${i}`] = selectedSkuId[i-1]
      } else {
        data[`skuId${i}`] = ''
      }
    }
    if (selectedSkuIdLength<selectedSkuId.length) {
      data.matcode = this.data.goodsItem.MatCode;
    }
    console.log(selectedSkuIdLength,selectedSkuId.length);
    console.log(data);
    this.setData({
      skuIds:data
    });
  },
  handleDisabledSkuId(){
    let SkuMatCodeList = this.data.SkuMatCodeList;
    let skuIdList = this.data.skuIdList;
    let goodsSkuIdList = this.data.goodsSkuIdList.flat(2);
    // console.log(goodsSkuIdList);
    let disabledSkuId = [];
    let selectedSkuId = this.data.selectedSkuId;
    // SkuMatCodeList.forEach((item,index)=>{
    //   let disabledArr = [];
    //   if (skuIdList[0].includes(item.skuId1)) {
    //     disabledArr.push()
    //   }
    // })
    let disabledArr = [];
    skuIdList.forEach((list,index)=>{
      if (index === 0){
        list.forEach((item,i)=>{
          if (goodsSkuIdList.includes(item)){
            disabledArr.push(true)
          } else{
            disabledArr.push(false)
          }
        })
        disabledSkuId.push(disabledArr);
      }
    })
  },
  quantityEdit(e){
@@ -771,8 +1066,39 @@
    })
    // console.log(this.data.Quantity)
  },
  groupBuying(e){
    console.log('准备团购');
    if (!this.data.isCanBuy) return;
    if (!this.data.isCanBuy2) {
      wx.showToast({
        title: '请选择正确的分类',
        icon:'none'
      })
      return
    };
    let quantity = this.data.Quantity.quantity;
    let matCode = this.data.goodsItem.MatCode;
    let groupCode = this.data.groupCode;
    let goodsItem = this.data.goodsItem;
    let skuIds = this.data.skuIds;
    // let eventChannel = this.getOpenerEventChannel();
    //?quantity=${quantity}&matcode=${matcode}&groupCode=${groupCode}
    wx.navigateTo({
      url: `../order/order`,
      success(res){
        res.eventChannel.emit('getSelectedGoods', {
          quantity,
          matCode,
          groupCode,
          goodsItem,
          skuIds
        });
      }
    })
  },
  // 加入购物车触发事件
  addCart: function(e) {
    if (!this.data.isCanBuy) return;
    // utils.isAuthorize(this);
    // console.log(this.data.isAuthorize,333)
    // if(!this.data.isAuthorize){
@@ -787,8 +1113,8 @@
    var title = this.data.goodsItem.MatCode;
    var img = this.data.goodsItem.images[0];
    console.log(this.data.Quantity)
    let skuIds = this.data.skuIds;
    wx.request({
      url: utils.getUrl('/shopping/cart.do?m=add'),
@@ -797,7 +1123,8 @@
      },
      data: {
        matcode: title,
        quantity: num
        quantity: num,
        ...skuIds
      },
      success: function(res) {
        wx.hideLoading();
@@ -828,9 +1155,17 @@
  },
  // 立即购买触发事件
  payOrder: function(e) {
    if (!this.data.isCanBuy) return;
    if (!this.data.isCanBuy2) {
      wx.showToast({
        title: '请选择正确的分类',
        icon:'none'
      })
      return
    };
    // utils.subscribeMessage({
    //   callback:()=>{
    //   }
    // })
    //获取数量,价格,商品名称,id,封面图
@@ -840,7 +1175,7 @@
    wx.showLoading({
      title: '加载中',
    })
    let skuIds = this.data.skuIds;
    wx.request({
      url: utils.getUrl('/shopping/cart.do?m=add&action=goshop'),
      header: {
@@ -848,7 +1183,8 @@
      },
      data: {
        matcode: id,
        quantity: num
        quantity: num,
        ...skuIds
      },
      success: res=> {
        wx.hideLoading();
@@ -976,7 +1312,7 @@
    //   // 来自页面内转发按钮
    //   console.log(ops.target)
    // }
    // console.log('title',utils.getShareTitle())
    return {
      // title: '我在' + app.globalData.titleName +'发现' + this.data.title + ',赶快来看看吧',