"use strict";
layui.extend({
    common    :   'js/common',
    orgTree    :   'layui/lay/mymodules/org-tree',
    dropdown    :   'layui/lay/modules/dropdown'
}).use(['jquery','layer','common','table','laytpl','form','orgTree','dropdown'],function () {
    //  Jquery插件
    var $ = layui.jquery;
    //  引入公共模块
    var common = layui.common;
    //  引入表单
    var form = layui.form;

    var layuiTable = undefined;
    //  页面节点
    var $node = {
        //  是否禁用下拉框
        isEnableSelect  : $('#is_enable'),
        //  是否禁用下拉框
        roleIdSelect  : $('#role_id'),
        //  登录名表单
        loginNameInput  : $('#login_name'),
        //  用户名表单
        userNameInput  : $('#user_name'),
        //  手机号码表单
        userMobileInput : $('#user_mobile'),
        //  用户详情模板
        userInfoTemplate : $('#user_info'),
    };

    //  页面数据
    var pageData = {
        myOrgId     :   parseInt($('#user_org_id').val())
    };

    var selectItem = undefined;

    //  重新加载表格
    var reloadTable = function(obj){
        //  重新加载表格
        layuiTable.reload({
            //  设定异步数据接口的额外参数
            where: {
                loginName   :   $node.loginNameInput.val(),
                userName    :   $node.userNameInput.val(),
                userMobile  :   $node.userMobileInput.val(),
                isEnable    :   $node.isEnableSelect.val(),
                roleId    :   $node.roleIdSelect.val(),
                selectedId  :   selectItem ? selectItem.id : '',
                //排序
                sortField   :   obj?obj.field:'',
                sortOrder   :   obj?obj.type:'',
            }
            //  重新从第1页开始
            ,page: {
                curr: 1
            },
            initSort: obj,
        });
    };

    //选中id集合
    var ids = [];
    //清空选中集合
    var clearCheckbox = function(){
        ids=[];
    }
    //tableId集合
    var table_data = [];

    //  初始化
    (function(){
        //  加载树形列表
        layui.orgTree({
            //  点击路径的回调函数
            pathClickFn     :   function(item){
                selectItem.id = item.id;
                reloadTable()
            },
            //  点击树的回调函数
            treeClickFn     :   function(item){
                selectItem = item;
                reloadTable()
            },
            //  当前用户的机构Id
            orgId   :   pageData.myOrgId,
            //  截至级别（不包含）
            isShowFlag : 2
        });
        //是否显示 开启小程序登录；
        var isShowWeChatLogin=true;
        var $isWeChatLogin=$("#isShowWeChatLogin");
        if($isWeChatLogin&&$isWeChatLogin.length>0){
            isShowWeChatLogin=false;
        }
        //  初始化表单
        layuiTable = common.layuiTable.render(layui.table,{
            elem: '#data_entity_table'
            ,url: '/permissions/account/page'
            ,cellMinWidth: 80 //全局定义常规单元格的最小宽度，
            , cols: [[
                { type: 'checkbox'}
                ,{ field: 'loginName', title: '登录名',align:'center' }
                , { field: 'userName', title: '用户姓名',align:'center' }
                , { field: 'orgName', title: '归属机构',align:'center' }
                , { title: '账号角色',templet: '#user_role_list',align:'center' }
                , { field: 'userMobile', title: '联系方式',align:'center' }
                , { field: 'createIp', title: '创建IP',align:'center' }
                , { field: 'createDate', title: '创建时间',align:'center',sort: true }
                , { field: 'lastLoginIp', title: '最后登录IP',align:'center',templet: function(d){
                        return d.lastLoginIp ? d.lastLoginIp : "暂未登录";
                    } }
                , { field: 'lastLoginDate', title: '最后登录时间',align:'center',sort: true, templet: function(d){
                        return d.lastLoginDate ? d.lastLoginDate : "暂未登录";
                    } }
                , { field: 'isEnable', title: '状态',templet: '#entity_is_enable' ,align:'center',sort: true}
                , { field: 'isWeChatLogin', title: '开启小程序登录',templet: '#is_we_chat_login',hide:isShowWeChatLogin,align:'center' }
                , { title: '操作',width:180, align: 'center',toolbar: '#table-useradmin-webuser'}
            ]]
            ,done:function(res,curr,count){
                // 设置换页勾选之前的
                table_data = res.data;
                for(var i=0;i<res.data.length;i++){
                    for(var j=0;j<ids.length;j++){
                        if(res.data[i].id==ids[j]){
                            //这里才是真正的有效勾选
                            res.data[i]["LAY_CHECKED"]='true';
                            //找到对应数据改变勾选样式，呈现出选中效果
                            var index= res.data[i]['LAY_TABLE_INDEX'];
                            $('.layui-table tr[data-index=' + index + '] input[type="checkbox"]').prop('checked', true);
                            $('.layui-table tr[data-index=' + index + '] input[type="checkbox"]').next().addClass('layui-form-checked');
                        }
                    }
                }
                //设置全选checkbox的选中状态，只有改变LAY_CHECKED的值， table.checkStatus才能抓取到选中的状态
                var checkStatus = layui.table.checkStatus('data_entity_table');
                if(checkStatus.isAll){
                    $(' .layui-table-header th[data-field="0"] input[type="checkbox"]').prop('checked', true);
                    $('.layui-table-header th[data-field="0"] input[type="checkbox"]').next().addClass('layui-form-checked');
                }
            }
        });
    })();

    //排序
    layui.table.on('sort(data_table_event)',function (obj) {
       reloadTable(obj);
    });

    //复选框选中监听,将选中的id 设置到缓存数组,或者删除缓存数组
    layui.table.on('checkbox(data_table_event)', function (obj) {
        if(obj.checked==true){
            if(obj.type=='one'){
                ids.push(obj.data.id)
            }else{
                for(var i=0;i<table_data.length;i++){
                    ids.push(table_data[i].id);
                }
            }
        }else{
            if(obj.type=='one'){
                for(var i=0;i<ids.length;i++){
                    if(ids[i]==obj.data.id){
                        ids.splice(i,1);
                        return;
                    }
                }
            }else{
                for(var i=0;i<ids.length;i++){
                    for(var j=0;j<table_data.length;j++){
                        if(ids[i]==table_data[j].id){
                            ids.splice(i,1);
                            i--;
                            break;
                        }
                    }
                }
            }
        }
    });

    //  监听行工具事件
    layui.table.on('tool(data_table_event)', function(obj){
        switch(obj.event){
            //  详情
            case 'info':
                var htmlText = undefined;
                //  渲染模板
                layui.laytpl($node.userInfoTemplate.html()).render(obj.data, function(html){
                    htmlText = html;
                });
                layer.open({
                    title   :   '详情',
                    area    :   ['80%','80%'],
                    maxmin  :   true,
                    type    :   1,
                    content :   htmlText
                });
                break;
            //  修改
            case 'edit':
                common.openDefaultIframe({
                    title   :   '编辑账号',
                    content :   '/permissions/account/edit/' + obj.data.id
                });
                break;
            case 'resetPwd':
                layer.confirm('是否确认重置密码？',{icon: 7, title:'提示'}, function(index){
                    common.sendAsyncRequest("/permissions/account/resetPassword", "POST", {id:obj.data.id}, function(res){
                        if (res.code == 200){
                            layer.open({
                                title: '请保存好新密码！'
                                ,content: res.data
                            });
                        }else {

                        }
                    })
                });
                break;
            //  删除
            case 'delete':
                layer.confirm('是否确认删除？',{icon: 7, title:'提示'}, function(index){
                    var url = '/permissions/account/delete/' + obj.data.id;
                    common.sendAsyncRequest(url,'GET',{},function(){
                        //  刷新表格
                        layuiTable.reload();
                        layer.msg("删除成功");
                        layer.close(index);
                    });
                });
                break;
            //  解绑微信u
            case 'untied':
                layer.confirm('是否确认微信解绑？',{icon: 7, title:'提示'}, function(index){
                    var url = '/permissions/account/untiedWeChat/' + obj.data.id;
                    common.sendAsyncRequest(url,'GET',{},function(){
                        //  刷新表格
                        layuiTable.reload();
                        layer.msg("解绑成功");
                        layer.close(index);
                    });
                });
                break;
            default:
                break;
        }
    });

    //  监听禁用状态
    layui.form.on('switch(switch_is_enable)', function(obj) {
        //  获取选中行数据
        var data = JSON.parse(decodeURIComponent($(this).data('json')));
        //  发送请求
        common.sendAsyncRequest("/permissions/account/updateIsEnable", "POST", {
            id: data.id,
            isEnable: obj.elem.checked ? 1 : 2
        }, function(result){
            if (!result.data) {
                obj.othis.click();
            }
        });
    });

    //  监听启用小程序登录
    layui.form.on('switch(switch_is_we_chat_login)', function(obj) {
        //  获取选中行数据
        var data = JSON.parse(decodeURIComponent($(this).data('json')));
        //  发送请求
        common.sendAsyncRequest("/permissions/account/updateIsWeChatLogin", "POST", {
            id: data.id,
            isWeChatLogin: obj.elem.checked ? 1 : 2
        }, function(result){
            if (!result.data) {
                obj.othis.click();
            }
        });
    });

    //监听查询
    form.on('submit(query)', function(){
        reloadTable();
    });

    //监听重置
    form.on('submit(reset)', function(){
        $node.loginNameInput.val('');
        $node.userNameInput.val('');
        $node.userMobileInput.val('');
        // 刷新select标签
        $('#is_enable').val("");
        form.render('select');
        reloadTable();
    });

    //监听账户添加
    form.on('submit(add)', function(){
        common.openDefaultIframe({
            title   :   '添加账户',
            content :   '/permissions/account/add/view'
        });
    });

    //监听账户批量删除
    form.on('submit(batchdel)', function(){
        if(ids.length == 0 ){
            layer.msg("请选择要删除的数据。");
            return;
        }
        for(var i=0;i<ids.length;i++){
            if(ids[i]=="1"){
                layer.msg("没有权限删除admin账户。");
                return;
            }
        }
        layer.confirm('是否确认删除？',{icon: 7, title:'提示'}, function(index){
            $.ajax({
                url :   '/permissions/account/deleteAccountList',
                type : 'POST',
                contentType: "application/json;charset=utf-8",
                data :JSON.stringify(ids),
                success :  function(result){
                    if(result.code == '200'){
                        if(result.data){
                            //  刷新表格
                            layuiTable.reload();
                            clearCheckbox();
                            layer.msg("删除成功");
                            layer.close(index);
                        }else{
                            layer.msg("删除失败");
                        }
                    }else{
                        layer.msg(result.msg);
                    }
                }
            });
        });
    });

});