791 lines
21 KiB
JavaScript
791 lines
21 KiB
JavaScript
// 团长接龙详情
|
|
var app = getApp();
|
|
var status = require('../../utils/index.js');
|
|
|
|
Page({
|
|
|
|
/**
|
|
* 页面的初始数据
|
|
*/
|
|
data: {
|
|
showGoodsModal: false,
|
|
showCommentModal: false,
|
|
pid: 0,
|
|
showShareModal: false,
|
|
list: [],
|
|
loadText: "加载中...",
|
|
noData: 0,
|
|
loadMore: true,
|
|
orderList: [],
|
|
noOrderMore: false,
|
|
noOrderData: 0,
|
|
solitaire_is_message: 0
|
|
},
|
|
imagePath: '',
|
|
options: '',
|
|
page: 1,
|
|
orderPage: 1,
|
|
|
|
/**
|
|
* 生命周期函数--监听页面加载
|
|
*/
|
|
onLoad: function (options) {
|
|
status.setNavBgColor();
|
|
this.options = options;
|
|
let id = options.id || 0;
|
|
if(!id) {
|
|
app.util.message('参数错误', 'redirect:/eaterplanet_ecommerce/moduleA/solitaire/groupIndex', 'error');
|
|
}
|
|
},
|
|
handlerGobackClick(delta) {
|
|
const pages = getCurrentPages();
|
|
if (pages.length >= 2) {
|
|
wx.navigateBack({
|
|
delta: delta
|
|
});
|
|
} else {
|
|
wx.switchTab({
|
|
url: '/eaterplanet_ecommerce/pages/index/index'
|
|
});
|
|
}
|
|
},
|
|
handlerGohomeClick(url) {
|
|
wx.switchTab({
|
|
url: '/eaterplanet_ecommerce/pages/index/index'
|
|
});
|
|
},
|
|
initFn() {
|
|
let that = this;
|
|
let id = this.options && this.options.id || 0;
|
|
this.page = 1;
|
|
this.setData({
|
|
list: [],
|
|
loadText: "加载中...",
|
|
noData: 0,
|
|
loadMore: true
|
|
}, () => {
|
|
id && that.getData(id);
|
|
})
|
|
},
|
|
|
|
/**
|
|
* 生命周期函数--监听页面显示
|
|
*/
|
|
onShow: function () {
|
|
let id = this.options && this.options.id || 0;
|
|
id && this.getData(id), this.getOrderList();
|
|
},
|
|
|
|
onHide: function () {
|
|
this.setData({ clearTime: true })
|
|
},
|
|
|
|
/**
|
|
* 获取详情
|
|
*/
|
|
getData: function (id) {
|
|
const token = wx.getStorageSync('token');
|
|
let that = this;
|
|
app.util.request({
|
|
url: 'entry/wxapp/index',
|
|
data: {
|
|
controller: 'solitaire.get_solitaire_detail',
|
|
id,
|
|
token,
|
|
is_head: 1
|
|
},
|
|
dataType: 'json',
|
|
success: function (res) {
|
|
if (res.data.code == 0) {
|
|
let { head_data, soli_info, solitaire_target, solitaire_target_takemember, solitaire_target_takemoney, solitaire_target_type,solitaire_is_message } = res.data;
|
|
// 完成接龙差值
|
|
let {
|
|
soli_total_money, //一共下单金额
|
|
order_count //一共下多少单
|
|
} = soli_info;
|
|
let diffMoney = solitaire_target_takemoney * 1 - soli_total_money * 1;
|
|
let diffMember = solitaire_target_takemember * 1 - order_count * 1;
|
|
|
|
that.setData({
|
|
community: head_data || '',
|
|
soli_info,
|
|
solitaire_target,
|
|
solitaire_target_takemember,
|
|
solitaire_target_takemoney,
|
|
solitaire_target_type,
|
|
diffMoney,
|
|
diffMember,
|
|
clearTime: false,
|
|
solitaire_is_message
|
|
}, ()=>{
|
|
that.drawImg(head_data, soli_info);
|
|
})
|
|
if(solitaire_is_message==1){
|
|
that.getCommentList()
|
|
}
|
|
} else if (res.data.code == 2) {
|
|
app.util.message('您还未登录', 'switchTo:/eaterplanet_ecommerce/pages/index/index', 'error');
|
|
return;
|
|
} else {
|
|
app.util.message(res.data.msg, 'redirect:/eaterplanet_ecommerce/moduleA/solitaire/groupIndex', 'error');
|
|
return;
|
|
}
|
|
}
|
|
})
|
|
},
|
|
|
|
showImgPrev: function (event){
|
|
var idx = event ? event.currentTarget.dataset.idx : '';
|
|
let urls = this.data.soli_info.images_list || [];
|
|
wx.previewImage({
|
|
current: urls[idx],
|
|
urls
|
|
});
|
|
},
|
|
|
|
/**
|
|
* 商品弹窗
|
|
*/
|
|
handleGoodsModal: function(){
|
|
this.setData({
|
|
showGoodsModal: !this.data.showGoodsModal
|
|
})
|
|
},
|
|
|
|
/**
|
|
* 评论弹窗
|
|
*/
|
|
handleCommentModal: function () {
|
|
this.setData({
|
|
showCommentModal: !this.data.showCommentModal,
|
|
pid: 0
|
|
})
|
|
},
|
|
|
|
/**
|
|
* 留言
|
|
*/
|
|
subComment: function (e) {
|
|
let { soli_info, pid } = this.data;
|
|
let soli_id = soli_info.id || '';
|
|
let content = e.detail.value.content || '';
|
|
if (content == '') {
|
|
wx.showToast({
|
|
title: '请输入内容',
|
|
icon: 'none'
|
|
})
|
|
return;
|
|
}
|
|
let that = this;
|
|
const token = wx.getStorageSync('token');
|
|
app.util.request({
|
|
url: 'entry/wxapp/index',
|
|
data: {
|
|
controller: 'solitaire.sub_solipost',
|
|
soli_id,
|
|
content,
|
|
pid,
|
|
token
|
|
},
|
|
dataType: 'json',
|
|
success: function (res) {
|
|
if (res.data.code == 0) {
|
|
let { post_id, cur_time } = res.data;
|
|
let userInfo = wx.getStorageSync('userInfo');
|
|
let list = that.data.list;
|
|
|
|
if (pid!=0) {
|
|
let comment = {
|
|
id: post_id,
|
|
pid,
|
|
username: userInfo.nickName,
|
|
content
|
|
}
|
|
let idx = list.findIndex(item => item.id == pid);
|
|
if (idx !== -1) {
|
|
list[idx].reply.push(comment);
|
|
}
|
|
} else {
|
|
let comment = {
|
|
id: post_id,
|
|
soli_id,
|
|
pid,
|
|
username: userInfo.nickName,
|
|
avatar: userInfo.avatarUrl,
|
|
content,
|
|
fav_count: 0,
|
|
addtime: cur_time,
|
|
reply: [],
|
|
is_agree: false
|
|
}
|
|
list.unshift(comment);
|
|
}
|
|
|
|
soli_info.comment_total = soli_info.comment_total * 1 + 1;
|
|
that.setData({ soli_info, list, content: '', showCommentModal: false, noData: 0 })
|
|
app.util.message(res.data.msg || '留言成功', '', 'success');
|
|
} else {
|
|
app.util.message(res.data.msg || '留言失败', '', 'error');
|
|
}
|
|
}
|
|
})
|
|
},
|
|
|
|
/**
|
|
* 回复留言
|
|
*/
|
|
replyComment: function(e){
|
|
let pid = e.currentTarget.dataset.id || '';
|
|
this.setData({
|
|
showCommentModal: !this.data.showCommentModal,
|
|
pid
|
|
})
|
|
},
|
|
|
|
/**
|
|
* 删除留言
|
|
*/
|
|
deleteComment: function(e){
|
|
let that = this;
|
|
let id = e.currentTarget.dataset.id || '';
|
|
let idx = e.currentTarget.dataset.idx || '';
|
|
id && wx.showModal({
|
|
title: '操作提示',
|
|
content: '确认删除此留言?',
|
|
confirmColor: '#ff5041',
|
|
success(res) {
|
|
if (res.confirm) {
|
|
wx.showLoading({ title: '删除中...' })
|
|
const token = wx.getStorageSync('token');
|
|
app.util.request({
|
|
url: 'entry/wxapp/index',
|
|
data: {
|
|
controller: 'solitaire.delete_comment',
|
|
id,
|
|
token
|
|
},
|
|
dataType: 'json',
|
|
success: function (res) {
|
|
wx.hideLoading();
|
|
if (res.data.code == 0) {
|
|
let { list, soli_info } = that.data;
|
|
list.splice(idx, 1);
|
|
let noData = false;
|
|
if (list.length==0) noData = true;
|
|
|
|
soli_info.comment_total = soli_info.comment_total * 1 - 1;
|
|
that.setData({ list, soli_info, noData });
|
|
wx.showToast({
|
|
title: res.data.msg || '删除成功',
|
|
icon: 'none'
|
|
})
|
|
} else if (res.data.code == 2) {
|
|
app.util.message('您还未登录', 'switchTo:/eaterplanet_ecommerce/pages/index/index', 'error');
|
|
return;
|
|
} else {
|
|
app.util.message(res.data.msg || '删除失败', '', 'error');
|
|
}
|
|
}
|
|
})
|
|
}
|
|
}
|
|
});
|
|
},
|
|
|
|
/**
|
|
* 点赞
|
|
*/
|
|
favComment: function (e) {
|
|
let that = this;
|
|
let soli_info = this.data.soli_info;
|
|
let soli_id = soli_info.id || '';
|
|
let post_id = e ? e.currentTarget.dataset.post_id : '';
|
|
let idx = e ? e.currentTarget.dataset.idx : 0;
|
|
const token = wx.getStorageSync('token');
|
|
post_id && app.util.request({
|
|
url: 'entry/wxapp/index',
|
|
data: {
|
|
controller: 'solitaire.fav_soli_post',
|
|
soli_id,
|
|
post_id,
|
|
token
|
|
},
|
|
dataType: 'json',
|
|
success: function (res) {
|
|
if (res.data.code == 0) {
|
|
if (res.data.do == 1) {
|
|
// 点赞成功
|
|
let list = that.data.list;
|
|
list[idx].is_agree = true;
|
|
list[idx].fav_count = list[idx].fav_count * 1 + 1;
|
|
that.setData({ list })
|
|
} else {
|
|
// 取消成功
|
|
let list = that.data.list;
|
|
list[idx].is_agree = false;
|
|
list[idx].fav_count = list[idx].fav_count * 1 - 1;
|
|
that.setData({ list })
|
|
}
|
|
} else if (res.data.code == 1) {
|
|
that.setData({ needAuth: true, showAuthModal: true })
|
|
} else {
|
|
wx.showToast({
|
|
title: res.data.msg || '点赞失败',
|
|
icon: 'none'
|
|
})
|
|
}
|
|
}
|
|
})
|
|
},
|
|
|
|
/**
|
|
* 结束接龙
|
|
*/
|
|
endSolitaire: function (e) {
|
|
let that = this;
|
|
let soli_info = that.data.soli_info;
|
|
let id = soli_info.id;
|
|
id && wx.showModal({
|
|
title: '操作提示',
|
|
content: '确认终止此接龙吗?',
|
|
confirmColor: '#ff5041',
|
|
success(res) {
|
|
if (res.confirm) {
|
|
wx.showLoading({ title: '提交中...' })
|
|
const token = wx.getStorageSync('token');
|
|
app.util.request({
|
|
url: 'entry/wxapp/index',
|
|
data: {
|
|
controller: 'solitaire.end_solitaire',
|
|
id,
|
|
token
|
|
},
|
|
dataType: 'json',
|
|
success: function (res) {
|
|
wx.hideLoading();
|
|
if (res.data.code == 0) {
|
|
soli_info.end = 1;
|
|
that.setData({ soli_info });
|
|
wx.showToast({
|
|
title: res.data.msg || '接龙已终止',
|
|
icon: 'none'
|
|
})
|
|
} else if (res.data.code == 2) {
|
|
app.util.message('您还未登录', 'switchTo:/eaterplanet_ecommerce/pages/index/index', 'error');
|
|
return;
|
|
} else {
|
|
app.util.message(res.data.msg || '操作失败', '', 'error');
|
|
}
|
|
}
|
|
})
|
|
}
|
|
}
|
|
});
|
|
},
|
|
|
|
drawImg: function (head, soli_info) {
|
|
let images_list = soli_info.images_list;
|
|
let qrcode_image = soli_info.qrcode_image;
|
|
let content = soli_info.content.replace(/<[^>]+>|&[^>]+;/g, "").trim();
|
|
content = content.replace(/<\/?.+?>/g, "");
|
|
content = content.replace(/ /g, "");
|
|
let option = [];
|
|
let h = 300
|
|
if (images_list.length) {
|
|
option.push({
|
|
"type": "image",
|
|
"url": images_list[0],
|
|
"css":
|
|
{
|
|
"width": "442px",
|
|
"height": "300px",
|
|
"top": "230px",
|
|
"left": "36px",
|
|
"rotate": "0",
|
|
"borderRadius": "",
|
|
"borderWidth": "",
|
|
"borderColor": "",
|
|
"shadow": "",
|
|
"mode": "scaleToFill"
|
|
}
|
|
})
|
|
h = 0;
|
|
}
|
|
|
|
this.setData({
|
|
template: {
|
|
"width": "514px",
|
|
"height": (710 - h) + "px",
|
|
"background": "#fff",
|
|
"views": [
|
|
{
|
|
"type": "image",
|
|
"url": head.avatar,
|
|
"css":
|
|
{
|
|
"width": "46px",
|
|
"height": "46px",
|
|
"top": "25px",
|
|
"left": "36px",
|
|
"rotate": "0",
|
|
"borderRadius": "3px",
|
|
"borderWidth": "",
|
|
"borderColor": "#000000",
|
|
"shadow": "",
|
|
"mode": "scaleToFill"
|
|
}
|
|
},
|
|
{
|
|
"type": "text",
|
|
"text": head.head_name,
|
|
"css":
|
|
{
|
|
"color": "#000000",
|
|
"background": "",
|
|
"width": "385px",
|
|
"height": "20.02px",
|
|
"top": "30px",
|
|
"left": "96px",
|
|
"rotate": "0",
|
|
"borderRadius": "",
|
|
"borderWidth": "",
|
|
"borderColor": "#000000",
|
|
"shadow": "",
|
|
"padding": "0px",
|
|
"fontSize": "14px",
|
|
"fontWeight": "bold",
|
|
"maxLines": "1",
|
|
"lineHeight": "20.202000000000005px",
|
|
"textStyle": "fill",
|
|
"textDecoration": "none",
|
|
"fontFamily": "",
|
|
"textAlign": "left"
|
|
}
|
|
},
|
|
{
|
|
"type": "text",
|
|
"text": head.community_name,
|
|
"css":
|
|
{
|
|
"color": "#999999",
|
|
"background": "",
|
|
"width": "385px",
|
|
"height": "17.16px",
|
|
"top": "52px",
|
|
"left": "96px",
|
|
"rotate": "0",
|
|
"borderRadius": "",
|
|
"borderWidth": "",
|
|
"borderColor": "#000000",
|
|
"shadow": "",
|
|
"padding": "0px",
|
|
"fontSize": "12px",
|
|
"fontWeight": "normal",
|
|
"maxLines": "1",
|
|
"lineHeight": "17.316000000000003px",
|
|
"textStyle": "fill",
|
|
"textDecoration": "none",
|
|
"fontFamily": "",
|
|
"textAlign": "left"
|
|
}
|
|
},
|
|
{
|
|
"type": "text",
|
|
"text": content,
|
|
"css":
|
|
{
|
|
"color": "#666666",
|
|
"background": "",
|
|
"width": "442px",
|
|
"height": "52.181999999999995px",
|
|
"top": "158px",
|
|
"left": "36px",
|
|
"rotate": "0",
|
|
"borderRadius": "",
|
|
"borderWidth": "",
|
|
"borderColor": "#000000",
|
|
"shadow": "",
|
|
"padding": "0px",
|
|
"fontSize": "18px",
|
|
"fontWeight": "normal",
|
|
"maxLines": "2",
|
|
"lineHeight": "25.974000000000004px",
|
|
"textStyle": "fill",
|
|
"textDecoration": "none",
|
|
"fontFamily": "",
|
|
"textAlign": "left"
|
|
}
|
|
},
|
|
{
|
|
"type": "text",
|
|
"text": soli_info.solitaire_name,
|
|
"css":
|
|
{
|
|
"color": "#000000",
|
|
"background": "",
|
|
"width": "442px",
|
|
"height": "42.89999999999999px",
|
|
"top": "95px",
|
|
"left": "36px",
|
|
"rotate": "0",
|
|
"borderRadius": "",
|
|
"borderWidth": "",
|
|
"borderColor": "#000000",
|
|
"shadow": "",
|
|
"padding": "0px",
|
|
"fontSize": "30px",
|
|
"fontWeight": "normal",
|
|
"maxLines": "1",
|
|
"lineHeight": "43.290000000000006px",
|
|
"textStyle": "fill",
|
|
"textDecoration": "none",
|
|
"fontFamily": "",
|
|
"textAlign": "left"
|
|
}
|
|
},
|
|
{
|
|
"type": "text",
|
|
"text": "一群人正在赶来接龙",
|
|
"css":
|
|
{
|
|
"color": "#999999",
|
|
"background": "",
|
|
"width": "442px",
|
|
"height": "22.88px",
|
|
"top": (595 - h) + "px",
|
|
"left": "204px",
|
|
"rotate": "0",
|
|
"borderRadius": "",
|
|
"borderWidth": "",
|
|
"borderColor": "#000000",
|
|
"shadow": "",
|
|
"padding": "0px",
|
|
"fontSize": "16px",
|
|
"fontWeight": "normal",
|
|
"maxLines": "2",
|
|
"lineHeight": "23.088000000000005px",
|
|
"textStyle": "fill",
|
|
"textDecoration": "none",
|
|
"fontFamily": "",
|
|
"textAlign": "left"
|
|
}
|
|
},
|
|
{
|
|
"type": "text",
|
|
"text": "长按识别或扫码参与",
|
|
"css":
|
|
{
|
|
"color": "#999999",
|
|
"background": "",
|
|
"width": "442px",
|
|
"height": "22.88px",
|
|
"top": (630 - h) + "px",
|
|
"left": "204px",
|
|
"rotate": "0",
|
|
"borderRadius": "",
|
|
"borderWidth": "",
|
|
"borderColor": "#000000",
|
|
"shadow": "",
|
|
"padding": "0px",
|
|
"fontSize": "16px",
|
|
"fontWeight": "normal",
|
|
"maxLines": "2",
|
|
"lineHeight": "23.088000000000005px",
|
|
"textStyle": "fill",
|
|
"textDecoration": "none",
|
|
"fontFamily": "",
|
|
"textAlign": "left"
|
|
}
|
|
},
|
|
{
|
|
"type": "image",
|
|
"url": qrcode_image,
|
|
"css":
|
|
{
|
|
"width": "120px",
|
|
"height": "120px",
|
|
"top": (560 - h) + "px",
|
|
"left": "356px",
|
|
"rotate": "0",
|
|
"borderRadius": "",
|
|
"borderWidth": "",
|
|
"borderColor": "#000000",
|
|
"shadow": "",
|
|
"mode": "scaleToFill"
|
|
}
|
|
},
|
|
...option
|
|
]
|
|
}
|
|
});
|
|
},
|
|
|
|
onImgOK(e) {
|
|
this.imagePath = e.detail.path;
|
|
this.setData({
|
|
image: this.imagePath
|
|
})
|
|
},
|
|
|
|
saveImage() {
|
|
let that = this;
|
|
wx.saveImageToPhotosAlbum({
|
|
filePath: this.imagePath,
|
|
success(res) {
|
|
that.setData({ showShareModal: false })
|
|
wx.showToast({
|
|
title: '保存成功!'
|
|
})
|
|
},
|
|
fail(res) {
|
|
wx.showToast({
|
|
title: '保存失败,请重试!',
|
|
icon: 'none'
|
|
})
|
|
}
|
|
});
|
|
},
|
|
|
|
handleShareModal: function () {
|
|
this.setData({
|
|
showShareModal: !this.data.showShareModal
|
|
})
|
|
},
|
|
|
|
handleGoodsModal: function(e){
|
|
if (this.data.showGoodsModal){
|
|
this.setData({
|
|
showGoodsModal: false,
|
|
goodsModalList: []
|
|
})
|
|
} else {
|
|
let idx = e ? e.currentTarget.dataset.idx : '';
|
|
let orderList = this.data.orderList;
|
|
let goodsModalList = orderList[idx].goodslist || [];
|
|
this.setData({
|
|
showGoodsModal: true,
|
|
goodsModalList
|
|
})
|
|
}
|
|
},
|
|
|
|
/**
|
|
* 获取评论列表
|
|
*/
|
|
getCommentList: function () {
|
|
let that = this;
|
|
let id = this.options && this.options.id || 0;
|
|
const token = wx.getStorageSync('token');
|
|
wx.showLoading();
|
|
app.util.request({
|
|
url: 'entry/wxapp/index',
|
|
data: {
|
|
controller: 'solitaire.get_comment_list',
|
|
page: this.page,
|
|
token,
|
|
id
|
|
},
|
|
dataType: 'json',
|
|
success: function (res) {
|
|
wx.hideLoading();
|
|
if (res.data.code == 0) {
|
|
let h = {};
|
|
let list = res.data.data;
|
|
if (list.length < 20) h.noMore = true;
|
|
let oldList = that.data.list;
|
|
list = oldList.concat(list);
|
|
that.page++;
|
|
that.setData({
|
|
list,
|
|
...h
|
|
})
|
|
} else if (res.data.code == 1) {
|
|
// 无数据
|
|
if (that.page == 1) that.setData({
|
|
noData: 1
|
|
})
|
|
that.setData({
|
|
loadMore: false,
|
|
noMore: false,
|
|
loadText: "没有更多记录了~"
|
|
})
|
|
}
|
|
}
|
|
})
|
|
},
|
|
|
|
/**
|
|
* 页面上拉触底事件的处理函数
|
|
*/
|
|
onReachBottom: function () {
|
|
if (!this.data.loadMore||this.data.solitaire_is_message==0) return false;
|
|
this.getCommentList();
|
|
},
|
|
|
|
/**
|
|
* 获取评论列表
|
|
*/
|
|
getOrderList: function () {
|
|
let that = this;
|
|
let id = this.options && this.options.id || 0;
|
|
wx.showLoading();
|
|
app.util.request({
|
|
url: 'entry/wxapp/index',
|
|
data: {
|
|
controller: 'solitaire.get_soli_order_list',
|
|
page: this.orderPage,
|
|
id,
|
|
size: 5
|
|
},
|
|
dataType: 'json',
|
|
success: function (res) {
|
|
wx.hideLoading();
|
|
if (res.data.code == 0) {
|
|
let h = {};
|
|
let list = res.data.data;
|
|
if (list.length < 5) h.noOrderMore = true;
|
|
let oldList = that.data.orderList;
|
|
let orderList = oldList.concat(list);
|
|
that.orderPage++;
|
|
that.setData({
|
|
orderList,
|
|
...h
|
|
})
|
|
} else if (res.data.code == 1) {
|
|
// 无数据
|
|
let h = {};
|
|
if (that.orderPage == 1) h.noOrderData = 1;
|
|
that.setData({
|
|
noOrderMore: true,
|
|
...h
|
|
})
|
|
}
|
|
}
|
|
})
|
|
},
|
|
|
|
getMoreOrder: function(){
|
|
this.data.noOrderMore || this.getOrderList();
|
|
},
|
|
|
|
/**
|
|
* 用户点击右上角分享
|
|
*/
|
|
onShareAppMessage: function () {
|
|
let share_id = wx.getStorageSync('member_id') || '';
|
|
let soli_info = this.data.soli_info || '';
|
|
let title = soli_info.solitaire_name || '';
|
|
let share_path = `eaterplanet_ecommerce/moduleA/solitaire/details?id=${soli_info.id}&share_id=${share_id}`;
|
|
return {
|
|
title,
|
|
path: share_path,
|
|
success: function (res) {
|
|
// 转发成功
|
|
},
|
|
fail: function (res) {
|
|
// 转发失败
|
|
}
|
|
}
|
|
}
|
|
})
|