740 lines
18 KiB
JavaScript
740 lines
18 KiB
JavaScript
var app = getApp();
|
|
var WxParse = require('../../../wxParse/wxParse.js');
|
|
let siftTop='';
|
|
let foshowTop='';
|
|
|
|
var share_tag = '-1'; // 顶部导航返回上一级按钮 标志
|
|
// 商品详情
|
|
|
|
Component({
|
|
properties: {
|
|
// 属性值可以在组件使用时指定
|
|
goodType: {
|
|
type: String
|
|
},
|
|
goodsId: {
|
|
type: Number
|
|
},
|
|
goodsType: {
|
|
type: String
|
|
},
|
|
|
|
hoet: {
|
|
type: null
|
|
},
|
|
|
|
boxHeight: {
|
|
type: Number
|
|
},
|
|
xqBoxShow: {
|
|
type: null
|
|
},
|
|
datop: {
|
|
type: null
|
|
},
|
|
ipnonexbol: {
|
|
type: null
|
|
},
|
|
activityid: {
|
|
type: null
|
|
},
|
|
},
|
|
data: {
|
|
language: '',
|
|
// 图片域名
|
|
imagUrl: 'https://mini-app-img-1251768088.cos.ap-guangzhou.myqcloud.com/',
|
|
current: 1,
|
|
|
|
datop: 1,
|
|
groupStock: 1, // 当前拼团商品的库存
|
|
|
|
// 判断显示限时还是结束
|
|
istime: false,
|
|
// 是否有更多评论
|
|
noMoreComment: false,
|
|
// 初始评论页数
|
|
commentPage: 1,
|
|
posterShow: false, // 商品分享二维码显示
|
|
hoet: false,
|
|
|
|
popStock: 0, // 库存
|
|
|
|
|
|
gooddatas: {}, // 总商品数据
|
|
goodsInfo: {}, // 商品详情信息
|
|
activityId: '', // 活动id
|
|
goodsId: '',
|
|
|
|
|
|
|
|
team: [], //成团信息
|
|
show1: false,
|
|
|
|
// 商品详情
|
|
first_content: '',
|
|
second_content: '',
|
|
third_content: [],
|
|
activeName: 'first',
|
|
end_time: '', // 截止结束时间
|
|
start_time: '', // 截止开始时间
|
|
// 轮播高度自适应
|
|
aheight: 750,
|
|
|
|
btnData: { // 侧边按钮定位
|
|
over_top: 500,
|
|
icon_url: "https://www.yunzmall.com//min_img/icon-fontclass-zhiding.png"
|
|
},
|
|
|
|
heightDome: '', // 高度
|
|
nowTime: '', // 现在的时间
|
|
iPnoneBottomBol: false,
|
|
isCheckActivity: true, //下单前检查客户今天是否超出限制
|
|
showGoodslist: false,
|
|
//活动是否结束
|
|
isTimeEnd: false,
|
|
begTimeStr: '',
|
|
//限时购据开始时间倒计时
|
|
beginDownObj: {
|
|
day: '00',
|
|
hou: '00',
|
|
min: '00',
|
|
sec: '00'
|
|
},
|
|
|
|
getMarketPrice: '',
|
|
goodType: null, //商品类型: 拼购商品 groupBuy ||抢团商品 grabGroup
|
|
|
|
},
|
|
lifetimes: {
|
|
attached(e) {
|
|
this.getiPnoneBottom();
|
|
let language = wx.getStorageSync('langIndex');
|
|
this.setData({
|
|
'language': language.en
|
|
});
|
|
this.setData({
|
|
activityId: this.properties.activityid || 0,
|
|
goodsId: this.properties.goodsId,
|
|
goodsInfo: {},
|
|
goodType: this.properties.goodType
|
|
});
|
|
this.getData();
|
|
|
|
this.getCommentData();
|
|
},
|
|
detached() {
|
|
// 在组件实例被从页面节点树移除时执行
|
|
},
|
|
ready() {
|
|
let that = this;
|
|
this.createSelectorQuery().select('.sift').boundingClientRect(function (rect) {
|
|
that.setData({
|
|
pjtop: rect.top - 80
|
|
});
|
|
}).exec();
|
|
this.createSelectorQuery().select('.pullBox').boundingClientRect(function (rect) {
|
|
console.log(rect.top);
|
|
that.setData({
|
|
xqtop: rect.top - 80
|
|
});
|
|
}).exec();
|
|
try {
|
|
wx.getStorage({
|
|
key: 'yz_basic_info',
|
|
success: function (res) {
|
|
that.setData({
|
|
getMarketPrice: res.data.lang.goods.market_price
|
|
});
|
|
},
|
|
});
|
|
} catch (e) {
|
|
console.log(e);
|
|
}
|
|
}
|
|
},
|
|
observers:{
|
|
'datop':function(obs){
|
|
let that = this;
|
|
if(that.data.getTapNoObsever){
|
|
return;
|
|
}
|
|
this.createSelectorQuery()
|
|
.select(".sift")
|
|
.boundingClientRect(function (rect) {
|
|
siftTop = rect.top -50;
|
|
})
|
|
.exec();
|
|
this.createSelectorQuery()
|
|
.select(".foShowBox")
|
|
.boundingClientRect(function (rect) {
|
|
foshowTop = rect.top - 150;
|
|
})
|
|
.exec();
|
|
console.log(foshowTop,siftTop);
|
|
if(foshowTop < 0 && siftTop < 0){
|
|
that.setData({
|
|
current:3
|
|
});
|
|
}else if(siftTop <=0 && foshowTop>0){
|
|
that.setData({
|
|
current:2
|
|
});
|
|
}else if(foshowTop >0 && siftTop > 0){
|
|
that.setData({
|
|
current:1
|
|
});
|
|
}
|
|
}
|
|
},
|
|
methods: {
|
|
getiPnoneBottom() {
|
|
let that = this;
|
|
try {
|
|
var value = wx.getStorageSync('iPhoneBottom');
|
|
if (value) {
|
|
that.setData({
|
|
iPnoneBottomBol: true
|
|
});
|
|
// Do something with return value
|
|
}
|
|
} catch (e) {
|
|
// Do something when catch error
|
|
}
|
|
},
|
|
showGoodslistM() {
|
|
this.setData({
|
|
showGoodslist: true
|
|
});
|
|
},
|
|
clicktapshow() {
|
|
this.setData({
|
|
showGoodslist: false
|
|
});
|
|
},
|
|
closeCs() {
|
|
this.setData({
|
|
showCs: false
|
|
});
|
|
},
|
|
showCan() {
|
|
console.log('开启参数弹窗');
|
|
this.setData({
|
|
showCs: true,
|
|
second_content: this.data.goodsInfo.has_many_params
|
|
});
|
|
},
|
|
gotoShopGoods(e) {
|
|
let _id = e.target.dataset.id || e.currentTarget.dataset.id;
|
|
wx.navigateTo({
|
|
url: '/packageA/detail_v2/detail_v2?id=' + _id
|
|
});
|
|
},
|
|
// 隐藏评论按钮
|
|
streetClose() {
|
|
this.setData({
|
|
streetShow: false
|
|
});
|
|
},
|
|
// 查看全部评论
|
|
goKb() {
|
|
console.log('打开全部口碑');
|
|
this.setData({
|
|
streetShow: true
|
|
});
|
|
this.getCommentData();
|
|
},
|
|
// 顶部导航
|
|
getTap(e) {
|
|
console.log(e.currentTarget.id);
|
|
let pid = e.currentTarget.id;
|
|
this.setData({
|
|
current: pid,
|
|
getTapNoObsever:true
|
|
});
|
|
if (pid == 1) {
|
|
wx.pageScrollTo({
|
|
scrollTop: 0,
|
|
duration: 300,
|
|
success:(res)=>{
|
|
setTimeout(() => {
|
|
this.setData({
|
|
getTapNoObsever:false
|
|
});
|
|
}, 300);
|
|
}
|
|
});
|
|
} else if (pid == 2) {
|
|
wx.pageScrollTo({
|
|
scrollTop: this.data.pjtop + 50,
|
|
duration: 300,
|
|
success:(res)=>{
|
|
setTimeout(() => {
|
|
this.setData({
|
|
getTapNoObsever:false
|
|
});
|
|
}, 300);
|
|
}
|
|
});
|
|
} else if (pid == 3) {
|
|
this.setData({
|
|
xqBoxShow: true
|
|
});
|
|
wx.pageScrollTo({
|
|
scrollTop: this.data.xqtop +100,
|
|
duration: 300,
|
|
success:(res)=>{
|
|
setTimeout(() => {
|
|
this.setData({
|
|
getTapNoObsever:false
|
|
});
|
|
}, 300);
|
|
}
|
|
});
|
|
}
|
|
},
|
|
imageLoad(res) {
|
|
if (res.target.dataset.index == 1) {
|
|
this.setData({
|
|
heightDome: res.detail.height
|
|
});
|
|
}
|
|
},
|
|
|
|
showGroupMore() {
|
|
if (this.data.team.length == 0) {
|
|
wx.showToast({
|
|
icon: 'none',
|
|
title: '抱歉,暂无更多可参与的团!',
|
|
duration: 1500
|
|
});
|
|
return;
|
|
}
|
|
|
|
},
|
|
// 点击蒙层触发
|
|
tapOverlay() {
|
|
this.setData({
|
|
|
|
posterShow: false
|
|
});
|
|
},
|
|
showPop() {
|
|
this.setData({
|
|
show1: true
|
|
});
|
|
},
|
|
// 获取数据
|
|
getData() {
|
|
let urlStr = null;
|
|
urlStr = app.getNetAddresss('plugin.star-spell.frontend.index.goodsDetail');
|
|
urlStr += '&goods_id=' + this.data.goodsId;
|
|
|
|
app._getNetWork({
|
|
url: urlStr,
|
|
success: (resdata) => {
|
|
var res = resdata.data;
|
|
if (res.result == 1) {
|
|
console.log("team", res.data.team);
|
|
let thumb = [];
|
|
thumb.push(res.data.goods.thumb);
|
|
this.setData({
|
|
gooddatas: res.data.goods,
|
|
popStock: res.data.goods.stock,
|
|
team: res.data.team,
|
|
third_content: res.data.comment.data,
|
|
end_time: res.data.goods.end_time,
|
|
'gooddatas.thumb': thumb,
|
|
'gooddatas.status': res.data.activity_state,
|
|
first_content: res.data.goods.content
|
|
});
|
|
console.log("team", this.data.team, res.data.team);
|
|
|
|
// 分享的自定义图片
|
|
wx.setStorageSync('GoddsShareImg', thumb[0]);
|
|
this.triggerEvent('parentEvent', [this.data.gooddatas.title]);
|
|
let start_time = new Date().getTime() / 1000;
|
|
this.setData({
|
|
nowTime: start_time
|
|
});
|
|
|
|
|
|
let _team = this.data.team;
|
|
for (let i = _team.length - 1; i >= 0; i--) {
|
|
if (_team[i].end_time <= start_time) {
|
|
_team.splice(i, 1); //删除下标为i的元素
|
|
}
|
|
}
|
|
this.setData({
|
|
team: _team.splice(0, 3)
|
|
});
|
|
|
|
this._timeCompare(res.data.goods.start_time);
|
|
|
|
let article = this.data.first_content;
|
|
try {
|
|
if (article.indexOf('&#') <= -1) {
|
|
WxParse.wxParse('article', 'html', article, this);
|
|
}
|
|
} catch (e) {
|
|
//TODO handle the exception
|
|
}
|
|
// WxParse.wxParse('article', 'html', article, this)
|
|
} else {
|
|
wx.showToast({
|
|
icon: 'none',
|
|
title: res.msg,
|
|
duration: 1500
|
|
});
|
|
}
|
|
}
|
|
});
|
|
},
|
|
gotoStarMusicListGroup() {
|
|
if (this.data.team.length == 0) return app.tips("暂无更多可参团");
|
|
wx.navigateTo({
|
|
url: '/packageH/starMusic/starMusicListGroup/starMusicListGroup?id=' + this.data.gooddatas.activity_id
|
|
});
|
|
},
|
|
gotoStarMusicGroupDetails(evt) {
|
|
let id = evt.currentTarget.dataset.id;
|
|
wx.navigateTo({
|
|
url: '/packageH/starMusic/starMusicGroupDetails/starMusicGroupDetails?id=' + id
|
|
});
|
|
//this.$router.push(this.fun.getUrl("starMusicGroupDetails",{id}));
|
|
},
|
|
|
|
// 获取评论数据
|
|
getCommentData() {
|
|
let that = this;
|
|
let json = {
|
|
goods_id: this.properties.goodsId,
|
|
page: this.data.commentPage
|
|
};
|
|
let urlStr = app.getNetAddresss('goods.comment.get-comment');
|
|
app._getNetWork({
|
|
url: urlStr,
|
|
data: json,
|
|
success: (resdata) => {
|
|
var res = resdata.data;
|
|
if (res.result == 1) {
|
|
if (res.data.data.length < 20) {
|
|
that.setData({
|
|
noMoreComment: true
|
|
});
|
|
}
|
|
that.setData({
|
|
commentPage: that.data.commentPage + 1
|
|
});
|
|
if (!that.data.third_content) {
|
|
that.setData({
|
|
third_content: []
|
|
});
|
|
}
|
|
that.setData({
|
|
third_content: [...that.data.third_content, ...res.data.data]
|
|
});
|
|
console.log(that.data.third_content);
|
|
if (app._isTextEmpty(that.data.third_content)) {
|
|
console.log('空没评论');
|
|
that.setData({
|
|
thirKong: false
|
|
});
|
|
} else {
|
|
console.log("不空");
|
|
that.setData({
|
|
thirKong: true
|
|
});
|
|
}
|
|
} else {
|
|
wx.showToast({
|
|
icon: 'none',
|
|
title: res.msg,
|
|
duration: 1500
|
|
});
|
|
}
|
|
}
|
|
});
|
|
},
|
|
|
|
|
|
//查看大图
|
|
seePicture(evt) {
|
|
let pics = evt.currentTarget.dataset.pics;
|
|
let index = evt.currentTarget.dataset.index;
|
|
wx.previewImage({
|
|
current: pics[index], // 当前显示图片的http链接
|
|
urls: pics // 需要预览的图片http链接列表
|
|
});
|
|
},
|
|
|
|
// 跳转评论详情
|
|
toContentInfo(e) {
|
|
let data = e.target.dataset.item || e.currentTarget.dataset.item;
|
|
wx.navigateTo({
|
|
url: '/packageD/member/CommentDetails/CommentDetails?order_id' + data.order_id + '&goods_id=' + data.goods_id +
|
|
'&uid=' + data.uid + '&comment_id=' + data.id
|
|
});
|
|
},
|
|
// 顶部返回按钮
|
|
goto() {
|
|
if (share_tag == '-1') {
|
|
wx.navigateBack({
|
|
delta: 1
|
|
});
|
|
} else {
|
|
wx.reLaunch({
|
|
url: '/packageG/index/index',
|
|
});
|
|
}
|
|
},
|
|
// 跳转主页
|
|
gotoHome() {
|
|
wx.reLaunch({
|
|
url: '/packageG/index/index',
|
|
});
|
|
},
|
|
// 跳转个人中心
|
|
gotoMember() {
|
|
wx.reLaunch({
|
|
url: '/packageG/member_v2/member_v2'
|
|
});
|
|
},
|
|
postShow() {
|
|
|
|
let that = this;
|
|
if (that.data.posterImg) {
|
|
this.setData({
|
|
posterShow: true
|
|
});
|
|
} else {
|
|
wx.showLoading({
|
|
title: '海报生成中',
|
|
});
|
|
let urlStr = app.getNetAddresss('plugin.star-spell.frontend.goods-poster.generateGoodsPoster');
|
|
|
|
urlStr += '&id=' + this.data.goodsId;
|
|
|
|
app._getNetWork({
|
|
url: urlStr,
|
|
success: (resdata) => {
|
|
var res = resdata.data;
|
|
if (res.result == 1) {
|
|
this.setData({
|
|
posterShow: true,
|
|
posterImg: res.data.image_url
|
|
});
|
|
} else {
|
|
wx.showToast({
|
|
icon: 'none',
|
|
title: res.msg,
|
|
duration: 1500
|
|
});
|
|
this.setData({
|
|
posterShow: false
|
|
});
|
|
}
|
|
wx.hideLoading();
|
|
}
|
|
});
|
|
setTimeout(function () {
|
|
wx.hideLoading();
|
|
}, 5000);
|
|
}
|
|
},
|
|
|
|
|
|
// 隐藏二维码
|
|
tapposterShow() {
|
|
this.setData({
|
|
posterShow: false
|
|
});
|
|
},
|
|
// 长按保存
|
|
saveImg() {
|
|
wx.getSetting({
|
|
success: (res) => {
|
|
if (!res.authSetting['scope.writePhotosAlbum']) {
|
|
wx.authorize({
|
|
scope: 'scope.writePhotosAlbum',
|
|
success() {}
|
|
});
|
|
}
|
|
}
|
|
});
|
|
var imgSrc = this.data.posterImg;
|
|
wx.downloadFile({
|
|
url: imgSrc,
|
|
success: function (res) {
|
|
// 图片保存到本地
|
|
wx.saveImageToPhotosAlbum({
|
|
filePath: res.tempFilePath,
|
|
success: function (data) {
|
|
wx.showToast({
|
|
title: '保存成功',
|
|
icon: 'none',
|
|
duration: 2000
|
|
});
|
|
},
|
|
fail: function (err) {
|
|
if (err.errMsg === 'saveImageToPhotosAlbum:fail auth deny') {
|
|
wx.openSetting({
|
|
success(settingdata) {
|
|
if (settingdata.authSetting['scope.writePhotosAlbum']) {
|
|
wx.showToast({
|
|
icon: 'none',
|
|
title: '获取权限成功,再次长按保存图片',
|
|
duration: 1500
|
|
});
|
|
} else {
|
|
wx.showToast({
|
|
icon: 'none',
|
|
title: '获取权限失败,保存图片需要用户授权',
|
|
duration: 1500
|
|
});
|
|
}
|
|
}
|
|
});
|
|
}
|
|
},
|
|
complete(res) {
|
|
console.log(res);
|
|
}
|
|
});
|
|
}
|
|
});
|
|
},
|
|
//获取时间-限时购
|
|
_timeCompare(begin) {
|
|
let beginTime = new Date(parseInt(begin) * 1000);
|
|
let now = new Date();
|
|
if (now >= beginTime) {
|
|
this.setData({
|
|
isTime: true
|
|
});
|
|
//开启倒计时
|
|
this._countDown();
|
|
} else {
|
|
this.setData({
|
|
isTime: false,
|
|
isTimeEnd: false,
|
|
begTimeStr: begin * 1000
|
|
});
|
|
//开启距离开始倒计时
|
|
this.beginDown();
|
|
}
|
|
},
|
|
//倒计时
|
|
_countDown: function () {
|
|
let newTime = new Date().getTime();
|
|
let endTime = this.data.end_time * 1000;
|
|
let obj = null;
|
|
if (endTime - newTime > 0) {
|
|
let time = (endTime - newTime) / 1000;
|
|
// 获取天、时、分、秒
|
|
let day = parseInt(time / (60 * 60 * 24));
|
|
let hou = parseInt(time % (60 * 60 * 24) / 3600);
|
|
let min = parseInt(time % (60 * 60 * 24) % 3600 / 60);
|
|
let 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 { //活动已结束,全部设置为'00'
|
|
obj = {
|
|
day: '00',
|
|
hou: '00',
|
|
min: '00',
|
|
sec: '00'
|
|
};
|
|
}
|
|
this.setData({
|
|
countDownObj: obj
|
|
});
|
|
// console.log('gggggggggggggggg',endTime ,newTime )
|
|
if (endTime - newTime < 0) {
|
|
this.setData({
|
|
countDownObj: {
|
|
day: '00',
|
|
hou: '00',
|
|
min: '00',
|
|
sec: '00'
|
|
},
|
|
isTimeEnd: true
|
|
});
|
|
} else {
|
|
setTimeout(this._countDown.bind(this), 1000);
|
|
}
|
|
|
|
},
|
|
//倒计时
|
|
beginDown: function () {
|
|
let newTime = new Date().getTime();
|
|
let endTime = this.data.begTimeStr;
|
|
let obj = null;
|
|
if (endTime - newTime > 0) {
|
|
let time = (endTime - newTime) / 1000;
|
|
// 获取天、时、分、秒
|
|
let day = parseInt(time / (60 * 60 * 24));
|
|
let hou = parseInt(time % (60 * 60 * 24) / 3600);
|
|
let min = parseInt(time % (60 * 60 * 24) % 3600 / 60);
|
|
let 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 { //活动已结束,全部设置为'00'
|
|
this.setData({
|
|
isTime: true,
|
|
isTimeEnd: true
|
|
});
|
|
obj = {
|
|
day: '00',
|
|
hou: '00',
|
|
min: '00',
|
|
sec: '00'
|
|
};
|
|
}
|
|
this.setData({
|
|
beginDownObj: obj
|
|
});
|
|
if (endTime - newTime < 0) {
|
|
this.setData({
|
|
isTime: true,
|
|
isTimeEnd: true
|
|
});
|
|
this.setData({
|
|
beginDownObj: {
|
|
day: '00',
|
|
hou: '00',
|
|
min: '00',
|
|
sec: '00'
|
|
}
|
|
});
|
|
} else {
|
|
setTimeout(this.beginDown.bind(this), 1000);
|
|
}
|
|
},
|
|
//小于10的格式化函数
|
|
_timeFormat(param) { //小于10的格式化函数
|
|
return param < 10 ? '0' + param : param;
|
|
},
|
|
|
|
|
|
},
|
|
pageLifetimes: {
|
|
show() {
|
|
// 页面被展示
|
|
},
|
|
hide() {
|
|
// 页面被隐藏
|
|
},
|
|
resize(size) {
|
|
// 页面尺寸变化
|
|
}
|
|
}
|
|
|
|
}); |