Compare commits

...

15 Commits

Author SHA1 Message Date
thinkgem
e5f5c4cd11 5.4.1 2023-07-24 18:13:47 +08:00
thinkgem
1098757b6a update script 2023-07-21 23:47:28 +08:00
thinkgem
084bfaac92 update version 2023-07-19 19:31:07 +08:00
thinkgem
e7ec4c52e8 国际化完善 2023-07-18 11:55:35 +08:00
thinkgem
02f0e1b300 基础圆角调整 antdv4.0 2023-07-17 12:54:48 +08:00
thinkgem
e7e15fd15e 多语言译文优化 2023-07-17 11:34:38 +08:00
thinkgem
a2d873fee5 将语言名称传递给vue,登录时检测 2023-07-17 10:54:47 +08:00
thinkgem
48a93201e6 update readme 2023-07-11 10:49:47 +08:00
thinkgem
e3e222d7bb update 2023-07-11 10:16:12 +08:00
thinkgem
050aa6e4bf update 2023-07-05 16:23:26 +08:00
thinkgem
a0bfba3abb 权限授权树,如果没有数据的时候可以隐藏 2023-07-05 16:22:55 +08:00
thinkgem
96838f50ad update 2023-07-05 16:21:51 +08:00
thinkgem
0a3c0e4bc8 update 2023-06-28 19:16:44 +08:00
thinkgem
0d24b71fe3 增加参数 web.xssFilterExcludeUri 2023-06-28 19:05:55 +08:00
thinkgem
e658f9e6f6 update 2023-06-28 17:11:18 +08:00
85 changed files with 453 additions and 323 deletions

View File

@@ -214,7 +214,7 @@
5. 任何基于本软件而产生的一切法律纠纷和责任,均于我司无关。
6. 如果你对本软件有改进,希望可以贡献给我们,共同进步。
7. 本项目已申请软件著作权,请尊重开源,感谢阅读。
8. 本版本无用户数限制,无在线人数限制。
8. 无用户数限制,无在线人数限制,放心使用
版权所有:济南卓源软件有限公司

View File

@@ -4,7 +4,7 @@
</p>
<h3 align="center" style="margin:30px 0 30px;font-weight:bold;font-size:30px;">快速开发平台 - Spring Boot</h3>
<p align="center">
<a href="https://jeesite.com/docs/upgrade/" target="__blank"><img alt="JeeSite-V5.3" src="https://img.shields.io/badge/JeeSite-V5.3-success.svg"></a>
<a href="https://jeesite.com/docs/upgrade/" target="__blank"><img alt="JeeSite-V5.4" src="https://img.shields.io/badge/JeeSite-V5.4-success.svg"></a>
<a href="https://spring.io/projects/spring-boot#learn" target="__blank"><img alt="SpringBoot-2.7" src="https://img.shields.io/badge/SpringBoot-2.7-blue.svg"></a>
<a href="https://gitee.com/thinkgem/jeesite4/stargazers" target="__blank"><img alt="star" src="https://gitee.com/thinkgem/jeesite4/badge/star.svg?theme=dark"></a>
<a href="https://gitee.com/thinkgem/jeesite4/members" target="__blank"><img alt="fork" src="https://gitee.com/thinkgem/jeesite4/badge/fork.svg?theme=dark"></a>
@@ -60,12 +60,13 @@ JeeSite 是一个低代码开发平台,具有较高的封装度、扩展性,
* 持久层Apache MyBatis 3.5、Hibernate Validator 6.2、Alibaba Druid 1.2
* 视图层Spring MVC 5.3、Beetl 3.10替换JSP、Bootstrap 3.3、AdminLTE 2.4
* 前端组件jQuery 3.5、jqGrid 4.7、layer 3.5、zTree 3.5、jQuery Validation
* 分离前端版Node.js、TypeScript、Vue3、Vite、Ant Design Vue3、Vue Vben Admin
* 分离前端版Node.js、TypeScript、Vue3、Vite、Ant Design Vue、Vue Vben Admin
* 工作流引擎Flowable 6.6、符合 BPMN 规范、在线流程设计器、中国式流程、退回、撤回、自由流
* Bootstrap 版 支持 IE9 及以上版本及其他所有现代浏览器,如:谷歌、火狐、国产浏览器 等
* Vue3 版 支持现代浏览器,如:谷歌 Chrome 86+、火狐、国产浏览器 等
* 技术选型(详细):<http://jeesite.com/docs/technology/>
* JeeSite Vue<https://gitee.com/thinkgem/jeesite-vue>
* JeeSite Vue 版本<https://gitee.com/thinkgem/jeesite-vue>
* Spring Boot 3.x 版本https://gitee.com/thinkgem/jeesite4/tree/v5.springboot3/
## 更多介绍
@@ -113,7 +114,7 @@ JeeSite 是一个低代码开发平台,具有较高的封装度、扩展性,
### 容器运行
- 拉取 Docker 镜像:
- 拉取 Docker 镜像演示使用JeeSite版本较久
```
docker pull thinkgem/jeesite-web
```
@@ -195,7 +196,7 @@ thinkgem/jeesite-web && docker logs -f jeesite-web
5. 任何基于本软件而产生的一切法律纠纷和责任,均于我司无关。
6. 如果你对本软件有改进,希望可以贡献给我们,共同进步。
7. 本项目已申请软件著作权,请尊重开源,感谢阅读。
8. 本版本无用户数限制,无在线人数限制。
8. 无用户数限制,无在线人数限制,放心使用
## 技术服务与支持

View File

@@ -6,12 +6,15 @@ rem *
rem * Author: ThinkGem@163.com
rem */
echo.
echo [<5B><>Ϣ] <20><><EFBFBD>𹤳̰汾<EFBFBD><EFBFBD>Nexus<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
echo [<5B><>Ϣ] <20><><EFBFBD>𹤳̵<EFBFBD>Maven<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
echo.
%~d0
cd %~dp0
call mvn -v
echo.
cd ..
call mvn clean deploy -Dmaven.test.skip=true -Pdeploy

View File

@@ -4,10 +4,12 @@
# * No deletion without permission, or be held responsible to law.
# *
# * Author: ThinkGem@163.com
# *
# */
echo ""
echo "[信息] 部署工程版本到Nexus服务器。"
echo "[信息] 部署工程到Maven服务器。"
echo ""
mvn -v
echo ""
cd ..

View File

@@ -12,6 +12,9 @@ echo.
%~d0
cd %~dp0
call mvn -v
echo.
cd ..
call mvn clean install -Dmaven.test.skip=true -Ppackage

View File

@@ -4,10 +4,12 @@
# * No deletion without permission, or be held responsible to law.
# *
# * Author: ThinkGem@163.com
# *
# */
echo ""
echo "[信息] 打包Web工程,生成war/jar包文件。"
echo "[信息] 打包安装工程生成jar包文件。"
echo ""
mvn -v
echo ""
cd ..

View File

@@ -6,7 +6,7 @@
<parent>
<groupId>com.jeesite</groupId>
<artifactId>jeesite-parent</artifactId>
<version>5.4.0-SNAPSHOT</version>
<version>5.4.1-SNAPSHOT</version>
<relativePath>../parent/pom.xml</relativePath>
</parent>

View File

