Enford пре 5 година
родитељ
комит
1aa132c20e

+ 69 - 0
src/main/webapp/webpage/error/400.jsp

@@ -0,0 +1,69 @@
+<%
+response.setStatus(400);
+
+// 获取异常类
+Throwable ex = Exceptions.getThrowable(request);
+
+// 编译错误信息
+StringBuilder sb = new StringBuilder("错误信息:\n");
+if (ex != null) {
+	if (ex instanceof BindException) {
+		for (ObjectError e : ((BindException)ex).getGlobalErrors()){
+			sb.append("☆" + e.getDefaultMessage() + "(" + e.getObjectName() + ")\n");
+		}
+		for (FieldError e : ((BindException)ex).getFieldErrors()){
+			sb.append("☆" + e.getDefaultMessage() + "(" + e.getField() + ")\n");
+		}
+		LoggerFactory.getLogger("400.jsp").warn(ex.getMessage(), ex);
+	}else if (ex instanceof ConstraintViolationException) {
+		for (ConstraintViolation<?> v : ((ConstraintViolationException)ex).getConstraintViolations()) {
+			sb.append("☆" + v.getMessage() + "(" + v.getPropertyPath() + ")\n");
+		}
+	} else {
+		//sb.append(Exceptions.getStackTraceAsString(ex));
+		sb.append("☆" + ex.getMessage());
+	}
+} else {
+	sb.append("未知错误.\n\n");
+}
+
+// 如果是异步请求或是手机端,则直接返回信息
+if (Servlets.isAjaxRequest(request)) {
+	out.print(sb);
+}
+
+// 输出异常信息页面
+else {
+%>
+<%@page import="javax.validation.ConstraintViolation"%>
+<%@page import="javax.validation.ConstraintViolationException"%>
+<%@page import="org.springframework.validation.BindException"%>
+<%@page import="org.springframework.validation.ObjectError"%>
+<%@page import="org.springframework.validation.FieldError"%>
+<%@page import="org.slf4j.Logger,org.slf4j.LoggerFactory"%>
+<%@page import="com.jeeplus.common.web.Servlets"%>
+<%@page import="com.jeeplus.common.utils.Exceptions"%>
+<%@page import="com.jeeplus.common.utils.StringUtils"%>
+<%@page contentType="text/html;charset=UTF-8" isErrorPage="true"%>
+<%@include file="/webpage/include/taglib.jsp"%>
+<!DOCTYPE html>
+<html>
+<head>
+	<title>400 - 请求出错</title>
+	<%@include file="/webpage/include/head.jsp" %>
+</head>
+<body>
+	<div class="container-fluid">
+		<div class="page-header"><h1>参数有误,服务器无法解析.</h1></div>
+		<div class="errorMessage">
+			<%=StringUtils.toHtml(sb.toString())%> <br/>
+		</div>
+		<a href="javascript:" onclick="history.go(-1);" class="btn">返回上一页</a> &nbsp;
+		<br/> <br/>
+		<script>try{top.$.jBox.closeTip();}catch(e){}</script>
+	</div>
+</body>
+</html>
+<%
+} out = pageContext.pushBody();
+%>

+ 45 - 0
src/main/webapp/webpage/error/403.jsp

@@ -0,0 +1,45 @@
+<%
+response.setStatus(403);
+
+//获取异常类
+Throwable ex = Exceptions.getThrowable(request);
+
+// 如果是异步请求或是手机端,则直接返回信息
+if (Servlets.isAjaxRequest(request)) {
+	if (ex!=null && StringUtils.startsWith(ex.getMessage(), "msg:")){
+		out.print(StringUtils.replace(ex.getMessage(), "msg:", ""));
+	}else{
+		out.print("操作权限不足.");
+	}
+}
+
+//输出异常信息页面
+else {
+%>
+<%@page import="com.jeeplus.common.web.Servlets"%>
+<%@page import="com.jeeplus.common.utils.Exceptions"%>
+<%@page import="com.jeeplus.common.utils.StringUtils"%>
+<%@page contentType="text/html;charset=UTF-8" isErrorPage="true"%>
+<%@include file="/webpage/include/taglib.jsp"%>
+<!DOCTYPE html>
+<html>
+<head>
+	<title>403 - 操作权限不足</title>
+	<%@include file="/webpage/include/head.jsp" %>
+</head>
+<body>
+	<div class="container-fluid">
+		<div class="page-header"><h1>操作权限不足.</h1></div>
+		<%
+			if (ex!=null && StringUtils.startsWith(ex.getMessage(), "msg:")){
+				out.print("<div>"+StringUtils.replace(ex.getMessage(), "msg:", "")+" <br/> <br/></div>");
+			}
+		%>
+		<div><a href="javascript:" onclick="history.go(-1);" class="btn">返回上一页</a></div>
+		<script>try{top.$.jBox.closeTip();}catch(e){}</script>
+	</div>
+</body>
+</html>
+<%
+} out = pageContext.pushBody();
+%>

