layui.extend({
    customTree: 'layui/lay/mymodules/custom-tree'
}).define(['jquery','common','customTree','table'],function (exports) {
    var $ = layui.jquery;
    var common = layui.common;
    var pageData = {
        unitId : null,
        pushMaterial : 1,
        userId : $('input[name="userId"]').val(),
        userType : $('input[name="userType"]').val(),
        residentialId : $('input[name="residentialId"]').val(),
    };

    //  加载单元列表
    var loadDyTreeList = function(data){
        $.ajax({
            url     :   '/estate/unit/getListByXqId/' + data.id,
            success :   function(result){
                data.asyncFn({
                    list    :   result.list,
                    property:   {
                        id      :   'id',
                        pid     :   'orgPid',
                        name    :   'name',
                        subCount:   ''
                    }
                });
            }
        });
    };

    //  小区数据
    var xqData = {

    };

    //  加载小区列表
    var loadXqTreeList = function(data){
        if (xqData[data.id]){
            data.asyncFn(xqData[data.id]);
        }
        $.ajax({
            url     :   '/permissions/region/authorize/getAuthorizeOrgList',
            data    :   {
                pid :   data.pid
            },
            success :   function(result){
                data.asyncFn({
                    list    :   result.list,
                    property:   {
                        id      :   'id',
                        pid     :   'pid',
                        name    :   'name',
                        subCount:   'unitCount'
                    },
                    getSubList  : function(data){
                        loadDyTreeList(data)
                    }
                });
                xqData.pid = result.list;
            }
        });
    };

    //  重新加载表格方法
    var reloadTable = function($tree,data){
        //  获取表格Id
        var tableId = $tree.next().find('table').eq(0).attr('id');
        tableMap[tableId] ? tableMap[tableId].reload(tableId,data) : void(0);
    };

    //  表格数组
    var tableMap = {
        //  初始化表格
            init : function(options){
                var tableId = options.id;
                options.done = function(result){
                    var list = result.data;
                    for (var i = 0; i < list.length; i++) {
                        var entity = list[i];
                        tableMap[tableId].selectedIdSet.forEach(function (selectedId) {
                            if (entity.id === selectedId){
                                $('div[lay-id="' + tableId + '"]').find('.layui-table-box table tr[data-index="' + i + '"]').find('td:first .layui-form-checkbox').eq(0).click();
                            }
                        });

                }

            };
            //  初始化表格
            common.layuiTable.render(layui.table,options);
            //  绑定复选框事件
            var eventName = $(options.elem).attr('lay-filter');
            layui.table.on('checkbox(' + eventName + ')',function (obj) {
                if (obj.type === 'all'){
                    if (obj.checked){
                        //  全选
                        var list = layui.table.checkStatus(tableId).data;
                        list.forEach(function(entity){
                            tableMap[tableId].selectedIdSet.add(entity.id)
                        });
                    }else {
                        //  全不选
                        layui.table.cache[tableId].forEach(function(entity){
                            tableMap[tableId].selectedIdSet.delete(entity.id);
                        });
                    }
                }else {
                    var id = obj.data.id;
                    obj.checked ? tableMap[tableId].selectedIdSet.add(id) : tableMap[tableId].selectedIdSet.delete(id);
                }
            });
        },
        //  人脸下发表格
        face_table    :   {
            init    :   function(options){
                var cols = [[
                    { type : 'checkbox' },
                    { title: '设备别名',field:'alias',align:'center' },
                    { title: '设备名称',field:'name',align:'center' },
                    { title: '设备序列号',field:'serialNumber',align:'center',width:120 },
                    // { title: '设备类型',align:'center',width:100,templet:'#device_type' },
                    // { title: '创建时间',field:'createDate',align:'center',width:160 },
                    { title: '安装位置',field:'installPath',align:'center' }
                ]];
                options.id = 'face_table';
                options.elem = '#face_table';
                options.cols = cols;
                options.where = {
                    xqId : pageData.residentialId,
                    userId : pageData.userId,
                    userType: pageData.userType,
                    pushMaterial : "1"
                };
                options.url = '/permissions/device/specialAuthorize/pagingQuery';
                tableMap.init(options);
            },
            reload  :   function(tableId,data){
                layui.table.reload(tableId,{
                    where: {
                        pid:   data.pid
                    }
                    //  重新从第1页开始
                    ,page: {
                        curr: 1
                    }
                });
            },
            selectedIdSet   :   new Set()
        },
        //  卡片下发表格
        card_table    :   {
            init    :   function(options){
                var cols = [[
                    { type : 'checkbox' },
                    { title: '设备别名',field:'alias',align:'center' },
                    { title: '设备名称',field:'name',align:'center' },
                    { title: '设备序列号',field:'serialNumber',align:'center',width:120 },
                    // { title: '设备类型',align:'center',width:100,templet:'#device_type' },
                    // { title: '创建时间',field:'createDate',align:'center',width:160 },
                    { title: '安装位置',field:'installPath',align:'center' }
                ]];
                options.id = 'card_table';
                options.elem = '#card_table';
                options.cols = cols;
                options.where = {
                    xqId : pageData.residentialId,
                    userId : pageData.userId,
                    userType: pageData.userType,
                    pushMaterial : "2"
                };
                options.url = '/permissions/device/specialAuthorize/pagingQuery';
                tableMap.init(options);
            },
            reload  :   function(tableId,data) {
                var id = data.layer === 1 ? data.pid : data.id;
                layui.table.reload(tableId,{
                    where: {
                        selectedType:   data.layer,
                        selectedId  :   id
                    }
                    //  重新从第1页开始
                    ,page: {
                        curr: 1
                    }
                });
            },
            selectedIdSet   :   new Set()
        },
    };
    //搜索
    $(document).on('click','#select_btn',function () {
        pageData.unitId = $('#unit_id').val();
        tableMap.device_table.reload('device_table',pageData)
    });
    //重置
    $(document).on('click','#select_re',function () {
        pageData.unitId = null;
        $('#unit_id').val('');
        //重置复选框
        layui.table.cache["device_table"].forEach(function(entity){
            tableMap["device_table"].selectedIdSet.delete(entity.id);
        });
        tableMap.device_table.reload('device_table',pageData);
        layui.form.render('select');
    });

    exports('accessDeviceSelect',{
        //  初始化方法
        init    :       function(options){
            //  初始化 [小区,单元,设备]树
            $.ajax({
                url     :   '/permissions/region/authorize/getAuthorizeOrgList',
                data    :   {
                    xqId : pageData.residentialId,
                    isSelectParent  :   1
                },
                success :   function(result){
                    result.list.forEach(function (item) {
                        item.clientCount = 1;
                    });
                    //  初始化 [小区,单元,设备]树
                    var treeNodeArray = [$('#xq_tree'),$('#dy_tree'),$('#device_tree')];
                    for (var i = 1; i <= treeNodeArray.length; i++){
                        var $tree = treeNodeArray[i - 1];
                        layui.customTree.init({
                            $node   :   $tree,
                            data    :   {
                                list    :   result.list,
                                property:   {
                                    id      :   'id',
                                    pid     :   'pid',
                                    name    :   'parentName',
                                    subCount:   'clientCount'
                                },
                                getSubList  : function (data) {
                                    loadXqTreeList(data);
                                }
                            },
                            layer   :   i,
                            clickFn :   function (data) {
                                reloadTable(this.$node,data);
                            }
                        });
                    }
                }
            });
            //  切换发布类型事件
            $('#push_type_tabs ul li').on('click',function () {
                var $this = $(this);
                var _index = $this.index();
                $this.addClass('layui-this').siblings().removeClass('layui-this');
                var tab = $this.parent().next().find('.layui-tab-item').eq(_index);
                tab.addClass('layui-show').siblings().removeClass('layui-show');
                //  判断是否需要加载表格
                var id = tab.find('table').eq(0).attr('id');
                if (!layui.table.cache[id]) {
                    tableMap[id] ? tableMap[id].init(options) : void(0);
                }else {
                    //  取消选中
                    layui.customTree.uncheck(tab.find('.layui-tree').eq(0));
                    //  刷新表格
                    layui.table.reload(id,{
                        where: null
                        //  重新从第1页开始
                        ,page: {
                            curr: 1
                        }
                    });
                }
            });
            //  默认选中按小区发布
            $('#push_type_tabs ul li:first').click();
        },
        //  获取当前表格中选中的数据
        getSelectedData  :   function(){
            var table = $('#push_type_tabs .layui-tab-item.layui-show table:first');
            var tableId = table.attr('id');
            var idList = [];
            tableMap[tableId].selectedIdSet.forEach(function (id) {
                idList.push(id);
            });
            return {
                type    :   table.attr('data-type'),
                list    :   idList,
                pushMaterial : table.attr('pushMaterial')
            };
        }
    });
});
