yuminge-app/yun-min-program-plugin-master/packageA/mycomponent/star_group/star_group.js

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) {
// 页面尺寸变化
}
}
});