var oldKeyWord;
var oldDepartment;
var oldDepartmentId;
layui.use(['table', 'layer', 'laydate', 'jquery', 'form'], function () {
    var table = layui.table;
    var laydate = layui.laydate;
    let form = layui.form;
    //渲染table
    table.render({
        elem: '#demo'
        , url: ctxPath + '/users/getMsgContent' //数据接口
        , method: 'post' //方式默认是get
        , toolbar: 'default' //开启工具栏，此处显示默认图标，可以自定义模板，详见文档
        , where: {} //post请求必须加where ，post请求需要的参数
        , cellMinWidth: 80
        , cols: [[ //表头
            {field: 'number', width:100,title: '序号', align: 'center', type: 'numbers'}
            , {field: 'username',width:200, align: 'center', title: '用户名'}
            , {field: 'phone', width: 150, align: 'center', title: '联系方式(登录名)'}
            , {field: 'roleName', width: 200, align: 'center', title: '角色'}
            , {field: 'orgName', width: 220, align: 'center', title: '组织机构'}
            , {field: 'createTimes', width: 220, align: 'center', title: '创建时间'}
            , {field: 'status', width: 200, align: 'center', title: '状态', id:'statusSwitch', templet: '#switchTpl'}
            , {fixed: 'right', title: '操作', align: 'center', toolbar: '#toolsBar'}
        ]]
        , id: 'menuTable'
        , page: true //开启分页
        , loading: true //数据加载中。。。
        , limits: [10, 20, 50, 100]  //一页选择显示3,5或10条数据
        , limit: 10  //一页显示5条数据
        , response: {
            statusCode: 200 //规定成功的状态码，默认：0
        }, parseData: function (res) { //将原始数据解析成 table 组件所规定的数据，res为从url中get到的数据
            let result;
            if (res.data !== '' && res.data != null && res.data !== "null") {
                if (this.page.curr) {
                    result = res.data.slice(this.limit * (this.page.curr - 1), this.limit * this.page.curr);
                } else {
                    result = res.data.slice(0, this.limit);
                }
            }
            return {
                "code": res.code, //解析接口状态
                "msg": res.msg, //解析提示文本
                "count": res.count, //解析数据长度
                "data": result, //解析数据列表
            };
        },
        toolbar: "#toolbar"
    });

    form.on('switch(statusSwitch)', function(data){
        var isChecked = data.elem.checked; // 获取复选框的当前状态
        var value = data.value; // 获取复选框的值
        let status = isChecked ? 1 : 0;
        // if (isChecked) {
        //     console.log('复选框值为 ' + value + ' 被选中');
        //     // 执行其他操作，比如发送请求给后端
        // } else {
        //     console.log('复选框值为 ' + value + ' 被取消选中');
        //     // 执行其他操作
        // }
        // 发送请求到后端更新数据库中的状态字段
        $.ajax({
            url: ctxPath + '/users/switchListen',
            type: 'POST',
            data: { id: value, status: status },
            success: function(res) {
                    layer.msg('状态更新成功');
            },
            error: function() {
                layer.msg('更新状态失败');
            }
        });
    });

    /**
     * 部门下拉树
     */
    loadOrgTree();
    /**
     * 点击除了部门输入框和下拉树范围之外的地方,关闭下拉树列表
     */
    $(document).on('click',function(e){
        if ($(e.target).closest('#orgContent').length == 0 && $(e.target).closest('#department').length == 0){
            hideRole();
        }
    })
    // 行工具事件
    table.on('tool(test)', function (obj) {
        var data = obj.data //获得当前行数据
        var layEvent = obj.event; //获得 lay-event 对应的值
        var id = data.id
        if (layEvent === 'edit') {
           openForm(id,'修改');
        } else if (layEvent === 'del') {
            delHospital(id);
        } else if (layEvent === 'resetPassword'){
            resetPassword(id);
        }
    });

    //头监听事件 -- checkBox 选中行和选中条数
    table.on('toolbar(test)', function (obj) {
        // 获取当前表格被选中的记录对象，返回数据
        table.checkStatus(obj.config.id);
         //获取事件名，执行对应的代码
        var eventName = obj.event;
        console.log(eventName)
        switch (eventName) {
            case "searchBt":
                oldKeyWord = $("#keyWord").val();
                oldDepartment = $("#department").val();
                oldDepartmentId = $("#departmentId").val();
                table.reload('menuTable', {
                    url: ctxPath + '/users/getMsgContent'
                    , method: 'post' //方式默认是get
                    , page: true
                    , where: {
                        keyWord: oldKeyWord,
                        department: oldDepartment,
                        departmentId: oldDepartmentId
                    } //设定异步数据接口的额外参数
                });
                /**二次赋值-- 点击搜索按钮之后会进行一次刷新操作*/
                loadOrgTree();
                $("#keyWord").val(oldKeyWord);
                $("#department").val(oldDepartment);
                $("#departmentId").val(oldDepartmentId);
                loadOrgTree();
                break;
            case "addBtn":
                openForm("",'新增用户');
                break;
            case "resetBt":
                oldKeyWord = "";
                oldDepartment = "点击进行部门选择";
                oldDepartmentId = "";
                $("#keyWord").val("");
                $("#department").val("点击进行部门选择");
                $("#departmentId").val("");
                table.reload('menuTable', {
                    url: ctxPath + '/users/getMsgContent'
                    , method: 'post' //方式默认是get
                    , page: true
                    , where: {
                        username: "",
                        idCard: "",
                        keyWord: "",
                        department: "",
                        departmentId: ""
                    } //设定异步数据接口的额外参数
                });
                loadOrgTree();
                break;
            case "exportBtn":
                //导出
                break;
        }
    });

});


