diy_goodsGroup.js 12.4 KB
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,
    },

  },
  data: {
    // 这里是一些组件内部数据
    group: false,
    imghost: o.imghost,
    is_recommend: 0,
    is_hot: 0,
    is_new: 0,
    baseUrl: "/api/weshop/goods/page",
    resourceUrl: t.globalData.setting.resourceUrl,
    url: t.globalData.setting.imghost,
    currentPage: 1,
    requestData: null,
    requestUrl: "",
    goods_array: null,
    total: null,
    prom_id: 0,
    classstyle_id: null,
    g_id: null,
    wgroup: null,
    goods_btn: null,
    loadText: '加载更多',
    someData: {},
    goodscount: null,
    firist_type_data: null,
    firist_type_curr: 0,
  },

  ready: function () {

  },


  lifetimes: {
    attached: function() {
      // 在组件实例进入页面节点树时执行
      this.data.classstyle_id = this.data.object.classstyle;
      this.data.goodscount = this.data.object.goodscount;
      this.data.wgroup = this.data.object.wgroup;

      this.setData({
        classstyle_id: this.data.object.classstyle
      })
      if (this.data.object.goodsclass == 1) {
        this.data.is_recommend = 1
      }
      if (this.data.object.goodsclass == 2) {
        this.data.is_hot = 1
      }
      if (this.data.object.goodsclass == 3) {
        this.data.is_new = 1
      }
      this.data.requestData = new Array();
      this.data.g_id = this.data.object.data;
      var arr = [];

      for (var i = 0; i < this.data.g_id.length; i += this.data.goodscount) {
        arr.push(this.data.g_id.slice(i, i + this.data.goodscount));
      }
      this.data.firist_type_data = arr;
      this.init(this.data.classstyle_id, this.data.wgroup);
    },
    detached: function() {
      // 在组件实例被从页面节点树移除时执行
    },
  },

  pageLifetimes: {
    //游客登陆后,只要更新卡的情况
    show: function () {
        //--初始化卡类--
        this.card_init();
    },
  },

  methods: {
    // 这里是一个自定义方法
    init: function (classstyle_id, wgroup) {
      var th = this;
      var g_id = this.data.g_id;
      if (classstyle_id == 1) {
        //---手动选择的时候---
        g_id = this.data.firist_type_data[th.data.firist_type_curr];
        th.data.firist_type_curr++;
      }

      var th = this,
          app = getApp(),
          index = 0,
          gdata = [];

      //--初始化卡类--
      th.card_init();
      var os=getApp().globalData.setting;
      classstyle_id = classstyle_id + "";
      switch (classstyle_id) {

        //---手动选择商品---
        case "1":      
          var str="";
          for (var i = 0; i < g_id.length; i++) {
            str += g_id[i].goodsid + ",";           
          }
          str=str.substring(0, str.length - 1);     
          app.request.get("/api/weshop/goods/getgoodslistOrdby?store_id=" + os.stoid + "&goodsidlist=" + str,  {
			    success: function(res) {
					 console.log("121212");
					 if(res.data.code==0 && res.data.data){
						   var rData = th.data.requestData;
						   if (rData == null) rData=[];
						   var now=ut.gettimestamp();
						   
						   var new_arr=[];
						   for (var ii in res.data.data){
							    var item=res.data.data[ii];
								item.goods_img=th.data.imghost + item.original_img;
								if(item.e_time<now) {item.prom_type=0; item.prom_price=0;}
							    if(item.warm_uptime>now) {item.prom_type=0; item.prom_price=0;}
								new_arr.push(item);
						   }   
						   rData = rData.concat(new_arr);
						   th.data.requestData = rData;
						   th.setData({ goods_array: rData  });
						 //---控制有没有加载更多的按钮---
						 if (th.data.firist_type_curr == th.data.firist_type_data.length) {th.setData({ goods_btn: [] }); }
						 else  th.setData({ goods_btn: res.data});                   
					}
				}
			  
		  })
       
          break;
        case "2":
          var item = {};
           var  r_data={
                    store_id: os.stoid ,
                    pageSize: th.data.goodscount,
                    page: th.data.currentPage,
                    isonsale: 1,
            };
           if(th.data.is_recommend) r_data.is_recommend=th.data.is_recommend;
           if(th.data.is_hot) r_data.is_hot=th.data.is_hot;
           if(th.data.is_new) r_data.is_new=th.data.is_new;

          app.request.promiseGet("/api/weshop/goods/page", {
              data:r_data
          }).then(res => {
            //商品地址
            var goods = res.data.data.pageData;
            th.setData({
              goods_btn: res.data.data.pageData,
              total: res.data.data.total
            })
            th.data.currentPage++;
            var now=ut.gettimestamp();

            goods.forEach(async function (val, ind) {
              var item = {};
              var prom_id = null;
              console.log(val.goodsid);
              //app.request.promiseGet("/api/weshop/goods/get/" + os.stoid + "/" + val.goods_id, {}).then(res => {
              //商品地址
              //var goods = res.data.data;

              item.goods_name = val.goods_name;
              item.goods_img = th.data.imghost + val.original_img;
              item.market_price = val.market_price;
              item.shop_price = val.shop_price;
              item.sales_sum = val.sales_sum;
              item.goods_id = val.goods_id;

              item.cardprice1 = val.cardprice1;
              item.cardprice2 = val.cardprice2;
              item.cardprice3 = val.cardprice3;

              prom_id = val.prom_id;

              var prom_type = val.prom_type; //0普通商品  1秒杀  6拼单

              var url = "";
              if (prom_type == 6) {
                url = "/api/weshop/teamlist/get/" + os.stoid + "/" + prom_id;
              } else if (prom_type == 1) {
                url = "/api/ms/flash_sale/get/" + os.stoid + "/" + prom_id;
              }
              if(url!="") {
               await app.request.promiseGet(url, {}).then(res => {
                  var prom = null
                  if (res && res.data) prom=res.data.data;
                  if (prom != null && prom.is_end==0 && prom.end_time>now && prom.show_time<now) {
                    item.prom_price = res.data.data.price;
                  }
                  th.data.requestData.push(item);
                  th.setData({
                    goods_array: th.data.requestData,
                    page: th.data.currentPage - 1,
                  });
                })
              }else{
                th.data.requestData.push(item);
                th.setData({
                  goods_array: th.data.requestData,
                  page: th.data.currentPage - 1,
                });
              }


            })

          })
          break;
        case "3":
          var item = {};
          app.request.promiseGet("/api/weshop/goodsGroup/pageGoodsList", {
            data: {
              store_id:os.stoid  ,
              gpid: wgroup,
              pageSize: th.data.goodscount,
              page: th.data.currentPage,
			  isonsale: 1,
            }
          }).then(res => {
            //商品地址
            var goods = res.data.data.pageData;
            th.setData({
              goods_btn: res.data.data.pageData, total: res.data.data.total
            })

            th.data.currentPage++;
            var now=ut.gettimestamp();
            goods.forEach(async function (val, ind) {
              var item = {};
              var prom_id = null;
              console.log(val.goodsid);
              //app.request.promiseGet("/api/weshop/goods/get/" + os.stoid + "/" + val.goods_id, {}).then(res => {
              //商品地址
              var goods = res.data.data;

              item.goods_name = val.goods_name;
              item.goods_img = th.data.imghost + val.original_img;
              item.market_price = val.market_price;
              item.shop_price = val.shop_price;
              item.sales_sum = val.sales_sum;
              item.goods_id = val.goods_id;

              item.cardprice1 = val.cardprice1;
              item.cardprice2 = val.cardprice2;
              item.cardprice3 = val.cardprice3;

              prom_id = val.prom_id;

              var prom_type = res.data.data.prom_type; //0普通商品  1秒杀  6拼单

              var url = "";
              if (prom_type == 6) {
                url = "/api/weshop/teamlist/get/" + os.stoid + "/" + prom_id;
              } else if (prom_type == 1) {
                url = "/api/ms/flash_sale/get/" + os.stoid + "/" + prom_id;
              }

              if(url!=null){
               await app.request.promiseGet(url, {}).then(res => {
                  var prom =null;
                  if(res && res.data) res.data.data;
                  if (prom != null && prom.is_end==0 && prom.end_time>now && prom.show_time<now) {
                    item.prom_price = res.data.data.price;
                  }
                  th.data.requestData.push(item);
                  th.setData({
                    goods_array: th.data.requestData,
                    page: th.data.currentPage - 1,
                  });
                })
              }else{
                th.data.requestData.push(item);
                th.setData({
                  goods_array: th.data.requestData,
                  page: th.data.currentPage - 1,
                });
              }
            })

          })
          break;
      }
    },

    setLoading: function () {
      var that = this;
      that.init(that.data.classstyle_id, that.data.wgroup);
    },

    //图片失败,默认图片
    bind_bnerr3: function (e) {
      var _errImg = e.target.dataset.errorimg;
      var _errObj = {};
      _errObj[_errImg] = this.data.imghost + "/public/images/default_goods_image_240.gif";
      this.setData(_errObj) //注意这里的赋值方式,只是将数据列表中的此项图片路径值替换掉 ;
    },
	
	//---卡的初始化----
	card_init: function() {
	  var th = this,os=getApp().globalData.setting;
	  getApp().request.get("/api/weshop/users/get/" + os.stoid + "/" + getApp().globalData.user_id, {
		isShowLoading:false,  
	    success: function(e) {
	      getApp().globalData.userInfo = e.data.data;
	      getApp().getConfig2(function(e) {
	        var swithc_list = e.switch_list;
	        var sw_arr = JSON.parse(swithc_list);
	        //---如果后台又开等级卡的开关---
	        if (sw_arr.rank_switch && sw_arr.rank_switch == "2") {
	          th.setData({
	            rank_switch: true
	          });
	          //---回调卡的列表---
	          th.getPlusCardType(function(ob) {
	            th.setData({
	              card_list: ob.card_list
	            });
	            var ti = setInterval(function() {
	              var user = getApp().globalData.userInfo;
	              if (!user) return false;
	              clearInterval(ti);
	
	              if (user.card_field) {
	                var str = user['card_expiredate'].replace(/-/g, '/');
	                var end = new Date(str);
	                end = Date.parse(end) / 1000;
	                var now = ut.gettimestamp();
	
	                //--- 判断是等级会员,且在有效期范围内 ---
	                if (user.card_field && now < end) {
	                  var card_name = ob.name_map.get(user.card_field);
	                  if (card_name.length > 4) card_name = card_name.substring(0, 4);
	                  th.setData({
	                    card_field: user.card_field,
	                    card_name: card_name,
	                    card_list: ob.card_list
	                  });
	                }

	              }

	            }, 500)
	          })
	
	        }
	      })
	    }
	  })
	
	},
	
	//---  获取卡类列表 ---
	getPlusCardType: function(func) {
	  var storid = o.stoid;
	  var th = this;
	  getApp().request.promiseGet("/api/weshop/plus/vip/mem/bership/list?" + "storeId=" + storid, {}).then(res => {
	    var plusCard = res.data.data;
	    var arr = [1219, 2089, 3031];
	    var new_arr = new Array();
	    var card_name_map = new Map();
	    for (var i = 0; i < plusCard.length; i++) {
	      var name = "card" + plusCard[i].CorrPrice.toLowerCase();
	      card_name_map.set(name, plusCard[i].CardName);
	    }
	
	    var ob = {
	      "card_list": plusCard,
	      "name_map": card_name_map
	    };
	    func(ob);
	  })
	},
	
	
  }
})