login.js 8.85 KB
// pages/customer/login.js
var util = require('../../utils/util.js')
import App from '../../utils/api';
Page({
    /**
     * 页面的初始数据
     */
    data: {
        types: '', //1领券 2赴约 3优惠券详情领券、消费金领券
        avatarUrl: 'https://nosqn.colorcun.com/defaultAvatar.png',
        nickName: '',
        token: '',
        purePhoneNumber: '',
        verifyCode: '', //输入的
        verifySend: true, // 是否获取验证码
        countDown: 600, // 倒计时
        settime: '',
        randomNumber: '', //验证码
        phoneType: '0', // 0是未输入手机号 1是获取手机号 2验证码输入手机号
        avatarType: '0', // 0未上传头像 1已上传头像
        options: {},
    },

    /**
     * 生命周期函数--监听页面加载
     */
    onLoad(options) {
        console.log('登录页', {
            ...options
        });
        this.setData({
            options: options,
            types: options.types,
        })
        this.getCheckUserHavePhone()
    },
    // 检测用户是否绑定手机号
    getCheckUserHavePhone() {
        App.Wechat.CheckUserHavePhone({
            openid: getApp().openid,
        }).then((json) => {
            if (json.ret == 200) {
                let data = json.data;
                if (data) {
                    this.setData({
                        purePhoneNumber: data.phone,
                        nickName: data.nickname ? data.nickname : '',
                        avatarUrl: data.headimgurl ? data.headimgurl : 'https://nosqn.colorcun.com/defaultAvatar.png',
                    })
                }
            }
        })
    },
    // 点击确定
    onSubmit(e) {
        console.log('e----', e);
        const {
            nickname,
        } = e.detail.value;
        this.setData({
            nickName: nickname
        })
        if (!nickname && this.data.types == '2') {
            return util.toast('请输入昵称', 'none')
        }
        if (!this.data.purePhoneNumber) {
            return util.toast('请输入手机号', 'none')
        }
        if (this.data.phoneType == '2' && !this.data.verifyCode) {
            return util.toast('请输入验证码', 'none')
        }
        if (this.data.phoneType == '2' && this.data.verifyCode != this.data.randomNumber) {
            return util.toast('验证码错误,请重新输入', 'none')
        }
        let obj = {
            nickname: nickname,
            phone: this.data.purePhoneNumber,
        }
        if (this.data.avatarType == '1') obj['avatarUrl'] = this.data.avatarUrl;
        console.log('核验成功', {
            ...obj
        });
        this.bindUserPhoneFun()
    },
    // 输入金额
    bindKeyInput(e) {
        console.log('bindchange携带value值为:', e.detail.value);
        if (this.data.phoneType == '2') return false
        this.setData({
            phoneType: '2',
        })
    },
    // 获取验证码
    deliver() {
        let that = this
        let phone = this.data.purePhoneNumber.trim();
        var myreg = /^1[3456789]\d{9}$/;
        let {
            settime
        } = that.data
        if (!phone) {
            return util.toast('请输入手机号码', 'none')
        }
        if (!myreg.test(phone)) {
            return util.toast('请输入正确的手机号码', 'none')
        }
        var randomNumber = (Math.floor(Math.random() * 9000 + 1000)) + '';
        App.SaiYouYun.VcCodeMessage({
            code: randomNumber,
            phone,
            openid: getApp().openid,
        }).then(res => {
            if (res.ret != 200) {
                return util.toast(res.msg, 'none')
            }
            util.toast('短信验证码已发送,请注意查收', 'none')
            let time = 600
            settime = setInterval(() => {
                that.setData({
                    countDown: time--,
                })
                if (that.data.countDown == 0) {
                    clearInterval(settime)
                    that.setData({
                        verifySend: true,
                        settime,
                        countDown: 600
                    })
                }
            }, 1000)
            that.setData({
                settime,
                randomNumber: randomNumber,
                verifySend: false,
                phoneType: '2',
            })
        })
    },
    // 上传头像
    onChooseAvatar(e) {
        const {
            avatarUrl
        } = e.detail
        util.uploadFile(avatarUrl, this.data.token, 'avatarImg').then(res => {
            if (res) {
                console.log('七牛云图片地址', res);
                this.setData({
                    avatarUrl: res,
                    avatarType: '1',
                })
            } else {
                util.toast('头像上传失败!', 'none')
            }
        });
    },
    // 获取code、手机号
    getPhoneNumberFun(e) {
        if (e.detail && e.detail.code) {
            App.Wechat.GetUserPhoneNumber({
                code: e.detail.code,
            }).then(res => {
                if (res.ret == 200 && res.data && res.data.phone_info && res.data.phone_info.purePhoneNumber) {
                    this.setData({
                        purePhoneNumber: res.data.phone_info.purePhoneNumber,
                        phoneType: '1',
                    })
                } else {
                    util.toast('手机号获取失败!', 'none')
                }
            })
        } else {
            util.toast('手机号获取失败!', 'none')
        }
    },
    // 用户绑定手机号
    bindUserPhoneFun() {
        let params = {
            phone: this.data.purePhoneNumber,
            openid: getApp().openid,
            nickname: this.data.nickName,
        }
        if (this.data.avatarType == '1') params.headimgurl = this.data.avatarUrl;
        App.Wechat.BindUserPhone(params).then(res => {
            console.log(res, '用户绑定手机号');
            if (res.ret == 200) {
                //1邀请函领券
                if (this.data.types == '1') {
                    this.setcouponFun()
                // 2赴约
                } else if (this.data.types == '2') {
                    this.confirmed()
                // 3优惠券详情领券、消费金领券
                }else if (this.data.types == '3') {
                    setTimeout(() => {
                        util.toast('登陆成功!', 'none')
                        wx.navigateBack(1)
                    }, 3500);
                }
            }
        })
    },
    // 弹框领取免费券
    setcouponFun() {
        let arr = JSON.parse(this.data.options.couponArr); //待领取的优惠券列表
        console.log('弹框领取免费券数组-----', arr);
        let str = arr.flatMap(item => Array(item.number).fill(item.id)).join(',');
        console.log('弹框领取免费券id', str);
        App.Activity.SetActivityAsReserve({
            aid: str,
            rid: this.data.options.id,
        }).then((json) => {
            if (json.ret != 200) {
                wx.showToast({
                    title: json.msg,
                    duration: 2000,
                    mask: true
                })
            } else {
                setTimeout(() => {
                    util.toast('登陆领取成功!', 'none')
                    wx.navigateBack(1)
                }, 3500);
            }
        })
    },
    // 赴约手机号传参
    confirmed() {
        let obj = {
            openid: getApp().openid,
            nickname: this.data.nickName,
            avatar: this.data.avatarType == '1' ? this.data.avatarUrl : '',
        }
        let userinfo = JSON.stringify(obj)
        App.Reserve.SetRelaSuccess({
            rid: this.data.options.id,
            openid: getApp().openid,
            is_agree: 1,
            inviting_phone: this.data.purePhoneNumber,
            userinfo
        }).then(res => {
            if (res.ret == 200) {
                setTimeout(() => {
                    util.toast('登陆赴约成功!', 'none')
                    wx.navigateBack(1)
                }, 3500);
            }
        })
    },
    /**
     * 生命周期函数--监听页面初次渲染完成
     */
    onReady() {

    },

    /**
     * 生命周期函数--监听页面显示
     */
    onShow() {
        this.getToken()
    },
    getToken() {
        App.Qiniu.GetUploadToken().then(res => {
            let token = res.data.token
            this.setData({
                token
            })
        })
    },
    /**
     * 生命周期函数--监听页面隐藏
     */
    onHide() {

    },

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

    },

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

    },

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

    },
})