+ 39 - 0
src/main/webapp/webpage/error/404.jsp

@@ -0,0 +1,39 @@
+<%@ page contentType="text/html;charset=UTF-8" %>
+<%@ include file="/webpage/include/taglib.jsp"%>
+<%@page import="com.jeeplus.common.web.Servlets"%>
+<%
+response.setStatus(404);
+
+// 如果是异步请求或是手机端,则直接返回信息
+if (Servlets.isAjaxRequest(request)) {
+	out.print("页面不存在.");
+}
+
+//输出异常信息页面
+else {
+%>
+<!DOCTYPE html>
+<html>
+
+<head>
+  <title>404 页面</title>
+  <link href="${ctxStatic}/common/css/style.css?v=3.2.0" type="text/css" rel="stylesheet" />
+</head>
+
+<body class="gray-bg">
+
+
+    <div class="middle-box text-center animated fadeInDown">
+        <h1>404</h1>
+        <h3 class="font-bold">页面未找到!</h3>
+
+        <div class="error-desc">
+            抱歉,页面好像去火星了~
+        </div>
+    </div>
+
+</body>
+
+</html>
+
+<%}%>

+ 59 - 0
src/main/webapp/webpage/error/500.jsp

@@ -0,0 +1,59 @@
+<%
+response.setStatus(500);
+
+// 获取异常类
+Throwable ex = Exceptions.getThrowable(request);
+if (ex != null){
+	LoggerFactory.getLogger("500.jsp").error(ex.getMessage(), ex);
+}
+
+// 编译错误信息
+StringBuilder sb = new StringBuilder("错误信息:\n");
+if (ex != null) {
+	sb.append(Exceptions.getStackTraceAsString(ex));
+} else {
+	sb.append("未知错误.\n\n");
+}
+
+// 如果是异步请求或是手机端,则直接返回信息
+if (Servlets.isAjaxRequest(request)) {
+	out.print(sb);
+}
+
+// 输出异常信息页面
+else {
+%>
+<%@page import="org.slf4j.Logger,org.slf4j.LoggerFactory"%>
+<%@page import="com.jeeplus.common.web.Servlets"%>
+<%@page import="com.jeeplus.common.utils.Exceptions"%>
+<%@page import="com.jeeplus.common.utils.StringUtils"%>
+<%@page contentType="text/html;charset=UTF-8" isErrorPage="true"%>
+<%@include file="/webpage/include/taglib.jsp"%>
+<!DOCTYPE html>
+<html>
+<head>
+	<title>500 - 系统内部错误</title>
+	<%@include file="/webpage/include/head.jsp" %>
+</head>
+<body>
+	<div class="container-fluid">
+		<div class="page-header"><h1>系统内部错误.</h1></div>
+		<div class="errorMessage">
+			错误信息:<%=ex==null?"未知错误.":StringUtils.toHtml(ex.getMessage())%> <br/> <br/>
+			请点击“查看详细信息”按钮,将详细错误信息发送给系统管理员,谢谢!<br/> <br/>
+			<a href="javascript:" onclick="history.go(-1);" class="btn">返回上一页</a> &nbsp;
+			<a href="javascript:" onclick="$('.errorMessage').toggle();" class="btn">查看详细信息</a>
+		</div>
+		<div class="errorMessage hide">
+			<%=StringUtils.toHtml(sb.toString())%> <br/>
+			<a href="javascript:" onclick="history.go(-1);" class="btn">返回上一页</a> &nbsp;
+			<a href="javascript:" onclick="$('.errorMessage').toggle();" class="btn">隐藏详细信息</a>
+			<br/> <br/>
+		</div>
+		<script>try{top.$.jBox.closeTip();}catch(e){}</script>
+	</div>
+</body>
+</html>
+<%
+} out = pageContext.pushBody();
+%>

+ 2 - 0
src/main/webapp/webpage/error/error_fileupload.jsp

@@ -0,0 +1,2 @@
+<%@ page language="java" pageEncoding="UTF-8"%>  
+<h1>文件过大,请重新选择</h1>  

+ 120 - 0
src/main/webapp/webpage/include/acehead.jsp

