基于easyUI实现经典系统主界面
此文章是基于 EasyUI+Knockout实现经典表单的查看、编辑
一. 相关文件介绍
1. home.jsp:系统主界面
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN">
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>企业信息管理系统</title>
<%@ include file="/common/basePath.jsp"%> <!--加载960CSS框架-->
<link href="content/css/960/fluid/grid.css" rel="stylesheet" type="text/css" /> <!--加载主题CSS-->
<link href="content/css/style.css" rel="stylesheet" type="text/css" />
<link href="content/js/jquery-easyui-1.3.2/themes/default/easyui.css" rel="stylesheet" type="text/css" /> <!--加载组件CSS-->
<link href="content/js/jquery-plugin/ztree/css/zTreeStyle.css" rel="stylesheet" type="text/css" />
<link href="content/js/jquery-plugin/jnotify/jquery.jnotify.css" rel="stylesheet" type="text/css" />
<link href="content/js/jquery-plugin/jqgrid/default/jquery-ui-1.8.4.custom.css" rel="stylesheet" type="text/css" /> <!--加载样式修正CSS-->
<link href="content/css/hack/fix.css" rel="stylesheet" type="text/css" /> <!--加载图标库CSS-->
<link href="content/images/icon/icon.css" rel="stylesheet" type="text/css" /> <!--本页面样式-->
<link href="content/css/page/home.css" rel="stylesheet" type="text/css" /> </head>
<body class="easyui-layout" fit="true" scroll="no">
<noscript>
<div class="noscript">
<img src="content/images/noscript.gif" alt="抱歉,请开启脚本支持!" />
</div>
</noscript> <div region="north" class="head-north" split="true" border="false" >
<div class="head head-right" >
<div style="padding-top:20px;">
<a href="javascript:void(0)" class="easyui-menubutton" data-options="menu:'#mm_user',iconCls:'icon-user'">当前用户:admin</a>
<div id="mm_user" style="width:150px;">
<div data-options="iconCls:'icon-edit'" class="changepwd">修改密码</div>
<div class="menu-sep"></div>
<div data-options="iconCls:'icon-user_go'" class="loginOut">安全退出</div>
</div>
</div>
</div>
<span class="head-left">
企业信息管理系统
</span>
</div> <div region="west" split="true" title="导航菜单" style="width:180px;" id="west">
<div id="wnav"></div>
</div> <div region="south" split="true" class="head-south">
<div class="footer">Copyright © 2016 ims, All Rights Reserved</div>
</div> <div region="center" id="mainPanle" style="background: #eee; overflow-y:hidden">
<div id="tabs" class="easyui-tabs" fit="true" border="false" >
<div title="我的桌面" style="overflow:hidden;" id="home"></div>
</div>
</div> <div id="w"></div>
<div id="notity"></div> <div id="closeMenu" class="easyui-menu hide" style="width:150px;">
<div id="refresh">刷新</div>
<div class="menu-sep"></div>
<div id="close">关闭</div>
<div id="closeall">全部关闭</div>
<div id="closeother">除此之外全部关闭</div>
<div class="menu-sep"></div>
<div id="closeright">关闭右侧标签</div>
<div id="closeleft">关闭左侧标签</div>
<div class="menu-sep"></div>
<div id="exit">退出</div>
</div> <script type="text/html" id="password-template">
<div class="container_12" style="width:90%;margin:5%;">
<div class="grid_3 lbl">登陆名:</div>
<div class="grid_9 val"><input type="text" class="txtBox readonly " name="userCode" value="admin" disabled="disabled"/></div>
<div class="grid_3 lbl">原密码:</div>
<div class="grid_9 val"><input type="password" class="txtBox" /></div>
<div class="grid_3 lbl">新密码:</div>
<div class="grid_9 val"><input type="password" class="txtBox" /></div>
<div class="grid_3 lbl">确 认:</div>
<div class="grid_9 val"><input type="password" class="txtBox" /></div>
<div class="clear"></div>
</div> <div style="text-align:center;" class="z-toolbar-dialog">
<a class="easyui-linkbutton" data-options="iconCls:'icon-ok'" href="javascript:void(0)" id="pwd_confirm" >确定</a>
<a class="easyui-linkbutton" data-options="iconCls:'icon-cancel'" href="javascript:void(0)" id="pwd_close">取消</a>
</div>
</script> <script type="text/javascript" src="content/js/jquery/jquery-1.8.1.min.js"></script>
<script type="text/javascript" src="content/js/core/utils.js"></script>
<script type="text/javascript" src="content/js/core/common.js"></script>
<script type="text/javascript" src="content/js/core/jquery.easyui.fix.js"></script>
<script type="text/javascript" src="content/js/jquery-plugin/jnotify/jquery.jnotify.js"></script>
<script type="text/javascript" src="content/js/jquery-plugin/ztree/jquery.ztree.all-3.2.min.js"></script> <script type="text/javascript" src="content/js/jquery-easyui-1.3.2/jquery.easyui.min.js"></script>
<script type="text/javascript" src="content/js/jquery-easyui-1.3.2/locale/easyui-lang-zh_CN.js"></script> <script type="text/javascript" src="viewModel/home.js"></script> </body>
</html>
2. home.js:绑定主界面的功能按钮
var wrapper = {}; //设置
wrapper.settings = {
homeTabTitle: '我的桌面',
homeTabUrl: 'http://www.baidu.com',
maxTabCount: 10
}; //初始化
wrapper.init = function () {
com.ajax({ type: 'POST', url: rootPath+'/sys/menu!getUserMenu.do', success: wrapper.initMenu }); $('.loginOut').click(wrapper.logout);
$('.changepwd').click(wrapper.changePassword);
$('#notity').jnotifyInizialize({ oneAtTime: true, appendType: 'append' }).css({ 'position': 'absolute', '*top': '2px', 'left': '50%', 'margin': '20px 0px 0px -120px', '*margin': '0px 0px 0px -120px', 'width': '240px', 'z-index': '9999' });
$('#closeMenu').menu({ onClick: wrapper.rightMenuClick }); $('#tabs').tabs({
tools: [{ iconCls: 'icon-arrow_refresh', handler: wrapper.tabRefresh },
{ iconCls: 'icon-screen_full', handler: wrapper.setFullScreen },
{ iconCls: 'panel-tool-close', handler: wrapper.tabClose }],
onContextMenu: wrapper.tabContextMenu,
onClose: wrapper.setLocationHash,
onSelect: wrapper.setLocationHash
});
}; wrapper.initMenu = function (d) {
if (!d || !d.length) {
$.messager.alert("系统提示", "<font color=red><b>您没有任何权限!请联系管理员。</b></font>", "warning", function () { location.href = '/login'; });
return;
} $('body').data('menulist', d);
var visibleMenu = $.grep(d, function (row) {return row.isVisible;});
$.each(visibleMenu, function () {
var urlStart = this.menuUrl.substring(0,7);
if(urlStart!="#" && urlStart!="http://"){
this.menuUrl = rootPath+this.menuUrl;
}
})
var menus = utils.toTreeData(visibleMenu, 'id', 'parentId', 'children'); switch (wrapper.settings.navigation) {
case "tree":
wrapper.menuTree(menus);
break;
case "accordion":
wrapper.menuAccordion(menus);
break;
default:
wrapper.menuAccordion(menus);
break; }
wrapper.initLocationHash(d);
$("#home").html(wrapper.createFrame(wrapper.settings.homeTabUrl));
}; //菜单生成
wrapper.menuAccordion = function (menus) {
var $obj = $('#wnav');
$obj.accordion({ animate: false, fit: true, border: false });
$.each(menus, function () {
var html = '<ul>';
var temple = '<li><div><a ref="{0}" href="javascript:void(0)" rel="{1}"><span class="icon {2}"> </span><span class="nav">{3}</span></a></div></li>';
$.each(this.children || [], function () {
html += utils.formatString(temple, this.menuCode, this.menuUrl, this.iconClass, this.menuName);
});
html += '</ul>'; $obj.accordion('add', {
title: this.menuName,
content: html,
iconCls: 'icon ' + this.iconClass,
border: false
});
}); var panels = $obj.accordion('panels');
$obj.accordion('select', panels[0].panel('options').title); $obj.find('li').click(function () {
$obj.find('li div').removeClass("selected");
$(this).children('div').addClass("selected"); var link = $(this).find('a');
var title = link.children('.nav').text();
var url = link.attr("rel");
var code = link.attr("ref");
var icon = link.children('.icon').attr('class'); wrapper.addTab(title, url, icon);
}).hover(function () {
$(this).children('div').addClass("hover");
}, function () {
$(this).children('div').removeClass("hover");
});
}; wrapper.initLocationHash = function (data) {
var subUrl = location.hash.replace('#!', '');
$.each(data, function () {
var s = this.url;
if (this.url && this.url != '#' && (subUrl == s || subUrl.indexOf(s + "/") > -1))
wrapper.addTab(this.menuName, subUrl, this.iconClass);
});
}; wrapper.setLocationHash = function(){
try {
var $obj = $('#tabs');
var src = '', tabs = $obj.data().tabs.tabs;
var tab = $obj.tabs('getSelected'); var fnSrc = function (tab) {
var iframe = tab.find('iframe');
return iframe.length ? iframe[0].src.replace(location.host, '').replace('http://', '') : '';
}; if (tab) {
src = fnSrc(tab);
if (src) window.location.hash = '!' + src; //如果src没有,就不设置,case在f5刷新时出现
if (src == homeUrl) window.location.hash = '';
}
else {
src = fnSrc(tabs[tabs.length - 1]); //关闭tabs时,当前tab为空
window.location.hash = '!' + src;
}
}
catch (e) { }
} wrapper.addTab = function (subtitle, url, icon) {
if (!url|| url == '#') return false;
var $tab = $('#tabs');
var tabCount = $tab.tabs('tabs').length;
var hasTab = $tab.tabs('exists', subtitle);
if ((tabCount <= wrapper.settings.maxTabCount) || hasTab)
wrapper.openTabHandler($tab, hasTab, subtitle, url, icon);
else
$.messager.confirm("系统提示", '<b>您当前打开了太多的页面,如果继续打开,会造成程序运行缓慢,无法流畅操作!</b>', function (b) {
if (b)
wrapper.openTabHandler($tab, hasTab, subtitle, url, icon);
});
}; wrapper.openTabHandler = function ($tab,hasTab, subtitle,url,icon) {
if (!hasTab) {
$tab.tabs('add', {title: subtitle,content: wrapper.createFrame(url),closable: true,icon: icon});
} else {
$tab.tabs('select', subtitle);
wrapper.tabRefresh(url); //选择TAB时刷新页面
}
wrapper.setLocationHash();
}; wrapper.tabRefresh = function (url) {
var $tab = $("#tabs");
var currentTab = $tab.tabs('getSelected');
var src = $(currentTab.panel('options').content).attr('src');
if (src == undefined){
var fnSrc = function (tab) {
var iframe = tab.find('iframe');
return iframe.length ? iframe[0].src : '';
};
src = fnSrc(currentTab);
}
if (typeof url === 'string') src = url;
$tab.tabs('update', { tab: currentTab, options: { content: wrapper.createFrame(src) } })
}; wrapper.createFrame = function (url) {
return '<iframe scrolling="auto" frameborder="0" style="width:100%;height:100%;" src="' + url + '" ></iframe>';
} //事件
wrapper.tabContextMenu = function (e, title) {
$('#closeMenu').menu('show', {left: e.pageX,top: e.pageY});
$('#tabs').tabs('select', title);
e.preventDefault();
}; wrapper.changePassword = function () {
com.dialog({
title: " 修改密码",
iconCls: 'icon-key',
width: 320,
height: 195,
html: "#password-template",
viewModel: function (w) {
w.find("#pwd_confirm").click(function () { w.dialog('close'); });
w.find("#pwd_close").click(function () { w.dialog('close'); });
}
});
}; wrapper.logout = function () {
$.messager.confirm('系统提示', '您确定要退出本次登录吗?', function (r) {
if (r) location.href = 'javascript:void(0)';
});
}; wrapper.setFullScreen = function () {
var that = $(this);
if (that.find('.icon-screen_full').length) {
that.find('.icon-screen_full').removeClass('icon-screen_full').addClass('icon-screen_actual');
$('[region=north],[region=west]').panel('close')
var panels = $('body').data().layout.panels;
panels.north.length = 0;
panels.west.length = 0;
if (panels.expandWest) {
panels.expandWest.length = 0;
$(panels.expandWest[0]).panel('close');
}
$('body').layout('resize');
} else if ($(this).find('.icon-screen_actual').length) {
that.find('.icon-screen_actual').removeClass('icon-screen_actual').addClass('icon-screen_full');
$('[region=north],[region=west]').panel('open');
var panels = $('body').data().layout.panels;
panels.north.length = 1;
panels.west.length = 1;
if ($(panels.west[0]).panel('options').collapsed) {
panels.expandWest.length = 1;
$(panels.expandWest[0]).panel('open');
}
$('body').layout('resize');
}
}; wrapper.tabClose = function () {
if (confirm('确认要关闭所有窗口吗?'))
wrapper.rightMenuClick({ id: 'closeall' });
}; wrapper.rightMenuClick = function (item) {
var $tab = $('#tabs');
var currentTab = $tab.tabs('getSelected');
var titles = wrapper.getTabTitles($tab); switch (item.id) {
case "refresh":
var src = $(currentTab.panel('options').content).attr('src');
if (src == undefined){
var fnSrc = function (tab) {
var iframe = tab.find('iframe');
return iframe.length ? iframe[0].src : '';
};
src = fnSrc(currentTab);
}
$tab.tabs('update', { tab: currentTab, options: { content: wrapper.createFrame(src) } });
break;
case "close":
var currtab_title = currentTab.panel('options').title;
$tab.tabs('close', currtab_title);
break;
case "closeall":
$.each(titles, function () {
if (this != wrapper.settings.homeTabTitle)
$tab.tabs('close', this);
});
break;
case "closeother":
var currtab_title = currentTab.panel('options').title;
$.each(titles, function () {
if (this != currtab_title && this != wrapper.settings.homeTabTitle)
$tab.tabs('close', this);
});
break;
case "closeright":
var tabIndex = $tab.tabs('getTabIndex', currentTab);
if (tabIndex == titles.length - 1) {
alert('亲,后边没有啦 ^@^!!');
return false;
}
$.each(titles, function (i) {
if (i > tabIndex && this != wrapper.settings.homeTabTitle)
$tab.tabs('close', this);
}); break;
case "closeleft":
var tabIndex = $tab.tabs('getTabIndex', currentTab);
if (tabIndex == 1) {
alert('亲,前边那个上头有人,咱惹不起哦。 ^@^!!');
return false;
}
$.each(titles, function (i) {
if (i < tabIndex && this != wrapper.settings.homeTabTitle)
$tab.tabs('close', this);
});
break;
case "exit":
$('#closeMenu').menu('hide');
break;
} }; wrapper.getTabTitles = function ($tab) {
var titles = [];
var tabs = $tab.tabs('tabs');
$.each(tabs, function () { titles.push($(this).panel('options').title); });
return titles;
}; wrapper.menuTree = function (menus) {
var settings = { data: { key: { name: "menuName"} },callback: { onClick:wrapper.treeOnClick }};
var $obj = $('#wnav').addClass("ztree");
if (menus.length > 0) menus[0].open = true;
$.fn.zTree.init($obj, settings, menus);
}; wrapper.treeOnClick = function(event, treeId, node){
wrapper.addTab(node.menuName, node.menuUrl, node.iconClass);
}; $(wrapper.init);
二. 效果图
1. 访问:http://localhost:8080/ims/home.do,系统主界面
基于easyUI实现经典系统主界面的更多相关文章
- [课程设计]Scrum 1.3 多鱼点餐系统开发进度(系统主界面框架&美化)
Scrum 1.3 多鱼点餐系统开发进度(系统主界面框架&美化) 1.团队名称:重案组 2.团队目标:长期经营,积累客户充分准备,伺机而行 3.团队口号:矢志不渝,追求完美 4.团队选题:餐厅 ...
- WPF技术触屏上的应用系列(六): 视觉冲击、超炫系统主界面、系统入口效果实现
原文:WPF技术触屏上的应用系列(六): 视觉冲击.超炫系统主界面.系统入口效果实现 去年某客户单位要做个大屏触屏应用,要对档案资源进行展示之用.客户端是Window7操作系统,54寸大屏电脑电视一体 ...
- Fragment与Radiogroup联动,经典的主界面布局。使用show和hide的方式实现;
Fragment+RadioGroup经典的主界面布局,方便实用: 1.使用replace方式: 直接上代码,先是布局文件: <?xml version="1.0" enco ...
- 基于easyui与MVC的前端界面
1.登录界面: 2.主界面: 下载源码
- 基于easyUI实现登录界面
此文章是基于 EasyUI+Knockout实现经典表单的查看.编辑 一. 准备工作 1. 点击此下载相关文件,并把文件放到 ims 工程对应的文件夹下 二. 相关文件介绍 1. login.jsp: ...
- 使用DotNetBar制作漂亮的WinFrom界面,自定义AgileEAS.NET SOA平台WinClient主界面
一.前言 AgileEAS.NET SOA 中间件平台是一款基于基于敏捷并行开发思想和Microsoft .Net构件(组件)开发技术而构建的一个快速开发应用平台.用于帮助中小型软件企业建立一条适合市 ...
- Winform开发主界面菜单的动态树形列表展示
我在之前很多文章里面,介绍过Winform主界面的开发,基本上都是标准的界面,在顶部放置工具栏,中间区域则放置多文档的内容,但是在顶部菜单比较多的时候,就需要把菜单分为几级处理,如可以在顶部菜单放置一 ...
- “MVC+Nhibernate+Jquery-EasyUI”信息发布系统 第二篇(数据库结构、登录窗口、以及主界面)
“MVC+Nhibernate+Jquery-EasyUI”信息发布系统 第二篇(数据库结构.登录窗口.以及主界面) 一.在上一篇文章中,主要说的就是把主框架搭建起来,并且Nhibernate能达到增 ...
- 【Java框架型项目从入门到装逼】第八节 - 用EasyUI绘制主界面
1.引入资源包 在上一节中,我们把基本的框架都搭好了,用了Spring,SPringMVC.这一节,我们先来画页面,前端框架采用EasyUI来实现. easyui是一种基于jQuery的用户界面插件集 ...
随机推荐
- IT项目中使用 json格式数据 保存项目配置信息, 在配置文件再读取json文件的内容进行赋值
json格式小巧玲珑,适合做配置文件,特别是大型项目中, 可以将配置信息分类保存到不同的json文件中, 然后再在配置文件中读取配置文件的数据进行赋值, 这里以python为例进行说明: 假设在you ...
- 根据某个key给二维数组分组
/** * 根据某个key给二维数组分组 */ private function array_group_by($arr, $key) { $grouped = []; foreach ($arr a ...
- Linux磁盘及文件系统(一)
一.磁盘 1.IO接口类型 (1)传输类型分类 并口:同一个线缆可以接多块设备 IDE口:两个,一个主设备,一个从设备 SCSI:宽带:16-1:窄带:8-1 串口:同一个线缆只可以接一个设备 (2) ...
- centos和ubuntu配置路由的三种方式
本篇总结三种修改路由的方式:route, ip route, 以及通过修改文件来配置路由,前2种命令行形式适用于ubuntu和centos,重启失效,最后一种永久有效. 一. route命令 ...
- P4090 [USACO17DEC]Greedy Gift Takers
题目链接 题意分析 首先 如果当前序列中一头奶牛拿不到礼物的话 那么他后面的奶牛也拿不到礼物 所以我们可以二分 由于可以操作无限次 所以我们对于当前\([1,mid)\)的奶牛按照\(c\)值排序之后 ...
- 2019.04.07 第三次训练 【WHU校赛】
A: (模拟退火+点到线段最短距离) https://blog.csdn.net/Link_Ray/article/details/89173222 B:✅ C: (线段树+二分) https://b ...
- 在linux上一行代码不用写实现自动采集+hadoop分词
在linux上一行代码不用写实现自动采集+hadoop分词 将下面的shell脚本保存成到xxx.sh,然后执行即可 cd /opt/hadoop mkdir spider wget -O spide ...
- Java 并发编程——Callable+Future+FutureTask
Java 并发编程系列文章 Java 并发基础——线程安全性 Java 并发编程——Callable+Future+FutureTask java 并发编程——Thread 源码重新学习 java并发 ...
- Java的三个基础排序算法(其余将在以后补充)
第一个:冒泡排序算法 原理:相邻的两个值进行比较,如果前面的比后面的大就交换位置 eg:假设有5个元素的一个array 第一次:会比较4次,将最大的值放在最右边 第二次:会比较3次,又排出剩余4个元素 ...
- php 如何截取中文字符串
在网站应用中时常需要对相应的字符串进行截取.最常用的是使用substr函数对字符串进行截取. 然而,substr和strlen函数只在处理英文字符串时可以正确使用,在截取中文字符时,时常出现乱码.这时 ...