123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566 |
- // pages/basket/basket.js
- var 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)
- },
- })
|