@@ -0,0 +1,120 @@
+<%@ page contentType="text/html;charset=UTF-8" %><meta http-equiv="Content-Type" content="text/html;charset=utf-8" /><meta name="author" content="http://www.jeeplus.org/"/>
+<meta name="renderer" content="webkit"><meta http-equiv="X-UA-Compatible" content="IE=8,IE=9,IE=10" />
+<meta http-equiv="Expires" content="0"><meta http-equiv="Cache-Control" content="no-cache"><meta http-equiv="Cache-Control" content="no-store">
+<!-- 引入jquery插件 -->
+<script src="${ctxStatic}/jquery/jquery-2.1.1.min.js" type="text/javascript"></script>
+<script src="${ctxStatic}/jquery/jquery-migrate-1.1.1.min.js" type="text/javascript"></script>
+
+
+
+<!-- 引入依赖的第三方插件 -->
+	<!-- bootstrap & fontawesome -->
+		<link rel="stylesheet" href="${ctxStatic}/ace/assets/css/bootstrap.css" />
+		<link rel="stylesheet" href="${ctxStatic}/ace/assets/css/font-awesome.css" />
+		<link rel="stylesheet" href="${ctxStatic}/ace/assets/css/ace-fonts.css" />
+		<link rel="stylesheet" href="${ctxStatic}/ace/assets/css/ace.css" class="ace-main-stylesheet" id="main-ace-style" />
+		<script src="${ctxStatic}/ace/assets/js/ace-extra.js"></script>
+
+		<script type="text/javascript">
+			if('ontouchstart' in document.documentElement) document.write("<script src='${ctxStatic}/ace/assets/js/jquery.mobile.custom.js'>"+"<"+"/script>");
+		</script>
+		<script src="${ctxStatic}/ace/assets/js/bootstrap.js"></script>
+
+		<!-- page specific plugin scripts -->
+
+		<!--[if lte IE 8]>
+		  <script src="${ctxStatic}/ace/assets/js/excanvas.js"></script>
+		<![endif]-->
+		<script src="${ctxStatic}/ace/assets/js/jquery-ui.custom.js"></script>
+		<script src="${ctxStatic}/ace/assets/js/jquery.ui.touch-punch.js"></script>
+		<script src="${ctxStatic}/ace/assets/js/jquery.easypiechart.js"></script>
+		<script src="${ctxStatic}/ace/assets/js/jquery.sparkline.js"></script>
+
+		<!-- ace scripts -->
+		<script src="${ctxStatic}/ace/assets/js/ace/elements.scroller.js"></script>
+		<script src="${ctxStatic}/ace/assets/js/ace/elements.colorpicker.js"></script>
+		<script src="${ctxStatic}/ace/assets/js/ace/elements.fileinput.js"></script>
+		<script src="${ctxStatic}/ace/assets/js/ace/elements.typeahead.js"></script>
+		<script src="${ctxStatic}/ace/assets/js/ace/elements.wysiwyg.js"></script>
+		<script src="${ctxStatic}/ace/assets/js/ace/elements.spinner.js"></script>
+		<script src="${ctxStatic}/ace/assets/js/ace/elements.treeview.js"></script>
+		<script src="${ctxStatic}/ace/assets/js/ace/elements.wizard.js"></script>
+		<script src="${ctxStatic}/ace/assets/js/ace/elements.aside.js"></script>
+		<script src="${ctxStatic}/ace/assets/js/ace/ace.js"></script>
+		<script src="${ctxStatic}/ace/assets/js/ace/ace.ajax-content.js"></script>
+		<script src="${ctxStatic}/ace/assets/js/ace/ace.touch-drag.js"></script>
+		<script src="${ctxStatic}/ace/assets/js/ace/ace.sidebar.js"></script>
+		<script src="${ctxStatic}/ace/assets/js/ace/ace.sidebar-scroll-1.js"></script>
+		<script src="${ctxStatic}/ace/assets/js/ace/ace.submenu-hover.js"></script>
+		<script src="${ctxStatic}/ace/assets/js/ace/ace.widget-box.js"></script>
+		<script src="${ctxStatic}/ace/assets/js/ace/ace.settings.js"></script>
+		<script src="${ctxStatic}/ace/assets/js/ace/ace.settings-rtl.js"></script>
+		<script src="${ctxStatic}/ace/assets/js/ace/ace.settings-skin.js"></script>
+		<script src="${ctxStatic}/ace/assets/js/ace/ace.widget-on-reload.js"></script>
+		<script src="${ctxStatic}/ace/assets/js/ace/ace.searchbox-autocomplete.js"></script>
+		
+		
+		
+		<!-- the following scripts are used in demo only for onpage help and you don't need them -->
+		<link rel="stylesheet" href="${ctxStatic}/ace/assets/css/ace.onpage-help.css" />
+		<link rel="stylesheet" href="${ctxStatic}/ace/docs/assets/js/themes/sunburst.css" />
+
+		<script type="text/javascript"> ace.vars['base'] = '..'; </script>
+		<script src="${ctxStatic}/ace/assets/js/ace/elements.onpage-help.js"></script>
+		<script src="${ctxStatic}/ace/assets/js/ace/ace.onpage-help.js"></script>
+		<script src="${ctxStatic}/ace/docs/assets/js/rainbow.js"></script>
+		<script src="${ctxStatic}/ace/docs/assets/js/language/generic.js"></script>
+		<script src="${ctxStatic}/ace/docs/assets/js/language/html.js"></script>
+		<script src="${ctxStatic}/ace/docs/assets/js/language/css.js"></script>
+		<script src="${ctxStatic}/ace/docs/assets/js/language/javascript.js"></script>
+
+
+
+
+
+<!-- 引入依赖的第三方插件 -->
+<script src="${ctxStatic}/slimscroll/jquery.slimscroll.min.js"></script>
+
+
+<!-- <link href="${ctxStatic}/jquery-select2/3.5.4/select2.css" rel="stylesheet" />
+<link href="${ctxStatic}/jquery-select2/3.5.4/select2-bootstrap.css" rel="stylesheet" />
+<script src="${ctxStatic}/jquery-select2/3.5.4/select2.min.js" type="text/javascript"></script>
+<script src="${ctxStatic}/jquery-select2/3.5.4/select2_locale_zh-CN.js" type="text/javascript"></script>-->
+<script src="${ctxStatic}/jquery-validation/1.14.0/jquery.validate.min.js" type="text/javascript"></script>
+<script src="${ctxStatic}/jquery-validation/1.14.0/localization/messages_zh.min.js" type="text/javascript"></script>
+<link href="${ctxStatic}/jquery-jbox/2.3/Skins/Bootstrap/jbox.min.css" rel="stylesheet" />
+<script src="${ctxStatic}/jquery-jbox/2.3/jquery.jBox-2.3.min.js" type="text/javascript"></script>
+<script src="${ctxStatic}/My97DatePicker/WdatePicker.js" type="text/javascript"></script>
+<script src="${ctxStatic}/pace/pace.min.js"></script>
+<script src="${ctxStatic}/metisMenu/jquery.metisMenu.js"></script>
+<link href="${ctxStatic}/iCheck/custom.css" rel="stylesheet" />
+<script src="${ctxStatic}/iCheck/icheck.min.js"></script>
+<script src="${ctxStatic}/iCheck/icheck-init.js"></script>
+<link href="${ctxStatic}/dataTables/dataTables.bootstrap.css" rel="stylesheet" />
+<script src="${ctxStatic}/dataTables/jquery.dataTables.js"></script>
+<script src="${ctxStatic}/dataTables/dataTables.bootstrap.js"></script>
+
+<!-- 引入自定义文件 -->
+<link href="${ctxStatic}/ace/tab.css" type="text/css" rel="stylesheet" />
+
+<!-- 引入layer插件 -->
+<script src="${ctxStatic}/layer-v2.3/layer/layer.js"></script>
+<script src="${ctxStatic}/layer-v2.3/layer/laydate/laydate.js"></script>
+
+<!--引入webuploader-->
+<link rel="stylesheet" type="text/css" href="${ctxStatic}/webuploader-0.1.5/webuploader.css">
+<script type="text/javascript" src="${ctxStatic}/webuploader-0.1.5/webuploader.js"></script>
+
+
+<!-- 引入自定义文件 -->
+<script src="${ctxStatic}/common/mustache.min.js" type="text/javascript"></script>
+<script src="${ctxStatic}/common/content.js" type="text/javascript"></script>
+<script type="text/javascript">var ctx = '${ctx}', ctxStatic='${ctxStatic}';</script>
+
+
+
+
+
+
+
+

