let app = getApp();

import Notify from '@vant/weapp/notify/notify';

import {
    selfFormatTimeYMDHMS
} from "../../../../utils/util.js"

import {
    visitorPersonRq,
    selectVisitorRecordByIdRq,
    updateVisitorPersonStatusRq
} from "../../../../api/meeting/visitorIinvitation.js"


Page({

    /**
     * 页面的初始数据
     */
    data: {
        IMG_NAME: app.IMG_NAME,
        id: null,
        title: null,
        userDetail: {},
        idcardTypeShow: false,
        idcardTypeList: [{
            name: '居民身份证',
        }, ],
        visitTimeShow: false, // 到访时间show
        visitTimeDate: new Date().getTime(), // 到访时间-当前
        visitTimeMinDate: new Date().getTime(), // 到访时间-最小
        leaveTimeShow: false, // 离开时间show
        leaveTimeDate: new Date().getTime(), // 离开时间-当前
        fileList: [], // 上传文件
        detail: {
            customerId: null, //企业id
            customerName: null, //企业名称
            userId: null, // 被访人id
            username: null, //被访人姓名
            mobile: null, //被访人手机号
            intervieweeId: null, // 访客id
            name: null, // 访客姓名
            phone: null, // 访客手机号
            cardType: '居民身份证', // 证件类型 
            cardNo: null, // 证件号
            visitTime: null, // 到访时间
            leaveTime: null, // 离开时间
            visitContent: null, // 来访事由
            photo: null, // 头像-相对路径
            url: null, // 人脸设备图片-全路径
        },
    },

    /**
     * 生命周期函数--监听页面加载
     */
    onLoad(options) {
        console.log('onLoad', options)
        let _this = this;
        let userDetail = wx.getStorageSync('user')
        //
        let detail = _this.data.detail;
        // 添加 默认设置访客信息
        detail.intervieweeId = userDetail.id // 访客id
        detail.name = userDetail.username // 访客姓名
        detail.phone = userDetail.mobile // 访客手机号
        _this.setData({
            ...options,
            userDetail,
            detail
        })
        // 页面初始化 options为页面跳转所带来的参数
        wx.setNavigationBarTitle({
            title: options.title
        })
    },

    // 跳转-索引栏（单位、人员）
    jumpIndexBar(e) {
        console.log('jumpIndexBar', e);
        let _this = this;
        let title = e.currentTarget.dataset.title
        // 校验是否选择“被访单位” 后 ，再选择被访人信息
        if (title == '人员' && !_this.data.detail.customerId) {
            // 错误消息提示
            _this.showErrMsg('请先选择被访单位!')
            return;
        }
        // url 参数
        let param = '?title=' + title;
        if (title == '人员') {
            param = param + '&id=' + _this.data.detail.customerId;
        }
        wx.navigateTo({
            url: '/pages/meeting/visitorIinvitation/indexBar/indexBar' + param,
        })
    },

    // 显示-身份证类型
    showIdcardType() {
        let _this = this;
        _this.setData({
            idcardTypeShow: true
        })
    },

    // 选择-身份证类型
    selectIdcardType(e) {
        console.log('selectIdcardType', e);
        let _this = this;
        let detail = _this.data.detail;
        detail.cardType = e.detail.name;
        _this.setData({
            idcardTypeShow: false,
            detail
        })
    },

    // 关闭-身份证类型
    closeIdcardType() {
        let _this = this;
        _this.setData({
            idcardTypeShow: false
        })
    },

    // 显示-到访时间
    showVisitTime() {
        let _this = this;
        _this.setData({
            visitTimeShow: true
        })
    },

    // 关闭-到访时间
    closeVisitTime() {
        let _this = this;
        _this.setData({
            visitTimeShow: false
        })
    },

    // 确认-到访时间
    confirmVisitTime(e) {
        console.log('confirmVisitTime', e);
        let _this = this;
        let detail = _this.data.detail;
        detail.visitTime = selfFormatTimeYMDHMS(e.detail);
        _this.setData({
            visitTimeShow: false,
            visitTimeDate: e.detail,
            detail
        })
    },

    // 显示-离开时间
    showLeaveTime() {
        let _this = this;
        _this.setData({
            leaveTimeShow: true
        })
    },

    // 关闭-离开时间
    closeLeaveTime() {
        let _this = this;
        _this.setData({
            leaveTimeShow: false
        })
    },

    // 确认-离开时间
    confirmLeaveTime(e) {
        console.log('confirmLeaveTime111', e);
        let _this = this;
        let detail = _this.data.detail;
        detail.leaveTime = selfFormatTimeYMDHMS(e.detail);
        _this.setData({
            leaveTimeShow: false,
            leaveTimeDate: e.detail,
            detail
        })
    },


    // 图片-上传前校验
    beforeRead(event) {
        const {
            file,
            callback
        } = event.detail;
        callback(file.type === 'image');
    },

    // 图片-上传后
    afterRead(event) {
        let _this = this;
        const {
            file
        } = event.detail;
        // 当设置 mutiple 为 true 时, file 为数组格式，否则为对象格式
        wx.uploadFile({
            url: app.DOMAIN_NAME + '/api/dfs/upload',
            filePath: file.url,
            name: 'file',
            formData: {},
            success(res) {
                console.log('upload file ', res);
                let fileData = JSON.parse(res.data)
                // 上传完成需要更新 fileList
                let fileList = _this.data.fileList;
                fileList.push({
                    relativeUrl: fileData.fileName,
                    url: app.IMG_NAME + fileData.fileName,
                    name: fileData.fileName,
                    deletable: true,
                })
                _this.setData({
                    fileList
                })
            },
        });
    },

    // 删除图片
    deleteImg(event) {
        console.log('deleteImg', event);
        let _this = this;
        let fileList = _this.data.fileList;
        fileList.splice(event.detail.index, 1);
        _this.setData({
            fileList
        })
    },

    // input输入内容监听
    fieldInput(e) {
        console.log('fieldInput', e);
        let _this = this;
        let detail = _this.data.detail;
        detail[e.currentTarget.dataset.name] = e.detail
        _this.setData({
            detail
        })
    },

    // 提交数据
    submitData() {
        let _this = this;
        // 上传文件列表
        let fileList = _this.data.fileList;
        // 数据
        let detail = _this.data.detail;
        //
        // 校验数据
        //
        // 被访单位
        if (!detail.customerId) {
            _this.showErrMsg('请选择被访单位!')
            return;
        }
        // 被访人姓名、电话
        if (!detail.userId) {
            _this.showErrMsg('请选择被访人姓名、电话!')
            return;
        }
        // 访客姓名
        if (!detail.name) {
            _this.showErrMsg('请填写访客姓名!')
            return;
        }
        // 访客手机号
        if (!detail.phone) {
            _this.showErrMsg('请填写访客手机号!')
            return;
        }
        // 证件号
        if (!detail.cardNo) {
            _this.showErrMsg('请填写证件号!')
            return;
        }
        // 到访时间
        if (!detail.visitTime) {
            _this.showErrMsg('请选择到访时间!')
            return;
        }
        // 离开时间
        if (!detail.leaveTime) {
            _this.showErrMsg('请选择离开时间!')
            return;
        }
        // 来访事由
        if (!detail.visitContent) {
            _this.showErrMsg('请填写来访事由!')
            return;
        }
        // 图片上传
        if (fileList && fileList.length > 0) {
            detail.photo = fileList[0].relativeUrl // 头像-相对路径
            detail.url = fileList[0].url // 人脸设备图片-全路径
        } else {
            _this.showErrMsg('请上传照片!')
            return;
        }
        //
        // 添加数据
        visitorPersonRq(detail).then(res => {
            console.log('visitorPersonRq', res);
            // 刷新上个页面参数
            let pages = getCurrentPages(); //获取page
            let prevPage = pages[pages.length - 2]; //上一个页面（父页面）
            prevPage.setData({
                changeData: true
            })
            //
            if (res.code == 0) {
                wx.navigateBack()
            } else {
                _this.showErrMsg(res.msg)
            }
        })
    },


    // 显示错误消息
    showErrMsg(msg) {
        Notify({
            type: 'danger',
            message: msg
        });
    },

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

    },

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

    },

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

    },

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

    },

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

    },

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

    },

    /**
     * 用户点击右上角分享
     */
    onShareAppMessage: function () {

    }
})