// pages/register/index.js
const { gender, type } = require('../../utils/dict')
import WxValidate from '../../utils/wxValidate'
const app = getApp();
Page({
    /**
     * 页面的初始数据
     */
    data: {
        frameStyle: { useTop: true, name: '注册', leftArrow: false, useBar: false },
        form: {},
        fields: [
            { label: '头像', model: 'icon', type: "upload" },
            { label: '姓名', model: 'name' },
            { label: '身份证号', model: 'card', type: 'idCard' },
            { label: '性别', model: 'gender', type: 'select' },
            { label: '手机号', model: 'phone' },
            { label: '用户类型', model: 'type', type: 'select' },

            // { label: '邮箱', model: 'email' },
        ],
        // 同意
        agree: false
    },
    initValidate() {
        const rules = { icon: { required: true }, name: { required: true }, card: { required: true }, gender: { required: true }, phone: { required: true, tel: true }, type: { required: true } }
        // 验证字段的提示信息，若不传则调用默认的信息
        const messages = { icon: { required: '请选择头像', }, name: { required: '请输入用户姓名', }, card: { required: '请输入身份证号', }, gender: { required: '请选择性别', }, phone: { required: '请输入手机号', }, type: { required: '请选择用户类型', } };
        this.WxValidate = new WxValidate(rules, messages)
    },
    // 同意协议
    toTxt: function () {
        wx.navigateTo({ url: `/pages/agree_txt/index` })
    },
    // 同意
    changeAgree: function () {
        if (this.data.agree) this.setData({ agree: false })
        else this.setData({ agree: true })
    },
    async toSubmit(e) {
        const that = this;
        const data = e?.detail;
        if (!data) return;
        const wxInfo = app.globalData.wxInfo
        if (!wxInfo.openid) {
            wx.showToast({ title: '缺少微信关联', icon: 'error' })
            return
        }
        data.openid = wxInfo.openid;
        if (!this.WxValidate.checkForm(data)) {
            const error = this.WxValidate.errorList[0];
            wx.showToast({ title: `${error.msg}`, icon: 'error', duration: 2000 })
            return false
        } else {
            let agree = that.data.agree;
            if (agree) {
                const res = await app.$post('/newCourt/api/user', data)
                if (app.$checkRes(res)) {
                    wx.showToast({
                        title: '注册成功',
                        success: () => {
                            wx.redirectTo({ url: '/pages/index/index' });
                        }
                    })
                } else {
                    const { errmsg = '注册失败' } = res;
                    wx.showModal({ title: errmsg, showCancel: false })
                }
            } else {
                wx.showToast({ title: `请同意用户协议`, icon: 'error', duration: 2000 })
            }
        }
    },

    /**
     * 生命周期函数--监听页面加载
     */
    onLoad(options) {
        const fields = this.data.fields;
        // 性别
        const fg = fields.find(f => f.model === 'gender');
        if (fg) fg.list = gender
        // 用户类别
        const ft = fields.find(f => f.model === 'type');
        if (ft) ft.list = type;
        this.setData({ fields })
        //验证规则函数
        this.initValidate();
    },

    /**
     * 生命周期函数--监听页面初次渲染完成
     */
    onReady() { },

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

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

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

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

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

    /**
     * 用户点击右上角分享
     */
    onShareAppMessage() { },
});