+ 2 - 0
src/main/webapp/webpage/include/dialog.jsp

@@ -0,0 +1,2 @@
+<link href="${ctxStatic}/jquery-jbox/2.3/Skins/Bootstrap/jbox.min.css" rel="stylesheet" />
+<script src="${ctxStatic}/jquery-jbox/2.3/jquery.jBox-2.3.min.js" type="text/javascript"></script>

+ 26 - 0
src/main/webapp/webpage/include/echarts.jsp

@@ -0,0 +1,26 @@
+<%@ page contentType="text/html;charset=UTF-8" %>
+<script src="${ctxStatic}/echarts-2.2.7/build/dist/echarts.js"></script>
+<script type="text/javascript">
+	// 路径配置
+	require.config({
+		paths : {
+			echarts : '${ctxStatic}/echarts-2.2.7/build/dist'
+		} 
+	});
+</script>
+<style type="text/css">
+    .main000 {
+        height: 360px;
+        /*width: 778px !important;*/
+        overflow: hidden;
+        padding : 10px;
+        margin-bottom: 10px;
+        border: 1px solid #e3e3e3;
+        -webkit-border-radius: 4px;
+           -moz-border-radius: 4px;
+                border-radius: 4px;
+        -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05);
+           -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05);
+                box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05);
+    }
+</style>

+ 201 - 0
src/main/webapp/webpage/include/head.jsp

