/** 
 | 
 * 自定义UI组件库 
 | 
 * @author 姜友瑶 
 | 
 * */ 
 | 
  
 | 
/** 
 | 
 * 自动填充select中的option节点,改节点显示有树的形状 selectID select控件的di 
 | 
 * options=[{ID:'213',PARENT_ID:'123123',NAME:'JYY',value:'213'},{{ID:'213',PARENT_ID:'123123',NAME:'JYY'}}] 
 | 
 */ 
 | 
  
 | 
var MUI=function(){ 
 | 
     
 | 
    "use strict";// 严格模式 
 | 
     
 | 
return { 
 | 
         
 | 
    //全局常量 弹窗宽度 
 | 
     SIZE_S:'40%', 
 | 
     SIZE_L:'70%', 
 | 
     SIZE_M:['100%','100%'], 
 | 
  
 | 
  
 | 
  
 | 
  
 | 
    openTab:function(url,name) { 
 | 
         let t=url; 
 | 
         let i=name; 
 | 
        console.log("点击了菜单"); 
 | 
        let a =''; 
 | 
        let isOpen = false; 
 | 
        window.top.$(".J_menuTab").each(function () { 
 | 
                //重新加载界面 
 | 
                if ($(this).data("id") == t) { 
 | 
                    parent.$(".J_mainContent .J_iframe").each(function () { 
 | 
                            if ($(this).data("id") == t) { 
 | 
                                $(this).attr("src", t); 
 | 
                                isOpen=true; 
 | 
                            } 
 | 
                        } 
 | 
                    ); 
 | 
                } 
 | 
            } 
 | 
        ); 
 | 
        if(!isOpen){ 
 | 
            window.top.$(".J_menuTab").removeClass("active"); 
 | 
            var s = '<a href="javascript:;" id="'+t.replace(/\//g,'-')+'" class="active J_menuTab" data-id="' + t + '">' + i + ' <i class="fa fa-times-circle"></i></a>'; 
 | 
            var length=window.top.$(".J_mainContent").find("iframe.J_iframe").length; 
 | 
            let ifram='<iframe class="J_iframe" name="iframe'+length+'" width="100%" height="100%"  src="'+basePath+t+'" frameborder="0"  data-id="'+t+'" seamless></iframe>'; 
 | 
            window.top.$(".J_menuTabs .page-tabs-content").append(s); 
 | 
            window.top.$(".J_mainContent").find("iframe.J_iframe").hide(); 
 | 
            window.top.$(".J_mainContent").append(ifram); 
 | 
        } else{ 
 | 
  
 | 
  
 | 
            window.top.$(".J_mainContent").find("iframe.J_iframe").each(function () { 
 | 
                if ($(this).data("id") == t) { 
 | 
                    $(this).show(); 
 | 
                }else{ 
 | 
                    $(this).hide(); 
 | 
                } 
 | 
            }); 
 | 
            window.top.$(".J_menuTab").removeClass("active"); 
 | 
            window.top.$("#"+t.replace(/\//g,'-')).addClass("active"); 
 | 
  
 | 
  
 | 
  
 | 
        } 
 | 
  
 | 
    }, 
 | 
  
 | 
  
 | 
  
 | 
     /** 图片在上传的时候,需要在页面嵌套一个jspifram页面 页面处理完图片后服务器返回脚本代码控制父窗口显示图片。 */ 
 | 
     upolad : function(img_id, file_id) { 
 | 
         if ($("#" + file_id).val() == '') { 
 | 
             layer.alert("请先选择要上传的文件!"); 
 | 
             return; 
 | 
         } 
 | 
         $("#" + img_id).attr("src", basePath + "/plat/images/loading.gif"); 
 | 
         $("#" + img_id).show(); 
 | 
     }, 
 | 
  
 | 
  
 | 
  
 | 
  
 | 
    /** 
 | 
     * 初始化文件上传 
 | 
     * 需要传一个input框的选择器,支持多个文件同时初始化 
 | 
     * 编辑时input框value值应该是图片是src路径,这样控件会自动创建图片回显 
 | 
     * 实现原理:在页面创建一个ifram用于提交文件,每个input框会对应的创建一个隐藏input,把原始 
 | 
     * input的值复制给隐藏input这个input会用于最后的提交。 
 | 
     * 还会创建一个form表单,表单中有一个文件选择框。 
 | 
     * 点击原始input会触发文件选择器的点击事件弹出文件选择框。 
 | 
     * 文件上传后会改变隐藏input框架的value值。 
 | 
     * by jyy 
 | 
     */ 
 | 
    initImgUpload:function(selected){ 
 | 
     
 | 
        //文件类型 
 | 
        var fileTypes="gif,jpg,jpeg,png,bmp"; 
 | 
        //最大5M 
 | 
        var maxSize=5*1024*1024; 
 | 
         
 | 
        //在界面创建一个iframe 
 | 
        var iframe = $('<iframe name="blankFrame" ></iframe>'); 
 | 
        iframe.css("display", "none");     
 | 
        $("body").append(iframe); 
 | 
        $(selected).each(function(i){ 
 | 
            //文件类型 
 | 
            var fileTypes="gif,jpg,jpeg,png,bmp"; 
 | 
            var $input=$(this); 
 | 
            var id=$input.attr("id"); 
 | 
            var hideInputId=id+"_hide"; 
 | 
            if($input.data("filetypes")){ 
 | 
                fileTypes=$input.data("filetypes"); 
 | 
            } 
 | 
            //创建一个隐藏控件,如果input有值创建一个img 
 | 
            if($input.val()!=null &&$input.val().length>0 ){ 
 | 
                $input.next("a").after("<img onclick='MUI.removeUpload(this,\""+hideInputId+"\")' id='"+$input.attr("id")+"_img'  class='loadingbig' src='"+$input.val()+"' />") 
 | 
                $input.before("<input   name='"+$input.attr("name")+"' value='"+$input.val()+"'   id='"+$input.attr("id")+"_hide'  style='display:none;' /> ") 
 | 
            }else{ 
 | 
                $input.before("<input   name='"+$input.attr("name")+"'   id='"+hideInputId+"'  style='display:none;' /> ") 
 | 
            } 
 | 
            //删除控件本身的name属性 
 | 
            $input.removeAttr("name"); 
 | 
            //添加点form表单 
 | 
            var form = $('<form method="post" enctype="multipart/form-data" target="blankFrame"  style="display:none;" ></form>') 
 | 
            form.attr("action",basePath+"/admin/uploadFile/doUpload?callBack=MUI.uploadCallBack&inputId="+id); 
 | 
            //创建一个file文件 
 | 
            var file=$('<input   type="file" multiple name="file-1" />'); 
 | 
            form.append(file); 
 | 
            //文件改变就提交 
 | 
            file.change(function(){ 
 | 
                var filePath = file.val(); 
 | 
                var fileName = filePath.substring(filePath.lastIndexOf("\\") + 1, 
 | 
                        filePath.length); 
 | 
                //文件类型判断 
 | 
                var photoExt=fileName.substr(fileName.lastIndexOf(".")+1).toLowerCase();//获得文件后缀名 
 | 
                if(fileTypes.indexOf(photoExt)<0){ 
 | 
                   layer.msg("允许的文件类型是:"+fileTypes,{icon:2,time:2000}); 
 | 
                    return false; 
 | 
                } 
 | 
  
 | 
                var obj=file.get(0); 
 | 
                var fileSize = 0; 
 | 
                  fileSize = obj.files[0].size;      
 | 
                if(fileSize>=maxSize){ 
 | 
                    layer.msg("照片最大尺寸为"+maxSize/1024+"KB,请重新选择文件!",{icon:2}); 
 | 
                    return false; 
 | 
                } 
 | 
                //校验通过开始上传 
 | 
                 
 | 
                //改变输入框字符 
 | 
                $input.val(fileName); 
 | 
                //创建加载图 
 | 
                if($input.next().next().is("img")){ 
 | 
                    $input.next().next().attr("src" ,basePath+"/images/loadingbig.gif"); 
 | 
                }else{ 
 | 
                    $input.next("a").after("<img onclick='MUI.removeUpload(this,\""+hideInputId+"\")'  class='loadingbig' src='"+basePath+"/images/loadingbig.gif' />") 
 | 
                } 
 | 
                //提交表单 
 | 
                form.submit(); 
 | 
            }); 
 | 
            // 绑定事件 
 | 
            $input.click(function(){ 
 | 
                file.trigger("click"); 
 | 
            }); 
 | 
            $input.next("a").click(function(){ 
 | 
                file.trigger("click"); 
 | 
            }); 
 | 
            //把组件添加到文档中 
 | 
            $("body").append(form); 
 | 
        }); 
 | 
         
 | 
         
 | 
    }, 
 | 
     
 | 
    /** 
 | 
     * 删除上传图片 
 | 
     */ 
 | 
    removeUpload:function(node,inputId){ 
 | 
        $(node).remove(); 
 | 
        var textId=inputId.substring(0,inputId.indexOf("_")); 
 | 
        $("#"+textId).val(""); 
 | 
        $("#"+inputId).val(""); 
 | 
         
 | 
    }, 
 | 
    /** 
 | 
     * 上传服务器回调函数 
 | 
     */ 
 | 
     uploadCallBack:function(id,path){ 
 | 
         console.log(path); 
 | 
        $("#"+id+"_hide").val(path); 
 | 
        $("#"+id).next().next().attr("src" ,path); 
 | 
        $("#showImgUrl").hide(); 
 | 
    }, 
 | 
  
 | 
  
 | 
  
 | 
  
 | 
    /** 
 | 
     * 打开多图上传页面 
 | 
     * 
 | 
     * @param fn 
 | 
     *            回调函数 {err:0,url:'http://12312!!!!.jpg'} 
 | 
     */ 
 | 
    openMultipleUpload : function(fn) { 
 | 
        KindEditor.ready(function(K) { 
 | 
            var editor = K.editor({ 
 | 
                cssPath :basePath + '/plugin/kindeditor/plugins/code/prettify.css', 
 | 
                uploadJson :basePath + '/plugin/kindeditor/uploadFile.jsp', 
 | 
                fileManagerJson :basePath + '/plugin/kindeditor/file_manager_json.jsp', 
 | 
                allowFileManager : true 
 | 
            }); 
 | 
            editor.loadPlugin('multiimage', function() { 
 | 
                editor.plugin.multiImageDialog({ 
 | 
                    clickFn : function(urlList) { 
 | 
                        fn(urlList); 
 | 
                        editor.hideDialog(); 
 | 
                    } 
 | 
                }); 
 | 
            }); 
 | 
        }); 
 | 
    }, 
 | 
  
 | 
    /** 
 | 
     * 打开远程图片空间 
 | 
     * 
 | 
     * @param fn 
 | 
     *            回调函数 url:'http://12312!!!!.jpg' 
 | 
     *            event 触发开启事件源 
 | 
     */ 
 | 
    openServiceImgSpace : function(fnn,event) { 
 | 
        KindEditor.ready(function(K) { 
 | 
            var editor = K.editor({ 
 | 
                fileManagerJson : basePath + '/plugin/kindeditor/file_manager_json.jsp', 
 | 
            }); 
 | 
  
 | 
            $(event).click(function(){ 
 | 
  
 | 
                editor.loadPlugin('filemanager', function() { 
 | 
                    editor.plugin.filemanagerDialog({ 
 | 
                        viewType : 'VIEW', 
 | 
                        dirName : 'image', 
 | 
                        clickFn : function(url, title) { 
 | 
                            fnn(url); 
 | 
                            editor.hideDialog(); 
 | 
                        } 
 | 
                    }); 
 | 
                }); 
 | 
            }); 
 | 
        }); 
 | 
    }, 
 | 
    /** 
 | 
     * 创建一个富文本编辑器 
 | 
     */ 
 | 
    createEdit:function( name, width ,heigt ,editor ){ 
 | 
  
 | 
        KindEditor.ready(function(K) { 
 | 
            window[editor]= K.create('textarea[name="'+name+'"]', { 
 | 
                cssPath :  basePath + '/plugin/kindeditor/plugins/code/prettify.css', 
 | 
                uploadJson :  basePath + '/plugin/kindeditor/uploadFile.jsp', 
 | 
                fileManagerJson :  basePath + '/plugin/kindeditor/file_manager_json.jsp', 
 | 
                allowFileManager : true, 
 | 
                width : width, 
 | 
                height : heigt, 
 | 
                afterCreate : function() { 
 | 
                    var self = this; 
 | 
                    K.ctrl(document, 13, function() { 
 | 
                        self.sync(); 
 | 
                        document.forms['example'].submit(); 
 | 
                    }); 
 | 
                    K.ctrl(self.edit.doc, 13, function() { 
 | 
                        self.sync(); 
 | 
                        document.forms['example'].submit(); 
 | 
                    }); 
 | 
                } 
 | 
            }); 
 | 
            prettyPrint(); 
 | 
        }); 
 | 
    }, 
 | 
     
 | 
} 
 | 
     
 | 
}(); 
 | 
  
 | 
  
 | 
//定义一些jquery UI插件 
 | 
(function($) { 
 | 
     
 | 
    $.fn.extend({ 
 | 
         
 | 
        createSelectTree : function(options, seting) { 
 | 
            // 配置对象 
 | 
            var _seting = { 
 | 
                id : "id",        // 选项的值 
 | 
                parent : "parentId",    // 父节点值 
 | 
                value : "name",    // 要显示的名称 
 | 
                append:false,    // 是否为追加 ,默认不追加 
 | 
                defaultValue:null,  //默认选中值 
 | 
                defaultHtml:"",  //默认option 
 | 
            } 
 | 
            var _seting = $.extend(_seting, seting); 
 | 
            // 用每一个节点的id标识一个节点对象,这里是所有对象的map集合 
 | 
            var _options = {}; 
 | 
            var nodeNength = options.length; 
 | 
            for (var i = 0; i < nodeNength; i++) { 
 | 
                // 用id来唯一标识这个节点 
 | 
                _options[options[i][_seting.id]] = options[i]; 
 | 
            } 
 | 
            // 构建树模型 root 是这课树的集合 
 | 
            var root = {}; 
 | 
            root.children = []; 
 | 
            for (var i = 0; i < nodeNength; i++) { 
 | 
                var node = options[i]; 
 | 
                // _options中 如果存在 options 对应的 父节,把当前的节点放入父节点 
 | 
                if (_options[node[_seting.parent]]) { 
 | 
                    var parent = _options[node[_seting.parent]]; 
 | 
                    if (parent.children) { 
 | 
                        parent.children.push(_options[node[_seting.id]]); 
 | 
                    } else { 
 | 
                        parent.children = []; 
 | 
                        parent.children.push(_options[node[_seting.id]]); 
 | 
                    } 
 | 
                } else {// 如果不存在父节点就放入根节点中 
 | 
                    root.children.push(_options[node[_seting.id]]); 
 | 
                } 
 | 
            } 
 | 
            // 创建html代码加载到树当中 
 | 
            var html = ""; 
 | 
            if(_seting.defaultHtml){ 
 | 
                html+=_seting.defaultHtml; 
 | 
            } 
 | 
            html += this.getOptionHtml(root.children, _seting, _options); 
 | 
             
 | 
            if(_seting.append){ 
 | 
                $(this).html($(this).html()+html); 
 | 
            }else{ 
 | 
                $(this).html(html);     
 | 
            } 
 | 
             
 | 
             
 | 
        }, 
 | 
        getOptionHtml : function(children, _seting, _options) { 
 | 
            if (children) { 
 | 
                var length = children.length; 
 | 
                var html = ""; 
 | 
                for (var i = 0; i < length; i++) { 
 | 
                    var node = children[i]; 
 | 
                    var prefix = "| "; 
 | 
                    var count = 0; 
 | 
                    count += this.getParentCount(node, _seting, count, _options); 
 | 
                    for (var j = 0; j < count; j++) { 
 | 
                        prefix += " - "; 
 | 
                    } 
 | 
                    if(_seting.defaultValue && _seting.defaultValue==node[_seting.id] ){ 
 | 
                        html += "<option selected='selected' value='" + node[_seting.id] + "' >" + prefix + node[_seting.value] + "</option>" 
 | 
                    }else{ 
 | 
                        html += "<option value='" + node[_seting.id] + "' >" + prefix + node[_seting.value] + "</option>" 
 | 
                    } 
 | 
                    html += this.getOptionHtml(node.children, _seting, _options); 
 | 
                } 
 | 
                return html; 
 | 
            } else { 
 | 
                return ""; 
 | 
            } 
 | 
        }, 
 | 
        // 获父节点数量 
 | 
        getParentCount : function(node, _seting, count, _options) { 
 | 
            var str = _options[node[_seting.parent]]; 
 | 
            if (str) { 
 | 
                count++; 
 | 
                return this.getParentCount(_options[node[_seting.parent]], _seting, count, _options); 
 | 
            } else { 
 | 
                return count; 
 | 
            } 
 | 
        } 
 | 
    }); 
 | 
  
 | 
})(jQuery); 
 |