shopHome.js 9.8 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: {},
        signboard: {},
        home: {},
        sid: '',
        IsCollectionSeller: false,
		hasValueCertificate:false,//商家是否开通优惠券功能
		hasValueRecharge:false,//商家是否开通充值功能
		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,
                }
            })
            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) => {
			console.log('版本列表',res.data);
			if(res.data && res.data.length>0){
				const hasValueCertificate = res.data.some(item => item.vid == '1' || item.vid == '2' || item.vid == '3' || item.vid == '8');
				const hasValueRecharge = res.data.some(item => item.vid == '1' || item.vid == '2' || item.vid == '3' || 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: '/pages/customer/joinSeller',
		})
	},
    // 获取商家设置营销信息
    getSellerTemplateConfFun(sid) {
        App.Seller.GetSellerTemplateConf({
            sid
        }).then(res => {
            let data = res.data
			let couponList = []
            let home, chef, signboard, store, marketing, coupon, StyleType;
            chef = util.determine(data.chef);
            signboard = util.determine(data.signboard);
            store = util.determine(data.store);
            home = util.determine(data.home);
            marketing = util.determine(data.marketing);
            StyleType = data.type;
			if (marketing) {
				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.length > 0) store.images = util.determine(store.images);
            if (signboard && signboard.images) signboard.images = util.determine(signboard.images);
            let obj = {
                chef,
                signboard,
                store,
                home,
				marketing,
				coupon,
                couponList,
                StyleType,
            }
            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,
                signboard,
                store,
                home,
                marketing,
                StyleType,
            })
        }).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('、');
			this.setData({
				recharge_data: detail,
				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 === ids.length) {
						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();
    },
})