/**
 * 新增-修改功能
 */
function openForm(id,title){
    localStorage.setItem("id",id);
    localStorage.setItem("inType","personAdd")
    layerOpenForm(title,"./addUserForm.html","70%","85%")
}


/**
 * 删除功能
 */
function delHospital(id) {
    layer.confirm('确定要删除吗？', {
        btn : [ '确定', '取消' ]
    }, function() {
        ajaxCommonMethods('/users/delById',{'id': id},"删除成功","删除失败","1");
        layer.close(1);
    });
}


/**
 * 重置密码
 * @param id
 */
function resetPassword(id){
    layer.prompt({
        formType: 0,
        value: '',
        title: '请输入重置后密码',
        btn:['确定','取消'],
        btnAlign:'c',
    }, function(value, index, elem){
        if (!password_reg(value)){
            layer.msg("您的密码复杂度太低（密码中必须包含大小字母、数字、特殊字符）！",{icon:0});
            return false;
        }
        ajaxCommonMethods('/users/resetPassword',{'id': id,'password':value},"重置成功","重置失败","1");
    });
}


/** 树的方法开始 */
var machines = new Set(); //专业容器
var size = 1; //序号
var map =[];
var mapinfo={};
function loadOrgTree(){
    $.ajax({
        type: "post",
        url: ctxPath + "/users/getDepartmentTree",
        data: {},
        dataType: "json",
        success: function(data) {
            $.fn.zTree.init($("#departmentTree"),{view:{showIcon: false,dblClickExpand:true,selectedMulti:false,nameIsHTML:true},data:{simpleData:{enable: true}},
                callback:{
                    onClick:clickRole
                }},data.obj);
            // 获取树对象
            var treeObj = $.fn.zTree.getZTreeObj("departmentTree");
            /* 获取所有树节点 */
            var nodes = treeObj.transformToArray(treeObj.getNodes());
            //展开第一级树
            treeObj.expandNode(nodes[1], true);
        },
        error: function(XMLHttpRequest, textStatus, errorThrown) {
            alert("未连接到服务器，请检查网络！");
        }
    });
}

/**
 * 专业的选择
 */
var preisShow=false;//窗口是否显示
function showRole() {
    if(preisShow){
        hideRole();
    }else{
        var obj = $("#department");
        var offpos = $("#department").position();
        $("#orgContent").css({width:offpos.width+"px",left:offpos.left+"px",top:offpos.top+obj.heigth+"px"}).slideDown("fast");
        preisShow=true;
    }
}

function hideRole(){
    $("#orgContent").fadeOut("fast");
    preisShow=false;
}
var isParent = null
var examPerfession = null;
var typeId = null;
function clickRole(e, treeId, treeNode) {
    // if(!treeNode.isParent){
        var check = (treeNode);
        if(check){
            var zTree = $.fn.zTree.getZTreeObj("departmentTree"),
                nodes = zTree.getSelectedNodes(),v ="",n ="",o="",p="";
            for (var i=0, l=nodes.length; i<l; i++) {
                v += nodes[i].name + ",";//获取name值
                n += nodes[i].id + ",";//获取id值
                o += nodes[i].other + ",";//获取自定义值
                var pathNodes=nodes[i].getPath();
                for(var y=0;y<pathNodes.length;y++){
                    p+=pathNodes[y].name+"/";//获取path/name值
                }
            }
            if (v.length > 0 ) v = v.substring(0, v.length-1);
            if (n.length > 0 ) n = n.substring(0, n.length-1);
            if (o.length > 0 ) o = o.substring(0, o.length-1);
            if (p.length > 0 ) p = p.substring(0, p.length-1);
            $("#departmentId").val(n);
            $("#department").val(p);
            // typeId = n;
            examPerfession = n;
            isParent = treeNode.isParent;
            typeId = treeNode.type;
            hideRole();
        }
    // }
}
/**树的方法结束*/