"use strict";
layui.extend({
    common    :   'js/common',
    orgTree    :   'layui/lay/mymodules/org-tree',
    region    :   'layui/lay/mymodules/region',
    xmSelect    :   'layui/dist/xm-select',
}).use(['jquery','layer','common','table','tree','form','orgTree','region','xmSelect'],function(){
    var $ = layui.jquery;
    var common = layui.common;
    //  引入表单
    var form = layui.form;
    //  引入组件
    var xmSelect = layui.xmSelect;

    //  页面节点
    var $node = {
        // 机构名称
        nameInput  : $('#name'),
        // 机构编码
        codeInput  : $('#code'),
        // // 授权编码
        // xqNameInput: $('input[name="xqName"]'),

        //  省市区表单
        provinceInput   :   $('input[name="regionProvince"]'),

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

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

        regionInput     :   $('#region')
    };

    //监听导入
    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 :  '/permissions/org/indexImportExcel/7'
        });
    });

    //  初始化省市区
    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();
    };

    var layuiTable = undefined;
    //  重新加载表格
    var reloadTable = function(id){
        layuiTable.reload({
            //  设定异步数据接口的额外参数
            where: {
                id      :   id,
                name  :  $node.nameInput.val(),
                code  :  $node.codeInput.val(),
                // xqName  :  $node.xqNameInput.val(),
                orgType  :  $('#org_type_select option:selected').val(),
                regionProvince  :  $node.provinceInput.val(),
                regionCity  :  $node.cityInput.val(),
                regionArea  :  $node.areaInput.val(),
                isEnable  :  $('#is_enable_select option:selected').val()
            }
            //  重新从第1页开始
            ,page: {
                curr    : 1
            }
        });
    };

    //  选中的机构
    var selectedItem = undefined;
    //  初始化
    (function(){
        //  加载树形列表
        layui.orgTree({
            //  点击路径的回调函数
            pathClickFn     :   function(item){
                selectedItem = item;
                reloadTable(item.id)
            },
            //  点击树的回调函数
            treeClickFn     :   function(item){
                selectedItem = item;
                reloadTable(item.id)
            },
            //  当前用户的机构Id
            orgId   :   pageData.myOrgId,
            //  截至级别（不包含）
            isShowFlag : 2
        });
        //  初始化表格
        layuiTable = common.layuiTable.render(layui.table,{
            elem    :   '#data_entity_table'
            ,url    :   '/permissions/org/pagingQuery?flag=1'
            ,cellMinWidth: 80 //全局定义常规单元格的最小宽度，
            , cols: [[
                { field: 'name', title: '机构名称',align:'center' }
                , { field: 'code', title: '机构编码',align:'center' }
                , { field: 'orgType', title: '机构类型',templet: '#org_type',align:'center' }
                , { field: 'parentName', title: '上级机构',align:'center' }
                , { field: 'isEnable', title: '状态',templet: '#entity_is_enable',width:100,align:'center' }
                , { field: 'personName', title: '机构负责人',align:'center' }
                , { field: 'personTel', title: '负责人电话',align:'center' }
                , { field: 'region', title: '地区',align:'center' }
                , { title: '操作', toolbar: '#table-useradmin-webuser',width:180 ,align: 'center'}
            ]]
        });
    })();

    //  监听禁用开启状态
    var switchRollBack = false;
    layui.form.on('switch(switch_is_enable)', function(obj) {
        if (!switchRollBack) {
            //  获取选中行数据
            var data = JSON.parse(decodeURIComponent($(this).data('json')));
            var url = "/permissions/org/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(data){
        layer.confirm('是否确认删除？', function(index) {
            var url = "/permissions/org/deleteEntity";
            common.sendAsyncRequest(url, 'POST', {
                id: data.id
            }, function(){
                //  刷新表格
                layuiTable.reload();
                layer.msg("删除成功");
                layer.close(index);
            });
        });
    });

    //  操作栏事件绑定
    layui.table.on('tool(data_table_event)',function (obj) {
        switch (obj.event) {
            //  修改
            case 'edit':
                common.openDefaultIframe({
                    title   :   '修改机构',
                    content :   '/permissions/org/edit/' + obj.data.id
                });
                break;
            //  区域权限
            case 'region_permissions':
                layer.open({
                    type    :   2,
                    maxmin  :   true,
                    area    :   ['700px', '400px'],
                    title   :   '区域权限',
                    content :   '/permissions/org/region/permissions/info/' + obj.data.id
                });
                break;
            //  删除
            case 'delete':
                deleteOrgFn(obj.data);
                break;
        }
    });

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

    //监听重置
    form.on('submit(reset)', function(){
        resetAreaFn();
        $node.provinceInput.val('');
        $node.cityInput.val('');
        $node.areaInput.val('');
        $node.regionInput.val('');
        $node.nameInput.val('');
        $node.codeInput.val('');
        // $node.xqNameInput.val('');
        // 刷新select标签
        $('#org_type_select').val("");
        $('#is_enable_select').val("");
        form.render('select');
        reloadTable();
    });

    //监听机构添加
    form.on('submit(add)', function(){
        common.openDefaultIframe({
            title   :   '添加机构',
            content :   '/permissions/org/add'
        });
    });

    //监听机构迁移
    form.on('submit(transfer)', function(data){
        if (!selectedItem){
            layer.msg("请先选中左边的树形机构");
            return;
        }
        if (selectedItem.id === pageData.myOrgId){
            layer.msg("无权修改");
            return;
        }
        layer.open({
            type    :   2,
            title   :   '机构迁移',
            area    :   ['500px','300px'],
            content :   '/permissions/org/transfer/' + selectedItem.id
        });
    });

    /*//授权小区下拉列表
    var residentialSelect = xmSelect.render({
        el : '#xq_name',
        radio: true,
        prop : {
           name : 'xqName',
           value : 'xqId',
        },
        toolbar: {
            show: true,
            list: [{
                name: '清空',
                method(){
                    residentialSelect.setValue([]);
                    $node.xqNameInput.val('')
                }
            }]
        },
        clickClose: true,
        filterable : true,
        remoteSearch: true,
        remoteMethod: function(val, cb, show){
            $.ajax({
                type: 'GET',
                url: '/permissions/region/authorize/pagingQuery',
                data: {
                    xqName : val,
                    orgId : pageData.myOrgId,
                },
                success: function (result) {
                    cb(result.data.records);
                },
                error: function () {
                    cb([]);
                }
            });
        },
        //监听选择
        on: function (data) {
            var change = data.change;
            if (change.length > 0) {
                $node.xqNameInput.val(change[0].xqName);
            }
            if (!data.isAdd) {
                $node.xqNameInput.val('');
            }
        },
        //显示方式
        model: {
            label: {
                type: 'text',
                text: {
                    //左边拼接的字符
                    left: '',
                    //右边拼接的字符
                    right: '',
                    //中间的分隔符
                    separator: ', ',
                },
            }
        },
    });*/
});
