|
@@ -0,0 +1,464 @@
|
|
|
|
+var util = require('../../../utils/jmsUtil.js');
|
|
|
|
+var mall = require('../../../api/mall.js');
|
|
|
|
+var user = require('../../../utils/user.js');
|
|
|
|
+
|
|
|
|
+var app = getApp();
|
|
|
|
+
|
|
|
|
+Page({
|
|
|
|
+ data: {
|
|
|
|
+ cartGoods: [],
|
|
|
|
+ cartTotal: {
|
|
|
|
+ "goodsCount": 0,
|
|
|
|
+ "goodsAmount": 0.00,
|
|
|
|
+ "checkedGoodsCount": 0,
|
|
|
|
+ "checkedGoodsAmount": 0.00
|
|
|
|
+ },
|
|
|
|
+ isEditCart: false,
|
|
|
|
+ checkedAllStatus: true,
|
|
|
|
+ editCartList: [],
|
|
|
|
+ hasLogin: false
|
|
|
|
+ },
|
|
|
|
+ onLoad: function (options) {
|
|
|
|
+ // 页面初始化 options为页面跳转所带来的参数
|
|
|
|
+
|
|
|
|
+ },
|
|
|
|
+ onReady: function () {
|
|
|
|
+ // 页面渲染完成
|
|
|
|
+ },
|
|
|
|
+ onPullDownRefresh() {
|
|
|
|
+ wx.showNavigationBarLoading() //在标题栏中显示加载
|
|
|
|
+ this.getCartList();
|
|
|
|
+ wx.hideNavigationBarLoading() //完成停止加载
|
|
|
|
+ wx.stopPullDownRefresh() //停止下拉刷新
|
|
|
|
+ },
|
|
|
|
+ goIndex: function () {
|
|
|
|
+ wx.switchTab({
|
|
|
|
+ url: '/pages/index/index',
|
|
|
|
+ })
|
|
|
|
+ },
|
|
|
|
+ onShow: function () {
|
|
|
|
+ console.info(app.globalData.hasLogin)
|
|
|
|
+ let that = this;
|
|
|
|
+ that.getCartList();
|
|
|
|
+ // if (app.globalData.hasLogin) {
|
|
|
|
+ // that.setData({
|
|
|
|
+ // hasLogin: app.globalData.hasLogin
|
|
|
|
+ // });
|
|
|
|
+ // that.getCartList();
|
|
|
|
+ // } else {
|
|
|
|
+ // app.checkLoginReadyCallback = res => {
|
|
|
|
+ // this.setData({
|
|
|
|
+ // hasLogin: true
|
|
|
|
+ // });
|
|
|
|
+ // that.getCartList();
|
|
|
|
+ // }
|
|
|
|
+ // }
|
|
|
|
+
|
|
|
|
+ },
|
|
|
|
+ onHide: function () {
|
|
|
|
+ // 页面隐藏
|
|
|
|
+ },
|
|
|
|
+ onUnload: function () {
|
|
|
|
+ // 页面关闭
|
|
|
|
+ },
|
|
|
|
+ getPhoneNumber: function (e) {
|
|
|
|
+ let that = this;
|
|
|
|
+ var ivObj = e.detail.iv
|
|
|
|
+ var telObj = e.detail.encryptedData
|
|
|
|
+ let r_userid = wx.getStorageSync('r_userid');
|
|
|
|
+ if (r_userid == null || r_userid == "") r_userid = 0;
|
|
|
|
+ //------执行Login---------
|
|
|
|
+ wx.login({
|
|
|
|
+ success: res => {
|
|
|
|
+ util.request(mall.AuthRegister, {
|
|
|
|
+ code: res.code,
|
|
|
|
+ encryptedData: telObj,
|
|
|
|
+ iv: ivObj,
|
|
|
|
+ r_userid: r_userid
|
|
|
|
+ }).then(function (res) {
|
|
|
|
+ if (res.errno === 0) {
|
|
|
|
+ that.setData({
|
|
|
|
+ hasLogin: true
|
|
|
|
+ });
|
|
|
|
+ //存储用户信息
|
|
|
|
+ app.globalData.hasLogin = true;
|
|
|
|
+ wx.setStorageSync('userInfo', res.data.userInfo);
|
|
|
|
+ wx.setStorageSync('token', res.data.token);
|
|
|
|
+ wx.showToast({
|
|
|
|
+ title: '授权注册成功',
|
|
|
|
+ icon: 'success',
|
|
|
|
+ duration: 2000
|
|
|
|
+ })
|
|
|
|
+ }
|
|
|
|
+ });
|
|
|
|
+ }
|
|
|
|
+ });
|
|
|
|
+
|
|
|
|
+ //-----------------是否授权,授权通过进入主页面,授权拒绝则停留在登陆界面
|
|
|
|
+ if (e.detail.errMsg == 'getPhoneNumber:fail user deny') { //用户点击拒绝
|
|
|
|
+ wx.showModal({
|
|
|
|
+ title: '警告',
|
|
|
|
+ content: '您点击了拒绝授权,部分功能无法使用!!!',
|
|
|
|
+ showCancel: false,
|
|
|
|
+ confirmText: '确定',
|
|
|
|
+ success: function (res) {
|
|
|
|
+ // 用户没有授权成功,不需要改变 isHide 的值
|
|
|
|
+ if (res.confirm) {
|
|
|
|
+ wx.switchTab({
|
|
|
|
+ url: '/pages/index/index',
|
|
|
|
+ })
|
|
|
|
+ };
|
|
|
|
+ }
|
|
|
|
+ })
|
|
|
|
+ }
|
|
|
|
+ },
|
|
|
|
+ getCartList: function () {
|
|
|
|
+ let that = this;
|
|
|
|
+ util.request(mall.CartList).then(function (res) {
|
|
|
|
+ if (res.errno === 0) {
|
|
|
|
+ that.setData({
|
|
|
|
+ cartGoods: res.data.cartList,
|
|
|
|
+ cartTotal: res.data.cartTotal
|
|
|
|
+ });
|
|
|
|
+ that.setData({
|
|
|
|
+ checkedAllStatus: that.isCheckedAll()
|
|
|
|
+ });
|
|
|
|
+ //显示购物车角标
|
|
|
|
+ if (res.data.cartTotal != null) {
|
|
|
|
+ wx.setStorageSync('cartcount', res.data.cartTotal.goodsCount);
|
|
|
|
+ // user.cartshow();
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ });
|
|
|
|
+ },
|
|
|
|
+ isCheckedAll: function () {
|
|
|
|
+ //判断购物车商品已全选
|
|
|
|
+ return this.data.cartGoods.every(function (element, index, array) {
|
|
|
|
+ if (element.checked == true) {
|
|
|
|
+ return true;
|
|
|
|
+ } else {
|
|
|
|
+ return false;
|
|
|
|
+ }
|
|
|
|
+ });
|
|
|
|
+ },
|
|
|
|
+ doCheckedAll: function () {
|
|
|
|
+ let checkedAll = this.isCheckedAll()
|
|
|
|
+ this.setData({
|
|
|
|
+ checkedAllStatus: this.isCheckedAll()
|
|
|
|
+ });
|
|
|
|
+ },
|
|
|
|
+ checkedItem: function (event) {
|
|
|
|
+ let itemIndex = event.target.dataset.itemIndex;
|
|
|
|
+ let that = this;
|
|
|
|
+
|
|
|
|
+ let productIds = [];
|
|
|
|
+ productIds.push(that.data.cartGoods[itemIndex].commoditySkuId);
|
|
|
|
+ if (!this.data.isEditCart) {
|
|
|
|
+ util.request(mall.CartChecked, {
|
|
|
|
+ productIds: productIds,
|
|
|
|
+ isChecked: that.data.cartGoods[itemIndex].checked ? 0 : 1
|
|
|
|
+ }, 'POST').then(function (res) {
|
|
|
|
+ if (res.errno === 0) {
|
|
|
|
+ that.setData({
|
|
|
|
+ cartGoods: res.data.cartList,
|
|
|
|
+ cartTotal: res.data.cartTotal
|
|
|
|
+ });
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ that.setData({
|
|
|
|
+ checkedAllStatus: that.isCheckedAll()
|
|
|
|
+ });
|
|
|
|
+ });
|
|
|
|
+ } else {
|
|
|
|
+ //编辑状态
|
|
|
|
+ let tmpCartData = this.data.cartGoods.map(function (element, index, array) {
|
|
|
|
+ if (index == itemIndex) {
|
|
|
|
+ element.checked = !element.checked;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ return element;
|
|
|
|
+ });
|
|
|
|
+
|
|
|
|
+ that.setData({
|
|
|
|
+ cartGoods: tmpCartData,
|
|
|
|
+ checkedAllStatus: that.isCheckedAll(),
|
|
|
|
+ 'cartTotal.checkedGoodsCount': that.getCheckedGoodsCount()
|
|
|
|
+ });
|
|
|
|
+ }
|
|
|
|
+ },
|
|
|
|
+ getCheckedGoodsCount: function () {
|
|
|
|
+ let checkedGoodsCount = 0;
|
|
|
|
+ this.data.cartGoods.forEach(function (v) {
|
|
|
|
+ if (v.checked == true) {
|
|
|
|
+ checkedGoodsCount += v.number;
|
|
|
|
+ }
|
|
|
|
+ });
|
|
|
|
+ console.log(checkedGoodsCount);
|
|
|
|
+ return checkedGoodsCount;
|
|
|
|
+ },
|
|
|
|
+ getCheckedGoodsAmount: function () {
|
|
|
|
+ let checkedGoodsAmount = 0;
|
|
|
|
+ this.data.cartGoods.forEach(function (v) {
|
|
|
|
+ if (v.checked == true) {
|
|
|
|
+ checkedGoodsAmount += v.number * v.price;
|
|
|
|
+ }
|
|
|
|
+ });
|
|
|
|
+ return checkedGoodsAmount.toFixed(2);
|
|
|
|
+ },
|
|
|
|
+ checkedAll: function () {
|
|
|
|
+ let that = this;
|
|
|
|
+
|
|
|
|
+ if (!this.data.isEditCart) {
|
|
|
|
+ var productIds = this.data.cartGoods.map(function (v) {
|
|
|
|
+ return v.skuId;
|
|
|
|
+ });
|
|
|
|
+ util.request(mall.CartChecked, {
|
|
|
|
+ productIds: productIds,
|
|
|
|
+ isChecked: that.isCheckedAll() ? 0 : 1
|
|
|
|
+ }, 'POST').then(function (res) {
|
|
|
|
+ if (res.errno === 0) {
|
|
|
|
+ console.log(res.data);
|
|
|
|
+ that.setData({
|
|
|
|
+ cartGoods: res.data.cartList,
|
|
|
|
+ cartTotal: res.data.cartTotal
|
|
|
|
+ });
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ that.setData({
|
|
|
|
+ checkedAllStatus: that.isCheckedAll()
|
|
|
|
+ });
|
|
|
|
+ });
|
|
|
|
+ } else {
|
|
|
|
+ //编辑状态
|
|
|
|
+ let checkedAllStatus = that.isCheckedAll();
|
|
|
|
+ let tmpCartData = this.data.cartGoods.map(function (v) {
|
|
|
|
+ v.checked = !checkedAllStatus;
|
|
|
|
+ return v;
|
|
|
|
+ });
|
|
|
|
+
|
|
|
|
+ that.setData({
|
|
|
|
+ cartGoods: tmpCartData,
|
|
|
|
+ checkedAllStatus: that.isCheckedAll(),
|
|
|
|
+ 'cartTotal.checkedGoodsCount': that.getCheckedGoodsCount()
|
|
|
|
+ });
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ },
|
|
|
|
+ editCart: function () {
|
|
|
|
+ var that = this;
|
|
|
|
+ if (this.data.isEditCart) {
|
|
|
|
+ this.getCartList();
|
|
|
|
+ this.setData({
|
|
|
|
+ isEditCart: !this.data.isEditCart
|
|
|
|
+ });
|
|
|
|
+ } else {
|
|
|
|
+ //编辑状态
|
|
|
|
+ let tmpCartList = this.data.cartGoods.map(function (v) {
|
|
|
|
+ v.checked = false;
|
|
|
|
+ return v;
|
|
|
|
+ });
|
|
|
|
+ this.setData({
|
|
|
|
+ editCartList: this.data.cartGoods,
|
|
|
|
+ cartGoods: tmpCartList,
|
|
|
|
+ isEditCart: !this.data.isEditCart,
|
|
|
|
+ checkedAllStatus: that.isCheckedAll(),
|
|
|
|
+ 'cartTotal.checkedGoodsCount': that.getCheckedGoodsCount()
|
|
|
|
+ });
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ },
|
|
|
|
+ updateCart: function (cartItem,index,number,count) {
|
|
|
|
+ let that = this;
|
|
|
|
+
|
|
|
|
+ util.request(mall.CartUpdate, {
|
|
|
|
+ id:cartItem.id,
|
|
|
|
+ commodityId:cartItem.commodityId,
|
|
|
|
+ commoditySkuId:cartItem.skuId,
|
|
|
|
+ number:number
|
|
|
|
+ }, 'POST').then(res=> {
|
|
|
|
+ console.log(res);
|
|
|
|
+ if(res.errno==0){
|
|
|
|
+
|
|
|
|
+ // cartItem.number = number;
|
|
|
|
+ let cartItem = "cartGoods[" + index + "].number";
|
|
|
|
+ this.setData({
|
|
|
|
+ [cartItem]:number,
|
|
|
|
+ });
|
|
|
|
+ console.log(this.data.cartGoods);
|
|
|
|
+ this.setData({
|
|
|
|
+
|
|
|
|
+ 'cartTotal.checkedGoodsAmount': that.getCheckedGoodsAmount(),
|
|
|
|
+ 'cartTotal.checkedGoodsCount': that.getCheckedGoodsCount()
|
|
|
|
+ });
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+ user.cartadd(count);
|
|
|
|
+ that.setData({
|
|
|
|
+ checkedAllStatus: that.isCheckedAll()
|
|
|
|
+ });
|
|
|
|
+ }else{
|
|
|
|
+ util.showErrorToast(res.errmsg);
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ }).catch(err=>{
|
|
|
|
+ console.log(err);
|
|
|
|
+ util.showErrorToast(err.errno);
|
|
|
|
+ });
|
|
|
|
+
|
|
|
|
+ },
|
|
|
|
+ cutNumber: function (event) {
|
|
|
|
+ let that = this;
|
|
|
|
+ let itemIndex = event.target.dataset.itemIndex;
|
|
|
|
+ let cartItem = this.data.cartGoods[itemIndex];
|
|
|
|
+ //删除操作
|
|
|
|
+ if (cartItem.number == 1) {
|
|
|
|
+ wx.showModal({
|
|
|
|
+ title: "提醒",
|
|
|
|
+ content: "确定从购物车删除?",
|
|
|
|
+ success(res) {
|
|
|
|
+ if (res.confirm)
|
|
|
|
+ that.deleteCartGoods(cartItem);
|
|
|
|
+ }
|
|
|
|
+ })
|
|
|
|
+
|
|
|
|
+ } else {
|
|
|
|
+ let number = (cartItem.number - 1 > 1) ? cartItem.number - 1 : 1;
|
|
|
|
+ // cartItem.number = number;
|
|
|
|
+ // this.setData({
|
|
|
|
+ // cartGoods: this.data.cartGoods,
|
|
|
|
+ // 'cartTotal.checkedGoodsAmount': that.getCheckedGoodsAmount(),
|
|
|
|
+ // 'cartTotal.checkedGoodsCount': that.getCheckedGoodsCount()
|
|
|
|
+ // });
|
|
|
|
+ this.updateCart(cartItem,itemIndex,number,-1);
|
|
|
|
+ //显示tab购物车
|
|
|
|
+ // user.cartadd(-1);
|
|
|
|
+ }
|
|
|
|
+ },
|
|
|
|
+ addNumber: function (event) {
|
|
|
|
+
|
|
|
|
+ let that = this;
|
|
|
|
+ let itemIndex = event.target.dataset.itemIndex;
|
|
|
|
+ let cartItem = this.data.cartGoods[itemIndex];
|
|
|
|
+ console.log(cartItem);
|
|
|
|
+ if(cartItem.goodsSn=='1036016'){
|
|
|
|
+ wx.showToast({
|
|
|
|
+ title: '此款商品只能购买一个',
|
|
|
|
+ icon: 'none',
|
|
|
|
+ duration: 2000
|
|
|
|
+ });
|
|
|
|
+ var number=1;
|
|
|
|
+ }else{
|
|
|
|
+
|
|
|
|
+ var number = cartItem.number + 1;
|
|
|
|
+ //显示tab购物车
|
|
|
|
+ // user.cartadd(1);
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ // cartItem.number = number;
|
|
|
|
+ // this.setData({
|
|
|
|
+ // cartGoods: this.data.cartGoods,
|
|
|
|
+ // 'cartTotal.checkedGoodsAmount': that.getCheckedGoodsAmount(),
|
|
|
|
+ // 'cartTotal.checkedGoodsCount': that.getCheckedGoodsCount()
|
|
|
|
+ // });
|
|
|
|
+ this.updateCart(cartItem,itemIndex,number,1);
|
|
|
|
+
|
|
|
|
+ },
|
|
|
|
+ checkoutOrder: function () { //下单
|
|
|
|
+ //获取已选择的商品
|
|
|
|
+ let that = this;
|
|
|
|
+
|
|
|
|
+ var checkedGoods = this.data.cartGoods.filter(function (element, index, array) {
|
|
|
|
+ if (element.checked == true) {
|
|
|
|
+ return true;
|
|
|
|
+ } else {
|
|
|
|
+ return false;
|
|
|
|
+ }
|
|
|
|
+ });
|
|
|
|
+
|
|
|
|
+ if (checkedGoods.length <= 0) {
|
|
|
|
+ util.showErrorToast('请先选择商品')
|
|
|
|
+ return false;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ // storage中设置了cartId,则是购物车购买
|
|
|
|
+ try {
|
|
|
|
+ wx.setStorageSync('cartId', 0);
|
|
|
|
+ wx.navigateTo({
|
|
|
|
+ url: '/pages/mall/checkout/checkout'
|
|
|
|
+ })
|
|
|
|
+ } catch (e) {}
|
|
|
|
+
|
|
|
|
+ },
|
|
|
|
+ deleteCart: function () {
|
|
|
|
+ //获取已选择的商品
|
|
|
|
+ let that = this;
|
|
|
|
+
|
|
|
|
+ let productIds = this.data.cartGoods.filter(function (element, index, array) {
|
|
|
|
+ if (element.checked == true) {
|
|
|
|
+ return true;
|
|
|
|
+ } else {
|
|
|
|
+ return false;
|
|
|
|
+ }
|
|
|
|
+ });
|
|
|
|
+
|
|
|
|
+ if (productIds.length <= 0) {
|
|
|
|
+ return false;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ productIds = productIds.map(function (element, index, array) {
|
|
|
|
+ if (element.checked == true) {
|
|
|
|
+ return element.productId;
|
|
|
|
+ }
|
|
|
|
+ });
|
|
|
|
+let arr=[];
|
|
|
|
+arr.push(productIds);
|
|
|
|
+console.log(arr);
|
|
|
|
+
|
|
|
|
+ util.request(mall.CartDelete, {
|
|
|
|
+ productIds: arr
|
|
|
|
+ }, 'POST').then(function (res) {
|
|
|
|
+ console.log(res);
|
|
|
|
+ if (res.errno === 0) {
|
|
|
|
+ let cartList = res.data.cartList.map(v => {
|
|
|
|
+ v.checked = false;
|
|
|
|
+ return v;
|
|
|
|
+ });
|
|
|
|
+
|
|
|
|
+ that.setData({
|
|
|
|
+ cartGoods: cartList,
|
|
|
|
+ cartTotal: res.data.cartTotal
|
|
|
|
+ });
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ that.setData({
|
|
|
|
+ checkedAllStatus: that.isCheckedAll()
|
|
|
|
+ });
|
|
|
|
+ });
|
|
|
|
+ },
|
|
|
|
+ deleteCartGoods: function (cartItem) {
|
|
|
|
+ //获取已选择的商品
|
|
|
|
+ let that = this;
|
|
|
|
+ console.log(cartItem);
|
|
|
|
+ util.request(mall.CartDelete, {
|
|
|
|
+ productIds:[cartItem.skuId],
|
|
|
|
+ }, 'POST').then(function (res) {
|
|
|
|
+ console.log(res.data);
|
|
|
|
+ if (res.errno === 0) {
|
|
|
|
+ let cartList = res.data.cartList.map(v => {
|
|
|
|
+ v.checked = false;
|
|
|
|
+ return v;
|
|
|
|
+ });
|
|
|
|
+
|
|
|
|
+ that.setData({
|
|
|
|
+ cartGoods: cartList,
|
|
|
|
+ cartTotal: res.data.cartTotal
|
|
|
|
+ });
|
|
|
|
+ user.cartadd(-1);
|
|
|
|
+ user.cartshow();
|
|
|
|
+ }
|
|
|
|
+ that.setData({
|
|
|
|
+ checkedAllStatus: that.isCheckedAll()
|
|
|
|
+ });
|
|
|
|
+ });
|
|
|
|
+ }
|
|
|
|
+})
|