layui.extend({
    common    :   'js/common',
    xmSelect    :   'layui/dist/xm-select',
}).use(['table', 'jquery','common','util','laydate','form','xmSelect'], function () {
    //  Jquery插件
    var $ = layui.jquery;
    //  引入公共模块
    var common = layui.common;
    //  引入表格
    var table = layui.table;
    //  引入表单
    var form = layui.form;

    var laydate = layui.laydate;
    //  引入下拉列表组件
    var xmSelect = layui.xmSelect;

    // 查询框表单
    var $node = {
        //  小区搜索
        residentialId  :  $('#residential_id'),
        //  单元搜索
        unitId  :  $('#unit_id'),
        //  房间搜索
        roomId : $('#room_id'),
        //  访客姓名
        guestNameInput  :  $('input[name="guestName"]'),
        //  业主姓名
        userNameInput  :  $('input[name="userName"]'),

        //  出入开始日期
        beginDateInput  :   $('input[name="beginDate"]'),
        //  出入截至日期
        endDateInput  :   $('input[name="endDate"]'),
        //密码
        password : $('input[name="password"]')
    };

    //日期时间范围
    laydate.render({
        elem: '#create_date'
        ,type: 'date'
        ,range: true
        ,min: '1990-1-1 00:00:00'
        ,max: 0 //最大日期为当天
        ,done: function(value, date, endDate){
            var dateArray = value.split(" - ");
            $node.beginDateInput.val(dateArray[0] + ' 00:00:00');
            $node.endDateInput.val(dateArray[1] + ' 00:00:00');
        }
    });

    var layuiTable =  common.layuiTable.render(layui.table,{
        elem: '#table_id'
        ,url: '/estate/guestAuthorize/showGuestAuthorizeList'
        ,cellMinWidth: 80 //全局定义常规单元格的最小宽度，
        , cols: [[
            { field: 'guestType', title: '访客类型',templet: '#is_guestType',align: 'center',sort:true}
            , { field: 'residentialName', title: '访问小区',align: 'center' }
            , { field: 'roomName', title: '访问房间',align: 'center'}
            , { field: 'unitName', title: '访问单元' ,align: 'center'}
            , { field: 'userName', title: '访问的住户姓名',align: 'center' }
            /*, { field: 'password', title: '授权密码',align: 'center'}
            , { field: 'createDate', title: '密码生成时间',align:'center',sort:true }
            , { field: 'validCount', title: '密码有效次数',align: 'center',sort:true}
            , { field: 'endDate',width:300,align: 'center', title: '密码有效期',sort:true,templet:function(d){
                    return layui.util.toDateString(d.beginDate)+" 至 "+layui.util.toDateString(d.endDate);}}
            , { field: 'enableType', title: '密码状态',templet: '#is_enableType',align: 'center',sort:true}*/
            ,{ title: '操作',width:180,align: 'center', toolbar: '#table-useradmin-webuser' }
        ]]
        //  开启分页功能
        , page: true
    });

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

    //  重新加载表格
    var reloadTable = function(obj){
        //重新加载表格
        layuiTable.reload({
            where:{
                residentialId : $node.residentialId.val(),
                unitId : $node.unitId.val(),
                roomId : $node.roomId.val(),
                // guestName  :  $node.guestNameInput.val(),
                userName   :   $node.userNameInput.val(),
                guestType  :  $('#guest_type option:selected').val(),
                password : $node.password.val(),
                selectBeginDate  :  $node.beginDateInput.val(),
                selectEndDate  :  $node.endDateInput.val(),
                //排序
                sortField   :   obj?obj.field:'',
                sortOrder   :   obj?obj.type:'',
            }
            //重新从第1页开始
            ,page: {
                curr: 1
            },
            initSort:obj
        });
    };

    //监听行工具事件 lay-filter="table_event"
    table.on('tool(table_event)', function(obj){
        var data = obj.data; //获得当前行数据
        switch (obj.event) {
            case 'abate'://审核
                layer.confirm('确定让这条密码失效么？', function(index){
                    common.sendAsyncRequest("/estate/guestAuthorize/updateGuestAuthorizeEnableType",'POST',{
                        id  :  data.id
                    },function (result){
                        if(result.data){
                            layuiTable.reload();
                            layer.msg("操作成功");
                            layer.close(index);//关闭弹窗提示
                        }else{
                            layer.msg("操作失败");
                        }
                    });
                });
                break;
            case 'access_records'://出入记录
                common.openDefaultIframe({
                    title: '出入记录信息',
                    content:  '/estate/guestAuthorize/accessRecords/'+data.id
                });
                break;
            default:
                break;
        }
    });

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

    //监听重置查询
    form.on('submit(reset)', function(){
        residentialSelect.setValue([]);
        unitSelect.update({data:[],disabled:true});
        roomSelect.update({data:[],disabled:true});
        $node.residentialId.val('');
        $node.unitId.val('');
        $node.roomId.val('');
        $node.beginDateInput.val('');
        $node.endDateInput.val('');
        $('#create_date').val('');
        $node.password.val('');
        $node.guestNameInput.val('');
        $node.userNameInput.val('');
        // 刷新select标签
        $('#guest_type').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(){
                    residentialSelect.setValue([]);
                    $node.residentialId.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,
                    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);
                unitSelect.update({data : initUnitFn({residentialId : change[0].id}),disabled: false });
                roomSelect.update({data : []});
            }
            if (!data.isAdd) {
                $node.residentialId.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,
        tips: '请先选择小区',
        radio: true,
        prop: {
            name: 'name',
            value: 'id',
        },
        toolbar: {
            show: true,
            list: [{
                name: '清空',
                method(){
                    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,
                    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.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,
        tips: '请先选择小区和单元',
        radio: true,
        prop: {
            name: 'name',
            value: 'id',
        },
        toolbar: {
            show: true,
            list: [{
                name: '清空',
                method(){
                    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', {
            isSelect : true
        }, function (result) {
            residentialList = result.list;
        });
        return residentialList;
    }
    function initUnitFn(data) {
        var unitList;
        common.sendSyncRequest("/estate/unit/getListByLikeName", 'get', {residentialId : data.residentialId,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;
    }
});