layui.extend({
    common    :   'js/common',
}).use(['tree','table', 'jquery','layer','common','form',], function () {
    //  弹窗插件
    var layer = layui.layer;
    //  Jquery插件
    var $ = layui.jquery;
    //  引入公共模块
    var common = layui.common;
    //  引入表格
    var table = layui.table;
    //  引入表单
    var form = layui.form;
    //  引入下拉菜单

    var layuiTable = null;

    var unitId = $('#unitId').val();

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

    //选中树的Id
    var selectTreeId = null;

    //选中树的类型 1 机构 2 小区 3社区机构
    var flag = null;

    //  重新加载表格
    var reloadTable = function(obj){
        //重新加载表格
        layuiTable.reload({
            where:{
                // name  :  $node.nameInput.val(),
                // unitNumber  :  $node.unitNumberInput.val(),
                residentialId  :  $node.residentialId.val(),
                selectTreeId  :  selectTreeId,
                selectTreeType  :  flag,
                //排序
                sortField   :   obj?obj.field:'',
                sortOrder   :   obj?obj.type:'',
            }
            //重新从第1页开始
            ,page: {
                curr: 1
            },
            initSort:obj
        });
    };

    //  初始化
    (function(){
        //  初始化表格
        layuiTable = common.layuiTable.render(layui.table,{
            elem: '#table_id'
            ,url: '/estate/floor/showFloorList'
            ,cellMinWidth: 80 //全局定义常规单元格的最小宽度，
            , cols: [[
                { type: 'checkbox' }
                ,{ field: 'name', title: '楼层名称', width:200, align: 'center' }
                // ,{ field: 'residentialName', title: '所属小区', align: 'center'}
                ,{ field: 'buildingName', title: '所属楼栋', align: 'center' }
                ,{ field: 'unitName', title: '所属单元', align: 'center' }
                ,{ field: 'roomNumber', title: '房间总数', align: 'center' }
                ,{ field: 'userNumber', title: '住户总数', align: 'center' }
                , {field: 'serial', title: '排序', sort: true, edit: 'text', align: 'center'}
                ,{ title: '操作',width:180,align: 'center', toolbar: '#table-useradmin-webuser' }
            ]]
            //  开启分页功能
            , page: true
            , where: {
                unitId: unitId
            }
            ,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 = table.checkStatus('table_id');
                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');
                }
            }
        });
    })();

    //监听单元格编辑
    table.on('edit(table_event)', function(obj){
        var data = {
            id : obj.data.id,
            serial : obj.value
        };
        if (data.serial != null && data.serial != ''){
            var pass = true;
            var message = '';
            if (data.serial[0] == 0){
                pass = false;
                message = '【失败，请输入不以0开头的数字】';
            }
            if(!/(^$)|^\d+$/.test(data.serial)){
                pass = false;
                message = '【失败，只能填写数字】';
            }
            if (pass){
                common.sendAsyncRequest('/estate/floor/updateFloor','POST',data,function (result) {
                    message = result.data?'【成功】':'【失败，请重新修改】';
                });
            }else {
                $(this).val($(this).prev().text());
            }
            layer.msg('修改【'+ obj.data.name +'】单元的序号为['+ data.serial + ']</br>' + message);
        }else {
            $(this).val($(this).prev().text());
        }
    });

    //复选框选中监听,将选中的id 设置到缓存数组,或者删除缓存数组
    table.on('checkbox(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;
                        }
                    }
                }
            }
        }
    });

    //监听行工具事件
    table.on('tool(table_event)', function(obj){ //lay-filter="table_event"
        var data = obj.data; //获得当前行数据
        switch (obj.event) {
            case 'edit'://修改
                common.openDefaultIframe({
                    title: '修改单元',
                    content:  '/estate/floor/edit/'+data.id
                });
                break;
            case 'del'://删除
                layer.confirm('是否确认删除？',{icon: 7, title:'提示'},  function(index){
                    common.sendAsyncRequest("/estate/floor/deleteFloor",'POST',{
                        id  :  data.id
                    },function (result){
                        if(result.data){
                            //  刷新表格
                            layuiTable.reload();
                            layer.msg("删除成功");
                            layer.close(index);
                        }else{
                            layer.msg("删除失败");
                        }
                    });
                });
                break;
            case 'detail'://管理
                common.openDefaultIframe({
                    title : '管理单元——' + data.name,
                    content :  '/estate/floor/detail/' +data.id
                });
                break;
            case 'clearRoom':
                layer.confirm('是否确认清空该楼层下的房屋信息？',{icon: 7, title:'提示'}, function(index){
                    var loadIndex = layer.load(1);
                    if (data.userNumber != 0){
                        layer.close(loadIndex);
                        layer.msg("已录入住户，不能清空房屋信息");
                    }else {
                        common.sendAsyncRequest("/estate/floor/clearRoom/"+data.id,'POST',null,function (result){
                            layer.close(loadIndex);
                            if(result.msg == "success"){
                                if (result.data == true){
                                    //  刷新表格
                                    layer.close(index);
                                    layuiTable.reload();
                                    layer.msg("清空房屋信息成功");
                                }
                                if (result.data == false){
                                    //  刷新表格
                                    layer.close(index);
                                    layuiTable.reload();
                                    layer.msg("清空房屋信息失败");
                                }
                            }
                        });
                    }
                });
                break;
            default:
                break;
        }
    });


/*    //监听单元添加
    form.on('submit(add)', function(){
        let content = '/estate/floor/add';
        if (flag == 2){
            content = '/estate/floor/add/'+ selectTreeId + '/'+flag
        }
        common.openDefaultIframe({
            title: '添加楼层',
            content:  content
        });
    });*/

    //监听批量删除
    form.on('submit(batchdel)', function(){
        if(ids.length == 0 ){
            layer.msg("请选择要删除的数据。");
            return;
        }
        layer.confirm('是否确认删除？',{icon: 7, title:'提示'}, function(index){
            $.ajax({
                url :   '/estate/floor/deleteFloorList',
                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);
                    }
                }
            });
        });
    });


/*    //监听导入
    form.on('submit(import)', function(){
        layer.open({
            //  0（信息框，默认）1（页面层）2（iframe层）3（加载层）4（tips层）
            type    :   2,
            //  宽高
            area    :   ['500px', '300px'],
            //  禁用最大最小化
            maxmin  :   false,
            //  禁用拖拽
            move    :   false,
            //  弹窗标题
            title   :    '导入单元',
            //  打开内容
            content :  '/estate/unit/indexImportExcel/2'
        });
    });

    //监听导出
    form.on('submit(export)', function(){
        window.location.href = "/estate/unit/exportUnit";
    });*/

});