diy_seckill.js 11.8 KB
// var e = function(e) {
//       return e && e.__esModule ? e : {
//         default: e
//       };
//     }(require("../../utils/LoadMore3.js")),
//     n = new e.default(),
var t = getApp(),
  a = t.request,
  o = t.globalData.setting,
  os = o,
  i = require("../../utils/util.js"),
  ut = i,
  s = require("../../utils/common.js");
var regeneratorRuntime = require('../../utils/runtime.js');
Component({
  properties: {
    // 这里定义了innerText属性,属性值可以在组件使用时指定
    object: {
      type: Object,
      value: null,
    },
    goods_array: {
      type: Array,
      value: []
    },
    newTime: {
      type: Number,
      value: 0
    },
  },
  data: {
    // 这里是一些组件内部数据
    yc: false,
    someData: null,
    ylp_img: "https://mshopimg.yolipai.net/",
    imghost: os.imghost,
    timer: null,
    user_id:0,
    img_width:100,
    img_height:100,
    swiperHeight:0
  },

  pageLifetimes: {
    //要处理一下,游客登录后的界面的变化,主要还该是改变会员
    show: function () {
        //会员身份变化
        var th = this;
        var g_id = this.data.object;
        
        //只有再会员登陆之后,才重新调用接口
        console.log('秒杀组件------------');
        if(this.data.user_id!=getApp().globalData.user_id){
            this.data.user_id=getApp().globalData.user_id
            this.init(g_id);
        }
        setTimeout(function () {
            if (th.data.goods_array && th.data.goods_array.length > 0) {
                th.data.timer = setInterval(function () {
                    th.countDown2(th);
                }, 1000);
            }
        },600)
    },

    hide:function () {
        // 页面被被销毁的时候,清除定时器
        clearInterval(this.data.timer);
    }
  },

  ready: function () {
    var g_id = this.data.object;
    
    this.init(g_id);
    this.data.user_id=getApp().globalData.user_id;
  },
  detached() {
    // 页面被被销毁的时候,清除定时器
    clearInterval(this.data.timer);
  },
  methods: {
    // 这里是一个自定义方法
    customMethod: function () { },
    init: function (g_id) {
      var th = this;
      this.loadImg(g_id)
      getApp().getConfig2(function (e) {
        var swithc_list = e.switch_list;
        var sw_arr = JSON.parse(swithc_list);

        if(sw_arr.is_retail_price){
          th.setData({is_retail_price:1});
        }
      })


      var app = getApp(), goodsidlist = "", idlist = "";
      if (g_id.data_type == 2) {
        if (g_id.data && g_id.data.length > 0) {
          //--先把商品ID串起来--
          g_id.data.forEach(function (val, ind) {
            var item = {};
            goodsidlist += val.goodsid + ",";
            idlist += val.flashid + ",";
          })
          goodsidlist = ut.sub_last(goodsidlist);
          idlist = ut.sub_last(idlist);

          var user_id=getApp().globalData.user_id;
          if(!user_id){ user_id=0;}

          //--调用接口,读取秒杀--
          // var gUrl = "/api/ms/flash_sale/getGoodsList?store_id=" + os.stoid + "&goodsidlist=" + goodsidlist+"&user_id="+user_id+"&type=1";
          var gUrl = "/api/ms/flash_sale/getGoodsList?store_id=" + os.stoid + "&idlist=" + idlist + "&user_id="+user_id+"&type=1";
          app.request.promiseGet(gUrl, {}).then(res => {

              //如果秒杀的数组为空的时候    
              var goodslist = res.data.data;
              //就算是添加的活动已经过期,就要用最新的进行中活动
              if (goodslist && goodslist.length > 0) {
                th.set_goods_list(g_id.data, goodslist);
              }
            });
        }
      } else {
        th.no_gid_set();
      }
    },

    //当是默认的情况
    no_gid_set() {
      var user_id=getApp().globalData.user_id;
      if(!user_id){ user_id=0;}
      var req={ store_id: os.stoid, is_end: 0, is_show: 1, timetype: 2,user_id:user_id};
      getApp().request.promiseGet("/api/ms/flash_sale/spikepage?page=1&pageSize=9",
        { isShowLoading: 1, data:req  }
      ).then(res => {

        if (res.data.code == 0 && res.data.data.pageData && res.data.data.pageData.length > 0) {
          var goodsidlist = res.data.data.pageData;
          this.set_goods_list(null, goodsidlist);
        }
      });
    },

    //就算是添加的活动已经过期,就要用最新的活动
    set_goods_list(g_id, goodslist) {

      goodslist.forEach(function (vy, indy) {
          if(!vy.id) vy.id=vy.prom_id;
      })

      // 判断火热,预热
      var newTime = ut.gettimestamp(), all_array = [], th = this;
      th.setData({ newTime: newTime });
      if (g_id) {
        /*--商品队列按照添加的顺序排列--*/
        g_id.forEach(function (val, ind) {
          goodslist.forEach(function (vy, indy) {
            if (val.goodsid == vy.goods_id) {
              all_array.push(vy);
            }
          })
        })
      } else {
         all_array = goodslist;
      }

      if (all_array.length == 0) {
        all_array = goodslist;
      }

      for(let i in all_array){
      	let item=all_array[i];
      	if(item.user_price) item.price=item.user_price;
				if(item.start_time > newTime) {
					item.status = 0;
				} else if(item.end_time > newTime) {
					item.status = 1;
				};
				
      }
			
			
			var promisies = [];
			for (const key in all_array) {
			  if (Object.hasOwnProperty.call(all_array, key)) {
			    const val = all_array[key];
			    promisies[key] = getApp().request.promiseGet("/api/weshop/activitylist/getActLen/" +
			        os.stoid + "/1/" + val.id, 
			        {}
			      ).then(res => {
			        if (res.data.code == 0) {
			          if (res.data.data <= 0) all_array[key].status = 2;
			        };
			      });
			  }
			}


			Promise.all(promisies).then(() => {
        // 判断活动是否结束
        let empty=[]
        for(let i in all_array){
          let item=all_array[i];
          if(newTime > item.end_time) {
            all_array[i].status = 3;
          }; 
          // let price=all_array[i].price.toFixed(2)
          let price=all_array[i].price + ''
          if (price && price.indexOf('.') > -1) {
            let priceArr = price.split(".")
            all_array[i].price_n = priceArr[0]
            all_array[i].price_xs = priceArr[1]
          }else{
            all_array[i].price_n = price
          }

          let virtual = all_array[i].virtual ? all_array[i].virtual : 0
          if (all_array[i].status) {         
            if (all_array[i].is_virtual_count ) {
              // all_array[i].goods_num -= all_array[i].virtual
              all_array[i].buy_num += virtual*1
              all_array[i].residue = all_array[i].goods_num*1 - all_array[i].buy_num*1         
            }else{
              all_array[i].buy_num += virtual*1
              all_array[i].residue=all_array[i].goods_num*1 + virtual*1 - all_array[i].buy_num*1 
            }
          }else{
            if (all_array[i].is_virtual_count ) {
              // all_array[i].goods_num -= all_array[i].virtual
              all_array[i].buy_num = 0
              all_array[i].residue = all_array[i].goods_num*1 - all_array[i].buy_num*1         
            }else{
              all_array[i].buy_num = 0
              all_array[i].residue=all_array[i].goods_num*1 + virtual*1 - all_array[i].buy_num*1 
            }
          }

          // all_array[i].residue=all_array[i].goods_num*1 - all_array[i].buy_num*1
          if (all_array[i].residue && all_array[i].residue > 0 && all_array[i].status !=2) {
            empty.push(all_array[i])
          }
        }

        //控制已售罄是否显示
        if (th.data.object.column_action_name &&  !th.data.object.hide_sold_out_items) {
          all_array=empty
        }


        var arr = new Array();
        if (th.data.object.style==7) {
          //--三个三个一组---
          for (var i = 0; i < all_array.length; i += 2) {
            arr.push(all_array.slice(i, i + 2));
          }
        }else{
          //--三个三个一组---
          for (var i = 0; i < all_array.length; i += 3) {
            arr.push(all_array.slice(i, i + 3));
          }
        }
        
  
        /*--熏染到前台--*/
        th.setData({ goods_array: arr });
        if (th.data.object.style==6) {
          th.setSwiper_h()
        }

			});
      

      th.data.timer = setInterval(function () {
        th.countDown2(th);
      }, 1000);
    },
    setSwiper_h(){
      var th=this
      wx.createSelectorQuery().in(this).select('.swiper_h').boundingClientRect(rect => {       
        if (rect && rect.height) {  
          var sumHeigth=(rect.height+13)+'px'
          th.setData({
            swiperHeight: sumHeigth
          })
        }  
      }).exec();
      // const query = this.createSelectorQuery()
      // query.select('.swiper_h').boundingClientRect()
      // query.exec( (res)=> {
      //   console.log(res)
      //   console.log(res[0].height)
      //   console.log(res[0].height * data.t.length)
      //   let sumHeigth = res[0].height * data.t.length;
      //   console.error('组件高度');
      //   console.log(sumHeigth);
      //   th.setData({
      //     swiperHeight: sumHeigth
      //   })
      // })
    },


    //---小于10的格式化函数----
    timeFormat: function (param) {
      return param < 10 ? '0' + param : param;
    },
    //----秒杀倒计时函数-----
    countDown2: function (ob) {
      if (ob == undefined) return false;
      var ee = ob;
      // 获取当前时间,同时得到活动结束时间数组
      var newTime = ut.gettimestamp();
      this.setData({ newTime: newTime });

      var List = ee.data.goods_array;
      if (List.length == 0) return false;
      for (var j = 0; j < List.length; j++) {
        // 对结束时间进行处理渲染到页面
        var endTimeList = List[j];
        for (var i = 0; i < endTimeList.length; i++) {
          var o = endTimeList[i];
          var endTime = o.end_time;
          if (newTime < o.start_time) endTime = o.start_time;
          let obj = null;
          // 如果活动未结束,对时间进行处理
          if (endTime - newTime > 0) {
            let time = (endTime - newTime);
            // 获取天、时、分、秒
            let day = parseInt(time / (60 * 60 * 24));
            let hou = parseInt(time % (60 * 60 * 24) / 3600);
            let min = parseInt(time % (60 * 60 * 24) % 3600 / 60);
            let sec = parseInt(time % (60 * 60 * 24) % 3600 % 60);
            obj = {
              day: this.timeFormat(day),
              hou: this.timeFormat(hou),
              min: this.timeFormat(min),
              sec: this.timeFormat(sec)
            }
          } else {
            //活动已结束,全部设置为'00'
            obj = {
              day: '00',
              hou: '00',
              min: '00',
              sec: '00'
            }
          }
          var txt = "goods_array[" + j + "][" + i + "].djs";
          ee.setData({
            [txt]: obj
          });
        }
      }
    },
    //图片失败,默认图片
    bind_bnerr3: function (e) {
      var _errImg = e.target.dataset.errorimg;
      var _errObj = {};
      _errObj[_errImg] = "/public/images/default_goods_image_240.gif";
      this.setData(_errObj) //注意这里的赋值方式,只是将数据列表中的此项图片路径值替换掉 ;
    },

    go_to_skill: function () {
      wx.navigateTo({
        url: "/pages/activity/seckill_list/seckill_list"
      });
    },
    //加入购物车
    shoppingCart(){
      console.log('加入购物车');
    },
    loadImg(g_id){
      if (g_id.style==1) {
        let w=''
        switch (g_id.picture_scale) {
          case 1:
            w=`width:calc(100%-${g_id.page_margins*2}px);height:calc(100%-${g_id.page_margins*2}px)`
            break;
        
          default:
            break;
        }
       


      }
    }

  },


})