Compare commits
22 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
233a00ad89 | ||
|
|
52c1dec7a8 | ||
|
|
288f9d56c5 | ||
|
|
a610528ba6 | ||
|
|
3e9268e27e | ||
|
|
2dd963c049 | ||
|
|
df530be41b | ||
|
|
9b42881648 | ||
|
|
a60605d412 | ||
|
|
4b6f7f1ae6 | ||
|
|
660087f613 | ||
|
|
9d79ae73ec | ||
|
|
870976f6cf | ||
|
|
bd71d5126b | ||
|
|
3c698cf6ad | ||
|
|
19b9cd8205 | ||
|
|
f9c0f5a72f | ||
|
|
5f8e8ba3f9 | ||
|
|
2dde6aa8e7 | ||
|
|
04b310b0f8 | ||
|
|
7fa7cdb224 | ||
|
|
87f6703e6e |
26
README.md
@@ -21,13 +21,13 @@
|
|||||||
* 问题反馈:<http://jeesite.net> [【新手必读】](https://gitee.com/thinkgem/jeesite4/issues/I18ARR)
|
* 问题反馈:<http://jeesite.net> [【新手必读】](https://gitee.com/thinkgem/jeesite4/issues/I18ARR)
|
||||||
* 关注微信公众号,了解最新动态:
|
* 关注微信公众号,了解最新动态:
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
## 平台介绍
|
## 平台介绍
|
||||||
|
|
||||||
JeeSite 快速开发平台,不仅仅是一个后台开发框架,它是一个企业级快速开发解决方案,基于经典技术组合(Spring Boot、Spring MVC、Apache Shiro、MyBatis、Beetl、Bootstrap、AdminLTE)采用经典开发模式,让初学者能够更快的入门并投入到团队开发中去。提供在线代码生成功能,包括模块如:组织机构、角色用户、菜单及按钮授权、数据权限、系统参数、内容管理、工作流等。采用松耦合设计,模块增减便捷;界面无刷新,一键换肤;众多账号安全设置,密码策略;文件在线预览;消息推送;多元化第三方登录;在线定时任务配置;支持集群,支持SAAS;支持多数据源;支持读写分离、分库分表;支持微服务应用。
|
JeeSite 快速开发平台,不仅仅是一个后台开发框架,它是一个企业级快速开发解决方案,后端基于经典组合 Spring Boot、Shiro、MyBatis,前端采用 Beetl、Bootstrap、AdminLTE 经典开发模式,或者分离版 Vue3、Vite、Ant Design Vue、TypeScript、Vben Admin 最先进技术栈。提供在线代码生成功能,包括模块如:组织机构、角色用户、菜单及按钮授权、数据权限、系统参数、内容管理、工作流等。采用松耦合设计,微内核和插件架构,模块增减便捷;界面无刷新,一键换肤;众多账号安全设置,密码策略;文件在线预览;消息推送;多元化第三方登录;在线定时任务配置;支持集群,支持SAAS;支持多数据源;支持读写分离、分库分表;支持微服务应用。
|
||||||
|
|
||||||
JeeSite 快速开发平台的主要目的是能够让初级的研发人员快速的开发出复杂的业务功能(经典架构会的人多),让开发者注重专注业务,其余有平台来封装技术细节,降低技术难度,从而节省人力成本,缩短项目周期,提高软件安全质量。
|
JeeSite 快速开发平台的主要目的是能够让初级的研发人员快速的开发出复杂的业务功能,中高级人员有时间做一些更有用的事情。让开发者注重专注业务,其余有平台来封装技术细节,降低技术难度,从而节省人力成本,缩短项目周期,提高软件安全质量。
|
||||||
|
|
||||||
JeeSite 自 2013 年发布以来已被广大爱好者用到了企业、政府、医疗、金融、互联网等各个领域中,JeeSite 架构精良、易于扩展、大众思维的设计模式、工匠精神打磨每一个细节,深入开发者的内心,并荣获开源中国《最受欢迎中国开源软件》奖杯,期间也帮助了不少刚毕业的大学生,教师作为入门教材,快速的去实践。
|
JeeSite 自 2013 年发布以来已被广大爱好者用到了企业、政府、医疗、金融、互联网等各个领域中,JeeSite 架构精良、易于扩展、大众思维的设计模式、工匠精神打磨每一个细节,深入开发者的内心,并荣获开源中国《最受欢迎中国开源软件》奖杯,期间也帮助了不少刚毕业的大学生,教师作为入门教材,快速的去实践。
|
||||||
|
|
||||||
@@ -37,31 +37,33 @@ JeeSite4 的升级,作者结合了多年总结和经验,以及各方面的
|
|||||||
|
|
||||||
JeeSite 整体架构清晰、稳定技术先进、源代码书写规范、经典技术会的人多、易于维护、易于扩展、安全稳定。
|
JeeSite 整体架构清晰、稳定技术先进、源代码书写规范、经典技术会的人多、易于维护、易于扩展、安全稳定。
|
||||||
|
|
||||||
JeeSite 功能全,JeeSite 的知识点非常多,也非常少。因为她使用的都是一些通用的技术,通俗的设计风格,大多数基础知识点多数人都能掌握,所以每一个 JeeSite 的功能点都非常容易掌握。只要你学会使用这些功能和组件的应用,就可以顺利的完成系统开发了。
|
JeeSite 功能全,知识点非常多,也非常少。因为她使用的都是一些通用的技术,通俗的设计风格,大多数基础知识点多数人都能掌握,所以每一个 JeeSite 的功能点都非常容易掌握。只要你学会使用这些功能和组件的应用,就可以顺利的完成系统开发了。
|
||||||
|
|
||||||
JeeSite 是一个低代码开发平台,具有较高的封装度、扩展性,封装不是限制你去做一些事情,而是在便捷的同时,也具有较好的扩展性,在不具备一些功能的情况下,JeeSite 提供了扩展接口,提供了原生调用方法。
|
JeeSite 是一个低代码开发平台,具有较高的封装度、扩展性,封装不是限制你去做一些事情,而是在便捷的同时,也具有较好的扩展性,在不具备一些功能的情况下,JeeSite 提供了扩展接口,提供了原生调用方法。
|
||||||
|
|
||||||
大家都在用 Spring ,在学习 Spring 架构的优点,Spring 提供了较好的扩展性,可又有多少人去修改它的源代码呢,退一步说,大家去修改了 Spring 的源码,反而会对未来升级造成很大困扰,您说不是呢?这样的例子很多,所以不要纠结,JeeSite 也一样具备强大的扩展性。
|
大家都在用 Spring,也在学习 Spring 的优点,Spring 提供了较好的扩展性,可又有多少人去修改它的源代码呢,退一步说,大家去修改了 Spring 的源码,反而会对未来升级造成很大困扰,您说不是呢?这样的例子很多,所以不要纠结,我们非常注重着一块,JeeSite 也一样具备强大的扩展性。
|
||||||
|
|
||||||
**发展至今 JeeSite 平台架构已经非常稳定,JeeSite 是一个专业的平台,是一个让你使用放心的平台。**
|
* 至今 JeeSite 平台架构已经非常稳定。
|
||||||
|
* JeeSite 精益求精,用心打磨每一个细节。
|
||||||
|
* JeeSite 是一个专业的平台,是一个让你使用放心的平台。
|
||||||
|
|
||||||
### v4 架构特点、安全方面等等的优势:<https://jeesite.com/docs/feature/>
|
### 架构特点及安全方面的优势:<https://jeesite.com/docs/feature/>
|
||||||
|
|
||||||
## 技术选型
|
## 技术选型
|
||||||
|
|
||||||
* 主框架:Spring Boot 2.5、Spring Framework 5.3、Apache Shiro 1.8、J2Cache
|
* 主框架:Spring Boot 2.5、Spring Framework 5.3、Apache Shiro 1.8、J2Cache
|
||||||
* 持久层:Apache MyBatis 3.5、Hibernate Validator 6.2、Alibaba Druid 1.2
|
* 持久层:Apache MyBatis 3.5、Hibernate Validator 6.2、Alibaba Druid 1.2
|
||||||
* 视图层:Spring MVC 5.3、Beetl 3.3(替换JSP)、Bootstrap 3.3、AdminLTE 2.4
|
* 视图层:Spring MVC 5.3、Beetl 3.3(替换JSP)、Bootstrap 3.3、AdminLTE 2.4
|
||||||
* 前端组件:jQuery 3.5、jqGrid 4.7、layer 3.1、zTree 3.5、jQuery Validation
|
* 前端组件:jQuery 3.5、jqGrid 4.7、layer 3.5、zTree 3.5、jQuery Validation
|
||||||
* 支持 IE9 及以上版本及其他所有现代浏览器,如:谷歌浏览器、火狐浏览器、国产浏览器 等
|
* 支持 IE9 及以上版本及其他所有现代浏览器,如:谷歌浏览器、火狐浏览器、国产浏览器 等
|
||||||
* 工作流引擎:Flowable 6.6、符合 BPMN 规范、在线流程设计器、中国式流程、退回、撤回、自由流
|
* 工作流引擎:Flowable 6.6、符合 BPMN 规范、在线流程设计器、中国式流程、退回、撤回、自由流
|
||||||
* 技术选型(详细):<http://jeesite.com/docs/technology/>
|
* 技术选型(详细):<http://jeesite.com/docs/technology/>
|
||||||
|
|
||||||
疑问:为什么不使用 Bootstrap、AdminLTE 新版本?
|
疑问:为什么不使用 Bootstrap、AdminLTE 最新版?
|
||||||
1. 前端发展迅速,向下兼容性是前端最大的弊端,会造成升级 JeeSite 变的困难,无法做到平滑升级。
|
1. 前端发展迅速,向下兼容性是前端最大的弊端,会造成升级 JeeSite 变的困难,无法做到平滑升级。
|
||||||
2. 其实 JeeSite 一直为前端组件做相应升级,满足各种需求场景,可以达到相应的效果,并向下兼容。
|
2. 其实 JeeSite 一直为前端组件做相应升级,满足各种需求场景,可以达到相应的效果,并向下兼容。
|
||||||
3. 为了兼容 IE 浏览器,2020 年浏览器国内市场份额分析,还是有一定的 IE 占有率。
|
3. 为了兼容 IE 浏览器,2020 年浏览器国内市场份额分析,还是有一定的 IE 占有率。
|
||||||
4. JeeSite 也提供了更先进的分离端版本:<http://vue.jeesite.com>
|
4. JeeSite 也提供了更先进的**分离端版本**:<http://jeesite.com/docs/jeesite-vue/>
|
||||||
|
|
||||||
## 更多介绍
|
## 更多介绍
|
||||||
|
|
||||||
@@ -78,7 +80,7 @@ JeeSite 是一个低代码开发平台,具有较高的封装度、扩展性,
|
|||||||
* Flowable业务流程模块(BPM):<http://jeesite.com/docs/bpm/>
|
* Flowable业务流程模块(BPM):<http://jeesite.com/docs/bpm/>
|
||||||
* 内容管理模块(CMS):<https://gitee.com/thinkgem/jeesite4-cms>
|
* 内容管理模块(CMS):<https://gitee.com/thinkgem/jeesite4-cms>
|
||||||
* 手机端移动端:<https://gitee.com/thinkgem/jeesite4-uniapp>
|
* 手机端移动端:<https://gitee.com/thinkgem/jeesite4-uniapp>
|
||||||
* Vue3分离版本:<http://vue.jeesite.com>
|
* Vue3分离版本:<http://jeesite.com/docs/jeesite-vue/>
|
||||||
|
|
||||||
## 快速体验
|
## 快速体验
|
||||||
|
|
||||||
@@ -90,7 +92,7 @@ JeeSite 是一个低代码开发平台,具有较高的封装度、扩展性,
|
|||||||
|
|
||||||
### 本地运行
|
### 本地运行
|
||||||
|
|
||||||
1. 环境准备:`JDK 1.8 or 11`、`Maven 3.6+`、`MySQL 5.7 or 8.0`([支持更多数据库](https://jeesite.com/docs/technology/#8已支持数据库))
|
1. 环境准备:`JDK 1.8 or 11、17`、`Maven 3.6+`、`MySQL 5.7 or 8.0`([支持更多数据库](https://jeesite.com/docs/technology/#8已支持数据库))
|
||||||
2. 执行命令:`git clone https://gitee.com/thinkgem/jeesite4.git` 下载源码(master分支)
|
2. 执行命令:`git clone https://gitee.com/thinkgem/jeesite4.git` 下载源码(master分支)
|
||||||
3. 打开文件:`/web/src/main/resources/config/application.yml` 配置JDBC连接
|
3. 打开文件:`/web/src/main/resources/config/application.yml` 配置JDBC连接
|
||||||
4. 执行脚本:`/web/bin/init-data.bat` 初始化数据库
|
4. 执行脚本:`/web/bin/init-data.bat` 初始化数据库
|
||||||
|
|||||||
@@ -6,7 +6,7 @@
|
|||||||
<parent>
|
<parent>
|
||||||
<groupId>com.jeesite</groupId>
|
<groupId>com.jeesite</groupId>
|
||||||
<artifactId>jeesite-parent</artifactId>
|
<artifactId>jeesite-parent</artifactId>
|
||||||
<version>4.3.2-SNAPSHOT</version>
|
<version>4.3.3-SNAPSHOT</version>
|
||||||
<relativePath>../parent/pom.xml</relativePath>
|
<relativePath>../parent/pom.xml</relativePath>
|
||||||
</parent>
|
</parent>
|
||||||
|
|
||||||
|
|||||||
@@ -26,6 +26,12 @@ import org.springframework.core.NamedThreadLocal;
|
|||||||
public class ObjectUtils extends org.apache.commons.lang3.ObjectUtils {
|
public class ObjectUtils extends org.apache.commons.lang3.ObjectUtils {
|
||||||
|
|
||||||
private static Logger logger = LoggerFactory.getLogger(ObjectUtils.class);
|
private static Logger logger = LoggerFactory.getLogger(ObjectUtils.class);
|
||||||
|
private static final boolean isJavaSerialize;
|
||||||
|
|
||||||
|
static {
|
||||||
|
String[] ver = StringUtils.split(System.getProperty("java.version"), '.');
|
||||||
|
isJavaSerialize = ver.length > 0 && Integer.parseInt(ver[0]) > 1;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 转换为 Double 类型
|
* 转换为 Double 类型
|
||||||
@@ -155,8 +161,12 @@ public class ObjectUtils extends org.apache.commons.lang3.ObjectUtils {
|
|||||||
* @return
|
* @return
|
||||||
*/
|
*/
|
||||||
public static byte[] serialize(Object object) {
|
public static byte[] serialize(Object object) {
|
||||||
|
if (isJavaSerialize) {
|
||||||
|
return ObjectUtils.serializeJava(object);
|
||||||
|
}else {
|
||||||
return ObjectUtils.serializeFst(object);
|
return ObjectUtils.serializeFst(object);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 反序列化对象
|
* 反序列化对象
|
||||||
@@ -164,8 +174,12 @@ public class ObjectUtils extends org.apache.commons.lang3.ObjectUtils {
|
|||||||
* @return
|
* @return
|
||||||
*/
|
*/
|
||||||
public static Object unserialize(byte[] bytes) {
|
public static Object unserialize(byte[] bytes) {
|
||||||
|
if (isJavaSerialize) {
|
||||||
|
return ObjectUtils.unserializeJava(bytes);
|
||||||
|
}else {
|
||||||
return ObjectUtils.unserializeFst(bytes);
|
return ObjectUtils.unserializeFst(bytes);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 序列化对象
|
* 序列化对象
|
||||||
@@ -212,7 +226,7 @@ public class ObjectUtils extends org.apache.commons.lang3.ObjectUtils {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
long totalTime = System.currentTimeMillis() - beginTime;
|
long totalTime = System.currentTimeMillis() - beginTime;
|
||||||
if (totalTime > 3000){
|
if (totalTime > 3000 && object != null){
|
||||||
logger.warn(object.getClass() + " unserialize time: " + TimeUtils.formatDateAgo(totalTime));
|
logger.warn(object.getClass() + " unserialize time: " + TimeUtils.formatDateAgo(totalTime));
|
||||||
}
|
}
|
||||||
return object;
|
return object;
|
||||||
@@ -255,7 +269,7 @@ public class ObjectUtils extends org.apache.commons.lang3.ObjectUtils {
|
|||||||
long beginTime = System.currentTimeMillis();
|
long beginTime = System.currentTimeMillis();
|
||||||
Object object = fstConfiguration.get().asObject(bytes);
|
Object object = fstConfiguration.get().asObject(bytes);
|
||||||
long totalTime = System.currentTimeMillis() - beginTime;
|
long totalTime = System.currentTimeMillis() - beginTime;
|
||||||
if (totalTime > 3000){
|
if (totalTime > 3000 && object != null){
|
||||||
logger.warn(object.getClass() + " fst unserialize time: " + TimeUtils.formatDateAgo(totalTime));
|
logger.warn(object.getClass() + " fst unserialize time: " + TimeUtils.formatDateAgo(totalTime));
|
||||||
}
|
}
|
||||||
return object;
|
return object;
|
||||||
|
|||||||
@@ -10,7 +10,6 @@ a, a:hover, a:active, a:focus, .form-unit, th[aria-selected=true] .ui-jqgrid-sor
|
|||||||
background: -ms-linear-gradient(left, #2684f5, #1890ff);
|
background: -ms-linear-gradient(left, #2684f5, #1890ff);
|
||||||
background: -moz-linear-gradient(left top, #2684f5 0%, #1890ff 100%);
|
background: -moz-linear-gradient(left top, #2684f5 0%, #1890ff 100%);
|
||||||
background: -o-linear-gradient(#1890ff, #2684f5);
|
background: -o-linear-gradient(#1890ff, #2684f5);
|
||||||
filter: progid:DXImageTransform.Microsoft.gradient(GradientType = 1,startColorstr='#1890ff', endColorstr='#2684f5');
|
|
||||||
}
|
}
|
||||||
.main-header .navbar .nav > li > a {
|
.main-header .navbar .nav > li > a {
|
||||||
color: #ffffff;
|
color: #ffffff;
|
||||||
@@ -164,9 +163,9 @@ a, a:hover, a:active, a:focus, .form-unit, th[aria-selected=true] .ui-jqgrid-sor
|
|||||||
|
|
||||||
.sidebar-menu {padding:0 8px 0 7px;}
|
.sidebar-menu {padding:0 8px 0 7px;}
|
||||||
.sidebar-menu li>a>.pull-right-container {left:0;}
|
.sidebar-menu li>a>.pull-right-container {left:0;}
|
||||||
.sidebar-menu .treeview-item.active > a {color:#1890ff;background-color:#e1f1ff;border-right:0;border-radius:6px;}
|
.sidebar-menu .treeview-item.active > a {color:#1890ff;background-color:#e7f4ff;border-right:0;border-radius:6px;}
|
||||||
|
|
||||||
.content-wrapper, .right-side, body {background-color:#f8f8f8;}
|
.content-wrapper, .right-side, body {background-color:#f0f2f5;}
|
||||||
|
|
||||||
.btn-primary, .btn-primary:hover, .btn-primary:active,
|
.btn-primary, .btn-primary:hover, .btn-primary:active,
|
||||||
.btn-primary.hover, .btn-primary.focus, .btn-primary:focus,
|
.btn-primary.hover, .btn-primary.focus, .btn-primary:focus,
|
||||||
@@ -180,7 +179,7 @@ a, a:hover, a:active, a:focus, .form-unit, th[aria-selected=true] .ui-jqgrid-sor
|
|||||||
.form-unit, th[aria-selected=true] .ui-jqgrid-sortable {color:#1890ff;}
|
.form-unit, th[aria-selected=true] .ui-jqgrid-sortable {color:#1890ff;}
|
||||||
.form-unit {border-bottom: 1px solid #eee;}
|
.form-unit {border-bottom: 1px solid #eee;}
|
||||||
|
|
||||||
.tabpanel_mover li {padding:1px 16px 2px 3px;margin:6px 0 6px 6px;border:1px solid #e4e4e4;border-radius:3px;background:#fff;}
|
.tabpanel_mover li {height:26px;padding:1px 16px 2px 3px;margin:6px 0 6px 6px;border:1px solid #e4e4e4;border-radius:3px;background:#fff;}
|
||||||
.tabpanel_mover li.active {background-color:#3aa0ff;box-shadow:0 0 5px #e6e6e6;}
|
.tabpanel_mover li.active {background-color:#3aa0ff;box-shadow:0 0 5px #e6e6e6;}
|
||||||
.tabpanel_mover li.active div {color:#fff;}
|
.tabpanel_mover li.active div {color:#fff;}
|
||||||
.tabpanel_mover li .closer {font:11px/1 FontAwesome;top:6px;right:2px;background:none;opacity:0.7;}
|
.tabpanel_mover li .closer {font:11px/1 FontAwesome;top:6px;right:2px;background:none;opacity:0.7;}
|
||||||
@@ -218,5 +217,5 @@ a, a:hover, a:active, a:focus, .form-unit, th[aria-selected=true] .ui-jqgrid-sor
|
|||||||
.ui-jqgrid tr.ui-row-rtl td, .ui-jqgrid tr.ui-row-ltr td:last-child {border-color:#eaeaea;}
|
.ui-jqgrid tr.ui-row-rtl td, .ui-jqgrid tr.ui-row-ltr td:last-child {border-color:#eaeaea;}
|
||||||
.ui-state-hover td, .ui-widget-content .ui-state-hover td, .ui-widget-header .ui-state-hover td,
|
.ui-state-hover td, .ui-widget-content .ui-state-hover td, .ui-widget-header .ui-state-hover td,
|
||||||
.ui-state-focus, .ui-widget-content .ui-state-focus, .ui-widget-header .ui-state-focus {background:#f5f5f5;}
|
.ui-state-focus, .ui-widget-content .ui-state-focus, .ui-widget-header .ui-state-focus {background:#f5f5f5;}
|
||||||
.ui-jqgrid tr.ui-state-highlight.ui-row-ltr td {background-color:#e6f7ff;}
|
.ui-jqgrid tr.ui-state-highlight.ui-row-ltr td {background-color:#ecf9ff;}
|
||||||
/* .ui-jqgrid tr.ui-row-ltr td {border-right:0!important;} 解开注释,可去除表格单元格的竖边框线 */
|
/* .ui-jqgrid tr.ui-row-ltr td {border-right:0!important;} 解开注释,可去除表格单元格的竖边框线 */
|
||||||
|
|||||||
@@ -0,0 +1,241 @@
|
|||||||
|
/*
|
||||||
|
* http://jeesite.com
|
||||||
|
*/
|
||||||
|
a, a:hover, a:active, a:focus, .form-unit, th[aria-selected=true] .ui-jqgrid-sortable {
|
||||||
|
color:#1890ff;
|
||||||
|
}
|
||||||
|
.main-header .navbar {
|
||||||
|
background: #1890ff;
|
||||||
|
background: -webkit-gradient(linear, left bottom, right top, color-stop(0, #2684f5), color-stop(1, #1890ff));
|
||||||
|
background: -ms-linear-gradient(left, #2684f5, #1890ff);
|
||||||
|
background: -moz-linear-gradient(left top, #2684f5 0%, #1890ff 100%);
|
||||||
|
background: -o-linear-gradient(#1890ff, #2684f5);
|
||||||
|
}
|
||||||
|
.main-header .navbar .nav > li > a {
|
||||||
|
color: #ffffff;
|
||||||
|
}
|
||||||
|
.main-header .navbar .nav > li > a:hover,
|
||||||
|
.main-header .navbar .nav > li > a:active,
|
||||||
|
.main-header .navbar .nav > li > a:focus,
|
||||||
|
.main-header .navbar .nav .open > a,
|
||||||
|
.main-header .navbar .nav .open > a:hover,
|
||||||
|
.main-header .navbar .nav .open > a:focus,
|
||||||
|
.main-header .navbar .nav > .active > a {
|
||||||
|
background: rgba(0, 0, 0, 0.1);
|
||||||
|
color: #f6f6f6;
|
||||||
|
}
|
||||||
|
.main-header .navbar .sidebar-toggle {
|
||||||
|
color: #ffffff;
|
||||||
|
}
|
||||||
|
.main-header .navbar .sidebar-toggle:hover {
|
||||||
|
color: #f6f6f6;
|
||||||
|
background: rgba(0, 0, 0, 0.1);
|
||||||
|
}
|
||||||
|
.main-header .navbar .sidebar-toggle {
|
||||||
|
color: #fff;
|
||||||
|
}
|
||||||
|
.main-header .navbar .sidebar-toggle:hover {
|
||||||
|
background-color: #367fa9;
|
||||||
|
}
|
||||||
|
@media (max-width: 767px) {
|
||||||
|
.main-header .navbar .dropdown-menu li.divider {
|
||||||
|
background-color: rgba(255, 255, 255, 0.1);
|
||||||
|
}
|
||||||
|
.main-header .navbar .dropdown-menu li a {
|
||||||
|
color: #fff;
|
||||||
|
}
|
||||||
|
.main-header .navbar .dropdown-menu li a:hover {
|
||||||
|
background: #367fa9;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.main-header .logo {
|
||||||
|
background-color: transparent;
|
||||||
|
color: #ffffff;
|
||||||
|
border-bottom: 0 solid transparent;
|
||||||
|
}
|
||||||
|
.main-header .logo:hover {
|
||||||
|
background-color: #1890ff;
|
||||||
|
}
|
||||||
|
.main-header li.user-header {
|
||||||
|
background-color: #1890ff;
|
||||||
|
}
|
||||||
|
.content-header {
|
||||||
|
background: transparent;
|
||||||
|
}
|
||||||
|
.sidebar,
|
||||||
|
.left-side {
|
||||||
|
background-color: #ffffff;
|
||||||
|
}
|
||||||
|
.content-wrapper,
|
||||||
|
.main-footer {
|
||||||
|
border-left: 1px solid #eeeeee;
|
||||||
|
}
|
||||||
|
.user-panel > .info,
|
||||||
|
.user-panel > .info > a {
|
||||||
|
color: #555;
|
||||||
|
}
|
||||||
|
.sidebar-menu > li {
|
||||||
|
-webkit-transition: border-left-color 0.3s ease;
|
||||||
|
-o-transition: border-left-color 0.3s ease;
|
||||||
|
transition: border-left-color 0.3s ease;
|
||||||
|
}
|
||||||
|
.sidebar-menu > li.header {
|
||||||
|
color: #848484;
|
||||||
|
background: #f8f8f8;
|
||||||
|
}
|
||||||
|
.sidebar-menu > li > a {
|
||||||
|
border-left: 3px solid transparent;
|
||||||
|
font-weight: 600;
|
||||||
|
}
|
||||||
|
.sidebar-menu > li:hover > a,
|
||||||
|
.sidebar-menu > li.active > a {
|
||||||
|
color: #000;
|
||||||
|
background: #ffffff;
|
||||||
|
}
|
||||||
|
.sidebar-menu > li.active {
|
||||||
|
border-left-color: #1890ff;
|
||||||
|
}
|
||||||
|
.sidebar-menu > li.active > a {
|
||||||
|
font-weight: 600;
|
||||||
|
}
|
||||||
|
.sidebar-menu > li.menu-open > a,
|
||||||
|
.sidebar-menu > li > .treeview-menu {
|
||||||
|
background: #ffffff;
|
||||||
|
}
|
||||||
|
.sidebar a {
|
||||||
|
color: #555;
|
||||||
|
}
|
||||||
|
.sidebar a:hover {
|
||||||
|
text-decoration: none;
|
||||||
|
}
|
||||||
|
.treeview-menu > li > a {
|
||||||
|
color: #555;
|
||||||
|
}
|
||||||
|
.treeview-menu > li.active > a,
|
||||||
|
.treeview-menu > li > a:hover {
|
||||||
|
color: #000;
|
||||||
|
}
|
||||||
|
.sidebar-form {
|
||||||
|
border-radius: 3px;
|
||||||
|
border: 1px solid #d2d6de;
|
||||||
|
margin: 10px 10px;
|
||||||
|
}
|
||||||
|
.sidebar-form input[type="text"],
|
||||||
|
.sidebar-form .btn {
|
||||||
|
box-shadow: none;
|
||||||
|
background-color: #fff;
|
||||||
|
border: 1px solid transparent;
|
||||||
|
height: 35px;
|
||||||
|
}
|
||||||
|
.sidebar-form input[type="text"] {
|
||||||
|
color: #666;
|
||||||
|
border-top-left-radius: 2px;
|
||||||
|
border-top-right-radius: 0;
|
||||||
|
border-bottom-right-radius: 0;
|
||||||
|
border-bottom-left-radius: 2px;
|
||||||
|
}
|
||||||
|
.sidebar-form input[type="text"]:focus,
|
||||||
|
.sidebar-form input[type="text"]:focus + .input-group-btn .btn {
|
||||||
|
background-color: #fff;
|
||||||
|
color: #666;
|
||||||
|
}
|
||||||
|
.sidebar-form input[type="text"]:focus + .input-group-btn .btn {
|
||||||
|
border-left-color: #fff;
|
||||||
|
}
|
||||||
|
.sidebar-form .btn {
|
||||||
|
color: #999;
|
||||||
|
border-top-left-radius: 0;
|
||||||
|
border-top-right-radius: 2px;
|
||||||
|
border-bottom-right-radius: 2px;
|
||||||
|
border-bottom-left-radius: 0;
|
||||||
|
}
|
||||||
|
.main-footer {
|
||||||
|
border-top-color: #d2d6de;
|
||||||
|
}
|
||||||
|
.skin-blue.layout-top-nav .main-header > .logo {
|
||||||
|
background-color: #1890ff;
|
||||||
|
color: #ffffff;
|
||||||
|
border-bottom: 0 solid transparent;
|
||||||
|
}
|
||||||
|
.skin-blue.layout-top-nav .main-header > .logo:hover {
|
||||||
|
background-color: #3b8ab8;
|
||||||
|
}
|
||||||
|
|
||||||
|
.sidebar-menu {padding:0 8px 0 7px;}
|
||||||
|
.sidebar-menu li>a>.pull-right-container {left:0;}
|
||||||
|
.sidebar-menu .treeview-item.active > a {color:#1890ff;background-color:#e7f4ff;border-right:0;border-radius:6px;}
|
||||||
|
|
||||||
|
.btn-primary, .btn-primary:hover, .btn-primary:active,
|
||||||
|
.btn-primary.hover, .btn-primary.focus, .btn-primary:focus,
|
||||||
|
.btn-primary.active.focus, .btn-primary.active:focus, .btn-primary.active:hover,
|
||||||
|
.btn-primary:active.focus, .btn-primary:active:focus, .btn-primary:active:hover,
|
||||||
|
.open>.dropdown-toggle.btn-primary.focus, .open>.dropdown-toggle.btn-primary:focus,
|
||||||
|
.open>.dropdown-toggle.btn-primary:hover, .layui-layer-btn .layui-layer-btn0,
|
||||||
|
.select2-container--default .select2-selection--multiple .select2-selection__choice,
|
||||||
|
.select2-container--default .select2-results__option--highlighted[aria-selected],
|
||||||
|
.wup_container .placeholder .webuploader-pick {background-color:#1890ff!important;border-color:#1890ff;}
|
||||||
|
.form-unit, th[aria-selected=true] .ui-jqgrid-sortable {color:#1890ff;}
|
||||||
|
.form-unit {border-bottom: 1px solid #eee;}
|
||||||
|
|
||||||
|
.box-main>.box-header {border-bottom-color:#eeeeee;}
|
||||||
|
.box-main>.box-header .box-title .fa {color:#1890ff;}
|
||||||
|
.nav-tabs-custom>.nav-tabs>li.active {border-top-color:#3aa0ff;}
|
||||||
|
.form-control:focus,.select2-container--default.select2-container--focus .select2-selection--multiple,
|
||||||
|
.select2-container--default .select2-search--dropdown .select2-search__field,
|
||||||
|
.select2-container--default.select2-container--focus .select2-selection--single,
|
||||||
|
.select2-container--default.select2-container--focus .select2-selection--multiple {border-color:#40a9ff!important;box-shadow:0 0 0 2px rgba(24,144,255,.2);}
|
||||||
|
.table thead tr, .ui-jqgrid-htable thead tr, .ui-jqgrid-hdiv, .ui-jqgrid-hbox {background-color:#f6f6f6;}
|
||||||
|
.ui-jqgrid .ui-jqgrid-htable th.ui-th-column-header, .ui-jqgrid .ui-jqgrid-htable th.ui-th-column,
|
||||||
|
.ui-jqgrid .ui-jqgrid-labels th, .ui-jqgrid .ui-widget-content, .ui-jqgrid tr.ui-row-ltr td,
|
||||||
|
.ui-jqgrid tr.ui-row-rtl td, .ui-jqgrid tr.ui-row-ltr td:last-child {border-color:#eaeaea;}
|
||||||
|
.ui-state-hover td, .ui-widget-content .ui-state-hover td, .ui-widget-header .ui-state-hover td,
|
||||||
|
.ui-state-focus, .ui-widget-content .ui-state-focus, .ui-widget-header .ui-state-focus {background:#f5f5f5;}
|
||||||
|
.ui-jqgrid tr.ui-state-highlight.ui-row-ltr td {background-color:#ecf9ff;}
|
||||||
|
/* .ui-jqgrid tr.ui-row-ltr td {border-right:0!important;} 解开注释,可去除表格单元格的竖边框线 */
|
||||||
|
|
||||||
|
/* 内容页面,内边距风格 */
|
||||||
|
.content-wrapper, .right-side, body, iframe {background-color:#f0f2f5;}
|
||||||
|
.ui-layout-container, .main-content {padding:15px 15px 13px 15px;}
|
||||||
|
.ui-layout-resizer {background:transparent;}
|
||||||
|
.ui-layout-pane>.main-content {padding:0;}
|
||||||
|
.ui-layout-content>.wrapper>.main-content {padding:0;}
|
||||||
|
.box-main,.nav-main,.ui-layout-pane{border-radius:5px;}
|
||||||
|
|
||||||
|
/* 页签-无界风格 */
|
||||||
|
.tabpanel_mover li {height:26px;padding:2px 16px 2px 3px;margin:11px 0 0px 9px;border:0;border-radius:4px;background:#fff;}
|
||||||
|
.tabpanel_mover li .title {padding-left:0;text-align:center;}
|
||||||
|
.tabpanel_mover li.active {background-color:#3aa0ff;}
|
||||||
|
.tabpanel_mover li.active div {color:#fff;}
|
||||||
|
.tabpanel_mover li .closer {font:11px/1 FontAwesome;top:6px;right:4px;background:none;opacity:0.7;}
|
||||||
|
.tabpanel_mover li .closer:before {content:"\f00d";}
|
||||||
|
.tabpanel_mover li .closer:hover {background:none;-moz-transform:scale(1.2);-webkit-transform:scale(1.2);
|
||||||
|
-o-transform:scale(1.2);-ms-transform:scale(1.2);transform:scale(1.2);color:#d30606;}
|
||||||
|
.tabpanel_mover li.active .closer:hover {color:#fff;opacity:0.9;}
|
||||||
|
.tabpanel_tab_content {background-color:transparent;border-bottom-color:#eeeeee;overflow:visible;}
|
||||||
|
.tabpanel_tab_content .tabpanel_left_scroll, .tabpanel_tab_content .tabpanel_right_scroll {top:10px;}
|
||||||
|
.tabpanel_tab_content .tabpanel_mover {margin:0 5px;}
|
||||||
|
.tabpanel_content .html_content {margin-top:-1px;}
|
||||||
|
|
||||||
|
/* 页签-经典风格
|
||||||
|
.tabpanel_mover li {height:26px;padding:1px 16px 2px 3px;margin:6px 0 6px 6px;border:1px solid #e4e4e4;border-radius:3px;background:#fff;}
|
||||||
|
.tabpanel_mover li.active {background-color:#3aa0ff;box-shadow:0 0 5px #e6e6e6;}
|
||||||
|
.tabpanel_mover li.active div {color:#fff;}
|
||||||
|
.tabpanel_mover li .closer {font:11px/1 FontAwesome;top:6px;right:2px;background:none;opacity:0.7;}
|
||||||
|
.tabpanel_mover li .closer:before {content:"\f00d";}
|
||||||
|
.tabpanel_mover li .closer:hover {background:none;-moz-transform:scale(1.2);-webkit-transform:scale(1.2);
|
||||||
|
-o-transform:scale(1.2);-ms-transform:scale(1.2);transform:scale(1.2);color:#d30606;}
|
||||||
|
.tabpanel_mover li.active .closer:hover {color:#fff;opacity:0.9;}
|
||||||
|
.tabpanel_tab_content {background-color:#fafafa;border-bottom-color:#eeeeee;overflow:visible;} */
|
||||||
|
|
||||||
|
/* 页签-下划线风格
|
||||||
|
.tabpanel_mover li {background:#fff;border:0;padding:5px 16px 5px 3px;}
|
||||||
|
.tabpanel_mover li .title {padding-left:0;text-align:center;}
|
||||||
|
.tabpanel_mover li.active {background-color:#fff;border-bottom:2px solid #3aa0ff;}
|
||||||
|
.tabpanel_mover li.active div {color:#0975d9;}
|
||||||
|
.tabpanel_mover li .closer {background:none;font:11px/1 FontAwesome;opacity:0.6;right:3px;top:10px;}
|
||||||
|
.tabpanel_mover li .closer:before {content:"\f00d";}
|
||||||
|
.tabpanel_mover li .closer:hover {background:none;-moz-transform: scale(1.2);-webkit-transform: scale(1.2);
|
||||||
|
-o-transform: scale(1.2);-ms-transform: scale(1.2);transform: scale(1.2);color:#d30606;}
|
||||||
|
.tabpanel_tab_content {height:32px;line-height:32px;border:0;background-color:#fff;overflow:visible;}
|
||||||
|
.tabpanel_tab_content .tabpanel_move_content {min-height:32px;}
|
||||||
|
.tabpanel_tab_content .tabpanel_left_scroll, .tabpanel_tab_content .tabpanel_right_scroll {top:4px;} */
|
||||||
@@ -10,7 +10,6 @@ a, a:hover, a:active, a:focus, .form-unit, th[aria-selected=true] .ui-jqgrid-sor
|
|||||||
background: -ms-linear-gradient(left, #1951be, #2780ec);
|
background: -ms-linear-gradient(left, #1951be, #2780ec);
|
||||||
background: -moz-linear-gradient(left top, #1951be 0%, #2780ec 100%);
|
background: -moz-linear-gradient(left top, #1951be 0%, #2780ec 100%);
|
||||||
background: -o-linear-gradient(#2780ec, #1951be);
|
background: -o-linear-gradient(#2780ec, #1951be);
|
||||||
filter: progid:DXImageTransform.Microsoft.gradient(GradientType = 1,startColorstr='#2780ec', endColorstr='#1951be');
|
|
||||||
}
|
}
|
||||||
.main-header .navbar .nav > li > a {
|
.main-header .navbar .nav > li > a {
|
||||||
color: #ffffff;
|
color: #ffffff;
|
||||||
@@ -166,7 +165,7 @@ a, a:hover, a:active, a:focus, .form-unit, th[aria-selected=true] .ui-jqgrid-sor
|
|||||||
.sidebar-menu li>a>.pull-right-container {left:0;}
|
.sidebar-menu li>a>.pull-right-container {left:0;}
|
||||||
.sidebar-menu .treeview-item.active > a {color:#2a50ec;background-color:#edf2fc;border-right:0;border-radius:6px;}
|
.sidebar-menu .treeview-item.active > a {color:#2a50ec;background-color:#edf2fc;border-right:0;border-radius:6px;}
|
||||||
|
|
||||||
.content-wrapper, .right-side, body {background-color:#f8f8f8;}
|
.content-wrapper, .right-side, body {background-color:#f0f2f5;}
|
||||||
|
|
||||||
.btn-primary, .btn-primary:hover, .btn-primary:active,
|
.btn-primary, .btn-primary:hover, .btn-primary:active,
|
||||||
.btn-primary.hover, .btn-primary.focus, .btn-primary:focus,
|
.btn-primary.hover, .btn-primary.focus, .btn-primary:focus,
|
||||||
@@ -180,7 +179,7 @@ a, a:hover, a:active, a:focus, .form-unit, th[aria-selected=true] .ui-jqgrid-sor
|
|||||||
.form-unit, th[aria-selected=true] .ui-jqgrid-sortable {color:#1e5edb;}
|
.form-unit, th[aria-selected=true] .ui-jqgrid-sortable {color:#1e5edb;}
|
||||||
.form-unit {border-bottom: 1px solid #eee;}
|
.form-unit {border-bottom: 1px solid #eee;}
|
||||||
|
|
||||||
.tabpanel_mover li {padding:1px 16px 2px 3px;margin:6px 0 6px 6px;border:1px solid #e4e4e4;border-radius:3px;background:#fff;}
|
.tabpanel_mover li {height:26px;padding:1px 16px 2px 3px;margin:6px 0 6px 6px;border:1px solid #e4e4e4;border-radius:3px;background:#fff;}
|
||||||
.tabpanel_mover li.active {background-color:#1e5edb;box-shadow:0 0 5px #e6e6e6;}
|
.tabpanel_mover li.active {background-color:#1e5edb;box-shadow:0 0 5px #e6e6e6;}
|
||||||
.tabpanel_mover li.active div {color:#fff;}
|
.tabpanel_mover li.active div {color:#fff;}
|
||||||
.tabpanel_mover li .closer {font:11px/1 FontAwesome;top:6px;right:2px;background:none;opacity:0.7;}
|
.tabpanel_mover li .closer {font:11px/1 FontAwesome;top:6px;right:2px;background:none;opacity:0.7;}
|
||||||
|
|||||||
@@ -0,0 +1,248 @@
|
|||||||
|
/*
|
||||||
|
* http://jeesite.com
|
||||||
|
*/
|
||||||
|
a, a:hover, a:active, a:focus, .form-unit, th[aria-selected=true] .ui-jqgrid-sortable {
|
||||||
|
color:#1e5edb;
|
||||||
|
}
|
||||||
|
.main-header .navbar {
|
||||||
|
background: #1951be;
|
||||||
|
background: -webkit-gradient(linear, left bottom, right top, color-stop(0, #1951be), color-stop(1, #2780ec));
|
||||||
|
background: -ms-linear-gradient(left, #1951be, #2780ec);
|
||||||
|
background: -moz-linear-gradient(left top, #1951be 0%, #2780ec 100%);
|
||||||
|
background: -o-linear-gradient(#2780ec, #1951be);
|
||||||
|
}
|
||||||
|
.main-header .navbar .nav > li > a {
|
||||||
|
color: #ffffff;
|
||||||
|
}
|
||||||
|
.main-header .navbar .nav > li > a:hover,
|
||||||
|
.main-header .navbar .nav > li > a:active,
|
||||||
|
.main-header .navbar .nav > li > a:focus,
|
||||||
|
.main-header .navbar .nav .open > a,
|
||||||
|
.main-header .navbar .nav .open > a:hover,
|
||||||
|
.main-header .navbar .nav .open > a:focus,
|
||||||
|
.main-header .navbar .nav > .active > a {
|
||||||
|
background: rgba(0, 0, 0, 0.1);
|
||||||
|
color: #f6f6f6;
|
||||||
|
}
|
||||||
|
.main-header .navbar .sidebar-toggle {
|
||||||
|
color: #ffffff;
|
||||||
|
}
|
||||||
|
.main-header .navbar .sidebar-toggle:hover {
|
||||||
|
color: #f6f6f6;
|
||||||
|
background: rgba(0, 0, 0, 0.1);
|
||||||
|
}
|
||||||
|
.main-header .navbar .sidebar-toggle {
|
||||||
|
color: #fff;
|
||||||
|
}
|
||||||
|
.main-header .navbar .sidebar-toggle:hover {
|
||||||
|
background-color: #367fa9;
|
||||||
|
}
|
||||||
|
@media (max-width: 767px) {
|
||||||
|
.main-header .navbar .dropdown-menu li.divider {
|
||||||
|
background-color: rgba(255, 255, 255, 0.1);
|
||||||
|
}
|
||||||
|
.main-header .navbar .dropdown-menu li a {
|
||||||
|
color: #fff;
|
||||||
|
}
|
||||||
|
.main-header .navbar .dropdown-menu li a:hover {
|
||||||
|
background: #367fa9;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.main-header .logo {
|
||||||
|
background-color: transparent;
|
||||||
|
color: #ffffff;
|
||||||
|
border-bottom: 0 solid transparent;
|
||||||
|
}
|
||||||
|
.main-header .logo:hover {
|
||||||
|
background-color: #1951be;
|
||||||
|
}
|
||||||
|
.main-header li.user-header {
|
||||||
|
background-color: #1951be;
|
||||||
|
}
|
||||||
|
.content-header {
|
||||||
|
background: transparent;
|
||||||
|
}
|
||||||
|
.sidebar,
|
||||||
|
.left-side {
|
||||||
|
background-color: #ffffff;
|
||||||
|
}
|
||||||
|
.content-wrapper,
|
||||||
|
.main-footer {
|
||||||
|
border-left: 1px solid #eeeeee;
|
||||||
|
}
|
||||||
|
.user-panel > .info,
|
||||||
|
.user-panel > .info > a {
|
||||||
|
color: #555;
|
||||||
|
}
|
||||||
|
.sidebar-menu > li {
|
||||||
|
-webkit-transition: border-left-color 0.3s ease;
|
||||||
|
-o-transition: border-left-color 0.3s ease;
|
||||||
|
transition: border-left-color 0.3s ease;
|
||||||
|
}
|
||||||
|
.sidebar-menu > li.header {
|
||||||
|
color: #848484;
|
||||||
|
background: #f8f8f8;
|
||||||
|
}
|
||||||
|
.sidebar-menu > li > a {
|
||||||
|
border-left: 3px solid transparent;
|
||||||
|
font-weight: 600;
|
||||||
|
}
|
||||||
|
.sidebar-menu > li:hover > a,
|
||||||
|
.sidebar-menu > li.active > a {
|
||||||
|
color: #000;
|
||||||
|
background: #ffffff;
|
||||||
|
}
|
||||||
|
.sidebar-menu > li.active {
|
||||||
|
border-left-color: #1e5edb;
|
||||||
|
}
|
||||||
|
.sidebar-menu > li.active > a {
|
||||||
|
font-weight: 600;
|
||||||
|
}
|
||||||
|
.sidebar-menu > li.menu-open > a,
|
||||||
|
.sidebar-menu > li > .treeview-menu {
|
||||||
|
background: #ffffff;
|
||||||
|
}
|
||||||
|
.sidebar a {
|
||||||
|
color: #555;
|
||||||
|
}
|
||||||
|
.sidebar a:hover {
|
||||||
|
text-decoration: none;
|
||||||
|
}
|
||||||
|
.treeview-menu > li > a {
|
||||||
|
color: #555;
|
||||||
|
}
|
||||||
|
.treeview-menu > li.active > a,
|
||||||
|
.treeview-menu > li > a:hover {
|
||||||
|
color: #000;
|
||||||
|
}
|
||||||
|
.sidebar-form {
|
||||||
|
border-radius: 3px;
|
||||||
|
border: 1px solid #d2d6de;
|
||||||
|
margin: 10px 10px;
|
||||||
|
}
|
||||||
|
.sidebar-form input[type="text"],
|
||||||
|
.sidebar-form .btn {
|
||||||
|
box-shadow: none;
|
||||||
|
background-color: #fff;
|
||||||
|
border: 1px solid transparent;
|
||||||
|
height: 35px;
|
||||||
|
}
|
||||||
|
.sidebar-form input[type="text"] {
|
||||||
|
color: #666;
|
||||||
|
border-top-left-radius: 2px;
|
||||||
|
border-top-right-radius: 0;
|
||||||
|
border-bottom-right-radius: 0;
|
||||||
|
border-bottom-left-radius: 2px;
|
||||||
|
}
|
||||||
|
.sidebar-form input[type="text"]:focus,
|
||||||
|
.sidebar-form input[type="text"]:focus + .input-group-btn .btn {
|
||||||
|
background-color: #fff;
|
||||||
|
color: #666;
|
||||||
|
}
|
||||||
|
.sidebar-form input[type="text"]:focus + .input-group-btn .btn {
|
||||||
|
border-left-color: #fff;
|
||||||
|
}
|
||||||
|
.sidebar-form .btn {
|
||||||
|
color: #999;
|
||||||
|
border-top-left-radius: 0;
|
||||||
|
border-top-right-radius: 2px;
|
||||||
|
border-bottom-right-radius: 2px;
|
||||||
|
border-bottom-left-radius: 0;
|
||||||
|
}
|
||||||
|
.main-footer {
|
||||||
|
border-top-color: #d2d6de;
|
||||||
|
}
|
||||||
|
.skin-blue.layout-top-nav .main-header > .logo {
|
||||||
|
background-color: #1e5edb;
|
||||||
|
color: #ffffff;
|
||||||
|
border-bottom: 0 solid transparent;
|
||||||
|
}
|
||||||
|
.skin-blue.layout-top-nav .main-header > .logo:hover {
|
||||||
|
background-color: #3b8ab8;
|
||||||
|
}
|
||||||
|
|
||||||
|
.sidebar-menu {padding:0 8px 0 7px;}
|
||||||
|
.sidebar-menu li>a>.pull-right-container {left:0;}
|
||||||
|
.sidebar-menu .treeview-item.active > a {color:#2a50ec;background-color:#edf2fc;border-right:0;border-radius:6px;}
|
||||||
|
|
||||||
|
.btn-primary, .btn-primary:hover, .btn-primary:active,
|
||||||
|
.btn-primary.hover, .btn-primary.focus, .btn-primary:focus,
|
||||||
|
.btn-primary.active.focus, .btn-primary.active:focus, .btn-primary.active:hover,
|
||||||
|
.btn-primary:active.focus, .btn-primary:active:focus, .btn-primary:active:hover,
|
||||||
|
.open>.dropdown-toggle.btn-primary.focus, .open>.dropdown-toggle.btn-primary:focus,
|
||||||
|
.open>.dropdown-toggle.btn-primary:hover, .layui-layer-btn .layui-layer-btn0,
|
||||||
|
.select2-container--default .select2-selection--multiple .select2-selection__choice,
|
||||||
|
.select2-container--default .select2-results__option--highlighted[aria-selected],
|
||||||
|
.wup_container .placeholder .webuploader-pick {background-color:#1e5edb!important;border-color:#1e5edb!important;}
|
||||||
|
.form-unit, th[aria-selected=true] .ui-jqgrid-sortable {color:#1e5edb;}
|
||||||
|
.form-unit {border-bottom: 1px solid #eee;}
|
||||||
|
|
||||||
|
/* .main-content {padding:10px;}
|
||||||
|
.ui-layout-container {padding:10px;}
|
||||||
|
.ui-layout-resizer {background:transparent;}
|
||||||
|
.ui-layout-pane {box-shadow:0 0 5px #e0e0e0;}
|
||||||
|
.ui-layout-pane>.main-content {padding:0;}
|
||||||
|
.ui-layout-content>.wrapper>.main-content {padding:0;}
|
||||||
|
.box-main,.nav-main{border-radius:3px;box-shadow:0 0 5px #e0e0e0;} 解开注释,可给内容页面,添加内边距样式 */
|
||||||
|
.box-main>.box-header {border-bottom-color:#eeeeee;}
|
||||||
|
.box-main>.box-header .box-title .fa {color:#1e5edb;}
|
||||||
|
.nav-tabs-custom>.nav-tabs>li.active {border-top-color:#1e5edb;}
|
||||||
|
.form-control:focus,.select2-container--default.select2-container--focus .select2-selection--multiple,
|
||||||
|
.select2-container--default .select2-search--dropdown .select2-search__field,
|
||||||
|
.select2-container--default.select2-container--focus .select2-selection--single,
|
||||||
|
.select2-container--default.select2-container--focus .select2-selection--multiple {border-color:#557bfa!important;box-shadow:0 0 0 2px rgba(24,80,236,.2);}
|
||||||
|
.table thead tr, .ui-jqgrid-htable thead tr, .ui-jqgrid-hdiv, .ui-jqgrid-hbox {background-color:#f6f6f6;}
|
||||||
|
.ui-jqgrid .ui-jqgrid-htable th.ui-th-column-header, .ui-jqgrid .ui-jqgrid-htable th.ui-th-column,
|
||||||
|
.ui-jqgrid .ui-jqgrid-labels th, .ui-jqgrid .ui-widget-content, .ui-jqgrid tr.ui-row-ltr td,
|
||||||
|
.ui-jqgrid tr.ui-row-rtl td, .ui-jqgrid tr.ui-row-ltr td:last-child {border-color:#eaeaea;}
|
||||||
|
.ui-state-hover td, .ui-widget-content .ui-state-hover td, .ui-widget-header .ui-state-hover td,
|
||||||
|
.ui-state-focus, .ui-widget-content .ui-state-focus, .ui-widget-header .ui-state-focus {background:#f5f5f5;}
|
||||||
|
.ui-jqgrid tr.ui-state-highlight.ui-row-ltr td {background-color:#f0f5ff;}
|
||||||
|
/* .ui-jqgrid tr.ui-row-ltr td {border-right:0!important;} 解开注释,可去除表格单元格的竖边框线 */
|
||||||
|
|
||||||
|
/* 内容页面,内边距风格 */
|
||||||
|
.content-wrapper, .right-side, body, iframe {background-color:#f0f2f5;}
|
||||||
|
.ui-layout-container, .main-content {padding:15px 15px 13px 15px;}
|
||||||
|
.ui-layout-resizer {background:transparent;}
|
||||||
|
.ui-layout-pane>.main-content {padding:0;}
|
||||||
|
.ui-layout-content>.wrapper>.main-content {padding:0;}
|
||||||
|
.box-main,.nav-main,.ui-layout-pane{border-radius:5px;}
|
||||||
|
|
||||||
|
/* 页签-无界风格 */
|
||||||
|
.tabpanel_mover li {height:26px;padding:2px 16px 2px 3px;margin:11px 0 0px 9px;border:0;border-radius:4px;background:#fff;}
|
||||||
|
.tabpanel_mover li .title {padding-left:0;text-align:center;}
|
||||||
|
.tabpanel_mover li.active {background-color:#316ee6;}
|
||||||
|
.tabpanel_mover li.active div {color:#fff;}
|
||||||
|
.tabpanel_mover li .closer {font:11px/1 FontAwesome;top:6px;right:4px;background:none;opacity:0.7;}
|
||||||
|
.tabpanel_mover li .closer:before {content:"\f00d";}
|
||||||
|
.tabpanel_mover li .closer:hover {background:none;-moz-transform:scale(1.2);-webkit-transform:scale(1.2);
|
||||||
|
-o-transform:scale(1.2);-ms-transform:scale(1.2);transform:scale(1.2);color:#d30606;}
|
||||||
|
.tabpanel_mover li.active .closer:hover {color:#fff;opacity:0.9;}
|
||||||
|
.tabpanel_tab_content {background-color:transparent;border-bottom-color:#eeeeee;overflow:visible;}
|
||||||
|
.tabpanel_tab_content .tabpanel_left_scroll, .tabpanel_tab_content .tabpanel_right_scroll {top:10px;}
|
||||||
|
.tabpanel_tab_content .tabpanel_mover {margin:0 5px;}
|
||||||
|
.tabpanel_content .html_content {margin-top:-1px;}
|
||||||
|
|
||||||
|
/* 页签-经典风格
|
||||||
|
.tabpanel_mover li {height:26px;padding:1px 16px 2px 3px;margin:6px 0 6px 6px;border:1px solid #e4e4e4;border-radius:3px;background:#fff;}
|
||||||
|
.tabpanel_mover li.active {background-color:#1e5edb;box-shadow:0 0 5px #e6e6e6;}
|
||||||
|
.tabpanel_mover li.active div {color:#fff;}
|
||||||
|
.tabpanel_mover li .closer {font:11px/1 FontAwesome;top:6px;right:2px;background:none;opacity:0.7;}
|
||||||
|
.tabpanel_mover li .closer:before {content:"\f00d";}
|
||||||
|
.tabpanel_mover li .closer:hover {background:none;-moz-transform:scale(1.2);-webkit-transform:scale(1.2);
|
||||||
|
-o-transform:scale(1.2);-ms-transform:scale(1.2);transform:scale(1.2);color:#d30606;}
|
||||||
|
.tabpanel_mover li.active .closer:hover {color:#fff;opacity:0.9;}
|
||||||
|
.tabpanel_tab_content {background-color:#fafafa;border-bottom-color:#eeeeee;overflow:visible;} */
|
||||||
|
|
||||||
|
/* 页签-下划线风格
|
||||||
|
.tabpanel_mover li {background:#fff;border:0;padding:5px 16px 5px 3px;}
|
||||||
|
.tabpanel_mover li .title {padding-left:0;text-align:center;}
|
||||||
|
.tabpanel_mover li.active {background-color:#fff;border-bottom:2px solid #1e5edb;}
|
||||||
|
.tabpanel_mover li.active div {color:#0975d9;}
|
||||||
|
.tabpanel_mover li .closer {background:none;font:11px/1 FontAwesome;opacity:0.6;right:3px;top:10px;}
|
||||||
|
.tabpanel_mover li .closer:before {content:"\f00d";}
|
||||||
|
.tabpanel_mover li .closer:hover {background:none;-moz-transform: scale(1.2);-webkit-transform: scale(1.2);
|
||||||
|
-o-transform: scale(1.2);-ms-transform: scale(1.2);transform: scale(1.2);color:#d30606;}
|
||||||
|
.tabpanel_tab_content {height:32px;line-height:32px;border:0;background-color:#fff;overflow:visible;}
|
||||||
|
.tabpanel_tab_content .tabpanel_move_content {min-height:32px;}
|
||||||
|
.tabpanel_tab_content .tabpanel_left_scroll, .tabpanel_tab_content .tabpanel_right_scroll {top:4px;} */
|
||||||
@@ -1,174 +0,0 @@
|
|||||||
/** 图标字体 **/
|
|
||||||
@font-face {font-family:'laydate-icon';
|
|
||||||
src:url('./font/iconfont.eot');
|
|
||||||
src:url('./font/iconfont.eot#iefix') format('embedded-opentype'),
|
|
||||||
url('./font/iconfont.svg#iconfont') format('svg'),
|
|
||||||
url('./font/iconfont.woff') format('woff'),
|
|
||||||
url('./font/iconfont.ttf') format('truetype');
|
|
||||||
}
|
|
||||||
|
|
||||||
.laydate-icon{
|
|
||||||
font-family:"laydate-icon"!important;
|
|
||||||
font-size:16px;
|
|
||||||
font-style:normal;
|
|
||||||
-webkit-font-smoothing:antialiased;
|
|
||||||
-moz-osx-font-smoothing:grayscale;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
|
|
||||||
@Name:laydata
|
|
||||||
@Author:贤心
|
|
||||||
|
|
||||||
**/
|
|
||||||
|
|
||||||
html #layuicss-laydate{display:none;position:absolute;width:1989px;}
|
|
||||||
|
|
||||||
/* 初始化 */
|
|
||||||
.layui-laydate *{margin:0;padding:0;}
|
|
||||||
|
|
||||||
/* 主体结构 */
|
|
||||||
.layui-laydate, .layui-laydate *{box-sizing:border-box;}
|
|
||||||
.layui-laydate{position:absolute;z-index:66666666;margin:5px 0;border-radius:2px;font-size:14px;-webkit-animation-duration:0.3s;animation-duration:0.3s;-webkit-animation-fill-mode:both;animation-fill-mode:both;}
|
|
||||||
.layui-laydate-main{width:260px;}
|
|
||||||
.layui-laydate-header *,
|
|
||||||
.layui-laydate-content td,
|
|
||||||
.layui-laydate-list li{transition-duration:.3s;-webkit-transition-duration:.3s;}
|
|
||||||
|
|
||||||
@-webkit-keyframes laydate-upbit{ /* 微微往上滑入 */
|
|
||||||
from {-webkit-transform:translate3d(0, 20px, 0);opacity:0.3;}
|
|
||||||
to {-webkit-transform:translate3d(0, 0, 0); opacity:1;}
|
|
||||||
}
|
|
||||||
@keyframes laydate-upbit{
|
|
||||||
from {transform:translate3d(0, 20px, 0); opacity:0.3;}
|
|
||||||
to {transform:translate3d(0, 0, 0); opacity:1;}
|
|
||||||
}
|
|
||||||
.layui-laydate{-webkit-animation-name:laydate-upbit;animation-name:laydate-upbit;}
|
|
||||||
.layui-laydate-static{ position:relative;z-index:0;display:inline-block;margin:0;-webkit-animation:none;animation:none;}
|
|
||||||
|
|
||||||
/* 展开年月列表时 */
|
|
||||||
.laydate-ym-show .laydate-prev-m,
|
|
||||||
.laydate-ym-show .laydate-next-m{display:none!important;}
|
|
||||||
.laydate-ym-show .laydate-prev-y,
|
|
||||||
.laydate-ym-show .laydate-next-y{display:inline-block!important;}
|
|
||||||
.laydate-ym-show .laydate-set-ym span[lay-type="month"]{display:none!important;}
|
|
||||||
|
|
||||||
/* 展开时间列表时 */
|
|
||||||
.laydate-time-show .layui-laydate-header .layui-icon,
|
|
||||||
.laydate-time-show .laydate-set-ym span[lay-type="year"],
|
|
||||||
.laydate-time-show .laydate-set-ym span[lay-type="month"]{display:none!important;}
|
|
||||||
|
|
||||||
/* 头部结构 */
|
|
||||||
.layui-laydate-header{position:relative;line-height:22px;padding:6px 50px 5px;}
|
|
||||||
.layui-laydate-header *{display:inline-block;vertical-align:bottom;}
|
|
||||||
.layui-laydate-header i{position:absolute;top:6px;padding:0 2px;color:#999;font-size:14px;cursor:pointer;}
|
|
||||||
.layui-laydate-header i.laydate-prev-y{left:15px;}
|
|
||||||
.layui-laydate-header i.laydate-prev-m{left:45px;}
|
|
||||||
.layui-laydate-header i.laydate-next-y{right:15px;}
|
|
||||||
.layui-laydate-header i.laydate-next-m{right:45px;}
|
|
||||||
.laydate-set-ym{width:100%;text-align:center;box-sizing:border-box;text-overflow:ellipsis;overflow:hidden;white-space:nowrap;}
|
|
||||||
.laydate-set-ym span{padding:0 5px;cursor:pointer;}
|
|
||||||
.laydate-time-text{cursor:default!important;}
|
|
||||||
|
|
||||||
/* 主体结构 */
|
|
||||||
.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:0px;text-align:center;}
|
|
||||||
.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%;height:100%;line-height:30px;font-size:12px;overflow:hidden;}
|
|
||||||
.laydate-day-mark::after{position:absolute;content:'';right:2px;top:2px;width:5px;height:5px;border-radius:50%;}
|
|
||||||
|
|
||||||
/* 底部结构 */
|
|
||||||
.layui-laydate-footer{position:relative;height:36px;line-height:22px;padding:6px 15px;}
|
|
||||||
.layui-laydate-footer span{margin-right:15px;display:inline-block;cursor:pointer;font-size:12px;}
|
|
||||||
.layui-laydate-footer span:hover{color:#08c;}
|
|
||||||
.laydate-footer-btns{position:absolute;right:5px;top:5px;}
|
|
||||||
.laydate-footer-btns span{margin:0 0 0 3px;padding:0 8px;border:1px solid #C9C9C9;background-color:#fff; white-space:nowrap;vertical-align:top;border-radius:4px;}
|
|
||||||
|
|
||||||
/* 年月列表 */
|
|
||||||
.layui-laydate-list{position:absolute;left:0;top:0;width:100%;height:100%;padding:10px;box-sizing:border-box;background-color:#fff;}
|
|
||||||
.layui-laydate-list>li{position:relative;display:inline-block;width:33.3%;height:36px;line-height:36px;margin:3px 0;vertical-align:middle;text-align:center;cursor:pointer;}
|
|
||||||
.laydate-month-list>li{width:25%;margin:17px 0;}
|
|
||||||
.laydate-time-list{}
|
|
||||||
.laydate-time-list>li{height:100%;margin:0;line-height:normal;cursor:default;}
|
|
||||||
.laydate-time-list p{position:relative;top:-4px;line-height:29px;}
|
|
||||||
.laydate-time-list ol{height:181px;overflow:hidden;}
|
|
||||||
.laydate-time-list>li:hover ol{overflow-y:auto;}
|
|
||||||
.laydate-time-list ol li{width:130%;padding-left:27px;line-height:30px;text-align:left;cursor:pointer;}
|
|
||||||
|
|
||||||
/* 提示 */
|
|
||||||
.layui-laydate-hint{position:absolute;top:115px;left:50%;width:250px;margin-left:-125px;line-height:20px;padding:15px;text-align:center;font-size:12px;color:#FF5722;}
|
|
||||||
|
|
||||||
|
|
||||||
/* 双日历 */
|
|
||||||
.layui-laydate-range{width:523px;}
|
|
||||||
.layui-laydate-range .layui-laydate-main{display:inline-block;vertical-align:middle;}
|
|
||||||
.layui-laydate-range .laydate-main-list-0 .laydate-next-m,
|
|
||||||
.layui-laydate-range .laydate-main-list-0 .laydate-next-y,
|
|
||||||
.layui-laydate-range .laydate-main-list-1 .laydate-prev-y,
|
|
||||||
.layui-laydate-range .laydate-main-list-1 .laydate-prev-m{display:none;}
|
|
||||||
.layui-laydate-range .laydate-main-list-1 .layui-laydate-content{border-left:1px solid #e2e2e2;}
|
|
||||||
|
|
||||||
|
|
||||||
/* 默认简约主题 */
|
|
||||||
.layui-laydate, .layui-laydate-hint{border:1px solid #d2d2d2;box-shadow:0 2px 4px rgba(0,0,0,.12);border-radius:5px;background-color:#fff;color:#666;}
|
|
||||||
.layui-laydate-header{border-bottom:1px solid #e2e2e2;}
|
|
||||||
.layui-laydate-header i:hover,
|
|
||||||
.layui-laydate-header span:hover{color:#08c;}
|
|
||||||
.layui-laydate-content{border-top:none 0;border-bottom:none 0;}
|
|
||||||
.layui-laydate-content th{color:#333;}
|
|
||||||
.layui-laydate-content td{color:#666;}
|
|
||||||
.layui-laydate-content td.laydate-selected{background-color:#c2eaff;}
|
|
||||||
.laydate-selected:hover{background-color:#c2eaff!important;}
|
|
||||||
.layui-laydate-content td:hover,
|
|
||||||
.layui-laydate-list li:hover{background-color:#eaeaea;color:#333;}
|
|
||||||
.laydate-time-list li ol{margin:0;padding:0;border:1px solid #e2e2e2;border-left-width:0;}
|
|
||||||
.laydate-time-list li:first-child ol{border-left-width:1px;}
|
|
||||||
.laydate-time-list>li:hover{background:none;}
|
|
||||||
.layui-laydate-content .laydate-day-prev,
|
|
||||||
.layui-laydate-content .laydate-day-next{color:#d2d2d2;}
|
|
||||||
.laydate-selected.laydate-day-prev,
|
|
||||||
.laydate-selected.laydate-day-next{background-color:#f8f8f8!important;}
|
|
||||||
.layui-laydate-footer{border-top:1px solid #e2e2e2;}
|
|
||||||
.layui-laydate-hint{color:#FF5722;}
|
|
||||||
.laydate-day-mark::after{background-color:#08c;}
|
|
||||||
.layui-laydate-content td.layui-this .laydate-day-mark::after{display:none;}
|
|
||||||
.layui-laydate-footer span[lay-type="date"]{color:#08c;}
|
|
||||||
.layui-laydate .layui-this{background-color:#08c!important;color:#fff!important;}
|
|
||||||
.layui-laydate .laydate-btns-confirm{background-color:#139ce0;border:1px solid #139ce0;color:#fff;}
|
|
||||||
.layui-laydate .laydate-btns-confirm:hover{background-color:#08c;color:#fff;}
|
|
||||||
.layui-laydate .laydate-disabled,
|
|
||||||
.layui-laydate .laydate-disabled:hover{background:none!important;color:#d2d2d2!important;border-color:#d2d2d2;cursor:not-allowed!important;-moz-user-select:none;-webkit-user-select:none;-ms-user-select:none;}
|
|
||||||
|
|
||||||
|
|
||||||
/* 墨绿/自定义背景色主题 */
|
|
||||||
.laydate-theme-molv{border:none;}
|
|
||||||
.laydate-theme-molv.layui-laydate-range{width:548px}
|
|
||||||
.laydate-theme-molv .layui-laydate-main{width:274px;}
|
|
||||||
.laydate-theme-molv .layui-laydate-header{border:none;background-color:#009688;}
|
|
||||||
.laydate-theme-molv .layui-laydate-header i,
|
|
||||||
.laydate-theme-molv .layui-laydate-header span{color:#f6f6f6;}
|
|
||||||
.laydate-theme-molv .layui-laydate-header i:hover,
|
|
||||||
.laydate-theme-molv .layui-laydate-header span:hover{color:#fff;}
|
|
||||||
.laydate-theme-molv .layui-laydate-content{border:1px solid #e2e2e2;border-top:none;border-bottom:none;}
|
|
||||||
.laydate-theme-molv .laydate-main-list-1 .layui-laydate-content{border-left:none;}
|
|
||||||
.laydate-theme-molv .layui-laydate-footer{border:1px solid #e2e2e2;}
|
|
||||||
|
|
||||||
/* 格子主题 */
|
|
||||||
.laydate-theme-grid .layui-laydate-content td,
|
|
||||||
.laydate-theme-grid .layui-laydate-content thead,
|
|
||||||
.laydate-theme-grid .laydate-year-list>li,
|
|
||||||
.laydate-theme-grid .laydate-month-list>li{border:1px solid #e2e2e2;}
|
|
||||||
.laydate-theme-grid .laydate-selected,
|
|
||||||
.laydate-theme-grid .laydate-selected:hover{background-color:#f2f2f2!important;color:#009688!important;}
|
|
||||||
.laydate-theme-grid .laydate-selected.laydate-day-prev,
|
|
||||||
.laydate-theme-grid .laydate-selected.laydate-day-next{color:#d2d2d2!important;}
|
|
||||||
.laydate-theme-grid .laydate-year-list,
|
|
||||||
.laydate-theme-grid .laydate-month-list{margin:1px 0 0 1px;}
|
|
||||||
.laydate-theme-grid .laydate-year-list>li,
|
|
||||||
.laydate-theme-grid .laydate-month-list>li{margin:0 -1px -1px 0;}
|
|
||||||
.laydate-theme-grid .laydate-year-list>li{height:43px;line-height:43px;}
|
|
||||||
.laydate-theme-grid .laydate-month-list>li{height:71px;line-height:71px;}
|
|
||||||
|
|
||||||
|
Before Width: | Height: | Size: 3.0 KiB After Width: | Height: | Size: 3.0 KiB |
@@ -0,0 +1,171 @@
|
|||||||
|
/** 图标字体 **/
|
||||||
|
@font-face {font-family: 'laydate-icon';
|
||||||
|
src: url('./font/iconfont.eot');
|
||||||
|
src: url('./font/iconfont.eot#iefix') format('embedded-opentype'),
|
||||||
|
url('./font/iconfont.svg#iconfont') format('svg'),
|
||||||
|
url('./font/iconfont.woff') format('woff'),
|
||||||
|
url('./font/iconfont.ttf') format('truetype');
|
||||||
|
}
|
||||||
|
|
||||||
|
.laydate-icon{
|
||||||
|
font-family:"laydate-icon" !important;
|
||||||
|
font-size: 16px;
|
||||||
|
font-style: normal;
|
||||||
|
-webkit-font-smoothing: antialiased;
|
||||||
|
-moz-osx-font-smoothing: grayscale;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
|
||||||
|
@Name: laydata
|
||||||
|
|
||||||
|
**/
|
||||||
|
|
||||||
|
|
||||||
|
html #layuicss-laydate{display: none; position: absolute; width: 1989px;}
|
||||||
|
|
||||||
|
/* 初始化 */
|
||||||
|
.layui-laydate *{margin: 0; padding: 0;}
|
||||||
|
|
||||||
|
/* 主体结构 */
|
||||||
|
.layui-laydate, .layui-laydate *{box-sizing: border-box;}
|
||||||
|
.layui-laydate{position: absolute; z-index: 66666666; margin: 5px 0; border-radius: 2px; font-size: 14px; -webkit-animation-duration: 0.2s; animation-duration: 0.2s; -webkit-animation-fill-mode: both; animation-fill-mode: both;}
|
||||||
|
.layui-laydate-main{width: 260px;}
|
||||||
|
.layui-laydate-header *,
|
||||||
|
.layui-laydate-content td,
|
||||||
|
.layui-laydate-list li{transition-duration: .3s; -webkit-transition-duration: .3s;}
|
||||||
|
|
||||||
|
/* 微微往下滑入 */
|
||||||
|
@keyframes laydate-downbit {
|
||||||
|
0% {opacity: 0.3; transform: translate3d(0, -5px, 0);}
|
||||||
|
100% {opacity: 1; transform: translate3d(0, 0, 0);}
|
||||||
|
}
|
||||||
|
|
||||||
|
.layui-laydate{animation-name: laydate-downbit;}
|
||||||
|
.layui-laydate-static{ position: relative; z-index: 0; display: inline-block; margin: 0; -webkit-animation: none; animation: none;}
|
||||||
|
|
||||||
|
/* 展开年月列表时 */
|
||||||
|
.laydate-ym-show .laydate-prev-m,
|
||||||
|
.laydate-ym-show .laydate-next-m{display: none !important;}
|
||||||
|
.laydate-ym-show .laydate-prev-y,
|
||||||
|
.laydate-ym-show .laydate-next-y{display: inline-block !important;}
|
||||||
|
.laydate-ym-show .laydate-set-ym span[lay-type="month"]{display: none !important;}
|
||||||
|
|
||||||
|
/* 展开时间列表时 */
|
||||||
|
.laydate-time-show .layui-laydate-header .layui-icon,
|
||||||
|
.laydate-time-show .laydate-set-ym span[lay-type="year"],
|
||||||
|
.laydate-time-show .laydate-set-ym span[lay-type="month"]{display: none !important;}
|
||||||
|
|
||||||
|
/* 头部结构 */
|
||||||
|
.layui-laydate-header{position: relative; line-height: 22px; padding: 6px 50px 5px;}
|
||||||
|
.layui-laydate-header *{display: inline-block; vertical-align: bottom;}
|
||||||
|
.layui-laydate-header i{position: absolute; top: 6px; padding: 0 2px; color: #999; font-size: 14px; cursor: pointer;}
|
||||||
|
.layui-laydate-header i.laydate-prev-y{left: 15px;}
|
||||||
|
.layui-laydate-header i.laydate-prev-m{left: 45px;}
|
||||||
|
.layui-laydate-header i.laydate-next-y{right: 15px;}
|
||||||
|
.layui-laydate-header i.laydate-next-m{right: 45px;}
|
||||||
|
.laydate-set-ym{width: 100%; text-align: center; box-sizing: border-box; text-overflow: ellipsis; overflow: hidden; white-space: nowrap;}
|
||||||
|
.laydate-set-ym span{padding: 0 5px; cursor: pointer;}
|
||||||
|
.laydate-time-text{cursor: default !important;}
|
||||||
|
|
||||||
|
/* 主体结构 */
|
||||||
|
.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 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;}
|
||||||
|
.laydate-day-mark::after{position: absolute; content:''; right: 2px; top: 2px; width: 5px; height: 5px; border-radius: 50%;}
|
||||||
|
|
||||||
|
/* 底部结构 */
|
||||||
|
.layui-laydate-footer{position: relative; height: 36px; line-height: 22px; padding: 6px 15px;}
|
||||||
|
.layui-laydate-footer span{display: inline-block; vertical-align: top; height: 24px; line-height: 22px; padding: 0 10px; border: 1px solid #C9C9C9; border-radius: 2px; background-color: #fff; font-size: 12px; cursor: pointer; white-space: nowrap; transition: all .3s;}
|
||||||
|
.layui-laydate-footer span:hover{color: #08c;}
|
||||||
|
.layui-laydate-footer span.layui-laydate-preview{cursor: default; border-color: transparent !important;}
|
||||||
|
.layui-laydate-footer span.layui-laydate-preview:hover{color: #666;}
|
||||||
|
.layui-laydate-footer span:first-child.layui-laydate-preview{padding-left: 0;}
|
||||||
|
.laydate-footer-btns{position: absolute; right: 5px; top: 5px;}
|
||||||
|
.laydate-footer-btns span{margin:0 0 0 3px;padding:0 8px;border:1px solid #C9C9C9;background-color:#fff; white-space:nowrap;vertical-align:top;border-radius:4px;}
|
||||||
|
|
||||||
|
/* 年月列表 */
|
||||||
|
.layui-laydate-list{position: absolute; left: 0; top: 0; width: 100%; height: 100%; padding: 10px; box-sizing: border-box; background-color: #fff;}
|
||||||
|
.layui-laydate-list>li{position: relative; display: inline-block; width: 33.3%; height: 36px; line-height: 36px; margin: 3px 0; vertical-align: middle; text-align: center; cursor: pointer;}
|
||||||
|
.laydate-month-list>li{width: 25%; margin: 17px 0;}
|
||||||
|
.laydate-time-list{}
|
||||||
|
.laydate-time-list>li{height: 100%; margin: 0; line-height: normal; cursor: default;}
|
||||||
|
.laydate-time-list p{position: relative; top: -4px; line-height: 29px;}
|
||||||
|
.laydate-time-list ol{height: 181px; overflow: hidden;}
|
||||||
|
.laydate-time-list>li:hover ol{overflow-y: auto;}
|
||||||
|
.laydate-time-list ol li{width: 130%; padding-left: 27px; height: 30px; line-height: 30px; text-align: left; cursor: pointer;}
|
||||||
|
|
||||||
|
/* 提示 */
|
||||||
|
.layui-laydate-hint{position: absolute; top: 115px; left: 50%; width: 250px; margin-left: -125px; line-height: 20px; padding: 15px; text-align: center; font-size: 12px; color: #FF5722;}
|
||||||
|
|
||||||
|
|
||||||
|
/* 双日历 */
|
||||||
|
.layui-laydate-range{width: 546px;}
|
||||||
|
.layui-laydate-range .layui-laydate-main{display: inline-block; vertical-align: middle;}
|
||||||
|
.layui-laydate-range .laydate-main-list-1 .layui-laydate-header,
|
||||||
|
.layui-laydate-range .laydate-main-list-1 .layui-laydate-content{border-left: 1px solid #e2e2e2;}
|
||||||
|
|
||||||
|
|
||||||
|
/* 默认简约主题 */
|
||||||
|
.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-header{border-bottom: 1px solid #e2e2e2;}
|
||||||
|
.layui-laydate-header i:hover,
|
||||||
|
.layui-laydate-header span:hover{color: #08c;}
|
||||||
|
.layui-laydate-content{border-top: none 0; border-bottom: none 0;}
|
||||||
|
.layui-laydate-content th{color: #333;}
|
||||||
|
.layui-laydate-content td{color: #666;}
|
||||||
|
.layui-laydate-content td.laydate-selected{background-color: #c2eaff;}
|
||||||
|
.laydate-selected:hover{background-color: #c2eaff !important;}
|
||||||
|
.layui-laydate-content td:hover,
|
||||||
|
.layui-laydate-list li:hover{background-color: #eaeaea; color: #333;}
|
||||||
|
.laydate-time-list li ol{margin: 0; padding: 0; border: 1px solid #e2e2e2; border-left-width: 0;}
|
||||||
|
.laydate-time-list li:first-child ol{border-left-width: 1px;}
|
||||||
|
.laydate-time-list>li:hover{background: none;}
|
||||||
|
.layui-laydate-content .laydate-day-prev,
|
||||||
|
.layui-laydate-content .laydate-day-next{color: #d2d2d2;}
|
||||||
|
.laydate-selected.laydate-day-prev,
|
||||||
|
.laydate-selected.laydate-day-next{background-color: #f8f8f8 !important;}
|
||||||
|
.layui-laydate-footer{border-top: 1px solid #e2e2e2;}
|
||||||
|
.layui-laydate-hint{color: #FF5722;}
|
||||||
|
.laydate-day-mark::after{background-color: #08c;}
|
||||||
|
.layui-laydate-content td.layui-this .laydate-day-mark::after{display: none;}
|
||||||
|
.layui-laydate-footer span[lay-type="date"]{color: #08c;}
|
||||||
|
.layui-laydate .layui-this{background-color: #08c !important; color: #fff !important;}
|
||||||
|
.layui-laydate .laydate-btns-confirm{background-color:#139ce0;border:1px solid #139ce0;color:#fff;}
|
||||||
|
.layui-laydate .laydate-btns-confirm:hover{background-color:#08c;color:#fff;}
|
||||||
|
.layui-laydate .laydate-disabled,
|
||||||
|
.layui-laydate .laydate-disabled:hover{background:none !important; color: #d2d2d2 !important; cursor: not-allowed !important; -moz-user-select: none; -webkit-user-select: none; -ms-user-select: none;}
|
||||||
|
|
||||||
|
/* 墨绿/自定义背景色主题 */
|
||||||
|
.laydate-theme-molv{border: none;}
|
||||||
|
.laydate-theme-molv.layui-laydate-range{width: 548px}
|
||||||
|
.laydate-theme-molv .layui-laydate-main{width: 274px;}
|
||||||
|
.laydate-theme-molv .layui-laydate-header{border: none; background-color: #009688;}
|
||||||
|
.laydate-theme-molv .layui-laydate-header i,
|
||||||
|
.laydate-theme-molv .layui-laydate-header span{color: #f6f6f6;}
|
||||||
|
.laydate-theme-molv .layui-laydate-header i:hover,
|
||||||
|
.laydate-theme-molv .layui-laydate-header span:hover{color: #fff;}
|
||||||
|
.laydate-theme-molv .layui-laydate-content{border: 1px solid #e2e2e2; border-top: none; border-bottom: none;}
|
||||||
|
.laydate-theme-molv .laydate-main-list-1 .layui-laydate-content{border-left: none;}
|
||||||
|
.laydate-theme-molv .layui-laydate-footer{border: 1px solid #e2e2e2;}
|
||||||
|
|
||||||
|
/* 格子主题 */
|
||||||
|
.laydate-theme-grid .layui-laydate-content td,
|
||||||
|
.laydate-theme-grid .layui-laydate-content thead,
|
||||||
|
.laydate-theme-grid .laydate-year-list>li,
|
||||||
|
.laydate-theme-grid .laydate-month-list>li{border: 1px solid #e2e2e2;}
|
||||||
|
.laydate-theme-grid .laydate-selected,
|
||||||
|
.laydate-theme-grid .laydate-selected:hover{background-color: #f2f2f2 !important; color: #009688 !important;}
|
||||||
|
.laydate-theme-grid .laydate-selected.laydate-day-prev,
|
||||||
|
.laydate-theme-grid .laydate-selected.laydate-day-next{color: #d2d2d2 !important;}
|
||||||
|
.laydate-theme-grid .laydate-year-list,
|
||||||
|
.laydate-theme-grid .laydate-month-list{margin: 1px 0 0 1px;}
|
||||||
|
.laydate-theme-grid .laydate-year-list>li,
|
||||||
|
.laydate-theme-grid .laydate-month-list>li{margin: 0 -1px -1px 0;}
|
||||||
|
.laydate-theme-grid .laydate-year-list>li{height: 43px; line-height: 43px;}
|
||||||
|
.laydate-theme-grid .laydate-month-list>li{height: 71px; line-height: 71px;}
|
||||||
|
|
||||||
@@ -1,9 +1,7 @@
|
|||||||
/**
|
|
||||||
@Name:layer v3.1.1 Web弹层组件
|
|
||||||
@Author:贤心
|
|
||||||
@Site:http://layer.layui.com
|
|
||||||
@License:MIT
|
|
||||||
|
|
||||||
|
/*!
|
||||||
|
* layer 3.5.1 通用 Web 弹出层组件
|
||||||
|
* MIT Licensed
|
||||||
*/
|
*/
|
||||||
|
|
||||||
;!function(window, undefined){
|
;!function(window, undefined){
|
||||||
@@ -22,8 +20,9 @@ var isLayui = window.layui && layui.define, $, win, ready = {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
return src || js[last].src;
|
return src || js[last].src;
|
||||||
}();
|
}()
|
||||||
return jsPath.substring(0, jsPath.lastIndexOf('/') + 1);
|
,GLOBAL = window.LAYUI_GLOBAL || {};
|
||||||
|
return GLOBAL.layer_dir || jsPath.substring(0, jsPath.lastIndexOf('/') + 1);
|
||||||
}(),
|
}(),
|
||||||
|
|
||||||
config: {}, end: {}, minIndex: 0, minLeft: [],
|
config: {}, end: {}, minIndex: 0, minLeft: [],
|
||||||
@@ -38,16 +37,20 @@ var isLayui = window.layui && layui.define, $, win, ready = {
|
|||||||
return style[style.getPropertyValue ? 'getPropertyValue' : 'getAttribute'](name);
|
return style[style.getPropertyValue ? 'getPropertyValue' : 'getAttribute'](name);
|
||||||
},
|
},
|
||||||
|
|
||||||
//载入CSS配件
|
//载入 CSS 依赖
|
||||||
link: function(href, fn, cssname){
|
link: function(href, fn, cssname){
|
||||||
|
|
||||||
//未设置路径,则不主动加载css
|
//未设置路径,则不主动加载css
|
||||||
if(!layer.path) return;
|
if(!layer.path) return;
|
||||||
|
|
||||||
var head = document.getElementsByTagName("head")[0], link = document.createElement('link');
|
var head = document.getElementsByTagName("head")[0]
|
||||||
|
,link = document.createElement('link');
|
||||||
|
|
||||||
if(typeof fn === 'string') cssname = fn;
|
if(typeof fn === 'string') cssname = fn;
|
||||||
|
|
||||||
var app = (cssname || href).replace(/\.|\//g, '');
|
var app = (cssname || href).replace(/\.|\//g, '');
|
||||||
var id = 'layuicss-'+ app, timeout = 0;
|
var id = 'layuicss-'+ app
|
||||||
|
,STAUTS_NAME = 'creating'
|
||||||
|
,timeout = 0;
|
||||||
|
|
||||||
link.rel = 'stylesheet';
|
link.rel = 'stylesheet';
|
||||||
link.href = layer.path + href;
|
link.href = layer.path + href;
|
||||||
@@ -59,19 +62,38 @@ var isLayui = window.layui && layui.define, $, win, ready = {
|
|||||||
|
|
||||||
if(typeof fn !== 'function') return;
|
if(typeof fn !== 'function') return;
|
||||||
|
|
||||||
//轮询css是否加载完毕
|
//轮询 css 是否加载完毕
|
||||||
(function poll() {
|
(function poll(status) {
|
||||||
if(++timeout > 8 * 1000 / 100){
|
var delay = 100
|
||||||
return window.console && console.error('layer.css: Invalid');
|
,getLinkElem = document.getElementById(id); //获取动态插入的 link 元素
|
||||||
|
|
||||||
|
//如果轮询超过指定秒数,则视为请求文件失败或 css 文件不符合规范
|
||||||
|
if(++timeout > 10 * 1000 / delay){
|
||||||
|
return window.console && console.error(app +'.css: Invalid');
|
||||||
};
|
};
|
||||||
parseInt(ready.getStyle(document.getElementById(id), 'width')) === 1989 ? fn() : setTimeout(poll, 100);
|
|
||||||
|
//css 加载就绪
|
||||||
|
if(parseInt(ready.getStyle(getLinkElem, 'width')) === 1989){
|
||||||
|
//如果参数来自于初始轮询(即未加载就绪时的),则移除 link 标签状态
|
||||||
|
if(status === STAUTS_NAME) getLinkElem.removeAttribute('lay-status');
|
||||||
|
//如果 link 标签的状态仍为「创建中」,则继续进入轮询,直到状态改变,则执行回调
|
||||||
|
getLinkElem.getAttribute('lay-status') === STAUTS_NAME ? setTimeout(poll, delay) : fn();
|
||||||
|
} else {
|
||||||
|
getLinkElem.setAttribute('lay-status', STAUTS_NAME);
|
||||||
|
setTimeout(function(){
|
||||||
|
poll(STAUTS_NAME);
|
||||||
|
}, delay);
|
||||||
|
}
|
||||||
|
|
||||||
|
//parseInt(ready.getStyle(document.getElementById(id), 'width')) === 1989 ? fn() : setTimeout(poll, 1000);
|
||||||
}());
|
}());
|
||||||
|
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
//默认内置方法。
|
//默认内置方法。
|
||||||
var layer = {
|
var layer = {
|
||||||
v: '3.1.1',
|
v: '3.5.1',
|
||||||
i18n: { // ThinkGem 国际化支持
|
i18n: { // ThinkGem 国际化支持
|
||||||
btnOk: '确定',
|
btnOk: '确定',
|
||||||
btnCancel: '取消',
|
btnCancel: '取消',
|
||||||
@@ -97,13 +119,14 @@ var layer = {
|
|||||||
layer.path = ready.config.path || layer.path;
|
layer.path = ready.config.path || layer.path;
|
||||||
typeof options.extend === 'string' && (options.extend = [options.extend]);
|
typeof options.extend === 'string' && (options.extend = [options.extend]);
|
||||||
|
|
||||||
|
//如果设置了路径,则加载样式
|
||||||
if(ready.config.path) layer.ready();
|
if(ready.config.path) layer.ready();
|
||||||
|
|
||||||
if(!options.extend) return this;
|
if(!options.extend) return this;
|
||||||
|
|
||||||
isLayui
|
isLayui
|
||||||
? layui.addcss('modules/layer/' + options.extend)
|
? layui.addcss('modules/layer/' + options.extend)
|
||||||
: ready.link('skin/' + options.extend);
|
: ready.link('theme/' + options.extend);
|
||||||
|
|
||||||
return this;
|
return this;
|
||||||
},
|
},
|
||||||
@@ -111,7 +134,7 @@ var layer = {
|
|||||||
//主体CSS等待事件
|
//主体CSS等待事件
|
||||||
ready: function(callback){
|
ready: function(callback){
|
||||||
var cssname = 'layer', ver = ''
|
var cssname = 'layer', ver = ''
|
||||||
,path = (isLayui ? 'modules/layer/' : 'skin/') + 'default/layer.css?v='+ layer.v + ver;
|
,path = (isLayui ? 'modules/layer/' : 'theme/') + 'default/layer.css?v='+ layer.v + ver;
|
||||||
isLayui ? layui.addcss(path, callback, cssname) : ready.link(path, callback, cssname);
|
isLayui ? layui.addcss(path, callback, cssname) : ready.link(path, callback, cssname);
|
||||||
return this;
|
return this;
|
||||||
},
|
},
|
||||||
@@ -144,7 +167,6 @@ var layer = {
|
|||||||
msg: function(content, options, end){ //最常用提示层
|
msg: function(content, options, end){ //最常用提示层
|
||||||
var type = typeof options === 'function', rskin = ready.config.skin;
|
var type = typeof options === 'function', rskin = ready.config.skin;
|
||||||
var skin = (rskin ? rskin + ' ' + rskin + '-msg' : '')||'layui-layer-msg';
|
var skin = (rskin ? rskin + ' ' + rskin + '-msg' : '')||'layui-layer-msg';
|
||||||
skin = skin + ' ' + (options.positionClass || '');
|
|
||||||
var anim = doms.anim.length - 1;
|
var anim = doms.anim.length - 1;
|
||||||
if(type) end = options;
|
if(type) end = options;
|
||||||
return layer.open($.extend({
|
return layer.open($.extend({
|
||||||
@@ -187,17 +209,20 @@ var layer = {
|
|||||||
shade: false,
|
shade: false,
|
||||||
resize: false,
|
resize: false,
|
||||||
fixed: false,
|
fixed: false,
|
||||||
maxWidth: 210
|
maxWidth: 260
|
||||||
}, options));
|
}, options));
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
var Class = function(setings){
|
var Class = function(setings){
|
||||||
var that = this;
|
var that = this, creat = function(){
|
||||||
that.index = ++layer.index;
|
|
||||||
that.config = $.extend({}, that.config, ready.config, setings);
|
|
||||||
document.body ? that.creat() : setTimeout(function(){
|
|
||||||
that.creat();
|
that.creat();
|
||||||
|
};
|
||||||
|
that.index = ++layer.index;
|
||||||
|
that.config.maxWidth = $(win).width() - 15*2; //初始最大宽度:当前屏幕宽,左右留 15px 边距
|
||||||
|
that.config = $.extend({}, that.config, ready.config, setings);
|
||||||
|
document.body ? creat() : setTimeout(function(){
|
||||||
|
creat();
|
||||||
}, 30);
|
}, 30);
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -207,6 +232,9 @@ Class.pt = Class.prototype;
|
|||||||
var doms = ['layui-layer', '.layui-layer-title', '.layui-layer-main', '.layui-layer-dialog', 'layui-layer-iframe', 'layui-layer-content', 'layui-layer-btn', 'layui-layer-close'];
|
var doms = ['layui-layer', '.layui-layer-title', '.layui-layer-main', '.layui-layer-dialog', 'layui-layer-iframe', 'layui-layer-content', 'layui-layer-btn', 'layui-layer-close'];
|
||||||
doms.anim = ['layer-anim-00', 'layer-anim-01', 'layer-anim-02', 'layer-anim-03', 'layer-anim-04', 'layer-anim-05', 'layer-anim-06'];
|
doms.anim = ['layer-anim-00', 'layer-anim-01', 'layer-anim-02', 'layer-anim-03', 'layer-anim-04', 'layer-anim-05', 'layer-anim-06'];
|
||||||
|
|
||||||
|
doms.SHADE = 'layui-layer-shade';
|
||||||
|
doms.MOVE = 'layui-layer-move';
|
||||||
|
|
||||||
//默认配置
|
//默认配置
|
||||||
Class.pt.config = {
|
Class.pt.config = {
|
||||||
type: 0,
|
type: 0,
|
||||||
@@ -221,7 +249,8 @@ Class.pt.config = {
|
|||||||
zIndex: 19891014,
|
zIndex: 19891014,
|
||||||
maxWidth: 360,
|
maxWidth: 360,
|
||||||
anim: 0,
|
anim: 0,
|
||||||
isOutAnim: true,
|
isOutAnim: true, //退出动画
|
||||||
|
minStack: true, //最小化堆叠
|
||||||
icon: -1,
|
icon: -1,
|
||||||
moveType: 1,
|
moveType: 1,
|
||||||
resize: true,
|
resize: true,
|
||||||
@@ -241,18 +270,17 @@ Class.pt.vessel = function(conType, callback){
|
|||||||
config.zIndex = zIndex;
|
config.zIndex = zIndex;
|
||||||
callback([
|
callback([
|
||||||
//遮罩
|
//遮罩
|
||||||
config.shade ? ('<div class="layui-layer-shade" id="layui-layer-shade'+ times +'" times="'+ times +'" style="'+ ('z-index:'+ (zIndex-1) +'; ') +'"></div>') : '',
|
config.shade ? ('<div class="'+ doms.SHADE +'" id="'+ doms.SHADE + times +'" times="'+ times +'" style="'+ ('z-index:'+ (zIndex-1) +'; ') +'"></div>') : '',
|
||||||
|
|
||||||
//主体
|
//主体
|
||||||
'<div class="'+ doms[0] + (' layui-layer-'+ready.type[config.type]) + (((config.type == 0 || config.type == 2) && !config.shade) ? ' layui-layer-border' : '') + ' ' + (config.skin||'') +'" id="'+ doms[0] + times +'" type="'+ ready.type[config.type] +'" times="'+ times +'" showtime="'+ config.time +'" conType="'+ (conType ? 'object' : 'string') +'" style="z-index: '+ zIndex +'; width:'+ config.area[0] + ';height:' + config.area[1] + (config.fixed ? '' : ';position:absolute;') +'">'
|
'<div class="'+ doms[0] + (' layui-layer-'+ready.type[config.type]) + (((config.type == 0 || config.type == 2) && !config.shade) ? ' layui-layer-border' : '') + ' ' + (config.skin||'') +'" id="'+ doms[0] + times +'" type="'+ ready.type[config.type] +'" times="'+ times +'" showtime="'+ config.time +'" conType="'+ (conType ? 'object' : 'string') +'" style="z-index: '+ zIndex +'; width:'+ config.area[0] + ';height:' + config.area[1] + ';position:'+ (config.fixed ? 'fixed;' : 'absolute;') +'">'
|
||||||
+ (conType && config.type != 2 ? '' : titleHTML)
|
+ (conType && config.type != 2 ? '' : titleHTML)
|
||||||
+ '<div id="'+ (config.id||'') +'" class="layui-layer-content'+ ((config.type == 0 && config.icon !== -1) ? ' layui-layer-padding' :'') + (config.type == 3 ? ' layui-layer-loading'+config.icon : '') +'">'
|
+ '<div id="'+ (config.id||'') +'" class="layui-layer-content'+ ((config.type == 0 && config.icon !== -1) ? ' layui-layer-padding' :'') + (config.type == 3 ? ' layui-layer-loading'+config.icon : '') +'">'
|
||||||
+ (config.type == 0 && config.icon !== -1 ? '<i class="layui-layer-ico layui-layer-ico'+ config.icon +'"></i>' : '')
|
+ (config.type == 0 && config.icon !== -1 ? '<i class="layui-layer-ico layui-layer-ico'+ config.icon +'"></i>' : '')
|
||||||
+ (config.type == 1 && conType ? '' : (config.content||''))
|
+ (config.type == 1 && conType ? '' : (config.content||''))
|
||||||
+ '</div>'
|
+ '</div>'
|
||||||
+ '<span class="layui-layer-setwin">'+ function(){
|
+ '<span class="layui-layer-setwin">'+ function(){
|
||||||
var closebtn = ismax && config.title ? '<a class="layui-layer-min" href="javascript:;"><cite></cite></a>' : ''; // ThinkGem 必须有标题的清空下才能最小化
|
var closebtn = ismax && config.title ? '<a class="layui-layer-min" href="javascript:;"><cite></cite></a><a class="layui-layer-ico layui-layer-max" href="javascript:;"></a>' : ''; // ThinkGem 必须有标题的清空下才能最小化
|
||||||
closebtn += ismax ? '<a class="layui-layer-ico layui-layer-max" href="javascript:;"></a>' : '';
|
|
||||||
config.closeBtn && (closebtn += '<a class="layui-layer-ico '+ doms[7] +' '+ doms[7] + (config.title ? config.closeBtn : (config.type == 4 ? '1' : '2')) +'" href="javascript:;"></a>');
|
config.closeBtn && (closebtn += '<a class="layui-layer-ico '+ doms[7] +' '+ doms[7] + (config.title ? config.closeBtn : (config.type == 4 ? '1' : '2')) +'" href="javascript:;"></a>');
|
||||||
return closebtn;
|
return closebtn;
|
||||||
}() + '</span>'
|
}() + '</span>'
|
||||||
@@ -262,11 +290,11 @@ Class.pt.vessel = function(conType, callback){
|
|||||||
for(var i = 0, len = config.btn.length; i < len; i++){
|
for(var i = 0, len = config.btn.length; i < len; i++){
|
||||||
button += '<a class="'+ doms[6] +''+ i +'">'+ config.btn[i] +'</a>'
|
button += '<a class="'+ doms[6] +''+ i +'">'+ config.btn[i] +'</a>'
|
||||||
}
|
}
|
||||||
return '<div class="'+ doms[6] + (config.btnAlign ? (' layui-layer-btn-' + config.btnAlign) : '') +'">'+ button +'</div>'
|
return '<div class="'+ doms[6] + (config.btnAlign ? (' layui-layer-btn-' + (config.btnAlign||'')) : '') +'">'+ button +'</div>'
|
||||||
}() : '')
|
}() : '')
|
||||||
+ (config.resize ? '<span class="layui-layer-resize"></span>' : '')
|
+ (config.resize ? '<span class="layui-layer-resize"></span>' : '')
|
||||||
+ '</div>'
|
+ '</div>'
|
||||||
], titleHTML, $('<div class="layui-layer-move"></div>'));
|
], titleHTML, $('<div class="'+ doms.MOVE +'" id="'+ doms.MOVE +'"></div>'));
|
||||||
return that;
|
return that;
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -296,16 +324,16 @@ Class.pt.creat = function(){
|
|||||||
|
|
||||||
switch(config.type){
|
switch(config.type){
|
||||||
case 0:
|
case 0:
|
||||||
//config.btn = ('btn' in config) ? config.btn : ready.btn[0]; ThinkGem
|
//config.btn = ('btn' in config) ? config.btn : ready.btn[0];
|
||||||
config.btn = ('btn' in config) ? config.btn : layer.i18n.btnOk;// ThinkGem
|
config.btn = ('btn' in config) ? config.btn : layer.i18n.btnOk;// ThinkGem
|
||||||
layer.closeAll('dialog');
|
layer.closeAll('dialog');
|
||||||
break;
|
break;
|
||||||
case 2:
|
case 2:
|
||||||
var content = config.content = conType ? config.content : [config.content, 'auto'];
|
var content = config.content = conType ? config.content : [config.content||'', 'auto'];
|
||||||
// config.content = '<iframe scrolling="'+ (config.content[1]||'auto') +'" allowtransparency="true" id="'
|
//config.content = '<iframe scrolling="'+ (config.content[1]||'auto') +'" allowtransparency="true" id="'
|
||||||
// + doms[4] +''+ times +'" name="'+ doms[4] +''+ times
|
// + doms[4] +''+ times +'" name="'+ doms[4] +''+ times
|
||||||
// +'" onload="this.className=\'\';" class="layui-layer-load" frameborder="0" src="'
|
// +'" onload="this.className=\'\';" class="layui-layer-load" frameborder="0" src="'
|
||||||
// + config.content[0] + '"></iframe>';
|
// + config.content[0] + '"></iframe>';
|
||||||
// 2017-5-13 ThinkGem 支持post方式提交iframe
|
// 2017-5-13 ThinkGem 支持post方式提交iframe
|
||||||
config.content = '<iframe scrolling="'+ (config.content[1]||'auto') +'" allowtransparency="true" id="'
|
config.content = '<iframe scrolling="'+ (config.content[1]||'auto') +'" allowtransparency="true" id="'
|
||||||
+ doms[4] + times +'" name="'+ doms[4] +''+ times
|
+ doms[4] + times +'" name="'+ doms[4] +''+ times
|
||||||
@@ -342,15 +370,18 @@ Class.pt.creat = function(){
|
|||||||
}
|
}
|
||||||
}();
|
}();
|
||||||
}() : body.append(html[1]);
|
}() : body.append(html[1]);
|
||||||
$('.layui-layer-move')[0] || body.append(ready.moveElem = moveElem);
|
$('#'+ doms.MOVE)[0] || body.append(ready.moveElem = moveElem);
|
||||||
|
|
||||||
that.layero = $('#'+ doms[0] + times);
|
that.layero = $('#'+ doms[0] + times);
|
||||||
|
that.shadeo = $('#'+ doms.SHADE + times);
|
||||||
|
|
||||||
config.scrollbar || doms.html.css('overflow', 'hidden').attr('layer-full', times);
|
config.scrollbar || doms.html.css('overflow', 'hidden').attr('layer-full', times);
|
||||||
}).auto(times);
|
}).auto(times);
|
||||||
|
|
||||||
//遮罩
|
//遮罩
|
||||||
$('#layui-layer-shade'+ that.index).css({
|
that.shadeo.css({
|
||||||
'background-color': config.shade[1] || '#000'
|
'background-color': config.shade[1] || '#000'
|
||||||
,'opacity': config.shade[0]||config.shade
|
,'opacity': config.shade[0] || config.shade
|
||||||
});
|
});
|
||||||
|
|
||||||
//config.type == 2 && layer.ie == 6 && that.layero.find('iframe').attr('src', content[0]); // ThinkGem 不需要ie6
|
//config.type == 2 && layer.ie == 6 && that.layero.find('iframe').attr('src', content[0]); // ThinkGem 不需要ie6
|
||||||
@@ -373,7 +404,19 @@ Class.pt.creat = function(){
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
//坐标自适应浏览器窗口尺寸
|
//坐标自适应浏览器窗口尺寸
|
||||||
config.type == 4 ? that.tips() : that.offset();
|
config.type == 4 ? that.tips() : function(){
|
||||||
|
that.offset()
|
||||||
|
//首次弹出时,若 css 尚未加载,则等待 css 加载完毕后,重新设定尺寸
|
||||||
|
parseInt(ready.getStyle(document.getElementById(doms.MOVE), 'z-index')) || function(){
|
||||||
|
that.layero.css('visibility', 'hidden');
|
||||||
|
layer.ready(function(){
|
||||||
|
that.offset();
|
||||||
|
that.layero.css('visibility', 'visible');
|
||||||
|
});
|
||||||
|
}();
|
||||||
|
}();
|
||||||
|
|
||||||
|
//如果是固定定位
|
||||||
if(config.fixed){
|
if(config.fixed){
|
||||||
win.on('resize', function(){
|
win.on('resize', function(){
|
||||||
that.offset();
|
that.offset();
|
||||||
@@ -383,7 +426,7 @@ Class.pt.creat = function(){
|
|||||||
}
|
}
|
||||||
|
|
||||||
config.time <= 0 || setTimeout(function(){
|
config.time <= 0 || setTimeout(function(){
|
||||||
layer.close(that.index)
|
layer.close(that.index);
|
||||||
}, config.time);
|
}, config.time);
|
||||||
that.move().callback();
|
that.move().callback();
|
||||||
|
|
||||||
@@ -706,15 +749,15 @@ Class.pt.callback = function(){
|
|||||||
layero.find('.'+ doms[7]).on('click', cancel);
|
layero.find('.'+ doms[7]).on('click', cancel);
|
||||||
|
|
||||||
//点遮罩关闭
|
//点遮罩关闭
|
||||||
if(config.shadeClose || config.shadeClose == undefined){
|
if(config.shadeClose){
|
||||||
$('#layui-layer-shade'+ that.index).on('click', function(){
|
that.shadeo.on('click', function(){
|
||||||
layer.close(that.index);
|
layer.close(that.index);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
//最小化
|
//最小化
|
||||||
layero.find('.layui-layer-min').on('click', function(){
|
layero.find('.layui-layer-min').on('click', function(){
|
||||||
var min = config.min && config.min(layero);
|
var min = config.min && config.min(layero, that.index);
|
||||||
min === false || layer.min(that.index, config);
|
min === false || layer.min(that.index, config);
|
||||||
});
|
});
|
||||||
|
|
||||||
@@ -722,11 +765,11 @@ Class.pt.callback = function(){
|
|||||||
layero.find('.layui-layer-max').on('click', function(){
|
layero.find('.layui-layer-max').on('click', function(){
|
||||||
if($(this).hasClass('layui-layer-maxmin')){
|
if($(this).hasClass('layui-layer-maxmin')){
|
||||||
layer.restore(that.index);
|
layer.restore(that.index);
|
||||||
config.restore && config.restore(layero);
|
config.restore && config.restore(layero, that.index);
|
||||||
} else {
|
} else {
|
||||||
layer.full(that.index, config);
|
layer.full(that.index, config);
|
||||||
setTimeout(function(){
|
setTimeout(function(){
|
||||||
config.full && config.full(layero);
|
config.full && config.full(layero, that.index);
|
||||||
}, 100);
|
}, 100);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
@@ -773,6 +816,7 @@ Class.pt.openLayer = function(){
|
|||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
//记录宽高坐标,用于还原
|
||||||
ready.record = function(layero){
|
ready.record = function(layero){
|
||||||
var area = [
|
var area = [
|
||||||
layero.width(),
|
layero.width(),
|
||||||
@@ -815,10 +859,8 @@ layer.getFrameIndex = function(name){
|
|||||||
};
|
};
|
||||||
|
|
||||||
//iframe层自适应宽高(diffVal差值范围内,进行自适应高度)
|
//iframe层自适应宽高(diffVal差值范围内,进行自适应高度)
|
||||||
layer.iframeAuto = function(index, diffVal){
|
layer.iframeAuto = function(index, diffVal, $this){
|
||||||
if(!index){
|
if(!index) return;
|
||||||
return;
|
|
||||||
}
|
|
||||||
var iframe = document.getElementById(doms[4] + index);
|
var iframe = document.getElementById(doms[4] + index);
|
||||||
if (iframe) {
|
if (iframe) {
|
||||||
var iframeWin = iframe.contentWindow || iframe.contentDocument.parentWindow;
|
var iframeWin = iframe.contentWindow || iframe.contentDocument.parentWindow;
|
||||||
@@ -826,15 +868,15 @@ layer.iframeAuto = function(index, diffVal){
|
|||||||
var layero = $('#'+ doms[0] + index);
|
var layero = $('#'+ doms[0] + index);
|
||||||
var titHeight = layero.find(doms[1]).outerHeight() || 0;
|
var titHeight = layero.find(doms[1]).outerHeight() || 0;
|
||||||
var btnHeight = layero.find('.'+doms[6]).outerHeight() || 0;
|
var btnHeight = layero.find('.'+doms[6]).outerHeight() || 0;
|
||||||
// var heg = layer.getChildFrame('html', index).outerHeight();
|
// var heg = layer.getChildFrame('html', index).outerHeight();
|
||||||
var heg = iframeWin.document.body.scrollHeight;
|
var heg = iframeWin.document.body.scrollHeight;
|
||||||
var layerHeight = heg + titHeight + btnHeight;
|
var layerHeight = heg + titHeight + btnHeight;
|
||||||
var layerTop = ($(window).height() - layerHeight) / 2;
|
var layerTop = ($(window).height() - layerHeight) / 2;
|
||||||
if (layerTop > 0){
|
if (layerTop > 0){
|
||||||
var $iframe = layero.find('iframe');
|
var $iframe = layero.find('iframe');
|
||||||
if (Math.abs($iframe.height() - heg) < (diffVal || 9000)){
|
if (Math.abs($iframe.height() - heg) < (diffVal || 9000)){
|
||||||
layero.css({height: layerHeight, top: layerTop});
|
layero.animate({height: layerHeight, top: layerTop}, 20);
|
||||||
$iframe.css({height: heg});
|
$iframe.animate({height: heg}, 20);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -880,7 +922,7 @@ layer.style = function(index, options, limit){
|
|||||||
}
|
}
|
||||||
|
|
||||||
layero.css(options);
|
layero.css(options);
|
||||||
// btnHeight = layero.find('.'+doms[6]).outerHeight();
|
//btnHeight = layero.find('.'+doms[6]).outerHeight();
|
||||||
btnHeight = layero.find('.'+doms[6]).outerHeight() || 0; // ThinkGem 兼容 jQuery 3.5
|
btnHeight = layero.find('.'+doms[6]).outerHeight() || 0; // ThinkGem 兼容 jQuery 3.5
|
||||||
|
|
||||||
if(type === ready.type[2]){
|
if(type === ready.type[2]){
|
||||||
@@ -898,11 +940,20 @@ layer.style = function(index, options, limit){
|
|||||||
|
|
||||||
//最小化
|
//最小化
|
||||||
layer.min = function(index, options){
|
layer.min = function(index, options){
|
||||||
|
options = options || {};
|
||||||
var layero = $('#'+ doms[0] + index)
|
var layero = $('#'+ doms[0] + index)
|
||||||
|
,shadeo = $('#'+ doms.SHADE + index)
|
||||||
,titHeight = layero.find(doms[1]).outerHeight() || 0
|
,titHeight = layero.find(doms[1]).outerHeight() || 0
|
||||||
,left = layero.attr('minLeft') || (181*ready.minIndex)+'px'
|
,left = layero.attr('minLeft') || (181*ready.minIndex)+'px'
|
||||||
,position = layero.css('position');
|
,position = layero.css('position')
|
||||||
|
,settings = {
|
||||||
|
width: 180
|
||||||
|
,height: titHeight
|
||||||
|
,position: 'fixed'
|
||||||
|
,overflow: 'hidden'
|
||||||
|
};
|
||||||
|
|
||||||
|
//记录宽高坐标,用于还原
|
||||||
ready.record(layero);
|
ready.record(layero);
|
||||||
|
|
||||||
if(ready.minLeft[0]){
|
if(ready.minLeft[0]){
|
||||||
@@ -910,31 +961,33 @@ layer.min = function(index, options){
|
|||||||
ready.minLeft.shift();
|
ready.minLeft.shift();
|
||||||
}
|
}
|
||||||
|
|
||||||
layero.attr('position', position);
|
//是否堆叠在左下角
|
||||||
|
if(options.minStack){
|
||||||
|
settings.left = left;
|
||||||
|
settings.top = win.height() - titHeight;
|
||||||
|
layero.attr('minLeft') || ready.minIndex++; //初次执行,最小化操作索引自增
|
||||||
|
layero.attr('minLeft', left);
|
||||||
|
}
|
||||||
|
|
||||||
layer.style(index, {
|
layero.attr('position', position);
|
||||||
width: 180
|
layer.style(index, settings, true);
|
||||||
,height: titHeight
|
|
||||||
,left: left
|
|
||||||
,top: win.height() - titHeight
|
|
||||||
,position: 'fixed'
|
|
||||||
,overflow: 'hidden'
|
|
||||||
}, true);
|
|
||||||
|
|
||||||
layero.find('.layui-layer-min').hide();
|
layero.find('.layui-layer-min').hide();
|
||||||
layero.attr('type') === 'page' && layero.find(doms[4]).hide();
|
layero.attr('type') === 'page' && layero.find(doms[4]).hide();
|
||||||
ready.rescollbar(index);
|
ready.rescollbar(index);
|
||||||
|
|
||||||
if(!layero.attr('minLeft')){
|
//隐藏遮罩
|
||||||
ready.minIndex++;
|
shadeo.hide();
|
||||||
}
|
|
||||||
layero.attr('minLeft', left);
|
|
||||||
};
|
};
|
||||||
|
|
||||||
//还原
|
//还原
|
||||||
layer.restore = function(index){
|
layer.restore = function(index){
|
||||||
var layero = $('#'+ doms[0] + index), area = layero.attr('area').split(',');
|
var layero = $('#'+ doms[0] + index)
|
||||||
var type = layero.attr('type');
|
,shadeo = $('#'+ doms.SHADE + index)
|
||||||
|
,area = layero.attr('area').split(',')
|
||||||
|
,type = layero.attr('type');
|
||||||
|
|
||||||
|
//恢复原来尺寸
|
||||||
layer.style(index, {
|
layer.style(index, {
|
||||||
width: parseFloat(area[0]),
|
width: parseFloat(area[0]),
|
||||||
height: parseFloat(area[1]),
|
height: parseFloat(area[1]),
|
||||||
@@ -943,10 +996,14 @@ layer.restore = function(index){
|
|||||||
position: layero.attr('position'),
|
position: layero.attr('position'),
|
||||||
overflow: 'visible'
|
overflow: 'visible'
|
||||||
}, true);
|
}, true);
|
||||||
|
|
||||||
layero.find('.layui-layer-max').removeClass('layui-layer-maxmin');
|
layero.find('.layui-layer-max').removeClass('layui-layer-maxmin');
|
||||||
layero.find('.layui-layer-min').show();
|
layero.find('.layui-layer-min').show();
|
||||||
layero.attr('type') === 'page' && layero.find(doms[4]).show();
|
layero.attr('type') === 'page' && layero.find(doms[4]).show();
|
||||||
ready.rescollbar(index);
|
ready.rescollbar(index);
|
||||||
|
|
||||||
|
//恢复遮罩
|
||||||
|
shadeo.show();
|
||||||
};
|
};
|
||||||
|
|
||||||
//全屏
|
//全屏
|
||||||
@@ -976,7 +1033,7 @@ layer.title = function(name, index){
|
|||||||
};
|
};
|
||||||
|
|
||||||
//关闭layer总方法
|
//关闭layer总方法
|
||||||
layer.close = function(index){
|
layer.close = function(index, callback){
|
||||||
var layero = $('#'+ doms[0] + index), type = layero.attr('type'), closeAnim = 'layer-anim-close';
|
var layero = $('#'+ doms[0] + index), type = layero.attr('type'), closeAnim = 'layer-anim-close';
|
||||||
if(!layero[0]) return;
|
if(!layero[0]) return;
|
||||||
var WRAP = 'layui-layer-wrap', remove = function(){
|
var WRAP = 'layui-layer-wrap', remove = function(){
|
||||||
@@ -1002,13 +1059,14 @@ layer.close = function(index){
|
|||||||
}
|
}
|
||||||
typeof ready.end[index] === 'function' && ready.end[index]();
|
typeof ready.end[index] === 'function' && ready.end[index]();
|
||||||
delete ready.end[index];
|
delete ready.end[index];
|
||||||
|
typeof callback === 'function' && callback();
|
||||||
};
|
};
|
||||||
|
|
||||||
if(layero.data('isOutAnim')){
|
if(layero.data('isOutAnim')){
|
||||||
layero.addClass('layer-anim '+ closeAnim);
|
layero.addClass('layer-anim '+ closeAnim);
|
||||||
}
|
}
|
||||||
|
|
||||||
$('#layui-layer-moves, #layui-layer-shade' + index).remove();
|
$('#layui-layer-moves, #'+ doms.SHADE + index).remove();
|
||||||
layer.ie == 6 && ready.reselect();
|
layer.ie == 6 && ready.reselect();
|
||||||
ready.rescollbar(index);
|
ready.rescollbar(index);
|
||||||
if(layero.attr('minLeft')){
|
if(layero.attr('minLeft')){
|
||||||
@@ -1026,17 +1084,25 @@ layer.close = function(index){
|
|||||||
};
|
};
|
||||||
|
|
||||||
//关闭所有层
|
//关闭所有层
|
||||||
layer.closeAll = function(type){
|
layer.closeAll = function(type, callback){
|
||||||
$.each($('.'+doms[0]), function(){
|
if(typeof type === 'function'){
|
||||||
|
callback = type;
|
||||||
|
type = null;
|
||||||
|
};
|
||||||
|
var domsElem = $('.'+doms[0]);
|
||||||
|
$.each(domsElem, function(_index){
|
||||||
var othis = $(this);
|
var othis = $(this);
|
||||||
var is = type ? (othis.attr('type') === type) : 1;
|
var is = type ? (othis.attr('type') === type) : 1;
|
||||||
is && layer.close(othis.attr('times'));
|
is && layer.close(othis.attr('times'), _index === domsElem.length - 1 ? callback : null);
|
||||||
is = null;
|
is = null;
|
||||||
});
|
});
|
||||||
|
if(domsElem.length === 0) typeof callback === 'function' && callback();
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
拓展模块,layui开始合并在一起
|
|
||||||
|
拓展模块,layui 开始合并在一起
|
||||||
|
|
||||||
*/
|
*/
|
||||||
|
|
||||||
var cache = layer.cache||{}, skin = function(type){
|
var cache = layer.cache||{}, skin = function(type){
|
||||||
@@ -1055,8 +1121,8 @@ layer.prompt = function(options, yes){
|
|||||||
style = 'style="width: '+ area[0] +'; height: '+ area[1] + ';"';
|
style = 'style="width: '+ area[0] +'; height: '+ area[1] + ';"';
|
||||||
delete options.area;
|
delete options.area;
|
||||||
}
|
}
|
||||||
var prompt, content = options.formType == 2 ? '<textarea class="layui-layer-input"' + style +'>' + (options.value||'') +'</textarea>' : function(){
|
var prompt, content = options.formType == 2 ? '<textarea class="layui-layer-input"' + style +'></textarea>' : function(){
|
||||||
return '<input type="'+ (options.formType == 1 ? 'password' : 'text') +'" class="layui-layer-input" value="'+ (options.value||'') +'">';
|
return '<input type="'+ (options.formType == 1 ? 'password' : 'text') +'" class="layui-layer-input">';
|
||||||
}();
|
}();
|
||||||
|
|
||||||
var success = options.success;
|
var success = options.success;
|
||||||
@@ -1070,7 +1136,7 @@ layer.prompt = function(options, yes){
|
|||||||
,maxWidth: win.width()
|
,maxWidth: win.width()
|
||||||
,success: function(layero){
|
,success: function(layero){
|
||||||
prompt = layero.find('.layui-layer-input');
|
prompt = layero.find('.layui-layer-input');
|
||||||
prompt.focus();
|
prompt.val(options.value || '').focus();
|
||||||
typeof success === 'function' && success(layero);
|
typeof success === 'function' && success(layero);
|
||||||
}
|
}
|
||||||
,resize: false
|
,resize: false
|
||||||
@@ -1141,17 +1207,21 @@ layer.photos = function(options, loop, key){
|
|||||||
var dict = {};
|
var dict = {};
|
||||||
options = options || {};
|
options = options || {};
|
||||||
if(!options.photos) return;
|
if(!options.photos) return;
|
||||||
var type = options.photos.constructor === Object;
|
|
||||||
var photos = type ? options.photos : {}, data = photos.data || [];
|
|
||||||
var start = photos.start || 0;
|
|
||||||
dict.imgIndex = (start|0) + 1;
|
|
||||||
|
|
||||||
|
//若 photos 并非选择器或 jQuery 对象,则为普通 object
|
||||||
|
var isObject = !(typeof options.photos === 'string' || options.photos instanceof $)
|
||||||
|
,photos = isObject ? options.photos : {}
|
||||||
|
,data = photos.data || []
|
||||||
|
,start = photos.start || 0;
|
||||||
|
|
||||||
|
dict.imgIndex = (start|0) + 1;
|
||||||
options.img = options.img || 'img';
|
options.img = options.img || 'img';
|
||||||
|
|
||||||
var success = options.success;
|
var success = options.success;
|
||||||
delete options.success;
|
delete options.success;
|
||||||
|
|
||||||
if(!type){ //页面直接获取
|
//如果 options.photos 不是一个对象
|
||||||
|
if(!isObject){ //页面直接获取
|
||||||
var parent = $(options.photos), pushData = function(){
|
var parent = $(options.photos), pushData = function(){
|
||||||
data = [];
|
data = [];
|
||||||
parent.find(options.img).each(function(index){
|
parent.find(options.img).each(function(index){
|
||||||
@@ -1163,7 +1233,7 @@ layer.photos = function(options, loop, key){
|
|||||||
src: othis.attr('layer-src') || othis.attr('src'),
|
src: othis.attr('layer-src') || othis.attr('src'),
|
||||||
thumb: othis.attr('src')
|
thumb: othis.attr('src')
|
||||||
});
|
});
|
||||||
})
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
pushData();
|
pushData();
|
||||||
@@ -1171,6 +1241,7 @@ layer.photos = function(options, loop, key){
|
|||||||
if (data.length === 0) return;
|
if (data.length === 0) return;
|
||||||
|
|
||||||
loop || parent.on('click', options.img, function(){
|
loop || parent.on('click', options.img, function(){
|
||||||
|
pushData();
|
||||||
var othis = $(this), index = othis.attr('layer-index');
|
var othis = $(this), index = othis.attr('layer-index');
|
||||||
layer.photos($.extend(options, {
|
layer.photos($.extend(options, {
|
||||||
photos: {
|
photos: {
|
||||||
@@ -1180,8 +1251,7 @@ layer.photos = function(options, loop, key){
|
|||||||
},
|
},
|
||||||
full: options.full
|
full: options.full
|
||||||
}), true);
|
}), true);
|
||||||
pushData();
|
});
|
||||||
})
|
|
||||||
|
|
||||||
//不直接弹出
|
//不直接弹出
|
||||||
if(!loop) return;
|
if(!loop) return;
|
||||||
@@ -1237,20 +1307,22 @@ layer.photos = function(options, loop, key){
|
|||||||
|
|
||||||
//一些动作
|
//一些动作
|
||||||
dict.event = function(){
|
dict.event = function(){
|
||||||
|
/*
|
||||||
dict.bigimg.hover(function(){
|
dict.bigimg.hover(function(){
|
||||||
dict.imgsee.show();
|
dict.imgsee.show();
|
||||||
}, function(){
|
}, function(){
|
||||||
dict.imgsee.hide();
|
dict.imgsee.hide();
|
||||||
});
|
});
|
||||||
|
*/
|
||||||
|
|
||||||
dict.bigimg.find('.layui-layer-imgprev').on('click', function(event){
|
dict.bigimg.find('.layui-layer-imgprev').on('click', function(event){
|
||||||
event.preventDefault();
|
event.preventDefault();
|
||||||
dict.imgprev();
|
dict.imgprev(true);
|
||||||
});
|
});
|
||||||
|
|
||||||
dict.bigimg.find('.layui-layer-imgnext').on('click', function(event){
|
dict.bigimg.find('.layui-layer-imgnext').on('click', function(event){
|
||||||
event.preventDefault();
|
event.preventDefault();
|
||||||
dict.imgnext();
|
dict.imgnext(true);
|
||||||
});
|
});
|
||||||
|
|
||||||
$(document).on('keyup', dict.keyup);
|
$(document).on('keyup', dict.keyup);
|
||||||
@@ -1280,6 +1352,11 @@ layer.photos = function(options, loop, key){
|
|||||||
|
|
||||||
loadImage(data[start].src, function(img){
|
loadImage(data[start].src, function(img){
|
||||||
layer.close(dict.loadi);
|
layer.close(dict.loadi);
|
||||||
|
|
||||||
|
//切换图片时不出现动画
|
||||||
|
if(key) options.anim = -1;
|
||||||
|
|
||||||
|
//弹出图片层
|
||||||
dict.index = layer.open($.extend({
|
dict.index = layer.open($.extend({
|
||||||
type: 1,
|
type: 1,
|
||||||
id: 'layui-layer-photos',
|
id: 'layui-layer-photos',
|
||||||
@@ -1309,19 +1386,24 @@ layer.photos = function(options, loop, key){
|
|||||||
moveType: 1,
|
moveType: 1,
|
||||||
scrollbar: false,
|
scrollbar: false,
|
||||||
moveOut: true,
|
moveOut: true,
|
||||||
//anim: Math.random()*5|0,
|
anim: 5,
|
||||||
isOutAnim: false,
|
isOutAnim: false,
|
||||||
skin: 'layui-layer-photos' + skin('photos'),
|
skin: 'layui-layer-photos' + skin('photos'),
|
||||||
content: '<div class="layui-layer-phimg">'
|
content: '<div class="layui-layer-phimg">'
|
||||||
+'<img src="'+ data[start].src +'" alt="'+ (data[start].alt||'') +'" layer-pid="'+ data[start].pid +'">'
|
+'<img src="'+ data[start].src +'" alt="'+ (data[start].alt||'') +'" layer-pid="'+ data[start].pid +'">'
|
||||||
+'<div class="layui-layer-imgsee">'
|
+function(){
|
||||||
+(data.length > 1 ? '<span class="layui-layer-imguide"><a href="javascript:;" class="layui-layer-iconext layui-layer-imgprev"></a><a href="javascript:;" class="layui-layer-iconext layui-layer-imgnext"></a></span>' : '')
|
if(data.length > 1){
|
||||||
+'<div class="layui-layer-imgbar" style="display:'+ (key ? 'block' : '') +'"><span class="layui-layer-imgtit"><a href="javascript:;">'+ (data[start].alt||'') +'</a><em>'+ dict.imgIndex +'/'+ data.length +'</em></span></div>'
|
return '<div class="layui-layer-imgsee">'
|
||||||
|
+'<span class="layui-layer-imguide"><a href="javascript:;" class="layui-layer-iconext layui-layer-imgprev"></a><a href="javascript:;" class="layui-layer-iconext layui-layer-imgnext"></a></span>'
|
||||||
|
+'<div class="layui-layer-imgbar" style="display:'+ (key ? 'block' : '') +'"><span class="layui-layer-imgtit"><a href="javascript:;">'+ (data[start].alt || '') +'</a><em>'+ dict.imgIndex +' / '+ data.length +'</em></span></div>'
|
||||||
+'</div>'
|
+'</div>'
|
||||||
|
}
|
||||||
|
return '';
|
||||||
|
}()
|
||||||
+'</div>',
|
+'</div>',
|
||||||
success: function(layero, index){
|
success: function(layero, index){
|
||||||
dict.bigimg = layero.find('.layui-layer-phimg');
|
dict.bigimg = layero.find('.layui-layer-phimg');
|
||||||
dict.imgsee = layero.find('.layui-layer-imguide,.layui-layer-imgbar');
|
dict.imgsee = layero.find('.layui-layer-imgbar');
|
||||||
dict.event(layero);
|
dict.event(layero);
|
||||||
options.tab && options.tab(data[start], layero);
|
options.tab && options.tab(data[start], layero);
|
||||||
typeof success === 'function' && success(layero);
|
typeof success === 'function' && success(layero);
|
||||||
@@ -1356,7 +1438,7 @@ ready.run = function(_$){
|
|||||||
//加载方式
|
//加载方式
|
||||||
window.layui && layui.define ? (
|
window.layui && layui.define ? (
|
||||||
layer.ready()
|
layer.ready()
|
||||||
,layui.define('jquery', function(exports){ //layui加载
|
,layui.define('jquery', function(exports){ //layui 加载
|
||||||
layer.path = layui.cache.dir;
|
layer.path = layui.cache.dir;
|
||||||
ready.run(layui.$);
|
ready.run(layui.$);
|
||||||
|
|
||||||
@@ -1365,12 +1447,12 @@ window.layui && layui.define ? (
|
|||||||
exports('layer', layer);
|
exports('layer', layer);
|
||||||
})
|
})
|
||||||
) : (
|
) : (
|
||||||
(typeof define === 'function' && define.amd) ? define(['jquery'], function(){ //requirejs加载
|
(typeof define === 'function' && define.amd) ? define(['jquery'], function(){ //requirejs 加载
|
||||||
ready.run(window.jQuery);
|
ready.run(window.jQuery);
|
||||||
return layer;
|
return layer;
|
||||||
}) : function(){ //普通script标签加载
|
}) : function(){ //普通 script 标签加载
|
||||||
ready.run(window.jQuery);
|
|
||||||
layer.ready();
|
layer.ready();
|
||||||
|
ready.run(window.jQuery);
|
||||||
}()
|
}()
|
||||||
);
|
);
|
||||||
|
|
||||||
@@ -2,8 +2,7 @@
|
|||||||
|
|
||||||
@Name:layer mobile v2.0 弹层组件移动版
|
@Name:layer mobile v2.0 弹层组件移动版
|
||||||
@Author:贤心
|
@Author:贤心
|
||||||
@Site:http://layer.layui.com/mobie/
|
@License:MIT
|
||||||
@License:LGPL
|
|
||||||
|
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
Before Width: | Height: | Size: 5.8 KiB After Width: | Height: | Size: 5.8 KiB |
|
Before Width: | Height: | Size: 11 KiB After Width: | Height: | Size: 11 KiB |
@@ -1,7 +1,6 @@
|
|||||||
/**
|
/**
|
||||||
|
|
||||||
@Name: layer
|
@Name: layer
|
||||||
@Author: 贤心
|
|
||||||
|
|
||||||
**/
|
**/
|
||||||
|
|
||||||
@@ -14,7 +13,7 @@ html #layuicss-layer{display: none; position: absolute; width: 1989px;}
|
|||||||
.layui-layer{-webkit-overflow-scrolling: touch;}
|
.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: 3px; box-shadow: 1px 1px 50px rgba(0,0,0,.3);}
|
||||||
.layui-layer-close{position:absolute;}
|
.layui-layer-close{position:absolute;}
|
||||||
.layui-layer-content{position:relative;}
|
.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);}
|
.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);}
|
||||||
.layui-layer-load{background:url(loading-1.gif) #eee center center no-repeat;}
|
.layui-layer-load{background:url(loading-1.gif) #eee center center no-repeat;}
|
||||||
.layui-layer-ico{ background:url(icon.png) no-repeat;}
|
.layui-layer-ico{ background:url(icon.png) no-repeat;}
|
||||||
@@ -51,8 +50,8 @@ html #layuicss-layer{display: none; position: absolute; width: 1989px;}
|
|||||||
@-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}}
|
@-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:42px; line-height:42px; border-bottom:1px solid #eee; font-size:14px; color:#333; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; background-color: #F8F8F8; border-radius: 3px 3px 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: 2px 2px 0 0;}
|
||||||
.layui-layer-setwin{position:absolute; right:15px; *right:0; top:15px; font-size:0; line-height: initial;}
|
.layui-layer-setwin{position:absolute; right: 15px; *right:0; top: 15px; font-size:0; line-height: initial;}
|
||||||
.layui-layer-setwin a{position:relative; width: 16px; height:16px; margin-left:10px; font-size:12px; _overflow:hidden;}
|
.layui-layer-setwin a{position:relative; width: 16px; height:16px; margin-left:10px; font-size:12px; _overflow:hidden;}
|
||||||
.layui-layer-setwin .layui-layer-min cite{position:absolute; width:14px; height:2px; left:0; top:50%; margin-top:-1px; background-color:#2E2D3C; cursor:pointer; _overflow:hidden;}
|
.layui-layer-setwin .layui-layer-min cite{position:absolute; width:14px; height:2px; left:0; top:50%; margin-top:-1px; background-color:#2E2D3C; cursor:pointer; _overflow:hidden;}
|
||||||
.layui-layer-setwin .layui-layer-min:hover cite{background-color:#2D93CA; }
|
.layui-layer-setwin .layui-layer-min:hover cite{background-color:#2D93CA; }
|
||||||
@@ -75,7 +74,7 @@ html #layuicss-layer{display: none; position: absolute; width: 1989px;}
|
|||||||
.layui-layer-btn-c{text-align: center;}
|
.layui-layer-btn-c{text-align: center;}
|
||||||
|
|
||||||
/* 定制化 */
|
/* 定制化 */
|
||||||
.layui-layer-dialog{min-width:260px;}
|
.layui-layer-dialog{min-width: 300px;}
|
||||||
.layui-layer-dialog .layui-layer-content{position: relative; padding:20px; line-height:24px; word-break: break-all; overflow:hidden; font-size:14px; overflow-x: hidden; overflow-y:auto;}
|
.layui-layer-dialog .layui-layer-content{position: relative; padding:20px; line-height:24px; word-break: break-all; overflow:hidden; font-size:14px; overflow-x: hidden; overflow-y:auto;}
|
||||||
.layui-layer-dialog .layui-layer-content .layui-layer-ico{position:absolute; top:16px; left:15px; _left:-40px; width:30px; height:30px;}
|
.layui-layer-dialog .layui-layer-content .layui-layer-ico{position:absolute; top:16px; left:15px; _left:-40px; width:30px; height:30px;}
|
||||||
.layui-layer-ico1{background-position:-30px 0 }
|
.layui-layer-ico1{background-position:-30px 0 }
|
||||||
@@ -93,7 +92,6 @@ html #layuicss-layer{display: none; position: absolute; width: 1989px;}
|
|||||||
.layui-layer-page .layui-layer-btn,.layui-layer-iframe .layui-layer-btn{padding-top:10px;}
|
.layui-layer-page .layui-layer-btn,.layui-layer-iframe .layui-layer-btn{padding-top:10px;}
|
||||||
.layui-layer-nobg{background:none;}
|
.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: 3px;}
|
||||||
/* .layui-layer-iframe, .layui-layer-iframe iframe {transition:top 0.2s ease-in-out;} 去掉动画IE下效果不好 */
|
|
||||||
|
|
||||||
.layui-layer-loading{border-radius:100%; background:none; box-shadow:none; border:none;}
|
.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-content{width:60px; height:24px; background:url(loading-0.gif) no-repeat;}
|
||||||
@@ -130,7 +128,7 @@ html #layuicss-layer{display: none; position: absolute; width: 1989px;}
|
|||||||
.layui-layer-iconext{background:url(icon-ext.png) no-repeat;}
|
.layui-layer-iconext{background:url(icon-ext.png) no-repeat;}
|
||||||
|
|
||||||
/* prompt模式 */
|
/* prompt模式 */
|
||||||
.layui-layer-prompt .layui-layer-input{display: block; width: 230px; height: 36px; margin: 0 auto; line-height: 30px; padding-left: 10px; border: 1px solid #e6e6e6; color: #333;}
|
.layui-layer-prompt .layui-layer-input{display: block; width: 260px; height: 36px; margin: 0 auto; line-height: 30px; padding-left: 10px; border: 1px solid #e6e6e6; color: #333;}
|
||||||
.layui-layer-prompt textarea.layui-layer-input{width: 300px; height: 100px; line-height: 20px; padding: 6px 10px;}
|
.layui-layer-prompt textarea.layui-layer-input{width: 300px; height: 100px; line-height: 20px; padding: 6px 10px;}
|
||||||
.layui-layer-prompt .layui-layer-content{padding: 20px;}
|
.layui-layer-prompt .layui-layer-content{padding: 20px;}
|
||||||
.layui-layer-prompt .layui-layer-btn{padding-top: 0;}
|
.layui-layer-prompt .layui-layer-btn{padding-top: 0;}
|
||||||
@@ -138,24 +136,23 @@ html #layuicss-layer{display: none; position: absolute; width: 1989px;}
|
|||||||
/* tab模式 */
|
/* tab模式 */
|
||||||
.layui-layer-tab{box-shadow:1px 1px 50px rgba(0,0,0,.4);}
|
.layui-layer-tab{box-shadow:1px 1px 50px rgba(0,0,0,.4);}
|
||||||
.layui-layer-tab .layui-layer-title{padding-left:0; overflow: visible;}
|
.layui-layer-tab .layui-layer-title{padding-left:0; overflow: visible;}
|
||||||
.layui-layer-tab .layui-layer-title span{position:relative; float:left; min-width:80px; max-width:260px; padding:0 20px; text-align:center; cursor:default; text-overflow: ellipsis; overflow: hidden; white-space: nowrap; cursor: pointer;}
|
.layui-layer-tab .layui-layer-title span{position:relative; float:left; min-width:80px; max-width: 300px; padding:0 20px; text-align:center; cursor:default; text-overflow: ellipsis; overflow: hidden; white-space: nowrap; cursor: pointer;}
|
||||||
.layui-layer-tab .layui-layer-title span.layui-this{height: 43px; border-left: 1px solid #eee; border-right: 1px solid #eee; background-color: #fff; z-index: 10;}
|
.layui-layer-tab .layui-layer-title span.layui-this{height: 51px; border-left: 1px solid #eee; border-right: 1px solid #eee; background-color: #fff; z-index: 10;}
|
||||||
.layui-layer-tab .layui-layer-title span:first-child{border-left:none;}
|
.layui-layer-tab .layui-layer-title span:first-child{border-left:none;}
|
||||||
.layui-layer-tabmain{line-height:24px; clear:both;}
|
.layui-layer-tabmain{line-height:24px; clear:both;}
|
||||||
.layui-layer-tabmain .layui-layer-tabli{display:none;}
|
.layui-layer-tabmain .layui-layer-tabli{display:none;}
|
||||||
.layui-layer-tabmain .layui-layer-tabli.layui-this{display: block;}
|
.layui-layer-tabmain .layui-layer-tabli.layui-this{display: block;}
|
||||||
|
|
||||||
/* photo模式 */
|
/* photo模式 */
|
||||||
.layui-layer-photos{-webkit-animation-duration: .8s; animation-duration: .8s;}
|
.layui-layer-photos{background: none; box-shadow: none;}
|
||||||
.layui-layer-photos .layui-layer-content{overflow:hidden; text-align: center;}
|
.layui-layer-photos .layui-layer-content{overflow:hidden; text-align: center;}
|
||||||
.layui-layer-photos .layui-layer-phimg img{position: relative; width:100%; display: inline-block; *display:inline; *zoom:1; vertical-align:top;}
|
.layui-layer-photos .layui-layer-phimg img{position: relative; width:100%; display: inline-block; *display:inline; *zoom:1; vertical-align:top;}
|
||||||
.layui-layer-imguide,.layui-layer-imgbar{display:none;}
|
.layui-layer-imgprev, .layui-layer-imgnext{position: fixed; top: 50%; width: 27px; _width: 44px; height: 44px; margin-top:-22px; outline:none;blr:expression(this.onFocus=this.blur());}
|
||||||
.layui-layer-imgprev, .layui-layer-imgnext{position:absolute; top:50%; width:27px; _width:44px; height:44px; margin-top:-22px; outline:none;blr:expression(this.onFocus=this.blur());}
|
.layui-layer-imgprev{left: 30px; background-position:-5px -5px; _background-position:-70px -5px;}
|
||||||
.layui-layer-imgprev{left:10px; background-position:-5px -5px; _background-position:-70px -5px;}
|
|
||||||
.layui-layer-imgprev:hover{background-position:-33px -5px; _background-position:-120px -5px;}
|
.layui-layer-imgprev:hover{background-position:-33px -5px; _background-position:-120px -5px;}
|
||||||
.layui-layer-imgnext{right:10px; _right:8px; background-position:-5px -50px; _background-position:-70px -50px;}
|
.layui-layer-imgnext{right: 30px; _right:8px; background-position:-5px -50px; _background-position:-70px -50px;}
|
||||||
.layui-layer-imgnext:hover{background-position:-33px -50px; _background-position:-120px -50px;}
|
.layui-layer-imgnext:hover{background-position: -33px -50px; _background-position: -120px -50px;}
|
||||||
.layui-layer-imgbar{position:absolute; left:0; bottom:0; width:100%; height:32px; line-height:32px; background-color:rgba(0,0,0,.8); background-color:#000\9; filter:Alpha(opacity=80); color:#fff; text-overflow: ellipsis; overflow: hidden; white-space: nowrap; font-size:0;}
|
.layui-layer-imgbar{position: fixed; left:0; right: 0; bottom:0; width:100%; height: 40px; line-height: 40px; background-color:#000\9; filter:Alpha(opacity=60); background-color: rgba(2,0,0,.35); color: #fff; text-overflow: ellipsis; overflow: hidden; white-space: nowrap; font-size:0;}
|
||||||
.layui-layer-imgtit{/*position:absolute; left:20px;*/}
|
.layui-layer-imgtit{/*position:absolute; left:20px;*/}
|
||||||
.layui-layer-imgtit *{display:inline-block; *display:inline; *zoom:1; vertical-align:top; font-size:12px;}
|
.layui-layer-imgtit *{display:inline-block; *display:inline; *zoom:1; vertical-align:top; font-size:12px;}
|
||||||
.layui-layer-imgtit a{max-width:65%; text-overflow: ellipsis; overflow: hidden; white-space: nowrap; color:#fff;}
|
.layui-layer-imgtit a{max-width:65%; text-overflow: ellipsis; overflow: hidden; white-space: nowrap; color:#fff;}
|
||||||
@@ -187,3 +184,4 @@ html #layuicss-layer{display: none; position: absolute; width: 1989px;}
|
|||||||
padding-top:3px;padding-bottom:10px;}
|
padding-top:3px;padding-bottom:10px;}
|
||||||
.layui-layer-btn .layui-layer-btn0{border-color:#367fa9;background-color:#367fa9;}
|
.layui-layer-btn .layui-layer-btn0{border-color:#367fa9;background-color:#367fa9;}
|
||||||
.layui-layer-btn a {height:auto;padding:0 12px;font-size:13px;background-color:#f4f4f4;}
|
.layui-layer-btn a {height:auto;padding:0 12px;font-size:13px;background-color:#f4f4f4;}
|
||||||
|
.layui-layer.toast-top-full-width {min-width: 60%;}
|
||||||
|
Before Width: | Height: | Size: 5.7 KiB After Width: | Height: | Size: 5.7 KiB |
|
Before Width: | Height: | Size: 701 B After Width: | Height: | Size: 701 B |
|
Before Width: | Height: | Size: 1.7 KiB After Width: | Height: | Size: 1.7 KiB |
|
After Width: | Height: | Size: 7.4 KiB |
140
common/src/main/resources/static/layer/3.5/theme/moon/style.css
Normal file
@@ -0,0 +1,140 @@
|
|||||||
|
/*
|
||||||
|
* layer皮肤
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
html #layui_layer_skinmoonstylecss {
|
||||||
|
display: none;
|
||||||
|
position: absolute;
|
||||||
|
width: 1989px;
|
||||||
|
}
|
||||||
|
|
||||||
|
body .layer-ext-moon[type="dialog"] {
|
||||||
|
min-width: 320px;
|
||||||
|
}
|
||||||
|
body .layer-ext-moon-msg[type="dialog"]{min-width:200px;}
|
||||||
|
body .layer-ext-moon .layui-layer-title {
|
||||||
|
background: #f6f6f6;
|
||||||
|
color: #212a31;
|
||||||
|
font-size: 16px;
|
||||||
|
font-weight: bold;
|
||||||
|
height: 46px;
|
||||||
|
line-height: 46px;
|
||||||
|
border-bottom: 1px solid #D5D5D5;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
body .layer-ext-moon .layui-layer-content .layui-layer-ico {
|
||||||
|
height: 32px;
|
||||||
|
width: 32px;
|
||||||
|
top:18.5px;
|
||||||
|
}
|
||||||
|
body .layer-ext-moon .layui-layer-ico0 {
|
||||||
|
background: url(default.png) no-repeat -96px 0;
|
||||||
|
;
|
||||||
|
}
|
||||||
|
body .layer-ext-moon .layui-layer-ico1 {
|
||||||
|
background: url(default.png) no-repeat -224px 0;
|
||||||
|
;
|
||||||
|
}
|
||||||
|
body .layer-ext-moon .layui-layer-ico2 {
|
||||||
|
background: url(default.png) no-repeat -192px 0;
|
||||||
|
}
|
||||||
|
body .layer-ext-moon .layui-layer-ico3 {
|
||||||
|
background: url(default.png) no-repeat -160px 0;
|
||||||
|
}
|
||||||
|
body .layer-ext-moon .layui-layer-ico4 {
|
||||||
|
background: url(default.png) no-repeat -320px 0;
|
||||||
|
}
|
||||||
|
body .layer-ext-moon .layui-layer-ico5 {
|
||||||
|
background: url(default.png) no-repeat -288px 0;
|
||||||
|
}
|
||||||
|
body .layer-ext-moon .layui-layer-ico6 {
|
||||||
|
background: url(default.png) -256px 0;
|
||||||
|
}
|
||||||
|
body .layer-ext-moon .layui-layer-ico7 {
|
||||||
|
background: url(default.png) no-repeat -128px 0;
|
||||||
|
}
|
||||||
|
body .layer-ext-moon .layui-layer-setwin {
|
||||||
|
top: 15px;
|
||||||
|
right: 15px;
|
||||||
|
}
|
||||||
|
body .layer-ext-moon .layui-layer-setwin a {
|
||||||
|
width: 16px;
|
||||||
|
height: 16px;
|
||||||
|
}
|
||||||
|
body .layer-ext-moon .layui-layer-setwin .layui-layer-min cite:hover {
|
||||||
|
background-color: #56abe4;
|
||||||
|
}
|
||||||
|
body .layer-ext-moon .layui-layer-setwin .layui-layer-max {
|
||||||
|
background: url(default.png) no-repeat -80px 0;
|
||||||
|
}
|
||||||
|
body .layer-ext-moon .layui-layer-setwin .layui-layer-max:hover {
|
||||||
|
background: url(default.png) no-repeat -64px 0;
|
||||||
|
}
|
||||||
|
body .layer-ext-moon .layui-layer-setwin .layui-layer-maxmin {
|
||||||
|
background: url(default.png) no-repeat -32px 0;
|
||||||
|
}
|
||||||
|
body .layer-ext-moon .layui-layer-setwin .layui-layer-maxmin:hover {
|
||||||
|
background: url(default.png) no-repeat -16px 0;
|
||||||
|
}
|
||||||
|
body .layer-ext-moon .layui-layer-setwin .layui-layer-close1,body .layer-ext-moon .layui-layer-setwin .layui-layer-close2 {
|
||||||
|
background: url(default.png) 0 0;
|
||||||
|
}
|
||||||
|
body .layer-ext-moon .layui-layer-setwin .layui-layer-close1:hover,body .layer-ext-moon .layui-layer-setwin .layui-layer-close2:hover {
|
||||||
|
background: url(default.png) -48px 0;
|
||||||
|
}
|
||||||
|
body .layer-ext-moon .layui-layer-padding{padding-top: 24px;}
|
||||||
|
body .layer-ext-moon .layui-layer-btn {
|
||||||
|
text-align: center;
|
||||||
|
padding-top: 15px;
|
||||||
|
padding-bottom:15px;
|
||||||
|
background: #f0f4f7;
|
||||||
|
border-top: 1px #c7c7c7 solid;
|
||||||
|
}
|
||||||
|
body .layer-ext-moon .layui-layer-btn a {
|
||||||
|
font-size: 12px;
|
||||||
|
font-weight: normal;
|
||||||
|
margin: 0 3px;
|
||||||
|
margin-right: 7px;
|
||||||
|
margin-left: 7px;
|
||||||
|
padding: 6px 20px;
|
||||||
|
color: #fff;
|
||||||
|
border: 1px solid #0064b6;
|
||||||
|
background: #0071ce;
|
||||||
|
border-radius: 3px;
|
||||||
|
display: inline-block;
|
||||||
|
height: 20px;
|
||||||
|
line-height: 20px;
|
||||||
|
text-align: center;
|
||||||
|
vertical-align: middle;
|
||||||
|
background-repeat: no-repeat;
|
||||||
|
text-decoration: none;
|
||||||
|
outline: none;
|
||||||
|
}
|
||||||
|
body .layer-ext-moon .layui-layer-btn .layui-layer-btn0 {
|
||||||
|
background: #0071ce;
|
||||||
|
}
|
||||||
|
body .layer-ext-moon .layui-layer-btn .layui-layer-btn1 {
|
||||||
|
background: #fff;
|
||||||
|
color: #404a58;
|
||||||
|
border: 1px solid #c0c4cd;
|
||||||
|
border-radius: 3px;
|
||||||
|
}
|
||||||
|
body .layer-ext-moon .layui-layer-btn .layui-layer-btn2 {
|
||||||
|
background: #f60;
|
||||||
|
color: #fff;
|
||||||
|
border: 1px solid #f60;
|
||||||
|
border-radius: 3px;
|
||||||
|
}
|
||||||
|
body .layer-ext-moon .layui-layer-btn .layui-layer-btn3 {
|
||||||
|
background: #f00;
|
||||||
|
color: #fff;
|
||||||
|
border: 1px solid #f00;
|
||||||
|
border-radius: 3px;
|
||||||
|
}
|
||||||
|
|
||||||
|
body .layer-ext-moon .layui-layer-title span.layui-layer-tabnow{
|
||||||
|
height:47px;
|
||||||
|
}
|
||||||
@@ -1,8 +1,20 @@
|
|||||||
# jeesite4-cms
|
|
||||||
|
# 技术交流
|
||||||
|
|
||||||
|
* 交流 QQ 群(千人大群):`127515876`、`209330483`、`223507718`、`709534275`、`730390092`、`1373527`、`183903863(外包)`
|
||||||
|
* 码云Gitee:<https://gitee.com/thinkgem/jeesite4>
|
||||||
|
* GitHub:<https://github.com/thinkgem/jeesite4>
|
||||||
|
* 作者博客:<https://my.oschina.net/thinkgem>
|
||||||
|
* **帮助文档:**<http://docs.jeesite.com>
|
||||||
|
* 官方网站:<http://jeesite.com>
|
||||||
|
* 问题反馈:<http://jeesite.net> [【新手必读】](https://gitee.com/thinkgem/jeesite4/issues/I18ARR)
|
||||||
|
* 关注微信公众号,了解最新动态:
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
## 项目介绍
|
## 项目介绍
|
||||||
|
|
||||||
JeeSite4 CMS 内容管理模块
|
JeeSite CMS 内容管理模块
|
||||||
|
|
||||||
包含功能:站点管理、栏目管理、模板管理、内容发布
|
包含功能:站点管理、栏目管理、模板管理、内容发布
|
||||||
|
|
||||||
@@ -19,18 +31,19 @@ JeeSite4 CMS 内容管理模块
|
|||||||
|
|
||||||
### 本地运行
|
### 本地运行
|
||||||
|
|
||||||
1. 环境准备:`JDK 1.8 or 11`、`Maven 3.6+`、`MySQL 5.7 or 8.0`
|
1. 环境准备:`JDK 1.8 or 11、17`、`Maven 3.6+`、`MySQL 5.7 or 8.0`
|
||||||
2. 下载源码:<https://gitee.com/thinkgem/jeesite4-cms>
|
2. 下载源码:<https://gitee.com/thinkgem/jeesite4/tree/master/modules/cms>
|
||||||
3. 打开文件:/web`/src/main/resources/config/application.yml` 配置JDBC连接
|
3. 打开文件:/web`/src/main/resources/config/application.yml` 配置JDBC连接
|
||||||
4. 执行脚本:/web`/bin/init-data.bat` 初始化数据库
|
4. 打开文件:/web`/pom.xml` 打开 `jeesite-module-cms` 模块(去掉的注释标记)
|
||||||
|
5. 执行脚本:/web`/bin/init-data.bat` 初始化数据库
|
||||||
5. 执行脚本:/web`/bin/run-tomcat.bat` 启动服务即可
|
5. 执行脚本:/web`/bin/run-tomcat.bat` 启动服务即可
|
||||||
6. 浏览器访问:<http://127.0.0.1:8980/js/> 账号 system 密码 admin
|
6. 浏览器访问:<http://127.0.0.1:8980/js/> 账号 system 密码 admin
|
||||||
7. 部署常见问题:<http://jeesite.com/?t=284210>
|
7. 部署常见问题:<https://jeesite.com/docs/faq/>
|
||||||
|
|
||||||
### 开发环境
|
### 开发环境
|
||||||
|
|
||||||
1. 部署运行:<http://jeesite.com/?t=267354>
|
1. 部署运行文档:<https://jeesite.com/docs/install-deploy/>
|
||||||
2. 常见问题:<http://jeesite.com/?t=284210>
|
2. 部署常见问题:<https://jeesite.com/docs/faq/>
|
||||||
|
|
||||||
## 在线文档
|
## 在线文档
|
||||||
|
|
||||||
@@ -38,46 +51,35 @@ JeeSite4 CMS 内容管理模块
|
|||||||
|
|
||||||
## 授权协议声明
|
## 授权协议声明
|
||||||
|
|
||||||
1. 已开源的代码,授权协议采用 AGPL v3 + Apache Licence v2 进行发行。
|
1. 基于 Apache License Version 2.0 协议发布,可用于商业项目,但必须遵守以下补充条款。
|
||||||
2. 您可以免费使用、修改和衍生代码,但不允许修改后和衍生的代码做为闭源软件发布。
|
2. 不得将本软件应用于危害国家安全、荣誉和利益的行为,不能以任何形式用于非法为目的的行为。
|
||||||
3. 修改后和衍生的代码必须也按照AGPL协议进行流通,对修改后和衍生的代码必须向社会公开。
|
3. 在延伸的代码中(修改和有源代码衍生的代码中)需要带有原来代码中的协议、版权声明和其他原作者
|
||||||
4. 如果您修改了代码,需要在被修改的文件中进行说明,并遵守代码格式规范,帮助他人更好的理解您的用意。
|
规定需要包含的说明(请尊重原作者的著作权,不要删除或修改文件中的`Copyright`和`@author`信息)
|
||||||
5. 在延伸的代码中(修改和有源代码衍生的代码中)需要带有原来代码中的协议、版权声明和其他原作者规定
|
更不要,全局替换源代码中的 jeesite 或 ThinkGem 等字样,否则你将违反本协议条款承担责任。
|
||||||
需要包含的说明(请尊重原作者的著作权,不要删除或修改文件中的`@author`信息)。
|
4. 您若套用本软件的一些代码或功能参考,请保留源文件中的版权和作者,需要在您的软件介绍明显位置
|
||||||
6. 您可以应用于商业软件,但必须遵循以上条款原则(请协助改进本作品)。
|
说明出处,举例:本软件基于 JeeSite 快速开发平台,并附带链接:http://jeesite.com
|
||||||
7. 关系平台的发展战略考虑,底层部分代码暂未开源,但这不影响您的二次开发。
|
5. 任何基于本软件而产生的一切法律纠纷和责任,均于我司无关。
|
||||||
8. 请知悉社区版,用户数不可超过100个,最大允许20个用户同时在线(不含匿名)。
|
6. 如果你对本软件有改进,希望可以贡献给我们,共同进步。
|
||||||
|
7. 本项目已申请软件著作权,请尊重开源,感谢阅读。
|
||||||
|
8. 本版本无用户数限制,无在线人数限制。
|
||||||
|
|
||||||
## 技术服务与支持
|
## 技术服务与支持
|
||||||
|
|
||||||
* 没有资金的支撑就很难得到发展,特别是一个好的产品,如果 JeeSite 帮助了您,请为我们点赞。支持我们,您可以得到一些回报,有了这些我们会把公益事业做的更好,回报社区和社会,请给我们一些动力吧,在此非常感谢已支持我们的朋友!
|
* 没有资金的支撑就很难得到发展,特别是一个好的产品,如果 JeeSite 帮助了您,请为我们点赞。支持我们,您可以得到一些回报,有了这些我们会把公益事业做的更好,回报社区和社会,请给我们一些动力吧,在此非常感谢已支持我们的朋友!
|
||||||
* **联系方式(官方商务)QQ:[1766571055](http://wpa.qq.com/msgrd?v=3&uin=1766571055&site=qq&menu=yes)**
|
* **联系我们**:请访问技术支持服务页面:<https://jeesite.com/docs/support/>
|
||||||
* 技术服务支持网页:<http://s.jeesite.com>
|
|
||||||
|
|
||||||
# 技术交流方式
|
|
||||||
|
|
||||||
* QQ 群号:`127515876`、`209330483`、`223507718`、`709534275`、`730390092`、`1373527`、`183903863(外包)`
|
|
||||||
* 问题反馈:<https://gitee.com/thinkgem/jeesite4/issues> [【新手必读】](https://github.com/ryanhanwu/How-To-Ask-Questions-The-Smart-Way/blob/master/README-zh_CN.md)
|
|
||||||
* 码云Gitee:<https://gitee.com/thinkgem/jeesite4>
|
|
||||||
* GitHub:<https://github.com/thinkgem/jeesite4>
|
|
||||||
* 作者博客:<https://my.oschina.net/thinkgem>
|
|
||||||
* **技术服务:**<http://s.jeesite.com>
|
|
||||||
* 官方网站:<http://jeesite.com>
|
|
||||||
* 官方论坛:<http://jeesite.net>
|
|
||||||
* 微信公众号(关注动态):
|
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||
## 今后如何升级?
|
## 今后如何升级?
|
||||||
|
|
||||||
尽量不修改 web 项目以外的源码项目,如 jeesite-common、jeesite-modele-core,如果修改了,请 Pull Requests 上来,否则代码与官方不同步,会将对你的日后升级增加难度。
|
尽量不修改 web 项目以外的源码项目,如 jeesite-common、jeesite-modele-core,如果修改了,请 Pull Requests 上来,否则代码与官方不同步,可能会将对你的日后升级增加难度。
|
||||||
|
|
||||||
如果您修改了依赖模块代码,也没关系,这时你需要利用 Git 版本控制工具,与官方仓库代码进行同步,合并代码即可。
|
如果您修改了依赖模块代码,也没关系,这时你需要利用 Git 版本控制工具,与官方仓库代码进行同步,合并代码即可。
|
||||||
|
|
||||||
每个版本升级,我们都会附带详细更新日志:<http://jeesite.com/?t=273830>。
|
每个版本升级,我们都会附带详细更新日志:<https://jeesite.com/docs/upgrade/>。
|
||||||
|
|
||||||
在这里,你可以看到 JeeSite 新增哪些新功能和改进,在每个版本下都有对应升级方法。
|
在这里,你可以看到 JeeSite 新增哪些新功能和改进,在每个版本下都有对应升级方法。
|
||||||
|
|
||||||
|
如果跨版本升级,可以将版本号直接修改为最新版本,然后去看每个版本的升级方法,修改对应业务。
|
||||||
|
|
||||||
# Git 全局设置技巧
|
# Git 全局设置技巧
|
||||||
|
|
||||||
```
|
```
|
||||||
|
|||||||
16
modules/cms/bin/deploy.sh
Normal file
@@ -0,0 +1,16 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
# /**
|
||||||
|
# * Copyright (c) 2013-Now http://jeesite.com All rights reserved.
|
||||||
|
# * No deletion without permission, or be held responsible to law.
|
||||||
|
# *
|
||||||
|
# * Author: ThinkGem@163.com
|
||||||
|
# *
|
||||||
|
# */
|
||||||
|
echo ""
|
||||||
|
echo "[信息] 部署工程版本到Nexus服务器。"
|
||||||
|
echo ""
|
||||||
|
|
||||||
|
cd ..
|
||||||
|
mvn clean deploy -Dmaven.test.skip=true -Pdeploy
|
||||||
|
|
||||||
|
cd bin
|
||||||
@@ -1,19 +0,0 @@
|
|||||||
@echo off
|
|
||||||
rem /**
|
|
||||||
rem * Copyright (c) 2013-Now http://jeesite.com All rights reserved.
|
|
||||||
rem * No deletion without permission, or be held responsible to law.
|
|
||||||
rem *
|
|
||||||
rem * Author: ThinkGem@163.com
|
|
||||||
rem */
|
|
||||||
echo.
|
|
||||||
echo [<5B><>Ϣ] <20><><EFBFBD>빤<EFBFBD><EBB9A4>Javadoc<6F><63><EFBFBD><EFBFBD><EFBFBD><EFBFBD>jar<61><72><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD>
|
|
||||||
echo.
|
|
||||||
|
|
||||||
%~d0
|
|
||||||
cd %~dp0
|
|
||||||
|
|
||||||
cd ..
|
|
||||||
call mvn clean package -Pjavadoc
|
|
||||||
|
|
||||||
cd bin
|
|
||||||
pause
|
|
||||||
16
modules/cms/bin/package.sh
Normal file
@@ -0,0 +1,16 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
# /**
|
||||||
|
# * Copyright (c) 2013-Now http://jeesite.com All rights reserved.
|
||||||
|
# * No deletion without permission, or be held responsible to law.
|
||||||
|
# *
|
||||||
|
# * Author: ThinkGem@163.com
|
||||||
|
# *
|
||||||
|
# */
|
||||||
|
echo ""
|
||||||
|
echo "[信息] 打包Web工程,生成war/jar包文件。"
|
||||||
|
echo ""
|
||||||
|
|
||||||
|
cd ..
|
||||||
|
mvn clean install -Dmaven.test.skip=true -Ppackage
|
||||||
|
|
||||||
|
cd bin
|
||||||
@@ -6,7 +6,7 @@
|
|||||||
<parent>
|
<parent>
|
||||||
<groupId>com.jeesite</groupId>
|
<groupId>com.jeesite</groupId>
|
||||||
<artifactId>jeesite-parent</artifactId>
|
<artifactId>jeesite-parent</artifactId>
|
||||||
<version>4.3.2-SNAPSHOT</version>
|
<version>4.3.3-SNAPSHOT</version>
|
||||||
<relativePath>../../parent/pom.xml</relativePath>
|
<relativePath>../../parent/pom.xml</relativePath>
|
||||||
</parent>
|
</parent>
|
||||||
|
|
||||||
|
|||||||
@@ -10,3 +10,4 @@
|
|||||||
4.3.0
|
4.3.0
|
||||||
4.3.1
|
4.3.1
|
||||||
4.3.2
|
4.3.2
|
||||||
|
4.3.3
|
||||||
@@ -1,5 +1,5 @@
|
|||||||
<% layout('layouts/default.html', {title: '全站搜索', libs: []}){ %>
|
<% layout('layouts/default.html', {title: '全站搜索', libs: []}){ %>
|
||||||
<script src="${ctxStatic}/laydate/5.0/laydate.js?${_version}"></script>
|
<script src="${ctxStatic}/laydate/5.3/laydate.js?${_version}"></script>
|
||||||
<style type="text/css">
|
<style type="text/css">
|
||||||
form.search {margin:12px 20px 5px;}
|
form.search {margin:12px 20px 5px;}
|
||||||
form.search input.txt {padding:4px 8px;font-size:16px;width:300px;margin:5px;border:1px solid #bbb;border-radius:3px;}
|
form.search input.txt {padding:4px 8px;font-size:16px;width:300px;margin:5px;border:1px solid #bbb;border-radius:3px;}
|
||||||
|
|||||||
@@ -6,7 +6,7 @@
|
|||||||
<parent>
|
<parent>
|
||||||
<groupId>com.jeesite</groupId>
|
<groupId>com.jeesite</groupId>
|
||||||
<artifactId>jeesite-parent</artifactId>
|
<artifactId>jeesite-parent</artifactId>
|
||||||
<version>4.3.2-SNAPSHOT</version>
|
<version>4.3.3-SNAPSHOT</version>
|
||||||
<relativePath>../../parent/pom.xml</relativePath>
|
<relativePath>../../parent/pom.xml</relativePath>
|
||||||
</parent>
|
</parent>
|
||||||
|
|
||||||
|
|||||||
@@ -265,7 +265,7 @@ public class OfficeController extends BaseController {
|
|||||||
/**
|
/**
|
||||||
* 获取机构树结构数据
|
* 获取机构树结构数据
|
||||||
* @param excludeCode 排除的ID
|
* @param excludeCode 排除的ID
|
||||||
* @param parentCode 上级Code
|
* @param parentCode 设置父级编码返回一级
|
||||||
* @param isAll 是否显示所有机构(true:不进行权限过滤)
|
* @param isAll 是否显示所有机构(true:不进行权限过滤)
|
||||||
* @param officeTypes 机构类型(1:省级公司;2:市级公司;3:部门)
|
* @param officeTypes 机构类型(1:省级公司;2:市级公司;3:部门)
|
||||||
* @param companyCode 仅查询公司下的机构
|
* @param companyCode 仅查询公司下的机构
|
||||||
@@ -281,7 +281,7 @@ public class OfficeController extends BaseController {
|
|||||||
@ResponseBody
|
@ResponseBody
|
||||||
public List<Map<String, Object>> treeData(String excludeCode, String parentCode, Boolean isAll,
|
public List<Map<String, Object>> treeData(String excludeCode, String parentCode, Boolean isAll,
|
||||||
String officeTypes, String companyCode, String isShowCode, String isShowFullName,
|
String officeTypes, String companyCode, String isShowCode, String isShowFullName,
|
||||||
String isLoadUser, String postCode, String roleCode, String ctrlPermi) {
|
String isLoadUser, String userIdPrefix, String postCode, String roleCode, String ctrlPermi) {
|
||||||
List<Map<String, Object>> mapList = ListUtils.newArrayList();
|
List<Map<String, Object>> mapList = ListUtils.newArrayList();
|
||||||
Office where = new Office();
|
Office where = new Office();
|
||||||
where.setStatus(Office.STATUS_NORMAL);
|
where.setStatus(Office.STATUS_NORMAL);
|
||||||
@@ -297,6 +297,7 @@ public class OfficeController extends BaseController {
|
|||||||
if (StringUtils.isNotBlank(officeTypes)){
|
if (StringUtils.isNotBlank(officeTypes)){
|
||||||
where.setOfficeType_in(officeTypes.split(","));
|
where.setOfficeType_in(officeTypes.split(","));
|
||||||
}
|
}
|
||||||
|
List<String> idList = ListUtils.newArrayList();
|
||||||
List<Office> list = officeService.findList(where);
|
List<Office> list = officeService.findList(where);
|
||||||
for (int i = 0; i < list.size(); i++) {
|
for (int i = 0; i < list.size(); i++) {
|
||||||
Office e = list.get(i);
|
Office e = list.get(i);
|
||||||
@@ -313,6 +314,7 @@ public class OfficeController extends BaseController {
|
|||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
idList.add(e.getId());
|
||||||
Map<String, Object> map = MapUtils.newHashMap();
|
Map<String, Object> map = MapUtils.newHashMap();
|
||||||
map.put("id", e.getId());
|
map.put("id", e.getId());
|
||||||
map.put("pId", e.getParentCode());
|
map.put("pId", e.getParentCode());
|
||||||
@@ -323,23 +325,21 @@ public class OfficeController extends BaseController {
|
|||||||
map.put("code", e.getViewCode());
|
map.put("code", e.getViewCode());
|
||||||
map.put("name", StringUtils.getTreeNodeName(isShowCode, e.getViewCode(), name));
|
map.put("name", StringUtils.getTreeNodeName(isShowCode, e.getViewCode(), name));
|
||||||
map.put("title", e.getFullName());
|
map.put("title", e.getFullName());
|
||||||
// 如果需要加载用户,则处理用户数据
|
// 返回是否是父节点,如果需要加载用户,则全部都是父节点,来加载用户数据
|
||||||
if (StringUtils.inString(isLoadUser, "true", "lazy")) {
|
map.put("isParent", !e.getIsTreeLeaf() || StringUtils.inString(isLoadUser, "true", "lazy"));
|
||||||
map.put("isParent", true);
|
mapList.add(map);
|
||||||
|
}
|
||||||
// 一次性后台加载用户,若数据量比较大,建议使用懒加载
|
// 一次性后台加载用户,若数据量比较大,建议使用懒加载
|
||||||
if (StringUtils.equals(isLoadUser, "true")) {
|
if (StringUtils.equals(isLoadUser, "true") && idList.size() > 0) {
|
||||||
List<Map<String, Object>> userList =
|
List<Map<String, Object>> userList =
|
||||||
empUserController.treeData("u_", e.getOfficeCode(), e.getOfficeCode(),
|
empUserController.treeData(userIdPrefix, idList.toArray(new String[idList.size()]),
|
||||||
companyCode, postCode, roleCode, isAll, isShowCode, ctrlPermi);
|
companyCode, postCode, roleCode, isAll, isShowCode, ctrlPermi);
|
||||||
mapList.addAll(userList);
|
mapList.addAll(userList);
|
||||||
}
|
}
|
||||||
}
|
|
||||||
mapList.add(map);
|
|
||||||
}
|
|
||||||
// 懒加载用户,点击叶子节点的时候再去加载部门(懒加载无法回显,数据量大时,建议使用 listselect 实现列表选择用户)
|
// 懒加载用户,点击叶子节点的时候再去加载部门(懒加载无法回显,数据量大时,建议使用 listselect 实现列表选择用户)
|
||||||
if (StringUtils.inString(isLoadUser, "lazy") && StringUtils.isNotBlank(parentCode)) {
|
if (StringUtils.inString(isLoadUser, "lazy") && StringUtils.isNotBlank(parentCode)) {
|
||||||
List<Map<String, Object>> userList =
|
List<Map<String, Object>> userList =
|
||||||
empUserController.treeData("u_", parentCode, parentCode,
|
empUserController.treeData(userIdPrefix, new String[]{parentCode},
|
||||||
companyCode, postCode, roleCode, isAll, isShowCode, ctrlPermi);
|
companyCode, postCode, roleCode, isAll, isShowCode, ctrlPermi);
|
||||||
mapList.addAll(userList);
|
mapList.addAll(userList);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -93,7 +93,10 @@ public class CorpAdminController extends BaseController {
|
|||||||
// 获取当前用户所拥有的角色
|
// 获取当前用户所拥有的角色
|
||||||
Role role = new Role();
|
Role role = new Role();
|
||||||
role.setUserCode(user.getUserCode());
|
role.setUserCode(user.getUserCode());
|
||||||
model.addAttribute("roleList", roleService.findListByUserCode(role));
|
List<Role> roleList = roleService.findListByUserCode(role);
|
||||||
|
roleList.add(new Role(Role.CORP_ADMIN_ROLE_CODE));
|
||||||
|
model.addAttribute("roleList", roleList);
|
||||||
|
model.addAttribute("corpAdminRoleCode", Role.CORP_ADMIN_ROLE_CODE);
|
||||||
// 操作类型:addCorp: 添加租户; addAdmin: 添加管理员; edit: 编辑
|
// 操作类型:addCorp: 添加租户; addAdmin: 添加管理员; edit: 编辑
|
||||||
model.addAttribute("op", op);
|
model.addAttribute("op", op);
|
||||||
model.addAttribute("user", user);
|
model.addAttribute("user", user);
|
||||||
|
|||||||
@@ -33,6 +33,7 @@ import com.jeesite.common.collect.MapUtils;
|
|||||||
import com.jeesite.common.config.Global;
|
import com.jeesite.common.config.Global;
|
||||||
import com.jeesite.common.entity.Page;
|
import com.jeesite.common.entity.Page;
|
||||||
import com.jeesite.common.lang.DateUtils;
|
import com.jeesite.common.lang.DateUtils;
|
||||||
|
import com.jeesite.common.lang.ObjectUtils;
|
||||||
import com.jeesite.common.lang.StringUtils;
|
import com.jeesite.common.lang.StringUtils;
|
||||||
import com.jeesite.common.shiro.realm.AuthorizingRealm;
|
import com.jeesite.common.shiro.realm.AuthorizingRealm;
|
||||||
import com.jeesite.common.utils.excel.ExcelExport;
|
import com.jeesite.common.utils.excel.ExcelExport;
|
||||||
@@ -381,7 +382,6 @@ public class EmpUserController extends BaseController {
|
|||||||
/**
|
/**
|
||||||
* 根据机构查询用户树格式
|
* 根据机构查询用户树格式
|
||||||
* @param idPrefix id前缀,默认 u_
|
* @param idPrefix id前缀,默认 u_
|
||||||
* @param pId 父级编码,默认 0
|
|
||||||
* @param officeCode 机构Code
|
* @param officeCode 机构Code
|
||||||
* @param companyCode 公司Code
|
* @param companyCode 公司Code
|
||||||
* @param postCode 岗位Code
|
* @param postCode 岗位Code
|
||||||
@@ -393,13 +393,17 @@ public class EmpUserController extends BaseController {
|
|||||||
@RequiresPermissions("user")
|
@RequiresPermissions("user")
|
||||||
@RequestMapping(value = "treeData")
|
@RequestMapping(value = "treeData")
|
||||||
@ResponseBody
|
@ResponseBody
|
||||||
public List<Map<String, Object>> treeData(String idPrefix, String pId,
|
public List<Map<String, Object>> treeData(String idPrefix,
|
||||||
String officeCode, String companyCode, String postCode, String roleCode,
|
String[] officeCode, String companyCode, String postCode, String roleCode,
|
||||||
Boolean isAll, String isShowCode, String ctrlPermi) {
|
Boolean isAll, String isShowCode, String ctrlPermi) {
|
||||||
List<Map<String, Object>> mapList = ListUtils.newArrayList();
|
List<Map<String, Object>> mapList = ListUtils.newArrayList();
|
||||||
EmpUser empUser = new EmpUser();
|
EmpUser empUser = new EmpUser();
|
||||||
Employee employee = empUser.getEmployee();
|
Employee employee = empUser.getEmployee();
|
||||||
employee.getOffice().setOfficeCode(officeCode);
|
if (officeCode != null && officeCode.length == 1) {
|
||||||
|
employee.getOffice().setOfficeCode(officeCode[0]);
|
||||||
|
}else {
|
||||||
|
employee.getOffice().setId_in(officeCode);
|
||||||
|
}
|
||||||
employee.getOffice().setIsQueryChildren(false);
|
employee.getOffice().setIsQueryChildren(false);
|
||||||
employee.getCompany().setCompanyCode(companyCode);
|
employee.getCompany().setCompanyCode(companyCode);
|
||||||
employee.getCompany().setIsQueryChildren(false);
|
employee.getCompany().setIsQueryChildren(false);
|
||||||
@@ -414,8 +418,8 @@ public class EmpUserController extends BaseController {
|
|||||||
for (int i = 0; i < list.size(); i++) {
|
for (int i = 0; i < list.size(); i++) {
|
||||||
EmpUser e = list.get(i);
|
EmpUser e = list.get(i);
|
||||||
Map<String, Object> map = MapUtils.newHashMap();
|
Map<String, Object> map = MapUtils.newHashMap();
|
||||||
map.put("id", StringUtils.defaultIfBlank(idPrefix, "u_") + e.getId());
|
map.put("id", ObjectUtils.defaultIfNull(idPrefix, "u_") + e.getId());
|
||||||
map.put("pId", StringUtils.defaultIfBlank(pId, "0"));
|
map.put("pId", StringUtils.defaultIfBlank(e.getEmployee().getOffice().getOfficeCode(), "0"));
|
||||||
map.put("name", StringUtils.getTreeNodeName(isShowCode, e.getLoginCode(), e.getUserName()));
|
map.put("name", StringUtils.getTreeNodeName(isShowCode, e.getLoginCode(), e.getUserName()));
|
||||||
mapList.add(map);
|
mapList.add(map);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -280,8 +280,7 @@ job:
|
|||||||
isClustered: true
|
isClustered: true
|
||||||
dataSourceName: job
|
dataSourceName: job
|
||||||
clusterCheckinInterval: 1000
|
clusterCheckinInterval: 1000
|
||||||
# className: org.quartz.impl.jdbcjobstore.JobStoreTX
|
#className: org.springframework.scheduling.quartz.LocalDataSourceJobStore
|
||||||
# className: org.quartz.impl.jdbcjobstore.JobStoreCMT
|
|
||||||
|
|
||||||
# 调度日志配置
|
# 调度日志配置
|
||||||
log:
|
log:
|
||||||
|
|||||||
@@ -118,8 +118,10 @@
|
|||||||
绿灰=Green Grey
|
绿灰=Green Grey
|
||||||
红灰=Red Grey
|
红灰=Red Grey
|
||||||
黄灰=Yellow Grey
|
黄灰=Yellow Grey
|
||||||
亮蓝(新)=Bright Blue
|
亮蓝(经典)=Bright Blue
|
||||||
浅蓝(新)=Light Blue
|
浅蓝(经典)=Light Blue
|
||||||
|
亮蓝(无界)=Bright Blue2
|
||||||
|
浅蓝(无界)=Light Blue2
|
||||||
表单弹窗模式=Form popup mode
|
表单弹窗模式=Form popup mode
|
||||||
取消页签模式=Cancel tab mode
|
取消页签模式=Cancel tab mode
|
||||||
|
|
||||||
|
|||||||
@@ -10,8 +10,11 @@
|
|||||||
<script src="${ctxStatic}/jquery/jquery-3.5.0.min.js"></script>
|
<script src="${ctxStatic}/jquery/jquery-3.5.0.min.js"></script>
|
||||||
<script src="${ctxStatic}/jquery/jquery-migrate-3.2.0.min.js"></script>
|
<script src="${ctxStatic}/jquery/jquery-migrate-3.2.0.min.js"></script>
|
||||||
<!--[if lt IE 9]><script src="${ctxStatic}/common/h5fix.min.js"></script><![endif]-->
|
<!--[if lt IE 9]><script src="${ctxStatic}/common/h5fix.min.js"></script><![endif]-->
|
||||||
<% if(parameter.__layer! == 'true'){ if(parameter.__layer_title! == 'false'){ %>
|
<% if(parameter.__layer! == 'true'){ %>
|
||||||
<style>.main-content>.box-main>.box-header{padding-right:45px;}</style>
|
<style>.ui-layout-container,.main-content{padding:0!important}</style>
|
||||||
|
<% if(parameter.__layer_title! == 'false'){ %>
|
||||||
|
<style>.main-content>.box-main>.box-header{padding-right:45px}</style>
|
||||||
<% }else{ %>
|
<% }else{ %>
|
||||||
<style>.main-content>.box-main>.box-header{display:none;}</style>
|
<style>.main-content>.box-main>.box-header{display:none}</style>
|
||||||
<% } } %>
|
<% }
|
||||||
|
} %>
|
||||||
|
|||||||
@@ -3,8 +3,8 @@
|
|||||||
<script src="${ctxStatic}/bootstrap/js/bootstrap.min.js"></script>
|
<script src="${ctxStatic}/bootstrap/js/bootstrap.min.js"></script>
|
||||||
<script src="${ctxStatic}/select2/4.0/select2.js?${_version}"></script>
|
<script src="${ctxStatic}/select2/4.0/select2.js?${_version}"></script>
|
||||||
<script src="${ctxStatic}/select2/4.0/i18n/${lang()}.js?${_version}"></script>
|
<script src="${ctxStatic}/select2/4.0/i18n/${lang()}.js?${_version}"></script>
|
||||||
<script src="${ctxStatic}/layer/3.1/layer.js?${_version}"></script>
|
<script src="${ctxStatic}/layer/3.5/layer.js?${_version}"></script>
|
||||||
<script src="${ctxStatic}/laydate/5.0/laydate.js?${_version}"></script>
|
<script src="${ctxStatic}/laydate/5.3/laydate.js?${_version}"></script>
|
||||||
<% if (@ListUtils.inString('zTree', libs!)){ %>
|
<% if (@ListUtils.inString('zTree', libs!)){ %>
|
||||||
<script src="${ctxStatic}/jquery-ztree/3.5/js/jquery.ztree.all-3.5.js?${_version}"></script>
|
<script src="${ctxStatic}/jquery-ztree/3.5/js/jquery.ztree.all-3.5.js?${_version}"></script>
|
||||||
<% } %>
|
<% } %>
|
||||||
|
|||||||
@@ -104,7 +104,7 @@ $("#inputForm").validate({
|
|||||||
if(data.result == Global.TRUE){
|
if(data.result == Global.TRUE){
|
||||||
js.closeCurrentTabPage(function(contentWindow){
|
js.closeCurrentTabPage(function(contentWindow){
|
||||||
(contentWindow.win||contentWindow).$('#dataGrid').dataGrid('refreshTreeChildren',
|
(contentWindow.win||contentWindow).$('#dataGrid').dataGrid('refreshTreeChildren',
|
||||||
$('#parentCode').val(), '${company.id}');
|
$('#parentCode').val(), '${area.id}');
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
}, "json");
|
}, "json");
|
||||||
|
|||||||
@@ -1,8 +1,7 @@
|
|||||||
<% layout('/layouts/default.html', {title:'切换主题'}){ %>
|
<% layout('/layouts/default.html', {title:'切换主题'}){ %>
|
||||||
<link rel="stylesheet" href="${ctxStatic}/icheck/1.0/square/blue.css?${_version}">
|
|
||||||
<style>
|
<style>
|
||||||
.list-unstyled{margin:10px;}
|
.list-unstyled{margin:10px;}
|
||||||
.full-opacity-hover{opacity:1;filter:alpha(opacity=1);border:1px solid #fff}
|
.full-opacity-hover{opacity:1;filter:none;border:1px solid #fff}
|
||||||
.full-opacity-hover:hover{border:1px solid #f00;}
|
.full-opacity-hover:hover{border:1px solid #f00;}
|
||||||
</style>
|
</style>
|
||||||
<ul class="list-unstyled clearfix">
|
<ul class="list-unstyled clearfix">
|
||||||
@@ -139,7 +138,7 @@
|
|||||||
<span style="display:block;width:20%;float:left;height:30px;background:#f9fafc"></span>
|
<span style="display:block;width:20%;float:left;height:30px;background:#f9fafc"></span>
|
||||||
<span style="display:block;width:80%;float:left;height:30px;background:#f4f5f7"></span>
|
<span style="display:block;width:80%;float:left;height:30px;background:#f4f5f7"></span>
|
||||||
</a>
|
</a>
|
||||||
<p class="text-center no-margin">${text('亮蓝(新)')}</p>
|
<p class="text-center no-margin">${text('亮蓝(经典)')}</p>
|
||||||
</li>
|
</li>
|
||||||
<li style="float:left;width:16.66666%;padding:5px;">
|
<li style="float:left;width:16.66666%;padding:5px;">
|
||||||
<a href="javascript:" data-skin="skin-blue-light2" style="display:block;box-shadow:0 0 3px rgba(0,0,0,0.4)" class="clearfix full-opacity-hover">
|
<a href="javascript:" data-skin="skin-blue-light2" style="display:block;box-shadow:0 0 3px rgba(0,0,0,0.4)" class="clearfix full-opacity-hover">
|
||||||
@@ -148,11 +147,29 @@
|
|||||||
<span style="display:block;width:20%;float:left;height:30px;background:#f9fafc"></span>
|
<span style="display:block;width:20%;float:left;height:30px;background:#f9fafc"></span>
|
||||||
<span style="display:block;width:80%;float:left;height:30px;background:#f4f5f7"></span>
|
<span style="display:block;width:80%;float:left;height:30px;background:#f4f5f7"></span>
|
||||||
</a>
|
</a>
|
||||||
<p class="text-center no-margin">${text('浅蓝(新)')}</p>
|
<p class="text-center no-margin">${text('浅蓝(经典)')}</p>
|
||||||
</li>
|
</li>
|
||||||
<li style="float:left;padding:18px 0 0 45px;">
|
<li style="float:left;width:16.66666%;padding:5px;">
|
||||||
<#form:checkbox name="formLayerModel" label="${text('表单弹窗模式')}" class="form-control" data-style="square-blue" style="margin-right:20px"/>
|
<a href="javascript:" data-skin="skin-blue3" style="display:block;box-shadow:0 0 3px rgba(0,0,0,0.4)" class="clearfix full-opacity-hover">
|
||||||
<#form:checkbox name="tabPageModel" label="${text('取消页签模式')}" class="form-control" data-style="square-blue"/>
|
<span style="display:block;width:20%;float:left;height:13px;background:#1648ab"></span>
|
||||||
|
<span style="display:block;width:80%;float:left;height:13px;background:#1951be"></span>
|
||||||
|
<span style="display:block;width:20%;float:left;height:30px;background:#f9fafc"></span>
|
||||||
|
<span style="display:block;width:80%;float:left;height:30px;background:#f4f5f7"></span>
|
||||||
|
</a>
|
||||||
|
<p class="text-center no-margin">${text('亮蓝(无界)')}</p>
|
||||||
|
</li>
|
||||||
|
<li style="float:left;width:16.66666%;padding:5px;">
|
||||||
|
<a href="javascript:" data-skin="skin-blue-light3" style="display:block;box-shadow:0 0 3px rgba(0,0,0,0.4)" class="clearfix full-opacity-hover">
|
||||||
|
<span style="display:block;width:20%;float:left;height:13px;background:#1681e5"></span>
|
||||||
|
<span style="display:block;width:80%;float:left;height:13px;background:#1890ff"></span>
|
||||||
|
<span style="display:block;width:20%;float:left;height:30px;background:#f9fafc"></span>
|
||||||
|
<span style="display:block;width:80%;float:left;height:30px;background:#f4f5f7"></span>
|
||||||
|
</a>
|
||||||
|
<p class="text-center no-margin">${text('浅蓝(无界)')}</p>
|
||||||
|
</li>
|
||||||
|
<li style="float:left;width:32%;padding-top:8px;text-align:center;">
|
||||||
|
<#form:checkbox name="formLayerModel" label="${text('表单弹窗模式')}" class="form-control"/>
|
||||||
|
<#form:checkbox name="tabPageModel" label="${text('取消页签模式')}" class="form-control"/>
|
||||||
</li>
|
</li>
|
||||||
</ul>
|
</ul>
|
||||||
<% } %>
|
<% } %>
|
||||||
|
|||||||
@@ -190,6 +190,18 @@ var roleGrid = $("#roleGrid").dataGrid({
|
|||||||
autoGridWidth: function(){
|
autoGridWidth: function(){
|
||||||
return $('#inputForm .box-body').width()-20;
|
return $('#inputForm .box-body').width()-20;
|
||||||
},
|
},
|
||||||
|
onSelectRow: function(id, isSelect, event){
|
||||||
|
if (!isSelect && id == '${corpAdminRoleCode}') {
|
||||||
|
js.showMessage('${text("该角色为管理员默认,不能取消。")}');
|
||||||
|
}
|
||||||
|
},
|
||||||
|
onSelectAll: function(ids, isSelect){
|
||||||
|
for (var i=0; i<ids.length; i++){
|
||||||
|
if (!isSelect && ids[i] == '${corpAdminRoleCode}') {
|
||||||
|
js.showMessage('${text("该角色为管理员默认,不能取消。")}');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
ajaxSuccess: function(){
|
ajaxSuccess: function(){
|
||||||
<% for (role in roleList!){ %>
|
<% for (role in roleList!){ %>
|
||||||
roleGrid.dataGrid('setSelectRow', '${role.roleCode}');
|
roleGrid.dataGrid('setSelectRow', '${role.roleCode}');
|
||||||
|
|||||||
@@ -295,7 +295,7 @@ var roleGrid = $("#roleGrid").dataGrid({
|
|||||||
<% } %>
|
<% } %>
|
||||||
$("#inputForm").validate({
|
$("#inputForm").validate({
|
||||||
submitHandler: function(form){
|
submitHandler: function(form){
|
||||||
<% if(hasPermi('sys:empUser:authRole') && (op == 'add' || op == 'auth')) { // 获取选中角色 %>
|
<% if(hasPermi('sys:empUser:authRole') && (op == 'add' || op == 'auth')) { %>
|
||||||
$("#userRoleString").val(roleGrid.dataGrid('getSelectRows').join(','));
|
$("#userRoleString").val(roleGrid.dataGrid('getSelectRows').join(','));
|
||||||
<% } %>
|
<% } %>
|
||||||
var empNo = $('#employee_empNo').val();
|
var empNo = $('#employee_empNo').val();
|
||||||
|
|||||||
@@ -5,7 +5,7 @@ companyName: ThinkGem
|
|||||||
|
|
||||||
# 产品版本、版权年份
|
# 产品版本、版权年份
|
||||||
productVersion: V4.3
|
productVersion: V4.3
|
||||||
copyrightYear: 2021
|
copyrightYear: 2022
|
||||||
|
|
||||||
# 数据库连接
|
# 数据库连接
|
||||||
jdbc:
|
jdbc:
|
||||||
|
|||||||
@@ -6,7 +6,7 @@
|
|||||||
<parent>
|
<parent>
|
||||||
<groupId>com.jeesite</groupId>
|
<groupId>com.jeesite</groupId>
|
||||||
<artifactId>jeesite-parent</artifactId>
|
<artifactId>jeesite-parent</artifactId>
|
||||||
<version>4.3.2-SNAPSHOT</version>
|
<version>4.3.3-SNAPSHOT</version>
|
||||||
<relativePath>../../parent/pom.xml</relativePath>
|
<relativePath>../../parent/pom.xml</relativePath>
|
||||||
|
|
||||||
<!-- ====== 这是一个新增模块示例项目,你可以拷贝此项目,修改 artifactId 为您的模块即可 ====== -->
|
<!-- ====== 这是一个新增模块示例项目,你可以拷贝此项目,修改 artifactId 为您的模块即可 ====== -->
|
||||||
|
|||||||
@@ -5,3 +5,4 @@
|
|||||||
4.3.0
|
4.3.0
|
||||||
4.3.1
|
4.3.1
|
||||||
4.3.2
|
4.3.2
|
||||||
|
4.3.3
|
||||||
@@ -6,12 +6,12 @@
|
|||||||
<parent>
|
<parent>
|
||||||
<groupId>org.springframework.boot</groupId>
|
<groupId>org.springframework.boot</groupId>
|
||||||
<artifactId>spring-boot-starter-parent</artifactId>
|
<artifactId>spring-boot-starter-parent</artifactId>
|
||||||
<version>2.5.6</version>
|
<version>2.5.9</version>
|
||||||
</parent>
|
</parent>
|
||||||
|
|
||||||
<groupId>com.jeesite</groupId>
|
<groupId>com.jeesite</groupId>
|
||||||
<artifactId>jeesite-parent</artifactId>
|
<artifactId>jeesite-parent</artifactId>
|
||||||
<version>4.3.2-SNAPSHOT</version>
|
<version>4.3.3-SNAPSHOT</version>
|
||||||
<packaging>pom</packaging>
|
<packaging>pom</packaging>
|
||||||
|
|
||||||
<name>JeeSite Parent</name>
|
<name>JeeSite Parent</name>
|
||||||
@@ -45,15 +45,14 @@
|
|||||||
<groovy.version>3.0.9</groovy.version>
|
<groovy.version>3.0.9</groovy.version>
|
||||||
|
|
||||||
<!-- framework version setting -->
|
<!-- framework version setting -->
|
||||||
<mybatis.version>3.5.7</mybatis.version>
|
<mybatis.version>3.5.9</mybatis.version>
|
||||||
<mybatis-spring.version>2.0.6</mybatis-spring.version>
|
<mybatis-spring.version>2.0.6</mybatis-spring.version>
|
||||||
<jsqlparser.version>4.0</jsqlparser.version>
|
<jsqlparser.version>4.3</jsqlparser.version>
|
||||||
<druid.version>1.2.8</druid.version>
|
<druid.version>1.2.8</druid.version>
|
||||||
<shiro.version>1.8.0</shiro.version>
|
<shiro.version>1.8.0</shiro.version>
|
||||||
<j2cache.version>2.8.0-release</j2cache.version>
|
<j2cache.version>2.8.0-release</j2cache.version>
|
||||||
<beetl.version>3.3-SNAPSHOT</beetl.version>
|
|
||||||
<swagger.version>1.6.0</swagger.version>
|
<swagger.version>1.6.0</swagger.version>
|
||||||
<log4j2.version>2.17.0</log4j2.version>
|
<log4j2.version>2.17.1</log4j2.version>
|
||||||
|
|
||||||
<!-- jdbc setting -->
|
<!-- jdbc setting -->
|
||||||
<!-- <mysql.version>5.1.49</mysql.version> -->
|
<!-- <mysql.version>5.1.49</mysql.version> -->
|
||||||
@@ -61,7 +60,7 @@
|
|||||||
|
|
||||||
<!-- environment setting -->
|
<!-- environment setting -->
|
||||||
<java.version>1.8</java.version>
|
<java.version>1.8</java.version>
|
||||||
<!-- <tomcat.version>9.0.54</tomcat.version> -->
|
<tomcat.version>9.0.58</tomcat.version>
|
||||||
<maven.test.skip>true</maven.test.skip>
|
<maven.test.skip>true</maven.test.skip>
|
||||||
<maven-surefire-plugin.version>2.18.1</maven-surefire-plugin.version><!-- 降级到该版本,新版本可能会出现VM崩溃 -->
|
<maven-surefire-plugin.version>2.18.1</maven-surefire-plugin.version><!-- 降级到该版本,新版本可能会出现VM崩溃 -->
|
||||||
<eclipse-plugin-download-sources>false</eclipse-plugin-download-sources>
|
<eclipse-plugin-download-sources>false</eclipse-plugin-download-sources>
|
||||||
|
|||||||
@@ -5,7 +5,7 @@
|
|||||||
|
|
||||||
<groupId>com.jeesite</groupId>
|
<groupId>com.jeesite</groupId>
|
||||||
<artifactId>jeesite-root</artifactId>
|
<artifactId>jeesite-root</artifactId>
|
||||||
<version>4.3.2-SNAPSHOT</version>
|
<version>4.3.3-SNAPSHOT</version>
|
||||||
<packaging>pom</packaging>
|
<packaging>pom</packaging>
|
||||||
|
|
||||||
<name>JeeSite</name>
|
<name>JeeSite</name>
|
||||||
|
|||||||
@@ -6,7 +6,7 @@
|
|||||||
<parent>
|
<parent>
|
||||||
<groupId>com.jeesite</groupId>
|
<groupId>com.jeesite</groupId>
|
||||||
<artifactId>jeesite-parent</artifactId>
|
<artifactId>jeesite-parent</artifactId>
|
||||||
<version>4.3.2-SNAPSHOT</version>
|
<version>4.3.3-SNAPSHOT</version>
|
||||||
<relativePath>../parent/pom.xml</relativePath>
|
<relativePath>../parent/pom.xml</relativePath>
|
||||||
</parent>
|
</parent>
|
||||||
|
|
||||||
|
|||||||
35
web/src/main/resources/config/application-prod.yml
Normal file
@@ -0,0 +1,35 @@
|
|||||||
|
|
||||||
|
# 使用环境配置,只需 JVM 参数里加:-Dspring.profiles.active=prod
|
||||||
|
|
||||||
|
#======================================#
|
||||||
|
#========== Server settings ===========#
|
||||||
|
#======================================#
|
||||||
|
|
||||||
|
server:
|
||||||
|
|
||||||
|
port: 8980
|
||||||
|
servlet:
|
||||||
|
context-path: /js
|
||||||
|
|
||||||
|
#======================================#
|
||||||
|
#========== Database sttings ==========#
|
||||||
|
#======================================#
|
||||||
|
|
||||||
|
# 数据库连接
|
||||||
|
jdbc:
|
||||||
|
|
||||||
|
# Mysql 数据库配置
|
||||||
|
type: mysql
|
||||||
|
driver: com.mysql.cj.jdbc.Driver
|
||||||
|
url: jdbc:mysql://127.0.0.1:3306/jeesite?useSSL=false&useUnicode=true&characterEncoding=utf-8&zeroDateTimeBehavior=CONVERT_TO_NULL&serverTimezone=Asia/Shanghai
|
||||||
|
username: root
|
||||||
|
password: 123456
|
||||||
|
testSql: SELECT 1
|
||||||
|
|
||||||
|
#======================================#
|
||||||
|
#========== Spring settings ===========#
|
||||||
|
#======================================#
|
||||||
|
|
||||||
|
# 日志配置
|
||||||
|
logging:
|
||||||
|
config: classpath:config/logback-spring-prod.xml
|
||||||
@@ -9,7 +9,7 @@ companyName: ThinkGem
|
|||||||
|
|
||||||
# 产品版本、版权年份
|
# 产品版本、版权年份
|
||||||
productVersion: V4.3
|
productVersion: V4.3
|
||||||
copyrightYear: 2021
|
copyrightYear: 2022
|
||||||
|
|
||||||
#是否演示模式
|
#是否演示模式
|
||||||
demoMode: false
|
demoMode: false
|
||||||
|
|||||||
70
web/src/main/resources/config/logback-spring-prod.xml
Normal file
@@ -0,0 +1,70 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<configuration debug="false" scan="false">
|
||||||
|
|
||||||
|
<!-- Log file path -->
|
||||||
|
<property name="log.path" value="${logPath:-${java.io.tmpdir:-.}}/logs" />
|
||||||
|
|
||||||
|
<!-- Framework level setting -->
|
||||||
|
<include resource="config/logger-core.xml"/>
|
||||||
|
<logger name="org.mybatis.spring.transaction" level="INFO" />
|
||||||
|
<logger name="org.flowable.ui.modeler.domain" level="INFO" />
|
||||||
|
<logger name="org.flowable.idm.engine.impl.persistence" level="INFO" />
|
||||||
|
<logger name="org.flowable.task.service.impl.persistence" level="INFO" />
|
||||||
|
<logger name="org.flowable.identitylink.service.impl.persistence" level="INFO" />
|
||||||
|
<logger name="org.flowable.variable.service.impl.persistence" level="INFO" />
|
||||||
|
<logger name="org.flowable.engine.impl.persistence" level="INFO" />
|
||||||
|
<logger name="com.jeesite" level="INFO" />
|
||||||
|
<logger name="com.jeesite.common.mybatis.mapper" level="INFO" />
|
||||||
|
|
||||||
|
<!-- Project level setting -->
|
||||||
|
<!-- <logger name="your.package" level="DEBUG" /> -->
|
||||||
|
|
||||||
|
<!-- Console log output -->
|
||||||
|
<appender name="console" class="ch.qos.logback.core.ConsoleAppender">
|
||||||
|
<encoder>
|
||||||
|
<pattern>%d{MM-dd HH:mm:ss.SSS} %clr(%-5p) %clr([%-39logger{39}]){cyan} - %m%n%wEx</pattern>
|
||||||
|
</encoder>
|
||||||
|
</appender>
|
||||||
|
|
||||||
|
<!-- Log file debug output -->
|
||||||
|
<appender name="debug" class="ch.qos.logback.core.rolling.RollingFileAppender">
|
||||||
|
<file>${log.path}/debug.log</file>
|
||||||
|
<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
|
||||||
|
<fileNamePattern>${log.path}/debug.%d{yyyy-MM-dd}.%i.log.zip</fileNamePattern>
|
||||||
|
<maxFileSize>50MB</maxFileSize>
|
||||||
|
<maxHistory>30</maxHistory>
|
||||||
|
</rollingPolicy>
|
||||||
|
<encoder>
|
||||||
|
<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} %-5p ${PID:- } [%15.15t] [%-39logger{39}] [%X{TRACE_ID}] - %m%n%wEx</pattern>
|
||||||
|
</encoder>
|
||||||
|
<!--<filter class="ch.qos.logback.classic.filter.LevelFilter">
|
||||||
|
<level>ERROR</level>
|
||||||
|
<onMatch>DENY</onMatch>
|
||||||
|
<onMismatch>NEUTRAL</onMismatch>
|
||||||
|
</filter>-->
|
||||||
|
</appender>
|
||||||
|
|
||||||
|
<!-- Log file error output -->
|
||||||
|
<appender name="error" class="ch.qos.logback.core.rolling.RollingFileAppender">
|
||||||
|
<file>${log.path}/error.log</file>
|
||||||
|
<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
|
||||||
|
<fileNamePattern>${log.path}/error.%d{yyyy-MM-dd}.%i.log.zip</fileNamePattern>
|
||||||
|
<maxFileSize>50MB</maxFileSize>
|
||||||
|
<maxHistory>30</maxHistory>
|
||||||
|
</rollingPolicy>
|
||||||
|
<encoder>
|
||||||
|
<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} %-5p ${PID:- } [%15.15t] [%-39logger{39}] [%X{TRACE_ID}] - %m%n%wEx</pattern>
|
||||||
|
</encoder>
|
||||||
|
<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
|
||||||
|
<level>ERROR</level>
|
||||||
|
</filter>
|
||||||
|
</appender>
|
||||||
|
|
||||||
|
<!-- Level: FATAL 0 ERROR 3 WARN 4 INFO 6 DEBUG 7 -->
|
||||||
|
<root level="WARN">
|
||||||
|
<appender-ref ref="console" />
|
||||||
|
<appender-ref ref="debug" />
|
||||||
|
<appender-ref ref="error" />
|
||||||
|
</root>
|
||||||
|
|
||||||
|
</configuration>
|
||||||
@@ -133,7 +133,7 @@ $('#dataGrid').dataGrid({
|
|||||||
editable:true, edittype:'select', editoptions:{'class':'form-control',
|
editable:true, edittype:'select', editoptions:{'class':'form-control',
|
||||||
items: $.merge([{dictLabel:' ',dictValue:''}], ${@DictUtils.getDictListJson('sys_menu_type')}),
|
items: $.merge([{dictLabel:' ',dictValue:''}], ${@DictUtils.getDictListJson('sys_menu_type')}),
|
||||||
itemLabel: 'dictLabel', itemValue: 'dictValue', dataInit: function(element){
|
itemLabel: 'dictLabel', itemValue: 'dictValue', dataInit: function(element){
|
||||||
$(element).select2().on("change",function(){$(this).resetValid()});
|
js.select2(element).on("change",function(){$(this).resetValid()});
|
||||||
}
|
}
|
||||||
}, unformat: function(val, obj, cell){return $('#'+obj.rowId+'_'+obj.colModel.name, cell).val();}
|
}, unformat: function(val, obj, cell){return $('#'+obj.rowId+'_'+obj.colModel.name, cell).val();}
|
||||||
},
|
},
|
||||||
@@ -141,7 +141,7 @@ $('#dataGrid').dataGrid({
|
|||||||
// editable:true, edittype:'select', editoptions:{multiple:true, 'class':'form-control',
|
// editable:true, edittype:'select', editoptions:{multiple:true, 'class':'form-control',
|
||||||
// items: $.merge([], ${@DictUtils.getDictListJson('sys_menu_type')}),
|
// items: $.merge([], ${@DictUtils.getDictListJson('sys_menu_type')}),
|
||||||
// itemLabel: 'dictLabel', itemValue: 'dictValue', dataInit: function(element){
|
// itemLabel: 'dictLabel', itemValue: 'dictValue', dataInit: function(element){
|
||||||
// $(element).select2().on("change",function(){$(this).resetValid()});
|
// js.select2(element).on("change",function(){$(this).resetValid()});
|
||||||
// }
|
// }
|
||||||
// }, unformat: function(val, obj, cell){return $('#'+obj.rowId+'_'+obj.colModel.name, cell).val();}
|
// }, unformat: function(val, obj, cell){return $('#'+obj.rowId+'_'+obj.colModel.name, cell).val();}
|
||||||
// },
|
// },
|
||||||
|
|||||||
@@ -333,7 +333,7 @@ $("#testDataChildDataGrid").dataGrid({
|
|||||||
editable:true, edittype:'select', editoptions:{'class':'form-control',
|
editable:true, edittype:'select', editoptions:{'class':'form-control',
|
||||||
items: $.merge([{dictLabel:' ',dictValue:''}], ${@DictUtils.getDictListJson('sys_menu_type')}),
|
items: $.merge([{dictLabel:' ',dictValue:''}], ${@DictUtils.getDictListJson('sys_menu_type')}),
|
||||||
itemLabel: 'dictLabel', itemValue: 'dictValue', dataInit: function(element){
|
itemLabel: 'dictLabel', itemValue: 'dictValue', dataInit: function(element){
|
||||||
$(element).select2().on("change",function(){$(this).resetValid()});
|
js.select2(element).on("change",function(){$(this).resetValid()});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
@@ -341,7 +341,7 @@ $("#testDataChildDataGrid").dataGrid({
|
|||||||
editable:true, edittype:'select', editoptions:{multiple:true, 'class':'form-control',
|
editable:true, edittype:'select', editoptions:{multiple:true, 'class':'form-control',
|
||||||
items: $.merge([], ${@DictUtils.getDictListJson('sys_menu_type')}),
|
items: $.merge([], ${@DictUtils.getDictListJson('sys_menu_type')}),
|
||||||
itemLabel: 'dictLabel', itemValue: 'dictValue', dataInit: function(element){
|
itemLabel: 'dictLabel', itemValue: 'dictValue', dataInit: function(element){
|
||||||
$(element).select2().on("change",function(){$(this).resetValid()});
|
js.select2(element).on("change",function(){$(this).resetValid()});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
@@ -349,7 +349,7 @@ $("#testDataChildDataGrid").dataGrid({
|
|||||||
editable:true, edittype:'select', editoptions:{'class':'form-control',
|
editable:true, edittype:'select', editoptions:{'class':'form-control',
|
||||||
items: $.merge([{dictLabel:' ',dictValue:''}], ${@DictUtils.getDictListJson('sys_menu_type')}),
|
items: $.merge([{dictLabel:' ',dictValue:''}], ${@DictUtils.getDictListJson('sys_menu_type')}),
|
||||||
itemLabel: 'dictLabel', itemValue: 'dictValue', dataInit: function(element){
|
itemLabel: 'dictLabel', itemValue: 'dictValue', dataInit: function(element){
|
||||||
$(element).select2().on("change",function(){$(this).resetValid()});
|
js.select2(element).on("change",function(){$(this).resetValid()});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
@@ -357,7 +357,7 @@ $("#testDataChildDataGrid").dataGrid({
|
|||||||
editable:true, edittype:'select', editoptions:{multiple:true, 'class':'form-control',
|
editable:true, edittype:'select', editoptions:{multiple:true, 'class':'form-control',
|
||||||
items: $.merge([], ${@DictUtils.getDictListJson('sys_menu_type')}),
|
items: $.merge([], ${@DictUtils.getDictListJson('sys_menu_type')}),
|
||||||
itemLabel: 'dictLabel', itemValue: 'dictValue', dataInit: function(element){
|
itemLabel: 'dictLabel', itemValue: 'dictValue', dataInit: function(element){
|
||||||
$(element).select2().on("change",function(){$(this).resetValid()});
|
js.select2(element).on("change",function(){$(this).resetValid()});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -163,7 +163,7 @@ $("#testDataChildDataGrid").dataGrid({
|
|||||||
editable:true, edittype:'select', editoptions:{'class':'form-control',
|
editable:true, edittype:'select', editoptions:{'class':'form-control',
|
||||||
items: $.merge([{dictLabel:' ',dictValue:''}], ${@DictUtils.getDictListJson('sys_menu_type')}),
|
items: $.merge([{dictLabel:' ',dictValue:''}], ${@DictUtils.getDictListJson('sys_menu_type')}),
|
||||||
itemLabel: 'dictLabel', itemValue: 'dictValue', dataInit: function(element){
|
itemLabel: 'dictLabel', itemValue: 'dictValue', dataInit: function(element){
|
||||||
$(element).select2().on("change",function(){$(this).resetValid()});
|
js.select2(element).on("change",function(){$(this).resetValid()});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -14,11 +14,11 @@
|
|||||||
<div class="form-unit">${text('基本信息')}</div>
|
<div class="form-unit">${text('基本信息')}</div>
|
||||||
<#form:hidden path="id"/>
|
<#form:hidden path="id"/>
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col-xs-6">
|
<div class="col-xs-12">
|
||||||
<div class="form-group">
|
<div class="form-group">
|
||||||
<label class="control-label col-sm-4" title="">
|
<label class="control-label col-sm-2" title="">
|
||||||
<span class="required hide">*</span> ${text('单行文本')}:<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">
|
<div class="col-sm-10">
|
||||||
<#form:input path="testInput" maxlength="200" class="form-control"/>
|
<#form:input path="testInput" maxlength="200" class="form-control"/>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -202,73 +202,100 @@ $("#testDataChildDataGrid").dataGrid({
|
|||||||
|
|
||||||
// 设置数据表格列
|
// 设置数据表格列
|
||||||
columnModel: [
|
columnModel: [
|
||||||
|
|
||||||
|
{header:'${text("操作")}', name:'actions', width:40, align:"center", formatter: function(val, obj, row, act){
|
||||||
|
var actions = [];
|
||||||
|
if (val == 'new'){
|
||||||
|
actions.push('<a href="#" onclick="js.confirm(\'${text("你确认要删除这条数据吗?")}\', function(){$(\'#testDataChildDataGrid\').dataGrid(\'delRowData\',\''+obj.rowId+'\')});return false;"><i class="fa fa-trash-o"></i></a> ');
|
||||||
|
}else{
|
||||||
|
actions.push('<a href="#" onclick="js.confirm(\'${text("你确认要删除这条数据吗?")}\', function(){$(\'#testDataChildDataGrid\').dataGrid(\'setRowData\',\''+obj.rowId+'\',null,{display:\'none\'});$(\'#'+obj.rowId+'_status\').val(\''+Global.STATUS_DELETE+'\');});return false;"><i class="fa fa-trash-o"></i></a> ');
|
||||||
|
}
|
||||||
|
return actions.join('');
|
||||||
|
}, editoptions: {defaultValue: 'new'}},
|
||||||
|
|
||||||
{header:'状态', name:'status', editable:true, hidden:true},
|
{header:'状态', name:'status', editable:true, hidden:true},
|
||||||
{header:'主键', name:'id', editable:true, hidden:true},
|
{header:'主键', name:'id', editable:true, hidden:true},
|
||||||
{header:'${text("排序号")}', name:'testSort', width:130, editable:true, edittype:'text', editoptions:{'maxlength':'11', 'class':'form-control digits'}},
|
{header:'${text("排序号")}', name:'testSort', width:100, editable:true, edittype:'text', editoptions:{'maxlength':'11', 'class':'form-control digits'}},
|
||||||
{header:'${text("父表主键")}', name:'testData.id', editable:true, hidden:true},
|
{header:'${text("父表主键")}', name:'testData.id', editable:true, hidden:true},
|
||||||
{header:'${text("单行文本")}', name:'testInput', width:130, editable:true, edittype:'text', editoptions:{'maxlength':'200', 'class':'form-control'}},
|
{header:'${text("单行文本")}', name:'testInput', width:100, editable:true, edittype:'text', editoptions:{'maxlength':'200', 'class':'form-control'}},
|
||||||
{header:'${text("多行文本")}', name:'testTextarea', width:130, editable:true, edittype:'textarea', editoptions:{'maxlength':'200', 'class':'form-control', 'rows':'1'}},
|
{header:'${text("多行文本")}', name:'testTextarea', width:100, editable:true, edittype:'textarea', editoptions:{'maxlength':'200', 'class':'form-control', 'rows':'1'}},
|
||||||
{header:'${text("下拉框")}', name:'testSelect', width:100,
|
{header:'${text("下拉框")}', name:'testSelect', width:100,
|
||||||
editable:true, edittype:'select', editoptions:{'class':'form-control',
|
editable:true, edittype:'select', editoptions:{'class':'form-control',
|
||||||
items: $.merge([{dictLabel:' ',dictValue:''}], ${@DictUtils.getDictListJson('sys_menu_type')}),
|
items: $.merge([{dictLabel:' ',dictValue:''}], ${@DictUtils.getDictListJson('sys_menu_type')}),
|
||||||
itemLabel: 'dictLabel', itemValue: 'dictValue', dataInit: function(element){
|
itemLabel: 'dictLabel', itemValue: 'dictValue', dataInit: function(element){
|
||||||
$(element).select2().on("change",function(){$(this).resetValid()});
|
js.select2(element).on("change",function(){$(this).resetValid()});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{header:'${text("下拉多选")}', name:'testSelectMultiple', width:130,
|
{header:'${text("下拉多选")}', name:'testSelectMultiple', width:90, fixed: true,
|
||||||
editable:true, edittype:'select', editoptions:{multiple:true, 'class':'form-control',
|
editable:true, edittype:'select', editoptions:{multiple:true, 'class':'form-control',
|
||||||
items: $.merge([], ${@DictUtils.getDictListJson('sys_menu_type')}),
|
items: $.merge([], ${@DictUtils.getDictListJson('sys_menu_type')}),
|
||||||
itemLabel: 'dictLabel', itemValue: 'dictValue', dataInit: function(element){
|
itemLabel: 'dictLabel', itemValue: 'dictValue', dataInit: function(element){
|
||||||
$(element).select2().on("change",function(){$(this).resetValid()});
|
js.select2(element).on("change",function(){$(this).resetValid()});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{header:'${text("单选框")}', name:'testRadio', width:100,
|
{header:'${text("单选框")}', name:'testRadio', width:135, fixed: true,
|
||||||
editable:true, edittype:'select', editoptions:{'class':'form-control',
|
editable:true, edittype:'radio', editoptions:{'class':'form-control icheck',
|
||||||
items: $.merge([{dictLabel:' ',dictValue:''}], ${@DictUtils.getDictListJson('sys_menu_type')}),
|
items: $.merge([], ${@DictUtils.getDictListJson('sys_menu_type')}),
|
||||||
itemLabel: 'dictLabel', itemValue: 'dictValue', dataInit: function(element){
|
itemLabel: 'dictLabel', itemValue: 'dictValue', dataInit: function(element){
|
||||||
$(element).select2().on("change",function(){$(this).resetValid()});
|
js.iCheck(element).on("ifChanged",function(){$(this).resetValid()});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{header:'${text("日期选择")}', name:'testDate', width:150,
|
{header:'${text("复选框")}', name:'testCheckbox', width:135, fixed: true,
|
||||||
|
editable:true, edittype:'checkbox', editoptions:{'class':'form-control icheck',
|
||||||
|
items: $.merge([], ${@DictUtils.getDictListJson('sys_menu_type')}),
|
||||||
|
itemLabel: 'dictLabel', itemValue: 'dictValue', dataInit: function(element){
|
||||||
|
js.iCheck(element).on("ifChanged",function(){$(this).resetValid()});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{header:'${text("日期选择")}', name:'testDate', width:120,
|
||||||
formatter:'date', formatoptions:{srcformat:'Y-m-d H:i:s',newformat:'Y-m-d'},
|
formatter:'date', formatoptions:{srcformat:'Y-m-d H:i:s',newformat:'Y-m-d'},
|
||||||
editable:true, edittype:'text', editoptions:{'class':'form-control laydate', 'readonly':'true',
|
editable:true, edittype:'text', editoptions:{'class':'form-control laydate', 'readonly':'true',
|
||||||
dataInit: function(element){
|
dataInit: function(element){
|
||||||
laydate.render({elem:element, type:'date', format:'yyyy-MM-dd', done: function(){
|
laydate.render({elem:element, type:'date', format:'yyyy-MM-dd', done: function(){
|
||||||
// 选择日期后,自动给下一个输入框赋值(联动实例)
|
// 选择日期后,自动给下一个输入框赋值(联动实例)
|
||||||
// $(element).closest('td').next().find('.form-control').val('2020-11-26 10:10:10');
|
// $(element).closest('td').next().find('.form-control').val('2020-11-26 10:10');
|
||||||
}});
|
}});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
// {header:'${text("用户选择")}', name:'testUser', width:150,
|
{header:'${text("日期时间")}', name:'testDatetime', width:155,
|
||||||
// formatter: function(val, obj, row, act){
|
formatter:'date', formatoptions:{srcformat:'Y-m-d H:i:s',newformat:'Y-m-d H:i'},
|
||||||
// return js.val(row, 'testUser.userCode')+'|'+js.val(row, 'testUser.userName');
|
editable:true, edittype:'text', editoptions:{'class':'form-control laydate', 'readonly':'true',
|
||||||
// }, editable: true, edittype: "custom", editoptions: {
|
dataInit: function(element){
|
||||||
// custom_element: function(val, editOptions) {
|
laydate.render({elem:element, type:'datetime', format:'yyyy-MM-dd HH:mm'});
|
||||||
// return js.template('treeselectTpl', {
|
}
|
||||||
// id: 'user_'+editOptions.id, title: '用户选择',
|
}
|
||||||
// name: 'testUser.userCode', value: val.split('|')[0],
|
},
|
||||||
// labelName: 'testUser.userName', labelValue: val.split('|')[1],
|
{header:'${text("用户选择")}', name:'testUser', width:100,
|
||||||
// url: '${ctx}/sys/office/treeData?isLoadUser=true', cssClass: '', readonly: false
|
formatter: function(val, obj, row, act){
|
||||||
// });
|
return js.val(row, 'testUser.userCode')+'|'+js.val(row, 'testUser.userName');
|
||||||
// },
|
}, editable: true, edittype: "custom", editoptions: {
|
||||||
// custom_value: function(element, act){
|
custom_element: function(val, editOptions) {
|
||||||
// return {userCode: element.find('[type=hidden]').val(),
|
return js.template('treeselectTpl', {
|
||||||
// userName: element.find('[type=text]').val()};
|
id: 'user_'+editOptions.id, title: '用户选择',
|
||||||
// },
|
name: 'testUser.userCode', value: val.split('|')[0],
|
||||||
// dataInit: function(element){
|
labelName: 'testUser.userName', labelValue: val.split('|')[1],
|
||||||
// // 初始化控件后设置只读模式(实例)
|
url: '${ctx}/sys/office/treeData?isLoadUser=true', cssClass: '', readonly: false
|
||||||
// // $(element).find('.form-control, .btn').addClass('disabled');
|
});
|
||||||
// }
|
},
|
||||||
// },
|
custom_value: function(element, act){
|
||||||
// unformat: function(val, obj, cell){
|
return {userCode: element.find('[type=hidden]').val(),
|
||||||
// return $('#user_'+obj.rowId+'_'+obj.colModel.name+'Code', cell).val();
|
userName: element.find('[type=text]').val()};
|
||||||
// }
|
},
|
||||||
// },
|
dataInit: function(element){
|
||||||
{header:'${text("用户选择")}', name:'testUser2', width:150,
|
// 初始化控件后设置只读模式(实例)
|
||||||
|
// $(element).find('.form-control, .btn').addClass('disabled');
|
||||||
|
}
|
||||||
|
},
|
||||||
|
unformat: function(val, obj, cell){
|
||||||
|
return $('#user_'+obj.rowId+'_'+obj.colModel.name+'Code', cell).val();
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{header:'${text("用户选择")}', name:'testUser2', width:100,
|
||||||
formatter: function(val, obj, row, act){
|
formatter: function(val, obj, row, act){
|
||||||
return js.val(row, 'testUser.userCode')+'|'+js.val(row, 'testUser.userName');
|
return js.val(row, 'testUser.userCode')+'|'+js.val(row, 'testUser.userName');
|
||||||
}, editable: true, edittype: "custom", editoptions: {
|
}, editable: true, edittype: "custom", editoptions: {
|
||||||
@@ -283,7 +310,7 @@ $("#testDataChildDataGrid").dataGrid({
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{header:'${text("机构选择")}', name:'testOffice', width:150, title:false,
|
{header:'${text("机构选择")}', name:'testOffice', width:100, title:false,
|
||||||
formatter: function(val, obj, row, act){
|
formatter: function(val, obj, row, act){
|
||||||
return js.val(row, 'testOffice.officeCode')+'|'+js.val(row, 'testOffice.officeName');
|
return js.val(row, 'testOffice.officeCode')+'|'+js.val(row, 'testOffice.officeName');
|
||||||
}, editable: true, edittype: "custom", editoptions: {
|
}, editable: true, edittype: "custom", editoptions: {
|
||||||
@@ -297,7 +324,7 @@ $("#testDataChildDataGrid").dataGrid({
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{header:'${text("区域选择")}', name:'testAreaCode', width:150,
|
{header:'${text("区域选择")}', name:'testAreaCode', width:100,
|
||||||
formatter: function(val, obj, row, act){
|
formatter: function(val, obj, row, act){
|
||||||
return js.val(row, 'testAreaCode')+'|'+js.val(row, 'testAreaName');
|
return js.val(row, 'testAreaCode')+'|'+js.val(row, 'testAreaName');
|
||||||
}, editable: true, edittype: "custom", editoptions: {
|
}, editable: true, edittype: "custom", editoptions: {
|
||||||
@@ -320,17 +347,9 @@ $("#testDataChildDataGrid").dataGrid({
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
|
||||||
{header:'${text("操作")}', name:'actions', width:60, sortable:false, fixed:true, formatter: function(val, obj, row, act){
|
|
||||||
var actions = [];
|
|
||||||
if (val == 'new'){
|
|
||||||
actions.push('<a href="#" onclick="js.confirm(\'${text("你确认要删除这条数据吗?")}\', function(){$(\'#testDataChildDataGrid\').dataGrid(\'delRowData\',\''+obj.rowId+'\')});return false;"><i class="fa fa-trash-o"></i></a> ');
|
|
||||||
}else{
|
|
||||||
actions.push('<a href="#" onclick="js.confirm(\'${text("你确认要删除这条数据吗?")}\', function(){$(\'#testDataChildDataGrid\').dataGrid(\'setRowData\',\''+obj.rowId+'\',null,{display:\'none\'});$(\'#'+obj.rowId+'_status\').val(\''+Global.STATUS_DELETE+'\');});return false;"><i class="fa fa-trash-o"></i></a> ');
|
|
||||||
}
|
}
|
||||||
return actions.join('');
|
|
||||||
}, editoptions: {defaultValue: 'new'}}
|
|
||||||
],
|
],
|
||||||
|
shrinkToFit: false, // 是否按百分比自动调整列宽
|
||||||
|
|
||||||
// 编辑表格参数
|
// 编辑表格参数
|
||||||
editGrid: true, // 是否是编辑表格
|
editGrid: true, // 是否是编辑表格
|
||||||
|
|||||||