var app = getApp(); var util = require('../../utils/util.js') var WXAPI = require('../../utils/server.js'); Page({ data: { page: 1, minusStatuses: ['disabled', 'disabled', 'normal', 'normal', 'disabled'], total: 0.0, carts: [], cont: 1, upstatus: false, remind: '加载中', productData: '', shop: '', shop_logo: '', }, //页面加载完成函数 remind: '加载中', onReady: function () { var that = this; }, //下拉刷新 onPullDownRefresh: function () { wx.showNavigationBarLoading() //在标题栏中显示加载 this.loadProductData(); this.sum(); wx.hideNavigationBarLoading() //完成停止加载 wx.stopPullDownRefresh() //停止下拉刷新 }, bindMinus: function (e) { var that = this; var index = parseInt(e.currentTarget.dataset.index); var num = that.data.carts[index].num; var cart_id = e.currentTarget.dataset.cartid; // 如果只有1件了,就不允许再减了 if (num > 1) { num--; } if (num < 1) { wx.showToast({ title: '数量不能小于1!', icon: 'none', duration: 2000 }); } else { //编辑商品信息 var productArr = [{num: num,cart_id: cart_id}] let jsonstr = JSON.stringify(productArr) WXAPI.productUpNum({ accessId: app.globalData.accessId, storeId: 239, storeType: 1, goods: jsonstr }).then(res => { if (res.code == 200) { // util.getUesrBgplus(that, app, false) // 只有大于一件的时候,才能normal状态,否则disable状态 var minusStatus = num <= 1 ? 'disabled' : 'normal'; // 购物车数据 var carts = that.data.carts; carts[index].num = num; // 按钮可用状态 var minusStatuses = that.data.minusStatuses; minusStatuses[index] = minusStatus; // 将数值与状态写回 that.setData({ minusStatuses: minusStatuses }); that.sum(); } }); } }, //跳转首页 go_index: function () { wx.switchTab({ url: '../index/index' }) }, //清空购物车 delall: function () { var that = this; wx.showModal({ title: '提示', content: '你确认清空全部吗?', success: function (res) { if (res.confirm) { WXAPI.productDelAllCart({ accessId: app.globalData.accessId, storeId: 239, storeType: 1, }).then(res => { if (res.code == 200) { wx.showToast({ title: '操作成功!', duration: 2500 }); that.loadProductData(); // util.getUesrBgplus(that, app, false) } else { wx.showToast({ title: '操作失败!', duration: 2000 }); } }); } }, fail: function () { // fail wx.showToast({ title: '网络异常!', duration: 2000 }); } }); }, //编辑完成 ok: function () { var that = this; that.setData({ upstatus: false }); }, //编辑购物车 updata: function () { var that = this; that.setData({ upstatus: true }); }, //删除 delarr: function () { var that = this; var selectArr = [] // 遍历取出已勾选的cid for (var i = 0; i < this.data.carts.length; i++) { if (this.data.carts[i].selected) { selectArr.push(this.data.carts[i].id) } } if (selectArr.length == 0) { wx.showToast({ title: '请选择要删除的商品!', duration: 2000 }); return false; } var selectStr = selectArr.join(','); //将数组转换成string串 that.removeShopCard(selectStr); }, //移至收藏 shouc: function () { var that = this; var selectArr = [] // 遍历取出已勾选的cid for (var i = 0; i < this.data.carts.length; i++) { if (this.data.carts[i].selected) { selectArr.push(this.data.carts[i].id) } } if (selectArr.length == 0) { wx.showToast({ title: '请选择要收藏的商品!', duration: 2000 }); return false; } var selectStr = selectArr.join(','); //将数组转换成string串 WXAPI.productToCollection({ accessId: app.globalData.accessId, storeId: 239, storeType: 1, carts: selectStr, }).then(res => { // util.getUesrBgplus(that, app, false) if (res.code == 200) { wx.showToast({ title: '操作成功!', duration: 2000 }); that.loadProductData(); } else { wx.showToast({ title: '操作失败!', duration: 2000 }); } }); }, bindPlus: function (e) { var that = this; var index = parseInt(e.currentTarget.dataset.index); var num = that.data.carts[index].num; // 自增 num++; var stock = that.data.carts[index].stock; var cart_id = e.currentTarget.dataset.cartid; //编辑商品信息 var productArr = [{num: num,cart_id: cart_id}] let jsonstr = JSON.stringify(productArr) if (stock > num) { WXAPI.productUpNum({ accessId: app.globalData.accessId, storeId: 239, storeType: 1, goods: jsonstr }).then(res => { if (res.code == 200) { // util.getUesrBgplus(that, app, false) // 只有大于一件的时候,才能normal状态,否则disable状态 var minusStatus = num <= 1 ? 'disabled' : 'normal'; // 购物车数据 var carts = that.data.carts; carts[index].num = num; // 按钮可用状态 var minusStatuses = that.data.minusStatuses; minusStatuses[index] = minusStatus; // 将数值与状态写回 that.setData({ minusStatuses: minusStatuses }); that.sum(); } }); } else { wx.showToast({ title: '库存不足!', icon: 'none', duration: 2000 }); } }, bindCheckbox: function (e) { /*绑定点击事件,将checkbox样式改变为选中与非选中*/ //拿到下标值,以在carts作遍历指示用 var index = parseInt(e.currentTarget.dataset.index); //原始的icon状态 var selected = this.data.carts[index].selected; var carts = this.data.carts; // 对勾选状态取反 carts[index].selected = !selected; // 写回经点击修改后的数组 this.setData({ carts: carts }); this.sum(); }, bindSelectAll: function () { // 环境中目前已选状态 var selectedAllStatus = this.data.selectedAllStatus; // 取反操作 selectedAllStatus = !selectedAllStatus; // 购物车数据,关键是处理selected值 var carts = this.data.carts; // 遍历 for (var i = 0; i < carts.length; i++) { carts[i].selected = selectedAllStatus; } this.setData({ selectedAllStatus: selectedAllStatus, carts: carts }); this.sum() }, bindCheckout: function () { var selectArr = [] // 遍历取出已勾选的cid for (var i = 0; i < this.data.carts.length; i++) { if (this.data.carts[i].selected) { selectArr.push(this.data.carts[i].id) } } if (selectArr.length == 0) { wx.showToast({ title: '请选择要结算的商品!', duration: 2000 }); return false; } var selectStr = selectArr.join(','); //将数组转换成string串 //存回data wx.navigateTo({ url: '../order/pay?cartId=' + selectStr + '&product=', }) }, bindToastChange: function () { this.setData({ toastHidden: true }); }, sum: function () { var that = this; var carts = that.data.carts; // 计算总金额 var total = 0; var selected = 0; for (var i = 0; i < carts.length; i++) { if (carts[i].selected) { total += carts[i].num * carts[i].price; selected = ++selected; } } //判断全选 if (carts.length == selected && selected != 0) { that.setData({ selectedAllStatus: true, }); } else { that.setData({ selectedAllStatus: false, }); } // 写回经点击修改后的数组 .toFixed(2)取小数点2位 this.setData({ carts: carts, total: '¥ ' + total.toFixed(2) }); }, onLoad: function (options) { // this.loadProductData(); // this.sum(); }, onShow: function () { this.loadProductData(); this.sum(); // var cont = this.data.cont; // var carts = this.data.carts; // var purchase = app.d.purchase; // var that = this; // if (cont > 1 && purchase == 1) { // that.loadProductData(); // } else { // that.setData({ // carts: carts, // cont: cont + 1 // }); // } }, removeShopCard: function (carts) { var that = this; wx.showModal({ title: '提示', content: '你确认要删除选中的商品吗', success: function (res) { res.confirm && WXAPI.productDelcart({ accessId: app.globalData.accessId, storeId: 239, storeType: 1, cart_id: carts, }).then(res => { // util.getUesrBgplus(that, app, false) if (res.code == 200) { that.loadProductData(); } else { wx.showToast({ title: '操作失败!', duration: 2000 }); } }); }, fail: function () { // fail wx.showToast({ title: '网络异常!', duration: 2000 }); } }); }, // 数据加载 loadProductData: function () { var that = this; WXAPI.cartIndex({ accessId: app.globalData.accessId, storeId: 239, storeType: 1, page: 1 }).then(res => { if (res.code == 200) { var data = res.data; // if (data.data == 0) { // return // } that.setData({ carts: data.data, selectedAllStatus: false, total: '¥0.00', remind: '', shop: data.mch_list[0], shop_logo: data.mch_list.length>0?'https://cz-hl-shop.oss-cn-shanghai.aliyuncs.com/239/1/20230227/'+data.mch_list[0].logo:'' }); } else { wx.showToast({ title: res.message, duration: 2000 }); } }); }, bindManual: function (e) { var num = e.detail.value; var carid = e.target.dataset.cartid; var carts = this.data.carts; var that = this; var index = parseInt(e.currentTarget.dataset.index); var cat_num = that.data.carts[index].num; var cart_id = e.currentTarget.dataset.cartid; var stock = that.data.carts[index].stock; // console.log(num, cat_num, stock) if (Number(num) > 0) { if (Number(num) <= Number(stock)) { //编辑商品信息 var productArr = [{num: num,cart_id: cart_id}] let jsonstr = JSON.stringify(productArr) WXAPI.productUpNum({ accessId: app.globalData.accessId, storeId: 239, storeType: 1, goods: jsonstr }).then(res => { if (res.code == 200) { // 只有大于一件的时候,才能normal状态,否则disable状态 var minusStatus = num <= 1 ? 'disabled' : 'normal'; // 购物车数据 var carts = that.data.carts; carts[index].num = num; // 按钮可用状态 var minusStatuses = that.data.minusStatuses; minusStatuses[index] = minusStatus; // 将数值与状态写回 that.setData({ minusStatuses: minusStatuses }); that.sum(); } }); } else { wx.showToast({ title: '库存不足,请重新输入!', icon: 'none', duration: 2000 }); var carts = that.data.carts; that.setData({ carts: carts }); that.sum(); } } else { wx.showToast({ title: '数量不能小于1,请重新输入!', icon: 'none', duration: 2000 }); var carts = that.data.carts; that.setData({ carts: carts }); that.sum(); }; }, })