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

    //  页面节点
    var $node = {
        //  取消按钮
        'resetBtn'      :   $('button[type="reset"]')
    };
    var xTree;
    //  初始化
    (function(){
        //  获取可操作的权限列表
        $.ajax({
            url     :   '/permissions/account/getMyPermissionsTreeList',
            success :   function(result){
                $.ajax({
                    url     :   '/permissions/role/get/' + $('#role_id').val(),
                    success :   function(resultBean){
                        var role = resultBean.data;
                        //  渲染表单
                        layui.form.val('entity_form',role);
                        //  是否可用
                        $('input[type="radio"][name="isEnable"]').each(function () {
                            var $this = $(this);
                            if (parseInt($this.val()) === role.isEnable) {
                                $this.prop('checked',true);
                            }else {
                                $this.prop('checked',false);
                            }
                        });
                        layui.form.render('radio');
                        if (role && role.menuList){
                            xTree = new layuiXtree({
                                elem: 'permissions_tree'
                                , form: layui.form
                                , data: castDataFormatFn(result.list,resultBean.data.menuList)
                                //  不展开
                                ,isopen  :   false
                            });
                        }
                    }
                });
            }
        });

        //  转换数据格式
        function castDataFormatFn(entityList,list) {
            var resultList = [];
            if (entityList && entityList instanceof Array) {
                entityList.forEach(function (entity) {
                    //  判断是否选中
                    var checked = false;
                    for (var i = 0; i < list.length; i++) {
                        var data = list[i];
                        if (data.id === entity.id) {
                            checked = true;
                            break;
                        }
                    }
                    //  转换子节点
                    var subList = castDataFormatFn(entity.subList, list);
                    resultList.push({
                        //  显示的值
                        title: entity.name,
                        //  隐藏的值
                        value: entity.id,
                        //  不选中
                        checked: checked,
                        //  子节点
                        data: subList
                    });
                });
            }
            return resultList;
        }
    })();


    //  绑定新增表单提交事件
    layui.form.on("submit(entity_update_filter)",function(data){
        var menuIds = '';
        xTree.GetChecked().forEach(function(item){
            var id = item.getAttribute('value');
            if (id){
                menuIds += id + ',';
            }
        });
        data.field.menuIds = menuIds;
        $.ajax({
            url     :   '/permissions/role/update',
            data    :   data.field,
            type    :   'POST',
            success :   function(result){
                if (result.data === true){
                    //  创建成功，关闭当前页面弹窗
                    $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个字符";
            }
        },
    });
});