// packageF/cart_share/cart_share.js var app = getApp(); Page({ /** * 页面的初始数据 */ data: { share_id: "", set: {}, member: {}, cartList: [], //商品列表 eachCheckList: [], //选中商品列表 checkAll: false, selectBol: true, showCouponDetail: false, //优惠券弹窗 good_clicktag: 0, all_get_coupon: false, share_coupons: [], //分享优惠券 coupons: [], //自己的优惠券 old_coupons: [], coupons_temp: {}, //折叠优惠券显示数量 checkCouponList: [], //选中的优惠券 language: "", timer: null, showWechatshar: false, path: "/packageF/cart_share/cart_share", imageUrl: "", }, /** * 生命周期函数--监听页面加载 */ onLoad: function (options) { if (options.sid) { this.setData({ share_id: options.sid, path: `/packageF/cart_share/cart_share?sid=${options.sid}` }); } }, /** * 生命周期函数--监听页面初次渲染完成 */ onReady: function () { let language = wx.getStorageSync('langIndex'); this.setData({ 'language': language.en }); }, /** * 生命周期函数--监听页面显示 */ onShow: function () { this.getData(); }, getData() { let url = app.getNetAddresss("plugin.cart-sharing.frontend.cart.get-sharing-data"); // 从购物车过来 分享者 if (this.data.share_id) { url = app.getNetAddresss("plugin.cart-sharing.frontend.cart.receive-page-data"); // 被分享 url += "&share_id=" + this.data.share_id; } app._getNetWork({ url: url, success: (resdata) => { var response = resdata.data; if (response.result == 1) { if (this.data.share_id) { this.setData({ cartList: response.data.goods || [], share_coupons: response.data.coupons || [], }); this.checkAllCoupon(); this.setData({ imageUrl: this.data.cartList[0] ? this.data.cartList[0].thumb : '', }); } else { this.setData({ cartList: response.data.cart_list, coupons: response.data.coupons || [] }); this.initSelectCoupon(this.data.coupons); } this.setData({ set: response.data.set, member: response.data.member }); } else { app.tips(response.msg); } }, fail: (res) => { console.log(res); }, }); }, shareGoods() { // 保存分享商品 console.log("分享商品"); if (this.data.eachCheckList.length == 0 && this.data.share_coupons.length == 0) { return; } let goods = []; let imgUrl = ""; let link = `/packageF/cart_share/cart_share?sid=`; this.data.cartList.map((good) => { if (this.data.eachCheckList.includes(String(good.goods_id))) { if (!imgUrl) { imgUrl = good.goods.thumb; this.setData({ imageUrl: imgUrl }); } goods.push({ goods_id: good.goods_id, amount: good.total, option_id: good.goods_option ? good.goods_option.id : '' }); } }); let urlStr = app.getNetAddresss("plugin.cart-sharing.frontend.cart.save-sharing-goods"); wx.showLoading({ title: '生成中', mask: true }); app._postNetWork({ url: urlStr, data: { goods: goods }, success: (resdata) => { let res = resdata.data; if (res.result === 1) { link = link + res.data.share_id; this.setData({ path: link }); if (this.data.share_coupons.length > 0) { this.shareCoupon(res.data.share_id); } else { wx.hideLoading(); this.setData({ showWechatshar: true }); } } else { app.tips(res.msg); } }, fail: (res) => { console.log(res); }, }); }, shareCoupon(share_id) { // 保存分享优惠券 let coupon = []; this.data.share_coupons.map((item) => { coupon.push({ coupon_id: item.coupon_id, amount: item.num }); }); let urlStr = app.getNetAddresss("plugin.cart-sharing.frontend.cart.save-sharing-coupon"); app._postNetWork({ url: urlStr, data: { share_id: share_id, coupon: coupon }, success: (resdata) => { let res = resdata.data; wx.hideLoading(); if (res.result === 1) { //成功就弹窗 this.setData({ showWechatshar: true }); } else { app.tips(res.msg); } }, fail: (res) => { console.log(res); }, }); }, getCoupon(e) { let data = e.currentTarget.dataset.coupon; let index = e.currentTarget.dataset.index; // 领取优惠券 let couponData = []; if (data == "all" && this.data.all_get_coupon) { // 领完就别领了 return; } if (data == "all") { this.data.share_coupons.map((item) => { couponData.push({ coupon_id: item.id, type: item.share_type }); }); } else { couponData.push({ coupon_id: data.id, type: data.share_type }); } let urlStr = app.getNetAddresss("plugin.cart-sharing.frontend.cart.receive-coupon"); app._postNetWork({ url: urlStr, data: { share_id: this.data.share_id, couponData: couponData }, success: (resdata) => { let res = resdata.data; if (res.result === 1) { if (data == "all") { this.setData({ all_get_coupon: true }); } else { this.checkAllCoupon(); data.sharing_status = 1; } this.setData({ ["share_coupons[" + index + "]"]: data, }); app.tips("领取成功"); } else { app.tips(res.msg); } }, fail: (res) => { console.log(res); }, }); }, checkAllCoupon() { let flag = true; this.data.share_coupons.map((item) => { if (item.sharing_status == 0) { flag = false; } }); this.setData({ all_get_coupon: flag }); }, addIntoCart() { // 加入购物车 let goods_data = []; this.data.cartList.map((good) => { if (this.data.eachCheckList.includes(String(good.goods_id))) { goods_data.push({ goods_id: good.goods_id, total: good.total, option_id: good.option_id || '' }); } }); let urlStr = app.getNetAddresss("member.member-cart.batch-store"); app._postNetWork({ url: urlStr, data: { goods_data: goods_data }, success: (resdata) => { let res = resdata.data; if (res.result === 1) { if (res.data.error.length > 0) { let msg = ""; this.data.cartList.map((good) => { if (res.data.error.includes(good.goods_id)) { msg = msg + good.title + '、'; } }); app.confirm(msg.slice(0, -1) + "加入购物车失败,请重新选择!", '', false); } else { app.tips("加入成功"); } } else { app.tips(res.msg); } }, fail: (res) => { console.log(res); }, }); }, //初始化优惠券 initSelectCoupon(coupon) { let coupon_data = coupon; let result = []; let temp = {}; for (let i = 0; i < coupon_data.length; i++) { let num = 0; //优惠券数量 coupon_data[i].valid = true; coupon_data[i].checked = false; let _data = coupon_data[i]; result.push(_data); temp[coupon_data[i].coupon_id] = {}; temp[coupon_data[i].coupon_id].num = num; } this.setData({ coupons_temp: temp, coupons: result }); // console.log(this.data.coupons, this.data.coupons_temp,"coupons_temp"); }, //选择优惠券 selectCoupon(e, num) { let couponBol = e.detail; let index = e.currentTarget.dataset.index; let item = e.currentTarget.dataset.item; // console.log(couponBol, index, item,num); this.setData({ ["coupons[" + index + "].checked"]: couponBol, }); this._screenCoupon(couponBol, item, num); }, //筛选数据优惠券状态 _screenCoupon(couponBol, valObj, num) { let tarValue = valObj; let checkCouponList = this.data.checkCouponList; if (this.data.checkCouponList.length > 0) { for (let i = 0; i < this.data.checkCouponList.length; i++) { if (this.data.checkCouponList[i].coupon_id == tarValue.coupon_id) { checkCouponList.splice(i, 1); } } } if (couponBol) { //选中添加 tarValue.num = num || 1; checkCouponList.push(tarValue); } else { tarValue.num = 0; } //开启折叠优惠券并且为点击复选框为选中状态 this.data.coupons_temp[tarValue.coupon_id].num = couponBol ? num || 1 : 0; this.setData({ coupons_temp: this.data.coupons_temp }); this.setData({ checkCouponList: checkCouponList }); }, changeCoupon(e) { let valObj = e.target.dataset.item; let num = e.detail; let index = e.target.dataset.index; // console.log("=================", e.detail, valObj); if (num > valObj.count) { wx.showToast({ icon: "none", title: "数量已达上限", duration: 2000, }); clearTimeout(this.data.timer); this.data.timer = setTimeout(() => { // 注意此时修改 value 后会再次触发 change 事件 this.data.coupons_temp[valObj.coupon_id].num = valObj.count; this.setData({ coupons_temp: this.data.coupons_temp, }); }, 200); return; } else if (num == "" || num == undefined || num == 0) { wx.showToast({ icon: "none", title: "暂不使用请取消勾选", duration: 2000, }); return; } else { clearTimeout(this.data.timer); valObj.num = num; this.data.coupons_temp[valObj.coupon_id].num = num; this.setData({ coupons_temp: this.data.coupons_temp, }); } // clearTimeout方法,以便控制连续触发带来的无用调用 let value = { detail: true, currentTarget: { dataset: { index: index, item: valObj, }, }, }; if (this.data.timeoutId) { clearTimeout(this.data.timeoutId); // 先清除之前的延时,并在下面重新开始计算时间 } this.data.timeoutId = setTimeout(() => { // 100毫秒以后执行方法 this.selectCoupon(value, num); }, 200); // 如果还没有执行就又被触发,会根据上面的clearTimeout来清除并重新开始计算 }, openCoupon() { this.setData({ showCouponDetail: true, old_coupons: JSON.parse(JSON.stringify(this.data.coupons)), checkCouponList: JSON.parse(JSON.stringify(this.data.share_coupons)), }); }, sureCoupon() { this.setData({ showCouponDetail: false, share_coupons: JSON.parse(JSON.stringify(this.data.checkCouponList)) }); }, cancelCoupon() { this.setData({ showCouponDetail: false, coupons: JSON.parse(JSON.stringify(this.data.old_coupons)) }); }, //点击全选 allSelect(event) { let bol = event.detail; this.setData({ checkAll: bol, }); this.selectBolfun('1'); if (this.data.selectBol) { // console.log(this.selectBol, event, "全选"); if (this.data.checkAll) { let all_carts_id = []; this.data.cartList.map((item) => { all_carts_id.push(String(item.goods_id)); }); this.data.eachCheckList = JSON.parse(JSON.stringify(all_carts_id)); } else { this.data.eachCheckList = []; } this.setData({ eachCheckList: this.data.eachCheckList }); } }, selectBolfun(num) { // 判断点击是否点击全选 '1', 防止多次触发this.eachCheckList[c_index]变化allSelectHandle num === '1' ? this.data.selectBol = true : this.data.selectBol = false; }, //选择商品监听 this.eachCheckList变化会触发 allSelectHandle(event) { let value = event.detail; this.selectBolfun('0'); // console.log(this.data.selectBol,value, "value",this.data.cartList); if (!this.data.selectBol) { this.data.checkAll = value.length === this.data.cartList.length; this.setData({ checkAll: this.data.checkAll, eachCheckList: value }); } // console.log(this.data.eachCheckList,"this.eachCheckList"); }, //商品输入框输入绑定 goodinpbtn(e) { let index = e.currentTarget.dataset.index; let goodval = e.detail.value; this.setData({ [`cartList[${index}].total`]: goodval, }); }, numberLeft(e) { let index = e.currentTarget.dataset.index; // console.log(this.cartList[index].total); if (this.data.cartList[index].total <= 1) { app.tips("商品数量不能为负数或零"); return; } this.setData({ [`cartList[${index}].total`]: Number(this.data.cartList[index].total) - 1, }); // this.changeCount(this.cartList[index].total, this.cartList[index].goods_id, index); }, numberRight(e) { let index = e.currentTarget.dataset.index; this.data.cartList[index].total = Number(this.data.cartList[index].total) + 1; if (this.data.cartList[index].stock && this.data.cartList[index].total > this.data.cartList[index].stock) { app.tips(`该商品库存只剩${this.data.cartList[index].stock}件`); this.data.cartList[index].total = this.data.cartList[index].stock; // return; } this.setData({ [`cartList[${index}].total`]: this.data.cartList[index].total, }); }, onClose() { this.setData({ showWechatshar: false }); }, //跳转商品详情 toGoodsInfo(e) { let goods_id = e.currentTarget.dataset.goodsid; wx.navigateTo({ url: "/packageA/detail_v2/detail_v2?id=" + goods_id, }); }, gotoCart() { wx.reLaunch({ url: "/packageG/pages/buy/cart_v2/cart_v2", }); }, /** * 生命周期函数--监听页面隐藏 */ onHide: function () { }, /** * 生命周期函数--监听页面卸载 */ onUnload: function () { }, /** * 页面上拉触底事件的处理函数 */ onReachBottom: function () { }, /** * 用户点击右上角分享 */ onShareAppMessage: function () { let description = `${this.data.member.nickname}${this.data.set.title}` + (this.data.eachCheckList.length > 0 ? `(共${this.data.eachCheckList.length}款商品)` : ''); if (this.data.share_id) { description = `${this.data.member.nickname}${this.data.set.title}` + (this.data.cartList.length > 0 ? `(共${this.data.cartList.length}款商品)` : ''); } return { title: description, path: this.data.path, imageUrl: this.data.imageUrl, }; }, onShareTimeline() { let description = `${this.data.member.nickname}${this.data.set.title}` + (this.data.eachCheckList.length > 0 ? `(共${this.data.eachCheckList.length}款商品)` : ''); if (this.data.share_id) { description = `${this.data.member.nickname}${this.data.set.title}` + (this.data.cartList.length > 0 ? `(共${this.data.cartList.length}款商品)` : ''); } return { title: description, imageUrl: this.data.imageUrl, }; } });