layui.extend({
    common    :   'js/common',
    orgTree    :   'layui/lay/mymodules/org-tree',
    region    :   'layui/lay/mymodules/region',
}).use(['jquery','layer','common','table','tree','orgTree','form','region'],function(){

    var $ = layui.jquery;

    var common = layui.common;

    var form = layui.form;

    var table_data = [];

    var layuiTable = null;

    // 查询框表单
    var $node = {
        //  省市区表单
        provinceInput   :   $('input[name="regionProvince"]'),

        cityInput       :   $('input[name="regionCity"]'),

        areaInput       :   $('input[name="regionArea"]'),

        regionInput     :   $('#region'),
    };

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

    //  重新加载表格
    var reloadTable = function(id){
        layuiTable.reload({
            //  设定异步数据接口的额外参数
            where: {
                id      :   id,
                agencyName    :  $('#agencyName').val(),
                regionProvince  :  $node.provinceInput.val(),
                regionCity  :  $node.cityInput.val(),
                regionArea  :  $node.areaInput.val(),
            }
            //  重新从第1页开始
            ,page: {
                curr    : 1
            }
        });
    };

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

    //监听导入
    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/agency/indexImportExcel/0'
        });
    });

    //  初始化
    (function(){
        //  加载树形列表
        layui.orgTree({
            //  点击路径的回调函数
            pathClickFn     :   function(item){
                selectTreeId = item.id;
                reloadTable(item.id);
            },
            //  点击树的回调函数
            treeClickFn     :   function(item){
                selectTreeId = item.id;
                reloadTable(item.id);
            },
            //  当前用户的机构Id
            orgId   :   pageData.myOrgId,
            //  截至级别（不包含）
            isShowFlag : 3
        });
        //  初始化表格
        layuiTable = common.layuiTable.render(layui.table,{
            elem    :   '#table_id'
            ,url    :   '/estate/agency/showAgencyList'
            ,cellMinWidth: 80 //全局定义常规单元格的最小宽度，
            , cols: [[
                { field: 'agencyName', title: '社区名称',align:'center' }
                , { field: 'orgName', title: '所属机构',align:'center' }
                , { field: 'provinceName', title: '所属省',align:'center' }
                , { field: 'cityName', title: '所属市', align: 'center' }
                , { field: 'areaName', title: '所属区',align:'center' }
                , { field: 'streetName', title: '所属街道',align:'center' }
                , { field: 'personName', title: '社区负责人',align:'center' }
                , { field: 'personPhone', title: '负责人电话',align:'center' }
                , { field: 'address', title: '详细地址',align:'center' }

                , { title: '操作', align: 'center',  toolbar: '#table-useradmin-webuser',width: 180 }
            ]]
            , page: true

        });
    })();

    //  监听禁用开启状态
    var switchRollBack = false;
    layui.form.on('switch(switch_is_enable)', function(obj) {
        if (!switchRollBack) {
            //  获取选中行数据
            var data = JSON.parse(decodeURIComponent($(this).data('json')));
            var url = "/estate/agency/updateIsEnable";
            common.sendAsyncRequest(url, 'POST', {
                id  :   data.id,
                isEnable: obj.elem.checked ? 1 : 2
            }, function(result){
                if (!result.data) {
                    switchRollBack = !switchRollBack;
                    obj.othis.click();
                }
            }, function(result){
                switchRollBack = !switchRollBack;
                layer.alert(result.msg,function(index){
                    layer.close(index);
                    //  失败的回调用函数
                    obj.othis.click();
                });
            })
        }else {
            switchRollBack = !switchRollBack;
        }
    });

    //  删除事件
    var deleteOrgFn = function(obj){
        layer.confirm('是否确认删除？',{icon: 7, title:'提示'}, function(index) {
            var url = "/estate/agency/deleteAgency";
            common.sendAsyncRequest(url, 'POST', {
                id: obj.id,
                status: -1
            },  function(){
                //  刷新表格
                layuiTable.reload();
                layer.msg("删除成功");
                layer.close(index);
            });
        });
    };

    //  操作栏事件绑定
    layui.table.on('tool(table_event)',function (obj) {
        switch (obj.event) {
            //  修改
            case 'edit':
                common.openDefaultIframe({
                    title   :   '修改社区',
                    content :   '/estate/agency/edit/' + obj.data.id
                });
                break;
            //  删除
            case 'delete':
                deleteOrgFn(obj.data);
                break;
        }
    });

    //监听社区机构添加
    form.on('submit(add)', function(){
        common.openDefaultIframe({
            title   :   '添加社区',
            content :   '/estate/agency/add?selectTreeId='+selectTreeId
        });
    });

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

    //监听重置
    form.on('submit(reset)', function(){
        $('#agencyName').val('');
        $node.provinceInput.val('');
        $node.cityInput.val('');
        $node.areaInput.val('');
        $node.regionInput.val('');
        reloadTable();
    });

    //  初始化省市区
    layui.region.init({
        //  元素节点
        elem        :  '#region_body',
        //  触发此元素时显示
        trigger     :   '#region',
        //  选中省的回调
        provinceCallbackFn  :   function(data){
            var address = data.province.text;
            $node.regionInput.val(address);
            $node.provinceInput.val(data.province.id);
        },
        //  选中市的回调
        cityCallbackFn  :   function(data){
            var address = data.province.text + '-' + data.city.text;
            $node.regionInput.val(address);
            $node.cityInput.val(data.city.id);
        },
        //  选中区域的回调
        areaCallbackFn  :   function(data){
            var address = data.province.text + '-' + data.city.text + '-' +data.county.text;
            $node.regionInput.val(address);
            $node.areaInput.val(data.county.id);
        },
        //  关闭时的回调
        hideCallbackFn  :   function(data){
        },
        //清空回调
        clearFn : function(){
            $node.regionInput.val('');
            $node.provinceInput.val('');
            $node.cityInput.val('');
            $node.areaInput.val('');
        }
    });

    var resetAreaFn = function () {
        $('.select-type li').removeClass('active');
        $('.select-type li').eq(0).addClass('active');
        $('.zm-ctn li').removeClass('active');
        $('.select-type-ctn .type-main').hide();
        $('.select-type-ctn .province').show();
        $('.select-type-ctn .city .zm-ctn').empty();
        $('.select-type-ctn .city .zm').show();
        $('.select-type-ctn .county .zm-ctn').empty();
        $('.select-type-ctn .county .zm').show();
    };

});