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, //门店选择的下标,地区选择之后的内页
userbuynum:false,//是否有超出购买次数,还是否可以购买。false 为可购买,true为不可购买
sales_map:{}, //线下销售的map
},
/**
* 生命周期函数--监听页面加载
*/
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;
getApp().globalData.guide_pick_id= res.data.data.pickup_id
}
})
}
},
//检测有没有导购分享的门店
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();
})
},
/**
* 生命周期函数--监听页面显示
*/
onShow: function () {
getApp().check_can_share();
getApp().is_Single_page(this, 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) {
//判断是否有限制购买次数
if(e.data.data.buy_limit !=0){
self.getUserBuyPromNum()
}
//-- 获取商品列表 --
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
})
}
})
})
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));
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,
});
//设置基本参数
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,
appoint_pick_keyid: json_d.appoint_pick_keyid
});
//-- 计算等级价相关 --
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
});
}
}
//获取购物车的内容
setTimeout(function(){
th.get_cart_val(e);
},1000)
})
} else {
//获取购物车的内容
setTimeout(function(){
th.get_cart_val(e);
},1000)
}
}, 1);
})
} else {
getApp().goto("/packageE/pages/togoin/togoin");
return false;
}
})
},
//获取用户参与活动的次数
getUserBuyPromNum(){
var userInfo = getApp().globalData.userInfo;
var url = `/api/weshop/ordergoods/getUserBuyPromNum?store_id=${os.stoid}&user_id=${userInfo.user_id}&prom_type=7&prom_id=${this.data.act.id}`;
getApp().request.get(url, {
success: (e)=>{
if (e.data.code == 0 && e.data.data) {
let userbuynum=e.data.data.userbuynum
if (userbuynum >=this.data.act.buy_limit && this.data.act.buy_limit !=0) {
this.setData({
userbuynum:true
})
}
} else {
}
}
});
},
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 () { getApp().globalData.no_clear=1;
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() {
getApp().globalData.no_clear=1;
var title = this.data.act.name;
var user_id=getApp().globalData.user_id;
if(!user_id) user_id=0;
var ob = {
title: title,
query: 'first_leader='+user_id+"&id=" + this.data.act.id
};
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("/packageE/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;
if(this.data.userbuynum){
wx.showToast({
title: '你已超出该活动购买次数!',
icon: 'none',
duration: 2000
})
return
}
//说明是加入购物车是时候
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.sele_g.zhqty) th.data.goodsInputNum = th.data.sele_g.zhqty;
}
//如果没有门店,活动商品的配送方式和门店的配送方式不一样
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.check_pk_store_conut(function(){
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,
});
}
}
})
}
},
//在启用线下的时候,要判断一下是不是有库存
async check_pk_store_conut(func,is_no_msg,gd,by_num){
var th=this;
if(this.data.sales_rules<2){
if(is_no_msg) return true;
else {
if(func) func();
return false;
}
}
//门店库存no
var pkno= gd && gd.pickup_no?gd.pickup_no:this.data.def_pick_store.pickup_no;
var pickup_id=gd && gd.pick_id?gd.pick_id:this.data.def_pick_store.pickup_id;
var lock = [];
var plist=null;
var good=gd || th.data.sele_g;
var buy_num=by_num || th.data.goodsInputNum;
if(this.data.sales_map[good.goods_id]){
var mp=this.data.sales_map[good.goods_id];
var lock_num=mp.lock_num;
var CanOutQty=mp.CanOutQty;
if (CanOutQty < lock_num +buy_num) {
if(!is_no_msg) {
wx.showToast({
title: "门店库存不足",
icon: 'none',
duration: 2000
})
}
return false;
}
if(is_no_msg) return true;
func();
}else {
//先读取门店的lock,采用链式写法,少用await
await getApp().request.promiseGet("/api/weshop/order/ware/lock/page", {
data: {store_id: os.stoid, wareId: good.goods_id, pageSize: 1000}
}).then(res => {
if (res.data.code == 0 && res.data.data.total > 0) {
lock = res.data.data.pageData
}
})
var dw_rq={ storageNos: pkno,wareIds: encodeURIComponent(good.erpwareid), storeId: os.stoid, pageSize: 2000};
if(this.data.sales_rules==3){
dw_rq.storageIds = encodeURIComponent(th.data.appoint_pick_keyid)
delete dw_rq.storageNos
}
//---通过接口获取门店的线下库存信息--
await getApp().request.promiseGet("/api/weshop/goods/getWareStorages", {
data:dw_rq
}).then(res => {
if (ut.ajax_ok(res)) {
plist = res.data.data.pageData[0];
}
})
if(!plist){
if(!is_no_msg) {
wx.showToast({
title: "该商品在门店未找到库存",
icon: 'none',
duration: 2000
})
}
return false;
}
var lock_num = th.find_lock_num(pickup_id, lock);
this.data.sales_map[good.goods_id]={
CanOutQty:plist.CanOutQty,
lock_num:lock_num
}
if (plist.CanOutQty < lock_num + buy_num) {
if(!is_no_msg) {
wx.showToast({
title: "该商品在门店未找到库存",
icon: 'none',
duration: 2000
})
}
return false;
}
if(is_no_msg) return true;
func();
}
},
find_lock_num(pick_id, lock) {
var lock_num = 0;
if (!lock) return 0;
if (lock.length < 0) return 0;
for (var i in lock) {
if (pick_id == lock[i].pickupId) {
lock_num += lock[i].outQty;
}
}
return lock_num;
},
/**
* 增加数量
*/
add(e) {
if(this.data.userbuynum){
wx.showToast({
title: '你已超出该活动购买次数!',
icon: 'none',
duration: 2000
})
return
}
var th = this;
var userInfo = getApp().globalData.userInfo;
if (!userInfo) {
getApp().goto("/packageE/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 = th.data.list[index];
this.data.sele_index = index;
th.data.goodsInputNum = th.data.sele_g.num + 1;
//必须是组合购买的超量
var is_zhqty=0;
if(th.data.goodsInputNum
= 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("/packageE/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)
th.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;
newd['guide_type'] = 3;
} else {
if (getApp().globalData.guide_id) {
newd['guide_id'] = getApp().globalData.guide_id;
newd['guide_type'] = 0;
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.list[index].num > 0) {
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,
state:0
};
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?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 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;
this.data.sales_map={};
return false;
}
//-- 判断一下库存 --
th.check_pk_store_conut(function(){
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?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 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("/packageE/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("/packageE/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;
var is_num_change=0;
if(num -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,
state:0
};
if (getApp().globalData.guide_id) {
updata['guide_id'] = getApp().globalData.guide_id;
updata['guide_type'] = 0;
}
if(is_num_change){
updata['goods_num']=num;
}
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) {
var bz_num_ok = 0; //超量倍增是否满足
var delete_num = 0;
var zhqty_len = 0; //几个超量倍增
var be = parseInt(no_in_arr.length / this.data.act.zhbuyqty); //看一下是几倍
if (this.data.act.is_bzyh && zhqty_bz.length > 0) {
if (zhqty_bz.length > 1) {
let zhqty_bz_arr = [];
let zhqty_bz_flag = this.zhqty_bz_fun(zhqty_bz, be, zhqty_bz_arr);
if (zhqty_bz_flag) {
for (let i = 0; i < zhqty_bz.length; i++) {
var vv = zhqty_bz[i];
for (let j = 0; j < be * vv['zhqty']; j++) {
let index = no_in_arr.findIndex(i => {
return vv.goods_id === i.goods_id
})
if (index > -1) {
delete_num++
no_in_arr.splice(index, 1)
}
}
}
} else {
zhqty_len = 1;
let min_bz_num = Math.min.apply(Math, zhqty_bz_arr.map(function (o) {
return o['num'];
}));
let new_arr = zhqty_bz_arr.filter(ii => {
return ii['num'] == min_bz_num;
})
var vv = new_arr[0];
var bz_num = be * new_arr[0].zhqty; //超量倍增
var num = min_bz_num - new_arr[0].zhqty; //购买数量减去超量
bz_num_ok = bz_num - num;
if (bz_num_ok <= 0) {
//超量倍增满足,超量倍增就等于倍数
bz_num_ok = bz_num;
} else {
//超量倍增不满足,倍数要减去多出得
// be=be-bz_num_ok;
if (num % vv.zhqty == 0) {
be = num / vv.zhqty;
} else {
be = Math.floor(num / vv.zhqty)
}
bz_num_ok = be * vv.zhqty;
}
for (let i = 0; i < zhqty_bz.length; i++) {
let item1 = zhqty_bz[i];
for (let j = 0; j < be * item1['zhqty']; j++) {
let index = no_in_arr.findIndex(i => {
return item1.goods_id === i.goods_id
})
if (index > -1) {
// delete_num++
no_in_arr.splice(index, 1)
}
}
}
aprice += be * aprice;
}
} else {
var vv = zhqty_bz[0];
var bz_num = be * vv.zhqty; //超量倍增
var num = vv['num'] - vv.zhqty; //购买数量减去超量
if (num > 0) {
bz_num_ok = bz_num - num;
if (bz_num_ok <= 0) {
//超量倍增满足,超量倍增就等于倍数
bz_num_ok = bz_num;
} else {
//超量倍增不满足,倍数要减去多出得
// be=be-bz_num_ok;
if (num % vv.zhqty == 0) {
be = num / vv.zhqty;
} else {
be = Math.floor(num / vv.zhqty)
}
bz_num_ok = be * vv.zhqty;
}
for (let j = 0; j < bz_num_ok; j++) {
let index = no_in_arr.findIndex(i => {
return vv.goods_id === i.goods_id
})
if (index > -1) {
delete_num++
no_in_arr.splice(index, 1)
}
}
} else {
zhqty_len = 1;
}
}
}
if (!zhqty_len) {
//多个超量就不用pop了
aprice += be * aprice;
let pop_num = be * this.data.act.zhbuyqty - delete_num;
for (var m = 0; m < pop_num; m++) {
no_in_arr.pop();
}
}
}
//算一下剩余的钱
if (no_in_arr.length) {
for (var ii in no_in_arr) {
var item = no_in_arr[ii];
aprice += item.price;
}
}
all_price = aprice;
}
this.data.changing = 0;
this.setData({
all_price: all_price,
need_to_buy: need_to_buy,
all_num: all_num
})
if (all_num <= 0) {
this.data.sele_store = 0; //什么都没有选,就没有选择了门店
}
},
go_cart: function () {
getApp().goto("/pages/cart/cart/cart");
},
//获取购物车中,相应的门店已购买的商品
get_cart_val: function (e) {
var th = this;
var user_id = getApp().globalData.user_id;
var req = {
user_id: user_id,
store_id: os.stoid,
pageSize: 600,
state: 0,
prom_type: 7,
prom_id: this.data.act.id
};
//获取购物车列表
getApp().request.get("/api/weshop/cart/list", {
data: req,
success: async function (e) {
if(ut.ajax_ok(e)) {
var map = {};
var mlist = e.data.data.pageData;
th.data.cart_list = mlist;
for (let i in mlist) {
let item = mlist[i];
if (item.prom_type != 7) continue;
if (item.prom_id != th.data.act.id) continue;
if(th.data.def_pick_store && th.data.def_pick_store.pickup_id){
if(item.pick_id!=th.data.def_pick_store.pickup_id){
continue;
}
}
map[item.goods_id] = item;
}
//-- 循环活动的从表 --
for (let j in th.data.list) {
let item_j = th.data.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.pickup_no = map[item_j.goods_id].pickup_no;
item_j.pick_id = map[item_j.goods_id].pick_id;
//判断库存是不是存在
var can_qty=await th.check_pk_store_conut(null,1,item_j,cart_num);
if(!can_qty){
item_j.num=0;
continue;
}
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)
},
zhqty_bz_fun(zhqty_bz, be, zhqty_bz_arr) {
let zhqty_bz_flag = true;
for (let i = 0; i < zhqty_bz.length; i++) {
let item = zhqty_bz[i];
let bz_num = be * item['zhqty']; //超量倍增
let num = item['num'] - item['zhqty']; //购买数量减去超量
if (bz_num > num) {
zhqty_bz_flag = false;
zhqty_bz_arr.push(item);
// zhqty_bz.splice(i,1)
}
}
return zhqty_bz_flag;
}
})