/**
* 自定义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 = '';
var length=window.top.$(".J_mainContent").find("iframe.J_iframe").length;
let ifram='';
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.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("
")
$input.before(" ")
}else{
$input.before(" ")
}
//删除控件本身的name属性
$input.removeAttr("name");
//添加点form表单
var form = $('
')
form.attr("action",basePath+"/admin/uploadFile/doUpload?callBack=MUI.uploadCallBack&inputId="+id);
//创建一个file文件
var file=$('');
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("
")
}
//提交表单
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 += ""
}else{
html += ""
}
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);