From ad8c9be7b1dc0406b507117481dd77341ee34ba5 Mon Sep 17 00:00:00 2001 From: usgeek <940208412@qq.com> Date: Wed, 29 Aug 2018 17:27:50 +0800 Subject: [PATCH 1/4] =?UTF-8?q?=E4=B8=AA=E4=BA=BA=E4=B8=AD=E5=BF=83?= =?UTF-8?q?=E8=BF=9B=E5=85=A5=E8=AE=A2=E5=8D=95=E9=A1=B5=E9=80=89=E4=B8=AD?= =?UTF-8?q?=E6=A0=B7=E5=BC=8F=E8=B0=83=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- litemall-wx/pages/ucenter/order/order.js | 12 +++++++++++- litemall-wx/pages/ucenter/order/order.wxss | 8 ++++---- 2 files changed, 15 insertions(+), 5 deletions(-) diff --git a/litemall-wx/pages/ucenter/order/order.js b/litemall-wx/pages/ucenter/order/order.js index 92e4a4a4..52b7e1f1 100644 --- a/litemall-wx/pages/ucenter/order/order.js +++ b/litemall-wx/pages/ucenter/order/order.js @@ -7,7 +7,17 @@ Page({ showType: 0 }, onLoad: function(options) { - // 页面初始化 options为页面跳转所带来的参数 + // 页面初始化 options为页面跳转所带来的参数 + let that = this + try { + var tab = wx.getStorageSync('tab'); + + this.setData({ + sh + }); + } catch (e) { + } + }, onPullDownRefresh() { diff --git a/litemall-wx/pages/ucenter/order/order.wxss b/litemall-wx/pages/ucenter/order/order.wxss index 71faa20d..c5f5c7c1 100644 --- a/litemall-wx/pages/ucenter/order/order.wxss +++ b/litemall-wx/pages/ucenter/order/order.wxss @@ -9,7 +9,7 @@ page{ width: 100%; background: #fff; height: 84rpx; - border-bottom: 1px solid rgba(0,0,0,.15); + /* border-bottom: 1px solid rgba(0,0,0,.15); */ } .orders-switch .item{ @@ -25,14 +25,14 @@ page{ height: 82rpx; padding: 0 20rpx; line-height: 82rpx; - color: #333; + color: #9a9ba1; font-size: 30rpx; width: 170rpx; } .orders-switch .item.active .txt{ - color: #ab2b2b; - border-bottom: 4rpx solid #ab2b2b; + color: #AB956D; + border-bottom: 4rpx solid #AB956D; } From 2a847b271c6598ea2e1c51a2b4a5402e949ab1fd Mon Sep 17 00:00:00 2001 From: usgeek <940208412@qq.com> Date: Wed, 29 Aug 2018 17:33:19 +0800 Subject: [PATCH 2/4] =?UTF-8?q?=E5=8A=A0=E8=BD=BD=E4=BF=AE=E5=A4=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- litemall-wx/pages/ucenter/order/order.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/litemall-wx/pages/ucenter/order/order.js b/litemall-wx/pages/ucenter/order/order.js index 52b7e1f1..5a6f329d 100644 --- a/litemall-wx/pages/ucenter/order/order.js +++ b/litemall-wx/pages/ucenter/order/order.js @@ -13,7 +13,7 @@ Page({ var tab = wx.getStorageSync('tab'); this.setData({ - sh + showType: tab }); } catch (e) { } From 13f36197dfd1c510a07e4ddfacf79ba69e6902d6 Mon Sep 17 00:00:00 2001 From: usgeek <940208412@qq.com> Date: Wed, 29 Aug 2018 19:49:26 +0800 Subject: [PATCH 3/4] =?UTF-8?q?=E8=B4=AD=E7=89=A9=E8=BD=A6=E6=A0=B7?= =?UTF-8?q?=E5=BC=8F=E4=BF=AE=E5=A4=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- litemall-wx/config/api.js | 4 ++-- litemall-wx/pages/cart/cart.wxml | 9 ++++++--- litemall-wx/pages/ucenter/index/index.wxss | 2 +- 3 files changed, 9 insertions(+), 6 deletions(-) diff --git a/litemall-wx/config/api.js b/litemall-wx/config/api.js index bdc0c732..033f8ede 100644 --- a/litemall-wx/config/api.js +++ b/litemall-wx/config/api.js @@ -1,12 +1,12 @@ // 以下是业务服务器API地址 // 本机开发时使用 - var WxApiRoot = 'http://localhost:8080/wx/'; + var WxApiRoot = 'http://localhost:8082/wx/'; // 局域网测试使用 // var WxApiRoot = 'http://192.168.0.101:8080/wx/'; // 云平台部署时使用 // var WxApiRoot = 'http://122.152.206.172:8080/wx/'; // 云平台上线时使用 -// var WxApiRoot = 'https://www.menethil.com.cn/wx/'; + //var WxApiRoot = 'https://www.menethil.com.cn/wx/'; module.exports = { IndexUrl: WxApiRoot + 'home/index', //首页数据接口 diff --git a/litemall-wx/pages/cart/cart.wxml b/litemall-wx/pages/cart/cart.wxml index 092ce0ac..ad0c9fa2 100644 --- a/litemall-wx/pages/cart/cart.wxml +++ b/litemall-wx/pages/cart/cart.wxml @@ -50,9 +50,12 @@ 全选({{cartTotal.checkedGoodsCount}}) {{!isEditCart ? '¥'+cartTotal.checkedGoodsAmount : ''}} - {{!isEditCart ? '编辑' : '完成'}} - 删除所选 - 下单 + + {{!isEditCart ? '编辑' : '完成'}} + 删除({{cartTotal.checkedGoodsCount}}) + 下单 + + diff --git a/litemall-wx/pages/ucenter/index/index.wxss b/litemall-wx/pages/ucenter/index/index.wxss index ae6cb812..d0313f4c 100644 --- a/litemall-wx/pages/ucenter/index/index.wxss +++ b/litemall-wx/pages/ucenter/index/index.wxss @@ -13,7 +13,7 @@ page { .profile-info { background-color: #ab956d; - color: #fff; + color: #f4f4f4; display: flex; align-items: center; padding: 30rpx; From c82046b7308d1ea7fd8299c2708268271fac06c7 Mon Sep 17 00:00:00 2001 From: usgeek <940208412@qq.com> Date: Wed, 29 Aug 2018 20:27:39 +0800 Subject: [PATCH 4/4] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E6=A0=B7=E5=BC=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- litemall-wx/pages/goods/goods.js | 1250 +++++++++-------- .../pages/ucenter/address/address.wxss | 37 +- 2 files changed, 653 insertions(+), 634 deletions(-) diff --git a/litemall-wx/pages/goods/goods.js b/litemall-wx/pages/goods/goods.js index e79d855d..4138ac48 100644 --- a/litemall-wx/pages/goods/goods.js +++ b/litemall-wx/pages/goods/goods.js @@ -5,646 +5,652 @@ var api = require('../../config/api.js'); var user = require('../../utils/user.js'); Page({ - data: { - id: 0, - goods: {}, - groupon: [], //该商品支持的团购规格 - grouponLink: {}, //参与的团购 - 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', - shareImage: '', - isGroupon: false, //标识是否是一个参团购买 - soldout: false - }, - - // 页面分享 - onShareAppMessage: function() { - let that = this; - return { - title: that.data.goods.name, - desc: '唯爱与美食不可辜负', - path: '/pages/index/index?goodId=' + this.data.id - } - }, - - shareFriendOrCircle: function () { - //var that = this; - if (this.data.openShare === false) { - this.setData({ - openShare: !this.data.openShare - }); - } else { - return false; - } - }, - - // 保存分享图 - saveShare: function() { - let that = this; - wx.downloadFile({ - url: that.data.shareImage, - success: function(res) { - console.log(res) - wx.saveImageToPhotosAlbum({ - filePath: res.tempFilePath, - success: function(res) { - wx.showModal({ - title: '存图成功', - content: '图片成功保存到相册了,可以分享到朋友圈了', - showCancel: false, - confirmText: '好的', - confirmColor: '#a78845', - success: function(res) { - if (res.confirm) { - console.log('用户点击确定'); - } - } - }) - }, - fail: function(res) { - console.log('fail') - } - }) - }, - fail: function() { - console.log('fail') - } - }) - }, - - //从分享的团购进入 - getGrouponInfo: function(grouponId) { - let that = this; - util.request(api.GroupOnJoin, { - grouponId: grouponId - }).then(function(res) { - if (res.errno === 0) { - that.setData({ - grouponLink: res.data.groupon, - id: res.data.goods.id - }); - //获取商品详情 - that.getGoodsInfo(); - } - }); - }, - - // 获取商品信息 - 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, - shareImage: res.data.shareImage, - checkedSpecPrice: res.data.info.retailPrice, - groupon: res.data.groupon - }); - - //如果是通过分享的团购参加团购,则团购项目应该与分享的一致并且不可更改 - if (that.data.isGroupon) { - let groupons = that.data.groupon; - for (var i = 0; i < groupons.length; i++) { - if (groupons[i].id != that.data.grouponLink.rulesId) { - groupons.splice(i, 1); - } - } - groupons[0].checked = true; - //重设团购规格 - that.setData({ - groupon: groupons - }); - - } - - 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.detail, 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, - }); - } - }); - }, - - // 团购选择 - clickGroupon: function(event) { - let that = this; - - //参与团购,不可更改选择 - if (that.data.isGroupon) { - return; - } - - let specName = event.currentTarget.dataset.name; - let specValueId = event.currentTarget.dataset.valueId; - - let _grouponList = this.data.groupon; - for (let i = 0; i < _grouponList.length; i++) { - if (_grouponList[i].id == specValueId) { - if (_grouponList[i].checked) { - _grouponList[i].checked = false; - } else { - _grouponList[i].checked = true; - } - } else { - _grouponList[i].checked = false; - } - } - - this.setData({ - groupon: _grouponList, - }); - }, - - // 规格选择 - 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(); - - //重新计算哪些值不可以点击 - }, - - //获取选中的团购信息 - getCheckedGrouponValue: function() { - let checkedValues = {}; - let _grouponList = this.data.groupon; - for (let i = 0; i < _grouponList.length; i++) { - if (_grouponList[i].checked) { - checkedValues = _grouponList[i]; - } - } - - return checkedValues; - }, - - //获取选中的规格信息 - 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; - }, - - //判断规格是否选择完整 - 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({ + data: { + id: 0, + goods: {}, + groupon: [], //该商品支持的团购规格 + grouponLink: {}, //参与的团购 + attribute: [], + issueList: [], + comment: [], + brand: {}, + specificationList: [], + productList: [], + relatedGoods: [], + cartGoodsCount: 0, + userHasCollect: 0, + number: 1, checkedSpecText: '规格数量选择', - checkedSpecPrice: this.data.goods.retailPrice, + tmpSpecText: '请选择规格数量', + checkedSpecPrice: 0, + openAttr: false, + openShare: false, + noCollectImage: '/static/images/icon_collect.png', + hasCollectImage: '/static/images/icon_collect_checked.png', + collectImage: '/static/images/icon_collect.png', + shareImage: '', + isGroupon: false, //标识是否是一个参团购买 soldout: false - }); - } + }, - }, + // 页面分享 + onShareAppMessage: function() { + let that = this; + return { + title: that.data.goods.name, + desc: '唯爱与美食不可辜负', + path: '/pages/index/index?goodId=' + this.data.id + } + }, - // 获取选中的产品(根据规格) - 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为页面跳转所带来的参数 - if (options.id) { - this.setData({ - id: parseInt(options.id) - }); - this.getGoodsInfo(); - } - - if (options.grouponId) { - this.setData({ - isGroupon: true, - }); - this.getGrouponInfo(options.grouponId); - } - }, - onShow: function() { - // 页面显示 - var that = this; - util.request(api.CartGoodsCount).then(function(res) { - if (res.errno === 0) { - that.setData({ - cartGoodsCount: res.data - }); - } - }); - }, - - //添加或是取消收藏 - 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 + shareFriendOrCircle: function() { + //var that = this; + if (this.data.openShare === false) { + this.setData({ + openShare: !this.data.openShare }); - } else { - that.setData({ - collectImage: that.data.noCollectImage - }); - } - } else { - wx.showToast({ - image: '/static/images/icon_error.png', - title: _res.errmsg, - mask: true - }); + return false; + } + }, + + // 保存分享图 + saveShare: function() { + let that = this; + wx.downloadFile({ + url: that.data.shareImage, + success: function(res) { + console.log(res) + wx.saveImageToPhotosAlbum({ + filePath: res.tempFilePath, + success: function(res) { + wx.showModal({ + title: '存图成功', + content: '图片成功保存到相册了,可以分享到朋友圈了', + showCancel: false, + confirmText: '好的', + confirmColor: '#a78845', + success: function(res) { + if (res.confirm) { + console.log('用户点击确定'); + } + } + }) + }, + fail: function(res) { + console.log('fail') + } + }) + }, + fail: function() { + console.log('fail') + } + }) + }, + + //从分享的团购进入 + getGrouponInfo: function(grouponId) { + let that = this; + util.request(api.GroupOnJoin, { + grouponId: grouponId + }).then(function(res) { + if (res.errno === 0) { + that.setData({ + grouponLink: res.data.groupon, + id: res.data.goods.id + }); + //获取商品详情 + that.getGoodsInfo(); + } + }); + }, + + // 获取商品信息 + 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, + shareImage: res.data.shareImage, + checkedSpecPrice: res.data.info.retailPrice, + groupon: res.data.groupon + }); + + //如果是通过分享的团购参加团购,则团购项目应该与分享的一致并且不可更改 + if (that.data.isGroupon) { + let groupons = that.data.groupon; + for (var i = 0; i < groupons.length; i++) { + if (groupons[i].id != that.data.grouponLink.rulesId) { + groupons.splice(i, 1); + } + } + groupons[0].checked = true; + //重设团购规格 + that.setData({ + groupon: groupons + }); + + } + + 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.detail, 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, + }); + } + }); + }, + + // 团购选择 + clickGroupon: function(event) { + let that = this; + + //参与团购,不可更改选择 + if (that.data.isGroupon) { + return; } - }); + let specName = event.currentTarget.dataset.name; + let specValueId = event.currentTarget.dataset.valueId; - }, - - //立即购买(先自动加入购物车) - 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; - } - - //验证团购是否有效 - let checkedGroupon = this.getCheckedGrouponValue(); - - //立即购买 - 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.setStorageSync('grouponRulesId', checkedGroupon.id); - wx.setStorageSync('grouponLinkId', that.data.grouponLink.id); - 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 - }); + let _grouponList = this.data.groupon; + for (let i = 0; i < _grouponList.length; i++) { + if (_grouponList[i].id == specValueId) { + if (_grouponList[i].checked) { + _grouponList[i].checked = false; + } else { + _grouponList[i].checked = true; + } } else { - that.setData({ - collectImage: that.data.noCollectImage - }); + _grouponList[i].checked = false; } - } else { - wx.showToast({ - image: '/static/images/icon_error.png', - title: _res.errmsg, - mask: true - }); - } + } + this.setData({ + groupon: _grouponList, }); - } + }, - }, + // 规格选择 + clickSkuValue: function(event) { + let that = this; + let specName = event.currentTarget.dataset.name; + let specValueId = event.currentTarget.dataset.valueId; - cutNumber: function() { - this.setData({ - number: (this.data.number - 1 > 1) ? this.data.number - 1 : 1 - }); - }, - addNumber: function() { - this.setData({ - number: this.data.number + 1 - }); - }, - onHide: function() { - // 页面隐藏 + //判断是否可以点击 - }, - onUnload: function() { - // 页面关闭 + //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(); - }, - switchAttrPop: function() { - if (this.data.openAttr == false) { - this.setData({ - openAttr: !this.data.openAttr - }); - } - }, - closeAttr: function() { - this.setData({ - openAttr: false, - }); - }, - openCartPage: function() { - wx.switchTab({ - url: '/pages/cart/cart' - }); - }, - onReady: function() { - // 页面渲染完成 + //重新计算哪些值不可以点击 + }, - }, - // 下拉刷新 - onPullDownRefresh() { - wx.showNavigationBarLoading() //在标题栏中显示加载 - this.getGoodsInfo(); - wx.hideNavigationBarLoading() //完成停止加载 - wx.stopPullDownRefresh() //停止下拉刷新 - }, - //根据已选的值,计算其它值的状态 - setSpecValueStatus: function() { + //获取选中的团购信息 + getCheckedGrouponValue: function() { + let checkedValues = {}; + let _grouponList = this.data.groupon; + for (let i = 0; i < _grouponList.length; i++) { + if (_grouponList[i].checked) { + checkedValues = _grouponList[i]; + } + } - }, + return checkedValues; + }, + + //获取选中的规格信息 + 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; + }, + + //判断规格是否选择完整 + 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: '规格数量选择', + checkedSpecPrice: this.data.goods.retailPrice, + soldout: false + }); + } + + }, + + // 获取选中的产品(根据规格) + 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为页面跳转所带来的参数 + if (options.id) { + this.setData({ + id: parseInt(options.id) + }); + this.getGoodsInfo(); + } + + if (options.grouponId) { + this.setData({ + isGroupon: true, + }); + this.getGrouponInfo(options.grouponId); + } + }, + onShow: function() { + // 页面显示 + var that = this; + util.request(api.CartGoodsCount).then(function(res) { + if (res.errno === 0) { + that.setData({ + cartGoodsCount: res.data + }); + } + }); + }, + + //添加或是取消收藏 + 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 + }); + } + + }); + + }, + + //立即购买(先自动加入购物车) + 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; + } + + //验证团购是否有效 + let checkedGroupon = this.getCheckedGrouponValue(); + + //立即购买 + 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.setStorageSync('grouponRulesId', checkedGroupon.id); + wx.setStorageSync('grouponLinkId', that.data.grouponLink.id); + 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 + }); + }, + onHide: function() { + // 页面隐藏 + + }, + onUnload: function() { + // 页面关闭 + + }, + switchAttrPop: function() { + if (this.data.openAttr == false) { + this.setData({ + openAttr: !this.data.openAttr + }); + } + }, + closeAttr: function() { + this.setData({ + openAttr: false, + }); + }, + closeShare: function() { + this.setData({ + openShare: false, + }); + }, + openCartPage: function() { + wx.switchTab({ + url: '/pages/cart/cart' + }); + }, + onReady: function() { + // 页面渲染完成 + + }, + // 下拉刷新 + onPullDownRefresh() { + wx.showNavigationBarLoading() //在标题栏中显示加载 + this.getGoodsInfo(); + wx.hideNavigationBarLoading() //完成停止加载 + wx.stopPullDownRefresh() //停止下拉刷新 + }, + //根据已选的值,计算其它值的状态 + setSpecValueStatus: function() { + + }, }) \ No newline at end of file diff --git a/litemall-wx/pages/ucenter/address/address.wxss b/litemall-wx/pages/ucenter/address/address.wxss index 53996100..6071ad25 100644 --- a/litemall-wx/pages/ucenter/address/address.wxss +++ b/litemall-wx/pages/ucenter/address/address.wxss @@ -90,18 +90,31 @@ page{ } .add-address{ - background: #b4282d; - text-align: center; - width: 100%; - height: 99rpx; - line-height: 99rpx; - position: fixed; - border-radius: 0; - border: none; - color: #fff; - font-size: 29rpx; - bottom: 0; - left:0; + border: none; + right: 0; + display: flex; + justify-content: center; + align-items: center; + width: 90%; + height: 90rpx; + line-height: 98rpx; + position: absolute; + bottom: 0; + left: 0; + border-radius: 0; + padding: 0; + margin: 0; + margin-left: 5%; + text-align: center; + /* padding-left: -5rpx; */ + font-size: 25rpx; + color: #f4f4f4; + border-top-left-radius: 50rpx; + border-bottom-left-radius: 50rpx; + border-top-right-radius: 50rpx; + border-bottom-right-radius: 50rpx; + letter-spacing: 3rpx; + background-image: linear-gradient(to right, #9a9ba1 0%, #9a9ba1 100%); } .empty-view{