| /** | 
|  * 自定义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); |