const app = getApp()
|
var util = require('../../utils/util.js');
|
var api = require('../../utils/service-api.js');
|
var comReq = require('../../utils/common-request.js');
|
var shopcart = require('../../utils/shopcart.js');
|
|
|
//常量定义
|
//1页面进入未购买
|
const SHOW_MODEL_NOT_BUY = 1;
|
//2,未成团已购买进入 ,
|
const SHOW_MODEL_NOT_SUCCESS_BUY = 2;
|
//3,未成团邀请页面进入非购买,
|
const SHOW_MODEL_INVITED_NOT_BUY = 3;
|
//4 邀请进入已成团
|
const SHOW_MODEL_GROUP_EDN = 4;
|
//已经创建订单未支付
|
const SHOW_MODEL_HASJOIN_NOT_PAY=5;
|
|
|
|
|
Page({
|
data: {
|
userInfo: '', //用户信息
|
stardata: [1, 2, 3, 4, 5],
|
interval: 2000,
|
duration: 1000,
|
imgUrls: [],
|
imagetext: ['商品介绍', '规格与包装'],
|
currentTabsIndex: 0,
|
checkCollect: true,
|
goodsInfo: {},
|
normspopup: false,
|
currentIndex: 0,
|
id: '',
|
num: 1,
|
whetherSpecification: false, //是否选择规格
|
specification: '', //规格
|
specificationId: '', //规格id
|
specificationPrice: '', //规格价格
|
price: '', //价格
|
originalPrice: '', //划线价
|
normsList: [],
|
couponList: [],
|
activity: [], //满减活动
|
evaluateList: [], // 评论列表
|
evaluateNum: 0, // 评论数量
|
currentIndexs: 0,
|
currentIndex: 0,
|
hidden: false,
|
limit: 10,
|
offset: 0,
|
inform: true,
|
hidden: true,
|
shareShow: false,
|
cartProductId: "", //商品id
|
title: "", //商品名
|
imgSrc: "", //商品图片
|
isShare: 0,
|
qrcode: false,
|
isBuyed: false, //已经购买过
|
isInvited: true, //是通过邀请进入的
|
|
showModel: SHOW_MODEL_NOT_BUY,
|
gjId: null, //团队id
|
|
|
groupList: [], //所有未成团的团购列表
|
|
djsTime: {}, //倒计时
|
|
|
isFirst: 1,//是否第一次进入页面
|
|
},
|
|
onLoad: function(options) {
|
|
var _this = this;
|
var actId = options.id; //拼团活动id
|
var shopId = options.shopId;
|
var gjId = options.gjId; //团队id
|
var needGetShopInfo = false;
|
|
if (actId == undefined) {
|
//通过二维码进入
|
const scene = decodeURIComponent(options.scene);
|
var params = scene.split(",");
|
console.log("扫码参数", params);
|
shopId = params[0];
|
actId = params[1];
|
gjId = params[2];
|
|
app.shopInfo = {
|
id: shopId
|
};
|
needGetShopInfo = true;
|
}
|
|
|
//未获取到活动id
|
if (!actId) {
|
wx.showModal({
|
title: '提示',
|
content: '产品信息加载失败',
|
showCancel: false
|
})
|
return;
|
} else {
|
_this.setData({
|
id: actId
|
});
|
|
}
|
|
_this.setData({
|
gjId: gjId
|
});
|
|
//检测用户登录
|
if (!getApp().loginToken) {
|
|
util.userLogin(function() {
|
|
_this.getPageInfo(actId, gjId);
|
});
|
|
} else {
|
this.getPageInfo(actId, gjId);
|
|
}
|
|
//获取门店信息
|
if (needGetShopInfo) {
|
setShopInf(shopId);
|
}
|
|
},
|
|
/**
|
* 加载门店数据
|
*/
|
getPageInfo(actId, gjId) {
|
|
|
|
//获取拼团产品信息
|
this.getGroupProductInfo(actId);
|
//是否存在团队id
|
if (gjId) {
|
//如果存在团队id则必须展示这个团队的团购信息
|
this.getGroupJoinInfo(gjId);
|
|
} else {
|
//没有明确的团队id
|
this.getOwnerGroupBuyInfo(actId);
|
}
|
},
|
|
|
/**
|
* 根据当前登录人,查询组队信息
|
* 1、如果当前登录人没有 购买过则显示其他已经组队成功的团队信息
|
* 2、如果当前登录人购买了则展示当前登录人的团队信息
|
*/
|
getOwnerGroupBuyInfo(actId) {
|
console.log("getOwnerGroupBuyInfo");
|
var _this = this;
|
util.request({
|
api: api.groupBuy.findOwnerGroupBuyInfo + actId,
|
method: 'GET',
|
checkLogin: true,
|
callback: function(data) {
|
let grouping = data.mapInfo.grouping;
|
if (grouping == 2) {
|
_this.setData({
|
groupList: data.mapInfo.groupList,
|
showModel: SHOW_MODEL_NOT_BUY,
|
});
|
} else {
|
let myself=data.mapInfo.myself;
|
if(myself.isHasPay==2){
|
_this.setData({showModel: SHOW_MODEL_HASJOIN_NOT_PAY,orderId:myself.orderId});
|
}else{
|
_this.setData({showModel: SHOW_MODEL_NOT_SUCCESS_BUY,});
|
};
|
|
_this.setData({
|
ownerGroupInfo: data.mapInfo.ownerGroupInfo,
|
joinUserList: data.mapInfo.ownerGroupInfo.joinUserList,
|
gjId: data.mapInfo.ownerGroupInfo.id,
|
currentGrooupPrice: data.mapInfo.price,
|
remainingTime: data.mapInfo.ownerGroupInfo.remainingTime
|
});
|
_this.ptDjs();
|
}
|
}
|
});
|
},
|
|
|
/**
|
* 加载拼团组队的信息
|
*/
|
getGroupJoinInfo(gjId) {
|
console.log("getGroupJoinInfo");
|
var _this = this;
|
this.setData({
|
gjId: gjId
|
});
|
|
util.request({
|
api: api.groupBuy.findGroupJoinInfo + gjId,
|
method: 'GET',
|
checkLogin: true,
|
callback: function(data) {
|
let grouping = data.mapInfo.groupJoin;
|
|
let showModel = "";
|
|
|
if (data.mapInfo.isExist == 1) {
|
//当前用户已经是团中的成员
|
showModel = SHOW_MODEL_NOT_SUCCESS_BUY;
|
} else {
|
//当前用户不是团中的成员 和TA组队
|
showModel = SHOW_MODEL_INVITED_NOT_BUY;
|
|
}
|
|
|
|
|
|
//1 ,拼团成功 2拼团失败
|
if (grouping.gjStatus == 2 || grouping.gjStatus == 1) {
|
showModel = SHOW_MODEL_GROUP_EDN;
|
}else{
|
_this.setData({
|
remainingTime: grouping.remainingTime
|
});
|
_this.ptDjs();
|
}
|
|
|
|
_this.setData({
|
ownerGroupInfo: grouping,
|
showModel: showModel,
|
joinUserList: grouping.joinUserList,
|
currentGrooupPrice: data.mapInfo.price
|
|
});
|
|
|
|
}
|
});
|
|
},
|
|
|
/**
|
* 加载团购产品信息
|
*/
|
getGroupProductInfo(id) {
|
var _this = this;
|
//处理产品信息
|
util.request({
|
api: api.groupBuy.findGroupBuyInfo + id,
|
method: 'GET',
|
checkLogin: true,
|
callback: function(data) {
|
|
let goodsInfo = data.mapInfo.goodsInfo;
|
|
|
if (goodsInfo.mobileDetails != null) {
|
goodsInfo.mobileDetails = goodsInfo.mobileDetails.replace(/<img /g, '<img class="rich_img" ');
|
console.log(goodsInfo.mobileDetails);
|
}
|
_this.setData({
|
goodsInfo: goodsInfo,
|
imgUrls: goodsInfo.productImgs,
|
normsList: goodsInfo.skus,
|
specification: goodsInfo.skus[0].name,
|
specificationPrice: goodsInfo.skus[0].price,
|
price: goodsInfo.skus[0].price,
|
specificationId: goodsInfo.skus[0].id,
|
imgSrc: goodsInfo.imgMobile,
|
title: goodsInfo.title,
|
hidden: true,
|
activity: data.mapInfo.activity,
|
couponList: data.mapInfo.couponList,
|
evaluateNum: data.mapInfo.evaluateNum,
|
checkCollect: data.mapInfo.checkCollect,
|
})
|
|
|
//处理拼团信息
|
|
let groupBuyInfo = data.mapInfo.groupBuyInfo;
|
|
|
let currentGrooupPrice=null;
|
if (!_this.data.gjId) {
|
|
// 如果没有特定的拼团取第一个拼团
|
_this.setData({
|
currentGrooupPrice:groupBuyInfo.groupPriceList[0]
|
});
|
}
|
|
_this.setData({
|
groupPriceList: groupBuyInfo.groupPriceList,
|
//当前选中价格
|
currentGrooupPriceIndex: 0,
|
groupBuyInfo: groupBuyInfo,
|
});
|
|
|
|
|
//启动倒计时
|
_this.djs();
|
}
|
});
|
|
},
|
|
|
//从服务器加载门店信息
|
setShopInf(shopId) {
|
util.request({
|
api: api.yuyue.findShopInfoById + "/" + shopId,
|
callback: function(data) {
|
app.shopInfo = data.mapInfo.shopInfo;
|
},
|
checkLogin: true,
|
});
|
},
|
|
|
|
|
|
/**
|
*
|
* 切换团类型
|
*/
|
changeGroupType(e) {
|
let index = e.currentTarget.dataset.index;
|
let groupPriceList = this.data.groupPriceList;
|
|
this.setData({
|
currentGrooupPriceIndex: index,
|
currentGrooupPrice: groupPriceList[index],
|
});
|
|
},
|
|
|
|
|
/**
|
* 倒计时
|
*/
|
djs() {
|
var _this = this;
|
let time = _this.data.groupBuyInfo.time;
|
|
var interval = setInterval(function() {
|
time--;
|
if (time < 0) {
|
clearInterval(interval);
|
} else {
|
_this.setData({
|
djs: util.getTimeSpance(time),
|
time: time,
|
});
|
}
|
|
}, 1000);
|
},
|
|
/**
|
* 拼团支付倒计时
|
*/
|
ptDjs() {
|
var _this = this;
|
let remainingTime = _this.data.remainingTime;
|
|
var interval = setInterval(function () {
|
|
remainingTime--;
|
if (remainingTime < 0) {
|
clearInterval(interval);
|
} else {
|
_this.setData({
|
ptDjs: util.getTimeSpance(remainingTime),
|
remainingTime: remainingTime,
|
});
|
}
|
|
}, 1000);
|
},
|
|
|
onShow(options) {
|
|
if(this.data.isFirst!=1){
|
var actId = this.data.id;
|
var gjId = this.data.gjId;
|
this.getPageInfo(actId, gjId);
|
}else{
|
this.setData({isFirst:2});
|
}
|
|
},
|
// 回到首页
|
goBack() {
|
wx.switchTab({
|
url: '../index/index'
|
})
|
},
|
|
goIndex() {
|
wx.reLaunch({
|
url: '/pages/index/index'
|
})
|
},
|
//转发
|
onShareAppMessage(res) {
|
var index = this.data.index
|
var id = this.data.id;
|
var gjId = this.data.gjId;
|
var title = this.data.goodsInfo.title;
|
|
let url = "pages/groupbuy/groupDetails?id=" + id + "&shopId=" + app.shopInfo.id + "&gjId=" + gjId;
|
console.log(url);
|
|
|
if (res.from === "button") {}
|
return {
|
title: "[拼团]" + title,
|
imageUrl: this.data.imgUrls[0].imgPath,
|
path: url,
|
success(res) {
|
|
},
|
fail(res) {
|
|
}
|
}
|
},
|
|
|
/**
|
* 邀请好友
|
*/
|
invitaion() {
|
|
},
|
|
// 分享
|
share(e) {
|
this.setData({
|
shareShow: true,
|
popupShow: true
|
})
|
},
|
|
|
// 图文选项卡
|
onTabsItemEvent(e) {
|
var index = e.currentTarget.dataset.index;
|
// console.log(index)
|
this.setData({
|
currentTabsIndex: index
|
})
|
},
|
// 收藏
|
collect() {
|
var _this = this;
|
var id = _this.data.id;
|
util.request("POST", "/wxapi/Collection/saveCollection", {
|
"collProductid": id
|
}, function(data) {
|
if (data.status == 200) {
|
_this.setData({
|
checkCollect: true
|
})
|
}
|
|
}, false);
|
|
},
|
|
|
|
|
//规格选择
|
norms(e) {
|
var index = e.currentTarget.dataset.index;
|
var value = e.currentTarget.dataset.value;
|
var price = e.currentTarget.dataset.price;
|
var id = e.currentTarget.dataset.id;
|
this.setData({
|
currentIndex: index,
|
specification: value,
|
specificationPrice: price,
|
specificationId: id
|
|
})
|
},
|
|
|
// 显示规格
|
showNorms() {
|
this.setData({
|
whetherSpecification: true,
|
normspopup: true
|
})
|
},
|
|
|
//隐藏规格
|
cancelNorms() {
|
this.setData({
|
normspopup: false
|
})
|
},
|
|
|
/**
|
* 绑定加数量事件
|
*/
|
addCount(e) {
|
var _this = this;
|
let num = _this.data.num;
|
num = num + 1;
|
this.setData({
|
num: num
|
});
|
},
|
|
/**
|
* 绑定减数量事件
|
*/
|
minusCount(e) {
|
var _this = this;
|
let num = _this.data.num;
|
if (num <= 1) {
|
return false;
|
}
|
num = num - 1;
|
this.setData({
|
num: num
|
});
|
},
|
|
/**
|
* 单独购买
|
*/
|
singelBuy(e) {
|
this.setData({
|
buyType: 1
|
});
|
this.buy();
|
},
|
|
|
groupBuy(e) {
|
this.setData({
|
buyType: 2
|
});
|
this.buy();
|
},
|
|
|
/**
|
* 去参团
|
*/
|
joinBuy(e) {
|
let gjId=e.currentTarget.dataset.gjid;
|
|
this.setData({
|
buyType: 2,
|
gjId: gjId
|
});
|
this.buy();
|
},
|
|
|
|
// 立即购买
|
buy() {
|
var _this = this;
|
var userInfo = getApp().userInfo;
|
if (util.isBlank(userInfo.nickName)) {
|
wx.navigateTo({
|
url: '/pages/welcome/welcome?url=back',
|
})
|
}
|
|
|
//判断是否授权头像
|
|
|
// 判断是否绑定过手机号
|
if (util.isBlank(getApp().userInfo.phoneNumber)) {
|
wx.navigateTo({
|
url: '../phone/phone',
|
})
|
} else {
|
|
let goodsInfo = _this.data.goodsInfo;
|
|
if (!_this.data.whetherSpecification) {
|
console.log("存在多个规格,且没有选择过规格,弹出请选择");
|
_this.setData({
|
whetherSpecification: true,
|
normspopup: true
|
});
|
} else {
|
//隐藏规格
|
this.cancelNorms();
|
|
var id = _this.data.goodsInfo.id; // 商品id
|
var cartSkuId = _this.data.specificationId; //规格id
|
var cartNumber = _this.data.num; //数量
|
|
var stockNum = goodsInfo.stockNum;
|
if (stockNum < 1) {
|
wx.showToast({
|
title: "您来晚了,商品已经抢光了",
|
icon: 'none',
|
});
|
return;
|
}
|
|
|
if (_this.data.buyType == 1) {
|
//单独购买
|
//取消所有购物车选中项目
|
util.request({
|
method: "POST",
|
api: api.shoppingCart.updateCartAllSelected + app.shopInfo.id + "/2",
|
callback: function() {
|
//加入购物车
|
comReq.addShoppingCar(cartSkuId, cartNumber, function(totalNum) {
|
//进入结算
|
wx.navigateTo({
|
url: '/pages/service/shopOrder?model=2',
|
})
|
|
});
|
}
|
});
|
|
} else {
|
//拼团购买
|
let orderMsg = {
|
goodsInfo: _this.data.goodsInfo,
|
currentGrooupPrice: _this.data.currentGrooupPrice,
|
cartSkuId: cartSkuId,
|
cartNumber: cartNumber,
|
specification: _this.data.specification,
|
gjId: _this.data.gjId,
|
};
|
|
wx.setStorageSync("orderMsg", orderMsg);
|
//进入结算
|
wx.navigateTo({
|
url: '/pages/groupbuy/groupOrder',
|
})
|
|
|
}
|
|
|
|
}
|
}
|
|
|
|
},
|
// 轮播图预览保存
|
onSwiperEvent(e) {
|
let index = e.currentTarget.dataset.index;
|
let imgArr = [];
|
for (var i = 0; i < this.data.imgUrls.length; i++) {
|
imgArr.push(this.data.imgUrls[i].imgPath);
|
}
|
wx.previewImage({
|
current: imgArr[index],
|
urls: imgArr,
|
})
|
// console.log(1111)
|
console.log(imgArr[index])
|
},
|
//领券
|
couple(e) {
|
this.setData({
|
popup: true
|
})
|
},
|
//取消领券弹窗选择
|
popupTap(e) {
|
this.setData({
|
popup: false,
|
normspopup: false,
|
telShow: false,
|
shareShow: false
|
})
|
},
|
|
|
|
|
|
|
evaluate(e) {
|
wx.navigateTo({
|
url: '../wholeEvaluate/whoeEvaluate?id=' + e.currentTarget.dataset.id,
|
})
|
},
|
|
|
|
// 生成卡片跳转
|
card(e) {
|
var id = e.currentTarget.dataset.id
|
wx.navigateTo({
|
url: '../card/card?id=' + id,
|
})
|
},
|
|
|
|
/**
|
* 获取二维码
|
*/
|
getQrcode: function() {
|
|
var _this = this;
|
if (_this.data.qrcode) {
|
wx.previewImage({
|
current: _this.data.qrcode, // 当前显示图片的http链接
|
urls: [_this.data.qrcode] // 需要预览的图片http链接列表
|
})
|
} else {
|
|
var shopId = app.shopInfo.id;
|
var actId = _this.data.id;
|
var gjId = _this.data.gjId;
|
var gpId=_this.data.currentGrooupPrice.id;
|
var data = {
|
shopId: shopId,
|
actId: actId,
|
gpId: gpId,
|
scene: shopId + "," + actId,
|
path: "pages/groupbuy/groupDetails",
|
activityType:2,
|
};
|
|
if (gjId != undefined) {
|
data.gjId = gjId;
|
data.scene = data.scene+","+gjId;
|
}
|
|
|
|
util.request({
|
|
|
method: "POST",
|
data:data,
|
api: '/wxapi/shareProduct/getProductShareQrcode/',
|
callback: function(data2) {
|
|
|
var qrcode = data2.rows[0].qrcodeUrl
|
console.log(qrcode);
|
_this.setData({
|
qrcode: qrcode,
|
})
|
|
wx.previewImage({
|
current: _this.data.qrcode, // 当前显示图片的http链接
|
urls: [_this.data.qrcode], // 需要预览的图片http链接列表
|
success: function() {
|
|
wx.downloadFile({
|
url: _this.data.qrcode,
|
success: function(res) {
|
console.log(res);
|
//图片保存到本地
|
wx.saveImageToPhotosAlbum({
|
filePath: res.tempFilePath,
|
success: function(data) {
|
wx.showToast({
|
title: '保存成功',
|
icon: 'success',
|
duration: 2000
|
})
|
},
|
fail: function(err) {
|
console.log(err);
|
if (err.errMsg === "saveImageToPhotosAlbum:fail auth deny") {
|
console.log("当初用户拒绝,再次发起授权")
|
wx.openSetting({
|
success(settingdata) {
|
console.log(settingdata)
|
if (settingdata.authSetting['scope.writePhotosAlbum']) {
|
console.log('获取权限成功,给出再次点击图片保存到相册的提示。')
|
} else {
|
console.log('获取权限失败,给出不给权限就无法正常使用的提示')
|
}
|
}
|
})
|
}
|
},
|
complete(res) {
|
console.log(res);
|
}
|
})
|
}
|
})
|
}
|
})
|
|
|
}
|
})
|
|
|
}
|
|
|
},
|
|
/**
|
* 未支付进入支付页面
|
*/
|
goOrder(){
|
var _this = this;
|
wx.redirectTo({
|
url: '../orderDetails/orderDetails?id=' + _this.data.orderId,
|
})
|
},
|
|
|
/**
|
* 分享
|
*/
|
formSubmit: function(e) {
|
console.log('获取二维码:', e)
|
this.getQrcode()
|
},
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
})
|