@@ -0,0 +1,201 @@
+<%@ page contentType="text/html;charset=UTF-8" %><meta http-equiv="Content-Type" content="text/html;charset=utf-8" /><meta name="author" content="http://www.jeeplus.org/"/>
+<link rel="icon" href="${ctxp}/static/common/img/bitbug_favicon.ico" type="image/x-icon"/>
+<meta name="renderer" content="webkit"><meta http-equiv="X-UA-Compatible" content="IE=9,IE=10" />
+<meta http-equiv="Expires" content="0"><meta http-equiv="Cache-Control" content="no-cache"><meta http-equiv="Cache-Control" content="no-store">
+<!-- 引入jquery插件 -->
+<script src="${ctxStatic}/jquery/jquery-2.1.1.min.js" type="text/javascript"></script>
+<script src="${ctxStatic}/jquery-form/jquery.form.js"></script>
+<script src="${ctxStatic}/jquery/jquery-migrate-1.1.1.min.js" type="text/javascript"></script>
+<script type="text/javascript" src="${ctxStatic}/TableDnD/jquery.tablednd.js"></script>
+
+
+<!-- 引入依赖的第三方插件 -->
+<script src="${ctxStatic}/slimscroll/jquery.slimscroll.min.js"></script>
+
+
+
+<script src="${ctxStatic}/jquery-validation/1.14.0/jquery.validate.min.js" type="text/javascript"></script>
+<script src="${ctxStatic}/jquery-validation/1.14.0/localization/messages_zh.min.js" type="text/javascript"></script>
+<link href="${ctxStatic}/jquery-jbox/2.3/Skins/Bootstrap/jbox.min.css" rel="stylesheet" />
+<script src="${ctxStatic}/jquery-jbox/2.3/jquery.jBox-2.3.min.js" type="text/javascript"></script>
+<script src="${ctxStatic}/My97DatePicker/WdatePicker.js" type="text/javascript"></script>
+<script src="${ctxStatic}/pace/pace.min.js"></script>
+<script src="${ctxStatic}/metisMenu/jquery.metisMenu.js"></script>
+<link href="${ctxStatic}/iCheck/custom.css" rel="stylesheet" />
+<script src="${ctxStatic}/iCheck/icheck.min.js"></script>
+<script src="${ctxStatic}/iCheck/icheck-init.js"></script>
+<link href="${ctxStatic}/dataTables/dataTables.bootstrap.css" rel="stylesheet" />
+<script src="${ctxStatic}/dataTables/jquery.dataTables.js"></script>
+<script src="${ctxStatic}/dataTables/dataTables.bootstrap.js"></script>
+<link href="${ctxStatic}/uploadify/fileinput.css" rel="stylesheet"/>
+<script src="${ctxStatic}/uploadify/fileinput.js"></script>
+<script src="${ctxStatic}/uploadify/fileinput_locale_zh.js"></script>
+
+
+
+
+<!-- jeeplus -->
+<link href="${ctxStatic}/common/jeeplus.css" type="text/css" rel="stylesheet" />
+<script src="${ctxStatic}/common/jeeplus.js" type="text/javascript"></script>
+
+<!-- jquery ui -->
+<script src="${ctxStatic}/jquery-ui/jquery-ui.min.js"></script>
+
+<!-- 引入bootstrap插件 -->
+<!-- bootswatch主题效果不怎么好,停止切换,使用官网的默认版本,如果你想切换主题请访问http://bootswatch.com/下载最新版版主题,by刘高峰 -->
+<!--  <link href="${ctxStatic}/bootstrap/3.3.4/css_${not empty cookie.theme.value ? cookie.theme.value : 'default'}/bootstrap.min.css" type="text/css" rel="stylesheet" />-->
+<link href="${ctxStatic}/bootstrap/3.3.4/css_default/bootstrap.min.css" type="text/css" rel="stylesheet" />
+<script src="${ctxStatic}/bootstrap/3.3.4/js/bootstrap.min.js"  type="text/javascript"></script>
+<link href="${ctxStatic}/awesome/4.4/css/font-awesome.min.css" rel="stylesheet" />
+
+<!-- 引入layer插件 -->
+<link href="${ctxStatic}/layer-v2.3/layui/css/layui.css" type="text/css" rel="stylesheet"/>
+<script src="${ctxStatic}/layer-v2.3/layer/layer.js"></script>
+<script src="${ctxStatic}/layer-v2.3/layer/laydate/laydate.js"></script>
+
+<!--引入webuploader-->
+<link rel="stylesheet" type="text/css" href="${ctxStatic}/webuploader-0.1.5/webuploader.css">
+<script type="text/javascript" src="${ctxStatic}/webuploader-0.1.5/webuploader.js"></script>
+
+
+<!-- 引入自定义文件 -->
+<script src="${ctxStatic}/common/mustache.min.js" type="text/javascript"></script>
+<script src="${ctxStatic}/common/content.js" type="text/javascript"></script>
+<link href="${ctxStatic}/common/css/login.css" type="text/css" rel="stylesheet" />
+<script src="${ctxStatic}/common/js/common.js" type="text/javascript"></script>
+<script type="text/javascript">var ctx = '${ctx}', ctxStatic='${ctxStatic}',ctxp='${ctxp}';</script>
+
+<!-- 引入默认样式 -->
+<link href="${ctxStatic}/common/css/style.css?v=3.2.0" type="text/css" rel="stylesheet" />
+
+<!-- 引入OSS样式 -->
+<script type="text/javascript">
+    var userAgent = navigator.userAgent; //取得浏览器的userAgent字符串
+    var isOpera = userAgent.indexOf("Opera") > -1; //判断是否Opera浏览器
+    var isIE = userAgent.indexOf("compatible") > -1 && userAgent.indexOf("MSIE") > -1 && !isOpera;
+    var isEdge = userAgent.indexOf("Edge") > -1;
+    if(isIE || isEdge)
+    {
+        var reIE = new RegExp("MSIE (\\d+\\.\\d+);");
+        reIE.test(userAgent);
+        var fIEVersion = parseFloat(RegExp["$1"]);
+        if(fIEVersion < 12 || isEdge){
+            document.write('<script type="text/javascript" src="${ctxStatic}/oss/lib/crypto1/crypto/crypto.js"><\/script>');
+            document.write('<script type="text/javascript" src="${ctxStatic}/oss/lib/crypto1/hmac/hmac.js"><\/script>');
+            document.write('<script type="text/javascript" src="${ctxStatic}/oss/lib/crypto1/sha1/sha1.js"><\/script>');
+            document.write('<script type="text/javascript" src="${ctxStatic}/oss/lib/base64.js"><\/script>');
+            document.write('<script type="text/javascript" src="${ctxStatic}/oss/ie-ossupload.js"><\/script>');
+        }
+        else
+        {
+            // document.write('<script src="http://gosspublic.alicdn.com/aliyun-oss-sdk-4.4.4.min.js"><\/script>');
+            document.write('<script src="${ctxStatic}/bos/node_modules/@baiducloud/sdk/dist/baidubce-sdk.bundle.min.js"><\/script>');
+            <%--document.write('<script type="text/javascript" src="${ctxStatic}/oss/ossupload.js"><\/script>');--%>
+            document.write('<script type="text/javascript" src="${ctxStatic}/bos/bosupload.js"><\/script>');
+        }
+    }
+    else
+    {
+        // document.write('<script src="http://gosspublic.alicdn.com/aliyun-oss-sdk-4.4.4.min.js"><\/script>');
+        document.write('<script src="${ctxStatic}/bos/node_modules/@baiducloud/sdk/dist/baidubce-sdk.bundle.min.js"><\/script>');
+        <%--document.write('<script type="text/javascript" src="${ctxStatic}/oss/ossupload.js"><\/script>');--%>
+        document.write('<script type="text/javascript" src="${ctxStatic}/bos/bosupload.js"><\/script>');
+    }
+
+    jQuery.validator.addMethod("isPhone", function(value, element) {
+        if (this.optional(element)){
+            return true;
+        }
+        var split = value.split(",");
+        for(var i=0;i<split.length;i++){
+            var length = split[i].length;
+            var mobile = /^(((13[0-9]{1})|(15[0-9]{1})|(16[0-9]{1})|(18[0-9]{1})|(17[0-9]{1})|(19[0-9]{1}))+\d{8})$/;
+            if(!(length == 11 && mobile.test(split[i]))){
+                return false;
+            }
+        }
+        return true;
+    }, "请填写正确的手机号码");
+    jQuery.validator.addMethod("isUrl", function(value, element) {
+        if (this.optional(element)){
+            return true;
+        }
+        var strRegex = "^((https|http|ftp|rtsp|mms)?://)"
+            + "?(([0-9a-z_!~*'().&amp;=+$%-]+: )?[0-9a-z_!~*'().&amp;=+$%-]+@)?" //ftp的user@
+            + "(([0-9]{1,3}\.){3}[0-9]{1,3}" // IP形式的URL- 199.194.52.184
+            + "|" // 允许IP和DOMAIN(域名)
+            + "([0-9a-z_!~*'()-]+\.)*" // 域名- www.
+            + "([0-9a-z][0-9a-z-]{0,61})?[0-9a-z]\." // 二级域名
+            + "[a-z]{2,6})" // first level domain- .com or .museum
+            + "(:[0-9]{1,4})?" // 端口- :80
+            + "((/?)|" // a slash isn't required if there is no file name
+            + "(/[0-9a-z_!~*'().;?:@&amp;=+$,%#-]+)+/?)$";
+
+        var re=new RegExp(strRegex);
+
+        if (re.test(value)){
+            return (true);
+        }else{
+            return (false);
+        }
+    }, "请填写正确的网址");
+
+    jQuery.validator.addMethod("isTel", function(value, element) {
+        var length = value.length;
+        var phone = /(^(\d{3,4}-)?\d{6,8}$)|(^(\d{3,4}-)?\d{6,8}(-\d{1,5})?$)|(\d{11})/;
+        return this.optional(element) || (phone.test(value));
+    }, "请填写正确的固定电话");
+
+    jQuery.validator.addMethod("idCard", function(value, element) {
+        var pattern = /^\d{6}(19|20)\d{2}(0[1-9]|1[012])(0[1-9]|[12]\d|3[01])\d{3}(\d|X)$/i;
+        if(value.length==15){
+            pattern = /^\d{8}(0[1-9]|1[012])(0[1-9]|[12]\d|3[01])\d{3}/;
+        }
+        if(!pattern.test(value))return false;
+        var year='';
+        var months='';
+        var days='';
+        if(value.length==15){
+            year = "19"+value.substring(6,8);
+            months=value.substring(8,10);//截取身份证上的月
+            days=value.substring(10,12);//截取身份证上的日
+        }else {
+            year=value.substring(6,10);//截取身份证上的年
+            months=value.substring(10,12);//截取身份证上的月
+            days=value.substring(12,14);//截取身份证上的日
+        }
+        var myDate = new Date();
+        var month = myDate.getMonth() + 1;
+        var day = myDate.getDate();
+        age = myDate.getFullYear() - year - 1;
+        if (months< month || months == month && days <= day) {
+            age++;
+        }
+        return this.optional(element) || ((pattern.test(value))&&age>=0);
+    }, "请填写正确的身份证号");
+
+    document.onkeydown = function(event) {
+        var target, code, tag;
+        if (!event) {
+            event = window.event; //针对ie浏览器
+            target = event.srcElement;
+            code = event.keyCode;
+            if (code == 13) {
+                $("#searchQuery").trigger("click");
+                return false;
+            }
+        }
+        else {
+            target = event.target; //针对遵循w3c标准的浏览器,如Firefox
+            code = event.keyCode;
+            if (code == 13) {
+                $("#searchQuery").trigger("click");
+                return false;
+            }
+        }
+    };
+</script>
+
+
+
+

