"use strict";
layui.extend({
    common   :   'js/common',
}).use(['jquery','common','table'],function(){
    var $ = layui.jquery;
    var common = layui.common;

    var pageDate = {
        id  :   $('#id').val()
    };

    //  机构Id
    var orgId =  parseInt($('#org_id').val());
    //  常量
    var list = [{
            //  表格相关参数
            tableId         :   'allow_table',
            tableElem       :   '#allow_data_table',
            tableUrl        :   '/statistics/member/getAuthDeviceByMemberId?id=' + pageDate.id,
            tableEvent      :   'allow_table_event',
            cols            :   [[
                { type : 'checkbox' },
                { field: 'alias', title: '设备别名',align:'center',width:100 },
                { field: 'name', title: '设备名称',align:'center',width:170 },
                { field: 'serialNumber', title: '设备序列号',align:'center',width:100 },
                { field: 'xqName', title: '所属小区',align:'center',width:150 }
            ]],

            //  选中的Id列表
            idSet           :   new Set(),
            //  已选的数量
            selectedTotal   :   $('#allow_data .selected_length'),
            //  合计
            total           :   $('#allow_data .data_total'),
            //  清空按钮
            cleanBtn        :   $('#allow_data .clean_all_btn'),
            //  (查询条件)小区名称
            xqName          :   $('#allow_data input[name="residentialName"]'),
            //  查询按钮
            selectBtn       :   $('#allow_data button[name="select"]'),
            //  重置查询条件
            resetBtn        :   $('#allow_data button[type="reset"]')
        },
        {
            //  表格相关参数
            tableId         :   'not_allow_table',
            tableElem       :   '#not_allow_data_table',
            tableUrl        :   '/estate/memberDevice/pagingQuery?memberId=' + pageDate.id,
            tableEvent      :   'not_allow_table_event',
            cols            :   [[
                { type : 'checkbox' },
                { field: 'deviceAlias', title: '设备别名',align:'center',width:100 },
                { field: 'deviceName', title: '设备名称',align:'center',width:170 },
                { field: 'serialNumber', title: '设备序列号',align:'center',width:100 },
                { field: 'residentialName', title: '所属小区',align:'center',width:150 }
            ]],

            //  选中的Id列表
            idSet           :   new Set(),
            //  已选的数量
            selectedTotal   :   $('#not_allow_data .selected_length'),
            //  合计
            total           :   $('#not_allow_data .data_total'),
            //  清空按钮
            cleanBtn        :   $('#not_allow_data .clean_all_btn'),
            //  (查询条件)小区名称
            regName         :   $('#not_allow_data input[name="residentialName"]'),
            //  查询按钮
            selectBtn       :   $('#not_allow_data button[name="select"]'),
            //  重置查询条件
            resetBtn        :   $('#not_allow_data button[type="reset"]')
        }];

    //  初始化表格
    var initTable = function(item){
        var options = {
            id      :   item.tableId,
            elem    :   item.tableElem,
            url     :   item.tableUrl,
            cols    :   item.cols,
            method  :   'GET',
            height  :   '480px',
            done    :   function(result, curr, count){
                dataInit(result.data,count,item);
            }
        };
        return common.layuiTable.render(layui.table,options);
    };

    //  重新加载表格
    var reloadTable = function(item){
        //  重新加载表格
        layui.table.reload(item.tableId,{
            //  设定异步数据接口的额外参数
            where: {
            }
            //  重新从第1页开始
            ,page: {
                curr: 1
            }
        });
    };

    //  复选框值发生改变公共方法
    var checkboxFn  = function(obj,item){
        if (obj.type === 'all'){
            if (obj.checked) {
                //  全选
                var list = layui.table.checkStatus(item.tableId).data;
                list.forEach(function(entity){
                    item.idSet.add(entity.id)
                });
            }else {
                //  全不选
                layui.table.cache[item.tableId].forEach(function(entity){
                    item.idSet.delete(entity.id);
                });
            }
        }else{
            var id = obj.data.id;
            obj.checked ? item.idSet.add(id) : item.idSet.delete(id);
        }
        //  设置选中数量
        item.selectedTotal.text(item.idSet.size);
    };

    //  数据初始化函数
    var dataInit = function(list,count,item){
        //  已勾选的数据条数
        var selectedTotal = item.idSet.size;
        item.selectedTotal.text(selectedTotal);
        //  设置合计
        item.total.text(count);
        for (var i = 0; i < list.length; i++){
            for (var selectedId in item.idSet){
                var entity = list[i];
                if (entity.xqId === selectedId){
                    $('div[lay-id="' + item.tableId + '"]').find('.layui-table-box table tr[data-index="' + i + '"]').find('td:first .layui-form-checkbox').eq(0).click();
                    break;
                }
            }
        }
    };

    /* -------------------------------------------------------------------------------------------------------------- */

    //  初始化绑定事件
    (function(){
        list.forEach(function(item){
            //  初始化表格
            initTable(item);
            //  清空事件
            item.cleanBtn.on('click',function () {
                item.idSet.clear();
                $('div[lay-id="' + item.tableId + '"]').find('.layui-table-box table tr').each(function () {
                    $(this).find('td:first .layui-form-checked').eq(0).click();
                });
            });
            //  复选框值发生改变事件
            layui.table.on('checkbox(' + item.tableEvent + ')',function (obj) {
                checkboxFn(obj,item);
            });
            //  绑定查询事件
            item.selectBtn.on('click',function(){
                reloadTable(item)
            });
            //  绑定重置事件
            item.resetBtn.on('click',function(){
                clearSelectFrom(item)
            });
        });
    })();

    //  批量删除事件
    $('#batch_remove').on('click',function () {
        var deviceIds = '';
        list[0].idSet.forEach(function(item){
            if (deviceIds == ''){
                deviceIds = item
            }else {
                deviceIds += ','+item;
            }        });
        if (!deviceIds){
            layer.msg('请选中要禁用的设备');
            return;
        }
        $.ajax({
            url     :   '/estate/memberDevice/addBatch',
            type    :   'POST',
            data    :   {
                deviceIds  :   deviceIds,
                memberId   :   pageDate.id
            },
            success :   function(result){
                if (result.data){
                    layer.msg("禁用成功",{time:1000});
                    list.forEach(function(item){
                        //  刷新表格
                        reloadTable(item);
                    });
                    list[0].idSet = new Set();
                    //  设置选中数量
                    list[0].selectedTotal.text(0);
                } else {
                    layer.alert("禁用成功");
                }
            }
        });
    });

    //  批量添加事件
    $('#batch_add').on('click',function () {
        var ids = '';
        list[1].idSet.forEach(function(item){
            if (ids == ''){
                ids = item
            }else {
                ids += ','+item;
            }
        });
        if (!ids){
            layer.msg('请选中要启用的设备');
            return;
        }
        $.ajax({
            url     :   '/estate/memberDevice/deleteBatch',
            type    :   'POST',
            data    :   {
                ids  :   ids,
                memberId   :   pageDate.id
            },
            success :   function(result){
                if (result.data){
                    layer.msg("启用成功",{time:1000});
                    list.forEach(function(item){
                        //  刷新表格
                        reloadTable(item);
                    });
                    list[1].idSet = new Set();
                    //  设置选中数量
                    list[1].selectedTotal.text(0);
                } else {
                    layer.alert("启用失败");
                }
            }
        });
    });

});