Compare commits

...

2 Commits

Author SHA1 Message Date
关凯 bf3cd0b895 5.0.233 2023-12-14 20:58:33 +08:00
关凯 03c5d05c59 5.0.232 2023-11-06 10:18:27 +08:00
26 changed files with 2819 additions and 309 deletions

View File

@ -88,6 +88,11 @@
<artifactId>kdayun-demo</artifactId> <artifactId>kdayun-demo</artifactId>
<version>1.0.1</version> <version>1.0.1</version>
</dependency> </dependency>
<dependency>
<groupId>com.kdayun</groupId>
<artifactId>kdayun-api</artifactId>
<version>1.0.2</version>
</dependency>
</dependencies> </dependencies>
<build> <build>
<defaultGoal>compile</defaultGoal> <defaultGoal>compile</defaultGoal>

View File

@ -5,5 +5,7 @@ mybatis:
type-handlers-package: com.kdayun.z1.core.mybatis.typehandle type-handlers-package: com.kdayun.z1.core.mybatis.typehandle
configuration: configuration:
jdbc-type-for-null: 'null' jdbc-type-for-null: 'null'
# mybatis返回的map内的key全部转化成大写 如果使用了PostgreSql 需要开启这个选项. 否则返回的map 全部会转成小写导致无法显示数据
map-upper: false

View File

@ -275,5 +275,5 @@
"explain": "nvl表达式,返回第一个不为空的值。示例cxt.nvl(null,22) 返回22" "explain": "nvl表达式,返回第一个不为空的值。示例cxt.nvl(null,22) 返回22"
} }
] ]
}, }
] ]

View File