+ 24 - 0
src/main/webapp/webpage/include/menu.jsp

@@ -0,0 +1,24 @@
+<c:forEach items="menus" var="menu">
+	<c:if test="${menu.isShow eq '1'}">
+		<li>
+			<c:choose>
+			   <c:when test="${empty menu.href}">  
+				   <a href="javascript:void(0)"><i class="fa fa-gear"></i> <span class="nav-label">${menu.name}</span><span class="fa arrow"></span></a>  
+			   </c:when>
+			   <c:otherwise> 
+				  <a  class="J_menuItem"  href="${ctx}${menu.href}"><i class="fa fa-gear"></i> <span class="nav-label">${menu.name}</span><span class="fa arrow"></span></a>
+			   </c:otherwise>
+			</c:choose>
+			<ul class="nav nav-second-level">
+		
+				
+						<c:set var="menus" value="${menu.children}" scope="request"/>
+                 		<%@ include file="/webpage/include/menu.jsp"%>
+				
+				
+			
+			</ul>
+		</li>
+		
+	</c:if>
+</c:forEach>

+ 12 - 0
src/main/webapp/webpage/include/ossTools.jsp

@@ -0,0 +1,12 @@
+<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
+<c:set var="ctxStatic" value="http://gangwan-app.oss-cn-hangzhou.aliyuncs.com/jeeplus-resource/static"/>
+<script src="http://gosspublic.alicdn.com/aliyun-oss-sdk-4.4.4.min.js"></script>
+<script type="text/javascript" src="${ctxStatic}/oss/lib/crypto1/crypto/crypto.js"></script>
+<script type="text/javascript" src="${ctxStatic}/oss/lib/crypto1/hmac/hmac.js"></script>
+<script type="text/javascript" src="${ctxStatic}/oss/lib/crypto1/sha1/sha1.js"></script>
+<script type="text/javascript" src="${ctxStatic}/oss/lib/base64.js"></script>
+<script type="text/javascript" src="${ctxStatic}/oss/lib/plupload-2.3.6/plupload-2.3.6/js/plupload.full.min.js"></script>
+<script type="text/javascript" src="${ctxStatic}/oss/lib/plupload-2.3.6/plupload-2.3.6/js/jquery.plupload.queue/jquery.plupload.queue.js"></script>
+<script type="text/javascript" src="${ctxStatic}/oss/lib/plupload-2.3.6/plupload-2.3.6/js/plupload.dev.js"></script>
+<script type="text/javascript" src="${ctxStatic}/oss/upload.js"></script>
+<script type="text/javascript" src="${ctxStatic}/oss/ossupload.js"></script>

