提交 9b6f8a18 编写于 作者: G gongfuxiang

后台管理菜单支持多窗口

上级 898c8189
......@@ -9,7 +9,9 @@
{{include file="public/menu" /}}
<!-- right content -->
<iframe id="ifcontent" src="{{$to_url}}" width="100%" height="100%"></iframe>
<div id="ifcontent">
<iframe src="{{$to_url}}" width="100%" height="100%"></iframe>
</div>
<!-- right content end -->
</div>
......
......@@ -10,7 +10,7 @@
{{foreach $left_menu as $v}}
{{if empty($v['items'])}}
<li>
<a href="javascript:;" data-type="menu" data-url="{{$v.url}}">
<a href="javascript:;" data-type="menu" data-url="{{$v.url}}" data-key="{{$v.id}}">
{{if !empty($v['icon'])}}<span class="iconfont {{$v.icon}}"></span>{{/if}}
<p class="nav-name am-inline-block am-text-break">{{$v.name}}</p>
</a>
......@@ -25,7 +25,7 @@
<ul class="am-list am-collapse admin-sidebar-sub" id="power-menu-{{$v.id}}">
{{foreach $v.items as $vs}}
<li>
<a href="javascript:;" class="menu-items-{{$vs.id}}" data-parent-id="{{$v.id}}" data-type="menu" data-url="{{$vs.url}}">
<a href="javascript:;" class="menu-items-{{$vs.id}}" data-parent-id="{{$v.id}}" data-type="menu" data-url="{{$vs.url}}" data-key="{{$v.id}}-{{$vs.id}}">
{{if !empty($vs['icon'])}}<span class="{{$vs.icon}}"></span>{{/if}}
<p class="nav-name am-inline-block am-text-break">{{$vs.name}}</p>
</a>
......@@ -37,9 +37,8 @@
{{/foreach}}
</ul>
</div>
<a href="javascript:;" class="am-icon-dedent menu-scaling-submit am-hide-sm-only" data-status="0"></a>
</div>
<button class="am-btn am-btn-primary am-radius am-btn-xs menu-scaling-submit am-hide-sm-only am-icon-angle-double-left" data-status="0"></button>
<div class="menu-mini-container-tips am-animation-slide-right">
<div class="mui-mbar-tab-tip am-icon-caret-left"></div>
<span></span>
......
<header class="am-topbar am-topbar-inverse admin-header">
<!-- logo/名称信息 -->
<div class="am-topbar-brand">
<a href="{{:MyUrl('admin/index/index')}}">
<h2>{{$admin_theme_site_name}}<span class="admin-site-vice-name am-margin-left-xs">后台管理系统</span></h2>
</a>
</div>
<!-- 快捷导航 -->
<div class="am-fl am-text-nowrap am-scrollable-horizontal header-menu-open-pages-list tabs-switch-horizontal-container">
<ul></ul>
</div>
<!-- 手机模式下导航按钮 -->
<button class="am-topbar-btn am-topbar-toggle am-btn am-btn-xs am-btn-success am-show-sm-only am-radius header-nav-submit" data-am-collapse="{target: '#topbar-collapse'}">
<span class="am-sr-only">导航切换</span>
<i class="am-icon-bars"></i>
</button>
<!-- 右侧内容 -->
<div class="am-collapse am-topbar-collapse" id="topbar-collapse">
<ul class="am-nav am-nav-pills am-topbar-nav am-topbar-right admin-header-list tpl-header-list">
<li class="am-dropdown">
......
......@@ -14,7 +14,7 @@
// +----------------------------------------------------------------------
return [
// 内置Html和Console两种方式 支持扩展
'type' => 'Html',
'type' => 'console',
// 读取的日志通道名
'channel' => '',
];
......
/**
* 顶部导航
*/
::-webkit-scrollbar {
display: none;
}
#ifcontent {
height: 100%;
width: 100%;
}
#ifcontent iframe {
border: 0px;
vertical-align: top;
}
@media only screen and (min-width: 641px) {
#ifcontent {
padding-left: 160px;
}
}
/**
* mini开关
*/
.menu-scaling-submit {
position: fixed;
bottom: 15px;
color: #f5f6f9;
font-size: 18px;
line-height: 18px;
left: 123.5px;
}
.menu-scaling-submit:hover, .menu-scaling-submit:focus {
color: #fff;
}
/**
* mini菜单
*/
.menu-mini .nav-name,.menu-mini .am-icon-angle-down,.menu-mini .admin-sidebar-sub{display:none !important}
.menu-mini .admin-sidebar-list li {text-align: center;}
/**
* mini小icon
*/
.menu-mini-container-tips{position:absolute;left:63px;top:0;padding:0 10px;width:auto;height:35px;line-height:35px;text-align:center;color:#fff;background-color:#01bcd4;-webkit-box-shadow:0 0 5px rgba(0,0,0,.2);-moz-box-shadow:0 0 5px rgba(0,0,0,.2);box-shadow:0 0 5px rgba(0,0,0,.2);font-weight:700;display:none;z-index:1001;}
.menu-mini-container-tips span{font-size:12px}
.menu-mini-container-tips .mui-mbar-tab-tip,.menu-mini-container-popup .mui-mbar-tab-tip{position:absolute;width:16px;height:16px;line-height:16px;text-align:center;font-size:16px;font-family:"\5b8b\4f53";top:10px;left:-10px;z-index:0;color:#01bcd4;}
/**
* mini子菜单
*/
.menu-mini-container-popup{background:#36373c;position:absolute;left:63px;top:0;min-width:120px;height:auto;display:none;z-index:1001;}
.menu-mini-container-popup ul{margin:0;padding:0}
.menu-mini-container-popup ul li{line-height:35px;list-style-type:none}
.menu-mini-container-popup ul li a{padding:0 10px;display:block;color:#fff}
.menu-mini-container-popup ul li a:hover{background:rgba(118,119,120,0.1)}
.menu-mini-container-popup ul li a span{font-size:12px}
.menu-mini-container-popup ul li:not(:last-child){border-bottom:1px solid #2e2e31}
.menu-mini-container-popup .mui-mbar-tab-tip{color:#36373c}
.menu-mini-container-popup ul li a.common-left-menu-active { background: #686868 !important; }
/**
* 导航打开页面列表
*/
.header-menu-open-pages-list {
max-width: calc(100% - 650px);
margin-top: 4px;
margin-left: 20px;
height: 25px;
}
.header-menu-open-pages-list ul li {
display: inline-block;
border: 1px solid #5291ff;
border-radius: 2px;
padding: 2px 10px;
cursor: pointer;
}
.header-menu-open-pages-list ul li:not(:last-child) {
margin-right: 10px;
}
.header-menu-open-pages-list ul li span {
color: #c1d8ff;
}
.header-menu-open-pages-list ul li a {
margin-left: 3px;
color: #91b9ff;
}
.header-menu-open-pages-list ul li:hover {
border-color: #91b9ff;
}
.header-menu-open-pages-list ul li:hover span {
color: #d8e6ff;
}
.header-menu-open-pages-list ul li.am-active {
border-color: #bfd6ff;
}
.header-menu-open-pages-list ul li.am-active a,
.header-menu-open-pages-list ul li a:hover {
color: #ff9e80;
}
@media only screen and (max-width: 640px) {
.header-menu-open-pages-list {
display: none;
}
}
\ No newline at end of file
......@@ -3,31 +3,48 @@ $(function()
// 左侧菜单箭头方向回调处理
$('#admin-offcanvas li.admin-parent').on('open.collapse.amui', function()
{
$(this).find('a i').toggleClass('left-menu-more-ico-rotate');
$(this).find('a i').toggleClass('left-menu-more-icon-rotate');
}).on('close.collapse.amui', function()
{
$(this).find('a i').toggleClass('left-menu-more-ico-rotate');
$(this).find('a i').toggleClass('left-menu-more-icon-rotate');
});
// url加载
$(document).on('click', '.common-left-menu li a, .common-nav-top li a, .menu-mini-container-popup ul li a', function()
{
var link = $(this).data('url') || null;
var url = $(this).data('url') || null;
var type = $(this).data('type');
if(link != null)
var key = $(this).data('key');
if(url != null)
{
// 打开url地址
$('#ifcontent').attr('src', link);
// 先隐藏所有的iframe
// 页面未打开则添加iframe并打开
if($('#ifcontent iframe.iframe-item-key-'+key).length == 0)
{
$('#ifcontent').append('<iframe src="'+url+'" width="100%" height="100%" class="iframe-item-key-'+key+'"></iframe>');
}
// 添加快捷导航
if($('.header-menu-open-pages-list ul li.nav-item-key-'+key).length == 0)
{
var html = '<li data-url="'+url+'" data-key="'+key+'" class="nav-item-key-'+key+'">';
html += '<span>'+$(this).find('.nav-name').text()+'</span>';
html += '<a href="javascript:;" class="am-icon-close"></a>';
html += '</li>';
$('.header-menu-open-pages-list ul').append(html);
}
// 模拟点击当前元素
$('.header-menu-open-pages-list ul li.nav-item-key-'+key).trigger('click');
// 顶部菜单事件,关闭弹层
if(type == 'nav')
{
if($(document).width() < 641)
{
$('.header-nav-submit').trigger('click');
} else {
$(this).parents('.common-nav-top').trigger('click');
}
if($(document).width() < 641)
{
$('.header-nav-submit').trigger('click');
} else {
$(this).parents('.common-nav-top').trigger('click');
}
}
// 关闭左侧弹层
......@@ -54,15 +71,15 @@ $(function()
$('.menu-mini-container-tips').hide();
if(status == 0)
{
$(this).animate({left: '59px'}, 300);
$(this).removeClass('am-icon-angle-double-left').addClass('am-icon-angle-double-right');
$(this).animate({left: '18.5px'}, 300);
$(this).removeClass('am-icon-dedent').addClass('am-icon-indent');
$('#admin-offcanvas').addClass('menu-mini').addClass('menu-mini-event');
$('#admin-offcanvas').animate({width: '55px'}, 300);
$('#ifcontent').animate({paddingLeft: '55px'}, 300);
$('header.admin-header').animate({left: '54px'}, 300);
$('header.admin-header').animate({left: '55px'}, 300);
} else {
$(this).animate({left: '164px'}, 300);
$(this).removeClass('am-icon-angle-double-right').addClass('am-icon-angle-double-left');
$(this).animate({left: '123.5px'}, 300);
$(this).removeClass('am-icon-indent').addClass('am-icon-dedent');
$('#admin-offcanvas').animate({width: '160px'}, 300);
$('#ifcontent').animate({paddingLeft: '160px'}, 300);
$('header.admin-header').animate({left: '159px'}, 300);
......@@ -154,7 +171,7 @@ $(function()
{
$('.menu-scaling-submit').attr('data-status', 0);
$('.menu-scaling-submit').css({'left': '164px'});
$('.menu-scaling-submit').removeClass('am-icon-angle-double-right').addClass('am-icon-angle-double-left');
$('.menu-scaling-submit').removeClass('am-icon-indent').addClass('am-icon-dedent');
$('#admin-offcanvas').css({'width': 'inherit'});
$('#admin-offcanvas').removeClass('menu-mini').removeClass('menu-mini-event');
$('#ifcontent').css({'padding-left':0});
......@@ -168,4 +185,36 @@ $(function()
}
}
});
// 页面切换
$(document).on('click', '.header-menu-open-pages-list ul li', function()
{
// 选中当前页面
$('.header-menu-open-pages-list ul li').removeClass('am-active');
$(this).addClass('am-active');
var key = $(this).data('key');
// 显示当前页面
$('#ifcontent iframe').hide();
$('#ifcontent iframe.iframe-item-key-'+key).show();
});
// 页面移除
$(document).on('click', '.header-menu-open-pages-list ul li a', function()
{
// 移除当前页面
var $parent = $(this).parent();
var key = $parent.data('key');
$parent.remove();
$('#ifcontent iframe.iframe-item-key-'+key).remove();
// 当前没有选中的导航则模拟点击最后一个选中
if($('.header-menu-open-pages-list ul li.am-active').length == 0)
{
$('.header-menu-open-pages-list ul li:last').trigger('click');
}
// 无页面则添加默认初始化页面
if($('.header-menu-open-pages-list ul li').length == 0)
{
$('#ifcontent iframe').show();
}
return false;
});
});
\ No newline at end of file
......@@ -1189,7 +1189,7 @@ form .am-tab-panel .am-form-group:last-child {
}
/**
* 表单内部操作导航
* 表单内部顶部操作导航
*/
.form-legend-fixed {
position: sticky;
......@@ -1204,6 +1204,27 @@ form .am-tab-panel .am-form-group:last-child {
margin-left: 10px;
}
/**
* 表单内部底部操作导航
*/
.form-bottom-nav-fixed {
position: fixed;
left: 0;
bottom: 0;
width: 100%;
background: #fff;
z-index: 10;
border-top: 1px solid #e5e5e5;
padding: 10px;
text-align: right;
}
.form-bottom-nav-fixed button {
border: 0px;
}
.form-bottom-nav-fixed .am-badge:not(:first-child) {
margin-left: 10px;
}
/**
* 滚动条样式
......
......@@ -2564,6 +2564,82 @@ function PopoverContentHandle(content)
return content.replace(new RegExp("\n", 'g'), '<br />').replace(new RegExp("\r", 'g'), '').replace(new RegExp("'", 'g'), '').replace(new RegExp('"', 'g'), '');
}
/**
* 数据打印处理
* @author Devil
* @blog http://gong.gg/
* @version 1.0.0
* @date 2022-10-09
* @desc description
* @param {int} is_pdf [是否导出PDF(0否、1是)]
*/
function DataPrintHandle(is_pdf = 0)
{
// 打印和模板数据
var print_data = window['print_data'] || null;
var print_template = window['print_template'] || null;
if(print_data == null || print_template == null)
{
Prompt(window['lang_operate_params_error'] || '操作参数有误');
return false;
}
// 需要打印的数据
var result = [];
// 是否列表选择多选
var print_is_list_choice = parseInt(window['print_is_list_choice'] || 0);
if(print_is_list_choice == 1)
{
// 获取数据id
var values = FromTableCheckedValues('form_checkbox_value', '.am-table-scrollable-horizontal');
if(values.length <= 0)
{
Prompt(window['lang_before_choice_data_tips'] || '请先选择数据');
return false;
}
// 获取需要打印的数据
var field = window['print_data_list_key'] || 'id';
print_data = JsonStringToJsonObject(print_data);
for(var i in print_data)
{
if((print_data[i][field] || null) != null && values.indexOf(print_data[i][field]) != -1)
{
result.push(print_data[i]);
}
}
if(result.length == 0)
{
Prompt(window['lang_not_operate_error'] || '没有相关数据');
return false;
}
} else {
result = print_data;
}
// 是否已引入hiprint库
if((window['hiprint'] || null) == null)
{
Prompt(window['lang_not_load_lib_hiprint_error'] || '请先引入hiprint组件库');
return false;
}
// 初始化模板
var ht = new hiprint.PrintTemplate({template: JsonStringToJsonObject(print_template)});
// 是否导出pdf
if(is_pdf == 1)
{
// 导出pdf
var filename = $(this).data('file-name') || 'file-'+(new Date().getTime());
ht.toPdf(result, filename);
} else {
// 调用打印组件
ht.print(result, {});
}
}
// 公共数据操作
$(function()
......@@ -2798,69 +2874,7 @@ $(function()
// 表格公共excel导出操作
$(document).on('click', '.form-table-operate-top-data-print-submit,.common-print-submit', function()
{
// 打印和模板数据
var print_data = window['print_data'] || null;
var print_template = window['print_template'] || null;
if(print_data == null || print_template == null)
{
Prompt(window['lang_operate_params_error'] || '操作参数有误');
return false;
}
// 需要打印的数据
var result = [];
// 是否列表选择多选
var print_is_list_choice = parseInt(window['print_is_list_choice'] || 0);
if(print_is_list_choice == 1)
{
// 获取数据id
var values = FromTableCheckedValues('form_checkbox_value', '.am-table-scrollable-horizontal');
if(values.length <= 0)
{
Prompt(window['lang_before_choice_data_tips'] || '请先选择数据');
return false;
}
// 获取需要打印的数据
var field = window['print_data_list_key'] || 'id';
print_data = JsonStringToJsonObject(print_data);
for(var i in print_data)
{
if((print_data[i][field] || null) != null && values.indexOf(print_data[i][field]) != -1)
{
result.push(print_data[i]);
}
}
if(result.length == 0)
{
Prompt(window['lang_not_operate_error'] || '没有相关数据');
return false;
}
} else {
result = print_data;
}
// 是否已引入hiprint库
if((window['hiprint'] || null) == null)
{
Prompt(window['lang_not_load_lib_hiprint_error'] || '请先引入hiprint组件库');
return false;
}
// 初始化模板
var ht = new hiprint.PrintTemplate({template: JsonStringToJsonObject(print_template)});
// 是否导出pdf
if($(this).data('is-pdf') == 1)
{
// 导出pdf
var filename = $(this).data('file-name') || 'file-'+(new Date().getTime());
ht.toPdf(result, filename);
} else {
// 调用打印组件
ht.print(result, {});
}
DataPrintHandle($(this).data('is-pdf'));
});
// 页面加载loading
......
......@@ -6918,6 +6918,8 @@ var fillCharReg = new RegExp(domUtils.fillChar, 'g');
'<style type=\'text/css\'>' +
//设置四周的留边
'.view{padding:0;word-wrap:break-word;cursor:text;height:90%;}\n' +
//图片最大宽度100%
'.view img{max-width:100%;}\n' +
//设置默认字体和字号
//font-family不能呢随便改,在safari下fillchar会有解析问题
'body{font-family:sans-serif;font-size:12px;color:#333;}' +
......@@ -67,7 +67,7 @@
//,theme:'default'
//,themePath:URL +"themes/"
//,zIndex : 900 //编辑器层级的基数,默认是900
,zIndex : 1 //编辑器层级的基数,默认是900
//针对getAllHtml方法,会在对应的head标签中增加该编码设置。
//,charset:"utf-8"
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册