| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566 | // pages/basket/basket.jsvar http = require("../../utils/http.js");var util = require("../../utils/util.js");const Big = require("../../utils/big.min.js");Page({  /**   * 页面的初始数据   */  data: {    // picDomain: config.picDomain,    shopCartOrders: [], //所有店铺的数据    shopCartItemDiscounts: [],    finalMoney: 0,    totalMoney: 0,    subtractMoney: 0,    allChecked: true,    hideModal: true, //模态框的状态  true-隐藏  false-显示    hidePriModal: true, //金额明细模态框的状态  true-隐藏  false-显示    animationData: {},    prodDiscounts: [],    discountid: -1,    basketId: 0,    toPayArray: []  },  /**   * 生命周期函数--监听页面加载   */  onLoad: function (options) {  },  /**   * 生命周期函数--监听页面初次渲染完成   */  onReady: function () {  },  /**   * 生命周期函数--监听页面显示   */  onShow: function () {    //加载购物车    this.loadBasketData(null)  },  /**   * 生命周期函数--监听页面隐藏   */  onHide: function () {    this.setData({      shopCartOrders: [],    })  },  /**   * 加载订单数据   */  loadBasketData(discountData) {    var reqData = [];    var shopCartIds = [];    if (discountData) {      reqData.push(discountData);      this.data.shopCartOrders.forEach(shopCart => {        shopCart.shopCartItemDiscounts.forEach(cItems => {          cItems.shopCartItems.forEach(pItem => {            if (pItem.checked) {              shopCartIds.push(pItem.basketId);            }          })        })      })    }    //加载购物车    var params = {      url: "/p/shopCart/info",      method: "POST",      data: reqData,      dontTrunLogin: true,      callBack: res => {        let img=''        res.forEach(item=>{          item.shopCartItemDiscounts.forEach(cart=>{            cart.shopCartItems.map(e=>{              img=e.pic.split(',')              e.pic=img[0]            })          })        })        if (res.length > 0) {          var shopCartOrders = res;          if (shopCartIds.length == 0) { // 初始加载                      this.setData({              shopCartOrders: shopCartOrders,            });          } else { // 修改购物车            var checkedLog = [] // 之前勾选的basketId数组            this.data.shopCartOrders.forEach(shopCart => {              shopCart.shopCartItemDiscounts.forEach(shopCartItemDiscount => {                shopCartItemDiscount.shopCartItems.forEach(shopCartItem => {                  if (shopCartItem.checked) {                    checkedLog.push(shopCartItem.basketId)                  }                })              })            })            shopCartOrders.forEach(newShopCart => {              newShopCart.shopCartItemDiscounts.forEach(newShopCartItemDiscount => {                newShopCartItemDiscount.shopCartItems.forEach(shopCartItem => {                  if (checkedLog.includes(shopCartItem.basketId)) {                    shopCartItem.checked = true                  }                })              });            })            this.setData({              shopCartOrders            })          }        } else {          this.setData({            shopCartOrders: [],          });        }        this.checkAllSelected()        this.calTotalPrice(); //计算总价      },    };    http.request(params);    http.getCartCount(); //重新计算购物车总数量  },  /**   * 去结算   */  toFirmOrder: function () {    var shopCartOrders = this.data.shopCartOrders;    var basketIds = [];    let arr =[]    shopCartOrders.forEach(shopCart => {      var shopCartItemDiscounts = shopCart.shopCartItemDiscounts;      shopCartItemDiscounts.forEach(shopCartItemDiscount => {        shopCartItemDiscount.shopCartItems.forEach(shopCartItem => {          if (shopCartItem.checked) {            arr.push({...shopCartItem})            basketIds.push(shopCartItem.basketId)          }        })      })    })    if (!basketIds.length) {      wx.showToast({        title: '请选择商品',        icon: "none"      })      return    }    const result =arr.every(item => item.shopId === arr[0].shopId);    console.log(result);    if (result==false) {      wx.showToast({        title: '多个门店不可同时结算~',        icon: "none"      })      return    }    wx.setStorageSync("basketIds", JSON.stringify(basketIds));    wx.navigateTo({      url: '/pages/submit-order/submit-order?orderEntry=0',    })  },  /**   * 全选   */  onSelAll: function () {    var allChecked = this.data.allChecked;    allChecked = !allChecked; //改变状态    var shopCartOrders = this.data.shopCartOrders;    if (allChecked) {      this.setData({        toPayArray: shopCartOrders      })    } else {      this.setData({        toPayArray: []      })    }    shopCartOrders.forEach(shopCart => {      shopCart.checked = allChecked;      var shopCartItemDiscounts = shopCart.shopCartItemDiscounts;      for (var i = 0; i < shopCartItemDiscounts.length; i++) {        var cItems = shopCartItemDiscounts[i].shopCartItems;        for (var j = 0; j < cItems.length; j++) {          cItems[j].checked = allChecked;        }      }    })    this.setData({      allChecked: allChecked,      shopCartOrders: shopCartOrders    });    this.calTotalPrice(); //计算总价  },  /**   * 每一项的选择事件   */  onSelectedItem: function (e) {    var index = e.currentTarget.dataset.index; // 获取data- 传进来的index    var scindex = e.currentTarget.dataset.scindex;    var topindex = e.currentTarget.dataset.topindex;    var shopCartOrders = this.data.shopCartOrders;    var shopCartItemDiscounts = shopCartOrders[topindex].shopCartItemDiscounts; // 获取购物车列表    var checked = shopCartItemDiscounts[scindex].shopCartItems[index].checked; // 获取当前商品的选中状态    shopCartItemDiscounts[scindex].shopCartItems[index].checked = !checked; // 改变状态    this.setData({      shopCartOrders: shopCartOrders    });    this.checkAllSelected(); //检查全选状态    this.calTotalPrice(); //计算总价  },  /**   * 每一个店铺的选择   */  onSelectedShopItem: function (e) {    let arr=[]    var topindex = e.currentTarget.dataset.topindex;    var shopCartOrders = this.data.shopCartOrders;    var checked = shopCartOrders[topindex].checked; // 获取当前商品的选中状态    shopCartOrders[topindex].checked = !checked; // 改变状态    if (shopCartOrders[topindex].checked) {      arr.push({...e})      this.setData({        toPayArray:arr      })    }else{      this.setData({        toPayArray:[]      })    }    shopCartOrders[topindex].shopCartItemDiscounts.forEach(shopCartItem => {      var cItems = shopCartItem.shopCartItems;      for (var j = 0; j < cItems.length; j++) {        cItems[j].checked = !checked;      }    })    this.setData({      shopCartOrders: shopCartOrders    });    this.checkAllSelected(); //检查全选状态    this.calTotalPrice(); //计算总价  },  /**   * 检查全选状态   */  checkAllSelected: function () {    var allChecked = true;    var shopCartOrders = this.data.shopCartOrders;    var flag = false;    shopCartOrders.forEach(shopCart => {      var shopChecked = true;      var shopCartItemDiscounts = shopCart.shopCartItemDiscounts;      for (var i = 0; i < shopCartItemDiscounts.length; i++) {        var cItems = shopCartItemDiscounts[i].shopCartItems;        for (var j = 0; j < cItems.length; j++) {          if (!cItems[j].checked) {            shopChecked = false;            allChecked = false;            flag = true;            break;          }        }        if (flag) {          break;        }      }      shopCart.checked = shopChecked;    })    this.setData({      allChecked: allChecked,      shopCartOrders: shopCartOrders    });  },  /**   * 计算购物车总额   */  calTotalPrice: function () {    var shopCartOrders = this.data.shopCartOrders;    var shopCartIds = [];    shopCartOrders.forEach(shopCart => {      var shopCartItemDiscounts = shopCart.shopCartItemDiscounts;      for (var i = 0; i < shopCartItemDiscounts.length; i++) {        var cItems = shopCartItemDiscounts[i].shopCartItems;        for (var j = 0; j < cItems.length; j++) {          if (cItems[j].checked) {            shopCartIds.push(cItems[j].basketId);          }        }      }    });    var ths = this;    wx.showLoading();    var params = {      url: "/p/shopCart/totalPay",      method: "POST",      data: shopCartIds,      callBack: function (res) {        ths.setData({          finalMoney: res.finalMoney,          totalMoney: res.totalMoney,          subtractMoney: res.subtractMoney        });        wx.hideLoading();      }    };    http.request(params);  },  /**   * 减少数量   */  onCountMinus: function (e) {    var index = e.currentTarget.dataset.index;    var scindex = e.currentTarget.dataset.scindex;    var topindex = e.currentTarget.dataset.topindex;    var shopCartOrders = this.data.shopCartOrders;    var shopCartItemDiscounts = shopCartOrders[topindex].shopCartItemDiscounts;    var prodCount = shopCartItemDiscounts[scindex].shopCartItems[index].prodCount;    if (prodCount > 1) {      this.updateCount(shopCartOrders, topindex, scindex, index, -1);    }  },  /**   * 增加数量   */  onCountPlus: function (e) {    var index = e.currentTarget.dataset.index;    var scindex = e.currentTarget.dataset.scindex;    var topindex = e.currentTarget.dataset.topindex;    var shopCartOrders = this.data.shopCartOrders;    this.updateCount(shopCartOrders, topindex, scindex, index, 1);  },  /**   * 改变购物车数量接口   */  updateCount: function (shopCartOrders, topindex, scindex, index, prodCount) {    var shopCartItemDiscounts = shopCartOrders[topindex].shopCartItemDiscounts;    var ths = this;    wx.showLoading({      mask: true    });    var params = {      url: "/p/shopCart/changeItem",      method: "POST",      data: {        count: prodCount,        prodId: shopCartItemDiscounts[scindex].shopCartItems[index].prodId,        skuId: shopCartItemDiscounts[scindex].shopCartItems[index].skuId,        shopId: shopCartItemDiscounts[scindex].shopCartItems[index].shopId      },      callBack: function (res) {        shopCartItemDiscounts[scindex].shopCartItems[index].prodCount += prodCount;        ths.setData({          shopCartOrders: shopCartOrders        });        var discountData = {          basketId: shopCartItemDiscounts[scindex].shopCartItems[index].basketId,          discountId: shopCartItemDiscounts[scindex].shopCartItems[index].discountId        }        ths.loadBasketData(discountData)        wx.hideLoading();      }    };    http.request(params);  },  /**   * 删除购物车商品   */  onDelBasket: function () {    var ths = this;    var shopCartOrders = this.data.shopCartOrders;    var basketIds = [];    shopCartOrders.forEach(shopCart => {      var shopCartItemDiscounts = shopCart.shopCartItemDiscounts;      for (var i = 0; i < shopCartItemDiscounts.length; i++) {        var cItems = shopCartItemDiscounts[i].shopCartItems;        for (var j = 0; j < cItems.length; j++) {          if (cItems[j].checked) {            basketIds.push(cItems[j].basketId);          }        }      }    })    if (basketIds.length == 0) {      wx.showToast({        title: '请选择商品',        icon: "none"      })    } else {      wx.showModal({        title: '',        content: '确认要删除选中的商品吗?',        confirmColor: "#eb2444",        success(res) {          if (res.confirm) {            wx.showLoading({              mask: true            });            var params = {              url: "/p/shopCart/deleteItem",              method: "DELETE",              data: basketIds,              callBack: function (res) {                wx.hideLoading();                ths.onShow();              }            };            http.request(params);          }        }      })    }  },  /**   * 点击满减活动 弹窗   */  onChooseDiscount: function (e) {    var that = this;    var basketId = e.currentTarget.dataset.basketid    var discounts = e.currentTarget.dataset.discounts    var discountid = e.currentTarget.dataset.discountid    this.setData({      prodDiscounts: discounts,      hideModal: false,      discountid: discountid,      basketId: basketId    });    var animation = wx.createAnimation({      duration: 500,      timingFunction: 'ease',    })    this.animation = animation    setTimeout(function () {      that.fadeIn();    }, 100)  },  radioChange(e) {    this.loadBasketData({      basketId: this.data.basketId,      discountId: e.detail.value    });    this.setData({      hideModal: true    });  },  // 隐藏遮罩层  hideModal: function () {    var that = this;    var animation = wx.createAnimation({      duration: 600,      timingFunction: 'ease',    })    this.animation = animation    that.fadeDown();    setTimeout(function () {      that.setData({        hideModal: true      })    }, 500)  },  //动画集  fadeIn: function () {    this.animation.translateY(0).step()    this.setData({      animationData: this.animation.export() //动画实例的export方法导出动画数据传递给组件的animation属性    })  },  fadeDown: function () {    this.animation.translateY(300).step()    this.setData({      animationData: this.animation.export(),    })  },  /**   * 跳转到商品详情`   */  toProdPage(e) {    wx.navigateTo({      url: '/pages/prod/prod?prodid=' + e.currentTarget.dataset.prodid,    })  },  /**   * 金额明细弹窗   */  showPriDet() {    var that = this;    if (this.data.hidePriModal == true) {      this.setData({        hidePriModal: false      })      var animation = wx.createAnimation({        duration: 500,        timingFunction: 'ease',      })      this.animation = animation      setTimeout(function () {        that.fadeIn();      }, 100)    } else if (this.data.hidePriModal == false) {      this.hidePriModal()    }  },  hidePriModal() {    var that = this;    var animation = wx.createAnimation({      duration: 800,      timingFunction: 'ease',    })    this.animation = animation    that.fadeDown();    setTimeout(function () {      that.setData({        hidePriModal: true      })    }, 680)  },})
 |