"use strict";
layui.extend({
    common    :   'js/common'
}).use(['jquery','layer','common','form'],function () {
    //  Jquery插件
    var $ = layui.jquery;
    //  弹窗插件
    var layer = layui.layer;
    //  引入公共模块
    var common = layui.common;

    //  页面节点
    var $node = {
        //  取消按钮
        'resetBtn'      :   $('button[type="reset"]')
    };

    var xTree;
    //  初始化
    (function(){
        //  获取可操作的权限列表
        $.ajax({
            url     :   '/permissions/account/getMyPermissionsTreeList',
            success :   function(result){
                xTree = new layuiXtree({
                    elem: 'permissions_tree'
                    , form: layui.form
                    , data: castDataFormatFn(result.list)
                    //  不展开
                    ,isopen  :   false
                });
            }
        });

        //  转换数据格式
        function castDataFormatFn(entityList) {
            var list = [];
            if (entityList && entityList instanceof Array) {
                entityList.forEach(function (entity) {
                    //  转换子节点
                    var subList = castDataFormatFn(entity.subList);
                    list.push({
                        //  显示的值
                        title: entity.name,
                        //  隐藏的值
                        value: entity.id,
                        //  不选中
                        checked: false,
                        //  子节点
                        data: subList
                    });
                });
            }
            return list;
        }
    })();


    //  绑定新增表单提交事件
    layui.form.on("submit(entity_insert_filter)",function(data){
        common.timer($('button[lay-filter="entity_insert_filter"]'))
        var menuIds = '';
        xTree.GetChecked().forEach(function(item){
            var id = item.getAttribute('value');
            if (id){
                menuIds += id + ',';
            }
        });
        data.field.menuIds = menuIds;
        $.ajax({
            url     :   '/permissions/role/add',
            type    :   'POST',
            data    :   data.field,
            success :   function(result){
                if (result.data){
                    $node.resetBtn.click();
                    parent.location.reload();
                } else {
                    layer.msg("创建失败");
                }
            }
        })
    });

    //  取消按钮
    $node.resetBtn.on('click',function(){
        //  关闭当前页面弹窗
        var index = parent.layer.getFrameIndex(window.name);
        parent.layer.close(index);
    });

    layui.form.verify({
        specialCharacters : function (value) {
            if(!/^[a-zA-Z0-9_\u4e00-\u9fa5\s·]+$/.test(value)){
                return '名称不能有特殊字符';
            }
            if(/(^\_)|(\__)|(\_+$)/.test(value)){
                return '名称首尾不能出现下划线\'_\'';
            }
            if(/^\d+\d+\d$/.test(value)){
                return '名称不能全为数字';
            }
        },
        length : function (value) {
            if(value.length < 2 || value.length > 20){
                return "只能输入2-20个字符";
            }
        },
    });
});