shopHome.js 11.9 KB
// pages/reserve/shopHome.js
import App from '../../utils/api';
import util from '../../utils/util';
Page({

    /**
     * 页面的初始数据
     */
    data: {
        seller: {
            imgUrl: '',
            sellName: '',
            date: '',
            seller_tel: '',
            address: '',
            name: '',
            lat: '',
            long: '',
        },
        store: {},
        chef: {},
        reserve: {},
        signboard: {},
        home: {},
        sid: '',
        IsCollectionSeller: false,
		hasValueCertificate:false,//商家是否开通优惠券功能
		hasValueRecharge:false,//商家是否开通充值功能
		titleType:'',//标题样式
		marketing: {},
        recharge_data: {},
        scoreInfo:'',
        priceInfo:'',
        certificate:'',
        coupon_dataList:[],
        dataStr: Date.now() * 1 / 1000,
        StyleType:'',
    },

    /**
     * 生命周期函数--监听页面加载
     */
    onLoad(options) {
        // 新传参是sid  老页面传参是id
        if (options.sid || options.id) {
            let sid = options.sid || options.id
            this.setData({
                sid
            })
            this.getDetail(sid)
            this.getIsCollectionSellerFun(sid)
            this.getSellerVersionFun(sid)
        }
    },
    // 获取商家是否收藏状态
    getIsCollectionSellerFun(sid) {
        App.Customer.IsCollectionSeller({
            sid,
            openid: getApp().openid
        }).then(res => {
            this.setData({
                IsCollectionSeller: res.data,
            })
        })
    },
    // 获取店铺详情
    getDetail(sid) {
        App.Customer.GetSellerDetail({
            openid: getApp().openid,
            sid
        }).then(res => {
            let reserev = res.data;
            this.setData({
                seller: {
                    sellName: reserev.sellername,
                    date: reserev.daily.morning + ' ' + reserev.daily.night + ' ' + reserev.daily.noon,
                    seller_tel: reserev.seller_tel.split(','),
                    address: reserev.map_address,
                    lat: reserev.lat,
                    long: reserev.long,
                    is_online_reserve: reserev.is_online_reserve,
                }
            })
            console.log('sellerseller', {
                ...this.data.seller
            });
            setTimeout(() => {
                this.getSellerTemplateConfFun(reserev.id);
            }, 0);
        }).catch(res => {
            console.log(res, '详情请求失败');
        })
    },
	// 获取商家版本,不是超能版或者没有开通对应模块,不显示
	getSellerVersionFun(sellerid) {
		App.SellerVersion.GetSellerVersion({
			sellerid
		}).then((res) => {
			let data = res.data;
			console.log('版本列表', data);
			if (data && data.length > 0) {
				data.sort((a, b) => b.cdate * 1 - a.cdate * 1);
				// 获取店铺当前版本  (cdate最大最后一个充入的 && 当前时间有效 && 当前版本)
				let obj = data.find(item => item.vtype == 1 || item.vtype == 2 || item.vtype == 4);
				console.log('当前版本', {
					...obj
				});
				// 优惠券功能:超能版 || 高级版 || 有优惠券模块
				const hasValueCertificate = obj.vtype == '1' || obj.vtype == '4' || data.some(item => item.vid == '8');
				// 充值功能:超能版 || 有充值模块
				const hasValueRecharge = obj.vtype == '1' || data.some(item => item.vid == '9');
				this.setData({
					hasValueCertificate,
					hasValueRecharge,
				})
			}
		})
	},
	// 点击了解更多会员优惠政策
	gotoFavourableList() {
		let url = util.http_build_query({
			sellerName: this.data.seller.sellName,
			sellerid: this.data.sid,
			types: '3'
		}, '/pack-cookbook/pages/favourableList')
		wx.navigateTo({
			url
		})
	},
	// 拨打电话
	callPhone(e) {
		const phone = e.currentTarget.dataset['phone'];
		wx.makePhoneCall({
			phoneNumber: phone
		})
	},
	// 跳转到商家入驻页
	gotoJoinSeller() {
		wx.navigateTo({
            url: util.http_build_query({
                laiyuan:'商家详情页'
            }, '/pages/customer/joinSeller')
		})
	},
    // 获取商家设置营销信息
    getSellerTemplateConfFun(sid) {
        App.Seller.GetSellerTemplateConf({
            sid
        }).then(res => {
            let data = res.data
			console.log('data', data);
			let couponList = []
            let titleType, home, chef, signboard, store, marketing, coupon, reserve, StyleType;
            chef = util.determine(data.chef);
			reserve = util.determine(data.reserve);
            signboard = util.determine(data.signboard);
            store = util.determine(data.store);
            home = util.determine(data.home);
            marketing = util.determine(data.marketing);
			titleType = data.title_class || '1';
            StyleType = data.type;if (store) store.content = (store.is_introduce_all == '1' && store.content) ? util.determine(store.content) : '';
			if (chef) chef.content = (chef.is_introduce_all == '1' && chef.content) ? util.determine(chef.content) : '';
			if (signboard) signboard.content = (signboard.is_introduce_all == '1' && signboard.content) ? util.determine(signboard.content) : '';
			if (reserve) reserve.content = (reserve.is_introduce_all == '1' && reserve.content) ? util.determine(reserve.content) : '';
			if (home) home.image = (home && home.image && (!home.id_first_image || home.id_first_image!='0')) ? home.image : '';
            if (marketing) {
				marketing.logo = (marketing.logo && (!marketing.is_logo || marketing.is_logo!='0')) ? marketing.logo : '';
				coupon = marketing.coupon_data ? util.determine(marketing.coupon_data) : '';
            }
			// is_cash 代金券  is_discount折扣券  is_dish菜品券 只有代金券有几折显示
			if (coupon && util.getType(coupon) == 'object') {
				couponList.push({
					id: coupon.id
				});
			}
			if (coupon && util.getType(coupon) == 'array') {
				if (coupon.length > 0) {
					coupon.forEach(item => {
						couponList.push({
							id: item.id
						})
					})
				}
            }
            if (store && store.images && store.images.length > 0) store.images = util.determine(store.images);
            if (reserve && reserve.park_info_images && reserve.park_info_images.length > 0) reserve.park_info_images = util.determine(reserve.park_info_images);
            if (signboard && signboard.images) signboard.images = util.determine(signboard.images);
            let obj = {
                chef,
				reserve,
                signboard,
                store,
                home,
				reserve,
				marketing,
				coupon,
                couponList,
                StyleType,
				titleType,
            }
            console.log('获取数据', {
                ...obj
            });
			// 根据券ID获取券详情
			this.getActivityByIdFun(couponList, couponList.length)
			// 根据充值ID获取充值详情
			if (marketing && marketing.is_recharge == '1' && marketing.recharge_data) {
				this.getRechargeDetail(marketing.recharge_data.id)
			}
            this.setData({
                chef,
				reserve,
                signboard,
                store,
                home,
                marketing,
                StyleType,
				titleType,
            })
        }).catch(res => {
            console.log('GetSellerTemplateConf请求失败');
        })
    },
	// 根据充值ID获取充值详情
	getRechargeDetail(id) {
		App.Activity.GetNewRecharge({
			id
		}).then(res => {
			let detail = res.data
			let exp_date = res.data.exp_date ? JSON.parse(res.data.exp_date) : ''
			let recharge_list = res.data.recharge_list ? JSON.parse(res.data.recharge_list) : ''
			let priceInfo, scoreInfo, certificate;
			detail.recharge_list = recharge_list;
			detail.exp_date = exp_date;
			if (recharge_list.is_price == '1') priceInfo = '会员充值满' + detail.recharge_money + '元赠送' + recharge_list.price + '元余额';
			if (recharge_list.is_score == '1') scoreInfo = '会员充值满' + detail.recharge_money + '元赠送' + recharge_list.score + '积分';
			if (recharge_list.is_coupons == '1' && recharge_list.coupons_names.length > 0) certificate = recharge_list.coupons_names.join('、');
			let recharge_data = (this.data.dataStr<detail.etime*1 && detail.is_open == '1') ? detail : ''
            console.log('商家详情--------------充值',recharge_data);
            this.setData({
				recharge_data,
				scoreInfo,
				priceInfo,
				certificate
			})
		})
	},
	// 根据券ID获取券详情
	getActivityByIdFun(ids, length) {
		let coupon_dataList = [];
		ids.forEach(i => {
			App.Activity.GetActivityById({
				id: i.id
			}).then(res => {
				if (res.data.length > 0) {
					let detail = res.data[0];
					detail.stringifyUse = detail.use ? JSON.stringify(detail.use) : '';
					detail.exp_date = detail.exp_date ? util.determine(detail.exp_date) : '';
					detail.use = detail.use ? util.determine(detail.use) : '';
					if ((detail.use && (!detail.use.is_cash || detail.use.is_cash == '1'))) {
						let cash = detail.use.cash * 1;
						let price = detail.price * 1;
						detail.discount = cash != 0 ? ((price / cash) * 10).toFixed(1) : '';
					}
					coupon_dataList.push(detail);
					if (length === coupon_dataList.length) {
                        coupon_dataList = coupon_dataList.filter(item=>{return this.data.dataStr<(item.etime*1) && item.is_open == '1'})
                        console.log('商家详情--------------------优惠券',coupon_dataList);
						this.setData({
							coupon_dataList,
						})
					}
				}
			})
		})
	},
    // 导航
    looklocation: function () {
        wx.reportMonitor('1015', 1)
        wx.openLocation({
            latitude: Number(this.data.seller.lat),
            longitude: Number(this.data.seller.long),
            scale: 17,
            address: this.data.seller.address,
            success: function (res) {
                console.log(res)
            }
        })
    },
    // 点击收藏按钮
    follow() {
        let param = {
            sid: this.data.sid,
            openid: getApp().openid,
        }
        if (this.data.IsCollectionSeller) { //已收藏
            param.cancel = 1
        }
        let hasFollow = !this.data.IsCollectionSeller
        App.Customer.SetCollectionRel(param).then(res => {
            if (res.ret == 200) {
                util.toast('设置成功', 'none')
                this.setData({
                    IsCollectionSeller: hasFollow
                })
            }
        })
    },
    // 分享
    sharesetting() {
        wx.reportMonitor('1017', 1)
        let parmdata = {
            sid: this.data.sid,
            fromid: getApp().openid
        }
        return {
            title: '向您推荐' + this.data.seller.sellName + ',快来看看吧!',
            path: util.http_build_query(parmdata, '/pages/reserve/shopHome'),
            imageUrl: this.data.home.image || 'http://nosqn.colorcun.com/reserve/images/3x/%E6%9A%82%E6%97%A0.png',
        }
    },
    // 拨打电话
    call(e) {
        let info = e.currentTarget.dataset['info'];
        wx.reportMonitor('1012', 1)
        wx.makePhoneCall({
            phoneNumber: info
        })
    },
    /**
     * 生命周期函数--监听页面初次渲染完成
     */
    onReady() {

    },

    /**
     * 生命周期函数--监听页面显示
     */
    onShow() {

    },

    /**
     * 生命周期函数--监听页面隐藏
     */
    onHide() {

    },

    /**
     * 生命周期函数--监听页面卸载
     */
    onUnload() {

    },

    /**
     * 页面相关事件处理函数--监听用户下拉动作
     */
    onPullDownRefresh() {

    },

    /**
     * 页面上拉触底事件的处理函数
     */
    onReachBottom() {

    },
    /**
     * 用户点击右上角分享
     */
    onShareAppMessage() {
        return this.sharesetting();
    },
    /**
     * 监听用户点击分享到朋友圈按钮的操作
     */
    onShareTimeline() {
        return this.sharesetting();
    },
})