const _Http = getApp().globalData.http;
let downCount = {};
Component({
  properties: {

  },
  data: {
    isGet: false,
    list: [],
    results: [], //选中结果
    sa_brandid: null, //当前选中品牌id
    classList: [], //生成订单时所选
    sum: 0, //价格合
    yfsum: 0, //运费合
  },
  methods: {
    /* 获取列表 */
    getList() {
      _Http.basic({
        "id": 20220924095302,
        "content": {
          nocache: true,
          "istool": 1,
          "pageNumber": 1,
          "pageSize": getApp().globalData.num + 5,
          "where": {
            "condition": ""
          }
        }
      }).then(res => {
        console.log('购物车列表', res)
        if (res.msg != '成功') return wx.showToast({
          title: res.msg,
          icon: "none"
        })
        this.setData({
          list: res.data,
          isGet: true
        });

        if (wx.getStorageSync('shopping_tool')) {
          this.setData({
            ...wx.getStorageSync('shopping_tool')
          });
          this.computeSum();
        }
      })
    },
    clickBut(e) {
      this.data.classList.length >= 2 ? wx.showToast({
        title: '请选择订单领域(订单只允许同品牌/同领域的商品)',
        icon: "none",
        duration: 3000
      }) : this.handleSubmit(0);
    },
    /* 提交 */
    submit(e) {
      this.handleSubmit(e.detail.value)
    },
    handleSubmit(index) {
      let data = this.data.classList[index];
      _Http.basic({
        "id": 20221128183202,
        "content": {
          "istool": 1,
          "tradefield": data.type, //必选
          "items": data.list.map(v => {
            return {
              "sa_orderitemsid": 0,
              "itemid": v.itemid,
              "sa_brandid": v.sa_brandid,
              "qty": v.qty
            }
          })
        }
      }).then(res => {
        console.log("转化订单", res)
        if (res.msg != '成功') return wx.showToast({
          title: 'res.msg',
          icon: "none"
        });
        wx.showModal({
          title: '提示',
          content: '生成成功!是否立即前往',
          complete: (s) => {
            if (s.confirm) {
              wx.navigateTo({
                url: '/packageA/orderForm/detail?id=' + res.data.sa_orderid,
              })
            }
          }
        });
        this.getList();
      })
    },
    /* 切换选中项 */
    changeResults(e, my = false) {
      const {
        item
      } = my ? e : e.currentTarget.dataset;
      let results = this.data.results,
        sa_brandid = this.data.sa_brandid;
      if (sa_brandid && sa_brandid != item.sa_brandid) return;
      if (results.length == 0) {
        results.push(item.sa_shoppingcartid);
        sa_brandid = item.sa_brandid;
      } else {
        let index = results.findIndex(v => v == item.sa_shoppingcartid)
        if (index == -1) {
          results.push(item.sa_shoppingcartid);
        } else {
          results.splice(index, 1);
          if (results.length == 0) sa_brandid = null;
        }
      };
      this.setData({
        results,
        sa_brandid
      })
      this.computeSum();
    },
    /* 计算总价/产品领域分类 */
    computeSum() {
      let results = this.data.results,
        sum = 0,
        yfsum = 0,
        deteleList = [],
        classList = [];
      if (results.length) results.forEach((v, i) => {
        let item = this.data.list.find(va => va.sa_shoppingcartid == v);
        if (item) {
          sum += (item.qty * item.gradeprice).toFixed(2) - 0;
          /* 领域分类 */
          let index = classList.findIndex(value => value.type == item.tradefield_shoppingcart);
          if (index == -1) {
            classList.push({
              type: item.tradefield_shoppingcart,
              list: [item],
              name: item.tradefield_shoppingcart + "(1件商品)"
            })
          } else {
            classList[index].list.push(item)
            classList[index].name = classList[index].type + `(${classList[index].list.length}件商品)`
          }
        } else {
          deteleList.push(i)
        }
      });
      if (deteleList.length) {
        deteleList.forEach(v => {
          results.splice(v, 1);
        });
        getApp().globalData.num = getApp().globalData.num - deteleList.length;
      };
      let sa_brandid = results.length ? this.data.sa_brandid : null;
      wx.setStorageSync('shopping_tool', {
        results,
        sa_brandid
      })
      this.setData({
        sum,
        yfsum,
        results,
        sa_brandid,
        classList
      })
    },
    /* 删除产品 */
    deteleItem(e) {
      const {
        item
      } = e.currentTarget.dataset;
      _Http.basic({
        "id": 20220924095202,
        "content": {
          "sa_shoppingcartids": [item.sa_shoppingcartid]
        }
      }).then(res => {
        if (res.msg != '成功') return wx.showToast({
          title: res.msg,
          icon: "none"
        });
        this.setData({
          list: this.data.list.filter(v => v.sa_shoppingcartid != item.sa_shoppingcartid)
        })
        if (this.data.results.some(v => v == item.sa_shoppingcartid)) this.changeResults({
          item
        }, true);
        getApp().globalData.num = getApp().globalData.num - 1;
      })
    },
    /* 步进器调整 */
    stepperChange(e) {
      const {
        index
      } = e.currentTarget.dataset;
      let item = this.data.list[index];
      item.qty = e.detail;
      this.setData({
        [`list[${index}]`]: item
      })
      this.computeSum();
      clearTimeout(downCount['count' + index])
      downCount['count' + index] = setTimeout(() => {
        _Http.basic({
          "id": 20220924104302,
          "content": {
            "sa_shoppingcartid": item.sa_shoppingcartid,
            "qty": item.qty
          },
        }, false).then(res => {
          console.log("修改数量", res)
        })
      }, 2000)
    },
  }
})