+ 17 - 0
src/main/webapp/webpage/include/taglib.jsp

@@ -0,0 +1,17 @@
+<%@ taglib prefix="shiro" uri="/WEB-INF/tlds/shiros.tld" %>
+<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
+<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form" %>
+<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
+<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>
+<%@ taglib prefix="fns" uri="/WEB-INF/tlds/fns.tld" %>
+<%@ taglib prefix="echarts" uri="/WEB-INF/tlds/echarts.tld" %>
+<%@ taglib prefix="sys" tagdir="/WEB-INF/tags/sys" %>
+<%@ taglib prefix="act" tagdir="/WEB-INF/tags/act" %>
+<%@ taglib prefix="table" tagdir="/WEB-INF/tags/table" %>
+<%@ taglib prefix="t" uri="/menu-tags"%>
+<c:set var="ctxs" value="${pageContext.request.serverName}:${pageContext.request.serverPort}${pageContext.request.contextPath}${fns:getAdminPath()}"/>
+<c:set var="ctx" value="${pageContext.request.contextPath}${fns:getAdminPath()}"/>
+<%--<c:set var="ctxStatic" value="${pageContext.request.contextPath}/static"/>--%>
+<c:set var="ctxStatic" value="${pageContext.request.contextPath}/static"/>
+<%--<c:set var="ctxStatic" value="${fns:getOSSUrl()}"/>--%>
+<c:set var="ctxp" value="${pageContext.request.contextPath}" />