@ -36,7 +36,6 @@ layui.define(function (exports) {
*/ */
throwError: function (msg) { throwError: function (msg) {
throw new Error(msg); throw new Error(msg);
return;
}, },
/** /**
* 弹出一个错误提示 * 弹出一个错误提示
@ -139,6 +138,80 @@ layui.define(function (exports) {
$('.layui-icon-next').hide(); $('.layui-icon-next').hide();
} }
}, },
/**
* 打开tab标签页
* @param {*} url 页签的URL
* @param {*} text 页签的标题
* @param {*} resid 资源id
* @param {*} param 传递的参数
* @param {*} callback 完成回调
*/
openSmallPage: function (url, text, resid, param, callback) {
//遍历页签选项卡
var matchTo, tabs = $('.layadmin-tabsbody-item>iframe'),
path = url.replace(/(^http(s*):)|(\?[\s\S]*$)/g, ''),
tempresid = resid ? resid : url;
if (url.indexOf('isnewtab=1') > -1) {
window.open(url, "_blank");
callback && callback();
return;
}
url = common.setUrlParamObj(url, param, /tokenId/)
if (!common.isEmpty(resid)) {
url = common.setUrlParamObj(url, { resId: resid }, /tokenId/)
}
tabs.each(function (index) {
let iframe = $(this),
menuid = iframe.attr('menuid');
if (menuid === tempresid) {
matchTo = true;
common.tabsPage.index = index;
}
});
var APP_BODY = '#LAY_app_body',
text = text || '签页标题';
$('.layadmin-tabsbody-item').removeClass("layui-show")
//如果未在选项卡中匹配到,则追加选项卡
if (!matchTo) {
$(APP_BODY).append([
'<div class="layadmin-tabsbody-item layui-show">',
'<iframe src="' + url + '" frameborder="0" menuid=' + resid + ' class="layadmin-iframe" name="layadmin-iframe"></iframe>',
'</div>'
].join(''));
common.tabsPage.index = tabs.length;
$(".kdayun-small-title-t").html(text)
common.setPrevAndNext();
$('.layadmin-tabsbody-shade').show();
}
let $iframe
if (path.indexOf('/coremodelshow') != -1 && resid) {
$iframe = $(APP_BODY).find('iframe[menuid="' + resid + '"]');
}
else {
$iframe = $(APP_BODY).find('iframe[src="' + url + '"]');
}
$iframe && !$iframe.attr('loaded') && $iframe.load(function () {
if (url.indexOf('http:') != -1 || url.indexOf('https:') != -1 || url.indexOf('/coremodelshow') == -1) {
$('.layadmin-tabsbody-shade').fadeOut('600');
}
$iframe.attr('loaded', 'true')
});
$iframe.parent().addClass("layui-show")
$(".kdayun-small-title-t").html(text)
callback && callback();
//执行 {setter.MOD_NAME}.tabsPage 下的事件
layui.event.call(this, setter.MOD_NAME, 'tabsPage({*})', {
url: tempresid,
text: text
});
},
/** /**
* 打开tab标签页 * 打开tab标签页
* @param {*} url 页签的URL * @param {*} url 页签的URL
@ -337,8 +410,56 @@ layui.define(function (exports) {
} }
return message.broadcast(msgobj); return message.broadcast(msgobj);
} }
} }
//页面服务
let PageService = {
doOpen: function (type, typeValue, pageCoinfg = {}, param = {}) {
let url, urlParam;
if (type == 'menuId') {
url = "/manager/coremodeldesign/queryDetailPageIdByMenuId";
urlParam = { menuId: typeValue };
} else {
url = "/manager/coremodeldesign/queryDetailPageIdByMenuCode";
urlParam = { menuCode: typeValue };
}
//得到菜单的资源信息
$.get(layui.cache['contentPath'] + url, urlParam,
function (res) {
res = JSON.parse(res)
if (res.state == 'OK') {
let pageId = 'a' + new Date().getTime(),
pageParamId = '&__pageId=' + pageId,
ret = res.obj
param = $.extend(param, ret);
param['__pageId'] = pageId;
let url = `${layui.cache['contentPath']}/manager/coremodelshow/?${type}=${typeValue}${pageParamId}`;
for (key in param) {
param[key] && (url += `&${key}=${param[key]}`)
}
pageCoinfg.area = pageCoinfg.area || ['70%', '70%']
pageCoinfg.content = url;
pageCoinfg.title = ret.title;
pageCoinfg.id = pageId
pageCoinfg.zIndex = new Date().getTime()
common.openLayerPage(pageCoinfg, param);
} else {
common.msgError(res.msg);
}
}
);
},
openDetailPageByMenuId: function (menuId, pageCoinfg, param = {}) {
PageService.doOpen('menuId', menuId, pageCoinfg, param);
},
openDetailPageByMenuCode: function (menuCode, pageCoinfg, param = {}) {
PageService.doOpen('menuCode', menuCode, pageCoinfg, param);
}
}
window['kdayun'] = window['kdayun'] || {}
window['kdayun']['PageService'] = PageService;
//对外暴露的接口 //对外暴露的接口
exports('common', common); exports('common', common);
}); });

View File

@ -131,15 +131,15 @@ layui.define([], function (exports) {
* 跨iframe广播消息 * 跨iframe广播消息
* @param {*} msg * @param {*} msg
*/ */
Messenger.prototype.broadcast = function (msg) { Messenger.prototype.broadcast = function (msg) {
let getFrames=function(win){ let getFrames = function (win) {
if(!win){return []} if (!win) { return [] }
var ret=[] var ret = []
if(win.frames && win.frames.length>0){ if (win.frames && win.frames.length > 0) {
for (let i = 0; i < win.frames.length; i++) { for (let i = 0; i < win.frames.length; i++) {
const fra = win.frames[i]; const fra = win.frames[i];
ret.push(fra); ret.push(fra);
ret=ret.concat(getFrames(fra)); ret = ret.concat(getFrames(fra));
} }
} }
return ret; return ret;
@ -148,7 +148,7 @@ layui.define([], function (exports) {
this.targets = {}; this.targets = {};
this.targets['top'] = new Target(top.window, 'top', this.prefix); this.targets['top'] = new Target(top.window, 'top', this.prefix);
for (let i = 0; i < iframes.length; i++) { for (let i = 0; i < iframes.length; i++) {
this.addTarget(iframes[i], iframes[i].name || this.generalGUID() ); this.addTarget(iframes[i], this.generalGUID());
} }
let targets = this.targets; let targets = this.targets;
for (let tar in targets) { for (let tar in targets) {
@ -161,7 +161,7 @@ layui.define([], function (exports) {
* 本iframe发送消息 * 本iframe发送消息
* @param {*} msg * @param {*} msg
*/ */
Messenger.prototype.send = function (msg) { Messenger.prototype.send = function (msg) {
var targets = this.targets; var targets = this.targets;
for (var target in this.targets) { for (var target in this.targets) {
if (targets.hasOwnProperty(target)) { if (targets.hasOwnProperty(target)) {
@ -207,7 +207,7 @@ layui.define([], function (exports) {
* @param msg 消息值,常量 * @param msg 消息值,常量
* @param callback 消息处理回调 * @param callback 消息处理回调
*/ */
Messenger.prototype.on = function ( msg, callback) { Messenger.prototype.on = function (msg, callback) {
window.addEventListener('message', function (event) { window.addEventListener('message', function (event) {
if (event.data) { if (event.data) {
let d = JSON.parse(event.data); let d = JSON.parse(event.data);
@ -236,5 +236,316 @@ layui.define([], function (exports) {
}; };
return Messenger; return Messenger;
})(); })();
/**
* SSE类
*/
class Sse {
/**
* @param msgId 服务端消息唯一id
* @param timeOut [可选参数] 消息的监听停留时间单位秒; 默认: 300
*/
constructor(msgId, timeOut) {
this.msgId = msgId;
this.timeOut = timeOut;
}
init() {
this.source = null;
if (window.EventSource) {
this.source = new EventSource(`${layui.cache['contentPath']}/core/sse/connect/${this.msgId}/${this.timeOut}`);
this.source.addEventListener('open', (e) => {
}, false);
this.source.addEventListener('message', (e) => {
let data = Base64.base64decode(e.data);
this.callback && this.callback(data);
});
this.source.addEventListener('error', (e) => {
if (e.readyState === EventSource.CLOSED) {
} else {
console.error(e);
}
}, false);
}
}
on(callback) {
this.init();
this.callback = callback;
}
/**
* 发送服务端消息
* @param message 消息内容
*/
send(message) {
Sse.sendTo(this.msgId, message)
}
/**
* 给指定的msgId 发送服务端消息
* @param msgId 服务端消息id
* @param message 消息内容
*/
sendTo(msgId, message) {
if (!message) { return }
$.ajax({
type: "POST",
url: `${layui.cache['contentPath']}/core/sse/push_one/${msgId}`,
data: Base64.base64encode(message),
success: (ret) => {
if (ret.state == RetState.ERROR) {
console.error(ret.msg);
}
},
error: (jqXHR, textStatus, errorThrown) => {
console.error("error", textStatus, errorThrown);
}
});
}
/**
* 关闭消息监听
*/
close() {
this.source.close();
const httpRequest = new XMLHttpRequest();
httpRequest.open('GET', `${layui.cache['contentPath']}/core/sse/close/${this.msgId}`, true);
httpRequest.send();
}
}
const base64EncodeChars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"
const base64DecodeChars = [-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 62, -1, -1, -1, 63, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, -1, -1, -1, -1, -1, -1, -1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, -1, -1, -1, -1, -1, -1, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, -1, -1, -1, -1, -1]
const keyStr = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/="
/**
* base64的编码类
* 用于base64的编码/解码
*/
class Base64 {
/**
* base64编码
* @param str 需要编码的字符串
* @returns 返回编码后的base64字符串
*/
static base64encode(str) {
let out, i, len;
let c1, c2, c3;
str = Base64.utf16to8(str);
len = str.length;
i = 0;
out = "";
while (i < len) {
c1 = str.charCodeAt(i++) & 0xff;
if (i == len) {
out += base64EncodeChars.charAt(c1 >> 2);
out += base64EncodeChars.charAt((c1 & 0x3) << 4);
out += "==";
break;
}
c2 = str.charCodeAt(i++);
if (i == len) {
out += base64EncodeChars.charAt(c1 >> 2);
out += base64EncodeChars.charAt(((c1 & 0x3) << 4) | ((c2 & 0xF0) >> 4));
out += base64EncodeChars.charAt((c2 & 0xF) << 2);
out += "=";
break;
}
c3 = str.charCodeAt(i++);
out += base64EncodeChars.charAt(c1 >> 2);
out += base64EncodeChars.charAt(((c1 & 0x3) << 4) | ((c2 & 0xF0) >> 4));
out += base64EncodeChars.charAt(((c2 & 0xF) << 2) | ((c3 & 0xC0) >> 6));
out += base64EncodeChars.charAt(c3 & 0x3F);
}
return out;
}
/**
* base64解码
* @param base64Str base64字符串
* @returns 返回解码后的字符串
*/
static base64decode(base64Str) {
let c1, c2, c3, c4;
let i, len, out;
// base64Str = Base64.utf8to16(base64Str);
len = base64Str.length;
i = 0;
out = "";
while (i < len) {
/* c1 */
do {
c1 = base64DecodeChars[base64Str.charCodeAt(i++) & 0xff];
}
while (i < len && c1 == -1);
if (c1 == -1)
break;
/* c2 */
do {
c2 = base64DecodeChars[base64Str.charCodeAt(i++) & 0xff];
}
while (i < len && c2 == -1);
if (c2 == -1)
break;
out += String.fromCharCode((c1 << 2) | ((c2 & 0x30) >> 4));
/* c3 */
do {
c3 = base64Str.charCodeAt(i++) & 0xff;
if (c3 == 61)
return Base64.utf8to16(out);
c3 = base64DecodeChars[c3];
}
while (i < len && c3 == -1);
if (c3 == -1)
break;
out += String.fromCharCode(((c2 & 0XF) << 4) | ((c3 & 0x3C) >> 2));
/* c4 */
do {
c4 = base64Str.charCodeAt(i++) & 0xff;
if (c4 == 61)
return Base64.utf8to16(out);
c4 = base64DecodeChars[c4];
}
while (i < len && c4 == -1);
if (c4 == -1)
break;
out += String.fromCharCode(((c3 & 0x03) << 6) | c4);
}
return Base64.utf8to16(out);
}
/**
* 将Ansi编码的字符串进行Base64编码
* @param input 输入的字符串
* @returns 返回加密的base64字符串
*/
static encode64(input) {
let output = "";
let chr1, chr2, chr3;
let enc1, enc2, enc3, enc4;
let i = 0;
do {
chr1 = input.charCodeAt(i++);
chr2 = input.charCodeAt(i++);
chr3 = input.charCodeAt(i++);
enc1 = chr1 >> 2;
enc2 = ((chr1 & 3) << 4) | (chr2 >> 4);
enc3 = ((chr2 & 15) << 2) | (chr3 >> 6);
enc4 = chr3 & 63;
if (isNaN(chr2)) {
enc3 = enc4 = 64;
} else if (isNaN(chr3)) {
enc4 = 64;
}
output = output + keyStr.charAt(enc1) + keyStr.charAt(enc2)
+ keyStr.charAt(enc3) + keyStr.charAt(enc4);
chr1 = chr2 = chr3 = "";
enc1 = enc2 = enc3 = enc4 = "";
} while (i < input.length);
return output;
}
/**
* 将Base64编码字符串转换成Ansi编码的字符串
* @param input 输入的字符串
* @returns 返回明文字符串
*/
static decode64(input) {
let output = "";
let chr1, chr2, chr3;
let enc1, enc2, enc3, enc4;
let i = 0;
if (input.length % 4 != 0) {
return "";
}
let base64test = /[^A-Za-z0-9\+\/\=]/g;
if (base64test.exec(input)) {
return "";
}
do {
enc1 = keyStr.indexOf(input.charAt(i++));
enc2 = keyStr.indexOf(input.charAt(i++));
enc3 = keyStr.indexOf(input.charAt(i++));
enc4 = keyStr.indexOf(input.charAt(i++));
chr1 = (enc1 << 2) | (enc2 >> 4);
chr2 = ((enc2 & 15) << 4) | (enc3 >> 2);
chr3 = ((enc3 & 3) << 6) | enc4;
output = output + String.fromCharCode(chr1);
if (enc3 != 64) {
output += String.fromCharCode(chr2);
}
if (enc4 != 64) {
output += String.fromCharCode(chr3);
}
chr1 = chr2 = chr3 = "";
enc1 = enc2 = enc3 = enc4 = "";
} while (i < input.length);
return output;
}
/**
* 编码utf16转utf8
* @param str 需要转化的字符串
* @returns 返回转化后的utf8字符串
*/
static utf16to8(str) {
let out, i, len, c;
out = "";
len = str.length;
for (i = 0; i < len; i++) {
c = str.charCodeAt(i);
if ((c >= 0x0001) && (c <= 0x007F)) {
out += str.charAt(i);
} else if (c > 0x07FF) {
out += String.fromCharCode(0xE0 | ((c >> 12) & 0x0F));
out += String.fromCharCode(0x80 | ((c >> 6) & 0x3F));
out += String.fromCharCode(0x80 | ((c >> 0) & 0x3F));
} else {
out += String.fromCharCode(0xC0 | ((c >> 6) & 0x1F));
out += String.fromCharCode(0x80 | ((c >> 0) & 0x3F));
}
}
return out;
}
/**
* 编码utf8转utf16
* @param str 需要转化的字符串
* @returns 返回转化后的utf16字符串
*/
static utf8to16(str) {
let out, i, len, c;
let char2, char3;
out = "";
len = str.length;
i = 0;
while (i < len) {
c = str.charCodeAt(i++);
switch (c >> 4) {
case 0: case 1: case 2: case 3: case 4: case 5: case 6: case 7:
// 0xxxxxxx
out += str.charAt(i - 1);
break;
case 12: case 13:
// 110x xxxx 10xx xxxx
char2 = str.charCodeAt(i++);
out += String.fromCharCode(((c & 0x1F) << 6) | (char2 & 0x3F));
break;
case 14:
// 1110 xxxx 10xx xxxx 10xx xxxx
char2 = str.charCodeAt(i++);
char3 = str.charCodeAt(i++);
out += String.fromCharCode(((c & 0x0F) << 12) |
((char2 & 0x3F) << 6) |
((char3 & 0x3F) << 0));
break;
}
}
return out;
}
}
window.Sse = Sse;
exports('Sse', window.Sse);
exports('messenger', window.Messenger); exports('messenger', window.Messenger);
}); });

View File

@ -2,7 +2,6 @@
layui.define(['laytpl', 'element', 'layer', 'zlPinYin', 'common'], function (exports) { layui.define(['laytpl', 'element', 'layer', 'zlPinYin', 'common'], function (exports) {
let $ = layui.jquery, let $ = layui.jquery,
element = layui.element, element = layui.element,
laytpl = layui.laytpl,
zlPinYin = layui.zlPinYin, zlPinYin = layui.zlPinYin,
common = layui.common, common = layui.common,
admin = layui.admin; admin = layui.admin;
@ -476,15 +475,15 @@ layui.define(['laytpl', 'element', 'layer', 'zlPinYin', 'common'], function (exp
.kdayun-app-layout .layui-header a i.layui-icon, .kdayun-app-layout .layui-header a i.layui-icon,
.kdayun-app-layout .layui-header a i.zlui-icon, .kdayun-app-layout .layui-header a i.zlui-icon,
.kdayun-app-layout .layui-header a i.fa { .kdayun-app-layout .layui-header a i.fa {
color:${themeObj.navIconColorInput}; color:${themeObj.navFontColorInput};
} }
.kdayun-app-layout .layui-header a span.layui-nav-more { .kdayun-app-layout .layui-header a span.layui-nav-more {
border-top-color:${themeObj.navIconColorInput} !important; border-top-color:${themeObj.navIconColorInput} ;
border-bottom-color:rgba(255,0,0,0) !important; border-bottom-color:rgba(255,0,0,0);
} }
.kdayun-app-layout .layui-header a span.layui-nav-mored { .kdayun-app-layout .layui-header a span.layui-nav-mored {
border-top-color:rgba(255,0,0,0) !important; border-top-color:rgba(255,0,0,0) ;
border-bottom-color:${themeObj.navIconColorInput} !important; border-bottom-color:${themeObj.navIconColorInput} ;
} }
.kdayun-app-layout .layui-logo { .kdayun-app-layout .layui-logo {
background-color:${themeObj.logoBgInput}; background-color:${themeObj.logoBgInput};
@ -743,7 +742,7 @@ layui.define(['laytpl', 'element', 'layer', 'zlPinYin', 'common'], function (exp
return; return;
} }
if (themeObj.layout == 'top') { if (themeObj.layout == 'top' && window.screen.width > 767) {
let topThemeRender = new TopTheme(themeObj); let topThemeRender = new TopTheme(themeObj);
topThemeRender.render(); topThemeRender.render();
} else { } else {
@ -777,12 +776,111 @@ layui.define(['laytpl', 'element', 'layer', 'zlPinYin', 'common'], function (exp
ThemeRenderBase.prototype.render = function () { ThemeRenderBase.prototype.render = function () {
let that = this; let that = this;
that.config.$elem.empty(); that.config.$elem.empty();
that.renderHeader(); if (that.isSmall()) {
that.renderMenus(); that.renderSmallMenus();
that.renderBody(); that.renderSmallHeader()
that.renderFoot(); that.renderSmallBody();
that.renderFoot();
that.initSmall();
} else {
that.renderHeader();
that.renderMenus();
that.renderBody();
that.renderFoot();
}
element.init(); element.init();
}; };
ThemeRenderBase.prototype.isSmall = function () {
return window.screen.width < 767
}
ThemeRenderBase.prototype.initSmall = function () {
let startX = 0;
let endX = 0;
const touchStart = (e) => {
startX = e.touches[0].clientX;
};
const touchEnd = (e) => {
endX = e.changedTouches[0].clientX;
handleSwipe();
};
const handleSwipe = () => {
if (Math.abs(endX - startX) > 50) {
if (endX > startX) {
layui.admin.sideFlexible('spread');
} else {
layui.admin.sideFlexible();
}
}
};
document.addEventListener("touchstart", touchStart, false);
document.addEventListener("touchend", touchEnd, false);
history.pushState(null, null, document.URL);
window.addEventListener('popstate', function () {
history.pushState(null, null, document.URL);
});
$(".kdayun-small-refresh").on('click', function (e) {
let iframe = $('.layadmin-tabsbody-item.layui-show iframe');
$('.layadmin-tabsbody-item.layui-show iframe')[0].contentWindow.location.reload();
$('.layadmin-tabsbody-shade').show();
iframe.one('load', function () {
$('.layadmin-tabsbody-shade').fadeOut('800');
});
})
$("#TOUX").on('click', function (e) {
let url = layui.cache['contentPath'] + '/info';
common.openSmallPage(url, '基本资料', url);
})
$(".kdayun-menu-close").on('click', function (e) {
layui.admin.sideFlexible();
});
$(".kdayun-header-role").on('click', function (e) {
let $rolediv = $(this),
$dl = $rolediv.find('dl'),
$more = $rolediv.find('.layui-nav-more');
if ($('.kdayun-header-role-dropdown').length == 0) {
$('body').append('<div class="kdayun-header-role-dropdown"></div>');
$('.kdayun-header-role-dropdown').append($dl.clone());
$dl.remove();
}
$dl = $('.kdayun-header-role-dropdown').find('dl');
$dl.find('a').on('click', function (e) {
let switchroleid = $(this).attr('roleid'),
deptid = $(this).attr('deptid') == undefined ? '' : $(this).attr('deptid')
layui.admin.switchRole(switchroleid, deptid)
$dl.removeClass('layui-show')
})
let offset = $rolediv.offset()
$dl.css({
left: offset.left,
top: offset.top + $rolediv.height(),
position: 'absolute',
zIndex: 10000,
})
if ($dl.is(":visible")) {
// $dl.css('display', 'none');
$dl.removeClass('layui-show')
} else {
// $dl.css('display', 'block');
$dl.addClass('layui-show')
}
if ($more.hasClass('layui-nav-mored')) {
$more.removeClass('layui-nav-mored');
$dl.removeClass('layui-show')
} else {
$more.addClass('layui-nav-mored');
$dl.addClass('layui-show')
}
})
}
ThemeRenderBase.prototype.renderHeader = function () { ThemeRenderBase.prototype.renderHeader = function () {
let that = this; let that = this;
that.config.$headerElem = $($('#tpl-header').html()); that.config.$headerElem = $($('#tpl-header').html());
@ -815,6 +913,53 @@ layui.define(['laytpl', 'element', 'layer', 'zlPinYin', 'common'], function (exp
that.config.$menuElem = $($('#tpl-body').html()) that.config.$menuElem = $($('#tpl-body').html())
that.config.$elem.append(that.config.$menuElem); that.config.$elem.append(that.config.$menuElem);
}; };
ThemeRenderBase.prototype.renderSmallMenus = function () {
let that = this;
that.config.$menuElem = $($('#tpl-left-side').html())
that.config.$elem.append(that.config.$menuElem);
that.config.$menuElem.append(`<i class="kdayun-menu-close fa fa-angle-double-left"></i>`)
that.config.$menuElem.append($('#tpl-search').html())
that.config.$menuElem.find('.navbar-side-search').after($('#tpl-menu').html())
that.config.$menuElem.find('.kdayun-menu-container').after($('#tpl-logo').html())
let menuRender = new LeftMenuRender()
menuRender.set({
spreadOne: true,
elem: '#admin-navbar-menu',
cached: false,
url: layui.cache['contentPath'] + '/core/security/querymenuauth',
type: 'post'
});
menuRender.render();
};
ThemeRenderBase.prototype.renderSmallHeader = function () {
let that = this;
that.config.$headerElem = $($('#tpl-header').html());
that.config.$menuElem.children().eq(0).before(that.config.$headerElem);
that.config.$headerElem.append(`
<div class="kdayun-header-info">
<a href="javascript:;">
<img id="TOUX" src="" />
</a>
</div>
<div class="kdayun-header-name-role">
<span id='OBJNAME'></span>
<div class ="kdayun-header-role">
<a href="javascript:;">
<span id='ROLENAME'></span>
<span class="layui-nav-more"></span>
</a>
<dl class="layui-nav-child" id="rolecourse">
</dl>
</div>
<span id='ORGNAME'></span>
</div>
`)
};
ThemeRenderBase.prototype.renderSmallBody = function () {
let that = this;
that.config.$menuElem = $($('#tpl-small-body').html())
that.config.$elem.append(that.config.$menuElem);
};
@ -887,6 +1032,9 @@ layui.define(['laytpl', 'element', 'layer', 'zlPinYin', 'common'], function (exp
spreadOne: false //设置是否只展开一个二级菜单 spreadOne: false //设置是否只展开一个二级菜单
} }
}; };
MenuRenderBase.prototype.isSmall = function () {
return window.screen.width < 767
}
/** /**
* 渲染菜单 * 渲染菜单
*/ */
@ -979,7 +1127,12 @@ layui.define(['laytpl', 'element', 'layer', 'zlPinYin', 'common'], function (exp
searchBox.find('input#navbarSearchValue').val(''); searchBox.find('input#navbarSearchValue').val('');
common.tabsPage.elem = $a; common.tabsPage.elem = $a;
if (!common.isEmpty(href) && isOpen) { if (!common.isEmpty(href) && isOpen) {
common.openTabsPage(href, text || $a.text(), resid); if (this.isSmall()) {
common.openSmallPage(href, text || $a.text(), resid);
return;
} else {
common.openTabsPage(href, text || $a.text(), resid);
}
} }
if (!common.isEmpty(href)) { if (!common.isEmpty(href)) {
$('.kdayun-menu-container li.layui-this').removeClass('layui-this'); $('.kdayun-menu-container li.layui-this').removeClass('layui-this');
@ -1004,8 +1157,8 @@ layui.define(['laytpl', 'element', 'layer', 'zlPinYin', 'common'], function (exp
let value = $(this).find('cite').html(); let value = $(this).find('cite').html();
$('ul.navbarSearchResult').removeClass('layui-show').addClass('layui-hide'); $('ul.navbarSearchResult').removeClass('layui-show').addClass('layui-hide');
$(this).parent().siblings('input').val(''); $(this).parent().siblings('input').val('');
if (!$('#admin-navbar-menu').find('a[lay-tips="' + value + '"]').parent().hasClass('kdayun-menu-item-expand')) { if (!$('#admin-navbar-menu').find('a[lay-text="' + value + '"]').parent().hasClass('kdayun-menu-item-expand')) {
$('#admin-navbar-menu').find('a[lay-tips="' + value + '"]').click(); $('#admin-navbar-menu').find('a[lay-text="' + value + '"]').click();
} }
}) })
@ -1077,7 +1230,7 @@ layui.define(['laytpl', 'element', 'layer', 'zlPinYin', 'common'], function (exp
} }
let layhref = (url !== undefined && url !== '' && url !== null) ? 'yh-href="' + url + '"' : ''; let layhref = (url !== undefined && url !== '' && url !== null) ? 'yh-href="' + url + '"' : '';
ulHtml += '<a href="javascript:;" ' + layhref + ' lay-text="' + item.title + '" lay-tips="' + item.title + '" lay-direction="2" resId=' + item.resid + ' >'; ulHtml += '<a href="javascript:;" ' + layhref + ' lay-text="' + item.title + '" ' + (!this.isSmall() ? 'lay-tips="' + item.title + '""' : '') + '" lay-direction="2" resId=' + item.resid + ' >';
if (item.icon != undefined && item.icon != '') { if (item.icon != undefined && item.icon != '') {
ulHtml += '<img src="' + layui.cache['contentPath'] + item.icon + '" ' + svgOnLoad + ' style="width:16px;height:16px;vertical-align: text-bottom;">'; ulHtml += '<img src="' + layui.cache['contentPath'] + item.icon + '" ' + svgOnLoad + ' style="width:16px;height:16px;vertical-align: text-bottom;">';
} else { } else {

View File

@ -91,7 +91,7 @@ layui.define(['zlContext', 'layer', 'zlConfig', 'form'],
{ name: '小于', field: '<' }, { name: '小于', field: '<' },
{ name: '小于或等于', field: '<=' } { name: '小于或等于', field: '<=' }
] ]
var options = (settings ? JSON.parse(+ settings) : {}) var options = (settings ? JSON.parse(settings.replace(/'/g, '"')) : {})
, dataurl = options.dataurl , dataurl = options.dataurl
, datas = typeof (options.sourcedata) == "string" ? JSON.parse(options.sourcedata || '[]') : options.sourcedata , datas = typeof (options.sourcedata) == "string" ? JSON.parse(options.sourcedata || '[]') : options.sourcedata
, defaultOptions = { , defaultOptions = {

View File

@ -54,6 +54,30 @@
<div class="content unicode" style="display: block;"> <div class="content unicode" style="display: block;">
<ul class="icon_lists dib-box"> <ul class="icon_lists dib-box">
<li class="dib">
<span class="icon iconfont">&#xe6bf;</span>
<div class="name">chatgpt</div>
<div class="code-name">&amp;#xe6bf;</div>
</li>
<li class="dib">
<span class="icon iconfont">&#xec5f;</span>
<div class="name">AI</div>
<div class="code-name">&amp;#xec5f;</div>
</li>
<li class="dib">
<span class="icon iconfont">&#xe66d;</span>
<div class="name">API</div>
<div class="code-name">&amp;#xe66d;</div>
</li>
<li class="dib">
<span class="icon iconfont">&#xe65f;</span>
<div class="name">API管理</div>
<div class="code-name">&amp;#xe65f;</div>
</li>
<li class="dib"> <li class="dib">
<span class="icon iconfont">&#xe695;</span> <span class="icon iconfont">&#xe695;</span>
<div class="name">数据导出</div> <div class="name">数据导出</div>
@ -330,9 +354,9 @@
<pre><code class="language-css" <pre><code class="language-css"
>@font-face { >@font-face {
font-family: 'iconfont'; font-family: 'iconfont';
src: url('iconfont.woff2?t=1693817483680') format('woff2'), src: url('iconfont.woff2?t=1699242797963') format('woff2'),
url('iconfont.woff?t=1693817483680') format('woff'), url('iconfont.woff?t=1699242797963') format('woff'),
url('iconfont.ttf?t=1693817483680') format('truetype'); url('iconfont.ttf?t=1699242797963') format('truetype');
} }
</code></pre> </code></pre>
<h3 id="-iconfont-">第二步:定义使用 iconfont 的样式</h3> <h3 id="-iconfont-">第二步:定义使用 iconfont 的样式</h3>
@ -358,6 +382,42 @@
<div class="content font-class"> <div class="content font-class">
<ul class="icon_lists dib-box"> <ul class="icon_lists dib-box">
<li class="dib">
<span class="icon iconfont icon-chatgpt"></span>
<div class="name">
chatgpt
</div>
<div class="code-name">.icon-chatgpt
</div>
</li>
<li class="dib">
<span class="icon iconfont icon-wuguan"></span>
<div class="name">
AI
</div>
<div class="code-name">.icon-wuguan
</div>
</li>
<li class="dib">
<span class="icon iconfont icon-API"></span>
<div class="name">
API
</div>
<div class="code-name">.icon-API
</div>
</li>
<li class="dib">
<span class="icon iconfont icon-APIguanli"></span>
<div class="name">
API管理
</div>
<div class="code-name">.icon-APIguanli
</div>
</li>
<li class="dib"> <li class="dib">
<span class="icon iconfont icon-shujudaochu"></span> <span class="icon iconfont icon-shujudaochu"></span>
<div class="name"> <div class="name">
@ -772,6 +832,38 @@
<div class="content symbol"> <div class="content symbol">
<ul class="icon_lists dib-box"> <ul class="icon_lists dib-box">
<li class="dib">
<svg class="icon svg-icon" aria-hidden="true">
<use xlink:href="#icon-chatgpt"></use>
</svg>
<div class="name">chatgpt</div>
<div class="code-name">#icon-chatgpt</div>
</li>
<li class="dib">
<svg class="icon svg-icon" aria-hidden="true">
<use xlink:href="#icon-wuguan"></use>
</svg>
<div class="name">AI</div>
<div class="code-name">#icon-wuguan</div>
</li>
<li class="dib">
<svg class="icon svg-icon" aria-hidden="true">
<use xlink:href="#icon-API"></use>
</svg>
<div class="name">API</div>
<div class="code-name">#icon-API</div>
</li>
<li class="dib">
<svg class="icon svg-icon" aria-hidden="true">
<use xlink:href="#icon-APIguanli"></use>
</svg>
<div class="name">API管理</div>
<div class="code-name">#icon-APIguanli</div>
</li>
<li class="dib"> <li class="dib">
<svg class="icon svg-icon" aria-hidden="true"> <svg class="icon svg-icon" aria-hidden="true">
<use xlink:href="#icon-shujudaochu"></use> <use xlink:href="#icon-shujudaochu"></use>

View File

@ -1,8 +1,8 @@
@font-face { @font-face {
font-family: "iconfont"; /* Project id 4067164 */ font-family: "iconfont"; /* Project id 4067164 */
src: url('iconfont.woff2?t=1693817483680') format('woff2'), src: url('iconfont.woff2?t=1699242797963') format('woff2'),
url('iconfont.woff?t=1693817483680') format('woff'), url('iconfont.woff?t=1699242797963') format('woff'),
url('iconfont.ttf?t=1693817483680') format('truetype'); url('iconfont.ttf?t=1699242797963') format('truetype');
} }
.iconfont { .iconfont {
@ -13,6 +13,22 @@
-moz-osx-font-smoothing: grayscale; -moz-osx-font-smoothing: grayscale;
} }
.icon-chatgpt:before {
content: "\e6bf";
}
.icon-wuguan:before {
content: "\ec5f";
}
.icon-API:before {
content: "\e66d";
}
.icon-APIguanli:before {
content: "\e65f";
}
.icon-shujudaochu:before { .icon-shujudaochu:before {
content: "\e695"; content: "\e695";
} }

File diff suppressed because one or more lines are too long

View File

@ -5,6 +5,34 @@
"css_prefix_text": "icon-", "css_prefix_text": "icon-",
"description": "", "description": "",
"glyphs": [ "glyphs": [
{
"icon_id": "35001563",
"name": "chatgpt",
"font_class": "chatgpt",
"unicode": "e6bf",
"unicode_decimal": 59071
},
{
"icon_id": "5961321",
"name": "AI",
"font_class": "wuguan",
"unicode": "ec5f",
"unicode_decimal": 60511
},
{
"icon_id": "33546560",
"name": "API",
"font_class": "API",
"unicode": "e66d",
"unicode_decimal": 58989
},
{
"icon_id": "4417791",
"name": "API管理",
"font_class": "APIguanli",
"unicode": "e65f",
"unicode_decimal": 58975
},
{ {
"icon_id": "22427570", "icon_id": "22427570",
"name": "数据导出", "name": "数据导出",

File diff suppressed because one or more lines are too long

View File

@ -1,3 +1,4 @@
import "yh-ai/dist/index";
import "yh-baidu/dist/index"; import "yh-baidu/dist/index";
import 'yh-bigscreen/dist/index'; import 'yh-bigscreen/dist/index';
import 'yh-business/dist/index'; import 'yh-business/dist/index';
@ -7,6 +8,7 @@ import 'yh-designer/dist/components/core/index';
import 'yh-designer/dist/designer/Designer'; import 'yh-designer/dist/designer/Designer';
import 'yh-designer/dist/designer/Preview'; import 'yh-designer/dist/designer/Preview';
import 'yh-designer/dist/services/index'; import 'yh-designer/dist/services/index';
import "yh-element/dist/index";
import "yh-map/dist/index"; import "yh-map/dist/index";
import "yh-moble/dist/index"; import "yh-moble/dist/index";
import 'yh-player/dist/index'; import 'yh-player/dist/index';
@ -15,4 +17,6 @@ import 'yh-standard/dist/extend/index';
import 'yh-standard/dist/form/index'; import 'yh-standard/dist/form/index';
import 'yh-standard/dist/layout/index'; import 'yh-standard/dist/layout/index';
import "yh-table/dist/index"; import "yh-table/dist/index";
import "yh-template/dist/index";
import "yh-vant/dist/index";
import "yh-wangeditor/dist/index"; import "yh-wangeditor/dist/index";

View File

@ -1,3 +1,4 @@
import "yh-ai/dist/index";
import "yh-baidu/dist/index"; import "yh-baidu/dist/index";
import 'yh-bigscreen/dist/index'; import 'yh-bigscreen/dist/index';
import 'yh-business/dist/index'; import 'yh-business/dist/index';
@ -5,7 +6,9 @@ import 'yh-chart/dist/index';
import 'yh-designer/dist/base/datasource/index'; import 'yh-designer/dist/base/datasource/index';
import 'yh-designer/dist/components/core/index'; import 'yh-designer/dist/components/core/index';
import 'yh-designer/dist/designer/Preview'; import 'yh-designer/dist/designer/Preview';
import 'yh-designer/dist/designer/VersionManger';
import 'yh-designer/dist/services/index'; import 'yh-designer/dist/services/index';
import "yh-element/dist/index";
import "yh-map/dist/index"; import "yh-map/dist/index";
import "yh-moble/dist/index"; import "yh-moble/dist/index";
import 'yh-player/dist/index'; import 'yh-player/dist/index';
@ -14,4 +17,5 @@ import 'yh-standard/dist/extend/index';
import 'yh-standard/dist/form/index'; import 'yh-standard/dist/form/index';
import 'yh-standard/dist/layout/index'; import 'yh-standard/dist/layout/index';
import "yh-table/dist/index"; import "yh-table/dist/index";
import "yh-vant/dist/index";
import "yh-wangeditor/dist/index"; import "yh-wangeditor/dist/index";

File diff suppressed because one or more lines are too long

View File

@ -27,11 +27,11 @@
return jsPath.substring(0, jsPath.lastIndexOf('/') + 1); return jsPath.substring(0, jsPath.lastIndexOf('/') + 1);
}(), }(),
config: {}, onClosed: {}, end: {}, minIndex: 0, minLeft: [], config: {}, onClosed: {}, end: {}, minIndex: 0, minLeft: [],
btn: ['&#x786E;&#x5B9A;', '&#x53D6;&#x6D88;'], btn: ['&#x786E;&#x5B9A;', '&#x53D6;&#x6D88;'],
//五种原始层模式 //五种原始层模式
type: ['dialog', 'page', 'iframe', 'loading', 'tips'], type: ['dialog', 'page', 'iframe', 'loading', 'tips', 'notice'],
//获取节点的style属性值 //获取节点的style属性值
getStyle: function (node, name) { getStyle: function (node, name) {
@ -130,6 +130,27 @@
}, type ? {} : options)); }, type ? {} : options));
}, },
notice: function (content, options, end) {
let type = 5, rskin = ready.config.skin;
let skin = (rskin ? rskin + ' ' + rskin + '-msg' : '') || 'layui-layer-msg';
if (type) end = options;
let defalutOptions = {
type: type,
content: content,
time: 3000,
shade: false,
skin: skin,
offset: 'rt',
title: '提示',
closeBtn: false,
btn: false,
resize: false,
end: end,
zIndex: (new Date()).getTime()
}
return layer.open($.extend(defalutOptions, options));
},
msg: function (content, options, end) { //最常用提示层 msg: function (content, options, end) { //最常用提示层
var type = typeof options === 'function', rskin = ready.config.skin; var type = typeof options === 'function', rskin = ready.config.skin;
var skin = (rskin ? rskin + ' ' + rskin + '-msg' : '') || 'layui-layer-msg'; var skin = (rskin ? rskin + ' ' + rskin + '-msg' : '') || 'layui-layer-msg';
@ -226,33 +247,52 @@
+ (titype ? config.title[0] : config.title) + (titype ? config.title[0] : config.title)
+ '</div>' : ''); + '</div>' : '');
config.zIndex = zIndex; config.zIndex = zIndex;
callback([ if (config.type == 5) {
//遮罩 let icons = {
config.shade ? ('<div class="layui-layer-shade" id="layui-layer-shade' + times + '" times="' + times + '" style="' + ('z-index:' + (zIndex - 1) + '; ') + '"></div>') : '', 0: { font: "fa fa-warning", "color": '#faad14' },
1: { font: "fa fa-check-circle", "color": '#52c41a' },
2: { font: "fa fa-times", "color": '#ff4d4f' },
3: { font: "fa fa-question-circle-o", "color": '#faad14' },
}
callback([
config.shade ? ('<div class="layui-layer-shade" id="layui-layer-shade' + times + '" times="' + times + '" style="' + ('z-index:' + (zIndex - 1) + '; ') + '"></div>') : '',
'<div class="' + doms[0] + ' layui-layer-' + ready.type[config.type] + ' animated bounceInRight" id="' + doms[0] + times + '" type="' + ready.type[config.type] + '" times="' + times + '" showtime="' + config.time + '" conType="' + (conType ? 'object' : 'string') + '" style="z-index: ' + zIndex + ';">'
+ '<div id="' + (config.id || '') + '" class="layui-layer-content' + ((config.type == 0 && config.icon !== -1) ? ' layui-layer-padding' : '') + (config.type == 3 ? ' layui-layer-loading' + config.icon : '') + '">'
+ ` <i class="${icons[config.icon].font}" style="color:${icons[config.icon].color};"></i>
<h2 class="layui-layer-notice-title">${config.title}</h2>
<div class="layui-layer-notice-content"><p>${config.content || ''}</p></div>
<i class="layui-layer-close fa fa-times-circle-o"></i>`
+ '</div>'
], titleHTML, $('<div class="layui-layer-move"></div>'))
} else {
callback([
//遮罩
config.shade ? ('<div class="layui-layer-shade" id="layui-layer-shade' + times + '" times="' + times + '" style="' + ('z-index:' + (zIndex - 1) + '; ') + '"></div>') : '',
//主体 //主体
'<div class="' + doms[0] + (' layui-layer-' + ready.type[config.type]) + (((config.type == 0 || config.type == 2) && !config.shade) ? ' layui-layer-border' : '') + ' ' + (config.skin || '') + '" id="' + doms[0] + times + '" type="' + ready.type[config.type] + '" times="' + times + '" showtime="' + config.time + '" conType="' + (conType ? 'object' : 'string') + '" style="z-index: ' + zIndex + '; width:' + config.area[0] + ';height:' + config.area[1] + (config.fixed ? '' : ';position:absolute;') + '">' '<div class="' + doms[0] + (' layui-layer-' + ready.type[config.type]) + (((config.type == 0 || config.type == 2) && !config.shade) ? ' layui-layer-border' : '') + ' ' + (config.skin || '') + '" id="' + doms[0] + times + '" type="' + ready.type[config.type] + '" times="' + times + '" showtime="' + config.time + '" conType="' + (conType ? 'object' : 'string') + '" style="z-index: ' + zIndex + '; width:' + config.area[0] + ';height:' + config.area[1] + (config.fixed ? '' : ';position:absolute;') + '">'
+ (conType && config.type != 2 ? '' : titleHTML) + (conType && config.type != 2 ? '' : titleHTML)
+ '<div id="' + (config.id || '') + '" class="layui-layer-content' + ((config.type == 0 && config.icon !== -1) ? ' layui-layer-padding' : '') + (config.type == 3 ? ' layui-layer-loading' + config.icon : '') + '">' + '<div id="' + (config.id || '') + '" class="layui-layer-content' + ((config.type == 0 && config.icon !== -1) ? ' layui-layer-padding' : '') + (config.type == 3 ? ' layui-layer-loading' + config.icon : '') + '">'
+ (config.type == 0 && config.icon !== -1 ? '<i class="layui-layer-ico layui-layer-ico' + config.icon + '"></i>' : '') + (config.type == 0 && config.icon !== -1 ? '<i class="layui-layer-ico layui-layer-ico' + config.icon + '"></i>' : '')
+ (config.type == 1 && conType ? '' : (config.content || '')) + (config.type == 1 && conType ? '' : (config.content || ''))
+ '</div>' + '</div>'
+ '<span class="layui-layer-setwin">' + function () { + '<span class="layui-layer-setwin">' + function () {
var closebtn = ismax ? '<a class="layui-layer-min" href="javascript:;"><cite></cite></a><a class="layui-layer-ico layui-layer-max" href="javascript:;"></a>' : ''; var closebtn = ismax ? '<a class="layui-layer-min" href="javascript:;"><cite></cite></a><a class="layui-layer-ico layui-layer-max" href="javascript:;"></a>' : '';
config.closeBtn && (closebtn += '<a class="layui-layer-ico ' + doms[7] + ' ' + doms[7] + (config.title ? config.closeBtn : (config.type == 4 ? '1' : '2')) + '" href="javascript:;"></a>'); config.closeBtn && (closebtn += '<a class="layui-layer-ico ' + doms[7] + ' ' + doms[7] + (config.title ? config.closeBtn : (config.type == 4 ? '1' : '2')) + '" href="javascript:;"></a>');
return closebtn; return closebtn;
}() + '</span>' }() + '</span>'
+ (config.btn ? function () { + (config.btn ? function () {
var button = ''; var button = '';
typeof config.btn === 'string' && (config.btn = [config.btn]); typeof config.btn === 'string' && (config.btn = [config.btn]);
for (var i = 0, len = config.btn.length; i < len; i++) { for (var i = 0, len = config.btn.length; i < len; i++) {
button += '<a class="' + doms[6] + '' + i + '">' + config.btn[i] + '</a>' button += '<a class="' + doms[6] + '' + i + '">' + config.btn[i] + '</a>'
} }
return '<div class="' + doms[6] + ' layui-layer-btn-' + (config.btnAlign || '') + '">' + button + '</div>' return '<div class="' + doms[6] + ' layui-layer-btn-' + (config.btnAlign || '') + '">' + button + '</div>'
}() : '') }() : '')
+ (config.resize ? '<span class="layui-layer-resize"></span>' : '') + (config.resize ? '<span class="layui-layer-resize"></span>' : '')
+ '</div>' + '</div>'
], titleHTML, $('<div class="layui-layer-move"></div>')); ], titleHTML, $('<div class="layui-layer-move"></div>'));
}
return that; return that;
}; };
@ -304,6 +344,10 @@
config.tips = typeof config.tips === 'object' ? config.tips : [config.tips, true]; config.tips = typeof config.tips === 'object' ? config.tips : [config.tips, true];
config.tipsMore || layer.closeAll('tips'); config.tipsMore || layer.closeAll('tips');
break; break;
case 5:
//notice
break
} }
//建立容器 //建立容器
@ -318,7 +362,21 @@
$('#' + doms[0] + times).find('.' + doms[5]).before(titleHTML); $('#' + doms[0] + times).find('.' + doms[5]).before(titleHTML);
} }
}(); }();
}() : body.append(html[1]); }() : function () {
if (config.type !== 5) {
return body.append(html[1])
} else {
let $container = $('.layui-layer-notice-container');
if ($container.length == 0) {
body.append(`<div class ="layui-layer-notice-container" style="z-index:${config.zIndex};"></div`)
$container = $('.layui-layer-notice-container');
}
$container.append(html[1]);
$container.children().last().find(".click").on('click', function (e) {
config.click && new Function(config.click).call(this, e);
})
}
}();
//修改源插件为post提交 //修改源插件为post提交
//------------------------------------------------------------------------------- //-------------------------------------------------------------------------------
if (config.params != undefined || (config.method != undefined && config.method != 'get')) { if (config.params != undefined || (config.method != undefined && config.method != 'get')) {
@ -432,6 +490,10 @@
//计算坐标 //计算坐标
Class.pt.offset = function () { Class.pt.offset = function () {
var that = this, config = that.config, layero = that.layero; var that = this, config = that.config, layero = that.layero;
if (config.type == 5) {
layero = layero.parent();
}
var area = [layero.outerWidth(), layero.outerHeight()]; var area = [layero.outerWidth(), layero.outerHeight()];
var type = typeof config.offset === 'object'; var type = typeof config.offset === 'object';
that.offsetTop = (win.height() - area[1]) / 2; that.offsetTop = (win.height() - area[1]) / 2;
@ -457,7 +519,7 @@
that.offsetTop = win.height() - area[1]; that.offsetTop = win.height() - area[1];
that.offsetLeft = 0; that.offsetLeft = 0;
} else if (config.offset === 'rt') { //右上角 } else if (config.offset === 'rt') { //右上角
that.offsetTop = 0; that.offsetTop = 0 + (that.config.offsetTop || 0);
that.offsetLeft = win.width() - area[0]; that.offsetLeft = win.width() - area[0];
} else if (config.offset === 'rb') { //右下角 } else if (config.offset === 'rb') { //右下角
that.offsetTop = win.height() - area[1]; that.offsetTop = win.height() - area[1];
@ -955,7 +1017,7 @@
layer.close = function (index) { layer.close = function (index) {
var layero = $('#' + doms[0] + index), type = layero.attr('type'), closeAnim = 'layer-anim-close'; var layero = $('#' + doms[0] + index), type = layero.attr('type'), closeAnim = 'layer-anim-close';
if (!layero[0]) return; if (!layero[0]) return;
layero.length != 0 && ready.onClosed[index] && ready.onClosed[index](); layero.length != 0 && ready.onClosed[index] && ready.onClosed[index]();
var WRAP = 'layui-layer-wrap', remove = function () { var WRAP = 'layui-layer-wrap', remove = function () {
if (type === ready.type[1] && layero.attr('conType') === 'object') { if (type === ready.type[1] && layero.attr('conType') === 'object') {
@ -1346,13 +1408,13 @@
exports('layer', layer); exports('layer', layer);
}) })
) : ( ) : (
(typeof define === 'function' && define.amd) ? define(['jquery'], function () { //requirejs加载 (typeof define === 'function' && define.amd) ? define(['jquery'], function () { //requirejs加载
ready.run(window.jQuery); ready.run(window.jQuery);
return layer; return layer;
}) : function () { //普通script标签加载 }) : function () { //普通script标签加载
ready.run(window.jQuery); ready.run(window.jQuery);
layer.ready(); layer.ready();
}() }()
); );
}(window); }(window);

View File

@ -58,35 +58,64 @@ layui.define(['view', 'theme', 'common'], function (exports) {
if (status === 'spread') { if (status === 'spread') {
//切换到展开状态的 icon箭头 //切换到展开状态的 icon箭头
iconElem.removeClass(ICON_SPREAD).addClass(ICON_SHRINK); iconElem.removeClass(ICON_SPREAD).addClass(ICON_SHRINK);
//移动从左到右位移PC清除多余选择器恢复默认 //移动从左到右位移PC清除多余选择器恢复默认
if (screen < 2) { if (screen < 2) {
app.addClass(APP_SPREAD_SM); app.addClass(APP_SPREAD_SM);
} else { } else {
app.removeClass(APP_SPREAD_SM); app.removeClass(APP_SPREAD_SM);
} }
app.removeClass(SIDE_SHRINK) app.removeClass(SIDE_SHRINK)
} else { } else {
//切换到搜索状态的 icon箭头 //切换到搜索状态的 icon箭头
iconElem.removeClass(ICON_SHRINK).addClass(ICON_SPREAD); iconElem.removeClass(ICON_SHRINK).addClass(ICON_SPREAD);
//移动清除多余选择器恢复默认PC从右往左收缩 //移动清除多余选择器恢复默认PC从右往左收缩
if (screen < 2) { if (screen < 2) {
app.removeClass(SIDE_SHRINK); app.removeClass(SIDE_SHRINK);
} else { } else {
app.addClass(SIDE_SHRINK); app.addClass(SIDE_SHRINK);
} }
app.removeClass(APP_SPREAD_SM) app.removeClass(APP_SPREAD_SM)
} }
$('#rolecourse').removeClass('layui-show');
layui.event.call(this, setter.MOD_NAME, 'side({*})', { layui.event.call(this, setter.MOD_NAME, 'side({*})', {
status: status status: status
}); });
}, },
/**
* 切换角色
* @param {*} switchroleid 要切换的角色id
* @param {*} deptid 要切换的部门id
*/
switchRole: function (switchroleid, deptid) {
var curroleid = $('#ROLENAME').attr('roleid'),
currdeptid = $('#ROLENAME').attr('deptid'),
param = {
roleid: switchroleid,
deptid: deptid
}
if (curroleid == switchroleid && currdeptid == deptid) {
return;
} else {
var index = layer.load();
$.ajax({
url: layui.cache['contentPath'] + '/switchRole?t=' + Math.floor(Math.random() * 100),
data: param,
type: 'get',
async: false,
dataType: 'json',
contentType: "application/json",
success: function (result) {
if (result.state == 'OK') {
layer.close(index);
top.location.href = layui.cache['contentPath'] + '/index?tokenId=' + $('#tokenId').val();
}
},
error: function (xhr, textStatus, errorThrown) {
layer.msg('请求异常!' + xhr.responseText);
},
});
}
},
/** /**
* 获取当前用户信息 * 获取当前用户信息
* @param {*} callback 用户信息完成获取回调 * @param {*} callback 用户信息完成获取回调
@ -122,7 +151,7 @@ layui.define(['view', 'theme', 'common'], function (exports) {
doMessage: function (msg) { doMessage: function (msg) {
let d = JSON.parse(msg); let d = JSON.parse(msg);
if (d && d.msg == 'openTabPage') { if (d && d.msg == 'openTabPage') {
common.openTabsPage(d.params.url, d.params.title, d.params.resid, d.params.paramm, function () { common.openTabsPage(d.params.url, d.params.title, d.params.resid, d.params.param, function () {
var tabId = d.params.resid ? d.params.resid : d.params.url; var tabId = d.params.resid ? d.params.resid : d.params.url;
admin.tabsBodyChange(tabsPage.index, { admin.tabsBodyChange(tabsPage.index, {
url: tabId, url: tabId,
@ -561,7 +590,8 @@ layui.define(['view', 'theme', 'common'], function (exports) {
}); });
} }
}) })
} },
}; };
@ -734,7 +764,7 @@ layui.define(['view', 'theme', 'common'], function (exports) {
resizeSystem.lock = true; resizeSystem.lock = true;
} }
$win.on('resize', layui.data.resizeSystem); $win.on('resize', layui.data.resizeSystem);
admin.sideFlexible(admin.screen() < 2 ? '' : 'spread');
/** /**
* 渲染角色下拉 * 渲染角色下拉
* @param {*} loginInfo 登录的返回信息 * @param {*} loginInfo 登录的返回信息
@ -767,41 +797,16 @@ layui.define(['view', 'theme', 'common'], function (exports) {
$rolecourse.append(html); $rolecourse.append(html);
initRoleClickEvent(); initRoleClickEvent();
} }
/** /**
* 初始化角色点击事件 * 初始化角色点击事件
*/ */
function initRoleClickEvent() { function initRoleClickEvent() {
$('#rolecourse a').on('click', function () { $('#rolecourse a').on('click', function () {
var curroleid = $('#ROLENAME').attr('roleid'), let switchroleid = $(this).attr('roleid'),
currdeptid = $('#ROLENAME').attr('deptid'), deptid = $(this).attr('deptid') == undefined ? '' : $(this).attr('deptid')
switchroleid = $(this).attr('roleid'), admin.switchRole(switchroleid, deptid);
deptid = $(this).attr('deptid') == undefined ? '' : $(this).attr('deptid'),
param = {
roleid: switchroleid,
deptid: deptid
}
if (curroleid == switchroleid && currdeptid == deptid) {
return;
} else {
var index = layer.load();
$.ajax({
url: layui.cache['contentPath'] + '/switchRole?t=' + Math.floor(Math.random() * 100),
data: param,
type: 'get',
async: false,
dataType: 'json',
contentType: "application/json",
success: function (result) {
if (result.state == 'OK') {
layer.close(index);
top.location.href = layui.cache['contentPath'] + '/index?tokenId=' + $('#tokenId').val();
}
},
error: function (xhr, textStatus, errorThrown) {
layer.msg('请求异常!' + xhr.responseText);
},
});
}
}); });
} }
/** /**
@ -889,7 +894,7 @@ layui.define(['view', 'theme', 'common'], function (exports) {
* 主题渲染 * 主题渲染
*/ */
function renderTheme() { function renderTheme() {
window['kdtheme'].render(true); window['kdtheme'].render(false);
} }
function renderMenu(userInfo) { function renderMenu(userInfo) {
@ -915,9 +920,8 @@ layui.define(['view', 'theme', 'common'], function (exports) {
//当前设定主题设置 //当前设定主题设置
let m = theme.getTheme(true); let m = theme.getTheme(true);
if (m) { if (m) {
var g_loginInfo = null let g_loginInfo = null
common.on('setTheme', function (event) { common.on('setTheme', function (event) {
renderTheme();
if (g_loginInfo === null) { if (g_loginInfo === null) {
admin.getUserInfo(function (userInfo, error) { admin.getUserInfo(function (userInfo, error) {
if (error) { if (error) {
@ -925,6 +929,47 @@ layui.define(['view', 'theme', 'common'], function (exports) {
} else { } else {
g_loginInfo = userInfo; g_loginInfo = userInfo;
renderMenu(g_loginInfo) renderMenu(g_loginInfo)
/**
* 接收到通知消息
*/
common.on('NOTICE_MSG', (event) => {
layer.notice(event.params.content, $.extend({ offsetTop: 80 }, event.params));
})
let sseMsg = JSON.stringify({
MSG: 'NOTICE_MSG',
tokenId: userInfo.tokenId
})
let sse = new Sse(sseMsg, 30000);
sse.on((data) => {
let msg
if (typeof data == 'string') {
if (data.startsWith('{') || data.startsWith('[')) {
msg = JSON.parse(data)
} else {
msg = data;
}
}
let mp3 = new Audio(`${layui.cache['contentPath']}/static/image/message.mp3`) //创建音频对象
mp3.loop = false
mp3.play()
if (msg instanceof Array) {
msg && msg.forEach(item => {
layer.notice(item.msg, $.extend({ offsetTop: 80, click: item.click }, { icon: item.icon, time: item.time }))
});
} else if (typeof msg == 'string') {
layer.notice(msg, $.extend({ offsetTop: 80, content: msg }, { icon: 1, time: 0 }))
} else if (typeof msg == 'object') {
layer.notice(msg, $.extend({ icon: 1, time: 0 }, {
offsetTop: 80,
title: msg.msgTitle,
content: msg.msgContext,
icon: msg.icon,
time: msg.time,
click: msg.click
},))
}
});
} }
}) })
} else { } else {
@ -936,11 +981,6 @@ layui.define(['view', 'theme', 'common'], function (exports) {
/** /**
* 判断是否已经加载主题 * 判断是否已经加载主题
*/ */
window['--hasload-kd-Theme'] = true;
$('body').addClass('loaded');
$('#loader-wrapper .load_title').remove();
common.on('TabPageFinished', function (event) { common.on('TabPageFinished', function (event) {
$('.layadmin-tabsbody-shade').fadeOut('600'); $('.layadmin-tabsbody-shade').fadeOut('600');
}) })

View File

@ -1866,16 +1866,25 @@ ul.navbarSearchResult::-webkit-scrollbar-track {
} }
.kdayun-app-layout-top .kdayun-logo { .kdayun-app-layout-top .kdayun-logo {
display: block; /* display: block;
position: absolute; position: absolute;
padding: 8px; padding: 8px; */
display: flex;
flex-direction: row;
align-items: center;
margin-left: 8px;
}
.kdayun-app-layout .layui-header {
display: flex;
} }
.kdayun-app-layout-top .kdayun-menu-container { .kdayun-app-layout-top .kdayun-menu-container {
position: relative; /* position: relative;
display: inline-block; display: inline-block;
margin-left: 200px; margin-left: 200px; */
margin-top: 25px; margin-top: 25px;
width: calc(100% - 581px);
} }
/* .kdayun-app-layout-top .kdayun-menu-ul { /* .kdayun-app-layout-top .kdayun-menu-ul {
@ -2184,7 +2193,154 @@ CORE STYLES BELOW - NO TOUCHY
@media (max-width:575px) {} @media (max-width:575px) {}
/* Small (sm) and down */ /* Small (sm) and down */
@media (max-width:767px) {} @media (max-width:767px) {
.kdayun-app-layout-left.layadmin-side-spread-sm .kdayun-menu {
width: 220px !important;
}
.kdayun-app-layout-left.kdayun-app-layout .kdayun-menu {
width: 0px;
}
.kdayun-app-layout-left .kdayun-menu-container {
height: calc(100% - 194px) !important;
}
.kdayun-app-layout-left .layui-layout-left,
.kdayun-app-layout-left .layadmin-pagetabs,
.kdayun-app-layout-left .kdayun-pagetab-body,
.kdayun-app-layout-left .layui-footer {
left: 0px !important;
}
.kdayun-app-layout-left .layadmin-pagetabs {
top: 0px;
}
.kdayun-app-layout-left .kdayun-pagetab-body {
top: 38px;
}
.kdayun-small-title-t {
display: inline-block;
margin: auto;
width: 80%;
text-align: center;
font-weight: 700;
font-size: medium;
}
.kdayun-small-title {
position: fixed;
width: 100%;
height: 35px;
line-height: 35px;
padding: 0 8px 0 8px;
background-color: #fff;
box-sizing: border-box;
}
.kdayun-app-layout-left .kdayun-header {
height: 50px;
background-color: inherit !important;
padding: 10px;
display: flex;
flex-direction: row;
}
.kdayun-app-layout-left .kdayun-header-info img {
width: 64px;
height: 64px;
border-radius: 50%;
}
.kdayun-app-layout-left .kdayun-header .kdayun-header-name-role {
margin-left: 10px;
}
.kdayun-app-layout-left .kdayun-header .kdayun-header-name-role span {
font-size: 12px !important;
}
.kdayun-app-layout-left .kdayun-header .kdayun-header-role,
.kdayun-app-layout-left .kdayun-header a {
color: inherit;
}
.kdayun-app-layout-left .kdayun-header a {
display: flex;
flex-direction: row;
align-items: end;
}
.kdayun-app-layout-left .kdayun-header .layui-nav-more {
margin-left: 5px;
border-width: 6px;
border-top-style: solid;
border-top-color: #fff;
border-top-color: rgba(255, 255, 255, .7);
content: '';
width: 0;
height: 0;
border-style: dashed;
border-color: transparent;
overflow: hidden;
cursor: pointer;
transition: all .2s;
-webkit-transition: all .2s;
}
.kdayun-header-role-dropdown .layui-nav-child {
min-width: unset;
line-height: 31px;
border-radius: 4px;
}
.kdayun-header-role-dropdown .layui-nav-child dd {
margin-left: 4px;
}
.kdayun-app-layout-left .kdayun-header a:hover {
color: unset !important;
}
.kdayun-app-layout .layui-header a span.layui-nav-mored {
border-top-color: transparent !important;
border-bottom-color: unset !important;
display: flex;
flex-direction: row;
}
.kdayun-app-layout .layui-header a span.layui-nav-more {
border-top-color: unset !important;
border-bottom-color: transparent !important;
}
.kdayun-app-layout .kdayun-menu-close {
position: absolute;
right: 1px;
top: 1px;
width: 16px;
height: 16px;
z-index: 10000;
font-size: 18px;
}
.kdayun-small-refresh {
position: absolute;
right: 8px;
top: 10px;
}
.kdayun-pagetab-body .layadmin-tabsbody-shade div {
font-size: 26px;
}
.kdayun-pagetab-body .layadmin-tabsbody-shade div:last-child {
font-size: 18px;
}
}
/* Medium (md) and down */ /* Medium (md) and down */
@media (max-width:991px) { @media (max-width:991px) {

View File

@ -156,7 +156,19 @@
<ul class="navbarSearchResult layui-hide kdayun-search-result"></ul> <ul class="navbarSearchResult layui-hide kdayun-search-result"></ul>
</div> </div>
</script> </script>
<script id="tpl-small-body" type="text/html">
<div class="layadmin-pagetabs kdayun-pagetabs" id="LAY_app_tabs" style="padding-left: 0px;padding-right: 40px;">
</div>
<div class="kdayun-pagetab-body" id="LAY_app_body">
<div class="layadmin-tabsbody-shade">
<div>页面载入中...</div>
<div><@configValue id='D9D9033598B54FD794995DA742A58A40'> </@configValue></div>
</div>
<div class="layadmin-tabsbody-item layui-show kdayun-pagetab-body-item">
<iframe src="${request.contextPath}/manager/corehomepage/web/index" frameborder="0" class="layadmin-iframe kdayun-pagetab-iframe"></iframe>
</div>
</div>
</script>
<script id="tpl-body" type="text/html"> <script id="tpl-body" type="text/html">
<div class="layadmin-pagetabs kdayun-pagetabs" id="LAY_app_tabs" style="padding-left: 0px;padding-right: 40px;"> <div class="layadmin-pagetabs kdayun-pagetabs" id="LAY_app_tabs" style="padding-left: 0px;padding-right: 40px;">

View File

@ -64,7 +64,7 @@
</ul> </ul>
<ul class="layui-nav layui-layout-right" lay-filter="layadmin-layout-right"> <ul class="layui-nav layui-layout-right" lay-filter="layadmin-layout-right">
<li class="layui-nav-item" lay-unselect> <li class="layui-nav-item" lay-unselect>
<a layadmin-event="message" yh-href="${request.contextPath}/manager/coremodelshow/?modelId=C2AB0681B83246F78D467A0D05E5B821" resid="5A61E550409841298EC15DBF68B95D8B" nopost="1" lay-text="消息中心"> <a layadmin-event="message" yh-href="${request.contextPath}/manager/coremodelshow/?modelId=A1411798AA8D40ABB6ED5877FF3D3342" resid="5A61E550409841298EC15DBF68B95D8B" nopost="1" lay-text="消息中心">
<i class="layui-icon layui-icon-notice"></i> <i class="layui-icon layui-icon-notice"></i>
<!-- 如果有新消息,则显示小圆点 --> <!-- 如果有新消息,则显示小圆点 -->
<span class="layui-badge-dot"></span> <span class="layui-badge-dot"></span>
@ -258,7 +258,7 @@
<!-- 头部区域 --> <!-- 头部区域 -->
<ul class="layui-nav layui-layout-right kdayun-header-right-tools" lay-filter="layadmin-layout-right"> <ul class="layui-nav layui-layout-right kdayun-header-right-tools" lay-filter="layadmin-layout-right">
<li class="layui-nav-item" lay-unselect> <li class="layui-nav-item" lay-unselect>
<a layadmin-event="message" yh-href="${request.contextPath}/manager/coremodelshow/?modelId=C2AB0681B83246F78D467A0D05E5B821" resid="5A61E550409841298EC15DBF68B95D8B" nopost="1" lay-text="消息中心"> <a layadmin-event="message" yh-href="${request.contextPath}/manager/coremodelshow/?modelId=A91C3704525C4F9FADD779E939E949E5" resid="5A61E550409841298EC15DBF68B95D8B" nopost="1" lay-text="消息中心">
<i class="layui-icon layui-icon-notice"></i> <i class="layui-icon layui-icon-notice"></i>
<!-- 如果有新消息,则显示小圆点 --> <!-- 如果有新消息,则显示小圆点 -->
<span class="layui-badge-dot"></span> <span class="layui-badge-dot"></span>
@ -342,7 +342,24 @@
<ul class="navbarSearchResult layui-hide kdayun-search-result"></ul> <ul class="navbarSearchResult layui-hide kdayun-search-result"></ul>
</div> </div>
</script> </script>
<script id="tpl-small-body" type="text/html">
<div class="kdayun-small-title">
<a href="javascript:;" layadmin-event="flexible" title="侧边伸缩">
<i class="layui-icon layui-icon-spread-left" id="kdayun-app-flexible"></i>
</a>
<span class="kdayun-small-title-t">首页</span>
<i class="kdayun-small-refresh fa fa-refresh"></i>
</div>
<div class="kdayun-pagetab-body" id="LAY_app_body">
<div class="layadmin-tabsbody-shade">
<div>页面载入中...</div>
<div><@configValue id='D9D9033598B54FD794995DA742A58A40'> </@configValue></div>
</div>
<div class="layadmin-tabsbody-item layui-show kdayun-pagetab-body-item">
<iframe src="${request.contextPath}/manager/corehomepage/web/index" frameborder="0" class="layadmin-iframe kdayun-pagetab-iframe"></iframe>
</div>
</div>
</script>
<script id="tpl-body" type="text/html"> <script id="tpl-body" type="text/html">
<div class="layadmin-pagetabs kdayun-pagetabs" id="LAY_app_tabs" style="padding-left: 0px;padding-right: 40px;"> <div class="layadmin-pagetabs kdayun-pagetabs" id="LAY_app_tabs" style="padding-left: 0px;padding-right: 40px;">

View File

@ -23,7 +23,7 @@
<!-- jdk版本 --> <!-- jdk版本 -->
<jdk.version>1.8</jdk.version> <jdk.version>1.8</jdk.version>
<!-- 平台版本 --> <!-- 平台版本 -->
<base.version>5.0.232</base.version> <base.version>5.0.233</base.version>
<!-- Spring 版本号 --> <!-- Spring 版本号 -->
<spring.version>5.1.2.RELEASE</spring.version> <spring.version>5.1.2.RELEASE</spring.version>