var app = getApp();

Component({
  // 目前组件，只接受时间戳，其他的没有做
  // 现在的时间，和结束时间，都必须从后台获取，因为客户端时间不一致
  properties: {
    goodsInfo: {
      type: Object
    },
    cartList:{
      type:Object
    }
  },
  data: {
    language: '',

    // 规格 -------
    optionsId: 0, //选择后的 规格ID
    cartid:0,	 //选择后的  购物车ID	
    goodsCount: 1,
    optionsMaxCount: 1,
    popupSpecs1: false,
    popupSpecs2: false, //无规格选择商品数量
    popThumb: "",
    popStock: 0,
    popPrice: 0,
    specsManage: [], //选择池 用于排序
    goodsDescription: "",
    popupModeshow: true, //动态模糊框
    // 规格end

    skuImages: [],
    showSkuImages: false,
    activeSkuIndex: 0,
    activeSkuIndex_1: '',//用于关闭时保存点击预览前的序号，在预览关闭时重新设置预览起始位置
    activeSkuIndex_2: '',
  },
  lifetimes: {
    attached: function() {
      // 在组件实例进入页面节点树时执行
      let language = wx.getStorageSync('langIndex');
      this.setData({
        'language': language.en,
        specsManage: [],
        optionsId: 0,
        popupSpecs1: true
      });
      this.initPopView();
    },
    detached: function() {
      // 在组件实例被从页面节点树移除时执行
    },
  },
  methods: {
    //提交确认
    submitAction() {
      if (this.data.goodsInfo.has_option == 1 && !this.data.optionsId) {
        wx.showToast({
          icon: 'none',
          title: '规格id不可为空，请选择规格！',
          duration: 1500
        });
        return;
      }
      //点击关闭 clicktype为1：确认按钮 ，为0：关闭弹窗操作
      this.triggerEvent('closeSpecsPopup',{optionsId: this.data.optionsId,cartid:this.data.cartid,goodsId:this.data.goodsInfo.id, goodsCount: this.data.goodsCount, clicktype: 1});

    },
    //关闭popupSpecs
    popupSpecsbtn() {
      this.setData({
        popupSpecs1: false,
        popupModeshow: true
      });
      this.triggerEvent('closeSpecsPopup',{clicktype: 0});
    },
    //初始化弹窗view
    initPopView() {
      if (this.data.goodsInfo.has_option == 1) {
        this.setData({
          popPrice: this.data.goodsInfo.min_price + "-" + this.data.goodsInfo.max_price, //设置默认价格
          popThumb: this.data.goodsInfo.thumb, //设置默认图片
          popStock: this.data.goodsInfo.stock, //设置默认库存
          goodsDescription: "选择"
        });
        for (let i = 0; i < this.data.goodsInfo.has_many_specs.length; i++) {
          this.setData({
            goodsDescription: this.data.goodsDescription + " " + this.data.goodsInfo.has_many_specs[i].title
          });
        }
        let _optionArr = [];
        this.data.goodsInfo.has_many_options.forEach((val, index) => {
          let _thumb = val.thumb !='' ? val.thumb : this.data.goodsInfo.thumb;
          _optionArr.push(_thumb);
        });
        this.setData({
          skuImages: _optionArr
        });
        if (!this.data.optionsId) {
          // 默认选择第一个
          for (let i = 0; i < this.data.goodsInfo.has_many_specs.length; i++) {
            this.data.goodsInfo.has_many_specs[i].description = this.data.goodsInfo.has_many_specs[i].specitem[0].id;

            this.selectSpecs(this.data.goodsInfo.has_many_specs[i].specitem[0], 'first', i);
          }
        }

      } else {
        console.log("单规格",this.data.goodsInfo);
        let __optionArr2 = [];
        __optionArr2.push(this.data.goodsInfo.thumb);
        this.setData({
          popThumb: this.data.goodsInfo.thumb, //设置默认图片
          popStock: this.data.goodsInfo.stock, //设置默认库存
          popPrice: this.data.goodsInfo.price, //设置默认价格
          goodsDescription: '',
          optionsMaxCount: this.data.goodsInfo.stock,
          skuImages: __optionArr2
        });
				
        let {cartList,goodsInfo} = this.data;
        if (cartList && cartList.length > 0) {
          for (let i = 0; i < cartList.length; i++) {
            if (cartList[i].goods_id === goodsInfo.id) {
              this.setData({
                goodsCount: cartList[i].total,
                cartid:cartList[i].id
              });
              break;
            }else {
              this.data.cartid=0;
            }
          }
        }
      }
    },

    // 输入数量
    inputGoodsNum: function(e) {
      var num = parseInt(e.detail.value);
      var lastgoodsCount = this.data.goodsCount;
      if (e.detail.keyCode == 8) {
        if (app._isTextEmpty(e.detail.value)) {
          this.setData({
            goodsCount: ''
          });
          return;
        }
      }
      if (num) {
        this.setData({
          goodsCount: num
        });
      } else {
        this.setData({
          goodsCount: lastgoodsCount
        });
      }
    },
    //减少
    reduceGoods() {
      let lastgoodsCount = this.data.goodsCount;
      if (this.data.goodsCount == 1 || this.data.goodsCount == 0) {
        return;
      }
      this.setData({
        goodsCount: lastgoodsCount - 1
      });

    },
    //增加
    addGoods() {
      let lastgoodsCount = this.data.goodsCount;
      let specsManage = this.data.specsManage;
      let optionsMaxCount = this.data.optionsMaxCount;
      console.log("增加");
      if (specsManage.length == this.data.goodsInfo.has_many_specs.length && this.data.goodsCount == optionsMaxCount) {
        console.log("数量超出范围");
        wx.showToast({
          icon: 'none',
          title: '数量超出范围',
          duration: 1500
        });
        console.log("max=" + this.data.goodsCount);
        return;
      }
      this.setData({
        goodsCount: lastgoodsCount + 1
      });

    },
    //界面选择规格触发事件
    selectSpecs(e, str, i) {
      let data = {};
      let specsIdex = 0;
      if (str == 'first') {
        specsIdex = i;
        data = e;
      } else if(str =="sku_swiper"){
        data = e;
      } else {
        specsIdex = e.currentTarget.dataset.specsidex;
        data = e.currentTarget.dataset.specitem;
      }
      console.log(data);
      if (data.c) {
        return false;
      }
      this.setData({
        ["goodsInfo.has_many_specs[" + specsIdex + "].description"]: data.id
      });
      // let specid = data.specid; //对其他数据筛选 不筛选同级
      //处理选择池
      this.manageSpecs(data);
      //处理规格组合选择状态
      this.setGoodsSpecs(data);
      //设置选择规格后的 价格、照片、库存
      this.setGoodsSpecsChangeInfo();
      //判断当前购买总量与库存的关系
      this.getMaxCount();
    },
    //处理选择池
    manageSpecs(data) {
      let specsObject = new Object();
      let specsManage = this.data.specsManage;
      specsObject.id = data.id;
      specsObject.specid = data.specid;
      specsObject.title = data.title;

      if (specsManage.length > 0) {
        for (let i = 0; i < specsManage.length; i++) {
          if (specsManage[i].specid == specsObject.specid) {
            specsManage.splice(i, 1);
          }
        }
        specsManage.push(specsObject);
      } else {
        specsManage.push(specsObject);
      }

      //排序
      if (specsManage.length == this.data.goodsInfo.has_many_specs.length) {
        var newSpecsManage = [];
        for (let i = 0; i < this.data.goodsInfo.has_many_specs.length; i++) {
          for (let j = 0; j < specsManage.length; j++) {
            if (this.data.goodsInfo.has_many_specs[i].id == specsManage[j].specid) {
              newSpecsManage.push(specsManage[j]);
              break;
            }
          }
        }
        specsManage = newSpecsManage;
      }
      this.setData({
        specsManage: specsManage
      });
      this.setGoodsDescription();
    },
    //处理goodsDescription 数据
    setGoodsDescription() {
      let description = "";
      let specsManage = this.data.specsManage;
      //相等代表全选了 体现语句
      if (specsManage.length == this.data.goodsInfo.has_many_specs.length) {
        description = "已选择 ";
        for (let i = 0; i < specsManage.length; i++) {
          description += specsManage[i].title + " ";
        }
        this.setData({
          goodsDescription: description
        });
      } else {
        description = "请选择 ";
        for (let i = 0; i < this.data.goodsInfo.has_many_specs.length; i++) {
          for (let j = 0; j < specsManage.length; j++) {
            if (this.data.goodsInfo.has_many_specs[i].id != specsManage[j].specid) {
              description += this.data.goodsInfo.has_many_specs[i].title + " ";
              break;
            }
          }
        }
        this.setData({
          goodsDescription: description
        });
      }
    },
    //处理规格组合选择状态 过滤数据
    setGoodsSpecs(specs) {
      // let goodsInfo = this.data.goodsInfo;
      for (let i = 0; i < this.data.goodsInfo.has_many_specs.length; i++) {
        if (specs.specid != this.data.goodsInfo.has_many_specs[i].id) {
          // let specitem = this.setGoodsSpecsStatus(this.data.goodsInfo.has_many_specs[i].specitem, specs.id);
          // this.setData({
          // 	["goodsInfo.has_many_specs[" + i + "].specitem"]: specitem
          // })
        }
      }
    },
    //处理规格组合选择状态 处理状态 specitem 组合数组(未选中的) id当前选中的ID 根据ID 组合算是否有当前组合
    setGoodsSpecsStatus(specitem, id) {
      let options = []; //数据池
      for (let i = 0; i < this.data.goodsInfo.has_many_options.length; i++) {
        let _specs = this.data.goodsInfo.has_many_options[i].specs.split("_");
        //console.log(_specs);
        //判断是否包含
        for (let j = 0; j < _specs.length; j++) {
          if (_specs[j] == id) {
            options.push(this.data.goodsInfo.has_many_options[i]);
            return;
          }
        }
      }
      //关键处理方式 后期要优化 效率低
      for (let m = 0; m < options.length; m++) {
        let _specs = options[m].specs.split("_");
        for (let y = 0; y < _specs.length; y++) {
          if (_specs[y] != id && options[m].stock == 0) {
            for (let n = 0; n < specitem.length; n++) {
              if (_specs[y] == specitem[n].id) {
                specitem[n].c = true;
              }
            }
          } else if (_specs[y] != id && options[m].stock > 0) {
            for (let n = 0; n < specitem.length; n++) {
              if (_specs[y] == specitem[n].id) {
                specitem[n].c = false;
              }
            }
          }
        }
      }
      return specitem;
    },
    //设置选择规格后的 价格、照片、库存
    setGoodsSpecsChangeInfo() {
      let specsManage = this.data.specsManage;
      //根据ID 排序 specsManage.sort();
      specsManage.sort(function(a, b) {
        return a.id - b.id;
      });
      if (specsManage.length == this.data.goodsInfo.has_many_specs.length) {
        let goodsSpecs = "";
        for (let j = 0; j < specsManage.length; j++) {
          goodsSpecs += specsManage[j].id + "_";
        }
        goodsSpecs = goodsSpecs.substring(0, goodsSpecs.length - 1); //处理"_"
        for (let i = 0; i < this.data.goodsInfo.has_many_options.length; i++) {
          if (goodsSpecs == this.setGoodsSpecsBySort(this.data.goodsInfo.has_many_options[i].specs)) {
            this.setData({
              activeSkuIndex:i,
              popPrice: this.data.goodsInfo.has_many_options[i].product_price, //设置价格
              popThumb: app._isTextEmpty(this.data.goodsInfo.has_many_options[i].thumb) ? this.data.goodsInfo.thumb : this
                .data.goodsInfo.has_many_options[i].thumb, //设置图片
              popStock: this.data.goodsInfo.has_many_options[i].stock, //设置库存
              optionsId: this.data.goodsInfo.has_many_options[i].id //设置规格ID，用于生成订单
            });
            this.data.optionsMaxCount = this.data.goodsInfo.has_many_options[i].stock; //库存最大数 用于切换更改买家购买数量
            if (this.data.optionsMaxCount > 0) {
              this.setData({
                goodsCount: 1
              });
            }

            break;
          }
        }
      }

      this.setData({
        specsManage: specsManage
      });
    },
    //处理商品goodsSpecs 并排序 新方法
    setGoodsSpecsBySort(specs) {
      let _specs = specs.split("_"); //先变成数组
      //_specs.sort();//排序
      _specs.sort(function(a, b) {
        return a - b;
      });
      // 在组装回去
      let goodsSpecs = "";
      for (let j = 0; j < _specs.length; j++) {
        goodsSpecs += _specs[j] + "_";
      }
      goodsSpecs = goodsSpecs.substring(0, goodsSpecs.length - 1); //处理"_"
      return goodsSpecs;
    },
    //判断当前购买总量与库存的关系
    getMaxCount() {
      let specsManage = this.data.specsManage;
      let optionsMaxCount = this.data.optionsMaxCount;
      console.log(specsManage,optionsMaxCount,this.data.optionsId);
			
      if (specsManage.length == this.data.goodsInfo.has_many_specs.length) {
        if (optionsMaxCount == 0) //库存不足
        {
          this.setData({
            goodsCount: 0
          });
        }
        if (this.data.goodsCount > optionsMaxCount) {
          this.setData({
            goodsCount: optionsMaxCount
          });
        }
      }
      let {cartList,goodsInfo,optionsId} = this.data;

      console.log("666",cartList);
      if (cartList && cartList.length > 0) {
        for (let i = 0; i < cartList.length; i++) {
          if (cartList[i].goods_id === goodsInfo.id && cartList[i].option_id === optionsId) {
            console.log(cartList[i]);
            this.setData({
              goodsCount: cartList[i].total,
              cartid:cartList[i].id
            });
            break;
          }else {
            this.data.cartid=0;
          }
        }
      }
    },
    //============ 处理规格图片点击放大 start============
    showSkuImages_Methob() {
      this.setData({
        popupSpecs1: false,
        popupSpecs2: false,
        popupModeshow: true,
        showSkuImages: true
      });
      if (this.data.goodsInfo.has_option != 1) {
        return;
      }
      this.setData({
        activeSkuIndex_1: this.data.goodsInfo.has_many_options[this.data.activeSkuIndex].specs
      });

    },
    onChangeSkuImagesIndex(e) {
      let _index = e.detail.current;
      this.setData({
        activeSkuIndex: _index
      });
      if (this.data.goodsInfo.has_option != 1) {
        return;
      }
      this.setData({
        activeSkuIndex_2: this.data.goodsInfo.has_many_options[_index].specs
      });

    },
    onCloseSkuImages() {
      if (this.data.goodsInfo.has_option != 1) {
        this.setData({
          popupSpecs2: true,
          popupModeshow: false,
          showSkuImages: false
        });
        return;
      }
      let that = this;
      let _lastOption = that.data.activeSkuIndex_1.split("_");
      let goodsInfo = that.data.goodsInfo;
      let _activeSkuIndex = that.data.activeSkuIndex;

      if (that.data.activeSkuIndex_1 != that.data.goodsInfo.has_many_options[_activeSkuIndex].specs) {
        let _activeOption = that.data.activeSkuIndex_2.split("_");//如果没有滑动直接取值是取不到报错的
        for (let i = 0; i < _lastOption.length; i++) {
          if (_lastOption[i] != _activeOption[i]) {
            let _specs = Number(_activeOption[i]);
            for (let ind = 0; ind < that.data.goodsInfo.has_many_specs.length; ind++) {
              for (let index = 0; index < that.data.goodsInfo.has_many_specs[ind].specitem.length; index++) {
                if (that.data.goodsInfo.has_many_specs[ind].specitem[index].id == _specs) {
                  goodsInfo.has_many_specs[ind].description = that.data.goodsInfo.has_many_specs[ind].specitem[index].id;
                  // that.selectSpecs(that.data.goodsInfo.has_many_specs[ind].specitem[index],"sku_swiper")
                }
              }
            }
          }
        }
      }

      console.log(that.data.activeSkuIndex_1,"that.data.activeSkuIndex_1");

      this.setData({
        goodsInfo: goodsInfo,
        showSkuImages: false,
        popupSpecs1: true,
        popupModeshow: false,

        popPrice: this.data.goodsInfo.has_many_options[_activeSkuIndex].product_price, //设置价格
        popThumb: app._isTextEmpty(this.data.goodsInfo.has_many_options[_activeSkuIndex].thumb) ? this.data.goodsInfo.thumb : this
          .data.goodsInfo.has_many_options[_activeSkuIndex].thumb, //设置图片
        popStock: this.data.goodsInfo.has_many_options[_activeSkuIndex].stock, //设置库存
        optionsId: this.data.goodsInfo.has_many_options[_activeSkuIndex].id //设置规格ID，用于生成订单
      });

    },
    //============ 处理规格图片点击放大 end============
  }
});
