From eb15845896b848c23da443d3190dc463f601dc58 Mon Sep 17 00:00:00 2001 From: Menethil Date: Sun, 22 Jul 2018 18:35:55 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E8=87=AA=E5=8A=A8=E6=9B=B4?= =?UTF-8?q?=E6=96=B0=EF=BC=8C=E9=83=A8=E5=88=86=E9=A1=B5=E9=9D=A2=E6=94=AF?= =?UTF-8?q?=E6=8C=81=E4=B8=8B=E6=8B=89=E5=88=B7=E6=96=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../litemall/wx/web/WxOrderController.java | 2 +- litemall-wx/app.js | 13 + litemall-wx/app.json | 4 +- litemall-wx/config/api.js | 113 +-- litemall-wx/pages/cart/cart.js | 573 +++++------ litemall-wx/pages/catalog/catalog.js | 150 +-- litemall-wx/pages/goods/goods.js | 902 +++++++++--------- litemall-wx/pages/index/index.js | 25 +- litemall-wx/pages/ucenter/index/index.json | 5 +- litemall-wx/pages/ucenter/order/order.js | 84 +- litemall-wx/project.config.json | 10 +- 11 files changed, 974 insertions(+), 907 deletions(-) diff --git a/litemall-wx-api/src/main/java/org/linlinjava/litemall/wx/web/WxOrderController.java b/litemall-wx-api/src/main/java/org/linlinjava/litemall/wx/web/WxOrderController.java index 1784cda9..f466c380 100644 --- a/litemall-wx-api/src/main/java/org/linlinjava/litemall/wx/web/WxOrderController.java +++ b/litemall-wx-api/src/main/java/org/linlinjava/litemall/wx/web/WxOrderController.java @@ -559,7 +559,7 @@ public class WxOrderController { * 这里微信的短信平台对参数长度有限制,所以将订单号只截取后6位 * */ - notifyService.notifySmsTemplate(order.getMobile(), NotifyType.PAY_SUCCEED, new String[]{orderSn.substring(8, 14)}); + notifyService.notifySmsTemplateSync(order.getMobile(), NotifyType.PAY_SUCCEED, new String[]{orderSn.substring(8, 14)}); return WxPayNotifyResponse.success("处理成功!"); } catch (Exception e) { diff --git a/litemall-wx/app.js b/litemall-wx/app.js index a4e5e554..20f09bcd 100644 --- a/litemall-wx/app.js +++ b/litemall-wx/app.js @@ -4,6 +4,19 @@ var user = require('./utils/user.js'); App({ onLaunch: function () { + const updateManager = wx.getUpdateManager(); + wx.getUpdateManager().onUpdateReady(function () { + wx.showModal({ + title: '更新提示', + content: '新版本已经准备好,是否重启应用?', + success: function (res) { + if (res.confirm) { + // 新的版本已经下载好,调用 applyUpdate 应用新版本并重启 + updateManager.applyUpdate() + } + } + }) + }) }, onShow: function (options) { user.checkLogin().then(res => { diff --git a/litemall-wx/app.json b/litemall-wx/app.json index 77d8bc39..3490e43f 100644 --- a/litemall-wx/app.json +++ b/litemall-wx/app.json @@ -35,10 +35,10 @@ "window": { "navigationBarBackgroundColor": "#FFFFFF", "navigationBarTitleText": "litemall小程序商城", + "enablePullDownRefresh": true, "navigationBarTextStyle": "black", "backgroundColor": "#FFFFFF", - "backgroundTextStyle": "dark", - "enablePullDownRefresh": false + "backgroundTextStyle": "dark" }, "tabBar": { "backgroundColor": "#fafafa", diff --git a/litemall-wx/config/api.js b/litemall-wx/config/api.js index 2a4aef5d..274e8653 100644 --- a/litemall-wx/config/api.js +++ b/litemall-wx/config/api.js @@ -6,7 +6,7 @@ // 云平台部署时使用 var WxApiRoot = 'http://122.152.206.172:8082/wx/'; // 云平台上线时使用 -// var WxApiRoot = 'https://www.example.com/wx/'; +// var WxApiRoot = 'https://www.menethil.com.cn/wx/'; // 以下是图片存储服务器API地址 // 本机开发时使用 @@ -16,75 +16,76 @@ var WxApiRoot = 'http://122.152.206.172:8082/wx/'; // 云平台部署时使用 var StorageApi = 'http://122.152.206.172:8081/os/storage/create'; // 云平台上线时使用 -// var StorageApi = 'https://www.example.com/os/storage/create'; +// var StorageApi = 'https://www.menethil.com.cn/os/storage/create'; module.exports = { - IndexUrl: WxApiRoot + 'home/index', //首页数据接口 - CatalogList: WxApiRoot + 'catalog/index', //分类目录全部分类数据接口 - CatalogCurrent: WxApiRoot + 'catalog/current', //分类目录当前分类数据接口 + IndexUrl: WxApiRoot + 'home/index', //首页数据接口 + CatalogList: WxApiRoot + 'catalog/index', //分类目录全部分类数据接口 + CatalogCurrent: WxApiRoot + 'catalog/current', //分类目录当前分类数据接口 - AuthLoginByWeixin: WxApiRoot + 'auth/login_by_weixin', //微信登录 - AuthLoginByAccount: WxApiRoot + 'auth/login', //账号登录 - AuthRegister: WxApiRoot + 'auth/register', //账号注册 - AuthReset: WxApiRoot + 'auth/reset', //账号密码重置 + AuthLoginByWeixin: WxApiRoot + 'auth/login_by_weixin', //微信登录 + AuthLoginByAccount: WxApiRoot + 'auth/login', //账号登录 + AuthRegister: WxApiRoot + 'auth/register', //账号注册 + AuthReset: WxApiRoot + 'auth/reset', //账号密码重置 + AuthRegisterCaptcha: WxApiRoot + 'auth/regCaptcha', //验证码 - GoodsCount: WxApiRoot + 'goods/count', //统计商品总数 - GoodsList: WxApiRoot + 'goods/list', //获得商品列表 - GoodsCategory: WxApiRoot + 'goods/category', //获得分类数据 - GoodsDetail: WxApiRoot + 'goods/detail', //获得商品的详情 - GoodsNew: WxApiRoot + 'goods/new', //新品 - GoodsHot: WxApiRoot + 'goods/hot', //热门 - GoodsRelated: WxApiRoot + 'goods/related', //商品详情页的关联商品(大家都在看) + GoodsCount: WxApiRoot + 'goods/count', //统计商品总数 + GoodsList: WxApiRoot + 'goods/list', //获得商品列表 + GoodsCategory: WxApiRoot + 'goods/category', //获得分类数据 + GoodsDetail: WxApiRoot + 'goods/detail', //获得商品的详情 + GoodsNew: WxApiRoot + 'goods/new', //新品 + GoodsHot: WxApiRoot + 'goods/hot', //热门 + GoodsRelated: WxApiRoot + 'goods/related', //商品详情页的关联商品(大家都在看) - BrandList: WxApiRoot + 'brand/list', //品牌列表 - BrandDetail: WxApiRoot + 'brand/detail', //品牌详情 + BrandList: WxApiRoot + 'brand/list', //品牌列表 + BrandDetail: WxApiRoot + 'brand/detail', //品牌详情 - CartList: WxApiRoot + 'cart/index', //获取购物车的数据 - CartAdd: WxApiRoot + 'cart/add', // 添加商品到购物车 - CartFastAdd: WxApiRoot + 'cart/fastadd', // 立即购买商品 - CartUpdate: WxApiRoot + 'cart/update', // 更新购物车的商品 - CartDelete: WxApiRoot + 'cart/delete', // 删除购物车的商品 - CartChecked: WxApiRoot + 'cart/checked', // 选择或取消选择商品 - CartGoodsCount: WxApiRoot + 'cart/goodscount', // 获取购物车商品件数 - CartCheckout: WxApiRoot + 'cart/checkout', // 下单前信息确认 + CartList: WxApiRoot + 'cart/index', //获取购物车的数据 + CartAdd: WxApiRoot + 'cart/add', // 添加商品到购物车 + CartFastAdd: WxApiRoot + 'cart/fastadd', // 立即购买商品 + CartUpdate: WxApiRoot + 'cart/update', // 更新购物车的商品 + CartDelete: WxApiRoot + 'cart/delete', // 删除购物车的商品 + CartChecked: WxApiRoot + 'cart/checked', // 选择或取消选择商品 + CartGoodsCount: WxApiRoot + 'cart/goodscount', // 获取购物车商品件数 + CartCheckout: WxApiRoot + 'cart/checkout', // 下单前信息确认 - CollectList: WxApiRoot + 'collect/list', //收藏列表 - CollectAddOrDelete: WxApiRoot + 'collect/addordelete', //添加或取消收藏 + CollectList: WxApiRoot + 'collect/list', //收藏列表 + CollectAddOrDelete: WxApiRoot + 'collect/addordelete', //添加或取消收藏 - CommentList: WxApiRoot + 'comment/list', //评论列表 - CommentCount: WxApiRoot + 'comment/count', //评论总数 - CommentPost: WxApiRoot + 'comment/post', //发表评论 + CommentList: WxApiRoot + 'comment/list', //评论列表 + CommentCount: WxApiRoot + 'comment/count', //评论总数 + CommentPost: WxApiRoot + 'comment/post', //发表评论 - TopicList: WxApiRoot + 'topic/list', //专题列表 - TopicDetail: WxApiRoot + 'topic/detail', //专题详情 - TopicRelated: WxApiRoot + 'topic/related', //相关专题 + TopicList: WxApiRoot + 'topic/list', //专题列表 + TopicDetail: WxApiRoot + 'topic/detail', //专题详情 + TopicRelated: WxApiRoot + 'topic/related', //相关专题 - SearchIndex: WxApiRoot + 'search/index', //搜索关键字 - SearchResult: WxApiRoot + 'search/result', //搜索结果 - SearchHelper: WxApiRoot + 'search/helper', //搜索帮助 - SearchClearHistory: WxApiRoot + 'search/clearhistory', //搜索历史清楚 + SearchIndex: WxApiRoot + 'search/index', //搜索关键字 + SearchResult: WxApiRoot + 'search/result', //搜索结果 + SearchHelper: WxApiRoot + 'search/helper', //搜索帮助 + SearchClearHistory: WxApiRoot + 'search/clearhistory', //搜索历史清楚 - AddressList: WxApiRoot + 'address/list', //收货地址列表 - AddressDetail: WxApiRoot + 'address/detail', //收货地址详情 - AddressSave: WxApiRoot + 'address/save', //保存收货地址 - AddressDelete: WxApiRoot + 'address/delete', //保存收货地址 + AddressList: WxApiRoot + 'address/list', //收货地址列表 + AddressDetail: WxApiRoot + 'address/detail', //收货地址详情 + AddressSave: WxApiRoot + 'address/save', //保存收货地址 + AddressDelete: WxApiRoot + 'address/delete', //保存收货地址 - ExpressQuery: WxApiRoot + 'express/query',//物流查询 + ExpressQuery: WxApiRoot + 'express/query', //物流查询 - RegionList: WxApiRoot + 'region/list', //获取区域列表 + RegionList: WxApiRoot + 'region/list', //获取区域列表 - OrderSubmit: WxApiRoot + 'order/submit', // 提交订单 - OrderPrepay: WxApiRoot + 'order/prepay', // 订单的预支付会话 - OrderList: WxApiRoot + 'order/list', //订单列表 - OrderDetail: WxApiRoot + 'order/detail', //订单详情 - OrderCancel: WxApiRoot + 'order/cancel', //取消订单 - OrderRefund: WxApiRoot + 'order/refund', //退款取消订单 - OrderDelete: WxApiRoot + 'order/delete', //删除订单 - OrderConfirm: WxApiRoot + 'order/confirm', //确认收货 - OrderComment: WxApiRoot + 'order/comment', // 代评价商品信息 + OrderSubmit: WxApiRoot + 'order/submit', // 提交订单 + OrderPrepay: WxApiRoot + 'order/prepay', // 订单的预支付会话 + OrderList: WxApiRoot + 'order/list', //订单列表 + OrderDetail: WxApiRoot + 'order/detail', //订单详情 + OrderCancel: WxApiRoot + 'order/cancel', //取消订单 + OrderRefund: WxApiRoot + 'order/refund', //退款取消订单 + OrderDelete: WxApiRoot + 'order/delete', //删除订单 + OrderConfirm: WxApiRoot + 'order/confirm', //确认收货 + OrderComment: WxApiRoot + 'order/comment', // 代评价商品信息 - FootprintList: WxApiRoot + 'footprint/list', //足迹列表 - FootprintDelete: WxApiRoot + 'footprint/delete', //删除足迹 + FootprintList: WxApiRoot + 'footprint/list', //足迹列表 + FootprintDelete: WxApiRoot + 'footprint/delete', //删除足迹 - StorageUpload: StorageApi, //图片上传 + StorageUpload: StorageApi, //图片上传 }; \ No newline at end of file diff --git a/litemall-wx/pages/cart/cart.js b/litemall-wx/pages/cart/cart.js index 4b34aa5b..f17e6db3 100644 --- a/litemall-wx/pages/cart/cart.js +++ b/litemall-wx/pages/cart/cart.js @@ -5,286 +5,299 @@ 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 + data: { + cartGoods: [], + cartTotal: { + "goodsCount": 0, + "goodsAmount": 0.00, + "checkedGoodsCount": 0, + "checkedGoodsAmount": 0.00 }, - onLoad: function (options) { - // 页面初始化 options为页面跳转所带来的参数 - }, - onReady: function () { - // 页面渲染完成 - }, - onShow: function () { - // 页面显示 - if (app.globalData.hasLogin){ - this.getCartList(); - } - - this.setData({ - hasLogin: app.globalData.hasLogin - }); - - }, - onHide: function () { - // 页面隐藏 - }, - onUnload: function () { - // 页面关闭 - }, - goLogin() { - wx.navigateTo({ url: "/pages/auth/login/login" }); - }, - getCartList: function () { - let that = this; - util.request(api.CartList).then(function (res) { - if (res.errno === 0) { - that.setData({ - cartGoods: res.data.cartList, - cartTotal: res.data.cartTotal - }); - - that.setData({ - checkedAllStatus: that.isCheckedAll() - }); - } - }); - }, - 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].productId); - if (!this.data.isEditCart) { - util.request(api.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; - }, - checkedAll: function () { - let that = this; - - if (!this.data.isEditCart) { - var productIds = this.data.cartGoods.map(function (v) { - return v.productId; - }); - util.request(api.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 (productId, goodsId, number, id) { - let that = this; - - util.request(api.CartUpdate, { - productId: productId, - goodsId: goodsId, - number: number, - id: id - }, 'POST').then(function (res) { - that.setData({ - checkedAllStatus: that.isCheckedAll() - }); - }); - - }, - cutNumber: function (event) { - - let itemIndex = event.target.dataset.itemIndex; - let cartItem = this.data.cartGoods[itemIndex]; - let number = (cartItem.number - 1 > 1) ? cartItem.number - 1 : 1; - cartItem.number = number; - this.setData({ - cartGoods: this.data.cartGoods - }); - this.updateCart(cartItem.productId, cartItem.goodsId, number, cartItem.id); - }, - addNumber: function (event) { - let itemIndex = event.target.dataset.itemIndex; - let cartItem = this.data.cartGoods[itemIndex]; - let number = cartItem.number + 1; - cartItem.number = number; - this.setData({ - cartGoods: this.data.cartGoods - }); - this.updateCart(cartItem.productId, cartItem.goodsId, number, cartItem.id); - - }, - 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) { - return false; - } - - // storage中设置了cartId,则是购物车购买 - try { - wx.setStorageSync('cartId', 0); - wx.navigateTo({ - url: '../shopping/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; - } - }); - - - util.request(api.CartDelete, { - productIds: productIds - }, 'POST').then(function (res) { - if (res.errno === 0) { - console.log(res.data); - 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() - }); - }); + isEditCart: false, + checkedAllStatus: true, + editCartList: [], + hasLogin: false + }, + onLoad: function(options) { + // 页面初始化 options为页面跳转所带来的参数 + }, + onReady: function() { + // 页面渲染完成 + }, + onPullDownRefresh() { + wx.showNavigationBarLoading() //在标题栏中显示加载 + this.getCartList(); + wx.hideNavigationBarLoading() //完成停止加载 + wx.stopPullDownRefresh() //停止下拉刷新 + }, + onShow: function() { + // 页面显示 + if (app.globalData.hasLogin) { + this.getCartList(); } + + this.setData({ + hasLogin: app.globalData.hasLogin + }); + + }, + onHide: function() { + // 页面隐藏 + }, + onUnload: function() { + // 页面关闭 + }, + goLogin() { + wx.navigateTo({ + url: "/pages/auth/login/login" + }); + }, + getCartList: function() { + let that = this; + util.request(api.CartList).then(function(res) { + if (res.errno === 0) { + that.setData({ + cartGoods: res.data.cartList, + cartTotal: res.data.cartTotal + }); + + that.setData({ + checkedAllStatus: that.isCheckedAll() + }); + } + }); + }, + 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].productId); + if (!this.data.isEditCart) { + util.request(api.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; + }, + checkedAll: function() { + let that = this; + + if (!this.data.isEditCart) { + var productIds = this.data.cartGoods.map(function(v) { + return v.productId; + }); + util.request(api.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(productId, goodsId, number, id) { + let that = this; + + util.request(api.CartUpdate, { + productId: productId, + goodsId: goodsId, + number: number, + id: id + }, 'POST').then(function(res) { + that.setData({ + checkedAllStatus: that.isCheckedAll() + }); + }); + + }, + cutNumber: function(event) { + + let itemIndex = event.target.dataset.itemIndex; + let cartItem = this.data.cartGoods[itemIndex]; + let number = (cartItem.number - 1 > 1) ? cartItem.number - 1 : 1; + cartItem.number = number; + this.setData({ + cartGoods: this.data.cartGoods + }); + this.updateCart(cartItem.productId, cartItem.goodsId, number, cartItem.id); + }, + addNumber: function(event) { + let itemIndex = event.target.dataset.itemIndex; + let cartItem = this.data.cartGoods[itemIndex]; + let number = cartItem.number + 1; + cartItem.number = number; + this.setData({ + cartGoods: this.data.cartGoods + }); + this.updateCart(cartItem.productId, cartItem.goodsId, number, cartItem.id); + + }, + 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) { + return false; + } + + // storage中设置了cartId,则是购物车购买 + try { + wx.setStorageSync('cartId', 0); + wx.navigateTo({ + url: '../shopping/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; + } + }); + + + util.request(api.CartDelete, { + productIds: productIds + }, 'POST').then(function(res) { + if (res.errno === 0) { + console.log(res.data); + 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() + }); + }); + } }) \ No newline at end of file diff --git a/litemall-wx/pages/catalog/catalog.js b/litemall-wx/pages/catalog/catalog.js index 5efe6e5a..15fc5538 100644 --- a/litemall-wx/pages/catalog/catalog.js +++ b/litemall-wx/pages/catalog/catalog.js @@ -2,77 +2,85 @@ var util = require('../../utils/util.js'); var api = require('../../config/api.js'); Page({ - data: { - categoryList: [], - currentCategory: {}, - currentSubCategoryList: {}, - scrollLeft: 0, - scrollTop: 0, - goodsCount: 0, - scrollHeight: 0 - }, - onLoad: function (options) { - this.getCatalog(); - }, - getCatalog: function () { - //CatalogList - let that = this; - wx.showLoading({ - title: '加载中...', - }); - util.request(api.CatalogList).then(function (res) { - that.setData({ - categoryList: res.data.categoryList, - currentCategory: res.data.currentCategory, - currentSubCategoryList: res.data.currentSubCategory - }); - wx.hideLoading(); - }); - util.request(api.GoodsCount).then(function (res) { - that.setData({ - goodsCount: res.data.goodsCount - }); - }); + data: { + categoryList: [], + currentCategory: {}, + currentSubCategoryList: {}, + scrollLeft: 0, + scrollTop: 0, + goodsCount: 0, + scrollHeight: 0 + }, + onLoad: function(options) { + this.getCatalog(); + }, + onPullDownRefresh() { + wx.showNavigationBarLoading() //在标题栏中显示加载 + this.getCatalog(); + wx.hideNavigationBarLoading() //完成停止加载 + wx.stopPullDownRefresh() //停止下拉刷新 + }, + getCatalog: function() { + //CatalogList + let that = this; + wx.showLoading({ + title: '加载中...', + }); + util.request(api.CatalogList).then(function(res) { + that.setData({ + categoryList: res.data.categoryList, + currentCategory: res.data.currentCategory, + currentSubCategoryList: res.data.currentSubCategory + }); + wx.hideLoading(); + }); + util.request(api.GoodsCount).then(function(res) { + that.setData({ + goodsCount: res.data.goodsCount + }); + }); - }, - getCurrentCategory: function (id) { - let that = this; - util.request(api.CatalogCurrent, { id: id }) - .then(function (res) { - that.setData({ - currentCategory: res.data.currentCategory, - currentSubCategoryList: res.data.currentSubCategory - }); - }); - }, - onReady: function () { - // 页面渲染完成 - }, - onShow: function () { - // 页面显示 - }, - onHide: function () { - // 页面隐藏 - }, - onUnload: function () { - // 页面关闭 - }, - getList: function () { - var that = this; - util.request(api.ApiRootUrl + 'api/catalog/' + that.data.currentCategory.catId) - .then(function (res) { - that.setData({ - categoryList: res.data, - }); - }); - }, - switchCate: function (event) { - var that = this; - var currentTarget = event.currentTarget; - if (this.data.currentCategory.id == event.currentTarget.dataset.id) { - return false; - } - - this.getCurrentCategory(event.currentTarget.dataset.id); + }, + getCurrentCategory: function(id) { + let that = this; + util.request(api.CatalogCurrent, { + id: id + }) + .then(function(res) { + that.setData({ + currentCategory: res.data.currentCategory, + currentSubCategoryList: res.data.currentSubCategory + }); + }); + }, + onReady: function() { + // 页面渲染完成 + }, + onShow: function() { + // 页面显示 + }, + onHide: function() { + // 页面隐藏 + }, + onUnload: function() { + // 页面关闭 + }, + getList: function() { + var that = this; + util.request(api.ApiRootUrl + 'api/catalog/' + that.data.currentCategory.catId) + .then(function(res) { + that.setData({ + categoryList: res.data, + }); + }); + }, + switchCate: function(event) { + var that = this; + var currentTarget = event.currentTarget; + if (this.data.currentCategory.id == event.currentTarget.dataset.id) { + return false; } + + this.getCurrentCategory(event.currentTarget.dataset.id); + } }) \ No newline at end of file diff --git a/litemall-wx/pages/goods/goods.js b/litemall-wx/pages/goods/goods.js index 4d940357..9e1a2e81 100644 --- a/litemall-wx/pages/goods/goods.js +++ b/litemall-wx/pages/goods/goods.js @@ -5,471 +5,479 @@ var api = require('../../config/api.js'); var user = require('../../utils/user.js'); Page({ - data: { - id: 0, - goods: {}, - attribute: [], - issueList: [], - comment: [], - brand: {}, - specificationList: [], - productList: [], - relatedGoods: [], - cartGoodsCount: 0, - userHasCollect: 0, - number: 1, + data: { + id: 0, + goods: {}, + attribute: [], + issueList: [], + comment: [], + brand: {}, + specificationList: [], + productList: [], + relatedGoods: [], + cartGoodsCount: 0, + userHasCollect: 0, + number: 1, + checkedSpecText: '规格数量选择', + tmpSpecText: '请选择规格数量', + checkedSpecPrice: 0, + openAttr: false, + noCollectImage: '/static/images/icon_collect.png', + hasCollectImage: '/static/images/icon_collect_checked.png', + collectImage: '/static/images/icon_collect.png', + soldout: false + }, + + onPullDownRefresh() { + wx.showNavigationBarLoading() //在标题栏中显示加载 + this.getGoodsInfo(); + wx.hideNavigationBarLoading() //完成停止加载 + wx.stopPullDownRefresh() //停止下拉刷新 + }, + + getGoodsInfo: function() { + let that = this; + util.request(api.GoodsDetail, { + id: that.data.id + }).then(function(res) { + if (res.errno === 0) { + + let _specificationList = res.data.specificationList + // 如果仅仅存在一种货品,那么商品页面初始化时默认checked + if (_specificationList.length == 1) { + if (_specificationList[0].valueList.length == 1) { + _specificationList[0].valueList[0].checked = true + + // 如果仅仅存在一种货品,那么商品价格应该和货品价格一致 + // 这里检测一下 + let _productPrice = res.data.productList[0].price; + let _goodsPrice = res.data.info.retailPrice; + if (_productPrice != _goodsPrice) { + console.error('商品数量价格和货品不一致'); + } + + that.setData({ + checkedSpecText: _specificationList[0].valueList[0].value, + tmpSpecText: '已选择:' + _specificationList[0].valueList[0].value, + }); + } + } + + that.setData({ + goods: res.data.info, + attribute: res.data.attribute, + issueList: res.data.issue, + comment: res.data.comment, + brand: res.data.brand, + specificationList: res.data.specificationList, + productList: res.data.productList, + userHasCollect: res.data.userHasCollect, + checkedSpecPrice: res.data.info.retailPrice + }); + + if (res.data.userHasCollect == 1) { + that.setData({ + collectImage: that.data.hasCollectImage + }); + } else { + that.setData({ + collectImage: that.data.noCollectImage + }); + } + + WxParse.wxParse('goodsDetail', 'html', res.data.info.desc, that); + + that.getGoodsRelated(); + } + }); + + }, + getGoodsRelated: function() { + let that = this; + util.request(api.GoodsRelated, { + id: that.data.id + }).then(function(res) { + if (res.errno === 0) { + that.setData({ + relatedGoods: res.data.goodsList, + }); + } + }); + + }, + clickSkuValue: function(event) { + let that = this; + let specName = event.currentTarget.dataset.name; + let specValueId = event.currentTarget.dataset.valueId; + + //判断是否可以点击 + + //TODO 性能优化,可在wx:for中添加index,可以直接获取点击的属性名和属性值,不用循环 + let _specificationList = this.data.specificationList; + for (let i = 0; i < _specificationList.length; i++) { + if (_specificationList[i].name === specName) { + for (let j = 0; j < _specificationList[i].valueList.length; j++) { + if (_specificationList[i].valueList[j].id == specValueId) { + //如果已经选中,则反选 + if (_specificationList[i].valueList[j].checked) { + _specificationList[i].valueList[j].checked = false; + } else { + _specificationList[i].valueList[j].checked = true; + } + } else { + _specificationList[i].valueList[j].checked = false; + } + } + } + } + this.setData({ + specificationList: _specificationList, + }); + //重新计算spec改变后的信息 + this.changeSpecInfo(); + + //重新计算哪些值不可以点击 + }, + //获取选中的规格信息 + getCheckedSpecValue: function() { + let checkedValues = []; + let _specificationList = this.data.specificationList; + for (let i = 0; i < _specificationList.length; i++) { + let _checkedObj = { + name: _specificationList[i].name, + valueId: 0, + valueText: '' + }; + for (let j = 0; j < _specificationList[i].valueList.length; j++) { + if (_specificationList[i].valueList[j].checked) { + _checkedObj.valueId = _specificationList[i].valueList[j].id; + _checkedObj.valueText = _specificationList[i].valueList[j].value; + } + } + checkedValues.push(_checkedObj); + } + + return checkedValues; + }, + //根据已选的值,计算其它值的状态 + setSpecValueStatus: function() { + + }, + //判断规格是否选择完整 + isCheckedAllSpec: function() { + return !this.getCheckedSpecValue().some(function(v) { + if (v.valueId == 0) { + return true; + } + }); + }, + getCheckedSpecKey: function() { + let checkedValue = this.getCheckedSpecValue().map(function(v) { + return v.valueText; + }); + + return checkedValue; + }, + changeSpecInfo: function() { + let checkedNameValue = this.getCheckedSpecValue(); + + //设置选择的信息 + let checkedValue = checkedNameValue.filter(function(v) { + if (v.valueId != 0) { + return true; + } else { + return false; + } + }).map(function(v) { + return v.valueText; + }); + if (checkedValue.length > 0) { + this.setData({ + tmpSpecText: checkedValue.join(' ') + }); + } else { + this.setData({ + tmpSpecText: '请选择规格数量' + }); + } + + + if (this.isCheckedAllSpec()) { + this.setData({ + checkedSpecText: this.data.tmpSpecText + }); + + // 规格所对应的货品选择以后 + let checkedProductArray = this.getCheckedProductItem(this.getCheckedSpecKey()); + if (!checkedProductArray || checkedProductArray.length <= 0) { + this.setData({ + soldout: true + }); + console.error('规格所对应货品不存在'); + return; + } + + let checkedProduct = checkedProductArray[0]; + if (checkedProduct.number > 0) { + this.setData({ + checkedSpecPrice: checkedProduct.price, + soldout: false + }); + } else { + this.setData({ + checkedSpecPrice: this.data.goods.retailPrice, + soldout: true + }); + } + + } else { + this.setData({ checkedSpecText: '规格数量选择', - tmpSpecText: '请选择规格数量', - checkedSpecPrice: 0, - openAttr: false, - noCollectImage: '/static/images/icon_collect.png', - hasCollectImage: '/static/images/icon_collect_checked.png', - collectImage: '/static/images/icon_collect.png', + checkedSpecPrice: this.data.goods.retailPrice, soldout: false - }, - getGoodsInfo: function() { - let that = this; - util.request(api.GoodsDetail, { - id: that.data.id - }).then(function(res) { - if (res.errno === 0) { + }); + } - let _specificationList = res.data.specificationList - // 如果仅仅存在一种货品,那么商品页面初始化时默认checked - if (_specificationList.length == 1) { - if (_specificationList[0].valueList.length == 1) { - _specificationList[0].valueList[0].checked = true + }, + getCheckedProductItem: function(key) { + return this.data.productList.filter(function(v) { + if (v.specifications.toString() == key.toString()) { + return true; + } else { + return false; + } + }); + }, + onLoad: function(options) { + // 页面初始化 options为页面跳转所带来的参数 + this.setData({ + id: parseInt(options.id) + }); + this.getGoodsInfo(); + }, + onReady: function() { + // 页面渲染完成 - // 如果仅仅存在一种货品,那么商品价格应该和货品价格一致 - // 这里检测一下 - let _productPrice = res.data.productList[0].price; - let _goodsPrice = res.data.info.retailPrice; - if (_productPrice != _goodsPrice) { - console.error('商品数量价格和货品不一致'); - } - - that.setData({ - checkedSpecText: _specificationList[0].valueList[0].value, - tmpSpecText: '已选择:' + _specificationList[0].valueList[0].value, - }); - } - } - - that.setData({ - goods: res.data.info, - attribute: res.data.attribute, - issueList: res.data.issue, - comment: res.data.comment, - brand: res.data.brand, - specificationList: res.data.specificationList, - productList: res.data.productList, - userHasCollect: res.data.userHasCollect, - checkedSpecPrice: res.data.info.retailPrice - }); - - if (res.data.userHasCollect == 1) { - that.setData({ - collectImage: that.data.hasCollectImage - }); - } else { - that.setData({ - collectImage: that.data.noCollectImage - }); - } - - WxParse.wxParse('goodsDetail', 'html', res.data.info.desc, that); - - that.getGoodsRelated(); - } + }, + onShow: function() { + // 页面显示 + var that = this; + util.request(api.CartGoodsCount).then(function(res) { + if (res.errno === 0) { + that.setData({ + cartGoodsCount: res.data }); + } + }); + }, + onHide: function() { + // 页面隐藏 - }, - getGoodsRelated: function() { - let that = this; - util.request(api.GoodsRelated, { - id: that.data.id - }).then(function(res) { - if (res.errno === 0) { - that.setData({ - relatedGoods: res.data.goodsList, - }); - } - }); + }, + onUnload: function() { + // 页面关闭 - }, - clickSkuValue: function(event) { - let that = this; - let specName = event.currentTarget.dataset.name; - let specValueId = event.currentTarget.dataset.valueId; - - //判断是否可以点击 - - //TODO 性能优化,可在wx:for中添加index,可以直接获取点击的属性名和属性值,不用循环 - let _specificationList = this.data.specificationList; - for (let i = 0; i < _specificationList.length; i++) { - if (_specificationList[i].name === specName) { - for (let j = 0; j < _specificationList[i].valueList.length; j++) { - if (_specificationList[i].valueList[j].id == specValueId) { - //如果已经选中,则反选 - if (_specificationList[i].valueList[j].checked) { - _specificationList[i].valueList[j].checked = false; - } else { - _specificationList[i].valueList[j].checked = true; - } - } else { - _specificationList[i].valueList[j].checked = false; - } - } - } - } - this.setData({ - specificationList: _specificationList, - }); - //重新计算spec改变后的信息 - this.changeSpecInfo(); - - //重新计算哪些值不可以点击 - }, - //获取选中的规格信息 - getCheckedSpecValue: function() { - let checkedValues = []; - let _specificationList = this.data.specificationList; - for (let i = 0; i < _specificationList.length; i++) { - let _checkedObj = { - name: _specificationList[i].name, - valueId: 0, - valueText: '' - }; - for (let j = 0; j < _specificationList[i].valueList.length; j++) { - if (_specificationList[i].valueList[j].checked) { - _checkedObj.valueId = _specificationList[i].valueList[j].id; - _checkedObj.valueText = _specificationList[i].valueList[j].value; - } - } - checkedValues.push(_checkedObj); - } - - return checkedValues; - }, - //根据已选的值,计算其它值的状态 - setSpecValueStatus: function() { - - }, - //判断规格是否选择完整 - isCheckedAllSpec: function() { - return !this.getCheckedSpecValue().some(function(v) { - if (v.valueId == 0) { - return true; - } - }); - }, - getCheckedSpecKey: function() { - let checkedValue = this.getCheckedSpecValue().map(function(v) { - return v.valueText; - }); - - return checkedValue; - }, - changeSpecInfo: function() { - let checkedNameValue = this.getCheckedSpecValue(); - - //设置选择的信息 - let checkedValue = checkedNameValue.filter(function(v) { - if (v.valueId != 0) { - return true; - } else { - return false; - } - }).map(function(v) { - return v.valueText; - }); - if (checkedValue.length > 0) { - this.setData({ - tmpSpecText: checkedValue.join(' ') + }, + switchAttrPop: function() { + if (this.data.openAttr == false) { + this.setData({ + openAttr: !this.data.openAttr + }); + } + }, + closeAttr: function() { + this.setData({ + openAttr: false, + }); + }, + addCollectOrNot: function() { + let that = this; + //添加或是取消收藏 + util.request(api.CollectAddOrDelete, { + type: 0, + valueId: this.data.id + }, "POST") + .then(function(res) { + let _res = res; + if (_res.errno == 0) { + if (_res.data.type == 'add') { + that.setData({ + collectImage: that.data.hasCollectImage }); - } else { - this.setData({ - tmpSpecText: '请选择规格数量' + } else { + that.setData({ + collectImage: that.data.noCollectImage }); - } - - - if (this.isCheckedAllSpec()) { - this.setData({ - checkedSpecText: this.data.tmpSpecText - }); - - // 规格所对应的货品选择以后 - let checkedProductArray = this.getCheckedProductItem(this.getCheckedSpecKey()); - if (!checkedProductArray || checkedProductArray.length <= 0) { - this.setData({ - soldout: true - }); - console.error('规格所对应货品不存在'); - return; - } - - let checkedProduct = checkedProductArray[0]; - if (checkedProduct.number > 0) { - this.setData({ - checkedSpecPrice: checkedProduct.price, - soldout: false - }); - } else { - this.setData({ - checkedSpecPrice: this.data.goods.retailPrice, - soldout: true - }); - } + } } else { - this.setData({ - checkedSpecText: '规格数量选择', - checkedSpecPrice: this.data.goods.retailPrice, - soldout: false - }); + wx.showToast({ + image: '/static/images/icon_error.png', + title: _res.errmsg, + mask: true + }); } - }, - getCheckedProductItem: function(key) { - return this.data.productList.filter(function(v) { - if (v.specifications.toString() == key.toString()) { - return true; - } else { - return false; - } - }); - }, - onLoad: function(options) { - // 页面初始化 options为页面跳转所带来的参数 - this.setData({ - id: parseInt(options.id) - }); - this.getGoodsInfo(); - }, - onReady: function() { - // 页面渲染完成 + }); - }, - onShow: function() { - // 页面显示 - var that = this; - util.request(api.CartGoodsCount).then(function(res) { - if (res.errno === 0) { - that.setData({ - cartGoodsCount: res.data - }); - } + }, + openCartPage: function() { + wx.switchTab({ + url: '/pages/cart/cart' + }); + }, + addFast: function() { + var that = this; + if (this.data.openAttr == false) { + //打开规格选择窗口 + this.setData({ + openAttr: !this.data.openAttr + }); + } else { + + //提示选择完整规格 + if (!this.isCheckedAllSpec()) { + wx.showToast({ + image: '/static/images/icon_error.png', + title: '请选择完整规格' }); - }, - onHide: function() { - // 页面隐藏 + return false; + } - }, - onUnload: function() { - // 页面关闭 + //根据选中的规格,判断是否有对应的sku信息 + let checkedProductArray = this.getCheckedProductItem(this.getCheckedSpecKey()); + if (!checkedProductArray || checkedProductArray.length <= 0) { + //找不到对应的product信息,提示没有库存 + wx.showToast({ + image: '/static/images/icon_error.png', + title: '没有库存' + }); + return false; + } - }, - switchAttrPop: function() { - if (this.data.openAttr == false) { - this.setData({ - openAttr: !this.data.openAttr + let checkedProduct = checkedProductArray[0]; + //验证库存 + if (checkedProduct.number <= 0) { + wx.showToast({ + image: '/static/images/icon_error.png', + title: '没有库存' + }); + return false; + } + + //立即购买 + util.request(api.CartFastAdd, { + goodsId: this.data.goods.id, + number: this.data.number, + productId: checkedProduct.id + }, "POST") + .then(function(res) { + if (res.errno == 0) { + + // 如果storage中设置了cartId,则是立即购买,否则是购物车购买 + try { + wx.setStorageSync('cartId', res.data); + wx.navigateTo({ + url: '/pages/checkout/checkout' + }) + } catch (e) {} + + } else { + wx.showToast({ + image: '/static/images/icon_error.png', + title: res.errmsg, + mask: true }); - } - }, - closeAttr: function() { - this.setData({ - openAttr: false, - }); - }, - addCollectOrNot: function() { - let that = this; - //添加或是取消收藏 - util.request(api.CollectAddOrDelete, { - type: 0, - valueId: this.data.id - }, "POST") - .then(function(res) { - let _res = res; - if (_res.errno == 0) { - if (_res.data.type == 'add') { - that.setData({ - collectImage: that.data.hasCollectImage - }); - } else { - that.setData({ - collectImage: that.data.noCollectImage - }); - } - - } else { - wx.showToast({ - image: '/static/images/icon_error.png', - title: _res.errmsg, - mask: true - }); - } - - }); - - }, - openCartPage: function() { - wx.switchTab({ - url: '/pages/cart/cart' - }); - }, - addFast: function() { - var that = this; - if (this.data.openAttr == false) { - //打开规格选择窗口 - this.setData({ - openAttr: !this.data.openAttr - }); - } else { - - //提示选择完整规格 - if (!this.isCheckedAllSpec()) { - wx.showToast({ - image: '/static/images/icon_error.png', - title: '请选择完整规格' - }); - return false; - } - - //根据选中的规格,判断是否有对应的sku信息 - let checkedProductArray = this.getCheckedProductItem(this.getCheckedSpecKey()); - if (!checkedProductArray || checkedProductArray.length <= 0) { - //找不到对应的product信息,提示没有库存 - wx.showToast({ - image: '/static/images/icon_error.png', - title: '没有库存' - }); - return false; - } - - let checkedProduct = checkedProductArray[0]; - //验证库存 - if (checkedProduct.number <= 0) { - wx.showToast({ - image: '/static/images/icon_error.png', - title: '没有库存' - }); - return false; - } - - //立即购买 - util.request(api.CartFastAdd, { - goodsId: this.data.goods.id, - number: this.data.number, - productId: checkedProduct.id - }, "POST") - .then(function(res) { - if (res.errno == 0) { - - // 如果storage中设置了cartId,则是立即购买,否则是购物车购买 - try { - wx.setStorageSync('cartId', res.data); - wx.navigateTo({ - url: '/pages/checkout/checkout' - }) - } catch (e) {} - - } else { - wx.showToast({ - image: '/static/images/icon_error.png', - title: res.errmsg, - mask: true - }); - } - }); - } - - - }, - addToCart: function() { - var that = this; - if (this.data.openAttr == false) { - //打开规格选择窗口 - this.setData({ - openAttr: !this.data.openAttr - }); - } else { - - //提示选择完整规格 - if (!this.isCheckedAllSpec()) { - wx.showToast({ - image: '/static/images/icon_error.png', - title: '请选择完整规格' - }); - return false; - } - - //根据选中的规格,判断是否有对应的sku信息 - let checkedProductArray = this.getCheckedProductItem(this.getCheckedSpecKey()); - if (!checkedProductArray || checkedProductArray.length <= 0) { - //找不到对应的product信息,提示没有库存 - wx.showToast({ - image: '/static/images/icon_error.png', - title: '没有库存' - }); - return false; - } - - let checkedProduct = checkedProductArray[0]; - //验证库存 - if (checkedProduct.number <= 0) { - wx.showToast({ - image: '/static/images/icon_error.png', - title: '没有库存' - }); - return false; - } - - //添加到购物车 - util.request(api.CartAdd, { - goodsId: this.data.goods.id, - number: this.data.number, - productId: checkedProduct.id - }, "POST") - .then(function(res) { - let _res = res; - if (_res.errno == 0) { - wx.showToast({ - title: '添加成功' - }); - that.setData({ - openAttr: !that.data.openAttr, - cartGoodsCount: _res.data - }); - if (that.data.userHasCollect == 1) { - that.setData({ - collectImage: that.data.hasCollectImage - }); - } else { - that.setData({ - collectImage: that.data.noCollectImage - }); - } - } else { - wx.showToast({ - image: '/static/images/icon_error.png', - title: _res.errmsg, - mask: true - }); - } - - }); - } - - }, - cutNumber: function() { - this.setData({ - number: (this.data.number - 1 > 1) ? this.data.number - 1 : 1 - }); - }, - addNumber: function() { - this.setData({ - number: this.data.number + 1 + } }); } + + + }, + addToCart: function() { + var that = this; + if (this.data.openAttr == false) { + //打开规格选择窗口 + this.setData({ + openAttr: !this.data.openAttr + }); + } else { + + //提示选择完整规格 + if (!this.isCheckedAllSpec()) { + wx.showToast({ + image: '/static/images/icon_error.png', + title: '请选择完整规格' + }); + return false; + } + + //根据选中的规格,判断是否有对应的sku信息 + let checkedProductArray = this.getCheckedProductItem(this.getCheckedSpecKey()); + if (!checkedProductArray || checkedProductArray.length <= 0) { + //找不到对应的product信息,提示没有库存 + wx.showToast({ + image: '/static/images/icon_error.png', + title: '没有库存' + }); + return false; + } + + let checkedProduct = checkedProductArray[0]; + //验证库存 + if (checkedProduct.number <= 0) { + wx.showToast({ + image: '/static/images/icon_error.png', + title: '没有库存' + }); + return false; + } + + //添加到购物车 + util.request(api.CartAdd, { + goodsId: this.data.goods.id, + number: this.data.number, + productId: checkedProduct.id + }, "POST") + .then(function(res) { + let _res = res; + if (_res.errno == 0) { + wx.showToast({ + title: '添加成功' + }); + that.setData({ + openAttr: !that.data.openAttr, + cartGoodsCount: _res.data + }); + if (that.data.userHasCollect == 1) { + that.setData({ + collectImage: that.data.hasCollectImage + }); + } else { + that.setData({ + collectImage: that.data.noCollectImage + }); + } + } else { + wx.showToast({ + image: '/static/images/icon_error.png', + title: _res.errmsg, + mask: true + }); + } + + }); + } + + }, + cutNumber: function() { + this.setData({ + number: (this.data.number - 1 > 1) ? this.data.number - 1 : 1 + }); + }, + addNumber: function() { + this.setData({ + number: this.data.number + 1 + }); + } }) \ No newline at end of file diff --git a/litemall-wx/pages/index/index.js b/litemall-wx/pages/index/index.js index 59fed36d..17a356b4 100644 --- a/litemall-wx/pages/index/index.js +++ b/litemall-wx/pages/index/index.js @@ -14,7 +14,7 @@ Page({ banner: [], channel: [] }, - onShareAppMessage: function () { + onShareAppMessage: function() { return { title: 'litemall小程序商场', desc: '开源微信小程序商城', @@ -22,9 +22,16 @@ Page({ } }, - getIndexData: function () { + onPullDownRefresh() { + wx.showNavigationBarLoading() //在标题栏中显示加载 + this.getIndexData(); + wx.hideNavigationBarLoading() //完成停止加载 + wx.stopPullDownRefresh() //停止下拉刷新 + }, + + getIndexData: function() { let that = this; - util.request(api.IndexUrl).then(function (res) { + util.request(api.IndexUrl).then(function(res) { if (res.errno === 0) { that.setData({ newGoods: res.data.newGoodsList, @@ -38,19 +45,19 @@ Page({ } }); }, - onLoad: function (options) { + onLoad: function(options) { this.getIndexData(); }, - onReady: function () { + onReady: function() { // 页面渲染完成 }, - onShow: function () { + onShow: function() { // 页面显示 }, - onHide: function () { + onHide: function() { // 页面隐藏 }, - onUnload: function () { + onUnload: function() { // 页面关闭 }, -}) +}) \ No newline at end of file diff --git a/litemall-wx/pages/ucenter/index/index.json b/litemall-wx/pages/ucenter/index/index.json index 426256d7..8b4c3b54 100644 --- a/litemall-wx/pages/ucenter/index/index.json +++ b/litemall-wx/pages/ucenter/index/index.json @@ -1,4 +1,5 @@ { - "backgroundColor": "#f4f4f4", - "navigationBarTitleText": "个人中心" + "backgroundColor": "#f4f4f4", + "navigationBarTitleText": "个人中心", + "enablePullDownRefresh": false } \ No newline at end of file diff --git a/litemall-wx/pages/ucenter/order/order.js b/litemall-wx/pages/ucenter/order/order.js index 7ca0ab59..92e4a4a4 100644 --- a/litemall-wx/pages/ucenter/order/order.js +++ b/litemall-wx/pages/ucenter/order/order.js @@ -2,42 +2,52 @@ var util = require('../../../utils/util.js'); var api = require('../../../config/api.js'); Page({ - data:{ - orderList: [], - showType: 0 - }, - onLoad:function(options){ - // 页面初始化 options为页面跳转所带来的参数 - }, - getOrderList(){ - let that = this; - util.request(api.OrderList, { showType: that.data.showType}).then(function (res) { - if (res.errno === 0) { - console.log(res.data); - that.setData({ - orderList: res.data.data - }); - } + data: { + orderList: [], + showType: 0 + }, + onLoad: function(options) { + // 页面初始化 options为页面跳转所带来的参数 + }, + + onPullDownRefresh() { + wx.showNavigationBarLoading() //在标题栏中显示加载 + this.getOrderList(); + wx.hideNavigationBarLoading() //完成停止加载 + wx.stopPullDownRefresh() //停止下拉刷新 + }, + + getOrderList() { + let that = this; + util.request(api.OrderList, { + showType: that.data.showType + }).then(function(res) { + if (res.errno === 0) { + console.log(res.data); + that.setData({ + orderList: res.data.data }); - }, - switchTab: function (event) { - let showType = event.currentTarget.dataset.index; - this.setData({ - showType: showType - }); - this.getOrderList(); - }, - onReady:function(){ - // 页面渲染完成 - }, - onShow:function(){ - // 页面显示 - this.getOrderList(); - }, - onHide:function(){ - // 页面隐藏 - }, - onUnload:function(){ - // 页面关闭 - } + } + }); + }, + switchTab: function(event) { + let showType = event.currentTarget.dataset.index; + this.setData({ + showType: showType + }); + this.getOrderList(); + }, + onReady: function() { + // 页面渲染完成 + }, + onShow: function() { + // 页面显示 + this.getOrderList(); + }, + onHide: function() { + // 页面隐藏 + }, + onUnload: function() { + // 页面关闭 + } }) \ No newline at end of file diff --git a/litemall-wx/project.config.json b/litemall-wx/project.config.json index c25e1b74..43f3da71 100644 --- a/litemall-wx/project.config.json +++ b/litemall-wx/project.config.json @@ -28,7 +28,7 @@ "list": [] }, "miniprogram": { - "current": 33, + "current": 32, "list": [ { "id": -1, @@ -219,7 +219,13 @@ { "id": -1, "name": "关于", - "pathName": "pages/about/about" + "pathName": "pages/about/about", + "query": "" + }, + { + "id": -1, + "name": "测试更新", + "pathName": "pages/index/index" } ] }