+ 2 - 0
src/main/webapp/webpage/include/treetable.jsp

@@ -0,0 +1,2 @@
+<link href="${ctxStatic}/treeTable/themes/vsStyle/treeTable.min.css" rel="stylesheet" type="text/css" />
+<script src="${ctxStatic}/treeTable/jquery.treeTable.min.js" type="text/javascript"></script>

+ 2 - 0
src/main/webapp/webpage/include/treeview.jsp

@@ -0,0 +1,2 @@
+<link href="${ctxStatic}/jquery-ztree/3.5.12/css/zTreeStyle/metro.css" rel="stylesheet" type="text/css"/>
+<script src="${ctxStatic}/jquery-ztree/3.5.12/js/jquery.ztree.all-3.5.min.js" type="text/javascript"></script>

+ 14 - 0
src/main/webapp/webpage/layouts/blank.jsp

@@ -0,0 +1,14 @@
+<%@ page contentType="text/html;charset=UTF-8"%>
+<%@ include file="/webpage/include/taglib.jsp"%>
+<%@ taglib prefix="sitemesh" uri="http://www.opensymphony.com/sitemesh/decorator" %>
+<!DOCTYPE html>
+<html style="overflow-x:auto;">
+<head>
+	<title><sitemesh:title/></title>
+	<%@include file="/webpage/include/head.jsp" %>
+	<sitemesh:head/>
+</head>
+<body>
+	<sitemesh:body/>
+</body>
+</html>

+ 29 - 0
src/main/webapp/webpage/layouts/default.jsp

@@ -0,0 +1,29 @@
+<%@ page contentType="text/html;charset=UTF-8"%>
+<%@ include file="/webpage/include/taglib.jsp"%>
+<%@ taglib prefix="sitemesh" uri="http://www.opensymphony.com/sitemesh/decorator" %>
+<!DOCTYPE html>
+<html style="overflow-x:auto;overflow-y:auto;">
+<head>
+	<title><sitemesh:title/></title>
+	<%@include file="/webpage/include/head.jsp" %>		
+	<sitemesh:head/>
+</head>
+<body id="<sitemesh:getProperty property='body.id'/>" class="<sitemesh:getProperty property='body.class'/>"  style="<sitemesh:getProperty property='body.style'/>">
+	<sitemesh:body/>
+	<script type="text/javascript">//<!-- 无框架时,左上角显示菜单图标按钮。
+		if(!(self.frameElement && self.frameElement.tagName=="IFRAME")){
+			$("body").prepend("<i id=\"btnMenu\" class=\"icon-th-list\" style=\"cursor:pointer;float:right;margin:10px;\"></i><div id=\"menuContent\"></div>");
+			$("#btnMenu").click(function(){
+
+				top.layer.open({
+				    type: 2, 
+				    area:['300px','350px'],
+				    content: 'get:${ctx}/sys/menu/treeselect;JSESSIONID=<shiro:principal property="sessionid"/>' //这里content是一个URL,如果你不想让iframe出现滚动条,你还可以content: ['http://sentsin.com', 'no']
+				});
+				//top.$.jBox('get:${ctx}/sys/menu/treeselect;JSESSIONID=<shiro:principal property="sessionid"/>', {title:'选择菜单', buttons:{'关闭':true}, width:300, height: 350, top:10});
+				//if ($("#menuContent").html()==""){$.get("${ctx}/sys/menu/treeselect", function(data){$("#menuContent").html(data);});}else{$("#menuContent").toggle(100);}
+			});
+		}//-->
+	</script>
+</body>
+</html>