diff --git a/packageB/pages/zuhegou/preindex/index.js b/packageB/pages/zuhegou/preindex/index.js new file mode 100644 index 0000000..ce91880 --- /dev/null +++ b/packageB/pages/zuhegou/preindex/index.js @@ -0,0 +1,2190 @@ +const app = getApp(); +let self = null; +var os = app.globalData.setting; +var ut = require("../../../../utils/util.js"); +var regeneratorRuntime = require('../../../../utils/runtime.js'); +var oo = app.globalData; + + +let imgDraw = { + "width": "650px", + "height": "843px", + "background": "https://mshopimg.yolipai.net/miniapp/images/zhg/bg-zuhegou.jpg", + "views": [{ // 头像 + "type": "image", + "url": "https://desk-fd.zol-img.com.cn/t_s960x600c5/g5/M00/0F/08/ChMkJlauzXWIDrXBAAdCg2xP7oYAAH9FQOpVAIAB0Kb342.jpg", + "css": { + "width": "100px", + "height": "100px", + "top": "20px", + "left": "275px", + "borderRadius": "100px", + "mode": "scaleToFill", + "borderWidth": "2px", + "borderColor": "#fff", + } + }, + { //昵称 + "type": "text", + "text": "我是店铺名", + "css": { + "width": "650px", + "color": "#fff", + "top": "136px", + // "left": "137px", + "textAlign": "center", + "fontSize": "26px", + "maxLines": "1", + } + }, + { //10元任选3件 + "type": "text", + "text": "10元任选3件", + "css": { + "color": "#fff", + "width": "650px", + "top": "270px", + "fontSize": "70px", + "maxLines": "1", + "textAlign": "center", + "fontWeight": "bold", + } + }, + { //活动时间 + "type": "text", + "text": "活动时间:2021.07.06 - 2021.07.08", + "css": { + "color": "#333", + "width": "650px", + "top": "440px", + "fontSize": "26px", + "fontWeight": "normal", + "maxLines": "1", + "textAlign": "center" + } + }, + { // 码 + "type": "image", + "url": "https://desk-fd.zol-img.com.cn/t_s960x600c5/g5/M00/0F/08/ChMkJlauzXWIDrXBAAdCg2xP7oYAAH9FQOpVAIAB0Kb342.jpg", + "css": { + "color": "#000", + "width": "200px", + "height": "200px", + "top": "525px", + "left": "225px", + } + }, + { // 扫码提示 + "type": "text", + "text": "长按扫码即可参与活动", + "css": { + "color": "#666", + "width": "650px", + "top": "750px", + "fontSize": "26px", + "textAlign": "center" + } + }, + ] +}; + + +Page({ + + /** + * 页面的初始数据 + */ + data: { + iurl: os.imghost, + showRule: false, + showMask: false, + showNum: false, + haveAdded: false, + //imgDraw: imgDraw, 分享内容 + id: 0, //获得活动id + page: 1, //第一页 + no_more: 0, //没有更多 + loading: 0, //加载中 + list: null, //商品列表的显示 + act: null, //组合活动 + all_price: 0, //合计价格 + all_num: 0, //全部数量 + sele_pick_id: 0, //默认选择门店,当用户什么商品都没有选,sele_pick_id=0 + def_store: null, //用户默认的门店 + sele_store: 0, //是不是选择了门店 + more_store: 0, //选择门店 + sort_store: 0, //门店分类 + choice_sort_store: 0, //选择分类门店 + fir_pick_index: 0, //门店选择的下标 + sec_pick_index: 0 //门店选择的下标,地区选择之后的内页 + }, + + /** + * 生命周期函数--监听页面加载 + */ + onLoad: function (options) { + console.log(options, 111); + self = this; + var the_id = options.id; + if (options.title) { + wx.setNavigationBarTitle({ + title: options.title, + }); + }; + var first_leader = options.first_leader; + + //--如果tg_id是空的话,分享回来-- + if (the_id == undefined || the_id == null || the_id == "") { + var gid_str = decodeURIComponent(options.scene); + gid_str = gid_str.split("_"); + the_id = gid_str[0]; + if (gid_str.length > 1) { + first_leader = gid_str[1]; + } + } + + this.data.id = the_id; + if (first_leader) { + getApp().globalData.first_leader = first_leader; + //调用接口判断是不是会员 + getApp().request.promiseGet("/api/weshop/shoppingGuide/get/" + os.stoid + "/" + first_leader, {}).then(res => { + if (res.data.code == 0) { + getApp().globalData.guide_id = res.data.data.id; + } + }) + } + + //如果有会员的时候 + var userInfo = getApp().globalData.userInfo; + if (!userInfo) { + getApp().goto("/pages/togoin/togoin"); + return false; + } + }, + + /** + * 生命周期函数--监听页面显示 + */ + onShow: function () { + var th = this, + that = this, + ee = this; + this.data.is_timer = 1; + if (this.data.act) this.countDown(); + //如果有会员的时候 + var userInfo = getApp().globalData.userInfo; + if (userInfo) { + if (!th.data.is_get_act) { + //获取活动信息 + var url = "/api/weshop/prom/zhbuy/get/" + os.stoid + "/" + th.data.id + "/" + userInfo.user_id; + getApp().request.get(url, { + success: function (e) { + th.data.is_get_act = 1; + if (e.data.code == 0 && e.data.data) { + self.setData({ + act: e.data.data + }); + if (e.data.data.is_show != 1) { + th.setData({ + error: '活动未开启' + }); + return false; + } + if (ut.gettimestamp() < e.data.data.start_time) { + th.setData({ + error: '活动还未开始' + }); + return false; + } + if (e.data.data.is_end == 0 && ut.gettimestamp() < e.data.data.end_time) { + //-- 获取商品列表 -- + self.get_list(); + self.countDown(); + } else { + th.setData({ + error: '活动已经过期' + }); + return false; + } + } else { + th.data.is_get_act = 0; + th.setData({ + error: e.data.msg + }); + return false; + } + } + }); + } + + //等待活动值 + this.waitfor2(10, 'list', function () { + if (!th.data.list) return false; + if (ut.gettimestamp() < th.data.act.start_time) { + return false; + } + if (th.data.act.is_end == 10 || ut.gettimestamp() >= th.data.act.end_time) { + return false; + } + //获取头像的分享 + th.get_head_temp(function () { + var txt = th.data.act.zhprice + "元任选" + th.data.act.zhbuyqty + "件"; + imgDraw.views[0].url = th.data.share_head; + imgDraw.views[1].text = userInfo.nickname; + imgDraw.views[2].text = txt; + + var start = ut.formar_no_full(th.data.act.start_time, '.'); + var end = ut.formar_no_full(th.data.act.end_time, '.'); + txt = "活动时间:" + start + " - " + end; + imgDraw.views[3].text = txt; + + var scene = th.data.id + ""; + var user_id = getApp().globalData.user_id; + scene += "_" + user_id; + ///二微码 + var path3 = os.url + "/api/wx/open/app/user/getWeAppEwm/" + + os.stoid + "?sceneValue=" + scene + "&pageValue=packageB/pages/zuhegou/index/index"; + wx.getImageInfo({ + src: path3, + success: function (res) { + var vpath = res.path; + imgDraw.views[4].url = vpath; + th.setData({ + imgDraw: imgDraw + }) + } + }) + }) + + //获取用户的默认门店 + getApp().get_user_store(function (e) { + if (!e) { + th.data.fir_def_store = {}; //赋值空对象 + return false; + } + + + + var ee = JSON.parse(JSON.stringify(e)); + var appd = getApp().globalData; + //-- 等待定位系统的开启 -- + th.waitfor2(15, 'is_get_local_ok', function () { + + if (!th.data.is_get_local_ok) return false; + + var e = JSON.parse(JSON.stringify(ee)); + //如果有开启近距离的话,同时距离优不一样了 + if (that.data.lat != null) { + //如果经纬度有变化的话 + if (e && appd.lat == that.data.lat && appd.lon == that.data.lon && e.distance > 0) { + that.set_def_storage(e); + } else { + //要用接口是获取距离,js的计算不准 + getApp().request.promiseGet("/api/weshop/pickup/list", { + data: { + store_id: os.stoid, + pickup_id: e.pickup_id, + is_pos: 1, + lat: th.data.lat, + lon: th.data.lon + }, + }).then(res => { + if (res.data.code == 0) { + e = res.data.data.pageData[0]; + if (e) { + e.is_no_dis = ee.is_no_dis; + appd.pk_store = e; + that.set_def_storage(e); + } + + } + }) + } + appd.lat = that.data.lat; + appd.lon = that.data.lon; + } else { + if (e) { + e.distance = null; + that.set_def_storage(e); + } + } + }) + }); + + //----获取系统参数----- + getApp().getConfig2(function (e) { + ee.setData({ + bconfig: e, + sales_rules: e.sales_rules, + }); + //设置基本参数 + th.wait_for_store_config(e); + + var json_d = JSON.parse(e.switch_list); + ee.setData({ + store_config: e, + sys_switch: json_d, + is_closecoupon: json_d.is_closecoupon, + is_newsales_rules: json_d.is_newsales_rules, + is_open_offline: json_d.is_pricing_open, + sales_rules: e.sales_rules + }); + + //-- 计算等级价相关 -- + var swithc_list = e.switch_list; + var sw_arr = JSON.parse(swithc_list); + //---如果后台又开等级卡的开关--- + if (sw_arr.rank_switch && sw_arr.rank_switch == "2") { + th.setData({ + rank_switch: true + }); + //---回调卡的列表--- + th.getPlusCardType(function (ob) { + th.setData({ + card_list: ob.card_list + }); + var user = getApp().globalData.userInfo; + if (!user) return false; + if (user.card_field && user['card_expiredate']) { + var str = user['card_expiredate'].replace(/-/g, '/'); + var end = new Date(str); + end = Date.parse(end) / 1000; + var now = ut.gettimestamp(); + //--- 判断是等级会员,且在有效期范围内 --- + if (user.card_field && now < end) { + var card_name = ob.name_map.get(user.card_field); + th.setData({ + card_field: user.card_field, + card_name: card_name, + card_list: ob.card_list + }); + } + } + //获取购物车的内容 + th.get_cart_val(e); + + }) + } else { + //获取购物车的内容 + th.get_cart_val(e); + } + }, 1); + + }) + + } + }, + + onHide: function () { + this.data.is_timer = 0; + }, + + //-- 调用接口的LIST,获取商品 -- + get_list: function () { + var th = this; + if (this.data.loading) return false; + if (this.data.no_more) return false; + this.data.loading = 1; + var url = "/api/weshop/prom/zhbuyGoods/page"; + var req_data = { + page: this.data.page, + pageSize: 10, + store_id: os.stoid, + zh_id: this.data.id + } + //开始调用接口 + getApp().request.get(url, { + data: req_data, + success: function (res) { + th.data.loading = 0; + th.setData({ + is_get: 1 + }) + if (ut.ajax_ok(res)) { + th.data.page++; + var list = th.data.list; + if (!list) list = []; + + //当是下拉刷新的时候 + if (th.data.page > 1 && th.data.cart_list) { + //下拉之后也要重新计算一下金额 + th.calc_more(res.data.data.pageData, function (list1) { + for (var i in list1) { + list.push(list1[i]); + } + th.setData({ + list: list + }); + th.re_sum_price(); + }) + } else { + for (var i in res.data.data.pageData) { + list.push(res.data.data.pageData[i]); + } + th.setData({ + list: list + }); + if (res.data.data.total <= 10) { + th.setData({ + no_more: 1 + }); + } + } + } else { + th.setData({ + no_more: 1 + }); + } + } + }) + }, + + //-- 滚动到底部触发 -- + get_more_list: function () { + this.get_list(); + }, + + /** + * 用户点击右上角分享 + */ + onShareAppMessage: function () { + var title = this.data.act.name; + var url = "/packageB/pages/zuhegou/index/index?id=" + this.data.act.id; + if (getApp().globalData.user_id) { + url += "&first_leader=" + getApp().globalData.user_id; + } + var ob = { + title: title, + path: url, + }; + if (this.data.act.img_url) + ob.imageUrl = this.data.iurl + this.data.act.img_url; + return ob; + }, + + /** + * 用户分享朋友圈 + */ + onShareTimeline() { + var title = this.data.act.name; + var url = "/packageB/pages/zuhegou/index/index?id=" + this.data.act.id; + if (getApp().globalData.user_id) { + url += "&first_leader=" + getApp().globalData.user_id; + } + var ob = { + title: title, + path: url, + }; + if (this.data.act.img_url) + ob.imageUrl = this.data.iurl + this.data.act.img_url; + return ob; + }, + /** + * 点击规则详情,弹出规则 + */ + showRule() { + this.setData({ + type: 0, //控制显示规则详情还是提示信息,0规则详情,1提示信息 + showRule: true, + showMask: true, + }); + }, + + /** + * 点击关闭按钮关闭规则详情弹窗 + */ + closeRule() { + this.setData({ + showRule: false, + showMask: false, + }); + }, + + /** + * 点击提示信息 + */ + showInfo() { + this.setData({ + type: 1, + showRule: true, + showMask: true, + }); + }, + + /** + * 加入购物车 + */ + addToCart(e) { + var th = this; + var index = e.currentTarget.dataset.index; + var userInfo = getApp().globalData.userInfo; + if (!userInfo) { + getApp().goto("/pages/togoin/togoin"); + return false; + } + let haveAdded = this.data.list[index].haveAdded; + this.data.sele_index = index; + let title = ''; + self = this; + th.data.s_cart_num = 0; + + //说明是加入购物车是时候 + this.data.is_zuhe_addcart = 1; + if (!haveAdded) { + th.data.sele_g = this.data.list[index]; + if (!th.data.sele_g.num) th.data.goodsInputNum = 1; + + //如果没有门店,活动商品的配送方式和门店的配送方式不一样 + if (!th.data.def_pick_store || + (th.data.sele_g.distr_type != 0 && th.data.def_pick_store.distr_type != 0 && th.data.sele_g.distr_type != th.data.def_pick_store.distr_type)) { + //选择了门店 + if (th.data.sele_store) { + wx.showToast({ + title: "该商品的物流配送方式和默认门店不匹配!", + icon: 'none', + duration: 2000 + }) + } else { + wx.showModal({ + title: '温馨提示', + content: '该商品的物流配送方式和默认门店不匹配,是否要切换门店?', + success(res) { + if (res.confirm) { + //物流的配送方式不一样 + th.get_sto(); + var set_data = { + store: 1 + }; + if (th.data.def_pick_store) { + set_data.is_no_pipei = th.data.def_pick_store.pickup_id; + } + th.setData(set_data); + } + } + }) + } + return false; + } else { + th.setData({ + is_no_pipei: 0 + }); + th.check_is_in_cart(function () { + th.add_cart_func(); + }) + } + } else { + + var txt = "list[" + index + "].haveAdded"; + var txt1 = "list[" + index + "].num"; + var txt2 = "list[" + index + "].showNum"; + th.data.sele_g = this.data.list[index]; + + wx.showModal({ + title: '温馨提示', + content: "确定取消该商品参与活动?", + success(res) { + if (res.confirm) { + console.log('用户点击确定'); + if (th.data.sele_g.cart_num && th.data.sele_g.cart_num - th.data.sele_g.num > 0) { + + var updata = { + id: th.data.sele_g.cart_id, + goods_num: th.data.sele_g.cart_num - th.data.sele_g.num, + store_id: os.stoid + } + getApp().request.put("/api/weshop/cart/update", { + data: updata, + success: function (rs) { + if (rs.data.code == 0) { + title = '取消成功'; + th.setData({ + [txt1]: 0, + [txt2]: false, + [txt]: false, + }); + wx.showToast({ + title: title, + icon: 'success', + }); + th.re_sum_price(); + } + } + }) + + } else { + var url = '/api/weshop/cart/del/' + os.stoid + '/' + th.data.sele_g.cart_id; + getApp().request.delete(url, { + success: function (res) { + + if (res.data.code == 0) { + title = '取消成功'; + th.setData({ + [txt1]: 0, + [txt2]: false, + [txt]: false, + }); + wx.showToast({ + title: title, + icon: 'success', + }); + + th.re_sum_price(); + } + } + }); + } + + } else if (res.cancel) { + console.log('用户点击取消') + self.setData({ + haveAdded: true, + }); + } + } + }) + } + + }, + + /** + * 增加数量 + */ + add(e) { + + var th = this; + var userInfo = getApp().globalData.userInfo; + if (!userInfo) { + getApp().goto("/pages/togoin/togoin"); + return false; + } + + if (this.data.changing) return false; + this.data.changing = 1; + + var index = e.currentTarget.dataset.index; + this.data.sele_g = this.data.list[index]; + this.data.sele_index = index; + th.data.goodsInputNum = this.data.sele_g.num + 1; + if (this.data.sele_g.cart_num) { + th.data.s_cart_num = this.data.sele_g.cart_num + 1; + } + th.add_cart_func(); + }, + + /** + * 减少数量 + */ + sub(e) { + var userInfo = getApp().globalData.userInfo; + if (!userInfo) { + getApp().goto("/pages/togoin/togoin"); + return false; + } + + var th = this; + var index = e.currentTarget.dataset.index; + var item = this.data.list[index]; + this.data.sele_g = item; + let num = item.num; + th.data.s_cart_num = item.cart_num - 1; + + if (num >= 2) { + var check_num = num - 1; + //小于起购数 + if (check_num < item.zhqty) { + wx.showToast({ + title: "该商品至少要购买" + item.zhqty + "件", + icon: 'none', + duration: 2000 + }) + return false; + } + + if (th.data.changing) return false; + th.data.changing = 1; + th.data.sele_g = item; + th.data.sele_index = index; + th.data.goodsInputNum = check_num; + + th.sub_updata_cart(); + return false; + } + + var txt = "list[" + index + "].haveAdded"; + var txt1 = "list[" + index + "].num"; + var txt2 = "list[" + index + "].showNum"; + + wx.showModal({ + title: '温馨提示', + content: '确定取消该商品参与活动?', + success(res) { + if (res.confirm) { + + if (th.data.s_cart_num) { + var updata = { + id: th.data.sele_g.cart_id, + goods_num: th.data.s_cart_num, + store_id: os.stoid + } + getApp().request.put("/api/weshop/cart/update", { + data: updata, + success: function (rs) { + if (rs.data.code == 0) { + var title = '取消成功'; + th.setData({ + [txt1]: 0, + [txt2]: false, + [txt]: false, + }); + wx.showToast({ + title: title, + icon: 'success', + }); + th.re_sum_price(); + } + } + }) + } else { + var url = '/api/weshop/cart/del/' + os.stoid + '/' + item.cart_id; + getApp().request.delete(url, { + success: function (res) { + if (res.data.code == 0) { + var title = '移除购物车成功'; + th.setData({ + [txt1]: 0, + [txt2]: false, + [txt]: false, + }); + wx.showToast({ + title: title, + icon: 'success', + }); + th.re_sum_price(); //重新统计数量和总金额 + } + } + }); + } + + } else if (res.cancel) { + console.log('用户点击取消') + self.setData({ + haveAdded: true, + }); + } + } + }) + return false; + + }, + + /** 分享 **/ + share() { + var th = this; + var userInfo = getApp().globalData.userInfo; + if (!userInfo) { + getApp().goto("/pages/togoin/togoin"); + return false; + } + wx.showLoading(); + setTimeout(function () { + th.setData({ + showMask: true, + showPoster: true, + }); + wx.hideLoading(); + }, 1000); + }, + + /** + * 关闭海报 + */ + closePoster() { + this.setData({ + showMask: false, + showPoster: false, + }); + }, + + onImgOK(e) { + console.log(e.detail.path); + this.setData({ + myimg: e.detail.path, + }); + + }, + + //---小于10的格式化函数---- + timeFormat(param) { + return param < 10 ? '0' + param : param; + }, + + //----倒计时函数----- + countDown() { + if (!this.data.is_timer) return false; + var th = this; + // 获取当前时间,同时得到活动结束时间数组 + var endTime = this.data.act.end_time; + var newTime = ut.gettimestamp(); + // 对结束时间进行处理渲染到页面 + var obj = null; + // 如果活动未结束,对时间进行处理 + if (endTime - newTime > 0) { + var time = (endTime - newTime); + // 获取天、时、分、秒 + var day = parseInt(time / (60 * 60 * 24)); + var hou = parseInt(time % (60 * 60 * 24) / 3600); + var min = parseInt(time % (60 * 60 * 24) % 3600 / 60); + var sec = parseInt(time % (60 * 60 * 24) % 3600 % 60); + obj = { + hou: this.timeFormat(hou), + min: this.timeFormat(min), + sec: this.timeFormat(sec) + } + if (day > 0) { + obj.day = this.timeFormat(day); + } + } else { + //活动已结束,全部设置为'00' + obj = { + day: '00', + hou: '00', + min: '00', + sec: '00' + } + th.setData({ + prom_time_text: '活动已经结束:', + prom_st: 3 + }) + th.setData({ + djs: obj + }); + return false; + } + + th.setData({ + djs: obj + }); + setTimeout(function () { + th.countDown() + }, 1000); + }, + + close_all: function () { + this.setData({ + showMask: false, + showPoster: false, + showRule: false + }); + }, + + + //------定时等待某个值,有值才进行运算-------- + waitfor2: function (n, pop_value, func) { + var th = this; + if (n <= 0) { + func() + return false + } + if (th.data[pop_value]) { + func(); + return false; + } + setTimeout(function () { + --n; + th.waitfor2(n, pop_value, func) + }, 1000); + }, + + //--获取头像的本地缓存,回调写法-- + get_head_temp: function (tt) { + var ee = this; + if (ee.data.share_head) { + tt(); + return false; + } + //---获取分享图片的本地地址,头像和商品图片---- + var path2 = getApp().globalData.userInfo.head_pic; + if (path2 == "") { + ee.data.share_head = "../../../../images/share/hui_hear_pic.png"; + tt(); + } else { + path2 = path2.replace("http://thirdwx.qlogo.cn", "https://wx.qlogo.cn"); + path2 = path2.replace("https://thirdwx.qlogo.cn", "https://wx.qlogo.cn"); + wx.getImageInfo({ + src: path2, + success: function (res) { + //res.path是网络图片的本地地址 + console.log(res); + ee.data.share_head = res.path; + tt(); + }, + fail: function () { + ee.data.share_head = "../../../../images/share/hui_hear_pic.png"; //分享的图片不能用网络的 + tt(); + } + }); + } + }, + + go_url: function (e) { + var url = e.currentTarget.dataset.url; + getApp().goto(url); + }, + + //-- 加入购物的函数 -- + add_cart_func: function () { + if (oo.user_id == null) { + this.data.changing = 0; + return getApp().my_warnning("还未登录!", 0, this); + } + if (!getApp().globalData.userInfo) { + this.data.changing = 0; + return getApp().my_warnning("还未登录!", 0, this); + } + + var e = this, + th = e, + o = this.data.sele_g, + a = o.goods_id; + + //----------添加到购物车时,要判断限购数量,-------- + e.get_buy_num(o, function (ee) { + //---判断商品是否超出限购--- + if (th.data.g_buy_num != null && th.data.sele_g.viplimited > 0) { + if (th.data.goodsInputNum + th.data.g_buy_num.get(th.data.sele_g.goods_id).gd_buynum > th.data.sele_g.viplimited) { + wx.showModal({ + title: '提示', + content: '超出商品限购' + }); + th.data.changing = 0; + return false; + } + if (th.data.s_cart_num) { + if (th.data.s_cart_num + th.data.g_buy_num.get(th.data.sele_g.goods_id).gd_buynum > th.data.sele_g.viplimited) { + wx.showModal({ + title: '提示', + content: '超出商品限购' + }); + th.data.changing = 0; + return false; + } + } + + } + //---判断商品是否超出活动限购--- + if (th.data.sele_g.buyqty > 0) { + if (th.data.goodsInputNum + th.data.g_buy_num.get(th.data.sele_g.goods_id).prom_buybum > th.data.sele_g.buyqty) { + wx.showModal({ + title: '提示', + content: '超出商品活动限购' + }); + th.data.changing = 0; + return false; + } + } + + if (th.data.goodsInputNum <= 0) { + this.data.changing = 0; + return s.my_warnning("商品数量不能为0", 0, th); + } + if (th.data.sto_sele_name == null || th.data.sto_sele_name == undefined) + this.setData({ + sto_sele_name: "" + }); + if (th.data.sto_sele_name == "") { + th.data.changing = 0; + return s.my_warnning("请选择门店", 0, th); + } + + //--------------此时操作的数据------------ + var newd = { + goods_id: o.goods_id, + goods_num: th.data.goodsInputNum, + pick_id: th.data.sto_sele_id, + user_id: oo.user_id, + store_id: os.stoid, + goods_price: o.shop_price, + member_goods_price: o.shop_price, + goods_name: o.goods_name, + goods_sn: o.goods_sn, + }; + + if (th.data.s_cart_num) { + newd.goods_num = th.data.s_cart_num; + } + + //---是不是从收藏夹出来的--- + if (th.data.c_guide_id) { + newd['guide_id'] = th.data.c_guide_id; + newd['guide_type'] = 2; + if ("add" == t.currentTarget.dataset.action) newd['guide_type'] = 3; + } else { + if (getApp().globalData.guide_id) { + newd['guide_id'] = getApp().globalData.guide_id; + newd['guide_type'] = 0; + if ("add" == t.currentTarget.dataset.action) newd['guide_type'] = 1; + } + } + + //让商品带上房间号 + if (th.data.sys_switch.is_skuroom_id == 1) { + if (th.data.sele_g.goods_id == getApp().globalData.room_goods_id) { + newd.room_id = getApp().globalData.room_id; + } + } else { + if (newd.goods_id == getApp().globalData.room_goods_id) newd.room_id = getApp().globalData.room_id; + } + + if (o.store_count <= 0) { + th.data.changing = 0; + return getApp().my_warnning("库存已为空!", 0, th); + } + if (o.store_count < e.data.goodsInputNum) { + th.data.changing = 0; + return getApp().my_warnning("库存不足!", 0, th); + } + th.add_cart_next(o, newd); //加入购物车下一步 + + }) + }, + + //---加入购物车的最后一步--- + add_cart_next(o, newd) { + var th = this; + //如果会员有等级价 + if (th.data.card_field) { + var card_price = o[th.data.card_field]; + if (card_price > 0) { + newd.goods_price = card_price; + newd.member_goods_price = card_price; + } + } + + var index = this.data.sele_index; + var txt = "list[" + index + "].haveAdded"; + var txt1 = "list[" + index + "].num"; + var txt2 = "list[" + index + "].showNum"; + var txt3 = "list[" + index + "].current_price"; + + + newd.prom_type = 7; + newd.prom_id = th.data.act.id; + + if (th.data.adding) return false; + th.data.adding = 1; + //-------如果购物车中有相关的数据--------- + if (th.data.goodsInputNum > 1) { + var item = th.data.sele_g; + if (th.data.goodsInputNum > o.store_count) { + th.data.adding = 0; + return getApp().my_warnning("库存不足!", 0, th); + } + if (th.data.goodsInputNum + th.data.g_buy_num.get(th.data.sele_g.goods_id).prom_buybum > o.buyqty && o.buyqty > 0) { + th.data.adding = 0; + return getApp().my_warnning("超出商品活动限购!", 0, th); + } + if (th.data.goodsInputNum + th.data.g_buy_num.get(th.data.sele_g.goods_id).prom_buybum > th.data.sele_g.viplimited && + th.data.sele_g.viplimited > 0 + ) { + th.data.adding = 0; + return getApp().my_warnning("超出商品限购!", 0, th); + } + + //如果商品没有其他活动,要取一下线下价格 + var updata = { + id: item.cart_id, + goods_num: th.data.goodsInputNum, + goods_price: newd.goods_price, + member_goods_price: newd.goods_price, + store_id: os.stoid, + }; + if (th.data.s_cart_num) { + updata.goods_num = th.data.s_cart_num; + } + //---是不是从收藏夹出来的--- + if (th.data.c_guide_id) { + updata['guide_id'] = th.data.c_guide_id; + updata['guide_type'] = 3; //加入购物车之后就变成了3 + } else { + if (getApp().globalData.guide_id) { + updata['guide_id'] = getApp().globalData.guide_id; + updata['guide_type'] = 0; + } + } + getApp().request.put("/api/weshop/cart/update", { + data: updata, + success: function (t) { + th.setData({ + [txt1]: th.data.goodsInputNum, + [txt2]: true, + [txt]: true, + [txt3]: newd.goods_price, + }); + th.data.adding = 0; + th.data.sele_store = 1; + + if (th.data.s_cart_num) { + var txt_temp = "list[" + index + "].cart_num"; + th.setData({ + [txt_temp]: th.data.s_cart_num + }) + } + + th.re_sum_price(); //重新统计数量和总金额 + } + }); + } else { + + getApp().request.post("/api/weshop/cart/save", { + data: newd, + success: function (t) { + if (t.data.code == 0) { + var txt4 = "list[" + th.data.sele_index + "].cart_id"; + th.setData({ + [txt1]: newd.goods_num, + [txt2]: true, + [txt3]: newd.goods_price, + [txt]: true, + [txt4]: t.data.data.id, + }); + + th.data.adding = 0; + th.data.sele_store = 1; + th.re_sum_price(); //重新统计数量和总金额 + } + } + }); + } + }, + + //等待获取配置 + wait_for_store_config: function (bconfig) { + var th = this; + var e = bconfig; + if (e && e.is_sort_storage) { + wx.getLocation({ + type: 'gcj02', + success: function (res) { + th.data.lat = res.latitude; + th.data.lon = res.longitude; + th.data.is_get_local_ok = 1; + }, + fail: function (res) { + if (res.errCode == 2) { + th.setData({ + is_gps: 0 + }); + if (th.data.is_gps == 0) { + getApp().confirmBox("请开启GPS定位", null, 10000, !1); + } + + } else { + th.setData({ + is_gps: "3" + }); + } + + th.data.is_get_local_ok = 1; + } + }) + } else { + th.data.is_get_local_ok = 1; + } + }, + + //--- 获取卡类列表 --- + getPlusCardType: function (func) { + var storid = os.stoid; + var user = getApp().globalData.userInfo; + if (!user) return false; + getApp().request.promiseGet("/api/weshop/plus/vip/mem/bership/list?" + "storeId=" + storid, {}).then(res => { + var plusCard = res.data.data; + var arr = [1219, 2089, 3031]; + var new_arr = new Array(); + var card_name_map = new Map(); + + var list = []; + for (var i = 0; i < plusCard.length; i++) { + if ((!user || user.card_field == null || user.card_field == "") && plusCard[i].IsStopBuy == true) continue; + var name = "card" + plusCard[i].CorrPrice.toLowerCase(); + card_name_map.set(name, plusCard[i].CardName); + list.push(plusCard[i]); + } + + var ob = { + "card_list": list, + "name_map": card_name_map + }; + func(ob); + }) + }, + + + //--- 设置一下默认库存的数量 ---- + set_def_storage(ee) { + var that = this; + that.data.fir_def_store = ee; + that.setData({ + def_pick_store: ee, + sto_sele_name: ee.pickup_name, + sto_sele_id: ee.pickup_id, + sto_sele_distr: ee.distr_type + }) + }, + + //---------拿出门店分类和门店------------ + get_sto(e) { + var th = this; + this.waitfor2(15, 'is_get_local_ok', function () { + //if (!th.data.sele_g) return false; + var dd = null; + var g_distr_type = 0; + if (th.data.sele_g) g_distr_type = th.data.sele_g.distr_type; + if (g_distr_type != 0) { + dd = { + store_id: os.stoid, + distr_type: g_distr_type, + isstop: 0, + is_pos: 1, + pageSize: 2000 + } + } else { + dd = { + store_id: os.stoid, + isstop: 0, + is_pos: 1, + pageSize: 2000 + } + } + + //如果有距离的话 + if (th.data.lat != null) { + dd.lat = th.data.lat; + dd.lon = th.data.lon; + } + + //如果会员是有默认的门店话 + if (!th.data.def_pick_store && th.data.fir_def_store) { + th.setData({ + def_pick_store: th.data.fir_def_store + }); + } + + wx.showLoading({ + title: '加载中.' + }); + //----------获取门店---------------- + getApp().request.promiseGet("/api/weshop/pickup/list", { + data: dd, + }).then(res => { + var e = res; + if (e.data.code == 0 && e.data.data && e.data.data.pageData && e.data.data.pageData.length > 0) { + + var his_cate_num = 0; + for (let i in e.data.data.pageData) { + let item = e.data.data.pageData[i]; + if (item.category_id > 0) { + his_cate_num = 1; + break; + } + } + e.his_cate_num = his_cate_num; + + //如果有开启距离的功能,没有设置默认门店,要用最近的门店作为默认门店 + if (dd.lat && (!th.data.def_pick_store || JSON.stringify(th.data.def_pick_store) == '{}') && th.data.bconfig && th.data.bconfig.is_sort_storage) { + th.setData({ + def_pick_store: e.data.data.pageData[0], + sto_sele_name: e.data.data.pageData[0].pickup_name, + sto_sele_id: e.data.data.pageData[0].pickup_id, + sto_sele_distr: e.data.data.pageData[0].distr_type + }); + th.data.fir_def_store = e.data.data.pageData[0]; + } + + //-- 如果有默认选择门店的时候,要把默认门店放在第一位,修改不要配送方式的判断 -- + if (th.data.def_pick_store && JSON.stringify(th.data.def_pick_store) != '{}') { + for (var k = 0; k < e.data.data.pageData.length; k++) { + if (e.data.data.pageData[k].pickup_id == th.data.def_pick_store.pickup_id) { + e.data.data.pageData.splice(k, 1); //删除 + break; + } + } + e.data.data.pageData.splice(0, 0, th.data.def_pick_store); //添加 + } + + th.setData({ + all_pick_list: e.data.data.pageData + }); + th.deal_pickup(e); + } + }) + }) + }, + //------------处理门店--------------- + deal_pickup(e) { + var th = this; + wx.hideLoading(); + //单总量超出5个的时候 + if (e.data.data.total > 10 && e.his_cate_num) { + getApp().request.get("/api/weshop/storagecategory/page", { + data: { + store_id: os.stoid, + pageSize: 1000, + orderField: "sort", + orderType: 'asc', + }, + success: function (ee) { + if (ee.data.code == 0) { + + var check_all_cate = 0; + if (ee.data.data && ee.data.data.pageData && ee.data.data.pageData.length > 0) { + for (let i in ee.data.data.pageData) { + let item = ee.data.data.pageData[i]; + if (item.is_show == 1) { + check_all_cate = 1; + break + } + } + } + + if (check_all_cate) { + + var sto_cate = ee.data.data.pageData; + var sto_arr = e.data.data.pageData; + var newarr = new Array(); + var qita = new Array(); + + var is_del_pk = 0; + //----要进行门店分组-------- + for (var i = 0; i < sto_arr.length; i++) { + //找一下这个门店有没有在分类数组内 + var find2 = 0, + find2name = "", + sort = 0; + is_del_pk = 0; + for (var m = 0; m < sto_cate.length; m++) { + if (sto_arr[i].category_id == sto_cate[m].cat_id) { + if (sto_cate[m].is_show != 1) { + is_del_pk = 1; + sto_arr.splice(i, 1); + i--; + } else { + find2 = sto_cate[m].cat_id; + find2name = sto_cate[m].cat_name; + sort = sto_cate[m].sort; + is_del_pk = 0; + } + break; + } + } + if (is_del_pk) continue; + + if (newarr.length > 0) { + var find = 0; + //如果有找到,那门店就在这个分组内,否则,分类就要排在其他 + if (find2 != 0) { + for (var ii = 0; ii < newarr.length; ii++) { + if (sto_arr[i].category_id == newarr[ii].cat_id) { + newarr[ii].s_arr.push(sto_arr[i]); + find = 1; + break; + } + } + if (find == 0) { + var arr0 = new Array(); + arr0.push(sto_arr[i]); + var item = { + cat_id: find2, + name: find2name, + sort: sort, + s_arr: arr0 + }; + newarr.push(item); + } + } else { + qita.push(sto_arr[i]); + } + } else { + //如果有找到,那门店就在这个分组内,否则,分类就要排在其他 + if (find2 != 0) { + var arr0 = new Array(); + arr0.push(sto_arr[i]); + var item = { + cat_id: find2, + name: find2name, + sort: sort, + s_arr: arr0 + }; + newarr.push(item); + } else { + qita.push(sto_arr[i]); + } + } + } + + var def_arr = new Array(); + //-- 开始就看10个门店 -- + for (var k = 0; k < 10; k++) { + if (k == sto_arr.length) break; + def_arr.push(sto_arr[k]); + } + + th.setData({ + def_pickpu_list: def_arr, + pickpu_list: ee.data.data.pageData + }); + + //门店分类要排序下 + function compare(property) { + return function (a, b) { + var value1 = a[property]; + var value2 = b[property]; + return value1 - value2; + } + } + + if (newarr.length > 0) + newarr.sort(compare("sort")); + //----安排其他的分类----- + if (qita.length > 0) { + var item = { + cat_id: -1, + name: "其他", + s_arr: qita + }; + newarr.push(item); + } + + + var sd = { + all_sto: newarr, + is_show_sto_cat: 1 + } + if (!sto_arr || sto_arr.length <= 10) { + sd.is_show_sto_cat = -1; + sd.only_pk = sto_arr; + } + th.setData(sd); + + } else { + th.setData({ + is_show_sto_cat: -1, + only_pk: e.data.data.pageData + }); + //-----如果没有默认门店,要取第一个门店作为默认店.此时没有门店分类的情况------ + if (!th.data.def_pick_store) { + th.setData({ + def_pick_store: e.data.data.pageData[0] + }) + } + } + } else { + th.setData({ + is_show_sto_cat: -1, + only_pk: e.data.data.pageData + }); + //-----如果没有默认门店,要取第一个门店作为默认店.此时没有门店分类的情况------ + if (!th.data.def_pick_store) { + th.setData({ + def_pick_store: e.data.data.pageData[0] + }) + } + } + } + }); + } else { + th.setData({ + is_show_sto_cat: 0, + only_pk: e.data.data.pageData + }); + //-----如果没有默认门店,要取第一个门店作为默认店------ + if (!th.data.def_pick_store && th.data.bconfig && th.data.bconfig.is_sort_storage) { + if (e.data.data && e.data.data.pageData && e.data.data.pageData.length > 0) { + th.setData({ + def_pick_store: e.data.data.pageData[0], + sto_sele_name: e.data.data.pageData[0].pickup_name, + sto_sele_id: e.data.data.pageData[0].pickup_id, + sto_sele_distr: e.data.data.pageData[0].distr_type + }) + } + } + } + }, + + //---选择分类门店--- + choice_sort_store: function (e) { + var index = e.currentTarget.dataset.index; + var region_name = e.currentTarget.dataset.region; + var item = this.data.all_sto[index]; + this.setData({ + region_name: region_name, + sort_store: 0, + choice_sort_store: 1, + sec_sto: item, + sec_pick_index: 0 + }); + }, + + choose_for_store_fir: function (e) { + var index_c = e.currentTarget.dataset.ind; + var th = this; + th.setData({ + fir_pick_index: index_c + }) + }, + + //确定def_pick为选择的门店 + sure_pick: function (e) { + var th = this; + var item = null; + var openindstore = th.data.open_ind_store; + + if (th.data.choice_sort_store == 0) { + var index = th.data.fir_pick_index; + if (th.data.is_show_sto_cat == 1) { + item = th.data.def_pickpu_list[index]; + } else { + item = th.data.only_pk[index]; //当没有门店分类的时候 + } + } else { + var index = th.data.sec_pick_index; + item = th.data.sec_sto.s_arr[index]; + } + + //判断门店的配送方式是不是匹配 + var g_distr_type = 0; + if (th.data.sele_g) + g_distr_type = th.data.sele_g.distr_type; + if (item.distr_type != 0 && g_distr_type != 0 && item.distr_type != g_distr_type) { + wx.showToast({ + title: "门店配送方式不匹配", + icon: 'none', + duration: 2000 + }); + return false; + } + + th.setData({ + def_pick_store: item, + sto_sele_name: item.pickup_name, + sto_sele_id: item.pickup_id, + sto_sele_distr: item.distr_type, + store: 0, + choice_sort_store: 0, + fir_pick_index: 0, + sort_store: 0 + }); + + //只是单纯的选择门店 + if (this.data.only) { + this.data.only = 0; + return false; + } + th.check_is_in_cart(function () { + th.add_cart_func(); + }) + }, + + + //---点击二级之后的选择--- + choose_for_store: function (e) { + var index_c = e.currentTarget.dataset.ind; + var th = this; + th.setData({ + sec_pick_index: index_c, + fir_pick_index: index_c + }) + + }, + //把选择的门店设置成默认的门店def_pick + set_def_pick: function (e) { + var th = this; + var item = null; + if (th.data.choice_sort_store == 0) { + var index = th.data.fir_pick_index; + if (th.data.is_show_sto_cat == 1) { + item = th.data.def_pickpu_list[index]; + } else { + item = th.data.only_pk[index]; //当没有门店分类的时候 + } + } else { + var index = th.data.sec_pick_index; + item = th.data.sec_sto.s_arr[index]; + } + + //判断门店的配送方式是不是匹配 + var g_distr_type = th.data.sele_g.distr_type; + if (item.distr_type != 0 && g_distr_type != 0 && item.distr_type != g_distr_type) { + wx.showToast({ + title: "门店配送方式不匹配", + icon: 'none', + duration: 2000 + }); + return false; + } + + //先设置之前,要判断是不是有库存 + var user_id = getApp().globalData.user_id; + var def_pickup_id = item.pickup_id; + + getApp().request.put('/api/weshop/users/update', { + data: { + user_id: user_id, + def_pickup_id: def_pickup_id + }, + success: function (res) { + if (res.data.code == 0) { + if (th.data.choice_sort_store == 0) th.setData({ + fir_pick_index: 0 + }); + getApp().globalData.pk_store = item; + } else { + //s.showWarning("设置默认门店地址失败", null, 500, !1); + getApp().my_warnning("设置默认门店地址失败", 0, th) + } + + } + }); + + th.setData({ + def_pick_store: item, + sto_sele_name: item.pickup_name, + sto_sele_id: item.pickup_id, + sto_sele_distr: item.distr_type, + store: 0, + choice_sort_store: 0, + sort_store: 0, //关闭门店2级 + }); + + th.add_cart_func(); + }, + + // 返回按钮 + returns: function () { + this.setData({ + sort_store: 0, + choice_sort_store: 0 + }); + }, + //选择更多门店 + more_store: function () { + this.setData({ + sort_store: 1 + }); + }, + //关闭选择门店 + close_popup: function (e) { + var th = this; + this.setData({ + store: 0, + choice_sort_store: 0, + sort_store: 0, + fir_pick_index: 0, + sec_pick_index: 0 + }) + }, + + //-------------获取购买数量的总函数---------------- + get_buy_num: function (gd, func) { + var map = this.data.g_buy_num, + th = this, + user_id = getApp().globalData.user_id; + + if (user_id == null) { + getApp().goto("/pages/togoin/togoin"); + return false; + } + if (map && map.has(gd.goods_id)) { + "function" == typeof func && func(); + } else { + var res1 = null; + //----获取商品购买数---- + getApp().request.promiseGet("/api/weshop/ordergoods/getUserBuyGoodsNum", { + data: { + store_id: os.stoid, + user_id: user_id, + goods_id: gd.goods_id, + prom_type: 7, + prom_id: th.data.act.id + }, + }).then(res2 => { + var g_buy_num = 0; + var promgoodsbuynum = 0; + if (res2.data.code == 0) { + var buy_num_data = res2.data.data; + if (buy_num_data.promgoodsbuynum) promgoodsbuynum = buy_num_data.promgoodsbuynum; + g_buy_num = buy_num_data.goodsbuynum; + } + + if (!map) map = new Map(); + var ob = { + gd_buynum: g_buy_num, + prom_buybum: promgoodsbuynum, + } + map.set(gd.goods_id, ob); + th.setData({ + g_buy_num: map + }); + "function" == typeof func && func(); + }) + } + }, + + //-- 当是减数量的调用 -- + sub_updata_cart() { + var th = this; + var index = this.data.sele_index; + var txt = "list[" + index + "].haveAdded"; + var txt1 = "list[" + index + "].num"; + var txt2 = "list[" + index + "].showNum"; + + var cur_price = this.data.sele_g.shop_price; + if (th.data.card_field && this.data.sele_g[th.data.card_field]) { + cur_price = this.data.sele_g[th.data.card_field]; + } + var updata = { + id: th.data.sele_g.cart_id, + goods_num: th.data.goodsInputNum, + goods_price: cur_price, + store_id: os.stoid, + }; + + if (th.data.s_cart_num) { + updata.goods_num = th.data.s_cart_num; + } + + //---是不是从收藏夹出来的--- + if (th.data.c_guide_id) { + updata['guide_id'] = th.data.c_guide_id; + updata['guide_type'] = 3; //加入购物车之后就变成了3 + } else { + if (getApp().globalData.guide_id) { + updata['guide_id'] = getApp().globalData.guide_id; + updata['guide_type'] = 0; + } + } + //调用接口,更新购物车 + getApp().request.put("/api/weshop/cart/update", { + data: updata, + success: function (t) { + th.setData({ + [txt1]: th.data.goodsInputNum, + [txt2]: true, + [txt]: true, + }); + th.data.adding = 0; + th.data.sele_store = 1; + if (th.data.s_cart_num) { + var txt_temp = "list[" + index + "].cart_num"; + th.setData({ + [txt_temp]: th.data.s_cart_num + }) + } + + th.re_sum_price(); //重新统计数量和总金额 + } + }); + }, + //一 开始的选择门店 -- + choose_store: function (e) { + var userInfo = getApp().globalData.userInfo; + if (!userInfo) { + getApp().goto("/pages/togoin/togoin"); + return false; + } + this.data.only = 1; + this.setData({ + store: 1 + }) + + + this.get_sto() + }, + + // -- 加入之前,先判断有没有在购物车中,没有商品就添加 -- + check_is_in_cart: function (func) { + var th = this; + var index = th.data.sele_index; + var txt = "list[" + index + "].haveAdded"; + var txt1 = "list[" + index + "].num"; + var txt2 = "list[" + index + "].showNum"; + var txt3 = "list[" + index + "].cart_id"; + var txt4 = "list[" + index + "].current_price"; + var txt5 = "list[" + index + "].cart_num"; + + //----先看会员在购物车中是否加入了该商品----- + getApp().request.get("/api/weshop/cart/page", { + data: { + store_id: os.stoid, + user_id: oo.user_id, + goods_id: th.data.sele_g.goods_id, + pick_id: th.data.sto_sele_id, + }, + success: function (re) { + if (re.data.data.total > 0) { + var item = re.data.data.pageData[0]; + th.get_buy_num(th.data.sele_g, function () { + //当前的价格要更新进去 + var cur_price = th.data.sele_g.shop_price; + if (th.data.card_field && th.data.sele_g[th.data.card_field]) { + cur_price = th.data.sele_g[th.data.card_field]; + } + + var prom_buybum = 0; + var gd_buynum = 0; + //加入也要控制一下限购 + var check_obj = th.data.g_buy_num.get(th.data.sele_g.goods_id); + if (check_obj.gd_buynum && check_obj.gd_buynum > 0) gd_buynum = check_obj.gd_buynum; + if (check_obj.prom_buybum && check_obj.prom_buybum > 0) prom_buybum = check_obj.prom_buybum; + + if (check_obj) { + if (check_obj.prom_buybum && check_obj.prom_buybum >= th.data.sele_g.buyqty && + th.data.sele_g.buyqty > 0 + ) { + wx.showToast({ + title: "您的已购数量超出活动的限购", + icon: 'none', + duration: 2000 + }); + return false; + } + if (check_obj.gd_buynum && check_obj.gd_buynum >= th.data.sele_g.viplimited && + th.data.sele_g.viplimited > 0 + ) { + wx.showToast({ + title: "您的已购数量超出商品的限购", + icon: 'none', + duration: 2000 + }); + return false; + } + } + + item.cbuy = 'no'; + var cbuy = th.data.sele_g.viplimited > 0 ? th.data.sele_g.viplimited - gd_buynum : 'no'; + if (cbuy != 'no') item.cbuy = cbuy; + var cbuy2 = th.data.sele_g.buyqty > 0 ? th.data.sele_g.buyqty - prom_buybum : 'no'; + if (cbuy2 != 'no') { + if (item.cbuy == 'no' || item.cbuy > cbuy2) item.cbuy = cbuy2; + } + + var num = item.goods_num; + if (item.cbuy > -1 && item.cbuy < item.goods_num) { + num = item.cbuy; + } + th.setData({ + [txt1]: num, + [txt2]: true, + [txt]: true, + [txt3]: item.id, + [txt4]: cur_price, + [txt5]: item.goods_num, + }); + + var updata = { + id: item.id, + prom_type: 7, + goods_price: cur_price, + prom_id: th.data.act.id, + store_id: os.stoid, + }; + if (getApp().globalData.guide_id) { + updata['guide_id'] = getApp().globalData.guide_id; + updata['guide_type'] = 0; + } + + getApp().request.put("/api/weshop/cart/update", { + data: updata, + success: function (t) {} + }); + th.re_sum_price(); + }) + + } else { + func(); + } + } + }) + }, + + //-- 计算统计之后的金额 -- + re_sum_price: function () { + var all_num = 0; //商品数量之和 + var all_price = 0; + var need_to_buy = 0; + var data = this.data.list; + var all_zhqty = 0; //所有商品要求起购数之后 + var zhqty_bz=[]; //超量 + var no_in_arr = []; + for (var i in data) { + var item = data[i]; + if (item.num) { + all_num += item.num; + all_price += item.num * item.current_price; + //当有起购数的控制的时候 + if (item.zhqty) { + zhqty_bz.push(item); + all_zhqty += item.zhqty; + if (item.num < item.zhqty) { + need_to_buy += item.zhqty - item.num; + } + if (item.num > item.zhqty) { + for (var i = 0; i < item.num - item.zhqty; i++) { + no_in_arr.push({ + price: item.current_price, + goods_id: item.goods_id + }); + } + } + } else { + for (var j = 0; j < item.num; j++) { + no_in_arr.push({ + price: item.current_price, + goods_id: item.goods_id + }); + } + } + } else { + if (item.zhqty) need_to_buy += item.zhqty; + } + } + + //当满足组合的要求:总数要满足,起购数要满足 + if (all_num >= this.data.act.zhbuyqty && !need_to_buy) { + function sortData(a, b) { + return a.price - b.price + } + if (no_in_arr.length) no_in_arr.sort(sortData); + + var aprice = this.data.act.zhprice; + if (this.data.act.zhbuyqty > all_zhqty) { + for (var n = 0; n < this.data.act.zhbuyqty - all_zhqty; n++) { + no_in_arr.pop(); + } + } + + //看一下剩下的数量有没有满足组合购的要求,以及要不要倍增 + if (this.data.act.is_bz && no_in_arr.length >= this.data.act.zhbuyqty) { + let zhqty_map=new map(); + //看一下是几倍 + var be = parseInt(no_in_arr.length / this.data.act.zhbuyqty); + if(this.data.act.is_bzyh && zhqty_bz.length > 0 ){ + for(let i=0;i 0) { + item_j.current_price = card_price; + } + } + + + if (map[item_j.goods_id]) { + var cart_num = map[item_j.goods_id].goods_num; + item_j.num = cart_num; + item_j.cart_num = cart_num; + item_j.cart_id = map[item_j.goods_id].id; + if (item_j.buyqty > 0) { + var g_buy_num = 0; + var promgoodsbuynum = 0; + //----获取商品购买数---- + await getApp().request.promiseGet("/api/weshop/ordergoods/getUserBuyGoodsNum", { + data: { + store_id: os.stoid, + user_id: user_id, + goods_id: item_j.goods_id, + prom_type: 7, + prom_id: th.data.act.id + }, + }).then(res2 => { + if (res2.data.code == 0) { + var buy_num_data = res2.data.data; + if (buy_num_data.promgoodsbuynum) promgoodsbuynum = buy_num_data.promgoodsbuynum; + g_buy_num = buy_num_data.goodsbuynum; + } + }) + + if (item_j.viplimited > 0) { + var cby = item_j.viplimited - g_buy_num; + if (cby <= 0) continue; //不能买就continue下一个 + item_j.num = cby > item_j.num ? item_j.num : cby; + } + if (item_j.buyqty > 0) { + var cby = item_j.buyqty - promgoodsbuynum; + if (cby <= 0) continue; //不能买就continue下一个 + item_j.num = cby > item_j.num ? item_j.num : cby; + } + } + + item_j.haveAdded = 1; + item_j.showNum = true; + } + } + th.setData({ + list: th.data.list + }); + th.re_sum_price(); + } + } + }); + }, + + //滚动加载跟多的时候的计算 + async calc_more(list, func) { + var th = this; + var map = {}; + var mlist = this.data.cart_list; + for (let i in mlist) { + let item = mlist[i]; + if (item.prom_type != 7) continue; + if (item.prom_id != th.data.act.id) continue; + map[item.goods_id] = item; + } + + for (let j in list) { + let item_j = list[j]; + item_j.current_price = item_j.shop_price; + + var card_price = 0; + //如果会员有等级价 + if (th.data.card_field) { + card_price = item_j[th.data.card_field]; + if (card_price > 0) { + item_j.current_price = card_price; + } + } + + + if (map[item_j.goods_id]) { + var cart_num = map[item_j.goods_id].goods_num; + item_j.num = cart_num; + item_j.cart_num = cart_num; + item_j.cart_id = map[item_j.goods_id].id; + if (item_j.buyqty > 0) { + var g_buy_num = 0; + var promgoodsbuynum = 0; + //----获取商品购买数---- + await getApp().request.promiseGet("/api/weshop/ordergoods/getUserBuyGoodsNum", { + data: { + store_id: os.stoid, + user_id: oo.user_id, + goods_id: item_j.goods_id, + prom_type: 7, + prom_id: th.data.act.id + }, + }).then(res2 => { + if (res2.data.code == 0) { + var buy_num_data = res2.data.data; + if (buy_num_data.promgoodsbuynum) promgoodsbuynum = buy_num_data.promgoodsbuynum; + g_buy_num = buy_num_data.goodsbuynum; + } + }) + + if (item_j.viplimited > 0) { + var cby = item_j.viplimited - g_buy_num; + if (cby <= 0) continue; //不能买就continue下一个 + item_j.num = cby > item_j.num ? item_j.num : cby; + } + if (item_j.buyqty > 0) { + var cby = item_j.buyqty - promgoodsbuynum; + if (cby <= 0) continue; //不能买就continue下一个 + item_j.num = cby > item_j.num ? item_j.num : cby; + } + } + + item_j.haveAdded = 1; + item_j.showNum = true; + } + } + if (func) func(list) + + } + +}) \ No newline at end of file diff --git a/packageB/pages/zuhegou/preindex/index.json b/packageB/pages/zuhegou/preindex/index.json new file mode 100644 index 0000000..d341c05 --- /dev/null +++ b/packageB/pages/zuhegou/preindex/index.json @@ -0,0 +1,10 @@ +{ + "usingComponents": { + "catch": "/packageB//components/catch/catch", + "nodata": "/components/nodata/nodata", + "painter": "/packageB/components/painter/painter", + "warn": "/components/long_warn/long_warn" + }, + "enablePullDownRefresh": false, + "navigationBarTitleText": "组合购" +} \ No newline at end of file diff --git a/packageB/pages/zuhegou/preindex/index.wxml b/packageB/pages/zuhegou/preindex/index.wxml new file mode 100644 index 0000000..dc70551 --- /dev/null +++ b/packageB/pages/zuhegou/preindex/index.wxml @@ -0,0 +1,317 @@ + + + + 以下商品{{act.zhprice}}元任选{{act.zhbuyqty}}件 + 规则详情 + + + + 距结束还剩 + {{djs.day}}天 + {{djs.hou}} + : + {{djs.min}} + : + {{djs.sec}} + + + + 门店: + + {{def_pick_store.pickup_name}} + {{def_pick_store.pickup_name}} + + + 请选择门店 + + + + + + + + + + + + + {{item.goods_name}} + 此商品还需购买{{item.zhqty-(item.num?item.num:0)}}件 + + - + {{item.num}} + + + + + + + + + + {{filters.toFix(item[card_field],2)}} + + + {{filters.toFix(item.shop_price,2)}} + + {{filters.toFix(item.market_price,2)}} + + + + + + + + + + + 没有更多了 + + + + + + + + + 再买{{need_to_buy}}件,下单立享【{{act.zhprice}}元任选{{act.zhbuyqty}}件】 + + 下单立享【{{act.zhprice}}元任选{{act.zhbuyqty}}件】 + + + + 再买{{act.zhbuyqty-all_num>need_to_buy?act.zhbuyqty-all_num:need_to_buy}}件,下单立享【{{act.zhprice}}元任选{{act.zhbuyqty}}件】 + + + 买{{act.zhbuyqty}}件,下单立享【{{act.zhprice}}元任选{{act.zhbuyqty}}件】 + + + + 合计: + {{filters.toFix(all_price,2)}} + + + 去购物车 + + + + + + + + + {{!type ? '规则详情':'提示'}} + + + + + 活动时间 + {{filters.format_time(act.start_time,1)}} 至 {{filters.format_time(act.end_time,1)}} + + + + 活动内容 + + {{act.remark}} + + + + + + + + 合计金额及提示仅为初步预估,请以最终下单金额为准。 + + + + + 我知道了 + + + + + + + + + + + + + + 长按图片保存至相册 + + + + + + + +{{error}} + + + + + + + + + {{choice_sort_store==0?'附近的门店':region_name}} + + + + + + {{choice_sort_store==0?'更多门店':'返回'}} + + + + + + + + + + + + + + + Г + + + + + + + + {{item.pickup_name}} + (不匹配) + + + + + 距离:{{item.distance>1000?filters.toFix(item.distance/1000,2)+'km':filters.toFix(item.distance,0)+"m"}} + + + + 地址:{{item.fulladdress}} + + + + + + + + + + Г + + + + + + + + + {{item.pickup_name}} + (不匹配) + + + + + 距离:{{item.distance>1000?filters.toFix(item.distance/1000,2)+"km":filters.toFix(item.distance,0)+"m"}} + + + + 地址:{{item.fulladdress}} + + + + + + + + + + + Г + + + + + + + + + {{item.pickup_name}} + + + + 距离:{{item.distance>1000?filters.toFix(item.distance/1000,2)+"km":filters.toFix(item.distance,0)+"m"}} + + + + 地址:{{item.fulladdress}} + + + + + + + + + + + 确定 + + 设为默认 + + + + + + + + + + 门店分类选择 + + + + + + 返回 + + + + + + + + {{item.name}} + + + + + + + + + + + + + diff --git a/packageB/pages/zuhegou/preindex/index.wxss b/packageB/pages/zuhegou/preindex/index.wxss new file mode 100644 index 0000000..f9e3077 --- /dev/null +++ b/packageB/pages/zuhegou/preindex/index.wxss @@ -0,0 +1,357 @@ +/* packageB//pages/zuhegou/index/index.wxss */ +page { + background: #f5f5f5 linear-gradient(to bottom, #FB5A2F, #FA7958, #f5f5f5 26%) no-repeat; +} +.container { + padding: 20rpx; +} +.countdown-container { + font-size: 26rpx; + padding-top: 10rpx; + color: white; +} + +.num-box { + display: inline-block; + background-color: rgba(255,255,255,.2); + box-sizing: border-box; + min-width: 40rpx; + padding: 4rpx; + margin: 0 8rpx; + border-radius: 6rpx; + text-align: center; +} + +.rule-container { + font-size: 24rpx; + background-color: rgba(255,255,255,.2); + padding: 10rpx 5rpx 10rpx 20rpx; + border-radius: 26rpx 0 0 26rpx; + margin-right: -20rpx; + color: white; +} + +.icon-arrow_right { + font-size: 24rpx; +} + +.list-container { + padding-top: 30rpx; +} + +.list { + border-radius: 10rpx; + background-color: white; + max-height:calc(100vh - 360rpx); +} + +.list-item { + padding: 20rpx; + display: flex; +} + +.img-container { + width: 200rpx; + height: 200rpx; + background-color: #f0f0f0; + border-radius: 8rpx; +} + +.num-container { + font-size: 28rpx; + padding-top: 10rpx; + text-align: right; +} + +.num-container .num-box { + background-color: #f3f3f3; +} + + + +.noMore { + padding: 20rpx; + color: #bbb; + text-align: center; + font-size: 26rpx; +} + +.rmb::before { + content: '¥'; + font-size: 22rpx; +} + +.bar-container { + position: fixed; + left: 0; + bottom: 0; + width: 100%; + background-color: white; +} + +.bg-fcfb { + background-color: #FCFBE5; +} + +.c-fa8b2b { + color: #FA8B2B; +} + +.c-8 { + color: #888; +} + +.c-dedfe3 { + color: #DEDFE3; +} + +.btn-container { + padding: 16rpx 40rpx; + background-color: red; + color: white; + font-size: 30rpx; + border-radius: 36rpx; + background: -webkit-linear-gradient(left,#ff5000,#ff2000) no-repeat; +} + +.share-container { + position: fixed; + right: 20rpx; + bottom: 125rpx; + width: 100rpx; + height: 100rpx; + border-radius: 50%; + background-color: white; + display: flex; + flex-direction: column; + justify-content: center; + align-items: center; + box-shadow: 0 0 16rpx #CCC; +} + +.mask { + position: fixed; + top: 0; + bottom: 0; + left: 0; + right: 0; + background-color: rgba(0,0,0,.6); +} + +.rule-pop-container { + position: fixed; + left: 0; + bottom: 0; + width: 100%; + background-color: white; + z-index: 1; + border-radius: 16rpx 16rpx 0 0; + padding: 0 40rpx; + box-sizing: border-box; + font-size: 28rpx; + color: #444; +} + +.pop-title { + padding: 20rpx 0; + text-align: center; + font-size: 32rpx; + position: relative; +} +.icon-guan { + position: absolute; + right: 0; + font-size: 26rpx; + top: 50%; + transform: translateY(-50%); + color: #ccc; +} + +.btn { + color: white; + padding: 20rpx 0; + text-align: center; + border-radius: 40rpx; + background: -webkit-linear-gradient(left,#ff5000,#ff2000) no-repeat; +} + +.active { + color: #ccc; +} + +.poster-container { + text-align: center; + color: white; + position: fixed; + top: 50%; + left: 50%; + transform: translate(-50%, -50%); +} + +.poster { + width: 650rpx; + height: 843rpx; + border-radius: 16rpx; + margin: 0 auto; +} + +.white2 { + color: rgba(255,255,255,.8); +} + + + +/* 选择门店的弹窗 */ +.mongolia-layer{ + position: fixed; + left: 0; + top: 0; + right: 0; + bottom: 0; + z-index: 11; + background: rgba(0,0,0,0.4); + width: 100%; + height: 91.9%; + +} + +.popup-frame{ + position: fixed; + z-index: 20; + background: white; + width: 100%; + border-radius: 20rpx 20rpx 0 0; + height: auto; + bottom: 0; +} +.popup-top{ + border-bottom: 1rpx solid #eee; + height: 155rpx; + width: 95%; + margin: auto; + line-height: 155rpx; + +} +.bg_rights{ + border-top: 2rpx solid ; + border-right: 2rpx solid ; + transform: rotate(45deg); + display:inline-block; + width:15rpx;height:15rpx; + border-color:#da0b31; + position: relative; + top:5rpx +} +.modal-closes { + position: absolute; + right: 30rpx; + top: -15rpx; + height: 25rpx; + +} +.choose_more{ + margin-top: 100rpx; + margin-right: 20rpx; + +} +.choose_mores{ + margin-top: 30rpx; + margin-right: 15rpx; + +} +.store-list{ + width: 95%; + min-height: 300rpx; + overflow-y: scroll; + margin: auto; + max-height: 610rpx; +} +.store-list .store_choose{ + width: 100%; + height: 120rpx; + line-height: 125rpx; + border-bottom: 1rpx solid #eee; + +} +.store-list .store_choose .store{ + width: 100%; + margin: auto; + line-height: 37rpx; + padding-left: 20rpx; + +} +.xc-hook{ + width: 35rpx; + height: 35rpx; + transform: rotate(-145deg); + line-height: 37rpx; + text-align: center; +} +.xc-hooks{ + width: 30rpx; + height: 30rpx; + border: 1rpx solid #999; +} +.address-frame{ + width: 93%; + margin-left: 7rpx; + +} +.nearby_store{ + margin-left: 17rpx; +} +.address_name{ + margin-right: 10rpx; + +} +.address-val{ + height: 38rpx; + line-height: 38rpx; + +} +.store-bottom{ + width: 85%; + margin: auto; + height: 90rpx; +} +.determine{ + width: 260rpx; + height: 55rpx; + border-radius: 50rpx; + line-height: 55rpx; +} +.default{ + width: 260rpx; + height: 55rpx; + border:3rpx solid #c8c8c8; + border-radius: 50rpx; + line-height: 55rpx; +} +.store-bottom-frame{ + width: 95%; + margin: auto; + +} +/* 门店分类列表 */ +.sort_store_list{ + height: 82%; + overflow: hidden; + overflow-y: scroll; + width: 95%; + margin: auto; +} +.sort_store_list .sort-store-frame{ + width: 100%; + height: 100rpx; + line-height:100rpx; + border-bottom: 1rpx solid #eee; + +} +.sort_store_list .sort-store-frame .sort-store{ + width: 94.5%; + margin: auto; +} + +.c_w{ color: #fff;} +.mt10{ margin-top: 10rpx;} +.mt20{ margin-top: 20rpx;} \ No newline at end of file diff --git a/packageC/pages/presell/list/list.wxml b/packageC/pages/presell/list/list.wxml index 7cfe9ff..fa63ea4 100644 --- a/packageC/pages/presell/list/list.wxml +++ b/packageC/pages/presell/list/list.wxml @@ -27,13 +27,13 @@ - + {{item.goods_name}} + url="/packageC/pages/presell/pregoodsInfo/goodsInfo?goods_id={{item.goods_id}}&pre_id={{item.id}}">{{item.goods_name}}