master
关凯 2023-12-14 20:58:33 +08:00
parent 03c5d05c59
commit bf3cd0b895
26 changed files with 2819 additions and 309 deletions

View File

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

View File

@ -5,5 +5,7 @@ mybatis:
type-handlers-package: com.kdayun.z1.core.mybatis.typehandle
configuration:
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"
}
]
},
}
]

View File

@ -36,7 +36,6 @@ layui.define(function (exports) {
*/
throwError: function (msg) {
throw new Error(msg);
return;
},
/**
* 弹出一个错误提示
@ -139,6 +138,80 @@ layui.define(function (exports) {
$('.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标签页
* @param {*} url 页签的URL
@ -337,8 +410,56 @@ layui.define(function (exports) {
}
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);
});

View File

@ -132,14 +132,14 @@ layui.define([], function (exports) {
* @param {*} msg
*/
Messenger.prototype.broadcast = function (msg) {
let getFrames=function(win){
if(!win){return []}
var ret=[]
if(win.frames && win.frames.length>0){
let getFrames = function (win) {
if (!win) { return [] }
var ret = []
if (win.frames && win.frames.length > 0) {
for (let i = 0; i < win.frames.length; i++) {
const fra = win.frames[i];
ret.push(fra);
ret=ret.concat(getFrames(fra));
ret = ret.concat(getFrames(fra));
}
}
return ret;
@ -148,7 +148,7 @@ layui.define([], function (exports) {
this.targets = {};
this.targets['top'] = new Target(top.window, 'top', this.prefix);
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;
for (let tar in targets) {
@ -207,7 +207,7 @@ layui.define([], function (exports) {
* @param msg 消息值,常量
* @param callback 消息处理回调
*/
Messenger.prototype.on = function ( msg, callback) {
Messenger.prototype.on = function (msg, callback) {
window.addEventListener('message', function (event) {
if (event.data) {
let d = JSON.parse(event.data);
@ -236,5 +236,316 @@ layui.define([], function (exports) {
};
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);
});

View File

@ -2,7 +2,6 @@
layui.define(['laytpl', 'element', 'layer', 'zlPinYin', 'common'], function (exports) {
let $ = layui.jquery,
element = layui.element,
laytpl = layui.laytpl,
zlPinYin = layui.zlPinYin,
common = layui.common,
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.zlui-icon,
.kdayun-app-layout .layui-header a i.fa {
color:${themeObj.navIconColorInput};
color:${themeObj.navFontColorInput};
}
.kdayun-app-layout .layui-header a span.layui-nav-more {
border-top-color:${themeObj.navIconColorInput} !important;
border-bottom-color:rgba(255,0,0,0) !important;
border-top-color:${themeObj.navIconColorInput} ;
border-bottom-color:rgba(255,0,0,0);
}
.kdayun-app-layout .layui-header a span.layui-nav-mored {
border-top-color:rgba(255,0,0,0) !important;
border-bottom-color:${themeObj.navIconColorInput} !important;
border-top-color:rgba(255,0,0,0) ;
border-bottom-color:${themeObj.navIconColorInput} ;
}
.kdayun-app-layout .layui-logo {
background-color:${themeObj.logoBgInput};
@ -743,7 +742,7 @@ layui.define(['laytpl', 'element', 'layer', 'zlPinYin', 'common'], function (exp
return;
}
if (themeObj.layout == 'top') {
if (themeObj.layout == 'top' && window.screen.width > 767) {
let topThemeRender = new TopTheme(themeObj);
topThemeRender.render();
} else {
@ -777,12 +776,111 @@ layui.define(['laytpl', 'element', 'layer', 'zlPinYin', 'common'], function (exp
ThemeRenderBase.prototype.render = function () {
let that = this;
that.config.$elem.empty();
if (that.isSmall()) {
that.renderSmallMenus();
that.renderSmallHeader()
that.renderSmallBody();
that.renderFoot();
that.initSmall();
} else {
that.renderHeader();
that.renderMenus();
that.renderBody();
that.renderFoot();
}
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 () {
let that = this;
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.$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 //设置是否只展开一个二级菜单
}
};
MenuRenderBase.prototype.isSmall = function () {
return window.screen.width < 767
}
/**
* 渲染菜单
*/
@ -979,8 +1127,13 @@ layui.define(['laytpl', 'element', 'layer', 'zlPinYin', 'common'], function (exp
searchBox.find('input#navbarSearchValue').val('');
common.tabsPage.elem = $a;
if (!common.isEmpty(href) && isOpen) {
if (this.isSmall()) {
common.openSmallPage(href, text || $a.text(), resid);
return;
} else {
common.openTabsPage(href, text || $a.text(), resid);
}
}
if (!common.isEmpty(href)) {
$('.kdayun-menu-container li.layui-this').removeClass('layui-this');
if (parent.parents('.kdayun-menu-container')[0]) {
@ -1004,8 +1157,8 @@ layui.define(['laytpl', 'element', 'layer', 'zlPinYin', 'common'], function (exp
let value = $(this).find('cite').html();
$('ul.navbarSearchResult').removeClass('layui-show').addClass('layui-hide');
$(this).parent().siblings('input').val('');
if (!$('#admin-navbar-menu').find('a[lay-tips="' + value + '"]').parent().hasClass('kdayun-menu-item-expand')) {
$('#admin-navbar-menu').find('a[lay-tips="' + value + '"]').click();
if (!$('#admin-navbar-menu').find('a[lay-text="' + value + '"]').parent().hasClass('kdayun-menu-item-expand')) {
$('#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 + '"' : '';
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 != '') {
ulHtml += '<img src="' + layui.cache['contentPath'] + item.icon + '" ' + svgOnLoad + ' style="width:16px;height:16px;vertical-align: text-bottom;">';
} else {

View File

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

View File

@ -54,6 +54,30 @@
<div class="content unicode" style="display: block;">
<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">
<span class="icon iconfont">&#xe695;</span>
<div class="name">数据导出</div>
@ -330,9 +354,9 @@
<pre><code class="language-css"
>@font-face {
font-family: 'iconfont';
src: url('iconfont.woff2?t=1693817483680') format('woff2'),
url('iconfont.woff?t=1693817483680') format('woff'),
url('iconfont.ttf?t=1693817483680') format('truetype');
src: url('iconfont.woff2?t=1699242797963') format('woff2'),
url('iconfont.woff?t=1699242797963') format('woff'),
url('iconfont.ttf?t=1699242797963') format('truetype');
}
</code></pre>
<h3 id="-iconfont-">第二步:定义使用 iconfont 的样式</h3>
@ -358,6 +382,42 @@
<div class="content font-class">
<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">
<span class="icon iconfont icon-shujudaochu"></span>
<div class="name">
@ -772,6 +832,38 @@
<div class="content symbol">
<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">
<svg class="icon svg-icon" aria-hidden="true">
<use xlink:href="#icon-shujudaochu"></use>

View File

@ -1,8 +1,8 @@
@font-face {
font-family: "iconfont"; /* Project id 4067164 */
src: url('iconfont.woff2?t=1693817483680') format('woff2'),
url('iconfont.woff?t=1693817483680') format('woff'),
url('iconfont.ttf?t=1693817483680') format('truetype');
src: url('iconfont.woff2?t=1699242797963') format('woff2'),
url('iconfont.woff?t=1699242797963') format('woff'),
url('iconfont.ttf?t=1699242797963') format('truetype');
}
.iconfont {
@ -13,6 +13,22 @@
-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 {
content: "\e695";
}

File diff suppressed because one or more lines are too long

View File

@ -5,6 +5,34 @@
"css_prefix_text": "icon-",
"description": "",
"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",
"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-bigscreen/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/Preview';
import 'yh-designer/dist/services/index';
import "yh-element/dist/index";
import "yh-map/dist/index";
import "yh-moble/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/layout/index';
import "yh-table/dist/index";
import "yh-template/dist/index";
import "yh-vant/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-bigscreen/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/components/core/index';
import 'yh-designer/dist/designer/Preview';
import 'yh-designer/dist/designer/VersionManger';
import 'yh-designer/dist/services/index';
import "yh-element/dist/index";
import "yh-map/dist/index";
import "yh-moble/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/layout/index';
import "yh-table/dist/index";
import "yh-vant/dist/index";
import "yh-wangeditor/dist/index";

File diff suppressed because one or more lines are too long

View File

@ -31,7 +31,7 @@
btn: ['&#x786E;&#x5B9A;', '&#x53D6;&#x6D88;'],
//五种原始层模式
type: ['dialog', 'page', 'iframe', 'loading', 'tips'],
type: ['dialog', 'page', 'iframe', 'loading', 'tips', 'notice'],
//获取节点的style属性值
getStyle: function (node, name) {
@ -130,6 +130,27 @@
}, 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) { //最常用提示层
var type = typeof options === 'function', rskin = ready.config.skin;
var skin = (rskin ? rskin + ' ' + rskin + '-msg' : '') || 'layui-layer-msg';
@ -226,6 +247,24 @@
+ (titype ? config.title[0] : config.title)
+ '</div>' : '');
config.zIndex = zIndex;
if (config.type == 5) {
let icons = {
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>') : '',
@ -253,6 +292,7 @@
+ (config.resize ? '<span class="layui-layer-resize"></span>' : '')
+ '</div>'
], titleHTML, $('<div class="layui-layer-move"></div>'));
}
return that;
};
@ -304,6 +344,10 @@
config.tips = typeof config.tips === 'object' ? config.tips : [config.tips, true];
config.tipsMore || layer.closeAll('tips');
break;
case 5:
//notice
break
}
//建立容器
@ -318,7 +362,21 @@
$('#' + 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提交
//-------------------------------------------------------------------------------
if (config.params != undefined || (config.method != undefined && config.method != 'get')) {
@ -432,6 +490,10 @@
//计算坐标
Class.pt.offset = function () {
var that = this, config = that.config, layero = that.layero;
if (config.type == 5) {
layero = layero.parent();
}
var area = [layero.outerWidth(), layero.outerHeight()];
var type = typeof config.offset === 'object';
that.offsetTop = (win.height() - area[1]) / 2;
@ -457,7 +519,7 @@
that.offsetTop = win.height() - area[1];
that.offsetLeft = 0;
} else if (config.offset === 'rt') { //右上角
that.offsetTop = 0;
that.offsetTop = 0 + (that.config.offsetTop || 0);
that.offsetLeft = win.width() - area[0];
} else if (config.offset === 'rb') { //右下角
that.offsetTop = win.height() - area[1];

View File

@ -58,35 +58,64 @@ layui.define(['view', 'theme', 'common'], function (exports) {
if (status === 'spread') {
//切换到展开状态的 icon箭头
iconElem.removeClass(ICON_SPREAD).addClass(ICON_SHRINK);
//移动从左到右位移PC清除多余选择器恢复默认
if (screen < 2) {
app.addClass(APP_SPREAD_SM);
} else {
app.removeClass(APP_SPREAD_SM);
}
app.removeClass(SIDE_SHRINK)
} else {
//切换到搜索状态的 icon箭头
iconElem.removeClass(ICON_SHRINK).addClass(ICON_SPREAD);
//移动清除多余选择器恢复默认PC从右往左收缩
if (screen < 2) {
app.removeClass(SIDE_SHRINK);
} else {
app.addClass(SIDE_SHRINK);
}
app.removeClass(APP_SPREAD_SM)
}
$('#rolecourse').removeClass('layui-show');
layui.event.call(this, setter.MOD_NAME, 'side({*})', {
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 用户信息完成获取回调
@ -122,7 +151,7 @@ layui.define(['view', 'theme', 'common'], function (exports) {
doMessage: function (msg) {
let d = JSON.parse(msg);
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;
admin.tabsBodyChange(tabsPage.index, {
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;
}
$win.on('resize', layui.data.resizeSystem);
admin.sideFlexible(admin.screen() < 2 ? '' : 'spread');
/**
* 渲染角色下拉
* @param {*} loginInfo 登录的返回信息
@ -767,41 +797,16 @@ layui.define(['view', 'theme', 'common'], function (exports) {
$rolecourse.append(html);
initRoleClickEvent();
}
/**
* 初始化角色点击事件
*/
function initRoleClickEvent() {
$('#rolecourse a').on('click', function () {
var curroleid = $('#ROLENAME').attr('roleid'),
currdeptid = $('#ROLENAME').attr('deptid'),
switchroleid = $(this).attr('roleid'),
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);
},
});
}
let switchroleid = $(this).attr('roleid'),
deptid = $(this).attr('deptid') == undefined ? '' : $(this).attr('deptid')
admin.switchRole(switchroleid, deptid);
});
}
/**
@ -889,7 +894,7 @@ layui.define(['view', 'theme', 'common'], function (exports) {
* 主题渲染
*/
function renderTheme() {
window['kdtheme'].render(true);
window['kdtheme'].render(false);
}
function renderMenu(userInfo) {
@ -915,9 +920,8 @@ layui.define(['view', 'theme', 'common'], function (exports) {
//当前设定主题设置
let m = theme.getTheme(true);
if (m) {
var g_loginInfo = null
let g_loginInfo = null
common.on('setTheme', function (event) {
renderTheme();
if (g_loginInfo === null) {
admin.getUserInfo(function (userInfo, error) {
if (error) {
@ -925,6 +929,47 @@ layui.define(['view', 'theme', 'common'], function (exports) {
} else {
g_loginInfo = userInfo;
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 {
@ -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) {
$('.layadmin-tabsbody-shade').fadeOut('600');
})

View File

@ -1866,16 +1866,25 @@ ul.navbarSearchResult::-webkit-scrollbar-track {
}
.kdayun-app-layout-top .kdayun-logo {
display: block;
/* display: block;
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 {
position: relative;
/* position: relative;
display: inline-block;
margin-left: 200px;
margin-left: 200px; */
margin-top: 25px;
width: calc(100% - 581px);
}
/* .kdayun-app-layout-top .kdayun-menu-ul {
@ -2184,7 +2193,154 @@ CORE STYLES BELOW - NO TOUCHY
@media (max-width:575px) {}
/* 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 */
@media (max-width:991px) {

View File

@ -156,7 +156,19 @@
<ul class="navbarSearchResult layui-hide kdayun-search-result"></ul>
</div>
</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">
<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 class="layui-nav layui-layout-right" lay-filter="layadmin-layout-right">
<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>
<!-- 如果有新消息,则显示小圆点 -->
<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">
<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>
<!-- 如果有新消息,则显示小圆点 -->
<span class="layui-badge-dot"></span>
@ -342,7 +342,24 @@
<ul class="navbarSearchResult layui-hide kdayun-search-result"></ul>
</div>
</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">
<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.version>1.8</jdk.version>
<!-- 平台版本 -->
<base.version>5.0.232</base.version>
<base.version>5.0.233</base.version>
<!-- Spring 版本号 -->
<spring.version>5.1.2.RELEASE</spring.version>