// 团长接龙详情 var app = getApp(); var util = require('../../utils/util.js'); var status = require('../../utils/index.js'); Page({ mixins: [require('../../mixin/compoentCartMixin.js'), require('../../mixin/globalMixin.js')], data: { showGoodsModal: false, showCommentModal: false, showCartModal: false, pid: 0, hideGoods: true, buy_type: 'soitaire', groupInfo: { group_name: '社区', owner_name: '团长' }, showShareModal: false, list: [], loadText: "加载中...", noData: 0, loadMore: true, isIpx: app.globalData.isIpx, orderList: [], noOrderMore: false, noOrderData: 0, myOrderList: [], noMyOrderMore: false, noMyOrderData: false }, imagePath: '', options: '', page: 1, soli_id: 0, orderPage: 1, isFirst: 1, myOrderPage: 1, canCancel: true, 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' }); }, /** * 生命周期函数--监听页面加载 */ onLoad: function (options) { app.setShareConfig(); let that = this; status.setNavBgColor(); status.setGroupInfo().then((groupInfo) => { that.setData({ groupInfo }) }); var scene = decodeURIComponent(options.scene); if (scene !== 'undefined') { var opt_arr = scene.split("_"); options.id = opt_arr[0]; //接龙id options.share_id = opt_arr[1]; //分享人id } let { id, share_id } = options; this.options = options; if (share_id != 'undefined' && share_id > 0) wx.setStorageSync('share_id', share_id); if (!id) { app.util.message('参数错误', 'redirect:/eaterplanet_ecommerce/moduleA/solitaire/index', 'error'); } this.soli_id = id; }, 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 that = this; let id = this.options && this.options.id || 0; id && this.getData(id),this.getOrderList(), this.getMyOrderList(); util.check_login_new().then((res) => { if (!res) { that.setData({ needAuth: true }) } else { that.showCartGoods().catch(()=>{ console.log('购物车为空') }); } }) }, onHide: function () { this.setData({ clearTime: true }) }, authSuccess: function(){ this.setData({ needAuth: false }) let head_data = this.data.community; console.log('authSuccess'); this.compareCommunity(head_data); this.visiteRecord(); }, /** * 获取详情 */ 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 }, 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 }) if(that.isFirst==1) { that.compareCommunity(head_data); if(solitaire_is_message==1){ that.getCommentList() } setTimeout(() => { that.drawImg(head_data, soli_info); }, 1000); token && that.visiteRecord(); } that.isFirst++; } else { app.util.message(res.data.msg, 'redirect:/eaterplanet_ecommerce/moduleA/solitaire/index', '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 }); }, /** * 比较社区 * shareCommunity: 这个接龙的所属社区 */ compareCommunity: function(shareCommunity) { let that = this; // 原来社区 let currentCommunity = wx.getStorageSync('community'); let currentCommunityId = currentCommunity.communityId || ''; const token = wx.getStorageSync('token'); let { groupInfo } = that.data; let shareCommunityId = shareCommunity.head_id || ''; shareCommunityId && util.getCommunityById(shareCommunityId).then(res=>{ let { hide_community_change_btn, default_head_info } = res; if (res.open_danhead_model == 1) { // 开启单社区 app.globalData.community = default_head_info; app.globalData.changedCommunity = true; wx.setStorage({ key: "community", data: default_head_info }) token && util.addhistory(default_head_info); if(shareCommunityId!=default_head_info.communityId) { let { groupInfo } = that.data; console.log('开启单社区'); app.util.message(`您只能访问自己${groupInfo.group_name}`, 'redirect:/eaterplanet_ecommerce/moduleA/solitaire/index', 'error', '知道了'); return; } } else { // 社区是否存在 if (currentCommunityId != '' && shareCommunityId) { // 存在并且不相同 console.log('currentCommunityId存在 比较社区') if (currentCommunityId != shareCommunityId) { console.log('currentCommunityId存在 社区不同') //如果禁止切换 // if (hide_community_change_btn == 1) { console.log('禁止切换'); app.util.message(`您只能访问自己${groupInfo.group_name}`, 'redirect:/eaterplanet_ecommerce/moduleA/solitaire/index', 'error', '知道了'); return; // } // that.setData({ // hide_community_change_btn, // showChangeCommunity: res.data ? true : false, // changeCommunity: res.data, // currentCommunity: currentCommunity // }) } } else { // 不存在社区id //token 是否存在 if (token) { util.getCommunityInfo().then(function (ret) { //比较社区 console.log('token存在 比较社区') if (ret.community_id && ret.community_id != shareCommunityId) { app.util.message(`您只能访问自己${groupInfo.group_name}`, 'redirect:/eaterplanet_ecommerce/moduleA/solitaire/index', 'error', '知道了'); return; // that.setData({ // showChangeCommunity: true, // currentCommunity: ret // }) } }).catch((param) => { console.log('step4 新人') if (Object.keys(param) != '') util.addhistory(param, true); }); } else { console.log('token不存在 存社区') // 直接存本地 app.globalData.community = res.data; app.globalData.changedCommunity = true; wx.setStorage({ key: "community", data: res.data }) } } } }); }, /** * 切换提示 */ confrimChangeCommunity: function () { let community = this.data.changeCommunity; let token = wx.getStorageSync('token'); app.globalData.community = community; app.globalData.changedCommunity = true; wx.setStorage({ key: "community", data: community }) token && util.addhistory(community); this.setData({ showChangeCommunity: false }) console.log('用户点击确定') }, /** * 取消切换 */ cancelChangeCommunity: function () { let { groupInfo } = this.data; wx.showModal({ title: '提示', content: `此接龙在您所属${groupInfo.group_name}不可参与`, showCancel: false, confirmColor: '#ff5041', success(res) { if (res.confirm) { wx.switchTab({ url: `/eaterplanet_ecommerce/pages/index/index` }) } } }); }, /** * 商品弹窗 */ handleGoodsModal: function () { this.setData({ showGoodsModal: !this.data.showGoodsModal }) }, /** * 评论弹窗 */ handleCommentModal: function () { this.setData({ showCommentModal: !this.data.showCommentModal }) }, changeCartNum: function(e){ let { goods_total_count, goods_id } = e.detail; let soli_info = this.data.soli_info || ''; let goods_list = soli_info.goods_list || []; let gidx = goods_list.findIndex(item => item.actId == goods_id); if (gidx !== -1) { this.showCartGoods().catch(()=>{ console.log('购物车为空') }); goods_list[gidx].goods_total_count = goods_total_count || 0; soli_info.goods_list = goods_list; // let cartNum = 0; // goods_list.forEach(item=>{ // cartNum += item.goods_total_count*1; // }) this.setData({ soli_info }) } }, /** * 购物车弹窗 */ handleCartModal: function() { console.log('购物车弹窗'); let that = this; let showCartModal = this.data.showCartModal; if (showCartModal){ this.setData({ showCartModal: false }) } else { this.showCartGoods().then(()=>{ that.setData({ showCartModal: true }) }).catch(()=>{ console.log('购物车为空') }); } }, /** * showModal */ showCartGoods: function (showModal=true){ let that = this; return new Promise(function (resolve, reject) { const token = wx.getStorageSync('token'); let soli_id = that.soli_id || ''; let currentCommunity = wx.getStorageSync('community'); let community_id = currentCommunity.communityId || ''; soli_id && wx.showLoading(), app.util.request({ url: 'entry/wxapp/index', data: { controller: 'car.show_cart_goods', token, soli_id, community_id, buy_type: 'soitaire', }, dataType: 'json', success: function (res) { wx.hideLoading(); if (res.data.code == 0) { let carts = res.data.carts; if (Object.keys(carts).length == 0){ that.setData({ cartNum: 0 }) reject(res); } else { let { cartNum, totMoney } = that.countCartNum(carts); showModal && that.setData({ carts, cartNum, totMoney }) resolve(); } } else if(res.data.code == 5) { that.setData({ needAuth: true, showAuthModal: true }) } else { console.log(res) } } }) }) }, /** * 计算数量和金额 * @param {*} carts */ countCartNum: function(carts){ let cartNum = 0; let totMoney = 0; Object.keys(carts).forEach(k=>{ Object.keys(carts[k].shopcarts).forEach(j=>{ let gnum = carts[k].shopcarts[j].goodsnum*1; cartNum += gnum; totMoney += carts[k].shopcarts[j].currntprice*gnum; }); }) totMoney = totMoney.toFixed(2); return { cartNum, totMoney }; }, /** * 购物车改变 * 重新请求列表 */ changeCart: function(e){ let id = this.options && this.options.id || 0; let carts = e.detail; let { cartNum, totMoney } = this.countCartNum(carts); id && this.setData({ clearTime: true, carts, cartNum, totMoney }), this.getData(id); }, /** * 留言 */ 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 comment = { id: post_id, soli_id, pid, username: userInfo.nickName, avatar: userInfo.avatarUrl, content, fav_count: 0, addtime: cur_time, reply: [], is_agree: false } let list = that.data.list; 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'); } } }) }, /** * 记录浏览次数 */ visiteRecord: function () { let soli_id = this.soli_id || ''; const token = wx.getStorageSync('token'); app.util.request({ url: 'entry/wxapp/index', data: { controller: 'solitaire.send_visite_record', soli_id, token }, dataType: 'json', success: function (res) { } }) }, /** * 点赞 */ 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' }) } } }) }, /** * 更多商品显示隐藏 */ handleMoreGoods: function(){ this.setData({ hideGoods: !this.data.hideGoods }) }, goPlaceOrder: function(){ let soli_info = this.data.soli_info; // if (soli_info.is_involved) return; this.showCartGoods(false).then(()=>{ let soli_id = soli_info.id || ''; let url = `/eaterplanet_ecommerce/pages/order/placeOrder?type=soitaire&soli_id=${soli_id}`; wx.navigateTo({ url }) }).catch(()=>{ wx.showToast({ title: '请先选择商品!', icon: 'none' }) }); }, /** * 获取评论列表 */ 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: "没有更多记录了~" }) } } }) }, /** * 用户订单列表 */ getMyOrderList: function () { console.log('getMyOrderList'); let that = this; let soli_id = this.options && this.options.id || 0; const token = wx.getStorageSync('token'); token && wx.showLoading(), app.util.request({ url: 'entry/wxapp/index', data: { controller: 'order.orderlist', page: this.myOrderPage, token, soli_id }, dataType: 'json', success: function (res) { wx.hideLoading(); if (res.data.code == 0) { let h = {}; let list = res.data.data; if (list.length < 6) h.noMyOrderMore = true; let oldList = that.data.myOrderList; list = oldList.concat(list); that.myOrderPage++; that.setData({ myOrderList: list, ...h }) } else if (res.data.code == 1) { // 无数据 let h = { noMyOrderMore: true }; if (that.myOrderPage == 1) h.noMyOrderData = 1; that.setData(h) } } }) }, getMoreMyOrder: function(){ this.data.noMyOrderMore || this.getMyOrderList(); }, //取消订单 cancelOrder: function(e){ let that = this; this.canCancel && wx.showModal({ title: '取消订单并退款', content: '取消订单后,款项将原路退回到您的支付账户;详情请查看退款进度。', confirmText: '取消订单', confirmColor: '#ff5344', cancelText: '再等等', cancelColor: '#666666', success(res) { if (res.confirm) { that.canCancel = false; let order_id = e.currentTarget.dataset.type; let idx = e.currentTarget.dataset.index; let token = wx.getStorageSync('token'); app.util.request({ url: 'entry/wxapp/index', data: { controller: 'order.del_cancle_order', token, order_id }, dataType: 'json', method: 'POST', success: function (res) { if(res.data.code==0){ //提交成功 wx.showModal({ title: '提示', content: '取消订单成功', showCancel: false, confirmColor: '#ff5344', success(ret) { if(ret.confirm) { let myOrderList = that.data.myOrderList; myOrderList[idx].order_status_id = 5; that.setData({ myOrderList }) } } }) } else { that.canCancel = true; wx.showToast({ title: res.data.msg || '取消订单失败', icon: 'none' }) } } }) console.log('用户点击确定') } else if (res.cancel) { that.canCancel = true; console.log('用户点击取消') } } }) }, callTelphone: function(event) { let phoneNumber = event.currentTarget.dataset.phone; wx.makePhoneCall({ phoneNumber }) }, /** * 获取评论列表 */ 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: 6 }, dataType: 'json', success: function (res) { wx.hideLoading(); if (res.data.code == 0) { let h = {}; let list = res.data.data; if (list.length < 6) 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(); }, /** * 页面上拉触底事件的处理函数 */ onReachBottom: function () { if (!this.data.loadMore||this.data.solitaire_is_message==0) return false; this.getCommentList(); }, 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": "aspectFill" } }) 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": "20px", "top": "30px", "left": "96px", "rotate": "0", "borderRadius": "", "borderWidth": "", "borderColor": "#000000", "shadow": "", "padding": "0px", "fontSize": "14px", "fontWeight": "bold", "maxLines": "1", "lineHeight": "20px", "textStyle": "fill", "textDecoration": "none", "fontFamily": "", "textAlign": "left" } }, { "type": "text", "text": head.community_name, "css": { "color": "#999999", "background": "", "width": "385px", "height": "17px", "top": "52px", "left": "96px", "rotate": "0", "borderRadius": "", "borderWidth": "", "borderColor": "#000000", "shadow": "", "padding": "0px", "fontSize": "12px", "fontWeight": "normal", "maxLines": "1", "lineHeight": "17px", "textStyle": "fill", "textDecoration": "none", "fontFamily": "", "textAlign": "left" } }, { "type": "text", "text": content, "css": { "color": "#666666", "background": "", "width": "442px", "height": "52px", "top": "158px", "left": "36px", "rotate": "0", "borderRadius": "", "borderWidth": "", "borderColor": "#000000", "shadow": "", "padding": "0px", "fontSize": "18px", "fontWeight": "normal", "maxLines": "2", "lineHeight": "26px", "textStyle": "fill", "textDecoration": "none", "fontFamily": "", "textAlign": "left" } }, { "type": "text", "text": soli_info.solitaire_name, "css": { "color": "#000000", "background": "", "width": "442px", "height": "43px", "top": "95px", "left": "36px", "rotate": "0", "borderRadius": "", "borderWidth": "", "borderColor": "#000000", "shadow": "", "padding": "0px", "fontSize": "30px", "fontWeight": "normal", "maxLines": "1", "lineHeight": "43px", "textStyle": "fill", "textDecoration": "none", "fontFamily": "", "textAlign": "left" } }, { "type": "text", "text": "一群人正在赶来接龙", "css": { "color": "#999999", "background": "", "width": "442px", "height": "23px", "top": (595-h) + "px", "left": "204px", "rotate": "0", "borderRadius": "", "borderWidth": "", "borderColor": "#000000", "shadow": "", "padding": "0px", "fontSize": "16px", "fontWeight": "normal", "maxLines": "2", "lineHeight": "23px", "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": "23px", "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 (e) { let type = e ? e.currentTarget.dataset.type : ''; let h = {}; if(type=='order') { h.showOrderModal = !this.data.showOrderModal } else { h.showShareModal = !this.data.showShareModal this.data.showShareModal || wx.showLoading({ title: '生成中' }) } if(!this.data.showShareModal){ setTimeout(() => { wx.hideLoading() this.setData(h) }, 1000) } else { this.setData(h) } }, /** * 用户点击右上角分享 */ onShareAppMessage: function () { let share_id = wx.getStorageSync('member_id') || ''; let soli_info = this.data.soli_info || ''; let title = (soli_info&&soli_info.solitaire_name) || ''; let id = soli_info&&soli_info.id || ''; let share_path = `eaterplanet_ecommerce/moduleA/solitaire/details?id=${id}&share_id=${share_id}`; console.log(share_path) return { title, path: share_path, success: function (res) { // 转发成功 }, fail: function (res) { // 转发失败 } } }, onShareTimeline: function () { let share_id = wx.getStorageSync('member_id') || ''; let soli_info = this.data.soli_info || ''; let title = (soli_info&&soli_info.solitaire_name) || ''; let id = soli_info&&soli_info.id || ''; var query= `id=${id}&share_id=${share_id}`; return { title, query, success: function (res) { // 转发成功 }, fail: function (res) { // 转发失败 } } } })