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

    //  页面数据
    var pageData = {
        //  账号Id
        'accountId' :   $('#account_id').val(),
        //  文件服务器访问路径
        'fastDfsAccessPath' :   $('#fast_dfs_access_path').val(),
        //  可操作的机构列表
        'orgList'   :   undefined,
        //  文件上传弹出层下标
        'uploading' :   undefined,
        //  当前用户账号的机构Id
        'myOrgId'   :   parseInt($('#user_org_id').val())
    };

    //  页面节点
    var $node = {
        //  头像字段
        'portraitInput'     :   $('input[name="userPortraitUri"]'),
        //  头像预览
        'portraitPreviewImg':   $('#file_preview'),
        //  机构下拉框
        'orgSelect'         :   $('select[name="orgId"]'),
        //  确认密码字段
        'confirmPwdInput'   :   $('input[name="confirmLoginPwd"]'),
        //  角色列表
        'roleList'          :   $('#role_list'),
        //  取消按钮
        'resetBtn'      :   $('button[type="reset"]')
    };

    //  初始化事件
    (function(){

        //  拖拽上传
        layui.upload.render({
            elem: '#file_upload'
            //  上传接口
            ,url: '/common/file/upload'
            ,exts: 'jpg|png|jpeg'
            //  自动上传
            ,auto: true
            //  文件提交上传前的回调
            ,before :   function(obj){
                //  图片预览
                obj.preview(function(index, file, result){
                    $node.portraitPreviewImg.attr('src', result);
                });
                //  上传提示
                pageData.uploading = layer.msg('文件上传中', {
                    icon: 16,
                    shade: 0.4,
                    time:false
                });
            }
            ,done: function(result){
                //  关闭上传提示
                layer.close(pageData.uploading);
                if (result.code === '200'){
                    //  上传成功
                    $node.portraitInput.val(result.data.fullPath);
                }else {
                    this.error();
                }
            }
            ,error  :   function(){
                layer.msg('头像上传失败');
                $node.portraitPreviewImg.removeAttr('src');
                $node.portraitInput.val('');
            }
        });

        //  表单校验
        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 '名称不能全为数字';
                }
            },
            userName : function(value){
                if (value.length > 10){
                    return  '最多只能输入10个字符!'
                }
            },
            //  登陆名
            loginName   :   function(value){
                if (value.length < 5 || value.length > 8){
                    return  '登录名长度限制为5-8个字符!'
                }
            },
            //  密码校验
            password   : [
                /^[\S]{6,12}$/
                ,'密码必须6到12位,且不能出现空格'
            ],
            //  确认密码
            confirmPwd  :   function(value){
                var oldPassword = $('#old_password').val();
                if (oldPassword !== value){
                    return '与前面输入的密码不一致';
                }
            }
        });

        //  提交表单
        layui.form.on("submit(entity_update_filter)",function(data){
            //  拼接选中的角色Id
            var roleIds = '';
            $('input[name="roleIds"]:checked').each(function () {
                roleIds += $(this).val() + ',';
            });
            if (roleIds) {
                data.field.roleIds = roleIds;
            }
            $.ajax({
                url     :    '/permissions/account/edit',
                data    :   data.field,
                type    :   'POST',
                success :   function(){
                    $node.resetBtn.click();
                    parent.location.reload();
                }
            });
        });

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

    //  初始化数据
    (function(){

        //  加载机构列表并选中
        var loadOrganizationListAndSelected = function(selectedId){
            $.ajax({
                url     :   '/permissions/org/getSubListByPid',
                success :   function(result){
                    pageData.orgList = result.list;
                    pageData.orgList.forEach(function(item){
                        if (item.id === selectedId){
                            $node.orgSelect.append('<option value="' + item.id + '" selected>' + item.name + '</option>');
                        }else {
                            $node.orgSelect.append('<option value="' + item.id + '">' + item.name + '</option>');
                        }
                    });
                    //  重新渲染select标签
                    layui.form.render('select');
                }
            });
        };

        //  加载并选中角色
        var loadRoleListAndSelected = function(account){
            $.ajax({
                url     :    '/permissions/account/getMyOrgRoleList',
                success :   function(result){
                    result.list.forEach(function(item){
                        $node.roleList.append('<input type="checkbox" name="roleIds" lay-skin="primary" value="' + item.id + '" title="' + item.name + '" />');
                    });
                    account.roleList.forEach(function(role){
                        //  选中角色
                        $node.roleList.find('input[type="checkbox"][value="' + role.id + '"]').prop('checked',true);
                    });
                    layui.form.render('checkbox');
                }
            });
        };

        //  获取账号信息
        $.ajax({
            url     :   '/permissions/account/get/' + pageData.accountId,
            success :   function(result){
                var account = result.data;
                //  填充表单数据
                layui.form.val('entity_form',account);
                //  头像预览
                $node.portraitPreviewImg.attr('src',pageData.fastDfsAccessPath + account.userPortraitUri);
                //  确认密码
                $node.confirmPwdInput.val(account.loginPwd);
                //  判断是否可操作归属和角色
                var org = account.organization;
                if (org.id === pageData.myOrgId || org.pid === pageData.myOrgId){
                    //  加载机构列表并选中
                    loadOrganizationListAndSelected(account.orgId);
                    //  加载并选中角色
                    loadRoleListAndSelected(account);
                }else {
                    $node.orgSelect.closest('.layui-form-item').remove();
                    $node.roleList.closest('.layui-form-item').remove();
                }
            }
        });

    })();


});