var t = require("../../../utils/util.js"), ut = t, e = require("../../../utils/common.js"), a = require("../../../utils/wxParse/wxParse.js"), s = getApp(), i = s.request, rq = i, oo = s.globalData, o = s.globalData.setting, os = o; let self = null; //评价加载更多 var more = function(e) { return e && e.__esModule ? e : { default: e }; }(require("../../../utils/LoadMore.js")), n = new more.default(); var utils = require('../../../utils/util.js'); var regeneratorRuntime = require('../../../utils/runtime.js'); Page({ data: { start_stop: 2, //秒杀开始 结束 的控制(1正在进行,2即将开始) color_type: 0, //线条控制 color_type_one: 0, color_type_two: 1, is_share_text: 1, gid: "", stoid: o.stoid, url: o.url, resourceUrl: o.h5_url, //公众号那边的图片文件域名 iurl: o.imghost, defaultAvatar: o.resourceUrl + "/static/images/user68.jpg", data: null, content: "", //商品详情 gallery: null, //图片滚动 is_collect: 0, collect_id: 0, cartGoodsNum: 0, specSelect: 0, optionItemId: 0, goodsInputNum: 1, openSpecModal: !1, activeCategoryId: 0, supportPageScroll: !1, address: { address: "", district: 0, }, shipping: "", shippingCost: 0, enterAddressPage: !1, categories: [{ name: "卡项", id: 0 }, { name: "详情", id: 1 },{ name: "评价", id: 2 }], activeCategoryId2: 0, categories2: [{ name: "商品详情", id: 0 }, { name: "规格参数", id: 1 }], activeCategoryId3: 1, // 点击评价-全部、有图、好评、中评时对应的id categories3: [{ name: "全部", id: 1, num: 0 }, { name: "有图", id: 5, num: 0 }, { name: "好评", id: 2, num: 0 }, { name: "中评", id: 3, num: 0 }, { name: "差评", id: 4, num: 0 }, ], select: { price: 0, stock: 0, specName: "", activity: null }, //门店相关 ismend: 0, is_sec_mend: 0, sto_sele_name: "", //选中的门店名称 sto_sele_id: "", //选中的门店id sto_sele_keyid:'', //选中的门店线下 sto_sele_distr: "", //选择的门店的配送方式 is_show_sto_cat: 1, //是否显示门店分类 only_pk: null, all_sto: null, sec_sto: null, //选择了的门店分类 pickpu_list: null, //读出的所有门店list def_pickpu_list: null, //一开始5个门店list sec_pick_index: 0, //第二级门店选择ID fir_pick_index: 0, //第一级门店选择ID all_pick_list:null,//所有的门店先记录起来 //联系电话 mobile: '', //商品的活动类型 0普通 1秒杀 2团购 3优惠 4 积分购 6拼单 timer: [], //商品的购买次数 prom_buy_num: -1, g_buy_num: null, //会员自己的购买的拼单商品的情况 //购买的订单 buy_order: null, //1加入购物车 2立即购买 openSpecModal_ind: 0, //---计时器开关---- is_timer: 1, isshow: 0, bconfig: null, //基础配置 //会员分享的头像 share_head: "", share_goods_img: "", //----------视频图片data参数--------- current: 0, //图片计数 swiperCurrent: 0, //轮播的下标 hiddenn: 0, //控制轮播计数显示 currentTab: 0, // 选择器控制参数 mapurl: "", mapurl_f_img: "", videopicture: 0, //视频图片的控制 video: 0, //视频图片切换器 index: 0, noon: 0, //开始视频的隐藏 screenWidth: 0, canvasHidden: 1, //--推荐-- store_config: null, is_show_pl: 0, //是否品类 is_show_pp: 0, //是否品牌 is_show_gb: 0, //是否国别 is_closecoupon: 0, select_store: 0, //选择更多 index: 1, more_store: 0, //选择门店 sort_store: 0, //门店分类 choice_sort_store: 0, //选择分类门店 new_user: 0, //新用户 def_pick_store: null, // 默认的门店 fir_def_store:null, //客户默认的门店的 lat: null, //维度 lon: null, //经度 is_get_local_ok: 0, //获取坐标是否完成 region_name: "门店分类", //区域的名字 is_gps: 1, open_ind_store: 0, //哪里打开的门店列表的控制属性 default_store: {}, //创建添加默认门店地址的对象 comments_no_more:0, is_collect_load:0, //是不是处理 is_newsales_rules:0, //是否开启最新的门店规则,此时会新读门店,当点击选择门店时会触发读取线下库存 sales_rules:1, //默认是线上销售 wait_for_user_store:null, poster:null, //自定义海报 share_b_img:'', //自定义分享的背景 showPoster: false, hui_condition:null, sto_sele_name_1:'',//分享的门店名称 // 秒杀 prom_st: null, prom_r_null: 0, hiddenCS: true, //控制客服操作菜单显示和控制 openSpecModal_flash_normal: 0, keyword:'', //门店搜索 sec_i:-1,//选中分类门店 下标 nav_frontColor: "#ffffff", nav_backgroundColor: "#ffffff", nav_type: 2, //导航类型 istop: 0, //是否置顶风格为1 searchbox_transparent: 1, }, //------初始化加载---------- onLoad:async function(t) { self = this; this.setData({ options: t, }); var ee = this, that = ee, th = ee, gid = t.goods_id, first_leader=t.first_leader, prom_type=t.prom_type, prom_id=t.prom_id, room_id = t.room_id, room_user_share = t.room_user_share; //如果是会员分享带有room_id的话,那么接下来会员分享就不传room_id var share_openid= t.share_openid; //检查测肤 getApp().check_skin_face(t,1,gid); //---获取手机地址坐标-- //--如果tg_id是空的话,分享回来-- if (gid == undefined || gid == null || gid == "") { var gid_str = decodeURIComponent(t.scene); gid_str=gid_str.split("_"); gid = parseInt(gid_str[0]); that.data.options.goods_id=gid; if(gid_str.length>1 && gid_str[1] && parseInt(gid_str[1])>0){ first_leader=gid_str[1]; } //-- 如果有room_id的获取 -- if(gid_str.length>2 && gid_str[2] && parseInt(gid_str[2])>0) { room_id=gid_str[2]; room_user_share=1; that.data.options.room_id=room_id; }; if(gid_str.length>3 && gid_str[3] && parseInt(gid_str[3])>0) { prom_type=gid_str[3]; prom_id=gid_str[4]; that.data.options.prom_type= parseInt(gid_str[3]); that.data.options.prom_id=parseInt(gid_str[4]); } this.setData({options: that.data.options}); }; //-- 设置顶部高度 -- let height= getApp().globalData.navBarHeight; ee.setData({ gid: gid,top_nav:height}); if(first_leader>0) { 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; getApp().globalData.guide_pick_id= res.data.data.pickup_id } }) } //-- 如果有房间号 -- if (room_id) { getApp().globalData.room_id = room_id; getApp().globalData.room_goods_id = gid; //如果是会员分享过来的要记录 if (room_user_share) getApp().globalData.room_user_share = room_user_share; if (share_openid) { this.get_room_share_guide(share_openid); } } var c_guide_id=t.c_guide_id; if(c_guide_id){ th.data.c_guide_id=c_guide_id; } getApp().getConfig(function(e) { ee.setData({sto_sele_name_1:e.store_name}) }) var is_chat=0; await getApp().request.promiseGet("/api/weshop/recharge/storageRechargeDetail/get/"+os.stoid, { }).then(res => { if(res && res.data.code==0 && res.data.data){ is_chat=1; } }) //----获取系统参数----- getApp().getConfig2(function (e) { ee.setData({ bconfig: e, sales_rules: e.sales_rules, }); if (e.categoryset.indexOf("," + 1 + ",") != -1) { ee.setData({ is_show_pl: 1 }); } if (e.categoryset.indexOf("," + 3 + ",") != -1) { ee.setData({ is_show_pp: 1 }); } if (e.categoryset.indexOf("," + 2 + ",") != -1) { ee.setData({ is_show_gb: 1 }); } // console.log(e); var json_d = JSON.parse(e.switch_list); //如果商家未开通在线客服的话 if(json_d && json_d.weapp_customertype==3 && !is_chat){ json_d.weapp_customertype=0 } ee.setData({ store_config: e, sys_switch: json_d, is_closecoupon: json_d.is_closecoupon, is_newsales_rules: json_d.is_newsales_rules }); ee.init(gid); //------几人评价------- //n.init(th, "", "comments"); wx.pageScrollTo && th.setData({ supportPageScroll: !0 }); }, 1); //获取用户设备信息,屏幕宽度 wx.getSystemInfo({ success: res => { that.setData({ screenWidth: res.screenWidth }) } }); //-- 自定义海报 -- getApp().request.promiseGet("/api/weshop/goods/poster/page", { data: { store_id: os.stoid, type: 1, is_use: 1 } }).then(res => { if (res.data.code == 0 && res.data.data && res.data.data.pageData && res.data.data.pageData[0]) { var poster_data = res.data.data.pageData[0]; var json_str = poster_data.jsonStr; if (json_str) { var json_data = JSON.parse(json_str); if (json_data.bg_img) { //-- 把图片那到本地 -- wx.getImageInfo({ src: json_data.bg_img, success: function (res) { var path = res.path; th.setData({ share_b_img: path }) }, fail: function (res) { } }); } th.setData({ poster: json_data }) } } }) }, //-- 获取直播的分享人的导购信息 -- async get_room_share_guide(share_openid) { var url = "/api/weshop/users/page"; var first_leader = 0; //调用接口判断是不是会员 await getApp().request.promiseGet(url, { data: { stoid: os.stoid, weapp_openid: share_openid } }).then(res => { if (ut.ajax_ok(res)) { first_leader = res.data.data.pageData[0].user_id; getApp().globalData.guide_id = res.data.data.id; } }) if (!first_leader) return false; getApp().globalData.first_leader = first_leader; //调用接口判断是不是会员 await 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; getApp().globalData.guide_pick_id= res.data.data.pickup_id } }) }, onReady() { // 用于控制保障服务折叠图标的显示 setTimeout(() => { wx.createSelectorQuery().selectAll(".showArea, .hideArea").boundingClientRect(res => { if(res.length != 0) { this.setData({ showFold: res[0].height < res[1].height, }); }; }).exec(); }, 1000); }, //------------程序初始化入口------------- async init(gid) { var ee = this, th = ee, gallery = null, is_collect = 0, collect_id = 0, categories3 = ee.data.categories3, fir_com = null, fir_quan = null, mapurl = null, mapurl_f_img = null; //------图片滚动---------- // await getApp().request.promiseGet("/api/weshop/goodsimages/page", { // data: { // store_id: os.stoid, // goods_id: gid, // }, // }).then(res => { // var t = res; // var g = t.data.data.pageData; // if (g.length == 0) { // var ie = { // "image_url": o.imghost + "/public/images/default_goods_image_240.gif" // }; // g.push(ie); // gallery = g; // return; // } // for (var i = 0; i < g.length; i++) { // if (g[i].image_url.indexOf(o.imghost) == -1) // g[i].image_url = o.imghost + g[i].image_url; // } // gallery = g; // }) // <---- 秒杀 //------是否收藏---------- await getApp().request.promiseGet("/api/weshop/goodscollect/page", { data: { store_id: os.stoid, goods_id: gid, user_id: oo.user_id, } }).then(res => { var t = res; var data = t.data.data.pageData; if (data && data.length > 0) { //ee.setData({ is_collect: 1, collect_id: data[0].collect_id, }); is_collect = 1; collect_id = data[0].collect_id; } }) //------获取评价的统计数量---- await getApp().request.promiseGet("/api/weshop/serviceComment/countlist/", { data: { store_id: os.stoid, service_id: gid }, }).then(res => { console.log('get评价统计数量', res.data.data); var t = res; var g = t.data.data[0]; if (g != null && g != undefined) { var allnum = g.c0 + g.c1 + g.c2 + g.c3 + g.c4 + g.c5; var num2 = g.c4 + g.c5; var num3 = g.c3; var num4 = g.c0 + g.c1 + g.c2; var dd = ee.data.categories3; dd[0].num = allnum; dd[1].num = g.cimg; dd[2].num = num2; dd[3].num = num3; dd[4].num = num4; categories3 = dd; } }); //----获取详情页的评价---- await getApp().request.promiseGet("/api/weshop/serviceComment/pageComment", { data: { store_id: os.stoid, service_id: gid, pageSize: 3, parent_id: 0, page: 1, is_show: 1, }, }).then(res => { console.log('get详情页评价', res.data.data); fir_com = res.data.data.pageData; }); if (fir_com) { for (var ind in fir_com) { if (fir_com[ind].head_pic == "") fir_com[ind].head_pic = ee.data.iurl + "/miniapp/images/hui_hear_pic.png"; if (fir_com[ind].img) fir_com[ind].img = ut.unserialize(fir_com[ind].img); if (fir_com[ind].weapp_img) fir_com[ind].weapp_img = JSON.parse(fir_com[ind].weapp_img); } }; // if (th.data.is_closecoupon != 1 && (!th.data.fir_quan || th.data.fir_quan.length<=0)) { // //----获取详情页的券的数量---- // await getApp().request.promiseGet("/api/weshop/prom/coupon/pageCouponList", { // data: { // store_id: os.stoid, // type: 1, // pageSize: 3, // page: 1, // is_share: 0, // }, // }).then(res1 => { // fir_quan = res1.data.data.pageData; // }) // } //this.getHistoryBuy(); //获取历史购买 ee.setData({ is_collect: is_collect, collect_id: collect_id, categories3: categories3, fir_quan: fir_quan, fir_comments: fir_com, // cardComments: fir_com, }); }, //检测有没有导购分享的门店 check_guide(func){ var first_leader=getApp().globalData.first_leader; if(!first_leader){ func(); return false; } if(this.data.is_geted_guide_pick){ func(); return false; } if(getApp().globalData.guide_pick_id){ func(); return false; } var th=this; getApp().request.promiseGet("/api/weshop/shoppingGuide/get/" + os.stoid + "/" + first_leader, {}).then(res => { if (res.data.code == 0) { getApp().globalData.guide_pick_id= res.data.data.pickup_id; } th.data.is_geted_guide_pick=1; func(); }) }, //---展示--- // gid 在onload阶段已经保存在this.data中 onShow: function() { getApp().check_can_share(this); //-- 看一下隐私政策要不要显示 -- var privacy_pop = this.selectComponent("#privacy_pop"); //组件的id if (privacy_pop) { privacy_pop.check_pri_show(); } var that=this;var th=this; var ee = this,gid = this.data.gid, i = getApp().request; //判断是不是要跳转到拼团服务卡 getApp().check_go_fw(gid,function (act,url){ if(act){ wx.redirectTo({ url:url }) return false; } th.data.is_timer = 1; //获取用户的默认门店 th.check_guide(()=>{ getApp().get_user_store(function(e) { if(!e) { th.data.fir_def_store={}; //赋值空对象 return false; } if(getApp().globalData.is_dj_pk) th.setData({has_def:1}) var ee=JSON.parse(JSON.stringify(e)); console.log(e); //--定时器推迟一下-- var appd=getApp().globalData; var w_time = setInterval(function() { if (that.data.is_get_local_ok == 0) return false; if(!th.data.data){ return false; } var ser_card=th.data.data; //--如果默认门店不在等级卡的默认们店以内 if(ser_card.storageId!=null && ser_card.storageId!="" && ser_card.storageId.indexOf(ee.keyid)==-1){ ee.is_no_dis=1; } clearInterval(w_time); var distance = null; 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.data.fir_def_store=e; that.setData({ def_pick_store: e, sto_sele_name: e.pickup_name, sto_sele_id: e.pickup_id, sto_sele_distr: e.distr_type, sto_sele_keyid:e.keyid, }) }else{ //要用接口是获取距离,js的计算不准 getApp().request.promiseGet("/api/weshop/pickup/list",{ data:{store_id:os.stoid,pickup_id:e.pickup_id,lat:th.data.lat,lon: th.data.lon, is_pos: 1}, }).then(res=>{ if(ut.ajax_ok(res)){ e=res.data.data.pageData[0]; if (e){ e.is_no_dis=ee.is_no_dis; appd.pk_store=e; that.data.fir_def_store=e; console.log('get_user_store--2'); console.log(e); that.setData({ def_pick_store: e, sto_sele_name: e.pickup_name, sto_sele_id: e.pickup_id, sto_sele_distr: e.distr_type, sto_sele_keyid:e.keyid, }) } } }) } //e.distance = distance; appd.lat=that.data.lat; appd.lon=that.data.lon; } else { if (e) { console.log('get_user_store3---'); console.log(e); e.distance = null; that.data.fir_def_store=e; that.setData({ def_pick_store: e, sto_sele_name: e.pickup_name, sto_sele_id: e.pickup_id, sto_sele_distr: e.distr_type, sto_sele_keyid:e.keyid, }) } } }, 200) }); }) th.wait_for_store_config(); i.get("/api/weshop/serviceCard/get/" + o.stoid + "/" + ee.data.gid, { failRollback: !0, success: function(t) { if (t.data.code == 0) { // console.log('GET pic and video'); if(t.data.data.listServiceVideos && t.data.data.listServiceVideos[0] && t.data.data.listServiceVideos[0].video_url) { that.setData({ mapurl: t.data.data.listServiceVideos[0].video_url, }); }; if(t.data.data.listServiceVideos && t.data.data.listServiceVideos[0] && t.data.data.listServiceVideos[0].video_img) { that.setData({ mapurl_f_img: t.data.data.listServiceVideos[0].video_img, }); }; if(t.data.data.listServiceImages) { that.setData({ gallery: t.data.data.listServiceImages, }); }; if(t.data.data.listServiceItem) { that.setData({ listServiceItem: t.data.data.listServiceItem, }); }; that.setData({ 'data.goods_name': t.data.data.serviceName, 'data.shop_price': t.data.data.money, 'data.show_price': t.data.data.show_price, 'data.validDays': t.data.data.validDays, 'data.serviceContent': t.data.data.serviceContent, 'data.image_url': t.data.data.imgUrl, 'data.goods_id': t.data.data.id, 'data.id': t.data.data.id, 'data.sales_sum': t.data.data.sales_sum, 'data.storageId':t.data.data.storageId, 'data.service_sn':t.data.data.serviceSn, 'data.listServiceVideos': t.data.data.listServiceVideos, // gallery: t.data.data.listServiceImages, // mapurl: t.data.data.listServiceVideos[0].video_url, // mapurl_f_img: t.data.data.listServiceVideos[0].video_img, //listServiceItem: t.data.data.listServiceItem, }); that.getTaohe(); // ----> 秒杀 let prom_type = th.data.options.prom_type; let goods_id = th.data.options.goods_id; if(!goods_id) goods_id = th.data.data.goods_id; if(prom_type) { // 进入商品详情页地址传参有带goods_id、prom_type、prom_id参数, 即从秒杀入口进入 let prom_id = th.data.options.prom_id; // 检查活动是否开始 th.check_prom(goods_id, prom_type, prom_id); } else { // 从非秒杀入口进入,地址不带prom_type、prom_id参数 getApp().request.promiseGet('/api/weshop/activitylist/listGoodActInfo2', { data: { store_id: os.stoid, goods_id: goods_id, goods_type: 1, user_id: oo.user_id, } }).then(res => { if (res.data.code == 0) { let result = res.data.data; let resLength = result.length; if(resLength == 1) { // 如果数组长度为1,则直接显示当前活动 let goods_id = th.data.options.goods_id; let prom_type = result[0].prom_type; let prom_id = result[0].act_id; th.setData({ 'options.prom_type': prom_type, 'options.prom_id': prom_id, }); // 检查活动是否开始 th.check_prom(goods_id, prom_type, prom_id); } else if(resLength > 1) { //如果数组长度大于1,表示当前商品参加多个活动,以列表形式显示多活动 th.setData({ actList: res.data.data, }); }; }else{ th.setData({ actList: res.data.data, }); } }); }; // console.log('0xxxxx999999', t.data.data); //-----商品详情--- //if(!t.data.data.serviceContent) t.data.data.serviceContent=" "; //a.wxParse("content", "html", ut.format_content(t.data.data.serviceContent), ee, 6); //e.wxParseAddFullImageUrl(ee, "content"); getApp().deal_iframe(a,e,'content',t.data.data.serviceContent,ee); //获取重表 getApp().promiseGet("/api/weshop/serviceItem/list",{ data:{store_id:o.stoid,service_id:t.data.data.id} }).then(res=>{ if(res.data.code==0){ var list=res.data.data; that.setData({service_list:list}) } }) } else { wx.showModal({ title: t.data.msg, showCancel: !1, complete: function() { wx.navigateBack(); } }); }; } }); th.data.enterAddressPage && (this.data.enterAddressPage = !1); //没有互动,就调用默认的门店 if(!th.data.prom_type) th.get_sto(); }) }, enterAddress: function() { this.data.enterAddressPage = !0, wx.navigateTo({ url: "/packageF/pages/user/address_list/address_list?operate=selectAddress" }); }, onUnload: function() { // for(var i = 1; i < 100; i++) { // clearInterval(i); // } }, onHide: function() { this.data.is_timer = 0; // for(var i = 1; i < 100; i++) { // clearInterval(i); // } }, //----------三个选项按钮----------- tabClick: function(t) { var e = t.currentTarget.id; this.setData({ activeCategoryId: e }), 1 == e ? this.tabGoodsContent() : 2 == e && this.tabComment(); }, // tabClick2: function(t) { // this.setData({ // activeCategoryId2: t.currentTarget.id // }); // }, tabClick3: function(t) { var e = this; if (t.currentTarget.id != this.data.activeCategoryId3) { e.data.c_curr_p = 1; this.setData({ activeCategoryId3: t.currentTarget.id, comments: null,comments_no_more:0,get_c:0, }); this.requestComments_new(); } }, // doScrollTop: function() { // wx.pageScrollTo({ // scrollTop: 0 // }); // }, tabComment: function() { this.setData({ activeCategoryId: 2,comments_no_more:0,get_c:0 }), this.data.comments || this.requestComments_new(); }, //商品详情的时候调用 tabGoodsContent: function() { var th = this, i = getApp().request; this.setData({ activeCategoryId: 1 }); }, //------------加入购物车-------------- addCart: async function(t) { var th = this; var ind = t.currentTarget.dataset.openSpecModal_ind; var action= t.currentTarget.dataset.action; if(getApp().is_sp_hao() && action=='add'){ wx.showToast({ title: "视频号商品不允许加入购物车", icon: 'none', duration: 2000 }); return false; } if(this.data.goodsInputNum==0){ getApp().my_warnning('请输入购买数量', 1, th, 450); return false; } if(!ind) ind = t.currentTarget.dataset.openspecmodal_ind; th.setData({ open_ind_store: ind }); if(!th.data.sto_sele_name) { getApp().my_warnning('请选择门店', 1, th, 450); return false; }; // 库存 var redisNums = 0; // 限购数 var limitNum = 0; // 已购买数量 var boughtNum = 0; var is_ok=1; // 秒杀活动 if(this.data.prom_type == 1) { // 如果是秒杀活动下的单独购买,is_normal为1 if(this.data.openSpecModal_flash_normal) this.data.is_normal = 1; if(!this.data.is_normal) {// 秒杀购买 // 获取redis当前可以购买的数量 // 如果数量为0,设置和显示已抢光 // 否则,进一步判断是否超出限购或超出库存 await this.getactLen().then(async function(res) { redisNums = res; let curNum = th.data.goodsInputNum; if(curNum > res) { // t当前增减的数量 // wx.showModal({ // title: '超出活动库存', // }); getApp().my_warnning('超出活动库存', 0, self); th.setData({ goodsInputNum: res || 1 }); is_ok=0; return false; } // res: redis可购买数量 console.log('当前可以购买的数量:', res); if(res <= 0) { // 可购买数量<=0, 设置和显示已抢光 th.setData({ prom_r_null: 1, }); // wx.showModal({ // title: '超出活动库存', // }); getApp().my_warnning('超出活动库存', 0, self); is_ok=0; return false; } else { // 可购买数量>0 // 计算自己还可以购买的数量 // 自己还可购买的数量c = 每人活动限购数量a - 自己已经购买的数量b // 如果限购数量a>redis可购买数量d,当增加数量t>d, 提示超出库存 // 如果限购数量a<=redis可购买数量d, 当增加数量t>a,提示超出限购 let actInfo = th.data.sele_g; await th.get_buy_num2().then(function (data) { let limited = actInfo.buy_limit==0?100000:actInfo.buy_limit; // 限购数量a let promcardbuynum = data.data.data.promcardbuynum; let buyedNum = promcardbuynum; // 自己已经购买的数量b let canBuyNum = limited - buyedNum; // 自己还可购买的数量c limitNum = limited; boughtNum = buyedNum; if(canBuyNum <= 0) { canBuyNum = 0; } if(curNum > canBuyNum) { // wx.showModal({ // title: '超出限购数量', // }); getApp().my_warnning('超出限购数量', 0, self); th.setData({ goodsInputNum: canBuyNum || 1, }); is_ok=0; return false; } }) } }) } } if(!is_ok) return false; if(action=="buy"){ //--------------此时操作的数据------------ var newd = { id: th.data.data.id, goods_num: th.data.goodsInputNum, pick_id: th.data.sto_sele_id, keyid: th.data.sto_sele_keyid, }; newd['pick_name'] = th.data.sto_sele_name; newd['guide_id'] = getApp().globalData.guide_id; newd['guide_type']=0; if(getApp().globalData.groupchat_id){ newd['groupchat_id'] = getApp().globalData.groupchat_id; } if(this.data.prom_type && this.data.prom_type == 1) { newd['prom_type'] = this.data.prom_type; newd['prom_id'] = this.data.prom_id; newd['prom_price'] = this.data.prom_price; }; if(this.data.prom_type == 1 && this.data.openSpecModal_flash_normal) { newd['prom_type'] = 0; newd['prom_price'] = this.data.data.shop_price; }; console.log('newd++++++++', newd); th.buyNow(newd); } else { var newd = { service_id: th.data.data.id, service_sn:th.data.data.service_sn, service_name:th.data.data.goods_name, goods_num: th.data.goodsInputNum, pick_id: th.data.sto_sele_id, user_id:oo.user_id, store_id:os.stoid, money:th.data.data.shop_price, }; if(getApp().globalData.guide_id) { newd['guide_id'] = getApp().globalData.guide_id; newd['guide_type']=0; }; if(getApp().globalData.groupchat_id){ newd['groupchat_id'] = getApp().globalData.groupchat_id; } // 秒杀:单独购买的情况下,加入购物车显示的是零售价,否则显示秒杀活动价 if(th.data.options.prom_type == 1) { newd['prom_type'] = th.data.options.prom_type; newd['prom_id'] = th.data.options.prom_id; if(th.data.openSpecModal_flash_normal) { newd['money'] = th.data.data.shop_price; newd['is_pd_normal'] = 1; } else { newd['money'] = th.data.prom_price; }; }; //----先看会员在购物车中是否加入了该商品----- getApp().request.get("/api/weshop/cartService/page", { data: { store_id: os.stoid, user_id: oo.user_id, service_id: th.data.data.id, }, success: function(re) { //-------如果购物车中有相关的数据--------- if (re.data.data.total > 0) { var item = null; // 多门店问题 var cartGoodsNum = 0; const tmpObj = re.data.data.pageData; for (let i = 0; i < tmpObj.length; i++) { if (th.data.sto_sele_id != tmpObj[i].pick_id) { cartGoodsNum += parseInt(tmpObj[i].goods_num); } else { item = tmpObj[i]; } } // 当前门店同类商品还没加入到购物车 但是有其他门店的同类商品 if (th.data.prom_type == 1 && !th.data.is_normal && !item) { // 秒杀购物车购买 修正数量 var snum = limitNum - boughtNum; if (snum <= 0) { // wx.showModal({ // title: '超出限购数量', // }); getApp().my_warnning('超出限购数量', 0, self); return false; } var cSnum = snum- cartGoodsNum <= 0 ? 0 : snum- cartGoodsNum; var cRedisNums = redisNums- cartGoodsNum <= 0 ? 0 : redisNums- cartGoodsNum; if (newd['goods_num'] >= redisNums){ if (redisNums > snum) { newd['goods_num'] = cSnum; } else { newd['goods_num'] = cRedisNums; } } else { if (newd['goods_num'] > snum) newd['goods_num'] = cSnum; } if (newd['goods_num'] <= 0) { getApp().my_warnning('加入购物车成功', 1, th, 450); th.closeSpecModal(); return false; } getApp().request.post("/api/weshop/cartService/save", { data: newd, success: function(t) { getApp().my_warnning('加入购物车成功', 1, th, 450); var c_num = th.data.cartGoodsNum + th.data.goodsInputNum; th.setData({ cartGoodsNum: c_num }); th.closeSpecModal(); } }); return false; } // 以下为当前门店同类商品已经加入到购物车 var totalNum = th.data.goodsInputNum + item.goods_num; // 秒杀购物车购买 修正数量 if (th.data.prom_type == 1 && !th.data.is_normal) { var snum = limitNum - boughtNum; if (snum <= 0) { // wx.showModal({ // title: '超出限购数量', // }); getApp().my_warnning('超出限购数量', 0, self); return false; } if (totalNum >= redisNums){ if (redisNums > snum) { totalNum = snum- cartGoodsNum; } else { totalNum = redisNums- cartGoodsNum; } } else { if (totalNum > snum) totalNum = snum- cartGoodsNum; } } var updata = { id: item.id, goods_num: totalNum, money: th.data.data.shop_price, store_id: os.stoid, }; // 秒杀:单独购买的情况下,加入购物车显示的是零售价,否则显示秒杀活动价 if(th.data.options.prom_type == 1) { // updata['prom_type'] = th.data.options.prom_type; // updata['prom_id'] = th.data.options.prom_id; if(th.data.openSpecModal_flash_normal) { updata['money'] = th.data.data.shop_price; updata['is_pd_normal'] = 1; } else { updata['money'] = th.data.prom_price; }; }; if (getApp().globalData.guide_id) { updata['guide_id'] = getApp().globalData.guide_id; updata['guide_type'] = 1; } if(getApp().globalData.groupchat_id){ updata['groupchat_id'] = getApp().globalData.groupchat_id; } getApp().request.put("/api/weshop/cartService/update", { data: updata, success: function(t) { getApp().my_warnning('加入购物车成功', 1, th, 450); var c_num = th.data.cartGoodsNum + th.data.goodsInputNum; th.setData({ cartGoodsNum: c_num }); th.closeSpecModal(); } }); } else { getApp().request.post("/api/weshop/cartService/save", { data: newd, success: function(t) { getApp().my_warnning('加入购物车成功', 1, th, 450); var c_num = th.data.cartGoodsNum + th.data.goodsInputNum; th.setData({ cartGoodsNum: c_num }); th.closeSpecModal(); } }); } } }); }; }, //----------立即购买----------- buyNow: function(e) { getApp().globalData.service_now=e; wx.redirectTo({ url: "/packageA/pages/cart2_ser/cart2_ser", }); }, //----------增加购买数量----------- addCartNum: function(t) { this.checkCartNum(this.data.goodsInputNum + 1); }, //----------减少购买数量----------- subCartNum: function(t) { this.checkCartNum(this.data.goodsInputNum - 1); }, //----------输入框输入购买数量----------- inputCartNum: function(t) { this.checkCartNum(Number(t.detail.value)); }, //------检查数量是不是超出限购------ checkCartNum: async function(t) { var th = this; if(!th.data.def_pick_store) { wx.showModal({title: '请选择门店',}); return false; }; // 非秒杀活动 if(this.data.prom_type != 1) { this.setData({ goodsInputNum: t, }); }; // 秒杀活动 if(this.data.prom_type == 1) { // 如果是秒杀活动下的单独购买,is_normal为1 if(this.data.openSpecModal_flash_normal) this.data.is_normal = 1; if(this.data.is_normal) {// 单独购买 this.setData({ goodsInputNum: t, }); } else {// 秒杀购买 // 获取redis当前可以购买的数量 // 如果数量为0,设置和显示已抢光 // 否则,进一步判断是否超出限购或超出库存 await this.getactLen().then(async function(res) { // res: redis可购买数量 // console.log('当前可以购买的数量:', res); if(res <= 0) { // 可购买数量<=0, 设置和显示已抢光 th.setData({ prom_r_null: 1, }); } else { // 可购买数量>0 // 计算自己还可以购买的数量 // 自己还可购买的数量c = 每人活动限购数量a - 自己已经购买的数量b // 如果限购数量a>redis可购买数量d,当增加数量t>d, 提示超出库存 // 如果限购数量a<=redis可购买数量d, 当增加数量t>a,提示超出限购 let actInfo = th.data.sele_g; await th.get_buy_num2().then(function (data) { let limited = actInfo.buy_limit==0?100000:actInfo.buy_limit; // 限购数量a let promcardbuynum = data.data.data.promcardbuynum; let buyedNum = promcardbuynum; // 自己已经购买的数量b let canBuyNum = limited - buyedNum; // 自己还可购买的数量c if(canBuyNum <= 0) { canBuyNum = 0; }; if(limited > res) { if(t > res) { // t当前增减的数量 // wx.showModal({ // title: '超出活动库存', // }); getApp().my_warnning('超出活动库存', 0, self); th.setData({ goodsInputNum: res || 1, }); return false; }; }; if(limited <= res) { if(t>canBuyNum) { // wx.showModal({ // title: '超出限购数量', // }); getApp().my_warnning('超出限购数量', 0, self); th.setData({ goodsInputNum: canBuyNum || 1, }); return false; }; }; th.setData({ goodsInputNum: t, }); }); }; }); } }; // var e = th.data.sele_g.goods_num; // var p_type = th.data.prom_type; //&& p_type!=1 && p_type!=4 // if (th.data.sales_rules == 2 && (p_type != 1 && p_type != 4 && p_type != 6 || th.data.openSpecModal_inte_normal == 1 || th.data.is_normal == 1)) { // if (!th.data.def_pick_store) { // wx.showModal({title: '请选择门店',}); // return false; // } else { // e = th.data.def_pick_store.CanOutQty; // } // } // th.setData({goodsInputNum: t}); // }); }, closeSpecModal: function() { this.setData({ openSpecModal: !1, openSpecModal_pt: !1, openSpecModal_flash_normal: !1, }); }, openSpecModel: function(t) { if(this.data.get_sto_ing) return false; var th=this; var open_store = t.currentTarget.dataset.ind; if(getApp().is_sp_hao() && open_store==1){ wx.showToast({ title: "视频号商品不允许加入购物车", icon: 'none', duration: 2000 }); return false; } //--先判断会员状态-- var user_info = getApp().globalData.userInfo; if (user_info == null || user_info.mobile == undefined || user_info.mobile == "" || user_info.mobile == null) { wx.navigateTo({ url: '/packageE/pages/togoin/togoin', }) return false; } this.setData({ store: 0, choice_sort_store: 0, sort_store: 0, open_ind_store: open_store, }) var ind = t.currentTarget.dataset.ind; this.setData({ openSpecModal: !0, openSpecModal_ind: ind, }); }, //---------点击收藏和不收藏------------ collectGoods: function() { var t = this,i = getApp().request; var user_id = s.globalData.user_id; if (user_id == '') { getApp().getUserFir(function() {}); getApp().showWarning("未登录"); return false; } else { if(t.data.is_collect_load) return false; t.data.is_collect_load=1; if (t.data.is_collect == 1) { //删除收藏 i.delete("/api/weshop/goodscollect/del/" + o.stoid + "/" + t.data.collect_id, { success: function(e) { t.data.is_collect_load=0; if (e.data.code == 0) { t.setData({ is_collect: 0, collect_id: 0, }); ut.m_toast('取消成功'); } } }); } else { var timestamp = Date.parse(new Date()); timestamp = timestamp / 1000; var d = { goods_id: t.data.data.goods_id, user_id: s.globalData.user_id, store_id: o.stoid, add_time: timestamp, type: 1, }; //加入收藏夹就是导购的ID if(getApp().globalData.guide_id){ d.guide_id=getApp().globalData.guide_id; d.guide_type=2; } if(getApp().globalData.groupchat_id){ d.groupchat_id = getApp().globalData.groupchat_id; } i.post("/api/weshop/goodscollect/save", { //添加收藏 data: d, success: function(e) { t.data.is_collect_load=0; if (e.data.code == 0) { t.setData({ is_collect: 1, collect_id: e.data.data.collect_id, }); ut.m_toast('收藏成功 在【我的-收藏夹】中查看'); } } }); } } }, //---------联系客服------------ contactService: function () { this.getTel() .then(() => { if(self.data.store_tel) { wx.showModal({ title: '联系客服', content: '客服热线:' + self.data.store_tel, confirmText: '拨打', success(res) { if(res.confirm) { wx.makePhoneCall({ phoneNumber: self.data.store_tel, }) }; }, }); }; }); }, // 获取客服电话 getTel() { return new Promise((resolve, reject) => { s.getConfig(function (t) { if (t.store_tel == undefined) { getApp().request.get("/api/weshop/store/get/" + os.stoid, { isShowLoading: 1, data: {}, success: function (rs) { getApp().globalData.config = rs.data.data; if (rs.data.data.store_tel == null && rs.data.data.store_tel == undefined) { getApp().my_warnning("商家未设置电话", 0, th); return false; } self.setData({ store_tel: rs.data.data.store_tel, }); // s.confirmBox("请联系客服:" + rs.data.data.store_tel); } }) } else { self.setData({ store_tel: t.store_tel, }); // s.confirmBox("请联系客服:" + t.store_tel); }; resolve(); }); }); }, //-------获取购物车数量---------- requestCardNum: function() { var t = this; getApp().request.get("/api/weshop/cart/page", { data: { store_id: o.stoid, user_id: s.globalData.user_id, state:0, is_gift:0 }, success: function(e) { var num = 0; for (var i = 0; i < e.data.data.pageData.length; i++) { num += e.data.data.pageData[i].goods_num; } /*-- t.setData({ cartGoodsNum: num });--*/ //-- 读取服务卡的数量 -- getApp().promiseGet("/api/weshop/cartService/page",{ data:{ store_id: s.globalData.setting.stoid, user_id: s.globalData.user_id, } }).then(res=>{ for (var i = 0; i < res.data.data.pageData.length; i++) { num += res.data.data.pageData[i].goods_num; } t.setData({cartGoodsNum:num}); }) } }); }, //--点击分享事件--- onShareAppMessage: function(t) { var th = this; var price = th.data.data.shop_price; if (th.data.prom_act) { price = th.data.prom_act.price; } var title= th.data.data.goods_name; var img=th.data.iurl+th.data.data.image_url; if(th.data.prom_type==6){ title=th.data.prom_act.share_title; img=th.data.iurl+th.data.prom_act.share_imgurl; } var url="/packageA/pages/goodsInfo/goodsInfo?goods_id=" + th.data.gid; if(getApp().globalData.user_id) { url+="&first_leader="+getApp().globalData.user_id; } //-- 如果房间分享,且不是会员分享的 -- if(getApp().globalData.room_id && th.data.data.goods_id==getApp().globalData.room_goods_id && !getApp().globalData.room_user_share ){ url+="&room_id="+getApp().globalData.room_id+"&room_user_share=1"; } var ob={ title: price + "元 " +title, path:url, imageUrl: img, }; // 如果服务卡参加秒杀活动,且后台设置了分享标题和分享图片 if(th.data.prom_type == 1) { if(th.data.sele_g && th.data.sele_g.share_title) { title = th.data.sele_g.share_title; ob.title = title; }; if(th.data.sele_g && th.data.sele_g.share_imgurl) { img = th.data.iurl + th.data.sele_g.share_imgurl; ob.imageUrl = img; } } return ob; }, //-----图片失败,默认图片----- bind_bnerr: function(e) { var _errImg = e.target.dataset.errorimg; var _errObj = {}; _errObj[_errImg] = this.data.iurl + "/miniapp/images/default_g_img.gif"; this.setData(_errObj) //注意这里的赋值方式,只是将数据列表中的此项图片路径值替换掉 ; }, //-----图片失败,默认图片----- bind_bnerr2: function(e) { var _errImg = e.target.dataset.errorimg; var _errObj = {}; _errObj[_errImg] = this.data.iurl + "/miniapp/images/hui_hear_pic.png" this.setData(_errObj) //注意这里的赋值方式,只是将数据列表中的此项图片路径值替换掉 ; }, //---------拿出门店分类和门店------------ get_sto(e) { var is_normal=e; var th = this,that=this; if (e == 1) { th.setData({ is_normal: 1 }) } else { th.setData({ is_normal: 0 }) } this.data.get_sto_ing=1; var timer_get = setInterval(function() { if (th.data.is_get_local_ok == 0) return false; if (!th.data.fir_def_store) return false; var i = getApp().request; if (!th.data.data) return false; var dd= { store_id: o.stoid, isstop: 0, is_pos: 1, pageSize: 2000 } //如果有距离的话 if (th.data.lat != null) { dd.lat = th.data.lat; dd.lon = th.data.lon; } clearInterval(timer_get); //如果会员是有默认的门店话 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; //--普通门店排版,服务卡项有指定门店才能使用,所以要筛选一下-- setTimeout(function(){ var sto_list=th.data.data.storageId; if(sto_list){ for (var k = 0; k < e.data.data.pageData.length; k++) { var it=e.data.data.pageData[k]; if (sto_list.indexOf(it.keyid)==-1) { //删除 e.data.data.pageData.splice(k--, 1); } } } //如果有秒杀的指定门店 if(th.data.prom_type==1 && th.data.prom_act && th.data.prom_act.pick_up_lists && e.data.data.pageData.length && !is_normal){ var pick_up_lists=th.data.prom_act.pick_up_lists; for (var kq = 0; kq < e.data.data.pageData.length; kq++) { var it0=e.data.data.pageData[kq]; var idx0=pick_up_lists.findIndex(function (e){ return e.pickup_id==it0.pickup_id; }) if (idx0<0) { //删除 e.data.data.pageData.splice(kq--, 1); } } if (th.data.def_pick_store && JSON.stringify(th.data.def_pick_store)!='{}'){ //-- 查找一下门店有没有在 -- var idx1=pick_up_lists.findIndex(function (e){ return e.pickup_id==th.data.def_pick_store.pickup_id; }) if(idx1<0){ //如果是秒杀的指定门店,就要设置秒杀的 th.data.def_pick_store.is_no_dis_act=1; that.setData({ def_pick_store: th.data.def_pick_store }) } } } //-- 如果门店过滤后,还会是数量 -- if(e.data.data.pageData.length){ //如果有开启距离的功能,没有设置默认门店,要用最近的门店作为默认门店 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, sto_sele_keyid: e.data.data.pageData[0].keyid, }); 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,isshow:1}); th.deal_pickup(e); } else{ th.data.get_sto_ing=0; th.setData({ isshow:1 }) wx.hideLoading(); } },800) } }) }, 200) }, //获取搜索门店输入的值 input_store: function(e) { this.setData({ keyword: e.detail.value }) }, //搜索门店 searchfn(){ let choice_sort_store = this.data.choice_sort_store if (choice_sort_store==0) { //全局搜索 let all_pick_list = this.data.all_pick_list let def_pickpu_list = this.data.def_pickpu_list let keyword = this.data.keyword if (keyword) { let arr=all_pick_list.filter( item =>{ let i = item.pickup_name.indexOf(keyword) if (i > -1) { return true }else{ return false } }) if (arr && arr.length>0) { if(this.data.is_show_sto_cat==1){ this.setData({ def_pickpu_list:arr }) }else{ this.setData({ only_pk:arr }) } }else{ wx.showToast({ title: '没有搜索到门店', icon: 'none', duration: 2000 }) } }else{ if (this.data.is_show_sto_cat==1) { this.setData({ def_pickpu_list:all_pick_list.slice(0,10) }) }else{ this.setData({ only_pk:all_pick_list }) } } }else{ //分类下搜索 let sec_i=this.data.sec_i let all_sto = this.data.all_sto let old_all_sto = this.data.old_all_sto if (!old_all_sto) { this.setData({ old_all_sto:JSON.parse(JSON.stringify(all_sto)) }) } let sec_sto= this.data.sec_sto let sec_arr = this.data.old_all_sto[sec_i].s_arr let keyword = this.data.keyword let text='sec_sto.s_arr' if (keyword) { let arr=sec_arr.filter( item =>{ let i = item.pickup_name.indexOf(keyword) if (i > -1) { return true }else{ return false } }) if (arr && arr.length>0) { this.setData({ [text]:arr }) }else{ wx.showToast({ title: '没有搜索到门店', icon: 'none', duration: 2000 }) } }else{ if(this.data.old_all_sto){ this.setData({ [text]: this.data.old_all_sto[sec_i].s_arr }) }else{ this.setData({ [text]: all_sto[sec_i].s_arr }) } } } }, //------------处理门店--------------- deal_pickup(e){ var th=this; if(!th.data.data) return false wx.hideLoading(); //单总量超出5个的时候 if (e.data.data.total > 10 && e.his_cate_num) { getApp().request.get("/api/weshop/storagecategory/page", { data: { store_id: o.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]}) } } th.data.get_sto_ing=0; } }); } else { th.data.get_sto_ing=0; 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, sto_sele_keyid:e.data.data.pageData[0].keyid, }) } } } }, //加载更多是靠这个函数 onReachBottom: function() { if (this.data.activeCategoryId == 2){ if(!this.data.comments_no_more) this.requestComments_new(); } var goods_list = this.selectComponent("#goods_list"); //组件的id if (goods_list) goods_list.get_list(); }, //---小于10的格式化函数---- timeFormat(param) { return param < 10 ? '0' + param : param; }, // ----视频图片---- // 图片计数器 swiperChange: function (e) { var that = this; if (e.detail.current > 0) { that.setData({ hiddenn: 1, videopicture: 1, }) } else { that.setData({ hiddenn: 0, videopicture: 0, }) } if (e.detail.source == 'touch') { that.setData({ current: e.detail.current }) } }, /*---视频相关--*/ videopicture: function (e) { var vipi = e.currentTarget.dataset.vipi; this.setData({ videopicture: vipi, swiperCurrent: vipi, noon: 0, current: 1 }); }, videoPlay: function (e) { var _index = e.currentTarget.id this.setData({ _index: _index, noon: 1 }) setTimeout(function () { //将点击视频进行播放 var videoContext = wx.createVideoContext(_index) videoContext.play(); }, 500) }, //--获取头像的本地缓存,回调写法-- get_head_temp: function(tt, func) { var ee = this; if (ee.data.share_head) { tt(func); return false; } //---获取分享图片的本地地址,头像和商品图片---- var path2 = getApp().globalData.userInfo?getApp().globalData.userInfo.head_pic:''; if (path2 == "") { ee.data.share_head = "../../../images/share/hui_hear_pic.png"; tt(func); } 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是网络图片的本地地址 ee.data.share_head = res.path; tt(func); }, fail: function(res) { ee.data.share_head = "../../../images/share/hui_hear_pic.png"; //分享的图片不能用网络的 tt(func); } }); } }, //--获取商品图片的本地缓存,回调写法-- get_goods_temp: function(tt) { var ee = this; if (ee.data.share_goods_img) { tt(); return false; } var img=ee.data.iurl+ee.data.data.image_url; if(ee.data.prom_act && ee.data.prom_act.share_img){ img=ee.data.iurl+ee.data.prom_act.share_img; } //获取商品是分享图信息 wx.getImageInfo({ src: img, success: function(res) { //res.path是网络图片的本地地址 ee.data.share_goods_img = res.path; tt(); }, fail: function(res) { //获取默认空白图 wx.getImageInfo({ src: ee.data.iurl+'/miniapp/images/default_g_img.gif', success: function(res) { ee.data.share_goods_img = res.path; //分享的图片不能用网络的 tt(); } }) } }); }, //--跳转到商品详情页面-- go_goods: function(e) { var gid = e.currentTarget.dataset.gid; var url = "/pages/goods/goodsInfo/goodsInfo?goods_id=" + gid; getApp().goto(url); }, pop_err_img: function(e) { var txt = e.currentTarget.dataset.errorimg; var ob = {}; ob[txt] = this.data.iurl + "/miniapp/images/default_g_img.gif"; this.setData(ob); }, // 选择门店 choice_store: function(ee) { this.setData({ keyword:'' }) var th = this; var ind=ee.currentTarget.dataset.ind; var bconfig = th.data.bconfig; //--先判断会员状态-- var user_info = getApp().globalData.userInfo; // if (user_info == null || user_info.mobile == undefined || user_info.mobile == "" || user_info.mobile == null) { // wx.navigateTo({ // url: '/packageE/pages/togoin/togoin', // }) // return false; // } //如果开启了,则不在选择门店 if(this.data.sys_switch.is_pricing_open_store && getApp().globalData.pk_store){ return false; } if(!th.data.only_pk && !th.data.def_pickpu_list){ getApp().confirmBox("暂无可售门店", null, 25000, !1); return false; } if(th.data.only_pk && !th.data.only_pk.length){ getApp().confirmBox("暂无可售门店", null, 25000, !1); return false; } if(th.data.def_pickpu_list && !th.data.def_pickpu_list.length){ getApp().confirmBox("暂无可售门店", null, 25000, !1); return false; } if (bconfig && bconfig.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; th.setData({ is_gps: 1 }); th.get_sto(th.data.is_normal); }, fail: function(res) { th.data.is_get_local_ok = 1; th.get_sto(th.data.is_normal); if (res.errCode == 2) { th.setData({is_gps: 0}); if (th.data.is_gps == 0) { getApp().confirmBox("请开启GPS定位", null, 25000, !1); } } else { th.setData({ is_gps: "3" }); } } }) }else{ th.data.is_get_local_ok = 1; th.get_sto(th.data.is_normal); } if(ind!=undefined && ind!=null ){ this.setData({ open_ind_store: ind, store: 1, openSpecModal: !1, openSpecModal_pt: !1 }) }else{ this.setData({ store: 1, openSpecModal: !1, openSpecModal_pt: !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 }) var openindstore=this.data.open_ind_store; if (openindstore == 1) { th.setData({ openSpecModal: !0, openSpecModal_ind: openindstore, }); } else if (openindstore == 2) { th.setData({ openSpecModal: !0, openSpecModal_ind: openindstore, }); } else if (openindstore == 4) { //4就是拼团 th.setData({ openSpecModal_pt: 1, //打开拼团购买界面 store: 0, //关闭门店 choice_sort_store: 0, //关闭门店2级 sort_store: 0, //关闭门店2级 }); } else { th.setData({ store: 0, choice_sort_store: 0, sort_store: 0 }) } }, //选择更多门店 more_store: function() { this.setData({ sort_store: 1 }); }, sort_store: function() { }, // 返回按钮 returns: function() { this.setData({ sort_store: 0, choice_sort_store: 0 }); }, //---选择分类门店--- 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_i:index, 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?th.data.only_pk[index]:null; //当没有门店分类的时候 } } else { var index = th.data.sec_pick_index; item = th.data.sec_sto.s_arr[index]; } if(!item) return false; var ser_card=this.data.data; //判断门店的配送方式是不是匹配 if(ser_card.storageId!=null && ser_card.storageId!="" && ser_card.storageId.indexOf(item.keyid)==-1){ wx.showToast({ title: "该门店无此服务项目,请重新选择!", icon: 'none', duration: 2000 }); return false; } if(!item) return false; th.setData({ def_pick_store: item, sto_sele_name: item.pickup_name, sto_sele_id: item.pickup_id, sto_sele_keyid: item.keyid, sto_sele_distr: item.distr_type, store: 0, choice_sort_store: 0, fir_pick_index: 0 }); if (openindstore == 1) { th.setData({ openSpecModal: !0, openSpecModal_ind: openindstore, }); } else if (openindstore == 2) { th.setData({ openSpecModal: !0, openSpecModal_ind: openindstore, }); } else if(openindstore == 4) { //4就是拼团 th.setData({ openSpecModal_pt: 1, //打开拼团购买界面 store: 0, //关闭门店 choice_sort_store: 0, //关闭门店2级 sort_store: 0, //关闭门店2级 }); } else { th.setData({ store: 0, choice_sort_store: 0, sort_store: 0 }) } }, //---点击二级之后的选择--- 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?th.data.only_pk[index]:null; //当没有门店分类的时候 } } else { var index = th.data.sec_pick_index; item = th.data.sec_sto.s_arr[index]; } if(!item) return false; //判断门店的配送方式是不是匹配 var ser_card=this.data.data; //判断门店的配送方式是不是匹配 if(ser_card.storageId!=null && ser_card.storageId!="" && ser_card.storageId.indexOf(item.keyid)==-1){ wx.showToast({ title: "该门店无此服务项目,请重新选择!", icon: 'none', duration: 2000 }); return false; } var store_id = o.stoid; 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) } } }); if(!item) return false; th.setData({ def_pick_store: item, sto_sele_name: item.pickup_name, sto_sele_id: item.pickup_id, sto_sele_keyid: item.keyid, sto_sele_distr: item.distr_type, store: 0, choice_sort_store: 0 }); var openindstore = th.data.open_ind_store; if (openindstore == 1) { th.setData({ openSpecModal: !0, openSpecModal_ind: openindstore, store: 0, choice_sort_store: 0, sort_store: 0, }); } else if (openindstore == 2) { th.setData({ openSpecModal: !0, openSpecModal_ind: openindstore, store: 0, choice_sort_store: 0, sort_store: 0, }); } else if (openindstore == 4) { //4就是拼团 th.setData({ openSpecModal_pt: 1, //打开拼团购买界面 store: 0, //关闭门店 choice_sort_store: 0, //关闭门店2级 sort_store: 0, //关闭门店2级 }); } else { th.setData({ store: 0, choice_sort_store: 0, sort_store: 0, }) } }, wait_for_store_config: function() { var th = this; var t_time = setInterval(function() { if (th.data.bconfig == null) false; var e = th.data.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; } clearInterval(t_time); }, 500) }, //-- 根据ID拿出门店 -- get_pick_from_list(pid){ var all_pick_list=this.data.all_pick_list; for(var i in all_pick_list){ var item=all_pick_list[i]; if(item.pickup_id==pid){ return item;} } }, closePoster() { this.setData({ showPoster: false, }); }, // 保存图片到手机 savePic() { console.log('保存图片'); var self = this; // 获取用户的当前设置,返回值中有小程序已经向用户请求过的权限 this.getSetting().then((res) => { // 判断用户是否授权了保存到相册的权限,如果没有发起授权 if (!res.authSetting['scope.writePhotosAlbum']) { this.authorize().then(() => { // 同意授权后保存下载文件 this.saveImage(self.data.shareImgPath) .then(() => { self.setData({ showPoster: false }); }); }) } else { // 如果已经授权,保存下载文件 this.saveImage(self.data.shareImgPath) .then(() => { self.setData({ showPoster: false }); }); } }) }, // 获取用户已经授予了哪些权限 getSetting() { return new Promise((resolve, reject) => { wx.getSetting({ success: res => { resolve(res) } }) }) }, // 发起首次授权请求 authorize() { // isFirst 用来记录是否为首次发起授权, // 如果首次授权拒绝后,isFirst赋值为1 let isFirst = wx.getStorageSync('isFirst') || 0; return new Promise((resolve, reject) => { wx.authorize({ scope: 'scope.writePhotosAlbum', // 同意授权 success: () => { resolve(); }, // 拒绝授权,这里是用户拒绝授权后的回调 fail: res => { if(isFirst === 0) { wx.setStorageSync('isFirst', 1); wx.showToast({ title: '保存失败', icon: 'none', duration: 1000 }) } else { this.showModal(); } console.log('拒绝授权'); reject(); } }) }) }, // 保存图片到系统相册 saveImage(saveUrl) { var self = this; return new Promise((resolve, reject) => { wx.saveImageToPhotosAlbum({ filePath: saveUrl, success: (res) => { wx.showToast({ title: '保存成功', duration: 1000, }); self.setData({ showPlaybill: 'true' }); resolve(); }, fail: () => { wx.showToast({ title: '保存失败', duration: 1000, }); } }) }) }, previewImage() { getApp().pre_img(this.data.shareImgPath); }, onShareTimeline() { getApp().globalData.no_clear=1 var th = this; var price = th.data.data.shop_price; if (th.data.prom_act) { price = th.data.prom_act.price; } var title= th.data.data.goods_name; // var img=th.data.data.original_img; var img=th.data.iurl+th.data.data.image_url; if(th.data.prom_type==6){ title=th.data.prom_act.share_title; img=th.data.iurl+th.data.prom_act.share_imgurl; } var url="goods_id=" + th.data.gid; if(getApp().globalData.user_id) { url+="&first_leader="+getApp().globalData.user_id; } //-- 如果房间分享,且不是会员分享的 -- if(getApp().globalData.room_id && th.data.data.goods_id==getApp().globalData.room_goods_id && !getApp().globalData.room_user_share ){ url+="&room_id="+getApp().globalData.room_id+"&room_user_share=1"; } // 如果服务卡参加秒杀活动,且后台设置了分享标题和分享图片 if(th.data.prom_type == 1) { if(th.data.sele_g && th.data.sele_g.share_imgurl) { img = th.data.iurl + th.data.sele_g.share_imgurl; }; }; return { title:price + "元 " +title, imageUrl:img, query: url } }, clickCollapse() { this.setData({ flag: !this.data.flag, }) }, con_weixin: function () { getApp().con_wx(this); }, customer_chat:function(){ getApp().customer_chat(this.data.data.id,1); }, //评论的调用 requestComments_new: async function () { var e = this, th = e, ee = e; var tp = e.data.activeCategoryId3; var t = '/api/weshop/serviceComment/pageComment?page=' + e.data.c_curr_p; wx.showLoading(); var req_where = { store_id: o.stoid, pageSize: 5, is_show: 1, parent_id: 0, goods_id: th.data.gid, commenttype: tp, service_id: this.data.gid, } if (getApp().globalData.userInfo) { req_where.userId = getApp().globalData.user_id; } var rs_data = null; await getApp().request.promiseGet(t, { data: req_where }).then(res => { var tot = res.data.data.total; e.data.c_curr_p++; e.setData({ com_num: tot, //已经有加载 }); if (res.data.data && res.data.data.pageData && res.data.data.pageData.length > 0) { rs_data = res.data.data.pageData; } else { th.setData({ comments_no_more: 1, auto: 1 }); } }) if (rs_data) { //var cda = th.data.comments; var cda = rs_data, com_data = th.data.comments; for (var ind in cda) { var ep = cda[ind]; if (cda[ind].head_pic == '') { cda[ind].head_pic = th.data.iurl + "/miniapp/images/hui_hear_pic.png"; } if (ep.weapp_img != "" && ut.isString(ep.weapp_img)) { cda[ind].weapp_img = JSON.parse(ep.weapp_img); } if (ep.img != "" && ut.isString(ep.img)) { cda[ind].img = ut.unserialize(ep.img); } //--测量多有字的宽带,计算有多少行-- var widh = ut.measureText(ep.content, 30); var lines = widh / 712; cda[ind].seeMore = false; if (lines > 3) cda[ind].seeMore = true; await getApp().request.promiseGet("/api/weshop/serviceComment/pageComment", { data: { store_id: o.stoid, parent_id: ep.comment_id, service_id: this.data.gid, } }).then(res => { if (res.data.data.pageData && res.data.data.pageData.length > 0) { cda[ind].replay_list = res.data.data.pageData; } }) } if (!com_data) com_data = cda; else com_data = com_data.concat(cda); th.setData({ comments: com_data }); } th.setData({ get_c: 1 }); wx.hideLoading(); }, //--点赞功能-- click_zan: function (e) { var com_id = e.currentTarget.dataset.com_id; var item_id = e.currentTarget.dataset.item_id; var app = getApp(), th = this; if (app.globalData.userInfo == null || app.globalData.userInfo == undefined) { app.confirmBox("您还未登录"); return false; } var iszan = th.data.comments[item_id].userZanNum; if (this.data.iszaning) return false; this.data.iszaning = 1; app.request.post("/api/weshop/serviceCommentZan/save", { data: { store_id: o.stoid, user_id: app.globalData.user_id, goods_id: th.data.gid, service_id: th.data.gid, comment_id: com_id }, success: function (ee) { if (ee.data.code == "-1") { app.my_warnning("不能给自己点赞", 0, th); th.data.iszaning = 0; return; } if (ee.data.code == 0 && iszan != 1) { var num = th.data.comments[item_id].zan_num; num++; var text = "comments[" + item_id + "].zan_num"; var text1 = "comments[" + item_id + "].userZanNum"; var _errObj = {}; _errObj[text] = num; _errObj[text1] = 1; th.setData(_errObj); } else { var num = th.data.comments[item_id].zan_num; num--; var text = "comments[" + item_id + "].zan_num"; var text1 = "comments[" + item_id + "].userZanNum"; var _errObj = {}; _errObj[text] = num; _errObj[text1] = 0; th.setData(_errObj); } setTimeout(function () { th.data.iszaning = 0; }, 500) } }) }, //--外侧评价的点击效果--- clik_evaluate: function (e) { var val = e.currentTarget.dataset.val; this.setData({ activeCategoryId: 2, activeCategoryId3: val, comments: null }); this.requestComments_new(); }, //显示全部 toggleHandler: function (e) { var that = this, index = e.currentTarget.dataset.index; for (var i = 0; i < that.data.comments.length; i++) { if (index == i) { for (var i = 0; i < that.data.comments.length; i++) { that.data.comments[index].auto = true; that.data.comments[index].seeMore = false; } } } that.setData({ comments: that.data.comments }) }, //收起更多 toggleContent: function (e) { var that = this, index = e.currentTarget.dataset.index; for (var i = 0; i < that.data.comments.length; i++) { if (index == i) { that.data.comments[index].auto = true; that.data.comments[index].seeMore = true; } } that.setData({ comments: that.data.comments }) }, //--查看评价-- look_pj: function () { this.tabComment(); this.doScrollTop(); }, previewCommentImgs_w: function (t) { var e = this.data.comments[t.currentTarget.dataset.cidx].weapp_img; var b = e.slice() // for (var i in b) { // b[i] = this.data.iurl + e[i]; // } this.data.show_prew_img = 1; wx.previewImage({ current: b[t.currentTarget.dataset.id], urls: b }); }, // 判断是否开启美业,获取套盒列表 getTaohe() { // 判断是否开启美业 getApp().promiseGet('/api/weshop/store/getTabSys/' + os.stoid, {}).then(res => { if(res.data.code == 0) { let enableMeiye = res.data.data.EnableMeiye; self.setData({ enableMeiye, }); if(enableMeiye) { // 开启美业 // 获取套盒列表 let url = '/api/weshop/serviceGoods/list' let data = { store_id: getApp().globalData.setting.stoid, service_id: this.data.data.id, }; // 请求数据 getApp().promiseGet(url, { data: data, }).then(res => { if (res.data.code == 0) { console.log('请求成功套盒列表', res); self.setData({ taoheList: res.data.data, }); } else { throw (res); }; }).catch(err => {}); }; }; }); }, //---小于10的格式化函数---- // timeFormat(param) { // return param < 10 ? '0' + param : param; // }, //----倒计时函数----- countDown(time, prom_st) { if (!this.data.is_timer) return false; var th = this; // 获取当前时间,同时得到活动结束时间数组 var endTime = 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 = { day: this.timeFormat(day), hou: this.timeFormat(hou), min: this.timeFormat(min), sec: this.timeFormat(sec) } } else { if (th.data.prom_st == 0) { //var endTime2 = new Date(th.data.prom_end_time).getTime(); var endTime2 = th.data.prom_act.end_time; th.setData({ prom_time_text: '距结束还剩:', prom_st: 1 }) setTimeout(function () { th.countDown(endTime2) }, 1000); return false; } 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(endTime) }, 1000); }, get_normal(gid) { this.setData({ prom_type: 0, }); // this.get_sku(os.stoid, this.data.data, gid); this.get_sto(); // this.check_is_youhui(gid, 1); this.data.is_normal = 1; }, //获取redis中的数量 async getactLen() { let prom_type = this.data.options.prom_type; let prom_id = this.data.options.prom_id; return await getApp().request.promiseGet("/api/weshop/activitylist/getActLen/" + os.stoid + "/" + prom_type + "/" + prom_id, { 1: 1 }).then(res => { if (res.data.code == 0) { // 当前可以购买的数量 let r_num = res.data.data; return r_num; }; }) }, //--------检查是否活动,活动是否开始,或者是否结束------- async check_prom(gid, prom_type, prom_id) { var ee = this, th = ee; var user_id = getApp().globalData.user_id; if (!user_id) user_id = 0; if (prom_type == 1 && prom_id == 0) { this.setData({ prom_type: 0 }); //获取门店 this.get_sto(); // this.get_sku(o.stoid, this.data.data, gid); this.check_has_flash(); this.data.is_normal = 1; // this.check_is_youhui(gid, 1); return false; } //---判断秒杀---- if (prom_type == 1 && prom_id > 0) { //-------判断活动是否抢光--------- await getApp().request.promiseGet("/api/weshop/activitylist/getActLen/" + os.stoid + "/" + prom_type + "/" + prom_id, { 1: 1 }).then(res => { var em = res; if (em.data.code == 0) { if (em.data.data <= 0) { th.setData({ prom_r_null: 1, goodsInputNum: res.data.data, }); // th.setData({goodsInputNum: redis_num}) }; //拿取价格并且判断时间-- getApp().request.get("/api/ms/flash_sale/getNew/" + os.stoid + "/" + user_id + "/" + prom_id, { success: function (t) { th.setData({ sele_g: t.data.data, }); if (t.data.code != 0) { ee.get_normal(gid); return false; } //----已经结束----- if (t.data.data.is_end == 1) { ee.get_normal(gid); return false; } //----已经过期----- var now = ut.gettimestamp(); if (t.data.data.end_time < now) { ee.get_normal(gid); return false; } /*-- 还没有开始预热的也不显示 --*/ if (t.data.data.show_time > now) { ee.get_normal(gid); return false; } var t_gd = ee.data.data; var prom_end_time = ut.formatTime(t.data.data.end_time, "yyyy-MM-dd hh:mm:ss"); var prom_start_time = ut.formatTime(t.data.data.start_time, "yyyy-MM-dd hh:mm:ss"); ee.setData({ prom_price: t.data.data.user_price, prom_type: 1, prom_id: prom_id, prom_buy_limit: t.data.data.buy_limit, prom_act: t.data.data, prom_end_time: prom_end_time, prom_start_time: prom_start_time, is_share_text: t.data.data.is_share_text }); ee.get_sto(); var newTime = ut.gettimestamp(); var endTime2 = t.data.data.end_time; var endTime1 = t.data.data.start_time; if (endTime1 > newTime) { ee.setData({ prom_time_text: '距秒杀开始还有', prom_st: 0, }) ee.countDown(endTime1, 0); } else { if (endTime2 > newTime) { ee.setData({ prom_time_text: '距秒杀结束还有', prom_st: 1 }) ee.countDown(endTime2); } } //如果是进行中的话 if (endTime1 < newTime) { //-- 获取秒杀活动的多少规格 -- ee.get_more_flash(function (list) { if (list && list.length > 1) { var n_item = list[0]; var ind = list.findIndex(function (ele) { return ele.goods_id == ee.data.data.goods_id; }) if (ind < 0) return false; if (ind > 0) { n_item = JSON.parse(JSON.stringify(list[ind])); list.splice(ind, 1); list.unshift(n_item); } ee.data.sele_g.viplimited = n_item.viplimited; ee.data.data.viplimited = n_item.viplimited; var gb = 1; //-- 显示多规格 -- for (let i in list) { let item = list[i]; var gg = ""; if (item.goods_spec == "null" || item.goods_spec == null) item.goods_spec = ""; if (item.goods_color == "null" || item.goods_color == null) item.goods_color = ""; if (item.goods_spec != "" && item.goods_color != "") { gg = item.goods_spec + "/" + item.goods_color; } else if (item.goods_spec != "" || item.goods_color != "") { gg = item.goods_spec + item.goods_color; } else { gg = "规格" + gb; gb++; } item.gg = gg; item.prom_id = item.prom_id; item.prom_type = 1; } ee.setData({ sku_g: list, }); } }) } } }); } }) } }, viewFlash(e) { let prom_type = e.currentTarget.dataset.promtype; let prom_id = e.currentTarget.dataset.promid; let goods_id = this.data.data.goods_id; let url = `/packageA/pages/goodsInfo/goodsInfo?goods_id=${goods_id}&prom_type=${prom_type}&prom_id=${prom_id}`; if(prom_type==6){ url = `/packageA/pages/serviceCard_pd/goodsInfo/goodsInfo?goods_id=${goods_id}&prom_type=${prom_type}&prom_id=${prom_id}`; } getApp().goto(url); }, //获取更多秒杀 get_more_flash: async function (func) { var f_more = false; var user_id = getApp().globalData.user_id; if (!user_id) user_id = 0; var url = "/api/weshop/goods/listSkuFlash?store_id=" + os.stoid + "&goods_id=" + this.data.options.goods_id + "&user_id=" + user_id; //获取秒杀的多规格 await getApp().request.promiseGet(url, {}).then(res => { if (res.data.code == 0 && res.data.data && res.data.data.length > 0) { f_more = res.data.data; } }) if (!f_more) { func(false); return false; } //-- 秒杀的价格要更新 -- for (let i in f_more) { let item = f_more[i]; f_more[i].prom_id = item.act_id; f_more[i].prom_type = 1; if (item.goods_id == this.data.data.goods_id) { continue; } var url = "/api/ms/flash_sale/getNew/" + os.stoid + "/" + user_id + "/" + item.act_id; await getApp().request.promiseGet(url, {}).then(rs => { if (rs.data.code == 0) { f_more[i].price = rs.data.data.user_price; } }) } func(f_more); }, //-------------获取购买数量的总函数---------------- get_buy_num: function (gd, func) { // var map = this.data.g_buy_num, var th = this, user_id = getApp().globalData.user_id; if (user_id == null) { // map.set(gd.goods_id, 0); th.setData({ // g_buy_num: map, prom_buy_num: 0, }); "function" == typeof func && func(); return false; } // if (map.has(gd.goods_id)) { // "function" == typeof func && func(); // } else { //----获取商品购买数---- if (th.data.prom_type == 1) { //----获取活动购买数---- getApp().request.promiseGet("/api/weshop/rechargeServicelist/getUserBuyGoodsNum", { data: { store_id: os.stoid, user_id: user_id, card_id: th.data.options.goods_id, prom_type: th.data.options.prom_type, prom_id: th.data.options.prom_id }, //-----获取----- success: function (tt) { if (tt.data.code == 0) { // map.set(gd.goods_id, g_buy_num); th.setData({ // g_buy_num: map, promcardbuynum: tt.data.data.promcardbuynum, cardbuynum: tt.data.data.cardbuynum, }); "function" == typeof func && func(); } } }); } else { "function" == typeof func && func(); }; }, get_buy_num2: async function () { // var map = this.data.g_buy_num, var th = this, user_id = getApp().globalData.user_id; // if (user_id == null) { // // map.set(gd.goods_id, 0); // th.setData({ // // g_buy_num: map, // prom_buy_num: 0, // }); // "function" == typeof func && func(); // return false; // } //----获取商品购买数---- //----获取活动购买数---- return await getApp().request.promiseGet("/api/weshop/rechargeServicelist/getUserBuyGoodsNum", { data: { store_id: os.stoid, user_id: user_id, card_id: th.data.options.goods_id, prom_type: th.data.options.prom_type, prom_id: th.data.options.prom_id, isnew:1 }, //-----获取----- success: function (tt) { if (tt.data.code == 0) { // map.set(gd.goods_id, g_buy_num); th.setData({ // g_buy_num: map, promcardbuynum: tt.data.data.promcardbuynum, cardbuynum: tt.data.data.cardbuynum, }); } } }); }, // 促销 -> 送礼包 -> 查看详情 viewLbDetails(e) { let id = e.currentTarget.dataset.id; // 获取礼包id let url = `/packageA/pages/myGiftDetails/myGiftDetails?btn=0&index=0&id=${id}`; // btn=0 控制跳转到的页面不显示按钮 // console.log('myurl', url); getApp().goto(url); }, go_more_ladder: function (e) { var prom_id = e.currentTarget.dataset.id; getApp().goto("/pages/goods/goodsList/goodsList?ladder_id=" + prom_id); }, getHistoryBuy() { let _this = this; let req_data = { store_id: os.stoid, goods_id: this.data.gid, pay_status: 1, rndid: 1 }; getApp().request.promiseGet('/api/weshop/ordergoods/list', { data: req_data, }) .then(res => { if (t.ajax_ok(res)) { _this.setData({ historyBuyInfo: res.data.data.pageData, }) } }) }, //-- 秒杀的普通购买 -- openSpecModel_Nor: function () { var th=this; if(th.data.get_sto_ing) return false; // 是否授权登陆 var user_info = getApp().globalData.userInfo; if (user_info == null || user_info.mobile == undefined || user_info.mobile == "" || user_info.mobile == null) { wx.navigateTo({ url: '/packageE/pages/togoin/togoin', }) return false; } this.data.g_buy_num = new Map(); var th = this; this.setData({open_ind_store: 5, goodsInputNum: 1});//拼团直接给4 this.setData({openSpecModal_flash_normal: 1}); this.get_sto(1) // if (th.data.sku_g_pt) { // // this.get_sto(1) // this.setData({openSpecModal_flash_normal: 1}); // } else { // th.get_sto(1); // th.get_sku(o.stoid, th.data.data, th.data.gid, 1, function () { // th.setData({ // openSpecModal_flash_normal: 1 // }); // }); // } // this.check_is_youhui(th.data.gid, 1); }, closeSpecModal_flash_normal: function () { this.setData({openSpecModal_flash_normal: 0,is_normal:0}); }, //打开客服操作菜单 openCS() { // 判断会员状态 let user_info = getApp().globalData.userInfo; if (user_info == null || user_info.mobile == undefined || user_info.mobile == '' || user_info.mobile == null) { wx.navigateTo({ url: '/packageE/pages/togoin/togoin', }) return false; }; // csType/在线客服设置: // 0关闭(如果有设置热线电话,则显示拨打热线电话)、 // 1小程序客服、 // 2企业微信客服 if(this.data.sys_switch) { let csType = this.data.sys_switch.weapp_customertype; if(csType == 0) { // 拨打电话号码 this.contactService(); } else { this.getTel() .then(() => { self.setData({ hiddenCS: false, }); }); }; }; }, //关闭客服操作菜单 closeCS() { this.setData({ hiddenCS: true, }); }, click_contact:function () { getApp().globalData.no_clear=1; }, //打开客服操作菜单 openCS() { // csType/在线客服设置: // 0关闭(如果有设置热线电话,则显示拨打热线电话)、 // 1小程序客服、 // 2企业微信客服 let csType = this.data.sys_switch.weapp_customertype; if(csType == 0) { // 获取电话号码 this.contactService(); } else { this.getTel() .then(() => { self.setData({ hiddenCS: false, }); }); }; }, //关闭客服操作菜单 closeCS() { this.setData({ hiddenCS: true, }); }, //-- 弹出框的同意的优化,重新获取定位 --- agree_pri:function (){ var th=this; var bconfig = th.data.bconfig; if (bconfig && bconfig.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; th.setData({is_gps: 1}); th.get_sto(); }, fail: function (res) { th.data.is_get_local_ok = 1; th.get_sto(); if (res.errCode == 2) { th.setData({is_gps: 0}); if (th.data.is_gps == 0) { getApp().confirmBox("请开启GPS定位", null, 25000, !1); } } else { th.setData({is_gps: "3"}); } } }) } }, clickShare() { this.setData({ share_hidden: true, }); }, send() { this.setData({ share_hidden: false, }); }, cancel() { this.setData({ share_hidden: false, }); }, saveImageFn(){ if(this.data.share_b_img){ this.saveImageToPhotosAlbum() }else{ this.saveImageToPhotosAlbumDef() } }, //--定义的保存图片方法,分享团--- saveImageToPhotosAlbum: function () { //--先判断会员状态-- // var user_info = getApp().globalData.userInfo; // if (user_info == null || user_info.mobile == undefined || user_info.mobile == "" || user_info.mobile == null) { // //getApp().my_warnning("请先登录",0,this); // wx.navigateTo({ url: '/packageE/pages/togoin/togoin', }) // return false; // } if (this.data.share_hidden) { this.setData({ share_hidden: false, }); }; //类型 0普通商品 1秒杀商品 2商家和会员团 3阶梯团 4阶梯团 var type = this.data.prom_type || 0; console.log('商品类型-----'); console.log(type); // if (type == 2) type = -1; if (type == 4) type = 0; if (type == 8) type = 0; if (type == 2) type = 0; if (type == 6) type = 2; // 6拼团 2团购 if (type == 10) type = -1; wx.showLoading({ title: '生成中...', }) var that = this, th = that; //设置画板显示,才能开始绘图 that.setData({ canvasHidden: false }) var app = getApp(); var unit = that.data.screenWidth / 750 * 1.35; //基础单位, var path2 = that.data.data.original_img; var scene = th.data.gid; var user_id = getApp().globalData.user_id ? getApp().globalData.user_id : 0; if (user_id > 0) { scene += "_" + user_id; } //-- 如果不是会员分享过来的要分享给别人 -- if (getApp().globalData.room_id && th.data.data.goods_id == getApp().globalData.room_goods_id && !getApp().globalData.room_user_share) { //固定房间是第3个字符 if (!user_id) scene += "_0"; scene += "_" + getApp().globalData.room_id; }else{ if (!user_id) scene += "_0"; scene += "_0"; } if(this.data.prom_type){ scene += "_" + this.data.prom_type+"_"+th.data.prom_id; } ///二微码 var path3 = os.url + "/api/wx/open/app/user/getWeAppEwm/" + os.stoid + "?sceneValue=" + scene + "&pageValue=packageA/pages/goodsInfo/goodsInfo"; console.log(path3); //读取文件成功则OK-- wx.getImageInfo({ src: path3, success: function (res) { //回调写法 th.get_head_temp(th.get_goods_temp, function () { var vpath = res.path; var context = wx.createCanvasContext('share'); //先画背景 var pg_path = "../../../images/share/share_bg.png"; //-- 如果有自定义海报的时候,判断背景的图片 -- if (th.data.share_b_img) { pg_path = th.data.share_b_img; } context.drawImage(pg_path, 0, 0, 554 * unit, 899 * unit); let nick=app.globalData.userInfo?app.globalData.userInfo.nickname:''; //-- 是自定义海报的情况下 -- if (th.data.poster && parseInt(th.data.poster.style) == 2) { //在线上分享人的情况下 if (parseInt(th.data.poster.show_headpic)) { //获取坐标 var x = parseFloat(th.data.poster.head_x) * 2; var y = parseFloat(th.data.poster.head_y) * 2; var x1 = (x + 90) * unit; var y1 = (y + 50) * unit; //--昵称--- context.setFontSize(24 * unit) context.setFillStyle("black") context.fillText(nick, x1, y1); var width = 24 * nick.length * unit + 4 * unit; //强烈推荐 改许程 var tj_path = "../../../images/share/q_tj.png"; context.drawImage(tj_path, x1 + width, y1 - 22 * unit, 85 * unit, 30 * unit); context.setFontSize(16 * unit) context.setLineJoin('round'); //交点设置成圆角 context.setFillStyle("white") context.fillText('强烈推荐', x1 + width + 8 * unit, y1 - 1 * unit); //context.setFillStyle("black") //context.setFontSize(24 * unit) //context.fillText(getApp().globalData.config.store_name, 40 * unit, 130 * unit); } } else { //--昵称--- context.setFontSize(24 * unit) context.setFillStyle("black") context.fillText(nick, 152 * unit, 76 * unit); var width = 24 * nick.length * unit + 2 * unit; //强烈推荐 改许程 var tj_path = "../../../images/share/q_tj.png"; context.drawImage(tj_path, 152 * unit + width, 54 * unit, 85 * unit, 30 * unit); context.setFontSize(16 * unit); context.setLineJoin('round'); //交点设置成圆角 context.setFillStyle("white"); context.fillText('强烈推荐', 149 * unit + width + 15 * unit, 75 * unit); } var share_title = th.data.data.goods_name; if (th.data.prom_type == 1 || th.data.prom_type == 2 || th.data.prom_type == 6 || th.data.prom_type == 4) { share_title = th.data.prom_act.share_title; if (!share_title) share_title = th.data.prom_act.title; if (th.data.prom_type == 4) share_title = th.data.prom_act.name; //-- 显示活动时间 -- if (th.data.share_b_img) { act_time = "截止时间:" + ut.formatTime(th.data.prom_act.end_time); } } //---产品名称--- //文本换行 参数:1、canvas对象,2、文本 3、距离左侧的距离 4、距离顶部的距离 5、6、文本的宽度 context.setFillStyle("black"); context.setFontSize(21.3 * unit) th.draw_Text(context, share_title, 80 * unit, 160 * unit, 200 * unit, 279 * unit, unit); //------产品的价格------- context.setFontSize(23 * unit) context.setFillStyle("red") // 7.商品价格 let price = th.data.data.shop_price; if (th.data.card_field && th.data.data[th.data.card_field]) { price = th.data.data[th.data.card_field]; } if (th.data.prom_act) price = th.data.prom_price; price = parseFloat(price).toFixed(2); var wd1 = th.data.screenWidth - ut.measureText(price, 31 * unit) - 25; context.fillText("¥", wd1 - 15, 160 * unit); context.setFontSize(31 * unit) context.fillText(price, wd1, 165 * unit); //---市场价划掉--- // context.setFillStyle("red") // context.setFontSize(22 * unit) // pri0 = "¥" + th.data.data.market_price.toFixed(2); // var wd2 = th.data.screenWidth - ut.measureText(pri0, 22 * unit) - 25; // context.setStrokeStyle('gray'); // context.fillText(pri0, wd2, 213 * unit); // context.setLineWidth(1 * unit); // context.moveTo(wd2 - 5, 206 * unit); // context.lineTo(wd2 + ut.measureText(pri0, 22 * unit) + 5, 206 * unit); // context.stroke(); //-- 零售价的优化 -- var wp = wd1; var hp = 203 * unit; if (th.data.prom_type != 4) wp -= 12; th.draw_pos_price(context,wp,hp,th.data.data.show_price,unit); //console.log(th.data.share_goods_img); //let share_goods_img=th.data.presellForm.share_img; //share_goods_img?share_goods_img:th.data.data.share_goods_img; //---中间大图--- context.drawImage(th.data.share_goods_img, 70 * unit, 220 * unit, 408 * unit, 408 * unit); //---自定义海报 产品质量保证 if(th.data.poster.show_quality==1 ){ var g_path = "../../../images/share/s_gou.png"; context.drawImage(g_path, 56 * unit, 644 * unit, 22 * unit, 22 * unit); context.setFillStyle("red") context.setFontSize(18 * unit) context.fillText("正品保证", 84 * unit, 664 * unit); context.drawImage(g_path, 218 * unit, 644 * unit, 22 * unit, 22 * unit); context.setFillStyle("red") context.setFontSize(18 * unit) context.fillText("纯实体店", 246 * unit, 664 * unit); context.drawImage(g_path, 388 * unit, 644 * unit, 22 * unit, 22 * unit); context.setFillStyle("red") context.setFontSize(18 * unit) context.fillText("官方验证", 420 * unit, 664 * unit); } //---画线--- // context.setLineWidth(1 * unit) // context.moveTo(32 * unit, 662 * unit) // context.lineTo(520 * unit, 662 * unit) // context.stroke(); //-- 图片底部文字 -- switch (type){ case 0: //---文字--- //---文字--- context.setFillStyle("black"); context.setFontSize(22 * unit); context.fillText("优惠乐翻天,精彩就在你身边", 40 * unit, 776 * unit); context.fillText("长按识别二维码,立即开始抢购", 40 * unit, 826 * unit); break; case 1: //画秒杀的图片 if (th.data.is_share_text) { var miaos_path = '../../../images/share/miao_share.png'; context.drawImage(miaos_path, 43 * unit, 690 * unit, 222 * unit, 40 * unit); } context.setFillStyle("black") context.setFontSize(24 * unit) context.fillText(th.data.sto_sele_name_1, 40 * unit, 770 * unit); //---文字--- context.setFontSize(22 * unit) context.setFillStyle("black") if (th.data.is_share_text) { context.fillText("特惠好物,限时秒杀", 40 * unit, 807 * unit); } context.fillText("长按识别二维码,立即开始抢购", 40 * unit, 844 * unit); break; } //---二维吗图--- //-- 自定义海报 -- if (th.data.poster) { var erm_x = parseFloat(th.data.poster.ewm_x) * 2; var erm_y = parseFloat(th.data.poster.ewm_y) * 2; context.drawImage(vpath, erm_x * unit, erm_y * unit, 136 * unit, 136 * unit); } else { //---二维吗图--- context.drawImage(vpath, 390 * unit, 746 * unit, 130 * unit, 116 * unit); } //--- 如果是自定义海报的时候 --- if (th.data.poster && parseInt(th.data.poster.style) == 2) { //如果显示会员信息的话 if (parseInt(th.data.poster.show_headpic)) { //获取坐标 var x = parseFloat(th.data.poster.head_x) * 2; var y = parseFloat(th.data.poster.head_y) * 2; //---绘制圆形要放在最后---- context.save(); context.beginPath(); var h_x = x * unit; var h_y = y * unit; var h_r = 40 * unit; var cx = h_x + h_r; var cy = h_y + h_r; context.arc(cx, cy, h_r, 0, Math.PI * 2, false); context.closePath(); context.fill(); context.clip(); context.drawImage(th.data.share_head, h_x, h_y, h_r * 2, h_r * 2); context.restore(); } } else { //---绘制圆形要放在最后---- context.save(); context.beginPath(); var h_x = 60 * unit; var h_y = 24 * unit; var h_r = 40 * unit; var cx = h_x + h_r; var cy = h_y + h_r; context.arc(cx, cy, h_r, 0, Math.PI * 2, false); context.closePath(); context.fill(); context.clip(); context.drawImage(th.data.share_head, h_x, h_y, h_r * 2, h_r * 2); context.restore(); } if(th.data.poster.show_time==1 && th.data.prom_act){ var act_time=''; act_time="截止时间:"+ ut.formatTime(th.data.prom_act.end_time); context.setFillStyle("red") getApp().draw_Text(context, act_time,38 * unit, 880 * unit, 200 * unit, 340 * unit, unit); } //把画板内容绘制成图片,并回调 画板图片路径 context.draw(false, function () { setTimeout(function () { wx.canvasToTempFilePath({ x: 0, y: 0, width: 750, height: 1217, destWidth: 1.2 * 750 * 750 / that.data.screenWidth, destHeight: 1.2 * 1217 * 750 / that.data.screenWidth, canvasId: 'share', success: function (res) { that.setData({ shareImgPath: res.tempFilePath, canvasHidden: true }) if (!res.tempFilePath) { wx.showModal({ title: '提示', content: '图片绘制中,请稍后重试', showCancel: false }) return false; } // wx.previewImage({ // //将图片预览出来 // urls: [that.data.shareImgPath] // }); that.setData({ showPoster: true, }); wx.hideLoading(); } }) }, 500) }); }); }, fail: function (res) { console.log(res); wx.hideLoading(); } }); }, //--定义的保存图片方法,分享团--- saveImageToPhotosAlbumDef: function () { //--先判断会员状态-- // var user_info = getApp().globalData.userInfo; // if (user_info == null || user_info.mobile == undefined || user_info.mobile == "" || user_info.mobile == null) { // //getApp().my_warnning("请先登录",0,this); // wx.navigateTo({url: '/packageE/pages/togoin/togoin',}) // return false; // } if (this.data.share_hidden) { this.setData({share_hidden: false,}); }; //类型 0普通商品 1秒杀商品 2商家和会员团 3阶梯团 4阶梯团 var type = this.data.prom_type || 0; console.log('商品类型-----'); console.log(type); // if (type == 2) type = -1; if (type == 4) type = 0; if (type == 8) type = 0; if (type == 2) type = 0; if (type == 6) type = 2; // 6拼团 2团购 if (type == 10) type = -1; if (this.data.prom_act && this.data.prom_act.kttype == 3) type = 3; console.log('商品类型。。。。。'); console.log(type); wx.showLoading({title: '生成中...',}) var that = this, th = that; //设置画板显示,才能开始绘图 that.setData({ canvasHidden: false }) var app = getApp(); var unit = that.data.screenWidth / 750 * 1.35; //基础单位, var path2 = that.data.data.original_img; var scene = th.data.gid; var user_id = getApp().globalData.user_id ? getApp().globalData.user_id : 0; if (user_id > 0) { scene += "_" + user_id; } //-- 如果不是会员分享过来的要分享给别人 -- if (getApp().globalData.room_id && th.data.data.goods_id == getApp().globalData.room_goods_id && !getApp().globalData.room_user_share) { //固定房间是第3个字符 if (!user_id) scene += "_0"; scene += "_" + getApp().globalData.room_id; }else{ if (!user_id) scene += "_0"; scene += "_0"; } if(this.data.prom_type){ scene += "_" + this.data.prom_type+"_"+th.data.prom_id; } ///二微码 var path3 = os.url + "/api/wx/open/app/user/getWeAppEwm/" + os.stoid + "?sceneValue=" + scene + "&pageValue=packageA/pages/goodsInfo/goodsInfo"; console.log(path3); // 读取文件成功则OK-- wx.getImageInfo({ src: path3, success: function (res) { // 回调写法 th.get_head_temp(th.get_goods_temp, function () { var vpath = res.path; var context = wx.createCanvasContext('share'); // 先画背景 var pg_path = "../../../../images/share/share_bg.png"; th.drawPoster(context, unit, th.data.share_goods_img, vpath, type); //把画板内容绘制成图片,并回调 画板图片路径 context.draw(false, function () { setTimeout(function () { wx.canvasToTempFilePath({ x: 0, y: 0, width: 750, height: 1217, destWidth: 1.2 * 750 * 750 / that.data.screenWidth, destHeight: 1.2 * 1217 * 750 / that.data.screenWidth, canvasId: 'share', success: function (res) { that.setData({ shareImgPath: res.tempFilePath, canvasHidden: true }) if (!res.tempFilePath) { wx.showModal({ title: '提示', content: '图片绘制中,请稍后重试', showCancel: false }) return false; } that.setData({ showPoster: true, }); wx.hideLoading(); } }) }, 500) }); }); }, fail: function (res) { console.log(res); wx.hideLoading(); } }); }, //文本换行 参数:1、canvas对象,2、文本 3、距离左侧的距离 4、距离顶部的距离 5、6、文本的宽度 draw_Text: function (ctx, str, leftWidth, initHeight, titleHeight, canvasWidth, unit) { var lineWidth = 0; var lastSubStrIndex = 0; //每次开始截取的字符串的索引 var han = 0; for (let i = 0; i < str.length; i++) { if (han == 2) return; //lineWidth += ctx.measureText(str[i]).width; lineWidth += ut.measureText(str[i], 21.3 * unit); if (lineWidth > canvasWidth) { han++; if (han == 2) ctx.fillText(str.substring(lastSubStrIndex, i) + '...', leftWidth, initHeight); //绘制截取部分 else ctx.fillText(str.substring(lastSubStrIndex, i), leftWidth, initHeight); initHeight += 22; //22为字体的高度 lineWidth = 0; lastSubStrIndex = i; titleHeight += 20; } if (i == str.length - 1) { //绘制剩余部分 ctx.fillText(str.substring(lastSubStrIndex, i + 1), leftWidth, initHeight); } } }, drawPoster(context, unit, img, vpath, type) { // 1.灰色背景 context.setFillStyle('#f2f1f6'); context.rect(0, 0, 554 * unit, 899 * unit); context.fill(); // 2.商城名称 let shopName = this.data.sto_sele_name_1; context.setTextAlign('center'); context.setFontSize(26 * unit); context.setFillStyle('black'); context.fillText(shopName, 277 * unit, 60 * unit); // 3.推荐来源 if(getApp().globalData.userInfo) { let fromText = `来自${getApp().globalData.userInfo.nickname}的推荐`; context.setTextAlign('center'); context.setFontSize(22 * unit); context.setFillStyle('#96959a'); context.fillText(fromText, 277 * unit, 105 * unit); } // 4.海报背景 context.setFillStyle('white'); context.fillRect(37 * unit, 157 * unit, 480 * unit, 673 * unit); // 5.商品图片 // 图片的x坐标 let bg_x = 37 * unit // 图片的y坐标 let bg_y = 157 * unit // 图片宽度 let bg_w = 480 * unit // 图片高度 let bg_h = 474 * unit // 图片圆角 let bg_r = 4 // 绘制海报背景图片圆角 context.save() context.beginPath() context.arc(bg_x + bg_r, bg_y + bg_r, bg_r, Math.PI, Math.PI * 1.5) context.arc(bg_x + bg_w - bg_r, bg_y + bg_r, bg_r, Math.PI * 1.5, Math.PI * 2) context.arc(bg_x + bg_w, bg_y + bg_h, bg_r, 0, Math.PI * 0.5) context.arc(bg_x, bg_y + bg_h, 0, Math.PI * 0.5, Math.PI) context.clip() context.drawImage(img, bg_x, bg_y, bg_w, bg_h); context.restore(); // 6.强烈推荐 let src = ''; context.beginPath(); if (type == 0) { // 普通 src = '../../../images/share/q_tj.png'; context.drawImage(src, 54 * unit, 648 * unit, 85 * unit, 30 * unit); context.setFontSize(16 * unit) context.setFillStyle("white") context.setTextAlign('left'); context.fillText('强烈推荐', 64 * unit, 668 * unit); } if (type == 1) { // 秒杀 if (this.data.is_share_text == 1) { src = '../../../images/share/miao_share.png'; context.drawImage(src, 54 * unit, 648 * unit, 200 * unit, 36 * unit); } context.setTextAlign('left'); } // 7.商品价格 let price = this.data.data.shop_price; if (this.data.card_field && this.data.data[this.data.card_field]) { price = this.data.data[this.data.card_field]; } if (this.data.prom_act) price = this.data.prom_price; price = parseFloat(price).toFixed(2); context.setFontSize(32 * unit); context.setFillStyle('#DE1117'); //price = this.data.presellList.presell_price context.fillText('¥' + price, 54 * unit, 735 * unit); //-- 零售价的优化 -- var wp= 62 * unit+ut.measureText('¥' + price, 32 * unit); var hp=735 * unit this.draw_pos_price(context,wp,hp,this.data.data.show_price,unit); // 8.商品标题 context.setFontSize(20 * unit); context.setFillStyle('#898989'); getApp().draw_Text(context, this.data.data.goods_name, 54 * unit, 800 * unit, 240 * unit, 280 * unit, unit, 1); // 9.小程序码 context.drawImage(vpath, 375 * unit, 660 * unit, 120 * unit, 120 * unit); context.setFontSize(16 * unit); context.setFillStyle('#777'); context.fillText('长按识别二维码', 378 * unit, 810 * unit); // 10.竖线 context.beginPath(); context.setFillStyle('#eee'); context.rect(354 * unit, 670 * unit, 1 * unit, 130 * unit); context.fill(); }, //---市场价划掉--- draw_pos_price(context,w,h,market_price,unit){ if(!this.data.sys_switch) return false; if(!this.data.sys_switch.is_retail_price) return false; context.setFillStyle("gray") context.setFontSize(22 * unit) var pri0 = "¥" + market_price.toFixed(2); context.fillText(pri0, w, h); var c_h=h-6; context.setStrokeStyle('gray'); context.setLineWidth(1 * unit); context.moveTo(w - 5, c_h); context.lineTo(w + ut.measureText(pri0, 22 * unit) + 5, c_h); context.stroke(); }, closePoster() { this.setData({ showPoster: false, }); }, // 保存图片到手机 savePic() { console.log('保存图片'); var self = this; // 获取用户的当前设置,返回值中有小程序已经向用户请求过的权限 this.getSetting().then((res) => { // 判断用户是否授权了保存到相册的权限,如果没有发起授权 if (!res.authSetting['scope.writePhotosAlbum']) { this.authorize().then(() => { // 同意授权后保存下载文件 this.saveImage(self.data.shareImgPath) .then(() => { self.setData({ showPoster: false }); }); }) } else { // 如果已经授权,保存下载文件 this.saveImage(self.data.shareImgPath) .then(() => { self.setData({ showPoster: false }); }); } }) }, // 发起首次授权请求 authorize() { // isFirst 用来记录是否为首次发起授权, // 如果首次授权拒绝后,isFirst赋值为1 let isFirst = wx.getStorageSync('isFirst') || 0; return new Promise((resolve, reject) => { wx.authorize({ scope: 'scope.writePhotosAlbum', // 同意授权 success: () => { resolve(); }, // 拒绝授权,这里是用户拒绝授权后的回调 fail: res => { if (isFirst === 0) { wx.setStorageSync('isFirst', 1); wx.showToast({ title: '保存失败', icon: 'none', duration: 1000 }) } else { this.showModal(); } console.log('拒绝授权'); reject(); } }) }) }, // 保存图片到系统相册 saveImage(saveUrl) { var self = this; return new Promise((resolve, reject) => { wx.saveImageToPhotosAlbum({ filePath: saveUrl, success: (res) => { wx.showToast({ title: '保存成功', duration: 1000, }); self.setData({ showPlaybill: 'true' }); resolve(); }, fail: () => { wx.showToast({ title: '保存失败', duration: 1000, }); } }) }) }, // 预览海报 previewPoster() { getApp().globalData.no_clear = 1; wx.previewImage({ current: this.data.shareImgPath, // 当前显示图片的http链接 urls: [this.data.shareImgPath], // 需要预览的图片http链接列表 }); }, });