sellerGift.js 13.2 KB
// pages/reserve/sellerGift.js
import util from '../../utils/util';
import App from '../../utils/api';
import RS from '../../utils/reserveStatus'
Page({
    /**
     * 页面的初始数据
     */
    data: {
        options: {},
        marketing: {},
        recharge_data: {},
        coupon_dataList: [],
        seller: {
            name: '',
            tablesText: '',
            date: '',
            addr: ''
        },
        StyleType: '',
        priceInfo: '',
        scoreInfo: '',
        discount: '',
        certificate: '',
        dataStr: Date.now() * 1 / 1000,
        is_comments: '0',
        is_user_comments: false,
        hasValueCertificate: false, //商家是否开通优惠券功能
        hasValueRecharge: false, //商家是否开通充值功能
        couponData: '', //评价赠送优惠券数据
    },
    /**
     * 生命周期函数--监听页面加载
     */
    onLoad(options) {
        this.id = options.id
        let param = {
            options: options
        }
        console.log('options', options);
        this.setData(param)
    },
    // 去评价
    evaluateFun() {
        let url = util.http_build_query({
            sellerName: this.data.seller.name,
            sellerid: this.data.seller.sid,
            oid: this.data.options.id,
            types: '1',
            previousPage: '1',
        }, '/pages/pinglun/createOpinion')
        wx.navigateTo({
            url
        })
    },
    /**
     * 生命周期函数--监听页面显示
     */
    onShow: function () {
        this.getDetail()
    },
    // 获取店铺详情
    getDetail() {
        App.Reserve.Detail({
            openid: getApp().openid,
            rid: this.data.options.id
        }).then(res => {
            let reserev = RS.reserve(res.data)
            this.setData({
                is_user_comments: res.data.is_user_comments,
                seller: {
                    name: reserev.seller.sellername,
                    sid: reserev.sid,
                }
            })
            console.log('reserev  reserev', reserev);
            setTimeout(() => {
                this.getSellerVersionFun(reserev.sid);
                this.getSellerTemplateConfFun(reserev.sid);
            }, 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,
                })
            }
        })
    },
    // 获取商家设置营销信息
    getSellerTemplateConfFun(sid) {
        console.log(sid, 'sidsidsidsid');
        App.Seller.GetSellerTemplateConf({
            sid
        }).then(res => {
            let data = res.data
            console.log('data', data);
            let couponList = []
            let StyleType, marketing, coupon, coupon_data_pay, coupon_data_free, is_comments;
            marketing = util.determine(data.marketing);
            StyleType = data.type;
            if (marketing) {
                is_comments = marketing.is_comments ? marketing.is_comments : '';
                coupon = (marketing.coupon_data && marketing.is_coupon == '1') ? util.determine(marketing.coupon_data) : '';
                coupon_data_pay = (marketing.coupon_data_pay && marketing.is_coupon_pay == '1') ? util.determine(marketing.coupon_data_pay) : '';
                marketing.coupon_data_payList = coupon_data_pay
                coupon_data_free = (marketing.coupon_data_free && marketing.is_coupon_free == '1') ? util.determine(marketing.coupon_data_free) : '';
                marketing.coupon_data_freeList = coupon_data_free
                let info = marketing.coupon_data_comments ? util.determine(marketing.coupon_data_comments) : '';
                let couponDataId = info && info.length > 0 ? info[0].id : {}
                // 根据券ID获取评价赠送的券详情
                if(couponDataId) this.getEvaluateFun(couponDataId)
            }
            // is_cash 代金券  is_discount折扣券  is_dish菜品券 只有代金券有几折显示
            // 获取全部的优惠券(商家券、个人券、免费券、付费券)
            couponList = this.addCoupons(coupon,couponList);
            couponList = this.addCoupons(coupon_data_pay,couponList);
            couponList = this.addCoupons(coupon_data_free,couponList);
            // 根据券ID获取券详情
			this.getActivityByIdFun(couponList)
            // 根据充值ID获取充值详情
            if (marketing && marketing.is_recharge && marketing.is_recharge == '1' && marketing.recharge_data) {
                this.getRechargeDetail(marketing.recharge_data.id)
            }
            let obj = {
                marketing,
                coupon,
                is_comments,
                StyleType,
            }
            console.log('获取数据', {
                ...obj
            });
            this.setData({
                ...obj
            })
        }).catch(res => {
            console.log('GetSellerTemplateConf请求失败');
        })
    },
    // 获取评价赠送的券最新详情
    getEvaluateFun(id){
        App.Activity.GetActivityById({
            id
        }).then(res => {
            if (res.data.length > 0) {
                let couponData = res.data[0]
                couponData.use = couponData.use ? util.determine(couponData.use) : '';
                couponData.exp_date = couponData.exp_date ? util.determine(couponData.exp_date) : '';
                if ((couponData.use && (!couponData.use.is_cash || couponData.use.is_cash == '1'))) {
                    let cash = couponData.use.cash * 1;
                    let price = couponData.price * 1;
                    couponData.discount = cash != 0 ? ((price / cash) * 10).toFixed(1) : '';
                }
                // showCoupon 代表赠送的券没过有效期 && 是开启状态
                couponData.showCoupon = (this.data.dataStr<(couponData.etime*1) && couponData.is_open=='1') ? '1' : '0';
                console.log('邀请函--------------------评价赠送的优惠券',couponData);
                this.setData({
                    couponData:res.data[0]
                })
            }
        })
    },
    // 根据充值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(obj) {
        App.Activity.GetActivityById({
            id: obj.map(item => item.id).join(','),
        }).then(res => {
            if (res.data.length > 0) {
                let list = res.data.filter(item => {
                    return this.data.dataStr < (item.etime * 1) && item.is_open == '1'
                })
                list.forEach(detail => {
                    detail.stringifyUse = detail.use ? JSON.stringify(detail.use) : '';
                    detail.exp_date = detail.exp_date ? util.determine(detail.exp_date) : '';
                    detail.arule = detail.arule ? util.determine(detail.arule) : '';
                    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) : '';
                    }
                    let num = detail.grant_num*1-detail.grant_last*1;
                    if (num > 0) {
                        detail.receiveNumText = ''
                        if (num >= 0 && num <= 100) {
                            detail.receiveNumText = num.toString();
                        } else if (num >= 101 && num <= 199) {
                            detail.receiveNumText = '100+';
                        } else if (num >= 200 && num <= 299) {
                            detail.receiveNumText = '200+';
                        } else {
                            detail.receiveNumText = Math.floor(num / 100) * 100 + '+';
                        }
                    }
                    if (detail.exp_date && detail.exp_date.week_data) {
                        let noon = this.hasConsecutiveSelect(detail.exp_date.week_data, '1').rArr.join('、')
                        let nig = this.hasConsecutiveSelect(detail.exp_date.week_data, '2').rArr.join('、')
                        if (noon) noon = '午餐:' + noon
                        if (nig) nig = '晚餐:' + nig
                        detail.noonText = noon;
                        detail.nigText = nig;
                    }
                })
                console.log('邀请函--------------------优惠券', list);
                this.setData({
                    coupon_dataList: list,
                })
            }
        })
    },
    // 获取所有的券并且展示
    addCoupons(coupons, couponList) {
        if (coupons && util.getType(coupons) == 'object') {
            couponList.push({
                id: coupon.id,
                number: coupon.number
            });
        }
        if (coupons && util.getType(coupons) === 'array' && coupons.length > 0) {
            coupons.forEach(item => {
                couponList.push({
                    id: item.id,
                    number: item.number
                });
            });
        }
        return couponList
    },
    // 处理优惠券不可用日期数据
    hasConsecutiveSelect(arr, type) {
        let firstTitle = null;
        let lastTitle = null;
        let rArr = []
        let num = 0
        for (let i = 0; i < arr.length; i++) {
            let str = type == '1' ? arr[i].selectNoon : arr[i].selectNig
            if (str) {
                rArr.push(arr[i].title)
                num++
                if (num == 1) {
                    firstTitle = arr[i].title
                }
                if (num >= 5) {
                    lastTitle = arr[i].title
                }
                if (num >= 5 && i >= (arr.length - 1)) {
                    let fi = rArr.findIndex((item) => {
                        return item == firstTitle
                    })
                    rArr.splice(fi, num, firstTitle + '至' + lastTitle)
                    num = 0
                }
            } else {
                if (num < 5) {
                    num = 0
                    firstTitle = null;
                    lastTitle = null;
                } else {
                    let fi = rArr.findIndex((item) => {
                        return item == firstTitle
                    })
                    rArr.splice(fi, num, firstTitle + '至' + lastTitle)
                    num = 0
                }
            }
        }
        return {
            rArr,
            lastTitle,
            firstTitle
        };
    },
    /**
     * 生命周期函数--监听页面隐藏
     */
    onHide() {},

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

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

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

    },
})