@@ -35,9 +35,9 @@ import java.util.regex.Pattern;
* @version 2022-2-17
*/
public class EncodeUtils {
public static final String UTF_8 = "UTF-8";
private static final Logger logger = LoggerFactory.getLogger(EncodeUtils.class);
private static final char[] BASE62 = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz".toCharArray();
@@ -65,7 +65,7 @@ public class EncodeUtils {
public static String encodeBase64(byte[] input) {
return new String(Base64.encodeBase64(input));
}
/**
* Base64编码.
*/
@@ -97,7 +97,7 @@ public class EncodeUtils {
throw ExceptionUtils.unchecked(e);
}
}
/**
* Base64解码.
*/
@@ -152,14 +152,14 @@ public class EncodeUtils {
}
/**
* URL 编码, Encode默认为UTF-8.
* URL 编码, Encode默认为UTF-8.
*/
public static String encodeUrl(String part) {
return encodeUrl(part, EncodeUtils.UTF_8);
}
/**
* URL 编码, Encode默认为UTF-8.
* URL 编码, Encode默认为UTF-8.
*/
public static String encodeUrl(String part, String encoding) {
if (part == null){
@@ -173,14 +173,14 @@ public class EncodeUtils {
}
/**
* URL 解码, Encode默认为UTF-8.
* URL 解码, Encode默认为UTF-8.
*/
public static String decodeUrl(String part) {
return decodeUrl(part, EncodeUtils.UTF_8);
}
/**
* URL 解码, Encode默认为UTF-8.
* URL 解码, Encode默认为UTF-8.
*/
public static String decodeUrl(String part, String encoding) {
if (part == null){
@@ -192,9 +192,9 @@ public class EncodeUtils {
throw ExceptionUtils.unchecked(e);
}
}
/**
* URL 解码(两次), Encode默认为UTF-8.
* URL 解码(两次), Encode默认为UTF-8.
*/
public static String decodeUrl2(String part) {
return decodeUrl(decodeUrl(part));
@@ -207,7 +207,7 @@ public class EncodeUtils {
Pattern.compile("\\s*on[a-z]+\\s*=\\s*(\"[^\"]+\"|'[^']+'|[^\\s]+)\\s*(?=>)", Pattern.CASE_INSENSITIVE),
Pattern.compile("(eval\\((.*?)\\)|xpression\\((.*?)\\))", Pattern.CASE_INSENSITIVE),
Pattern.compile("^(javascript:|vbscript:)", Pattern.CASE_INSENSITIVE)
);
);
/**
* XSS 非法字符过滤,内容以<!--HTML-->开头的用以下规则(保留标签)
@@ -216,12 +216,16 @@ public class EncodeUtils {
public static String xssFilter(String text) {
return xssFilter(text, null);
}
/**
* XSS 非法字符过滤,内容以<!--HTML-->开头的用以下规则(保留标签)
* @author ThinkGem
*/
public static String xssFilter(String text, HttpServletRequest request) {
request = (request != null ? request : ServletUtils.getRequest());
if (request != null && StringUtils.containsAny(request.getRequestURI(), ServletUtils.XSS_FILE_EXCLUDE_URI)) {
return text;
}
String oriValue = StringUtils.trim(text);
if (text != null){
String value = oriValue;
@@ -232,39 +236,37 @@ public class EncodeUtils {
}
}
// 如果开始不是HTMLXMLJOSN格式则再进行HTML的 "、<、> 转码。
if (!StringUtils.startsWithIgnoreCase(value, "<!--HTML-->") // HTML
&& !StringUtils.startsWithIgnoreCase(value, "<?xml ") // XML
&& !StringUtils.contains(value, "id=\"FormHtml\"") // JFlow
if (!StringUtils.startsWithIgnoreCase(value, "<!--HTML-->") // HTML
&& !StringUtils.startsWithIgnoreCase(value, "<?xml ") // XML
&& !StringUtils.contains(value, "id=\"FormHtml\"") // JFlow
&& !(StringUtils.startsWith(value, "{") && StringUtils.endsWith(value, "}")) // JSON Object
&& !(StringUtils.startsWith(value, "[") && StringUtils.endsWith(value, "]")) // JSON Array
&& !(StringUtils.containsAny((request != null ? request : ServletUtils.getRequest())
.getRequestURI(), "/ureport/", "/visual/")) // UReport、Visual
){
){
StringBuilder sb = new StringBuilder();
for (int i = 0; i < value.length(); i++) {
char c = value.charAt(i);
switch (c) {
case '>':
sb.append("");
break;
case '<':
sb.append("");
break;
case '\'':
sb.append("");
break;
case '\"':
sb.append("");
break;
// case '&':
// sb.append("");
// break;
// case '#':
// sb.append("");
// break;
default:
sb.append(c);
break;
case '>':
sb.append("");
break;
case '<':
sb.append("");
break;
case '\'':
sb.append("");
break;
case '\"':
sb.append("");
break;
// case '&':
// sb.append("");
// break;
// case '#':
// sb.append("");
// break;
default:
sb.append(c);
break;
}
}
value = sb.toString();
@@ -277,12 +279,12 @@ public class EncodeUtils {
}
return null;
}
// 预编译SQL过滤正则表达式
private static Pattern sqlPattern = Pattern.compile(
"(?:')|(?:--)|(/\\*(?:.|[\\n\\r])*?\\*/)|((extractvalue|updatexml|if|mid|database|rand|user)([\\s]*?)\\()|"
+ "(\\b(select|update|and|or|delete|insert|trancate|char|into|substr|ascii|declare|exec|count|master|into|"
+ "drop|execute|case when|sleep|union|load_file)\\b)",
+ "(\\b(select|update|and|or|delete|insert|trancate|char|into|substr|ascii|declare|exec|count|master|into|"
+ "drop|execute|case when|sleep|union|load_file)\\b)",
Pattern.CASE_INSENSITIVE);
private static Pattern orderByPattern = Pattern.compile("[a-z0-9_\\.\\, ]*", Pattern.CASE_INSENSITIVE);
@@ -293,6 +295,7 @@ public class EncodeUtils {
public static String sqlFilter(String text){
return sqlFilter(text, "common");
}
/**
* SQL过滤防止注入传入参数输入有select相关代码替换空。
* @author ThinkGem
@@ -319,7 +322,7 @@ public class EncodeUtils {
}
return null;
}
// public static void main(String[] args) {
// xssFilter("1 你好 <script>alert(document.cookie)</script>我还在。");
// xssFilter("2 你好 <strong>加粗文字</strong>我还在。");
@@ -353,5 +356,5 @@ public class EncodeUtils {
// sqlFilter("5 if(1=2,1,SLEEP(10)), if(mid(database(),{},1)=\\\"{}\\\",a.id,a.login_name)", "orderBy");
// sqlFilter("6 a.audit_result asc, b.audit_result2 desc, b.AuditResult3 desc", "orderBy");
// }
}

View File

@@ -40,9 +40,10 @@ public class PropertyLoader implements org.springframework.boot.env.PropertySour
if (!isLoadJeeSitePropertySource) {
isLoadJeeSitePropertySource = true;
try {
ParserConfig.getGlobalInstance().setSafeMode(true); // 开启 FastJSON 安全模式
// 默认开启 FastJSON 1.x 的,安全模式
ParserConfig.getGlobalInstance().setSafeMode(true);
} catch (Exception ignored) {
// 兼容 fastjson2 的调用,不返回异常
// 兼容 FastJSON 2.x 的调用,忽略异常
}
Properties properties = PropertiesUtils.getInstance().getProperties();
propertySources.add(new OriginTrackedMapPropertySource("jeesite", properties));

View File

@@ -38,6 +38,9 @@ public class ServletUtils {
private static final String[] STATIC_FILE = StringUtils.splitComma(PROPS.getProperty("web.staticFile"));
private static final String[] STATIC_FILE_EXCLUDE_URI = StringUtils.splitComma(PROPS.getProperty("web.staticFileExcludeUri"));
// XSS 过滤器要排除的URI地址
public static final String[] XSS_FILE_EXCLUDE_URI = StringUtils.splitComma(PROPS.getProperty("web.xssFilterExcludeUri"));
// AJAX 请求参数和请求头名
public static final String AJAX_PARAM_NAME = PROPS.getProperty("web.ajaxParamName", "__ajax");
public static final String AJAX_HEADER_NAME = PROPS.getProperty("web.ajaxHeaderName", "x-ajax");
@@ -125,12 +128,8 @@ public class ServletUtils {
e.printStackTrace();
}
}
if (STATIC_FILE_EXCLUDE_URI != null){
for (String s : STATIC_FILE_EXCLUDE_URI){
if (StringUtils.contains(uri, s)){
return false;
}
}
if (StringUtils.containsAny(uri, STATIC_FILE_EXCLUDE_URI)) {
return false;
}
if (StringUtils.endsWithAny(uri, STATIC_FILE)){
return true;

View File

@@ -72,7 +72,7 @@ html #layuicss-laydate{display: none; position: absolute; width: 1989px;}
.layui-laydate-content{position: relative; padding: 5px; -moz-user-select: none; -webkit-user-select: none; -ms-user-select: none;}
.layui-laydate-content table{border-collapse: collapse; border-spacing: 0;}
.layui-laydate-content th,
.layui-laydate-content td{width: 36px; height: 30px; padding: 5px; text-align: center;}
.layui-laydate-content td{width: 36px; height: 30px; padding: 5px; text-align: center; border-radius: 4px;}
.layui-laydate-content th{font-weight: 400;}
.layui-laydate-content td{position: relative; cursor: pointer;}
.laydate-day-mark{position: absolute; left: 0; top: 0; width: 100%; line-height: 30px; font-size: 12px; overflow: hidden;}
@@ -111,7 +111,7 @@ html #layuicss-laydate{display: none; position: absolute; width: 1989px;}
/* 默认简约主题 */
.layui-laydate, .layui-laydate-hint{border: 1px solid #d2d2d2; box-shadow: 0 2px 4px rgba(0,0,0,.12); background-color: #fff; color: #666;}
.layui-laydate, .layui-laydate-hint{border: 1px solid #d2d2d2; box-shadow: 0 2px 4px rgba(0,0,0,.12); background-color: #fff; color: #666; border-radius: 4px;}
.layui-laydate-header{border-bottom: 1px solid #e2e2e2;}
.layui-laydate-header i:hover,
.layui-laydate-header span:hover{color: #08c;}

View File

@@ -3,7 +3,7 @@ html #layuicss-layer{display:none;position:absolute;width:1989px;}
.layui-layer-shade, .layui-layer{position:fixed;_position:absolute;pointer-events:auto;}
.layui-layer-shade{top:0;left:0;width:100%;height:100%;_height:expression(document.body.offsetHeight+"px");}
.layui-layer{-webkit-overflow-scrolling:touch;}
.layui-layer{top:150px;left:0;margin:0;padding:0;background-color:#fff;-webkit-background-clip:content;border-radius:3px;box-shadow:1px 1px 50px rgba(0,0,0,.3);}
.layui-layer{top:150px;left:0;margin:0;padding:0;background-color:#fff;-webkit-background-clip:content;border-radius:8px;box-shadow:1px 1px 50px rgba(0,0,0,.3);}
.layui-layer-close{position:absolute;}
.layui-layer-content{position:relative;overflow:hidden;}
.layui-layer-border{border:1px solid #B2B2B2;border:1px solid rgba(0,0,0,.1);box-shadow:1px 1px 5px rgba(0,0,0,.2);}
@@ -35,7 +35,7 @@ html #layuicss-layer{display:none;position:absolute;width:1989px;}
@keyframes layer-fadeIn{0%{opacity:0}100%{opacity:1}}.layer-anim-05{-webkit-animation-name:layer-fadeIn;animation-name:layer-fadeIn}
@-webkit-keyframes layer-shake{0%,100%{-webkit-transform:translateX(0);transform:translateX(0)}10%,30%,50%,70%,90%{-webkit-transform:translateX(-10px);transform:translateX(-10px)}20%,40%,60%,80%{-webkit-transform:translateX(10px);transform:translateX(10px)}}@keyframes layer-shake{0%,100%{-webkit-transform:translateX(0);-ms-transform:translateX(0);transform:translateX(0)}10%,30%,50%,70%,90%{-webkit-transform:translateX(-10px);-ms-transform:translateX(-10px);transform:translateX(-10px)}20%,40%,60%,80%{-webkit-transform:translateX(10px);-ms-transform:translateX(10px);transform:translateX(10px)}}.layer-anim-06{-webkit-animation-name:layer-shake;animation-name:layer-shake}@-webkit-keyframes fadeIn{0%{opacity:0}100%{opacity:1}}
.layui-layer-title{padding:0 80px 0 20px;height:50px;line-height:50px;border-bottom:1px solid #F0F0F0;font-size:14px;color:#333;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;border-radius:2px 2px 0 0;}
.layui-layer-title{padding:0 80px 0 20px;height:50px;line-height:50px;border-bottom:1px solid #F0F0F0;font-size:14px;color:#333;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;border-radius:8px 8px 0 0;}
.layui-layer-setwin{position:absolute;right:20px;*right:0;top:20px;font-size:0;line-height:initial;}
.layui-layer-setwin a{position:relative;width:16px;height:16px;margin-left:19px;font-size:12px;_overflow:hidden;}
.layui-layer-setwin .layui-layer-min{display:none!important}
@@ -51,7 +51,7 @@ html #layuicss-layer{display:none;position:absolute;width:1989px;}
.layui-layer-setwin .layui-layer-close2:hover{ background-position:-180px -31px;}
.layui-layer-btn{text-align:right;padding:0 15px 12px;pointer-events:auto;user-select:none;-webkit-user-select:none;}
.layui-layer-btn a{height:28px;line-height:28px;margin:5px 5px 0;padding:0 15px;border:1px solid #dedede;background-color:#fff;color:#333;border-radius:3px;font-weight:400;cursor:pointer;text-decoration:none;}
.layui-layer-btn a{height:28px;line-height:28px;margin:5px 5px 0;padding:0 15px;border:1px solid #dedede;background-color:#fff;color:#333;border-radius:8px;font-weight:400;cursor:pointer;text-decoration:none;}
.layui-layer-btn a:hover{opacity:0.9;text-decoration:none;}
.layui-layer-btn a:active{opacity:0.8;}
.layui-layer-btn .layui-layer-btn0{border-color:#1E9FFF;background-color:#1E9FFF;color:#fff;}
@@ -75,14 +75,14 @@ html #layuicss-layer{display:none;position:absolute;width:1989px;}
.layui-layer-page .layui-layer-content{position:relative;overflow:auto;}
.layui-layer-page .layui-layer-btn,.layui-layer-iframe .layui-layer-btn{padding-top:10px;}
.layui-layer-nobg{background:none;}
.layui-layer-iframe iframe{display:block;width:100%;border-radius:3px;}
.layui-layer-iframe iframe{display:block;width:100%;border-radius:8px;}
.layui-layer-loading{border-radius:100%;background:none; box-shadow:none; border:none;}
.layui-layer-loading .layui-layer-content{width:60px;height:24px;background:url(loading-0.gif) no-repeat;}
.layui-layer-loading .layui-layer-loading1{width:37px;height:37px;background:url(loading-1.gif) no-repeat;}
.layui-layer-loading .layui-layer-loading2, .layui-layer-ico16{width:32px;height:32px;background:url(loading-2.gif) no-repeat;}
.layui-layer-tips{background:none;box-shadow:none;border:none;}
.layui-layer-tips .layui-layer-content{position:relative;overflow:visible;line-height:22px;min-width:12px;padding:8px 15px;font-size:12px;_float:left;border-radius:3px;box-shadow:1px 1px 3px rgba(0,0,0,.2);background-color:#000;color:#fff;}
.layui-layer-tips .layui-layer-content{position:relative;overflow:visible;line-height:22px;min-width:12px;padding:8px 15px;font-size:12px;_float:left;border-radius:8px;box-shadow:1px 1px 3px rgba(0,0,0,.2);background-color:#000;color:#fff;}
.layui-layer-tips .layui-layer-close{right:-2px;top:-1px;}
.layui-layer-tips i.layui-layer-TipsG{ position:absolute; width:0;height:0;border-width:8px;border-color:transparent;border-style:dashed;*overflow:hidden;}
.layui-layer-tips i.layui-layer-TipsT, .layui-layer-tips i.layui-layer-TipsB{left:5px;border-right-style:solid;border-right-color:#000;}
@@ -148,7 +148,7 @@ html #layuicss-layer{display:none;position:absolute;width:1989px;}
.layui-layer-page .layui-layer-content .form-file{padding-top:4px;}
.layui-layer-page .layui-layer-btn, .layui-layer-iframe .layui-layer-btn {padding-top:3px;padding-bottom:10px;}
.layui-layer-btn .layui-layer-btn0{border-color:#1e5edb;background-color:#1e5edb;}
.layui-layer-btn a {height:auto;padding:1px 14px;font-size:14px;background-color:#f4f4f4;}
.layui-layer-btn a {height:auto;padding:1px 12px;margin-right:4px;font-size:14px;background-color:#f4f4f4;}
.layui-layer.toast-top-full-width {min-width:60%;}
.skin-dark .layui-layer {background:#1a1a1a;color:#ddd;}

View File

@@ -6,12 +6,15 @@ rem *
rem * Author: ThinkGem@163.com
rem */
echo.
echo [<5B><>Ϣ] <20><><EFBFBD>𹤳̰汾<EFBFBD><EFBFBD>Nexus<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
echo [<5B><>Ϣ] <20><><EFBFBD>𹤳̵<EFBFBD>Maven<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
echo.
%~d0
cd %~dp0
call mvn -v
echo.
cd ..
call mvn clean deploy -Dmaven.test.skip=true -Pdeploy

View File

@@ -4,10 +4,12 @@
# * No deletion without permission, or be held responsible to law.
# *
# * Author: ThinkGem@163.com
# *
# */
echo ""
echo "[信息] 部署工程版本到Nexus服务器。"
echo "[信息] 部署工程到Maven服务器。"
echo ""
mvn -v
echo ""
cd ..

View File

@@ -12,6 +12,9 @@ echo.
%~d0
cd %~dp0
call mvn -v
echo.
cd ..
call mvn clean install -Dmaven.test.skip=true -Ppackage

View File

@@ -4,10 +4,12 @@
# * No deletion without permission, or be held responsible to law.
# *
# * Author: ThinkGem@163.com
# *
# */
echo ""
echo "[信息] 打包Web工程,生成war/jar包文件。"
echo "[信息] 打包安装工程生成jar包文件。"
echo ""
mvn -v
echo ""
cd ..

View File

@@ -6,7 +6,7 @@
<parent>
<groupId>com.jeesite</groupId>
<artifactId>jeesite-parent</artifactId>
<version>5.4.0-SNAPSHOT</version>
<version>5.4.1-SNAPSHOT</version>
<relativePath>../../parent/pom.xml</relativePath>
</parent>

View File

@@ -9,4 +9,5 @@
5.3.0
5.3.1
5.3.2
5.4.0
5.4.0
5.4.1

View File

@@ -6,12 +6,15 @@ rem *
rem * Author: ThinkGem@163.com
rem */
echo.
echo [<5B><>Ϣ] <20><><EFBFBD>𹤳̰汾<EFBFBD><EFBFBD>Nexus<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
echo [<5B><>Ϣ] <20><><EFBFBD>𹤳̵<EFBFBD>Maven<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
echo.
%~d0
cd %~dp0
call mvn -v
echo.
cd ..
call mvn clean deploy -Dmaven.test.skip=true -Pdeploy

View File

@@ -4,10 +4,12 @@
# * No deletion without permission, or be held responsible to law.
# *
# * Author: ThinkGem@163.com
# *
# */
echo ""
echo "[信息] 部署工程版本到Nexus服务器。"
echo "[信息] 部署工程到Maven服务器。"
echo ""
mvn -v
echo ""
cd ..

View File

@@ -12,6 +12,9 @@ echo.
%~d0
cd %~dp0
call mvn -v
echo.
cd ..
call mvn clean install -Dmaven.test.skip=true -Ppackage

View File

@@ -4,10 +4,12 @@
# * No deletion without permission, or be held responsible to law.
# *
# * Author: ThinkGem@163.com
# *
# */
echo ""
echo "[信息] 打包Web工程,生成war/jar包文件。"
echo "[信息] 打包安装工程生成jar包文件。"
echo ""
mvn -v
echo ""
cd ..

View File

@@ -6,7 +6,7 @@
<parent>
<groupId>com.jeesite</groupId>
<artifactId>jeesite-parent</artifactId>
<version>5.4.0-SNAPSHOT</version>
<version>5.4.1-SNAPSHOT</version>
<relativePath>../../parent/pom.xml</relativePath>
</parent>

View File

@@ -4,18 +4,16 @@
*/
package com.jeesite.modules.cms.service;
import java.io.IOException;
import java.util.List;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import com.beust.jcommander.internal.Lists;
import com.jeesite.common.collect.ListUtils;
import com.jeesite.modules.cms.entity.FileTemplete;
import com.jeesite.modules.cms.entity.Site;
import com.jeesite.modules.cms.utils.CmsUtils;
import com.jeesite.modules.cms.utils.FileTempleteUtils;
import com.jeesite.modules.sys.entity.DictData;
import org.springframework.stereotype.Service;
import java.io.IOException;
import java.util.List;
/**
* 模版文件Service
@@ -36,7 +34,7 @@ public class FileTempleteService {
* @param prefix
*/
public List<DictData> getTempleteContentDict(String prefix) throws IOException {
List<DictData> listSite = Lists.newArrayList();
List<DictData> listSite = ListUtils.newArrayList();
String solutionPath = CmsUtils.getSite(Site.getCurrentSiteCode()).getSolutionPath();
List<FileTemplete> tplList = FileTempleteUtils.getFileTempleteListByPath(solutionPath);
for (FileTemplete tpl : tplList) {

View File

@@ -17,4 +17,5 @@
5.3.0
5.3.1
5.3.2
5.4.0
5.4.0
5.4.1

View File

@@ -6,12 +6,15 @@ rem *
rem * Author: ThinkGem@163.com
rem */
echo.
echo [<5B><>Ϣ] <20><><EFBFBD>𹤳̰汾<EFBFBD><EFBFBD>Nexus<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
echo [<5B><>Ϣ] <20><><EFBFBD>𹤳̵<EFBFBD>Maven<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
echo.
%~d0
cd %~dp0
call mvn -v
echo.
cd ..
call mvn clean deploy -Dmaven.test.skip=true -Pdeploy

View File

@@ -4,10 +4,12 @@
# * No deletion without permission, or be held responsible to law.
# *
# * Author: ThinkGem@163.com
# *
# */
echo ""
echo "[信息] 部署工程版本到Nexus服务器。"
echo "[信息] 部署工程到Maven服务器。"
echo ""
mvn -v
echo ""
cd ..

View File

@@ -12,6 +12,9 @@ echo.
%~d0
cd %~dp0
call mvn -v
echo.
cd ..
call mvn clean install -Dmaven.test.skip=true -Ppackage

View File

@@ -4,10 +4,12 @@
# * No deletion without permission, or be held responsible to law.
# *
# * Author: ThinkGem@163.com
# *
# */
echo ""
echo "[信息] 打包Web工程,生成war/jar包文件。"
echo "[信息] 打包安装工程生成jar包文件。"
echo ""
mvn -v
echo ""
cd ..

View File

@@ -6,7 +6,7 @@
<parent>
<groupId>com.jeesite</groupId>
<artifactId>jeesite-parent</artifactId>
<version>5.4.0-SNAPSHOT</version>
<version>5.4.1-SNAPSHOT</version>
<relativePath>../../parent/pom.xml</relativePath>
</parent>

View File

@@ -448,6 +448,7 @@ public class FormFilter extends org.apache.shiro.web.filter.authc.FormAuthentica
data.put("sysCode", session.getAttribute("sysCode"));
data.put("roleCode", session.getAttribute("roleCode"));
data.put("title", Global.getProperty("productName"));
data.put("lang", Global.getLang());
List<Map<String, Object>> roleList = ListUtils.newArrayList();
String desktopUrl = null;
for (Role role : user.getRoleList()){

View File

@@ -4,27 +4,6 @@
*/
package com.jeesite.modules.sys.web;
import java.util.Collection;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
import java.util.Map;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import io.swagger.annotations.Api;
import org.apache.shiro.authz.annotation.RequiresPermissions;
import org.apache.shiro.session.Session;
import org.apache.shiro.subject.PrincipalCollection;
import org.apache.shiro.subject.support.DefaultSubjectContext;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import com.jeesite.common.collect.ListUtils;
import com.jeesite.common.collect.MapUtils;
import com.jeesite.common.config.Global;
@@ -36,6 +15,21 @@ import com.jeesite.common.shiro.session.SessionDAO;
import com.jeesite.common.web.BaseController;
import com.jeesite.modules.sys.utils.SysCacheUtils;
import com.jeesite.modules.sys.utils.UserUtils;
import io.swagger.annotations.Api;
import org.apache.shiro.authz.annotation.RequiresPermissions;
import org.apache.shiro.session.Session;
import org.apache.shiro.subject.PrincipalCollection;
import org.apache.shiro.subject.support.DefaultSubjectContext;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.util.*;
/**
* 在线用户Controller
@@ -66,8 +60,6 @@ public class OnlineController extends BaseController{
/**
* 在线用户列表
* @param request
* @param response
* @param model
*/
@RequiresPermissions("sys:online:view")
@@ -78,8 +70,6 @@ public class OnlineController extends BaseController{
/**
* 在线用户列表数据
* @param request
* @param response
* @author ThinkGem
*/
@RequiresPermissions("sys:online:view")

View File

@@ -645,7 +645,10 @@ web:
# 严格模式(更严格的数据安全验证)
strictMode: false
# 所有请求信息将进行xss过滤这里列出不被xss过滤的地址
xssFilterExcludeUri: /ureport/,/visual/
# 自定义正则表达式验证(主键、登录名)
validator:
id: '[a-zA-Z0-9_\-/#\u4e00-\u9fa5]{0,64}'
@@ -660,7 +663,7 @@ web:
enabled: false
callback: __callback
# 核心模块的Web功能(仅作为微服务时设为false
# 核心模块的Web功能开启(其它微服务时设为false
core:
enabled: true

View File

@@ -30,8 +30,8 @@
消息类型=Message type
消息标题=Message title
消息内容=Message content
业务主键=Key
业务类型=Type
业务主键=Business Key
业务类型=Business Type
接受者信息=Receiver information
接受者账号=Receiver account
接受者姓名=Receiver name

View File

@@ -54,6 +54,7 @@ Java版本=Java version
日志存放路径=Log storage path
上传文件路径=Upload file path
磁盘状态=Disk status
盘符名称=Disk name
盘符路径=Disk path
文件系统=File system
盘符类型=Disk type

View File

@@ -51,6 +51,7 @@ Java版本=Java版
日志存放路径=日誌熟成経路
上传文件路径=文書を掲載し経路
磁盘状态=ディスク状態
盘符名称=盤符名称
盘符路径=盤符経路
文件系统=ファイルシステム
盘符类型=盤符タイプ

View File

@@ -138,6 +138,12 @@
注销=Logout
# =========== 访问日志 ===========
接入日志=Access log
修改日志=Modify log
查询日志=Query log
登录登出=Login logout
日志标题=Log title
请求地址=Request address
日志类型=Type
@@ -157,13 +163,14 @@
近1个周=Nearly 1 week
近1个月=Nearly 1 months
近3个月=Nearly 3 months
按组织查询=By Organization
按岗位查询=By Position
按角色查询=By Role
按用户类型=By User Type
系统登录=System Login
未知操作=Unknown
保存=Save
日志详情=Log Detail
请求数据=Submitted data
操作账号=Operation account
@@ -277,7 +284,7 @@
是否更新已经存在的用户数据=Whether to update existing user data
下载模板=Download template
如果用户编码已经存在,更新这条数据。=Update this data if the user code already exists.
提示仅允许导入“xls”或“xlsx”格式文件=Tip: only 'XLS' or 'XLSX' files are allowed to be imported!
提示仅允许导入“xls”或“xlsx”格式文件=Tip: only 'xls' or 'xlsx' files are allowed to be imported!
文件不正确请选择后缀为“xls”或“xlsx”的文件。=Incorrect file. Please select a file with suffix 'xls' or 'xlsx'.
# =========== 机构管理 ===========
@@ -293,12 +300,6 @@
确认要删除该机构及所有子机构吗?=Are you sure want to delete this organization and sub organization?
新增下级机构=New sub organization
保存机构''{0}''成功=Save the organization ''{0}'' success
该机构包含未停用的子机构!=The organization contains enable sub organization!
停用机构''{0}''成功=Disable organization ''{0}'' success
启用机构''{0}''成功=Enable organization ''{0}'' success
删除机构''{0}''成功=Delete organization ''{0}'' success
上级机构=Parent organization
机构名称=Organization name
机构代码=Organization code
@@ -308,6 +309,12 @@
联系地址=Address
邮政编码=Zip code
保存机构''{0}''成功=Save the organization ''{0}'' success
该机构包含未停用的子机构!=The organization contains enable sub organization!
停用机构''{0}''成功=Disable organization ''{0}'' success
启用机构''{0}''成功=Enable organization ''{0}'' success
删除机构''{0}''成功=Delete organization ''{0}'' success
# =========== 公司管理 ===========
新增公司=New company
@@ -321,19 +328,19 @@
确认要删除该公司及所有子公司吗?=Are you sure want to delete this company and sub company?
新增下级公司=New sub company
上级公司=Parent company
公司名称=Company name
公司代码=Company code
公司全称=Company full name
归属区域=Area
包含机构=Organization
保存公司''{0}''成功=Save the company ''{0}'' success
该公司包含未停用的子公司!=The company contains enable sub company!
停用公司''{0}''成功=Disable company ''{0}'' success
启用公司''{0}''成功=Enable company ''{0}'' success
删除公司''{0}''成功=Delete company ''{0}'' success
上级公司=Parent company
公司名称=Company name
公司编码=Company code
公司全称=Company full name
归属区域=Area
包含机构=Organization
# =========== 岗位管理 ===========
新增岗位=New position
@@ -346,17 +353,18 @@
删除岗位=Delete position
确认要删除该岗位吗?=Are you sure want to delete this position?
岗位名称=Position name
岗位名称已存在=Position already exists
岗位代码=Position code
岗位分类=Position type
关联角色=Role
保存岗位失败,岗位名称''{0}''已存在=Save position failed, position name ''{0}'' already exists
保存岗位''{0}''成功=Save position ''{0}'' success
停用岗位''{0}''成功=Disable position ''{0}'' success
启用岗位''{0}''成功=Enable position ''{0}'' success
删除岗位''{0}''成功=Delete position ''{0}'' success
岗位名称=Position name
岗位名称已存在=Position already exists
岗位编码=Position code
岗位分类=Position type
# =========== 角色管理 ===========
用户类型=User type
@@ -364,11 +372,12 @@
角色分类=Role category
数据范围=Data scope
业务范围=Business scope
桌面地址=Desktop URL
是否可见=Visible
角色编码=Role code
角色名称=Role name
角色名称已存在=Role name already exists
角色分类=Role category
授权功能菜单=Authorization menu
未设置=None
@@ -418,7 +427,7 @@
二级管理员管理数据权限=Secondary administrator manage data permissions
管理数据权限=Manage data permissions
可管理的数据权限=Managed data permissions
可管理的数据权限=Manage data permissions
取消二级管理员身份=Cancel secondary administrator status
确认要取消该用户的二级管理员身份吗?=Are you sure you want to cancel secondary administrator status?
@@ -459,6 +468,7 @@
账号密码审计=Account password audit
菜单权限审计=Menu permission audit
用户权限审计=User privileges audit
菜单权限=Menu permission
全部问题=All Problems
未修改初始密码=The initial password was not changed
@@ -480,6 +490,15 @@
新增菜单=New menu
编辑菜单=Edit menu
停用菜单=Disable menu
确认要停用该菜单吗?=Are you sure want to disable this menu?
启用菜单=Enable menu
确认要启用该菜单吗?=Are you sure want to enable this menu?
删除菜单=Delete menu
确认要删除该菜单及所有子菜单吗?=Are you sure want to delete this menu and sub menu?
新增下级菜单=New sub menu
上级菜单=Parent menu
菜单类型=Menu type
菜单名称=Menu name
@@ -546,6 +565,9 @@
新增参数=New config
编辑参数=Edit config
删除参数=Delete config
确认要删除该参数吗?=Are you sure you want to delete this config?
参数名称=Config name
参数键名=Config key
参数键名已存在=Config key already exists
@@ -553,8 +575,6 @@
参数描述=Config description
清理全部缓存,包括属性文件的配置=Clear all caches, including configuration of properties files
系统参数=System
删除参数=Delete config
确认要删除该参数吗?=Are you sure you want to delete this config?
保存参数成功=Save config successfully
删除参数成功=Delete config successfully
@@ -587,6 +607,7 @@
字典键值=Dictionary key
系统内置=System
字典描述=Description
选项图标=Icon
CSS样式=CSS style
CSS类名=CSS class
新增字典数据=New dictionary data
@@ -608,6 +629,35 @@ CSS类名=CSS class
启用字典成功=Enable dictionary successfully
删除字典成功=Delete dictionary successfully
# =========== 区域管理 ===========
新增区域=New area
编辑区域=Edit area
停用区域=Disable area
确认要停用该区域吗?=Are you sure want to disable this area?
启用区域=Enable area
确认要启用该区域吗?=Are you sure want to enable this area?
删除区域=Delete area
确认要删除该区域及所有子区域吗?=Are you sure want to delete this area and sub area?
新增下级区域=New sub area
上级区域=Parent Area
区域名称=Area name
区域代码=Area code
区域类型=Area type
国家=Country
省份直辖市=Provinces
地市=City
区县=County
保存区域''{0}''成功=Save the area ''{0}'' success
该区域包含未停用的子区域!=The area contains enable sub area!
停用区域''{0}''成功=Disable area ''{0}'' success
启用区域''{0}''成功=Enable area ''{0}'' success
删除区域''{0}''成功=Delete area ''{0}'' success
# =========== 国际化管理 ===========
新增语言=New language
@@ -628,10 +678,10 @@ CSS类名=CSS class
# =========== 在线用户 ===========
操作用户=Operation user
包含3分钟以上未操作的用户=Contains users who have been inactive for more than 3 minutes
查询所有在线=Query all online
包含未登录的用户=Contains unlogged users
包含3分钟以上未操作的用户=Contains users who have been inactive for more than 3 minutes
包含游客用户=Contains visitor users
包含未登录的用户=Contains unlogged users
用户名称=User name
游客=tourists
最后访问=Last visit

View File

@@ -58,7 +58,6 @@
研发工具=開発ツール
用户选择=ユーザー選択
机构选择=事務所選択
公司选择=会社選択
@@ -96,9 +95,6 @@
正在验证登录,请稍候...=登録を行っています...
立即登录=ログイン
注册账号=アカウント作成
忘记密码=パスワードを忘れた
注册账号=アカウントを登録する
忘记密码=パスワードを忘れる
@@ -106,6 +102,7 @@
仪表盘=計器盤
全屏=最大化
切换主题=テーマ切替
个人中心=マイページ
@@ -230,12 +227,6 @@
确认要删除该机构及所有子机构吗?=機構及び子機構を削除します、よろしいですか?
新增下级机构=子機構追加
保存机构''{0}''成功=機構 ''{0}'' 保存成功
该机构包含未停用的子机构!=有効な子機構が含まれています!
停用机构''{0}''成功=機構 ''{0}'' 無効にする処理成功
启用机构''{0}''成功=機構 ''{0}'' 有効にする処理成功
删除机构''{0}''成功=機構 ''{0}'' 削除成功
上级机构=親機構
机构名称=機構名称
机构代码=機構コード
@@ -245,6 +236,12 @@
联系地址=住所
邮政编码=郵便番号
保存机构''{0}''成功=機構 ''{0}'' 保存成功
该机构包含未停用的子机构!=有効な子機構が含まれています!
停用机构''{0}''成功=機構 ''{0}'' 無効にする処理成功
启用机构''{0}''成功=機構 ''{0}'' 有効にする処理成功
删除机构''{0}''成功=機構 ''{0}'' 削除成功
# =========== 公司管理 ===========
新增公司=会社追加
@@ -258,19 +255,19 @@
确认要删除该公司及所有子公司吗?=会社及び子会社を削除します、よろしいですか?
新增下级公司=子会社追加
上级公司=親会社
公司名称=会社名称
公司代码=会社コード
公司全称=会社フルネーム
归属区域=エリア
包含机构=機構
保存公司''{0}''成功=会社 ''{0}'' 保存成功
该公司包含未停用的子公司!=有効な会社が含まれています!
停用公司''{0}''成功=会社 ''{0}'' 無効設定成功
启用公司''{0}''成功=会社 ''{0}'' 有効設定成功
删除公司''{0}''成功=会社 ''{0}'' 削除成功
上级公司=親会社
公司名称=会社名称
公司编码=会社コード
公司全称=会社フルネーム
归属区域=エリア
包含机构=機構
# =========== 岗位管理 ===========
新增岗位=職位追加
@@ -283,17 +280,18 @@
删除岗位=職位削除
确认要删除该岗位吗?=職位を削除します、よろしいですか?
岗位名称=職位名称
岗位名称已存在=職位名称が既に存在します
岗位代码=職位コード
岗位分类=職位分類
关联角色=キャラク
保存岗位失败,岗位名称''{0}''已存在=職位保存失敗。職位名称 ''{0}'' 既に存在します
保存岗位''{0}''成功=職位 ''{0}'' 保存成功
停用岗位''{0}''成功=職位 ''{0}'' 無効設定成功
启用岗位''{0}''成功=職位 ''{0}'' 有効設定成功
删除岗位''{0}''成功=職位 ''{0}'' 削除成功
岗位名称=職位名称
岗位名称已存在=職位名称が既に存在します
岗位编码=職位コード
岗位分类=職位分類
# =========== 角色管理 ===========
用户类型=ユーザータイプ
@@ -305,7 +303,6 @@
角色编码=キャラクターコード
角色名称=キャラクター名
角色名称已存在=キャラクター名が存在する
角色分类=キャラクター分類
授权功能菜单=ライセンス機能メニュー
未设置=未設置
@@ -417,6 +414,7 @@
新增菜单=メニューの追加
编辑菜单=編集メニュー
上级菜单=上級メニュー
菜单类型=メニュータイプ
菜单名称=メニュー名
@@ -483,6 +481,9 @@
新增参数=追加パラメータ
编辑参数=編集パラメータ
删除参数=削除パラメータ
确认要删除该参数吗?=このパラメータを削除することを確認しますか?
参数名称=パラメータ名
参数键名=パラメータキー名
参数键名已存在=パラメータキー名はすでに存在する
@@ -490,8 +491,6 @@
参数描述=パラメータ記述
清理全部缓存,包括属性文件的配置=プロパティファイルの配置を含めてキャッシュ全体をクリアする
系统参数=システムパラメータ
删除参数=削除パラメータ
确认要删除该参数吗?=このパラメータを削除することを確認しますか?
保存参数成功=セーブパラメータ成功
删除参数成功=削除パラメータ成功
@@ -565,10 +564,10 @@ CSS类名=クラス名
# =========== 在线用户 ===========
操作用户=ユーザーを操作する
包含3分钟以上未操作的用户=未操作のユーザを3分以上含む
查询所有在线=全てのオンライン検索
包含未登录的用户=登録のユーザを含む
包含3分钟以上未操作的用户=操作のユーザを3分以上含む
包含游客用户=は観光客ユーザー
包含未登录的用户=未登録のユーザを含む
用户名称=ユーザー名
游客=観光客
最后访问=最後の訪問

View File

@@ -167,7 +167,7 @@ div.edui-box {
overflow: visible;
-webkit-border-radius: 4px;
-moz-border-radius: 4px;
border-radius: 4px;
border-radius: 6px;
}
.edui-editor div{
width:auto;
@@ -285,7 +285,7 @@ div.edui-box {
color: #666;
background-color: #FFF;
padding: 10px;
border-radius: 5px;
/*border-radius: 5px;*/
}
.edui-simple .edui-bubble .edui-shadow {
@@ -2126,3 +2126,15 @@ div.edui-box {
.edui-outline .sectionItem{cursor:pointer;padding:4px;}
.edui-outline .sectionItem:hover{color:#f00;}
.edui-outline .fixTop{position:fixed!important;top:-3px;}
.skin-dark .edui-simple .edui-editor,
.skin-dark .edui-simple .edui-editor-toolbarboxouter,
.skin-dark .edui-simple .edui-toolbar .edui-combox .edui-combox-body,
.skin-dark .edui-simple .edui-popup-content {background: #1a1a1a;border-color:#414141;color:#ddd;}
.skin-dark .edui-simple .edui-toolbar .edui-button .edui-state-hover .edui-button-wrap,
.skin-dark .edui-simple .edui-toolbar .edui-splitbutton .edui-state-hover .edui-splitbutton-body,
.skin-dark .edui-simple .edui-toolbar .edui-menubutton .edui-state-hover .edui-menubutton-body,
.skin-dark .edui-simple .edui-toolbar .edui-splitbutton .edui-state-opened .edui-splitbutton-body,
.skin-dark .edui-simple .edui-toolbar .edui-menubutton .edui-state-opened .edui-menubutton-body,
.skin-dark .edui-simple .edui-toolbar .edui-button .edui-state-checked .edui-button-wrap,
.skin-dark .edui-simple .edui-list .edui-state-hover {background:#4b4a4a;border-color:#414141;color:#ddd;}

View File

@@ -60,13 +60,8 @@
<% } %>
</BasicDrawer>
</template>
<script lang="ts">
export default defineComponent({
name: '${compNamePrefix}Form',
});
</script>
<script lang="ts" setup>
import { defineComponent, ref, computed } from 'vue';
<script lang="ts" setup name="${compNamePrefix}Form">
import { ref, unref, computed } from 'vue';
import { useI18n } from '/@/hooks/web/useI18n';
import { useMessage } from '/@/hooks/web/useMessage';
import { router } from '/@/router';
@@ -107,9 +102,10 @@ for(c in table.columnList){
const { t } = useI18n('${moduleName}${isNotEmpty(subModuleName)?'.'+subModuleName:''}.${className}');
const { showMessage } = useMessage();
const { meta } = unref(router.currentRoute);
const record = ref<${ClassName}>({} as ${ClassName});
const getTitle = computed(() => ({
icon: router.currentRoute.value.meta.icon || 'ant-design:book-outlined',
icon: meta.icon || 'ant-design:book-outlined',
value: record.value.isNewRecord ? t('新增${functionNameSimple}') : t('编辑${functionNameSimple}'),
}));
<% if(toBoolean(table.optionMap['isBpmForm'])){ %>
@@ -607,7 +603,7 @@ for (c in table.columnList){
emit('success', data);
} catch (error: any) {
if (error && error.errorFields) {
showMessage(t('您填写的信息有误,请根据提示修正。'));
showMessage(t('common.validateError'));
}
console.log('error', error);
} finally {

View File

@@ -108,7 +108,7 @@
emit('success');
} catch (error: any) {
if (error && error.errorFields) {
showMessage(t('您填写的信息有误,请根据提示修正。'));
showMessage(t('common.validateError'));
}
console.log('error', error);
} finally {

View File

@@ -27,13 +27,8 @@
<ListView :treeCode="treeCode" />
</PageWrapper>
</template>
<script lang="ts">
export default defineComponent({
name: '${compNamePrefix}Index',
});
</script>
<script lang="ts" setup>
import { defineComponent, ref } from 'vue';
<script lang="ts" setup name="${compNamePrefix}Index">
import { ref } from 'vue';
import { useI18n } from '/@/hooks/web/useI18n';
import { PageWrapper } from '/@/components/Page';
import { BasicTree } from '/@/components/Tree';

View File

@@ -23,7 +23,7 @@
<a-button @click="expandAll" :title="t('展开一级')">
<Icon icon="bi:chevron-double-down" /> {{ t('展开') }}
</a-button>
<a-button @click="collapseAll" :title="t('展开全部')">
<a-button @click="collapseAll" :title="t('折叠全部')">
<Icon icon="bi:chevron-double-up" /> {{ t('折叠') }}
</a-button>
<% } %>
@@ -90,13 +90,8 @@ if(table.isTreeEntity){
<% } %>
</div>
</template>
<script lang="ts">
export default defineComponent({
name: '${compNamePrefix}List',
});
</script>
<script lang="ts" setup>
import { defineComponent<% if(table.isTreeEntity || isNotBlank(table.optionMap['leftTreeRightTableFk'])){ %>, watch<% }
<script lang="ts" setup name="${compNamePrefix}List">
import { unref<% if(table.isTreeEntity || isNotBlank(table.optionMap['leftTreeRightTableFk'])){ %>, watch<% }
%><% if(table.isTreeEntity){ %>, nextTick<% } %> } from 'vue';
import { useI18n } from '/@/hooks/web/useI18n';
import { useMessage } from '/@/hooks/web/useMessage';
@@ -154,9 +149,10 @@ for(c in table.columnList){
<% } %>
const { t } = useI18n('${moduleName}${isNotEmpty(subModuleName)?'.'+subModuleName:''}.${className}');
const { showMessage } = useMessage();
const { meta } = unref(router.currentRoute);
const getTitle = {
icon: router.currentRoute.value.meta.icon || 'ant-design:book-outlined',
value: router.currentRoute.value.meta.title || t('${functionNameSimple}管理'),
icon: meta.icon || 'ant-design:book-outlined',
value: meta.title || t('${functionNameSimple}管理'),
};
const searchForm: FormProps = {
@@ -363,7 +359,7 @@ for(c in table.columnList){
<% if(table.isTreeEntity){ %>
{
icon: 'fluent:add-circle-24-regular',
title: t('新下级${functionNameSimple}'),
title: t('新下级${functionNameSimple}'),
onClick: handleForm.bind(this, {
parentCode: record.id,
parentName: record.${table.treeViewNameAttrName},

View File

@@ -14,12 +14,15 @@ rem *
rem * Author: ThinkGem@163.com
rem */
echo.
echo [信息] 部署工程版本到Nexus服务器。
echo [信息] 部署工程到Maven服务器。
echo.
%~d0
cd %~dp0
call mvn -v
echo.
cd ..
call mvn clean deploy -Dmaven.test.skip=true -Pdeploy

View File

@@ -11,10 +11,12 @@
# * No deletion without permission, or be held responsible to law.
# *
# * Author: ThinkGem@163.com
# *
# */
echo ""
echo "[信息] 部署工程版本到Nexus服务器。"
echo "[信息] 部署工程到Maven服务器。"
echo ""
mvn -v
echo ""
cd ..

View File

@@ -20,6 +20,9 @@ echo.
%~d0
cd %~dp0
call mvn -v
echo.
cd ..
call mvn clean install -Dmaven.test.skip=true -Ppackage

View File

@@ -11,10 +11,12 @@
# * No deletion without permission, or be held responsible to law.
# *
# * Author: ThinkGem@163.com
# *
# */
echo ""
echo "[信息] 打包Web工程,生成war/jar包文件。"
echo "[信息] 打包安装工程生成jar包文件。"
echo ""
mvn -v
echo ""
cd ..

View File

@@ -14,12 +14,15 @@ rem *
rem * Author: ThinkGem@163.com
rem */
echo.
echo [信息] 部署工程版本到Nexus服务器。
echo [信息] 部署工程到Maven服务器。
echo.
%~d0
cd %~dp0
call mvn -v
echo.
cd ..
call mvn clean deploy -Dmaven.test.skip=true -Pdeploy

View File

@@ -11,10 +11,12 @@
# * No deletion without permission, or be held responsible to law.
# *
# * Author: ThinkGem@163.com
# *
# */
echo ""
echo "[信息] 部署工程版本到Nexus服务器。"
echo "[信息] 部署工程到Maven服务器。"
echo ""
mvn -v
echo ""
cd ..

View File

@@ -20,6 +20,9 @@ echo.
%~d0
cd %~dp0
call mvn -v
echo.
cd ..
call mvn clean install -Dmaven.test.skip=true -Ppackage

View File

@@ -11,10 +11,12 @@
# * No deletion without permission, or be held responsible to law.
# *
# * Author: ThinkGem@163.com
# *
# */
echo ""
echo "[信息] 打包Web工程,生成war/jar包文件。"
echo "[信息] 打包安装工程生成jar包文件。"
echo ""
mvn -v
echo ""
cd ..

View File

@@ -20,6 +20,9 @@ echo.
%~d0
cd %~dp0
call mvn -v
echo.
cd ..
call mvn clean package spring-boot:repackage -Dmaven.test.skip=true -U

View File

@@ -11,12 +11,14 @@
# * No deletion without permission, or be held responsible to law.
# *
# * Author: ThinkGem@163.com
# *
# */
echo ""
echo "[信息] 打包Web工程生成war/jar包文件。"
echo ""
mvn -v
echo ""
cd ..
mvn clean package spring-boot:repackage -Dmaven.test.skip=true -U

View File

@@ -30,10 +30,6 @@
<finalName>web</finalName><!-- war包的名称 -->
<start-class>com.jeesite.modules.${@StringUtils.cap(module.moduleCode)}Application</start-class>
<!-- environment setting -->
<eclipse-plugin-download-sources>false</eclipse-plugin-download-sources>
<eclipse-plugin-download-javadocs>false</eclipse-plugin-download-javadocs>
<!-- docker setting -->
<docker.run.port>8989:8989</docker.run.port>
@@ -103,11 +99,7 @@
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-eclipse-plugin</artifactId>
<configuration>
<downloadSources>\${eclipse-plugin-download-sources}</downloadSources>
<downloadJavadocs>\${eclipse-plugin-download-javadocs}</downloadJavadocs>
<wtpContextName>\${finalName}</wtpContextName>
<wtpversion>2.0</wtpversion>
<jeeversion>6.0</jeeversion>
</configuration>
</plugin>

View File

@@ -3,7 +3,7 @@
<div class="box box-main">
<div class="box-header">
<div class="box-title">
<i class="fa icon-map"></i> ${area.isNewRecord ? '新增区域' : '编辑区域'}
<i class="fa icon-map"></i> ${text(area.isNewRecord ? '新增区域' : '编辑区域')}
</div>
<div class="box-tools pull-right">
<button type="button" class="btn btn-box-tool" data-widget="collapse"><i class="fa fa-minus"></i></button>
@@ -11,13 +11,13 @@
</div>
<#form:form id="inputForm" model="${area}" action="${ctx}/sys/area/save" method="post" class="form-horizontal">
<div class="box-body">
<div class="form-unit">基本信息</div>
<div class="form-unit">${text('基本信息')}</div>
<div class="row">
<div class="col-md-6 col-xs-9">
<div class="form-group">
<label class="control-label col-sm-4">上级区域:</label>
<label class="control-label col-sm-4">${text('上级区域')}</label>
<div class="col-sm-8">
<#form:treeselect id="parent" title="上级区域"
<#form:treeselect id="parent" title="${text('上级区域')}"
path="parent.id" labelPath="parent.areaName"
url="${ctx}/sys/area/treeData?excludeCode=${area.id}"
class="" allowClear="true" canSelectRoot="true" canSelectParent="true"/>
@@ -29,7 +29,7 @@
<div class="col-md-6 col-xs-9">
<div class="form-group">
<label class="control-label col-sm-4" title="">
<span class="required ">*</span> 区域代码:<i class="fa icon-question hide"></i></label>
<span class="required ">*</span> ${text('区域代码')}<i class="fa icon-question hide"></i></label>
<div class="col-sm-8">
<#form:hidden path="isNewRecord"/>
<#form:input path="areaCode" maxlength="100" readonly="${!area.isNewRecord}" class="form-control required abc"/>
@@ -41,7 +41,7 @@
<div class="col-md-6 col-xs-9">
<div class="form-group">
<label class="control-label col-sm-4" title="">
<span class="required ">*</span> 区域名称:<i class="fa icon-question hide"></i></label>
<span class="required ">*</span> ${text('区域名称')}<i class="fa icon-question hide"></i></label>
<div class="col-sm-8">
<#form:input path="areaName" maxlength="100" class="form-control required "/>
</div>
@@ -52,7 +52,7 @@
<div class="col-md-6 col-xs-9">
<div class="form-group">
<label class="control-label col-sm-4" title="">
<span class="required ">*</span> 区域类型:<i class="fa icon-question hide"></i></label>
<span class="required ">*</span> ${text('区域类型')}<i class="fa icon-question hide"></i></label>
<div class="col-sm-8">
<#form:radio path="areaType" dictType="sys_area_type" class="form-control required" />
</div>
@@ -63,7 +63,7 @@
<div class="col-md-6 col-xs-9">
<div class="form-group">
<label class="control-label col-sm-4" title="">
<span class="required ">*</span> 排序号<i class="fa icon-question hide"></i></label>
<span class="required ">*</span> ${text('排序号')}<i class="fa icon-question hide"></i></label>
<div class="col-sm-8">
<#form:input path="treeSort" maxlength="9" class="form-control required digits"/>
</div>
@@ -74,7 +74,7 @@
<div class="col-xs-12">
<div class="form-group">
<label class="control-label col-md-2 col-sm-3" title="">
<span class="required hide">*</span> 备注信息:<i class="fa icon-question hide"></i></label>
<span class="required hide">*</span> ${text('备注信息')}<i class="fa icon-question hide"></i></label>
<div class="col-sm-8">
<#form:textarea path="remarks" rows="4" maxlength="500" class="form-control "/>
</div>
@@ -86,9 +86,9 @@
<div class="row">
<div class="col-sm-offset-2 col-sm-10">
<% if (hasPermi('sys:area:edit')){ %>
<button type="submit" class="btn btn-sm btn-primary" id="btnSubmit"><i class="fa fa-check"></i> 保 存</button>&nbsp;
<button type="submit" class="btn btn-sm btn-primary" id="btnSubmit"><i class="fa fa-check"></i> ${text('保 存')}</button>&nbsp;
<% } %>
<button type="button" class="btn btn-sm btn-default" id="btnCancel" onclick="js.closeCurrentTabPage()"><i class="fa fa-reply-all"></i> 关 闭</button>
<button type="button" class="btn btn-sm btn-default" id="btnCancel" onclick="js.closeCurrentTabPage()"><i class="fa fa-reply-all"></i> ${text('关 闭')}</button>
</div>
</div>
</div>

View File

@@ -3,15 +3,15 @@
<div class="box box-main">
<div class="box-header">
<div class="box-title">
<i class="fa icon-map"></i> 行政区划
<i class="fa icon-map"></i> ${text('行政区划')}
</div>
<div class="box-tools pull-right">
<a href="#" class="btn btn-default" id="btnSearch" title="查询"><i class="fa fa-filter"></i> 查询</a>
<a href="#" class="btn btn-default" id="btnRefreshTree" title="刷新"><i class="fa fa-refresh"></i> 刷新</a>
<a href="#" class="btn btn-default" id="btnExpandTreeNode" title="展开一级"><i class="fa fa-angle-double-down"></i> 展开</a>
<a href="#" class="btn btn-default" id="btnCollapseTreeNode" title="折叠全部"><i class="fa fa-angle-double-up"></i> 折叠</a>
<a href="#" class="btn btn-default" id="btnSearch" title="查询"><i class="fa fa-filter"></i> ${text('查询')}</a>
<a href="#" class="btn btn-default" id="btnRefreshTree" title="刷新"><i class="fa fa-refresh"></i> ${text('刷新')}</a>
<a href="#" class="btn btn-default" id="btnExpandTreeNode" title="展开一级"><i class="fa fa-angle-double-down"></i> ${text('展开')}</a>
<a href="#" class="btn btn-default" id="btnCollapseTreeNode" title="折叠全部"><i class="fa fa-angle-double-up"></i> ${text('折叠')}</a>
<% if(hasPermi('sys:area:edit')){ %>
<a href="${ctx}/sys/area/form" class="btn btn-default btnTool" title="新增区域"><i class="fa fa-plus"></i> 新增</a>
<a href="${ctx}/sys/area/form" class="btn btn-default btnTool" title="${text('新增区域')}"><i class="fa fa-plus"></i> ${text('新增')}</a>
<% } %>
<a href="#" class="btn btn-default" id="btnSetting" title="${text('设置')}"><i class="fa fa-navicon"></i></a>
</div>
@@ -20,26 +20,26 @@
<#form:form id="searchForm" model="${area}" action="${ctx}/sys/area/listPageData" method="post" class="form-inline hide"
data-page-no="${parameter.pageNo}" data-page-size="${parameter.pageSize}" data-order-by="${parameter.orderBy}">
<div class="form-group">
<label class="control-label">区域代码:</label>
<label class="control-label">${text('区域代码')}</label>
<div class="control-inline">
<#form:input path="areaCode" maxlength="100" class="form-control"/>
</div>
</div>
<div class="form-group">
<label class="control-label">区域名称:</label>
<label class="control-label">${text('区域名称')}</label>
<div class="control-inline">
<#form:input path="areaName" maxlength="100" class="form-control"/>
</div>
</div>
<div class="form-group">
<label class="control-label">状态</label>
<label class="control-label">${text('状态')}</label>
<div class="control-inline width-60">
<#form:select path="status" dictType="sys_search_status" blankOption="true" class="form-control isQuick"/>
</div>
</div>
<div class="form-group">
<button type="submit" class="btn btn-primary btn-sm">查询</button>
<button type="reset" class="btn btn-default btn-sm isQuick">重置</button>
<button type="submit" class="btn btn-primary btn-sm">${text('查询')}</button>
<button type="reset" class="btn btn-default btn-sm isQuick">${text('重置')}</button>
</div>
</#form:form>
<table id="dataGrid"></table>
@@ -53,29 +53,29 @@
$('#dataGrid').dataGrid({
searchForm: $("#searchForm"),
columnModel: [
{header:'区域名称', name:'areaName', index:'a.area_name', width:230, align:"left", frozen:true, formatter: function(val, obj, row, act){
return '( '+row.areaCode+' ) '+'<a href="${ctx}/sys/area/form?areaCode='+row.areaCode+'" class="btnList" data-title="编辑区域">'+(val||row.id)+'</a>';
{header:'${text("区域名称")}', name:'areaName', index:'a.area_name', width:230, align:"left", frozen:true, formatter: function(val, obj, row, act){
return '( '+row.areaCode+' ) '+'<a href="${ctx}/sys/area/form?areaCode='+row.areaCode+'" class="btnList" data-title="${text("编辑区域")}">'+(val||row.id)+'</a>';
}},
{header:'区域类型', name:'areaType', index:'a.area_type', width:150, align:"center", formatter: function(val, obj, row, act){
{header:'${text("区域类型")}', name:'areaType', index:'a.area_type', width:150, align:"center", formatter: function(val, obj, row, act){
return js.getDictLabel(${@DictUtils.getDictListJson('sys_area_type')}, val, '未知', true);
}},
{header:'备注信息', name:'remarks', index:'a.remarks', width:200, align:"left"},
{header:'排序号', name:'treeSort', index:'a.tree_sort', width:100, align:"center"},
{header:'状态', name:'status', index:'a.status', width:80, align:"center", formatter: function(val, obj, row, act){
{header:'${text("备注信息")}', name:'remarks', index:'a.remarks', width:200, align:"left"},
{header:'${text("排序号")}', name:'treeSort', index:'a.tree_sort', width:100, align:"center"},
{header:'${text("状态")}', name:'status', index:'a.status', width:80, align:"center", formatter: function(val, obj, row, act){
return js.getDictLabel(${@DictUtils.getDictListJson('sys_status')}, val, '未知', true);
}},
{header:'更新时间', name:'updateDate', index:'a.update_date', width:150, align:"center"},
{header:'操作', name:'actions', width:130, formatter: function(val, obj, row, act){
{header:'${text("更新时间")}', name:'updateDate', index:'a.update_date', width:150, align:"center"},
{header:'${text("操作")}', name:'actions', width:130, formatter: function(val, obj, row, act){
var actions = [];
//<% if(hasPermi('sys:area:edit')){ %>
actions.push('<a href="${ctx}/sys/area/form?areaCode='+row.areaCode+'" class="btnList" title="编辑区域"><i class="fa fa-pencil"></i></a>&nbsp;');
actions.push('<a href="${ctx}/sys/area/form?areaCode='+row.areaCode+'" class="btnList" title="${text("编辑区域")}"><i class="fa fa-pencil"></i></a>&nbsp;');
if (row.status == Global.STATUS_NORMAL){
actions.push('<a href="${ctx}/sys/area/disable?areaCode='+row.areaCode+'" class="btnList" title="停用区域" data-confirm="确认要停用该区域吗?"><i class="glyphicon glyphicon-ban-circle"></i></a>&nbsp;');
actions.push('<a href="${ctx}/sys/area/disable?areaCode='+row.areaCode+'" class="btnList" title="${text("停用区域")}" data-confirm="${text("确认要停用该区域吗?")}"><i class="glyphicon glyphicon-ban-circle"></i></a>&nbsp;');
} else if (row.status == Global.STATUS_DISABLE){
actions.push('<a href="${ctx}/sys/area/enable?areaCode='+row.areaCode+'" class="btnList" title="启用区域" data-confirm="确认要启用该区域吗?"><i class="glyphicon glyphicon-ok-circle"></i></a>&nbsp;');
actions.push('<a href="${ctx}/sys/area/enable?areaCode='+row.areaCode+'" class="btnList" title="${text("启用区域")}" data-confirm="${text("确认要启用该区域吗?")}"><i class="glyphicon glyphicon-ok-circle"></i></a>&nbsp;');
}
actions.push('<a href="${ctx}/sys/area/delete?areaCode='+row.areaCode+'" class="btnList" title="删除区域" data-confirm="确认要删除该区域及所有子区域吗?" data-deltreenode="'+row.id+'"><i class="fa fa-trash-o"></i></a>&nbsp;');
actions.push('<a href="${ctx}/sys/area/form?parentCode='+row.id+'" class="btnList" title="新增下级区域"><i class="fa fa-plus-square"></i></a>&nbsp;');
actions.push('<a href="${ctx}/sys/area/delete?areaCode='+row.areaCode+'" class="btnList" title="${text("删除区域")}" data-confirm="${text("确认要删除该区域及所有子区域吗?")}" data-deltreenode="'+row.id+'"><i class="fa fa-trash-o"></i></a>&nbsp;');
actions.push('<a href="${ctx}/sys/area/form?parentCode='+row.id+'" class="btnList" title="${text("新增下级区域")}"><i class="fa fa-plus-square"></i></a>&nbsp;');
//<% } %>
return actions.join('');
}}

View File

@@ -38,7 +38,7 @@
<div class="col-xs-6">
<div class="form-group">
<label class="control-label col-sm-4" title="">
<span class="required ">*</span> ${text('公司码')}<i class="fa icon-question hide"></i></label>
<span class="required ">*</span> ${text('公司码')}<i class="fa icon-question hide"></i></label>
<div class="col-sm-8">
<#form:hidden path="isNewRecord"/>
<#form:hidden path="companyCode"/>

View File

@@ -27,7 +27,7 @@
// 初始化布局
$('body').layout({
west__initClosed: $(window).width() <= 767, // 是否默认关闭
west__size: 200
west__size: 220
});
// 主页框架
var win = $("#mainFrame")[0].contentWindow;

View File

@@ -35,7 +35,7 @@
<div class="form-unit">${text('数据权限')}</div>
<div id="dataScopeTrees"></div>
<script id="dataScopeTpl" type="text/template">
<div class="pull-left" style="padding:0 15px;min-width:300px;">
<div id="dataScope_{{d.key}}" class="pull-left" style="padding:0 15px;min-width:300px;">
<div class="box box-solid box-trees">
<div class="box-header">
<div class="box-title icheck">
@@ -163,6 +163,10 @@ for (var i=0; i<dataScopes.length; i++){
}).attr("ctrlType", dataScope.ctrlType);
// 将树对象存储到全局数组里
dataScopeTrees[dataScope.ctrlType] = tree;
// 如果没有数据,则隐藏选择框
if (data.length == 0) {
$("#dataScope_"+dataScope.ctrlType).hide();
}
}
});
}

View File

@@ -5,7 +5,7 @@
<groupId>com.jeesite</groupId>
<artifactId>jeesite-modules</artifactId>
<version>5.4.0-SNAPSHOT</version>
<version>5.4.1-SNAPSHOT</version>
<packaging>pom</packaging>
<name>JeeSite Modules</name>

View File

@@ -6,12 +6,15 @@ rem *
rem * Author: ThinkGem@163.com
rem */
echo.
echo [<5B><>Ϣ] <20><><EFBFBD>𹤳̰汾<EFBFBD><EFBFBD>Nexus<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
echo [<5B><>Ϣ] <20><><EFBFBD>𹤳̵<EFBFBD>Maven<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
echo.
%~d0
cd %~dp0
call mvn -v
echo.
cd ..
call mvn clean deploy -Dmaven.test.skip=true -Pdeploy

View File

@@ -4,10 +4,12 @@
# * No deletion without permission, or be held responsible to law.
# *
# * Author: ThinkGem@163.com
# *
# */
echo ""
echo "[信息] 部署工程版本到Nexus服务器。"
echo "[信息] 部署工程到Maven服务器。"
echo ""
mvn -v
echo ""
cd ..

View File

@@ -12,6 +12,9 @@ echo.
%~d0
cd %~dp0
call mvn -v
echo.
cd ..
call mvn clean install -Dmaven.test.skip=true -Ppackage

View File

@@ -4,10 +4,12 @@
# * No deletion without permission, or be held responsible to law.
# *
# * Author: ThinkGem@163.com
# *
# */
echo ""
echo "[信息] 打包Web工程,生成war/jar包文件。"
echo "[信息] 打包安装工程生成jar包文件。"
echo ""
mvn -v
echo ""
cd ..

View File

@@ -12,7 +12,7 @@
<groupId>com.jeesite</groupId>
<artifactId>jeesite-parent</artifactId>
<version>5.4.0-SNAPSHOT</version>
<version>5.4.1-SNAPSHOT</version>
<packaging>pom</packaging>
<name>JeeSite Parent</name>
@@ -25,21 +25,25 @@
<commons-io.version>2.13.0</commons-io.version>
<commons-text.version>1.10.0</commons-text.version>
<commons-email.version>1.5</commons-email.version>
<fst.version>2.57</fst.version>
<jackson-bom2.version>2.13.5</jackson-bom2.version>
<fastjson.version>2.0.33</fastjson.version>
<fst.version>2.57</fst.version>
<snakeyaml.version>2.0</snakeyaml.version>
<!--<jackson.version>2.12.6</jackson.version>-->
<!--<activation.version>1.1.1</activation.version>-->
<activation.version>1.1.1</activation.version>
<UserAgentUtils.version>1.21</UserAgentUtils.version>
<!--<metadata-extractor.version>2.11.0</metadata-extractor.version>-->
<metadata-extractor.version>2.11.0</metadata-extractor.version>
<thumbnailator.version>0.4.19</thumbnailator.version>
<twelvemonkeys.version>3.9.3</twelvemonkeys.version>
<blade-patchca.version>1.1.2</blade-patchca.version>
<jmimemagic.version>0.1.5</jmimemagic.version>
<zxing.version>3.5.1</zxing.version>
<poi.version>5.2.3</poi.version>
<pinyin4j.version>2.5.1</pinyin4j.version>
<groovy.version>3.0.17</groovy.version>
<joda-time.version>2.10.4</joda-time.version>
<logstash-logback.version>7.3</logstash-logback.version>
<elasticsearch.version>7.17.8</elasticsearch.version>
@@ -60,7 +64,7 @@
<!-- environment setting -->
<java.version>1.8</java.version>
<!--<tomcat.version>9.0.58</tomcat.version>-->
<tomcat2.version>9.0.75</tomcat2.version>
<maven.test.skip>true</maven.test.skip>
<resource.delimiter>@</resource.delimiter>
<maven.compiler.source>${java.version}</maven.compiler.source>

View File

@@ -5,7 +5,7 @@
<groupId>com.jeesite</groupId>
<artifactId>jeesite</artifactId>
<version>5.4.0-SNAPSHOT</version>
<version>5.4.1-SNAPSHOT</version>
<packaging>pom</packaging>
<name>JeeSite</name>

View File

@@ -6,12 +6,15 @@ rem *
rem * Author: ThinkGem@163.com
rem */
echo.
echo [<5B><>Ϣ] <20><><EFBFBD>𹤳̰汾<EFBFBD><EFBFBD>Nexus<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
echo [<5B><>Ϣ] <20><><EFBFBD>𹤳̵<EFBFBD>Maven<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
echo.
%~d0
cd %~dp0
call mvn -v
echo.
cd ..
call mvn clean deploy -Dmaven.test.skip=true -Pdeploy

View File

@@ -4,10 +4,12 @@
# * No deletion without permission, or be held responsible to law.
# *
# * Author: ThinkGem@163.com
# *
# */
echo ""
echo "[信息] 部署工程版本到Nexus服务器。"
echo "[信息] 部署工程到Maven服务器。"
echo ""
mvn -v
echo ""
cd ..

View File

@@ -12,6 +12,9 @@ echo.
%~d0
cd %~dp0
call mvn -v
echo.
cd ..
call mvn clean install -Dmaven.test.skip=true -Ppackage

View File

@@ -4,10 +4,12 @@
# * No deletion without permission, or be held responsible to law.
# *
# * Author: ThinkGem@163.com
# *
# */
echo ""
echo "[信息] 打包Web工程,生成war/jar包文件。"
echo "[信息] 打包安装工程生成jar包文件。"
echo ""
mvn -v
echo ""
cd ..

View File

@@ -5,7 +5,7 @@
<groupId>com.jeesite</groupId>
<artifactId>jeesite-root</artifactId>
<version>5.4.0-SNAPSHOT</version>
<version>5.4.1-SNAPSHOT</version>
<packaging>pom</packaging>
<name>JeeSite Root</name>

View File

@@ -12,6 +12,9 @@ echo.
%~d0
cd %~dp0
call mvn -v
echo.
cd ..
call mvn clean package spring-boot:repackage -Dmaven.test.skip=true -U

View File

@@ -4,12 +4,14 @@
# * No deletion without permission, or be held responsible to law.
# *
# * Author: ThinkGem@163.com
# *
# */
echo ""
echo "[信息] 打包Web工程生成war/jar包文件。"
echo ""
mvn -v
echo ""
cd ..
mvn clean package spring-boot:repackage -Dmaven.test.skip=true -U

View File

@@ -6,7 +6,7 @@
<parent>
<groupId>com.jeesite</groupId>
<artifactId>jeesite-parent</artifactId>
<version>5.4.0-SNAPSHOT</version>
<version>5.4.1-SNAPSHOT</version>
<relativePath>../parent/pom.xml</relativePath>
</parent>
@@ -24,10 +24,6 @@
<finalName>web</finalName><!-- war or jar 包的名称 -->
<start-class>com.jeesite.modules.ApiApplication</start-class>
<!-- environment setting -->
<eclipse-plugin-download-sources>false</eclipse-plugin-download-sources>
<eclipse-plugin-download-javadocs>false</eclipse-plugin-download-javadocs>
<!-- docker setting -->
<docker.run.port>8980:8980</docker.run.port>
@@ -114,11 +110,7 @@
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-eclipse-plugin</artifactId>
<configuration>
<downloadSources>${eclipse-plugin-download-sources}</downloadSources>
<downloadJavadocs>${eclipse-plugin-download-javadocs}</downloadJavadocs>
<wtpContextName>${finalName}</wtpContextName>
<wtpversion>2.0</wtpversion>
<jeeversion>6.0</jeeversion>
</configuration>
</plugin>

View File

@@ -786,6 +786,9 @@ web:
#
# # 严格模式(更严格的数据安全验证)
# strictMode: false
#
# # 所有请求信息将进行xss过滤这里列出不被xss过滤的地址
# xssFilterExcludeUri: /ureport/,/visual/
#
# # 自定义正则表达式验证(主键、登录名)
# validator:
@@ -801,7 +804,7 @@ web:
# enabled: false
# callback: __callback
# 核心模块的Web功能(仅作为微服务时设为false
# 核心模块的Web功能开启(其它微服务时设为false
core:
enabled: true

View File

@@ -12,6 +12,9 @@ echo.
%~d0
cd %~dp0
call mvn -v
echo.
cd ..
call mvn clean package spring-boot:repackage -Dmaven.test.skip=true -U

View File

@@ -4,12 +4,14 @@
# * No deletion without permission, or be held responsible to law.
# *
# * Author: ThinkGem@163.com
# *
# */
echo ""
echo "[信息] 打包Web工程生成war/jar包文件。"
echo ""
mvn -v
echo ""
cd ..
mvn clean package spring-boot:repackage -Dmaven.test.skip=true -U

View File

@@ -6,7 +6,7 @@
<parent>
<groupId>com.jeesite</groupId>
<artifactId>jeesite-parent</artifactId>
<version>5.4.0-SNAPSHOT</version>
<version>5.4.1-SNAPSHOT</version>
<relativePath>../parent/pom.xml</relativePath>
</parent>
@@ -24,10 +24,6 @@
<finalName>web</finalName><!-- war or jar 包的名称 -->
<start-class>com.jeesite.modules.FastApplication</start-class>
<!-- environment setting -->
<eclipse-plugin-download-sources>false</eclipse-plugin-download-sources>
<eclipse-plugin-download-javadocs>false</eclipse-plugin-download-javadocs>
<!-- docker setting -->
<docker.dockerHost>http://192.168.56.102:2375</docker.dockerHost>
<docker.imageName>thinkgem/jeesite-web:latest</docker.imageName>
@@ -123,11 +119,7 @@
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-eclipse-plugin</artifactId>
<configuration>
<downloadSources>${eclipse-plugin-download-sources}</downloadSources>
<downloadJavadocs>${eclipse-plugin-download-javadocs}</downloadJavadocs>
<wtpContextName>${finalName}</wtpContextName>
<wtpversion>2.0</wtpversion>
<jeeversion>6.0</jeeversion>
</configuration>
</plugin>

View File

@@ -191,7 +191,7 @@ mybatis:
# Web 相关
web:
# 核心模块的Web功能(仅作为微服务时设为false
# 核心模块的Web功能开启(其它微服务时设为false
core:
enabled: true

View File

@@ -66,7 +66,7 @@ $('#dataGrid').dataGrid({
},
columnModel: [
{header:'${text("岗位名称")}', name:'postName', index:'a.post_name', width:200, align:"center"},
{header:'${text("岗位码")}', name:'postCode', index:'a.post_code', width:200, align:"center"},
{header:'${text("岗位码")}', name:'postCode', index:'a.post_code', width:200, align:"center"},
{header:'${text("排序号")}', name:'postSort', index:'a.post_sort', width:80, align:"center"},
{header:'${text("岗位分类")}', name:'postType', index:'a.post_type', width:100, align:"center", formatter: function(val, obj, row, act){
return js.getDictLabel(${@DictUtils.getDictListJson('sys_post_type')}, val, '未知', true);

View File

@@ -12,6 +12,9 @@ echo.
%~d0
cd %~dp0
call mvn -v
echo.
cd ..
call mvn clean package spring-boot:repackage -Dmaven.test.skip=true -U

View File

@@ -4,12 +4,14 @@
# * No deletion without permission, or be held responsible to law.
# *
# * Author: ThinkGem@163.com
# *
# */
echo ""
echo "[信息] 打包Web工程生成war/jar包文件。"
echo ""
mvn -v
echo ""
cd ..
mvn clean package spring-boot:repackage -Dmaven.test.skip=true -U

View File

@@ -6,7 +6,7 @@
<parent>
<groupId>com.jeesite</groupId>
<artifactId>jeesite-parent</artifactId>
<version>5.4.0-SNAPSHOT</version>
<version>5.4.1-SNAPSHOT</version>
<relativePath>../parent/pom.xml</relativePath>
</parent>
@@ -24,10 +24,6 @@
<finalName>web</finalName><!-- war or jar 包的名称 -->
<start-class>com.jeesite.modules.Application</start-class>
<!-- environment setting -->
<eclipse-plugin-download-sources>false</eclipse-plugin-download-sources>
<eclipse-plugin-download-javadocs>false</eclipse-plugin-download-javadocs>
<!-- docker setting -->
<docker.run.port>8980:8980</docker.run.port>
@@ -128,11 +124,7 @@
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-eclipse-plugin</artifactId>
<configuration>
<downloadSources>${eclipse-plugin-download-sources}</downloadSources>
<downloadJavadocs>${eclipse-plugin-download-javadocs}</downloadJavadocs>
<wtpContextName>${finalName}</wtpContextName>
<wtpversion>2.0</wtpversion>
<jeeversion>6.0</jeeversion>
</configuration>
</plugin>

View File

@@ -787,6 +787,9 @@ web:
# # 严格模式(更严格的数据安全验证)
# strictMode: false
#
# # 所有请求信息将进行xss过滤这里列出不被xss过滤的地址
# xssFilterExcludeUri: /ureport/,/visual/
#
# # 自定义正则表达式验证(主键、登录名)
# validator:
# id: '[a-zA-Z0-9_\-/#\u4e00-\u9fa5]{0,64}'
@@ -801,7 +804,7 @@ web:
# enabled: false
# callback: __callback
# 核心模块的Web功能(仅作为微服务时设为false
# 核心模块的Web功能开启(其它微服务时设为false
core:
enabled: true

View File

@@ -66,7 +66,7 @@ $('#dataGrid').dataGrid({
},
columnModel: [
{header:'${text("岗位名称")}', name:'postName', index:'a.post_name', width:200, align:"center"},
{header:'${text("岗位码")}', name:'postCode', index:'a.post_code', width:200, align:"center"},
{header:'${text("岗位码")}', name:'postCode', index:'a.post_code', width:200, align:"center"},
{header:'${text("排序号")}', name:'postSort', index:'a.post_sort', width:80, align:"center"},
{header:'${text("岗位分类")}', name:'postType', index:'a.post_type', width:100, align:"center", formatter: function(val, obj, row, act){
return js.getDictLabel(${@DictUtils.getDictListJson('sys_post_type')}, val, '未知', true);