layui.extend({
    common: 'js/common',
    orgTree: 'layui/lay/mymodules/org-tree',
    xmSelect: 'layui/dist/xm-select'
}).use(['tree', 'table', 'jquery', 'layer', 'common', 'orgTree', 'form', 'util', 'xmSelect'], function () {
    //  弹窗插件
    var layer = layui.layer;
    //  Jquery插件
    var $ = layui.jquery;
    //  引入公共模块
    var common = layui.common;
    //  引入表格
    var table = layui.table;
    //  引入表单
    var form = layui.form;
    //  引入下拉列表组件
    var xmSelect = layui.xmSelect;

    var layuiTable = undefined;

    // 查询框表单
    var $node = {
        //  小区搜索
        residentialId: $('#residential_id'),
        //  楼栋搜索
        buildingId  :  $('#building_id'),
        //  单元搜索
        unitId: $('#unit_id'),
        //  房间搜索
        roomId: $('#room_id'),
        //  住户姓名
        name: $('input[name="name"]'),
        //  联系方式
        tel: $('input[name="tel"]'),
        //  身份证
        idCard: $('input[name="idCard"]'),
        //  审核状态
        checkState: $('select[name="checkState"]'),
    };

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

    //选中树的Id
    var selectTreeId = null;
    //选中树的类型 1 机构 2 小区 3社区机构  4 单元 5 房间
    var flag = null;

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

    //  初始化
    (function () {
        //  加载树形列表
        layui.orgTree({
            //  点击路径的回调函数
            pathClickFn: function (item) {
                selectTreeId = item.id;
                flag = item.flag;
                //选中树的类型 1 机构 2 小区 3社区机构  4 单元 5 房间
                if (flag <= 2) {
                    residentialSelect.update({data: initResidentialFn()});
                    $node.residentialId.val('');
                }
                if (flag <= 4) {
                    unitSelect.update({data: [], disabled: true});
                    $node.unitId.val('');
                }
                if (flag <= 5) {
                    roomSelect.update({data: [], disabled: true});
                    $node.roomId.val('');
                }
                reloadTable();
            },
            //  点击树的回调函数
            treeClickFn: function (item) {
                selectTreeId = item.id;
                flag = item.flag;
                //选中树的类型 1 机构 2 小区 3社区机构  4 单元 5 房间
                if (flag <= 2) {
                    residentialSelect.update({data: initResidentialFn()});
                    $node.residentialId.val('');
                }
                if (flag <= 4) {
                    unitSelect.update({data: [], disabled: true});
                    $node.unitId.val('');
                }
                if (flag <= 5) {
                    roomSelect.update({data: [], disabled: true});
                    $node.roomId.val('');
                }
                reloadTable();
            },
            //  当前用户的机构Id
            orgId: pageData.myOrgId,
        });
        initSearch();
        //  初始化表格
        layuiTable = common.layuiTable.render(layui.table, {
            elem: '#table_id'
            , url: '/apply/user/showApplyUserList'
            , method: 'post'
            , cellMinWidth: 80 //全局定义常规单元格的最小宽度，
            , where: {
                checkState: $node.checkState.val(),
            }
            , cols: [[
                {title: '姓名', field: 'name', align: 'center'}
                , {title: '性别', field: 'sex', templet: '#sex', align: 'center', sort: true}
                , {title: '住户类型', field: 'type', templet: '#type', align: 'center', sort: true}
                , {title: '身份证', field: 'idCard', align: 'center'}
                , {title: '房屋信息', templet: '#roomDetail', align: 'center'}
                , {title: '联系方式', field: 'tel', align: 'center'}
                , {title: '住户申请来源', field: 'createType', templet: '#createType', align: 'center', sort: true}
                , {title: '创建时间', field: 'createDate', align: 'center', sort: true}
                , {title: '认证审核状态', field: 'checkState', templet: '#checkState', align: 'center', sort: true}
                , {title: '审核时间', field: 'checkDate', align: 'center', sort: true}
                , {title: '审核人类型', field: 'operatorType', align: 'center', templet: function (d) {
                        if (d.operatorType === 1) {
                            return 'app业主';
                        } else if (d.operatorType === 2) {
                            return '后台';
                        } else {
                            return '';
                        }
                    }}
                , {title: '审核人姓名', field: 'operatorName', align: 'center'}
                , {title: '操作', align: 'center', toolbar: '#table-useradmin-webuser', width: 180}
            ]]
            //  开启分页功能
            , page: true
        });
    })();

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

    //监听行工具事件 lay-filter="table_event"
    table.on('tool(table_event)', function (obj) {
        var data = obj.data; //获得当前行数据
        switch (obj.event) {
            case 'check'://审核
                common.openDefaultIframe({
                    title: '审核',
                    content: '/apply/user/checkView/' + data.id
                });
                break;
            case 'detail'://详情
                common.openDefaultIframe({
                    title: '详情',
                    content: '/apply/user/detail/' + data.id
                });
                break;
            default:
                break;
        }
    });

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

    //监听重置查询
    form.on('submit(reset)', function () {
        residentialSelect.update({data: initResidentialFn()});
        buildingSelect.update({data: [], disabled: true});
        unitSelect.update({data: [], disabled: true});
        roomSelect.update({data: [], disabled: true});
        $node.residentialId.val('');
        $node.unitId.val('');
        $node.roomId.val('');
        $node.name.val('');
        $node.tel.val('');
        $node.idCard.val('');
        $node.checkState.val('');
        form.render('select');
        reloadTable();
    });

    //小区查询下拉列表
    var residentialSelect = xmSelect.render({
        el: '#residential_name',
        radio: true,
        prop: {
            name: 'name',
            value: 'id',
        },
        toolbar: {
            show: true,
            list: [{
                name: '清空',
                method: function(){
                    residentialSelect.setValue([]);
                    $node.residentialId.val('');
                    buildingSelect.update({disabled:true}).setValue([]);
                    $node.buildingId.val('');
                    unitSelect.update({disabled:true}).setValue([]);
                    $node.unitId.val('');
                    roomSelect.update({disabled:true}).setValue([]);
                    $node.roomId.val('');
                }
            }]
        },
        clickClose: true,
        filterable: true,
        remoteSearch: true,
        remoteMethod: function (val, cb, show) {
            $.ajax({
                type: 'GET',
                url: '/estate/residential/getListByLikeName',
                data: {
                    name : val,
                    selectTreeId : selectTreeId,
                    regionProvince : $('input[name="regionProvince"]').val(),
                    regionCity : $('input[name="regionCity"]').val(),
                    regionArea : $('input[name="regionArea"]').val(),
                    isSelect : true
                },
                success: function (result) {
                    cb(result.list);
                },
                error: function () {
                    cb([]);
                }
            });
        },
        //监听选择
        on: function (data) {
            var change = data.change;
            if (change.length > 0) {
                $node.residentialId.val(change[0].id);
                buildingSelect.update({data : initBuildingFn({residentialId : change[0].id}),disabled: false });
                unitSelect.update({disabled : true });
                roomSelect.update({disabled : true});
            }
            if (!data.isAdd) {
                $node.buildingId.val('');
                buildingSelect.update({disabled : true });
                unitSelect.update({disabled : true });
                roomSelect.update({disabled : true});
            }
            $node.buildingId.val('');
            $node.unitId.val('');
            $node.roomId.val('');
        },
        //显示方式
        model: {
            label: {
                type: 'text',
                text: {
                    //左边拼接的字符
                    left: '',
                    //右边拼接的字符
                    right: '',
                    //中间的分隔符
                    separator: ', ',
                },
            }
        },
    });

    //楼栋查询下拉列表
    var buildingSelect = xmSelect.render({
        el: '#building_name',
        radio: true,
        disabled: true,
        prop: {
            name: 'name',
            value: 'id',
        },
        toolbar: {
            show: true,
            list: [{
                name: '清空',
                method: function(){
                    buildingSelect.setValue([]);
                    $node.buildingId.val('');
                    unitSelect.update({disabled:true}).setValue([]);
                    $node.unitId.val('');
                    roomSelect.update({disabled:true}).setValue([]);
                    $node.roomId.val('');
                }
            }]
        },
        clickClose: true,
        filterable: true,
        remoteSearch: true,
        remoteMethod: function (val, cb, show) {
            $.ajax({
                type: 'GET',
                url: '/estate/building/getListByLikeName',
                data: {
                    name : val,
                    residentialId : $node.residentialId.val(),
                    isSelect : true
                },
                success: function (result) {
                    cb(result.list);
                },
                error: function () {
                    cb([]);
                }
            });
        },
        //监听选择
        on: function (data) {
            var change = data.change;
            if (change.length > 0) {
                $node.buildingId.val(change[0].id);
                unitSelect.update({data : initUnitFn({buildingId : change[0].id}),disabled: false });
                roomSelect.update({disabled : true});
            }
            if (!data.isAdd) {
                $node.buildingId.val('');
                unitSelect.update({disabled : true });
                roomSelect.update({disabled : true});
            }
            $node.unitId.val('');
            $node.roomId.val('');
        },
        //显示方式
        model: {
            label: {
                type: 'text',
                text: {
                    //左边拼接的字符
                    left: '',
                    //右边拼接的字符
                    right: '',
                    //中间的分隔符
                    separator: ', ',
                },
            }
        },
    });

    //单元查询下拉列表
    var unitSelect = xmSelect.render({
        el: '#unit_name',
        disabled: true,
        radio: true,
        prop: {
            name: 'name',
            value: 'id',
        },
        toolbar: {
            show: true,
            list: [{
                name: '清空',
                method: function(){
                    unitSelect.setValue([]);
                    $node.unitId.val('');
                    roomSelect.update({disabled:true}).setValue([]);
                    $node.roomId.val('');
                }
            }]
        },
        clickClose: true,
        filterable: true,
        remoteSearch: true,
        remoteMethod: function (val, cb, show) {
            $.ajax({
                type: 'GET',
                url: '/estate/unit/getListByLikeName',
                data: {
                    name : val,
                    buildingId : $node.buildingId.val(),
                    isSelect : true
                },
                success: function (result) {
                    cb(result.list);
                },
                error: function () {
                    cb([]);
                }
            });
        },
        //监听选择
        on: function (data) {
            var change = data.change;
            if (change.length > 0) {
                $node.unitId.val(change[0].id);
                roomSelect.update({data : initRoomFn({residentialId : $node.residentialId.val(),unitId : change[0].id}) , disabled : false});
            }
            if (!data.isAdd) {
                $node.unitId.val('');
                roomSelect.update({data : [] , disabled : true});
            }
            $node.roomId.val('');
        },
        //显示方式
        model: {
            label: {
                type: 'text',
                text: {
                    //左边拼接的字符
                    left: '',
                    //右边拼接的字符
                    right: '',
                    //中间的分隔符
                    separator: ', ',
                },
            }
        },
    });

    //房间查询下拉列表
    var roomSelect = xmSelect.render({
        el: '#room_name',
        disabled: true,
        radio: true,
        prop: {
            name: 'name',
            value: 'id',
        },
        toolbar: {
            show: true,
            list: [{
                name: '清空',
                method: function(){
                    roomSelect.setValue([]);
                    $node.roomId.val('');
                }
            }]
        },
        clickClose: true,
        filterable: true,
        remoteSearch: true,
        remoteMethod: function (val, cb, show) {
            $.ajax({
                type: 'GET',
                url: '/estate/room/getListByLikeName',
                data: {
                    name : val,
                    residentialId : $node.residentialId.val(),
                    unitId : $node.unitId.val(),
                    isSelect : true
                },
                success: function (result) {
                    cb(result.list);
                },
                error: function () {
                    cb([]);
                }
            });
        },
        //监听选择
        on: function (data) {
            var change = data.change;
            if (change.length > 0) {
                $node.roomId.val(change[0].id)
            }
            if (!data.isAdd) {
                $node.roomId.val('');
            }
        },
        //显示方式
        model: {
            label: {
                type: 'text',
                text: {
                    //左边拼接的字符
                    left: '',
                    //右边拼接的字符
                    right: '',
                    //中间的分隔符
                    separator: ', ',
                },
            }
        },
    });

    function initResidentialFn() {
        var residentialList;
        common.sendSyncRequest("/estate/residential/getListByLikeName", 'get', {
            selectTreeId : selectTreeId,
            regionProvince : $('input[name="regionProvince"]').val(),
            regionCity : $('input[name="regionCity"]').val(),
            regionArea : $('input[name="regionArea"]').val(),
            isSelect : true
        }, function (result) {
            residentialList = result.list;
        });
        return residentialList;
    }
    function initBuildingFn(data) {
        var buildingList;
        common.sendSyncRequest("/estate/building/getListByLikeName", 'get', {residentialId : data.residentialId,id : data.id,isSelect : true}, function (result) {
            buildingList = result.list;
        });
        return buildingList;
    }
    function initUnitFn(data) {
        var unitList;
        common.sendSyncRequest("/estate/unit/getListByLikeName", 'get', {buildingId : data.buildingId,id : data.id,isSelect : true}, function (result) {
            unitList = result.list;
        });
        return unitList;
    }
    function initRoomFn(data) {
        var roomList;
        common.sendSyncRequest("/estate/room/getListByLikeName", 'get', {residentialId : data.residentialId,unitId : data.unitId,id : data.id,isSelect : true}, function (result) {
            roomList = result.list;
        });
        return roomList;
    }

    function initSearch() {
        if (pageData.checkState) {
            $node.checkState.next().find('dl dd[lay-value="' + pageData.checkState + '"]').click();
        }
    }
});