var app = getApp(); var WxParse = require('../../../lib/wxParse/wxParse.js'); var util = require('../../../utils/jmsUtil.js'); var mall = require('../../../api/mall.js'); var user = require('../../../utils/user.js'); Page({ data: { currentSku:'',//选中的skuid goosNumber:1,//商品数量 selfPayShow: false, selfPayCheck: false, spreadPayShow: false, spreadPayChecked: false, canShare: false, id: 0, goods: {}, groupon: [], //该商品支持的团购规格 grouponLink: {}, //参与的团购 attribute: [], issueList: [], comment: [], //brand: {}, specificationList: [], productList: [], relatedGoods: [], cartGoodsCount: 0, userHasCollect: 0, number: 1, checkedSpecText: '规格数量选择', tmpSpecText: '请选择规格数量', checkedSpecPrice: 0, openAttr: false, openShare: false, collect: false, shareImage: '', isGroupon: false, //标识是否是一个参团购买 soldout: false, canWrite: false, //用户是否获取了保存相册的权限 name_height: 58, //根据名称长度 设置高度 userInfo: {}, hasLogin: false, shareId: 0, //options传递过来的参数 表示是打开哪个分享 wxShareId: 0, //如果要分享此商品的分享id addressInfo: {}, rId: 0, //分享人id, selfDiscount: 0, spreadDiscount: 0, referee: { self: 0, share: 0, }, myqr_show: false, //我的分享二维码 myqr_url: null, //分享海报及推广语言 myqr_ads: '', myqr_blur: 100, //背景模糊值 myqr_bottom_btn: 'fixed', //底部功能按钮 isDxk:false, //是否是电信卡商品, isDetailPic:false, //是否显示商品详情图片 detailPic:'' }, goCustomerService(){//跳转微信客服 console.info('goCustomerService') wx.openCustomerServiceChat({ extInfo: {url: 'https://work.weixin.qq.com/kfid/kfc1fcfae84340d5125'}, corpId: 'ww034f0b524f8ead00', success(res) {}, fail(res){ console.info(res) } }) }, shareFriendOrCircle: function () { if (!app.globalData.hasLogin) { wx.navigateTo({ url: "/pages/auth/login/login" }); return; } //分享 弹出图片 let that = this; wx.removeStorageSync(String(that.data.goods.id)); //取出本地缓存中的分享图 // let sUrl=wx.getStorageSync(String(that.data.goods.id)); // if(sUrl!=null&&sUrl!=""){//获取过的分享图 不需要再次获取 // that.setData({ // myqr_url:sUrl, // myqr_show:true, // myqr_blur:5 // }); // return; // } wx.showLoading({ title: '生成中', }); util.request(mall.QrGoodsCodeCreate, { goodsId: that.data.goods.id }).then(function (res) { wx.hideLoading(); if (res.errno == 0) { that.setData({ myqr_url: res.data.imgUrl, myqr_show: true, myqr_blur: 5 }); //保存分享图url到本地缓存 // wx.setStorageSync(String(that.data.goods.id),res.data.imgUrl); } else if (res.errno == 501) { wx.redirectTo({ url: "/pages/auth/login/login" }); } else { wx.showToast({ title: res.errmsg, duration: 5000 }) } }); //var that = this; /*if (this.data.openShare === false) { this.setData({ openShare: !this.data.openShare }); } else { return false; }*/ }, handleSetting: function (e) { var that = this; // console.log(e) if (!e.detail.authSetting['scope.writePhotosAlbum']) { wx.showModal({ title: '警告', content: '不授权无法保存', showCancel: false }) that.setData({ canWrite: false }) } else { wx.showToast({ title: '保存成功' }) that.setData({ canWrite: true }) } }, // 保存分享图 saveShare: function () { let that = this; wx.showLoading({ title: '图片保存中', }); console.log(that.data); wx.downloadFile({ url: that.data.myqr_url, success: function (res) { console.log(res) wx.saveImageToPhotosAlbum({ filePath: res.tempFilePath, success: function (res) { wx.hideLoading(); wx.showModal({ title: '存图成功', content: '图片成功保存到相册了,可以分享到朋友圈了', showCancel: false, confirmText: '好的', confirmColor: '#a78845', success: function (res) { if (res.confirm) { console.log('用户点击确定'); that.setData({ myqr_show: false, myqr_blur: 0 }); } } }) }, fail: function (res) { wx.hideLoading(); wx.showModal({ title: '警告', content: '不授权无法保存', showCancel: false }) that.setData({ myqr_show: false, myqr_blur: 0 }); } }) }, fail: function (res) { wx.hideLoading(); console.log(res); } }) }, //从分享的团购进入 getGrouponInfo: function (grouponId) { let that = this; util.request(mall.GroupOnJoin, { grouponId: grouponId }).then(function (res) { if (res.errno === 0) { that.setData({ grouponLink: res.data.groupon, id: res.data.goods.id }); //获取商品详情 that.getGoodsInfo(); } }); }, getReferee: function () { let that = this; util.request(mall.GoodsDetail, { id: that.data.id, rId: that.data.rId }).then(res => { if (res.errno === 0) { if (res.data.referee.self != null && res.data.referee.self > 0) { res.data.referee.self = res.data.referee.self.toFixed(2); res.data.referee.share = res.data.referee.share.toFixed(2); } that.setData({ referee: res.data.referee }); console.info(res.data.referee) if (JSON.stringify(res.data.referee) == "{}") { that.setData({ referee: { self: 0, share: 0, isReferee: false } }); } //是引荐人 更新userinfo数据(因为如果后台将客户标记为引荐人 此userinfo是取缓存数据 不会更新状态) if (that.data.referee != null && that.data.referee.isReferee) { let userInfo = that.data.userInfo; userInfo.isDis = true; that.setData({ userInfo: userInfo }) wx.setStorageSync('userInfo', userInfo); } } }); }, // 获取商品信息 getGoodsInfo: function () { console.info('1-》getGoodsInfo start'); let that = this; util.request(mall.GoodsDetail, { id: that.data.id, // rId: that.data.rId }).then(function (res) { console.info('2-》getGoodsInfo end'); console.info(res); if (res.errno === 0) { // 如果仅仅存在一种货品,那么商品页面初始化时默认checked // 如果仅仅存在一种货品,那么商品价格应该和货品价格一致 // 这里检测一下 // let _specificationList = res.data.specificationList // if (_specificationList.length == 1) { // if (_specificationList[0].valueList.length == 1) { // _specificationList[0].valueList[0].checked = true // console.info(res.data.info); // 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, // }); // } // } console.info('3-》getGoodsInfo count end'); //设置显示名称的控件高度 // let height = 56; // if (res.data.info.name.length > 17 & res.data.info.name.length < 36) // height = 76; // else if (res.data.info.name.length >= 36) // height = 116; // console.info(res.data.share); that.setData({ goods: res.data, // currentSku:res.data.skus[0].id // specificationList: res.data.specificationList, // productList: res.data.productList, // userHasCollect: res.data.userHasCollect, // shareImage: res.data.shareImage, // checkedSpecPrice: res.data.info.retailPrice, // name_height: height, // wxShareId: res.data.shareId }); // if (res.data.userHasCollect == 1) { // that.setData({ // collect: true // }); // } else { // that.setData({ // collect: false // }); // } // WxParse.wxParse('goodsDetail', 'html', res.data.info.detail, that); //获取推荐商品 // that.getGoodsRelated(); if(res.data.commodityName.indexOf("电信卡")!=-1 ){ that.setData({ isDxk:true }) } if(res.data.detailPic!=""&&res.data.detailPic!=null){ that.setData({ isDetailPic:true, detailPic: res.data.detailPic }) } } }); }, // 获取推荐商品 getGoodsRelated: function () { let that = this; util.request(mall.GoodsRelated, { id: that.data.id, shopId: this.data.addressInfo.shopId }).then(function (res) { if (res.errno === 0) { that.setData({ relatedGoods: res.data.list, }); } }); }, // 团购选择 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({ 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) { // if (app.globalData.hasLogin) { // let userInfo = wx.getStorageSync('userInfo'); // app.globalData.userInfo=userInfo; // this.setData({ // userInfo: userInfo, // hasLogin: true // }); // } // 页面初始化 options为页面跳转所带来的参数 var addressInfo = wx.getStorageSync('addressInfo'); if (addressInfo) { this.setData({ addressInfo: addressInfo }) } if (options.rId) { this.setData({ rId: parseInt(options.rId) }) } if (options.grouponId) { this.setData({ isGroupon: true, }); this.getGrouponInfo(options.grouponId); } if (options.shareId) { this.setData({ shareId: parseInt(options.shareId) }) } console.info(this.data.shareId) if (options.id) { console.log(options); this.setData({ id: parseInt(options.id) }); // this.getGoodsInfo(); } }, onShow: function () { // 页面显示 let count=wx.getStorageSync('cartcount'); this.setData({ cartGoodsCount:count }); this.getGoodsInfo(); if (app.globalData.hasLogin) { let userInfo = wx.getStorageSync('userInfo'); app.globalData.userInfo = userInfo; this.setData({ userInfo: userInfo, hasLogin: true }); } // this.getReferee(); // 已登陆并且是引荐人展示自购推广 if (this.data.hasLogin && this.data.userInfo.isDis) { // this.setData({ // selfDiscount:0, // spreadDiscount:0, // }) } }, //添加或是取消收藏 addCollectOrNot: function () { let that = this; util.request(mall.CollectAddOrDelete, { type: 0, valueId: this.data.id }, "POST") .then(function (res) { if (that.data.userHasCollect == 1) { that.setData({ collect: false, userHasCollect: 0 }); } else { that.setData({ collect: true, userHasCollect: 1 }); } }); }, //立即购买(先自动加入购物车) addFast: function () { var that = this; console.log(this.data.goods); // if (!this.isCheckedAllSpec()) { // util.showErrorToast('请选择完整规格'); // return false; // } //根据选中的规格,判断是否有对应的sku信息 // let checkedProductArray = this.getCheckedProductItem(this.getCheckedSpecKey()); // if (!checkedProductArray || checkedProductArray.length <= 0) { // util.showErrorToast('没有库存'); // return false; // } //验证库存 // let checkedProduct = checkedProductArray[0]; // if (checkedProduct.number <= 0) { // util.showErrorToast('没有库存'); // return false; // } //验证团购是否有效 // let checkedGroupon = this.getCheckedGrouponValue(); if (this.data.goosNumber <= 0||this.data.goosNumber=='') { util.showErrorToast('请输入商品数量'); return false; } if (this.data.currentSku=='') { util.showErrorToast('请选择商品规格'); return false; } if(this.data.isDxk){ //电信卡 console.log(2) console.log(this.data.currentSku) wx.navigateTo({ url: '/pages/mall/dxkOrder/dxkOrder?currentSkuId='+this.data.currentSku+'&goodId='+that.data.goods.id }) } else{ //原逻辑 //立即购买 util.request(mall.CartFastAdd, { commodityId: this.data.goods.id, commoditySkuId:this.data.currentSku, number: this.data.goosNumber, // shareId: this.data.shareId }, "POST") .then(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); // 支付结果页面展示图片用 app.globalData.infoGoods = { name: this.data.goods.name, brief: this.data.goods.brief, picUrl: this.data.goods.picUrl, type: this.data.goods.type }; console.info(that.data.shareId) wx.navigateTo({ url: '/pages/mall/checkout/checkout' }) } catch (e) { console.info(e) } } else { util.showErrorToast(res.errmsg); } }); //} } }, //添加到购物车 addToCart: function () { var that = this; if (this.data.goosNumber <= 0||this.data.goosNumber=='') { util.showErrorToast('请输入商品数量'); return false; } if (this.data.currentSku=='') { util.showErrorToast('请选择商品规格'); return false; } //添加到购物车 util.request(mall.CartAdd, { commodityId: this.data.goods.id, commoditySkuId:this.data.currentSku, number: this.data.goosNumber, }, "POST") .then(function (res) { let _res = res; if (_res.errno == 0) { wx.showToast({ title: '添加成功' }); that.setData({ // openAttr: !that.data.openAttr, cartGoodsCount: _res.data }); //显示tab购物车缓存 user.cartadd(that.data.number); } else { util.showErrorToast(_res.errmsg); } }); }, cutNumber: function () { this.setData({ number: (this.data.number - 1 > 1) ? this.data.number - 1 : 1 }); }, addNumber: function () { // 如果是安心包只能购买一个 console.log(this.data.goods); if (this.data.goods.goodsSn == '1036016') { wx.showToast({ title: '此款商品只能购买一个', icon: 'none', duration: 2000 }); } else { 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.navigateTo({ url: '/pages/mall/cart/cart' }); }, onReady: function () { // 页面渲染完成 }, qrtouchstart: function () { this.setData({ myqr_blur: 100, myqr_show: false }); }, copyToHM() { let copyLink = this.data.goods.copyLink; console.log(copyLink); if (copyLink != undefined && copyLink != '') { wx.setClipboardData({ data: copyLink, success(res) { wx.getClipboardData({ success(res) { console.log(res.data) // data } }) } }); } else { wx.showToast({ title: '该商品暂未配置盒马链接', icon: 'none' }) } }, onSelfPayChange(e) { console.log(e); this.setData({ selfPayChecked: e.detail, }); }, onSpreadPayChange(e) { console.log(e); this.setData({ spreadPayChecked: e.detail, }); }, cancelSelfPay() { let selfPayChecked = this.data.selfPayChecked; if (selfPayChecked == true) { wx.setStorageSync('selfPayChecked', true); } this.setData({ selfPayShow: false, }); }, cancelSpreadPay() { let spreadPayChecked = this.data.spreadPayChecked; if (spreadPayChecked == true) { wx.setStorageSync('spreadPayChecked', true); } this.setData({ spreadPayShow: false, }); }, goSelfPay() { let selfPayChecked = wx.getStorageSync('selfPayChecked'); if (selfPayChecked != true) { this.setData({ selfPayShow: true, }); } else { this.addFast(); } }, goSpread() { let spreadPayChecked = wx.getStorageSync('spreadPayChecked'); console.log(spreadPayChecked); if (spreadPayChecked != true) { this.setData({ spreadPayShow: true, }); } else { // wx.navigateTo({ // url: '/pages/goods/goodsPoster/goodsPoster?goodsId='+this.data.goods.id, // }) this.createPoster(); } }, posterCopy() { let that = this wx.setClipboardData({ data: that.data.myqr_ads, success: function (res) { wx.getClipboardData({ success: function (res) { wx.showToast({ title: '文案复制成功', icon: 'success', duration: 2000 }); // that.hidePoster(); } }) } }) }, hidePoster() { this.setData({ myqr_show: false, myqr_blur: 100, myqr_bottom_btn: 'fixed' }) }, createPoster() { wx.showLoading({ title: '生成中', }) wx.pageScrollTo({ scrollTop: 0 }) if (this.data.myqr_url != null) { wx.hideLoading(); this.setData({ myqr_show: true, myqr_blur: 25, myqr_bottom_btn: 'unset' }) return; } util.request(mall.QrGoodsCodeCreate, { goodsId: this.data.goods.id }).then(res => { wx.hideLoading(); if (res.errno == 0) { this.setData({ myqr_url: res.data.imgUrl, myqr_ads: res.data.ads, myqr_show: true, myqr_blur: 25, myqr_bottom_btn: 'unset' }) } else { util.showErrorToast("未设置分享图") } }); }, goSaveQrcode: function () { //保存二维码图片 let that = this; console.info(that.data.myqr_url); wx.downloadFile({ url: that.data.myqr_url, success: function (res) { if (res.statusCode === 200) { let img = res.tempFilePath; wx.saveImageToPhotosAlbum({ filePath: img, success(res) { that.goCloseMyqr('个人专属二维码图片已保存到您的相册'); }, fail(res) { that.goCloseMyqr('网络或授权问题 图片保存失败 请重试'); } }) } else that.goCloseMyqr('网络或授权问题 图片保存失败 请重试'); }, fail(res) { that.goCloseMyqr('网络或授权问题 图片保存失败 请重试'); } }) }, goCloseMyqr: function (msg) { //关闭分享图片的弹层 this.hidePoster(); if (msg) { wx.showToast({ title: msg, icon: 'none', duration: 3000 }) } }, reSelfPay() { let selfPayChecked = this.data.selfPayChecked; if (selfPayChecked == true) { wx.setStorageSync('selfPayChecked', true); } this.setData({ selfPayShow: false, }); this.addFast(); }, reSpread() { let spreadPayChecked = this.data.spreadPayChecked; if (spreadPayChecked == true) { wx.setStorageSync('spreadPayChecked', true); } this.setData({ spreadPayShow: false, }); this.createPoster(); // wx.navigateTo({ // url: '/pages/goods/goodsPoster/goodsPoster?goodsId='+this.data.goods.id, // }) }, goMemberCenter() { if (!app.globalData.hasLogin) { wx.navigateTo({ url: "/pages/auth/login/login" }); return; } else { wx.navigateTo({ url: "/pages/member/memberCenter/memberCenter" }); } }, bindNumberInput: function (e) { this.setData({ goosNumber: e.detail.value }) }, minusNumber(){ if(this.data.goosNumber>1){ this.setData({ goosNumber:this.data.goosNumber-1 }); }else{ util.showErrorToast('数量不能再少啦'); } }, addNumber(){ console.log(this.data.isDxk); //如果是电信卡只能买一个 if (this.data.isDxk) { wx.showToast({ title: '此款商品只能购买一个', icon: 'none', duration: 2000 }); return; } if(this.data.goosNumber<9999){ this.setData({ goosNumber:this.data.goosNumber+1 }); } }, skuSelect(e){ let id=e.currentTarget.dataset.id; let stock=e.currentTarget.dataset.stock; if(stock>0){ this.setData({ currentSku:id }); console.log(this.data.currentSku); } //电信卡 if(this.data.isDxk){ this.setData({ currentSku:id }); console.log(this.data.goods.skus) } } })