Compare commits

..

22 Commits

Author SHA1 Message Date
thinkgem
233a00ad89 新增2套主题风格 2022-02-14 19:57:52 +08:00
thinkgem
52c1dec7a8 update readme 2022-02-14 16:29:59 +08:00
thinkgem
288f9d56c5 4.3.3 2022-02-14 11:06:46 +08:00
thinkgem
a610528ba6 update readme 2022-02-14 10:54:11 +08:00
thinkgem
3e9268e27e update demo 2022-02-09 11:35:26 +08:00
thinkgem
2dd963c049 tomcat 9.0.58 2022-02-09 00:01:24 +08:00
thinkgem
df530be41b update 2022-01-27 10:27:31 +08:00
thinkgem
9b42881648 新增yml环境配置实例 2022-01-25 09:55:32 +08:00
thinkgem
a60605d412 spring boot 2.5.9 2022-01-25 09:52:32 +08:00
thinkgem
4b6f7f1ae6 升级 layer 3.5,升级注意:查找替换 /3.1/layer.js 为 /3.5/layer.js 2022-01-24 12:11:17 +08:00
thinkgem
660087f613 升级 laydate 5.3 升级注意:查找替换 /5.0/laydate.js 为 /5.3/laydate.js 2022-01-17 12:03:13 +08:00
thinkgem
9d79ae73ec jdk17 2022-01-13 20:07:47 +08:00
wy
870976f6cf 优化组织机构带用户加载树算法 2022-01-13 20:04:08 +08:00
thinkgem
bd71d5126b update cms script 2022-01-11 19:05:08 +08:00
jeesite
3c698cf6ad 新增系统管理员管理默认角色不能取消提示 2022-01-11 12:39:56 +08:00
thinkgem
19b9cd8205 start 4.3.3 2022-01-06 12:04:26 +08:00
thinkgem
f9c0f5a72f mybatis 3.5.9、jsqlparser 4.3 2022-01-05 00:31:34 +08:00
thinkgem
5f8e8ba3f9 update 2021-12-30 23:21:31 +08:00
thinkgem
2dde6aa8e7 layer.msg 加空值判断 2021-12-30 23:20:34 +08:00
thinkgem
04b310b0f8 remove filter css 2021-12-29 15:55:58 +08:00
thinkgem
7fa7cdb224 细节处理 2021-12-29 14:22:57 +08:00
thinkgem
87f6703e6e 支持jdk17 2021-12-28 22:11:26 +08:00
62 changed files with 4675 additions and 2844 deletions

View File

@@ -21,13 +21,13 @@
* 问题反馈:<http://jeesite.net> [【新手必读】](https://gitee.com/thinkgem/jeesite4/issues/I18ARR) * 问题反馈:<http://jeesite.net> [【新手必读】](https://gitee.com/thinkgem/jeesite4/issues/I18ARR)
* 关注微信公众号,了解最新动态: * 关注微信公众号,了解最新动态:
![JeeSite4微信公众号](https://images.gitee.com/uploads/images/2020/0727/091951_a3ab258c_6732.jpeg "JeeSite4微信公众号") ![JeeSite微信公众号](https://images.gitee.com/uploads/images/2020/0727/091951_a3ab258c_6732.jpeg "JeeSite微信公众号")
## 平台介绍 ## 平台介绍
JeeSite 快速开发平台,不仅仅是一个后台开发框架,它是一个企业级快速开发解决方案,基于经典技术组合Spring Boot、Spring MVC、Apache Shiro、MyBatisBeetl、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` 初始化数据库

View File

@@ -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>

View File

@@ -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,7 +161,11 @@ public class ObjectUtils extends org.apache.commons.lang3.ObjectUtils {
* @return * @return
*/ */
public static byte[] serialize(Object object) { public static byte[] serialize(Object object) {
return ObjectUtils.serializeFst(object); if (isJavaSerialize) {
return ObjectUtils.serializeJava(object);
}else {
return ObjectUtils.serializeFst(object);
}
} }
/** /**
@@ -164,7 +174,11 @@ public class ObjectUtils extends org.apache.commons.lang3.ObjectUtils {
* @return * @return
*/ */
public static Object unserialize(byte[] bytes) { public static Object unserialize(byte[] bytes) {
return ObjectUtils.unserializeFst(bytes); if (isJavaSerialize) {
return ObjectUtils.unserializeJava(bytes);
}else {
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;

View File

@@ -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;} 解开注释,可去除表格单元格的竖边框线 */

View File

@@ -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;} */

View File

@@ -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;}

View File

@@ -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;} */

View File

@@ -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;}

View File

@@ -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;}

View File

@@ -1,14 +1,14 @@
 
## layer mobile ## layer mobile
layer mobile是为移动设备手机、平板等webkit内核浏览器/webview量身定做的弹层支撑采用Native JavaScript编写完全独立于PC版的layer您需要按照场景选择使用。 layer mobile是为移动设备手机、平板等webkit内核浏览器/webview量身定做的弹层支撑采用Native JavaScript编写完全独立于PC版的layer您需要按照场景选择使用。
[文档与演示](http://sentsin.com/layui/layer/) [文档与演示](http://sentsin.com/layui/layer/)
1. 无需依赖任何库只加载layer.m.js即可 1. 无需依赖任何库只加载layer.m.js即可
2. 小巧玲珑,性能卓越、柔情似水… 2. 小巧玲珑,性能卓越、柔情似水…
3. 具备无以伦比的自适应功能 3. 具备无以伦比的自适应功能
4. 灵活的皮肤自定义支撑,充分确保弹层风格多样化 4. 灵活的皮肤自定义支撑,充分确保弹层风格多样化
5. 丰富、科学的接口,让弹弹弹层无所不能 5. 丰富、科学的接口,让弹弹弹层无所不能
## 备注 ## 备注
[官网](http://sentsin.com/layui/layer/)、[有问必答](http://say.sentsin.com/home-48.html) [官网](http://sentsin.com/layui/layer/)、[有问必答](http://say.sentsin.com/home-48.html)

View File

@@ -1,208 +1,207 @@
/*! /*!
@Namelayer mobile v2.0 弹层组件移动版 @Namelayer mobile v2.0 弹层组件移动版
@Author贤心 @Author贤心
@Sitehttp://layer.layui.com/mobie/ @LicenseMIT
@LicenseLGPL
*/
*/
;!function(win){
;!function(win){
"use strict";
"use strict";
var doc = document, query = 'querySelectorAll', claname = 'getElementsByClassName', S = function(s){
var doc = document, query = 'querySelectorAll', claname = 'getElementsByClassName', S = function(s){ return doc[query](s);
return doc[query](s); };
};
//默认配置
//默认配置 var config = {
var config = { type: 0
type: 0 ,shade: true
,shade: true ,shadeClose: true
,shadeClose: true ,fixed: true
,fixed: true ,anim: 'scale' //默认动画类型
,anim: 'scale' //默认动画类型 };
};
var ready = {
var ready = { extend: function(obj){
extend: function(obj){ var newobj = JSON.parse(JSON.stringify(config));
var newobj = JSON.parse(JSON.stringify(config)); for(var i in obj){
for(var i in obj){ newobj[i] = obj[i];
newobj[i] = obj[i]; }
} return newobj;
return newobj; },
}, timer: {}, end: {}
timer: {}, end: {} };
};
//点触事件
//点触事件 ready.touch = function(elem, fn){
ready.touch = function(elem, fn){ elem.addEventListener('click', function(e){
elem.addEventListener('click', function(e){ fn.call(this, e);
fn.call(this, e); }, false);
}, false); };
};
var index = 0, classs = ['layui-m-layer'], Layer = function(options){
var index = 0, classs = ['layui-m-layer'], Layer = function(options){ var that = this;
var that = this; that.config = ready.extend(options);
that.config = ready.extend(options); that.view();
that.view(); };
};
Layer.prototype.view = function(){
Layer.prototype.view = function(){ var that = this, config = that.config, layerbox = doc.createElement('div');
var that = this, config = that.config, layerbox = doc.createElement('div');
that.id = layerbox.id = classs[0] + index;
that.id = layerbox.id = classs[0] + index; layerbox.setAttribute('class', classs[0] + ' ' + classs[0]+(config.type || 0));
layerbox.setAttribute('class', classs[0] + ' ' + classs[0]+(config.type || 0)); layerbox.setAttribute('index', index);
layerbox.setAttribute('index', index);
//标题区域
//标题区域 var title = (function(){
var title = (function(){ var titype = typeof config.title === 'object';
var titype = typeof config.title === 'object'; return config.title
return config.title ? '<h3 style="'+ (titype ? config.title[1] : '') +'">'+ (titype ? config.title[0] : config.title) +'</h3>'
? '<h3 style="'+ (titype ? config.title[1] : '') +'">'+ (titype ? config.title[0] : config.title) +'</h3>' : '';
: ''; }());
}());
//按钮区域
//按钮区域 var button = (function(){
var button = (function(){ typeof config.btn === 'string' && (config.btn = [config.btn]);
typeof config.btn === 'string' && (config.btn = [config.btn]); var btns = (config.btn || []).length, btndom;
var btns = (config.btn || []).length, btndom; if(btns === 0 || !config.btn){
if(btns === 0 || !config.btn){ return '';
return ''; }
} btndom = '<span yes type="1">'+ config.btn[0] +'</span>'
btndom = '<span yes type="1">'+ config.btn[0] +'</span>' if(btns === 2){
if(btns === 2){ btndom = '<span no type="0">'+ config.btn[1] +'</span>' + btndom;
btndom = '<span no type="0">'+ config.btn[1] +'</span>' + btndom; }
} return '<div class="layui-m-layerbtn">'+ btndom + '</div>';
return '<div class="layui-m-layerbtn">'+ btndom + '</div>'; }());
}());
if(!config.fixed){
if(!config.fixed){ config.top = config.hasOwnProperty('top') ? config.top : 100;
config.top = config.hasOwnProperty('top') ? config.top : 100; config.style = config.style || '';
config.style = config.style || ''; config.style += ' top:'+ ( doc.body.scrollTop + config.top) + 'px';
config.style += ' top:'+ ( doc.body.scrollTop + config.top) + 'px'; }
}
if(config.type === 2){
if(config.type === 2){ config.content = '<i></i><i class="layui-m-layerload"></i><i></i><p>'+ (config.content||'') +'</p>';
config.content = '<i></i><i class="layui-m-layerload"></i><i></i><p>'+ (config.content||'') +'</p>'; }
}
if(config.skin) config.anim = 'up';
if(config.skin) config.anim = 'up'; if(config.skin === 'msg') config.shade = false;
if(config.skin === 'msg') config.shade = false;
layerbox.innerHTML = (config.shade ? '<div '+ (typeof config.shade === 'string' ? 'style="'+ config.shade +'"' : '') +' class="layui-m-layershade"></div>' : '')
layerbox.innerHTML = (config.shade ? '<div '+ (typeof config.shade === 'string' ? 'style="'+ config.shade +'"' : '') +' class="layui-m-layershade"></div>' : '') +'<div class="layui-m-layermain" '+ (!config.fixed ? 'style="position:static;"' : '') +'>'
+'<div class="layui-m-layermain" '+ (!config.fixed ? 'style="position:static;"' : '') +'>' +'<div class="layui-m-layersection">'
+'<div class="layui-m-layersection">' +'<div class="layui-m-layerchild '+ (config.skin ? 'layui-m-layer-' + config.skin + ' ' : '') + (config.className ? config.className : '') + ' ' + (config.anim ? 'layui-m-anim-' + config.anim : '') +'" ' + ( config.style ? 'style="'+config.style+'"' : '' ) +'>'
+'<div class="layui-m-layerchild '+ (config.skin ? 'layui-m-layer-' + config.skin + ' ' : '') + (config.className ? config.className : '') + ' ' + (config.anim ? 'layui-m-anim-' + config.anim : '') +'" ' + ( config.style ? 'style="'+config.style+'"' : '' ) +'>' + title
+ title +'<div class="layui-m-layercont">'+ config.content +'</div>'
+'<div class="layui-m-layercont">'+ config.content +'</div>' + button
+ button +'</div>'
+'</div>' +'</div>'
+'</div>' +'</div>';
+'</div>';
if(!config.type || config.type === 2){
if(!config.type || config.type === 2){ var dialogs = doc[claname](classs[0] + config.type), dialen = dialogs.length;
var dialogs = doc[claname](classs[0] + config.type), dialen = dialogs.length; if(dialen >= 1){
if(dialen >= 1){ layer.close(dialogs[0].getAttribute('index'))
layer.close(dialogs[0].getAttribute('index')) }
} }
}
document.body.appendChild(layerbox);
document.body.appendChild(layerbox); var elem = that.elem = S('#'+that.id)[0];
var elem = that.elem = S('#'+that.id)[0]; config.success && config.success(elem);
config.success && config.success(elem);
that.index = index++;
that.index = index++; that.action(config, elem);
that.action(config, elem); };
};
Layer.prototype.action = function(config, elem){
Layer.prototype.action = function(config, elem){ var that = this;
var that = this;
//自动关闭
//自动关闭 if(config.time){
if(config.time){ ready.timer[that.index] = setTimeout(function(){
ready.timer[that.index] = setTimeout(function(){ layer.close(that.index);
layer.close(that.index); }, config.time*1000);
}, config.time*1000); }
}
//确认取消
//确认取消 var btn = function(){
var btn = function(){ var type = this.getAttribute('type');
var type = this.getAttribute('type'); if(type == 0){
if(type == 0){ config.no && config.no();
config.no && config.no(); layer.close(that.index);
layer.close(that.index); } else {
} else { config.yes ? config.yes(that.index) : layer.close(that.index);
config.yes ? config.yes(that.index) : layer.close(that.index); }
} };
}; if(config.btn){
if(config.btn){ var btns = elem[claname]('layui-m-layerbtn')[0].children, btnlen = btns.length;
var btns = elem[claname]('layui-m-layerbtn')[0].children, btnlen = btns.length; for(var ii = 0; ii < btnlen; ii++){
for(var ii = 0; ii < btnlen; ii++){ ready.touch(btns[ii], btn);
ready.touch(btns[ii], btn); }
} }
}
//点遮罩关闭
//点遮罩关闭 if(config.shade && config.shadeClose){
if(config.shade && config.shadeClose){ var shade = elem[claname]('layui-m-layershade')[0];
var shade = elem[claname]('layui-m-layershade')[0]; ready.touch(shade, function(){
ready.touch(shade, function(){ layer.close(that.index, config.end);
layer.close(that.index, config.end); });
}); }
}
config.end && (ready.end[that.index] = config.end);
config.end && (ready.end[that.index] = config.end); };
};
win.layer = {
win.layer = { v: '2.0',
v: '2.0', index: index,
index: index,
//核心方法
//核心方法 open: function(options){
open: function(options){ var o = new Layer(options || {});
var o = new Layer(options || {}); return o.index;
return o.index; },
},
close: function(index){
close: function(index){ var ibox = S('#'+classs[0]+index)[0];
var ibox = S('#'+classs[0]+index)[0]; if(!ibox) return;
if(!ibox) return; ibox.innerHTML = '';
ibox.innerHTML = ''; doc.body.removeChild(ibox);
doc.body.removeChild(ibox); clearTimeout(ready.timer[index]);
clearTimeout(ready.timer[index]); delete ready.timer[index];
delete ready.timer[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]; },
},
//关闭所有layer层
//关闭所有layer层 closeAll: function(){
closeAll: function(){ var boxs = doc[claname](classs[0]);
var boxs = doc[claname](classs[0]); for(var i = 0, len = boxs.length; i < len; i++){
for(var i = 0, len = boxs.length; i < len; i++){ layer.close((boxs[0].getAttribute('index')|0));
layer.close((boxs[0].getAttribute('index')|0)); }
} }
} };
};
'function' == typeof define ? define(function() {
'function' == typeof define ? define(function() { return layer;
return layer; }) : function(){
}) : function(){
var js = document.scripts, script = js[js.length - 1], jsPath = script.src;
var js = document.scripts, script = js[js.length - 1], jsPath = script.src; var path = jsPath.substring(0, jsPath.lastIndexOf("/") + 1);
var path = jsPath.substring(0, jsPath.lastIndexOf("/") + 1);
//如果合并方式则需要单独引入layer.css
//如果合并方式则需要单独引入layer.css if(script.getAttribute('merge')) return;
if(script.getAttribute('merge')) return;
document.head.appendChild(function(){
document.head.appendChild(function(){ var link = doc.createElement('link');
var link = doc.createElement('link'); link.href = path + 'need/layer.css?2.0';
link.href = path + 'need/layer.css?2.0'; link.type = 'text/css';
link.type = 'text/css'; link.rel = 'styleSheet'
link.rel = 'styleSheet' link.id = 'layermcss';
link.id = 'layermcss'; return link;
return link; }());
}());
}();
}();
}(window); }(window);

View File

@@ -1,87 +1,87 @@
 
/* /*
layer mobile layer mobile
*/ */
.layui-m-layer{position:relative; z-index: 19891014;} .layui-m-layer{position:relative; z-index: 19891014;}
.layui-m-layer *{-webkit-box-sizing: content-box; -moz-box-sizing: content-box; box-sizing: content-box;} .layui-m-layer *{-webkit-box-sizing: content-box; -moz-box-sizing: content-box; box-sizing: content-box;}
.layui-m-layershade, .layui-m-layershade,
.layui-m-layermain{position:fixed; left:0; top:0; width:100%; height:100%;} .layui-m-layermain{position:fixed; left:0; top:0; width:100%; height:100%;}
.layui-m-layershade{background-color:rgba(0,0,0, .7); pointer-events:auto;} .layui-m-layershade{background-color:rgba(0,0,0, .7); pointer-events:auto;}
.layui-m-layermain{display:table; font-family: Helvetica, arial, sans-serif; pointer-events: none;} .layui-m-layermain{display:table; font-family: Helvetica, arial, sans-serif; pointer-events: none;}
.layui-m-layermain .layui-m-layersection{display:table-cell; vertical-align:middle; text-align:center;} .layui-m-layermain .layui-m-layersection{display:table-cell; vertical-align:middle; text-align:center;}
.layui-m-layerchild{position:relative; display:inline-block; text-align:left; background-color:#fff; font-size:14px; border-radius: 5px; box-shadow: 0 0 8px rgba(0, 0, 0, 0.1); pointer-events:auto; -webkit-overflow-scrolling: touch;} .layui-m-layerchild{position:relative; display:inline-block; text-align:left; background-color:#fff; font-size:14px; border-radius: 5px; box-shadow: 0 0 8px rgba(0, 0, 0, 0.1); pointer-events:auto; -webkit-overflow-scrolling: touch;}
.layui-m-layerchild{-webkit-animation-fill-mode: both; animation-fill-mode: both; -webkit-animation-duration: .2s; animation-duration: .2s;} .layui-m-layerchild{-webkit-animation-fill-mode: both; animation-fill-mode: both; -webkit-animation-duration: .2s; animation-duration: .2s;}
/* 弹出动画 */ /* 弹出动画 */
@-webkit-keyframes layui-m-anim-scale { /* 默认 */ @-webkit-keyframes layui-m-anim-scale { /* 默认 */
0% {opacity: 0; -webkit-transform: scale(.5); transform: scale(.5)} 0% {opacity: 0; -webkit-transform: scale(.5); transform: scale(.5)}
100% {opacity: 1; -webkit-transform: scale(1); transform: scale(1)} 100% {opacity: 1; -webkit-transform: scale(1); transform: scale(1)}
} }
@keyframes layui-m-anim-scale { /* 默认 */ @keyframes layui-m-anim-scale { /* 默认 */
0% {opacity: 0; -webkit-transform: scale(.5); transform: scale(.5)} 0% {opacity: 0; -webkit-transform: scale(.5); transform: scale(.5)}
100% {opacity: 1; -webkit-transform: scale(1); transform: scale(1)} 100% {opacity: 1; -webkit-transform: scale(1); transform: scale(1)}
} }
.layui-m-anim-scale{animation-name: layui-m-anim-scale; -webkit-animation-name: layui-m-anim-scale;} .layui-m-anim-scale{animation-name: layui-m-anim-scale; -webkit-animation-name: layui-m-anim-scale;}
@-webkit-keyframes layui-m-anim-up{ @-webkit-keyframes layui-m-anim-up{
0%{opacity: 0; -webkit-transform: translateY(800px); transform: translateY(800px)} 0%{opacity: 0; -webkit-transform: translateY(800px); transform: translateY(800px)}
100%{opacity: 1; -webkit-transform: translateY(0); transform: translateY(0)} 100%{opacity: 1; -webkit-transform: translateY(0); transform: translateY(0)}
} }
@keyframes layui-m-anim-up{ @keyframes layui-m-anim-up{
0%{opacity: 0; -webkit-transform: translateY(800px); transform: translateY(800px)} 0%{opacity: 0; -webkit-transform: translateY(800px); transform: translateY(800px)}
100%{opacity: 1; -webkit-transform: translateY(0); transform: translateY(0)} 100%{opacity: 1; -webkit-transform: translateY(0); transform: translateY(0)}
} }
.layui-m-anim-up{-webkit-animation-name: layui-m-anim-up;animation-name: layui-m-anim-up} .layui-m-anim-up{-webkit-animation-name: layui-m-anim-up;animation-name: layui-m-anim-up}
.layui-m-layer0 .layui-m-layerchild{width: 90%; max-width: 640px;} .layui-m-layer0 .layui-m-layerchild{width: 90%; max-width: 640px;}
.layui-m-layer1 .layui-m-layerchild{border:none; border-radius:0;} .layui-m-layer1 .layui-m-layerchild{border:none; border-radius:0;}
.layui-m-layer2 .layui-m-layerchild{width:auto; max-width:260px; min-width:40px; border:none; background: none; box-shadow: none; color:#fff;} .layui-m-layer2 .layui-m-layerchild{width:auto; max-width:260px; min-width:40px; border:none; background: none; box-shadow: none; color:#fff;}
.layui-m-layerchild h3{padding: 0 10px; height: 60px; line-height: 60px; font-size:16px; font-weight: 400; border-radius: 5px 5px 0 0; text-align: center;} .layui-m-layerchild h3{padding: 0 10px; height: 60px; line-height: 60px; font-size:16px; font-weight: 400; border-radius: 5px 5px 0 0; text-align: center;}
.layui-m-layerchild h3, .layui-m-layerchild h3,
.layui-m-layerbtn span{ text-overflow:ellipsis; overflow:hidden; white-space:nowrap;} .layui-m-layerbtn span{ text-overflow:ellipsis; overflow:hidden; white-space:nowrap;}
.layui-m-layercont{padding: 50px 30px; line-height: 22px; text-align:center;} .layui-m-layercont{padding: 50px 30px; line-height: 22px; text-align:center;}
.layui-m-layer1 .layui-m-layercont{padding:0; text-align:left;} .layui-m-layer1 .layui-m-layercont{padding:0; text-align:left;}
.layui-m-layer2 .layui-m-layercont{text-align:center; padding: 0; line-height: 0;} .layui-m-layer2 .layui-m-layercont{text-align:center; padding: 0; line-height: 0;}
.layui-m-layer2 .layui-m-layercont i{width:25px; height:25px; margin-left:8px; display:inline-block; background-color:#fff; border-radius:100%;} .layui-m-layer2 .layui-m-layercont i{width:25px; height:25px; margin-left:8px; display:inline-block; background-color:#fff; border-radius:100%;}
.layui-m-layer2 .layui-m-layercont p{margin-top: 20px;} .layui-m-layer2 .layui-m-layercont p{margin-top: 20px;}
/* loading */ /* loading */
@-webkit-keyframes layui-m-anim-loading{ @-webkit-keyframes layui-m-anim-loading{
0%,80%,100%{transform:scale(0); -webkit-transform:scale(0)} 0%,80%,100%{transform:scale(0); -webkit-transform:scale(0)}
40%{transform:scale(1); -webkit-transform:scale(1)} 40%{transform:scale(1); -webkit-transform:scale(1)}
} }
@keyframes layui-m-anim-loading{ @keyframes layui-m-anim-loading{
0%,80%,100%{transform:scale(0); -webkit-transform:scale(0)} 0%,80%,100%{transform:scale(0); -webkit-transform:scale(0)}
40%{transform:scale(1); -webkit-transform:scale(1)} 40%{transform:scale(1); -webkit-transform:scale(1)}
} }
.layui-m-layer2 .layui-m-layercont i{-webkit-animation: layui-m-anim-loading 1.4s infinite ease-in-out; animation: layui-m-anim-loading 1.4s infinite ease-in-out; -webkit-animation-fill-mode: both; animation-fill-mode: both;} .layui-m-layer2 .layui-m-layercont i{-webkit-animation: layui-m-anim-loading 1.4s infinite ease-in-out; animation: layui-m-anim-loading 1.4s infinite ease-in-out; -webkit-animation-fill-mode: both; animation-fill-mode: both;}
.layui-m-layer2 .layui-m-layercont i:first-child{margin-left:0; -webkit-animation-delay: -.32s; animation-delay: -.32s;} .layui-m-layer2 .layui-m-layercont i:first-child{margin-left:0; -webkit-animation-delay: -.32s; animation-delay: -.32s;}
.layui-m-layer2 .layui-m-layercont i.layui-m-layerload{-webkit-animation-delay: -.16s; animation-delay: -.16s;} .layui-m-layer2 .layui-m-layercont i.layui-m-layerload{-webkit-animation-delay: -.16s; animation-delay: -.16s;}
.layui-m-layer2 .layui-m-layercont>div{line-height:22px; padding-top:7px; margin-bottom:20px; font-size: 14px;} .layui-m-layer2 .layui-m-layercont>div{line-height:22px; padding-top:7px; margin-bottom:20px; font-size: 14px;}
.layui-m-layerbtn{display: box; display: -moz-box; display: -webkit-box; width: 100%; position:relative; height: 50px; line-height: 50px; font-size: 0; text-align:center; border-top:1px solid #D0D0D0; background-color: #F2F2F2; border-radius: 0 0 5px 5px;} .layui-m-layerbtn{display: box; display: -moz-box; display: -webkit-box; width: 100%; position:relative; height: 50px; line-height: 50px; font-size: 0; text-align:center; border-top:1px solid #D0D0D0; background-color: #F2F2F2; border-radius: 0 0 5px 5px;}
.layui-m-layerbtn span{position:relative; display: block; -moz-box-flex: 1; box-flex: 1; -webkit-box-flex: 1; text-align:center; font-size:14px; border-radius: 0 0 5px 5px; cursor:pointer;} .layui-m-layerbtn span{position:relative; display: block; -moz-box-flex: 1; box-flex: 1; -webkit-box-flex: 1; text-align:center; font-size:14px; border-radius: 0 0 5px 5px; cursor:pointer;}
.layui-m-layerbtn span[yes]{color: #40AFFE;} .layui-m-layerbtn span[yes]{color: #40AFFE;}
.layui-m-layerbtn span[no]{border-right: 1px solid #D0D0D0; border-radius: 0 0 0 5px;} .layui-m-layerbtn span[no]{border-right: 1px solid #D0D0D0; border-radius: 0 0 0 5px;}
.layui-m-layerbtn span:active{background-color: #F6F6F6;} .layui-m-layerbtn span:active{background-color: #F6F6F6;}
.layui-m-layerend{position:absolute; right:7px; top:10px; width:30px; height:30px; border: 0; font-weight:400; background: transparent; cursor: pointer; -webkit-appearance: none; font-size:30px;} .layui-m-layerend{position:absolute; right:7px; top:10px; width:30px; height:30px; border: 0; font-weight:400; background: transparent; cursor: pointer; -webkit-appearance: none; font-size:30px;}
.layui-m-layerend::before, .layui-m-layerend::after{position:absolute; left:5px; top:15px; content:''; width:18px; height:1px; background-color:#999; transform:rotate(45deg); -webkit-transform:rotate(45deg); border-radius: 3px;} .layui-m-layerend::before, .layui-m-layerend::after{position:absolute; left:5px; top:15px; content:''; width:18px; height:1px; background-color:#999; transform:rotate(45deg); -webkit-transform:rotate(45deg); border-radius: 3px;}
.layui-m-layerend::after{transform:rotate(-45deg); -webkit-transform:rotate(-45deg);} .layui-m-layerend::after{transform:rotate(-45deg); -webkit-transform:rotate(-45deg);}
/* 底部对话框风格 */ /* 底部对话框风格 */
body .layui-m-layer .layui-m-layer-footer{position: fixed; width: 95%; max-width: 100%; margin: 0 auto; left:0; right: 0; bottom: 10px; background: none;} body .layui-m-layer .layui-m-layer-footer{position: fixed; width: 95%; max-width: 100%; margin: 0 auto; left:0; right: 0; bottom: 10px; background: none;}
.layui-m-layer-footer .layui-m-layercont{padding: 20px; border-radius: 5px 5px 0 0; background-color: rgba(255,255,255,.8);} .layui-m-layer-footer .layui-m-layercont{padding: 20px; border-radius: 5px 5px 0 0; background-color: rgba(255,255,255,.8);}
.layui-m-layer-footer .layui-m-layerbtn{display: block; height: auto; background: none; border-top: none;} .layui-m-layer-footer .layui-m-layerbtn{display: block; height: auto; background: none; border-top: none;}
.layui-m-layer-footer .layui-m-layerbtn span{background-color: rgba(255,255,255,.8);} .layui-m-layer-footer .layui-m-layerbtn span{background-color: rgba(255,255,255,.8);}
.layui-m-layer-footer .layui-m-layerbtn span[no]{color: #FD482C; border-top: 1px solid #c2c2c2; border-radius: 0 0 5px 5px;} .layui-m-layer-footer .layui-m-layerbtn span[no]{color: #FD482C; border-top: 1px solid #c2c2c2; border-radius: 0 0 5px 5px;}
.layui-m-layer-footer .layui-m-layerbtn span[yes]{margin-top: 10px; border-radius: 5px;} .layui-m-layer-footer .layui-m-layerbtn span[yes]{margin-top: 10px; border-radius: 5px;}
/* 通用提示 */ /* 通用提示 */
body .layui-m-layer .layui-m-layer-msg{width: auto; max-width: 90%; margin: 0 auto; bottom: -150px; background-color: rgba(0,0,0,.7); color: #fff;} body .layui-m-layer .layui-m-layer-msg{width: auto; max-width: 90%; margin: 0 auto; bottom: -150px; background-color: rgba(0,0,0,.7); color: #fff;}
.layui-m-layer-msg .layui-m-layercont{padding: 10px 20px;} .layui-m-layer-msg .layui-m-layercont{padding: 10px 20px;}

View File

Before

Width:  |  Height:  |  Size: 5.8 KiB

After

Width:  |  Height:  |  Size: 5.8 KiB

View File

Before

Width:  |  Height:  |  Size: 11 KiB

After

Width:  |  Height:  |  Size: 11 KiB

View File

@@ -1,189 +1,187 @@
/** /**
@Name: layer @Name: layer
@Author: 贤心
**/
**/
/* *html{background-image: url(about:blank); background-attachment: fixed;} */
/* *html{background-image: url(about:blank); background-attachment: fixed;} */ html #layuicss-layer{display: none; position: absolute; width: 1989px;}
html #layuicss-layer{display: none; position: absolute; width: 1989px;}
/* common */
/* common */ .layui-layer-shade, .layui-layer{position:fixed; _position:absolute; pointer-events: auto;}
.layui-layer-shade, .layui-layer{position:fixed; _position:absolute; pointer-events: auto;} .layui-layer-shade{top:0; left:0; width:100%; height:100%; _height:expression(document.body.offsetHeight+"px");}
.layui-layer-shade{top:0; left:0; width:100%; height:100%; _height:expression(document.body.offsetHeight+"px");} .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; overflow: hidden;}
.layui-layer-content{position:relative;} .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;} .layui-layer-dialog .layui-layer-ico,
.layui-layer-dialog .layui-layer-ico, .layui-layer-setwin a,
.layui-layer-setwin a, .layui-layer-btn a{display:inline-block; *display:inline; *zoom:1; vertical-align:top;}
.layui-layer-btn a{display:inline-block; *display:inline; *zoom:1; vertical-align:top;}
.layui-layer-move{display: none; position: fixed; *position: absolute; left: 0px; top: 0px; width: 100%; height: 100%; cursor: move; opacity: 0; filter:alpha(opacity=0); background-color: #fff; z-index: 2147483647;}
.layui-layer-move{display: none; position: fixed; *position: absolute; left: 0px; top: 0px; width: 100%; height: 100%; cursor: move; opacity: 0; filter:alpha(opacity=0); background-color: #fff; z-index: 2147483647;} .layui-layer-resize{position: absolute; width: 15px; height: 15px; right: 0; bottom: 0; cursor: se-resize;}
.layui-layer-resize{position: absolute; width: 15px; height: 15px; right: 0; bottom: 0; cursor: se-resize;}
/* 动画 */
/* 动画 */ .layer-anim{-webkit-animation-fill-mode: both; animation-fill-mode: both; -webkit-animation-duration:.3s; animation-duration:.3s;}
.layer-anim{-webkit-animation-fill-mode: both; animation-fill-mode: both; -webkit-animation-duration:.3s; animation-duration:.3s;}
@-webkit-keyframes layer-bounceIn { /* 默认 */
@-webkit-keyframes layer-bounceIn { /* 默认 */ 0% {opacity: 0; -webkit-transform: scale(.5); transform: scale(.5)}
0% {opacity: 0; -webkit-transform: scale(.5); transform: scale(.5)} 100% {opacity: 1; -webkit-transform: scale(1); transform: scale(1)}
100% {opacity: 1; -webkit-transform: scale(1); transform: scale(1)} }
} @keyframes layer-bounceIn {
@keyframes layer-bounceIn { 0% {opacity: 0; -webkit-transform: scale(.5); -ms-transform: scale(.5); transform: scale(.5)}
0% {opacity: 0; -webkit-transform: scale(.5); -ms-transform: scale(.5); transform: scale(.5)} 100% {opacity: 1; -webkit-transform: scale(1); -ms-transform: scale(1); transform: scale(1)}
100% {opacity: 1; -webkit-transform: scale(1); -ms-transform: scale(1); transform: scale(1)} }
} .layer-anim-00{-webkit-animation-name: layer-bounceIn;animation-name: layer-bounceIn}
.layer-anim-00{-webkit-animation-name: layer-bounceIn;animation-name: layer-bounceIn}
@-webkit-keyframes layer-zoomInDown{0%{opacity:0;-webkit-transform:scale(.1) translateY(-2000px);transform:scale(.1) translateY(-2000px);-webkit-animation-timing-function:ease-in-out;animation-timing-function:ease-in-out}60%{opacity:1;-webkit-transform:scale(.475) translateY(60px);transform:scale(.475) translateY(60px);-webkit-animation-timing-function:ease-out;animation-timing-function:ease-out}}@keyframes layer-zoomInDown{0%{opacity:0;-webkit-transform:scale(.1) translateY(-2000px);-ms-transform:scale(.1) translateY(-2000px);transform:scale(.1) translateY(-2000px);-webkit-animation-timing-function:ease-in-out;animation-timing-function:ease-in-out}60%{opacity:1;-webkit-transform:scale(.475) translateY(60px);-ms-transform:scale(.475) translateY(60px);transform:scale(.475) translateY(60px);-webkit-animation-timing-function:ease-out;animation-timing-function:ease-out}}.layer-anim-01{-webkit-animation-name:layer-zoomInDown;animation-name:layer-zoomInDown}
@-webkit-keyframes layer-zoomInDown{0%{opacity:0;-webkit-transform:scale(.1) translateY(-2000px);transform:scale(.1) translateY(-2000px);-webkit-animation-timing-function:ease-in-out;animation-timing-function:ease-in-out}60%{opacity:1;-webkit-transform:scale(.475) translateY(60px);transform:scale(.475) translateY(60px);-webkit-animation-timing-function:ease-out;animation-timing-function:ease-out}}@keyframes layer-zoomInDown{0%{opacity:0;-webkit-transform:scale(.1) translateY(-2000px);-ms-transform:scale(.1) translateY(-2000px);transform:scale(.1) translateY(-2000px);-webkit-animation-timing-function:ease-in-out;animation-timing-function:ease-in-out}60%{opacity:1;-webkit-transform:scale(.475) translateY(60px);-ms-transform:scale(.475) translateY(60px);transform:scale(.475) translateY(60px);-webkit-animation-timing-function:ease-out;animation-timing-function:ease-out}}.layer-anim-01{-webkit-animation-name:layer-zoomInDown;animation-name:layer-zoomInDown}
@-webkit-keyframes layer-fadeInUpBig{0%{opacity:0;-webkit-transform:translateY(2000px);transform:translateY(2000px)}100%{opacity:1;-webkit-transform:translateY(0);transform:translateY(0)}}@keyframes layer-fadeInUpBig{0%{opacity:0;-webkit-transform:translateY(2000px);-ms-transform:translateY(2000px);transform:translateY(2000px)}100%{opacity:1;-webkit-transform:translateY(0);-ms-transform:translateY(0);transform:translateY(0)}}.layer-anim-02{-webkit-animation-name:layer-fadeInUpBig;animation-name:layer-fadeInUpBig}
@-webkit-keyframes layer-fadeInUpBig{0%{opacity:0;-webkit-transform:translateY(2000px);transform:translateY(2000px)}100%{opacity:1;-webkit-transform:translateY(0);transform:translateY(0)}}@keyframes layer-fadeInUpBig{0%{opacity:0;-webkit-transform:translateY(2000px);-ms-transform:translateY(2000px);transform:translateY(2000px)}100%{opacity:1;-webkit-transform:translateY(0);-ms-transform:translateY(0);transform:translateY(0)}}.layer-anim-02{-webkit-animation-name:layer-fadeInUpBig;animation-name:layer-fadeInUpBig}
@-webkit-keyframes layer-zoomInLeft{0%{opacity:0;-webkit-transform:scale(.1) translateX(-2000px);transform:scale(.1) translateX(-2000px);-webkit-animation-timing-function:ease-in-out;animation-timing-function:ease-in-out}60%{opacity:1;-webkit-transform:scale(.475) translateX(48px);transform:scale(.475) translateX(48px);-webkit-animation-timing-function:ease-out;animation-timing-function:ease-out}}@keyframes layer-zoomInLeft{0%{opacity:0;-webkit-transform:scale(.1) translateX(-2000px);-ms-transform:scale(.1) translateX(-2000px);transform:scale(.1) translateX(-2000px);-webkit-animation-timing-function:ease-in-out;animation-timing-function:ease-in-out}60%{opacity:1;-webkit-transform:scale(.475) translateX(48px);-ms-transform:scale(.475) translateX(48px);transform:scale(.475) translateX(48px);-webkit-animation-timing-function:ease-out;animation-timing-function:ease-out}}.layer-anim-03{-webkit-animation-name:layer-zoomInLeft;animation-name:layer-zoomInLeft}
@-webkit-keyframes layer-zoomInLeft{0%{opacity:0;-webkit-transform:scale(.1) translateX(-2000px);transform:scale(.1) translateX(-2000px);-webkit-animation-timing-function:ease-in-out;animation-timing-function:ease-in-out}60%{opacity:1;-webkit-transform:scale(.475) translateX(48px);transform:scale(.475) translateX(48px);-webkit-animation-timing-function:ease-out;animation-timing-function:ease-out}}@keyframes layer-zoomInLeft{0%{opacity:0;-webkit-transform:scale(.1) translateX(-2000px);-ms-transform:scale(.1) translateX(-2000px);transform:scale(.1) translateX(-2000px);-webkit-animation-timing-function:ease-in-out;animation-timing-function:ease-in-out}60%{opacity:1;-webkit-transform:scale(.475) translateX(48px);-ms-transform:scale(.475) translateX(48px);transform:scale(.475) translateX(48px);-webkit-animation-timing-function:ease-out;animation-timing-function:ease-out}}.layer-anim-03{-webkit-animation-name:layer-zoomInLeft;animation-name:layer-zoomInLeft}
@-webkit-keyframes layer-rollIn{0%{opacity:0;-webkit-transform:translateX(-100%) rotate(-120deg);transform:translateX(-100%) rotate(-120deg)}100%{opacity:1;-webkit-transform:translateX(0px) rotate(0deg);transform:translateX(0px) rotate(0deg)}}@keyframes layer-rollIn{0%{opacity:0;-webkit-transform:translateX(-100%) rotate(-120deg);-ms-transform:translateX(-100%) rotate(-120deg);transform:translateX(-100%) rotate(-120deg)}100%{opacity:1;-webkit-transform:translateX(0px) rotate(0deg);-ms-transform:translateX(0px) rotate(0deg);transform:translateX(0px) rotate(0deg)}}.layer-anim-04{-webkit-animation-name:layer-rollIn;animation-name:layer-rollIn}
@-webkit-keyframes layer-rollIn{0%{opacity:0;-webkit-transform:translateX(-100%) rotate(-120deg);transform:translateX(-100%) rotate(-120deg)}100%{opacity:1;-webkit-transform:translateX(0px) rotate(0deg);transform:translateX(0px) rotate(0deg)}}@keyframes layer-rollIn{0%{opacity:0;-webkit-transform:translateX(-100%) rotate(-120deg);-ms-transform:translateX(-100%) rotate(-120deg);transform:translateX(-100%) rotate(-120deg)}100%{opacity:1;-webkit-transform:translateX(0px) rotate(0deg);-ms-transform:translateX(0px) rotate(0deg);transform:translateX(0px) rotate(0deg)}}.layer-anim-04{-webkit-animation-name:layer-rollIn;animation-name:layer-rollIn}
@keyframes layer-fadeIn{0%{opacity:0}100%{opacity:1}}.layer-anim-05{-webkit-animation-name:layer-fadeIn;animation-name:layer-fadeIn}
@keyframes layer-fadeIn{0%{opacity:0}100%{opacity:1}}.layer-anim-05{-webkit-animation-name:layer-fadeIn;animation-name:layer-fadeIn}
@-webkit-keyframes layer-shake{0%,100%{-webkit-transform:translateX(0);transform:translateX(0)}10%,30%,50%,70%,90%{-webkit-transform:translateX(-10px);transform:translateX(-10px)}20%,40%,60%,80%{-webkit-transform:translateX(10px);transform:translateX(10px)}}@keyframes layer-shake{0%,100%{-webkit-transform:translateX(0);-ms-transform:translateX(0);transform:translateX(0)}10%,30%,50%,70%,90%{-webkit-transform:translateX(-10px);-ms-transform:translateX(-10px);transform:translateX(-10px)}20%,40%,60%,80%{-webkit-transform:translateX(10px);-ms-transform:translateX(10px);transform:translateX(10px)}}.layer-anim-06{-webkit-animation-name:layer-shake;animation-name:layer-shake}@-webkit-keyframes fadeIn{0%{opacity:0}100%{opacity:1}}
@-webkit-keyframes layer-shake{0%,100%{-webkit-transform:translateX(0);transform:translateX(0)}10%,30%,50%,70%,90%{-webkit-transform:translateX(-10px);transform:translateX(-10px)}20%,40%,60%,80%{-webkit-transform:translateX(10px);transform:translateX(10px)}}@keyframes layer-shake{0%,100%{-webkit-transform:translateX(0);-ms-transform:translateX(0);transform:translateX(0)}10%,30%,50%,70%,90%{-webkit-transform:translateX(-10px);-ms-transform:translateX(-10px);transform:translateX(-10px)}20%,40%,60%,80%{-webkit-transform:translateX(10px);-ms-transform:translateX(10px);transform:translateX(10px)}}.layer-anim-06{-webkit-animation-name:layer-shake;animation-name:layer-shake}@-webkit-keyframes fadeIn{0%{opacity:0}100%{opacity:1}}
/* 标题栏 */
/* 标题栏 */ .layui-layer-title{padding:0 80px 0 20px; height: 50px; line-height: 50px; border-bottom:1px solid #F0F0F0; font-size: 14px; color:#333; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; border-radius: 2px 2px 0 0;}
.layui-layer-title{padding:0 80px 0 20px; height: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-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; } .layui-layer-setwin .layui-layer-max{background-position:-32px -40px;}
.layui-layer-setwin .layui-layer-max{background-position:-32px -40px;} .layui-layer-setwin .layui-layer-max:hover{background-position:-16px -40px;}
.layui-layer-setwin .layui-layer-max:hover{background-position:-16px -40px;} .layui-layer-setwin .layui-layer-maxmin{background-position:-65px -40px;}
.layui-layer-setwin .layui-layer-maxmin{background-position:-65px -40px;} .layui-layer-setwin .layui-layer-maxmin:hover{background-position:-49px -40px;}
.layui-layer-setwin .layui-layer-maxmin:hover{background-position:-49px -40px;} .layui-layer-setwin .layui-layer-close1{background-position: 1px -40px; cursor: pointer;}
.layui-layer-setwin .layui-layer-close1{background-position: 1px -40px; cursor: pointer;} .layui-layer-setwin .layui-layer-close1:hover{opacity:0.7;}
.layui-layer-setwin .layui-layer-close1:hover{opacity:0.7;} .layui-layer-setwin .layui-layer-close2{position:absolute; right:-28px; top:-28px; width:30px; height:30px; margin-left:0; background-position:-149px -31px; *right:-18px; _display:none;}
.layui-layer-setwin .layui-layer-close2{position:absolute; right:-28px; top:-28px; width:30px; height:30px; margin-left:0; background-position:-149px -31px; *right:-18px; _display:none;} .layui-layer-setwin .layui-layer-close2:hover{ background-position:-180px -31px;}
.layui-layer-setwin .layui-layer-close2:hover{ background-position:-180px -31px;}
/* 按钮栏 */
/* 按钮栏 */ .layui-layer-btn{text-align: right; padding: 0 15px 12px; pointer-events: auto; user-select: none; -webkit-user-select: none;}
.layui-layer-btn{text-align: right; padding: 0 15px 12px; pointer-events: auto; user-select: none; -webkit-user-select: none;} .layui-layer-btn a{height: 28px; line-height: 28px; margin: 5px 5px 0; padding: 0 15px; border: 1px solid #dedede; background-color:#fff; color: #333; border-radius: 3px; font-weight:400; cursor:pointer; text-decoration: none;}
.layui-layer-btn a{height: 28px; line-height: 28px; margin: 5px 5px 0; padding: 0 15px; border: 1px solid #dedede; background-color:#fff; color: #333; border-radius: 3px; font-weight:400; cursor:pointer; text-decoration: none;} .layui-layer-btn a:hover{opacity: 0.9; text-decoration: none;}
.layui-layer-btn a:hover{opacity: 0.9; text-decoration: none;} .layui-layer-btn a:active{opacity: 0.8;}
.layui-layer-btn a:active{opacity: 0.8;} .layui-layer-btn .layui-layer-btn0{border-color: #1E9FFF; background-color: #1E9FFF; color:#fff;}
.layui-layer-btn .layui-layer-btn0{border-color: #1E9FFF; background-color: #1E9FFF; color:#fff;} .layui-layer-btn-l{text-align: left;}
.layui-layer-btn-l{text-align: left;} .layui-layer-btn-c{text-align: center;}
.layui-layer-btn-c{text-align: center;}
/* 定制化 */
/* 定制化 */ .layui-layer-dialog{min-width: 300px;}
.layui-layer-dialog{min-width:260px;} .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 } .layui-layer-ico2{background-position:-60px 0;}
.layui-layer-ico2{background-position:-60px 0;} .layui-layer-ico3{background-position:-90px 0;}
.layui-layer-ico3{background-position:-90px 0;} .layui-layer-ico4{background-position:-120px 0;}
.layui-layer-ico4{background-position:-120px 0;} .layui-layer-ico5{background-position:-150px 0;}
.layui-layer-ico5{background-position:-150px 0;} .layui-layer-ico6{background-position:-180px 0;}
.layui-layer-ico6{background-position:-180px 0;} .layui-layer-rim{border:6px solid #8D8D8D; border:6px solid rgba(0,0,0,.3); border-radius:5px; box-shadow: none;}
.layui-layer-rim{border:6px solid #8D8D8D; border:6px solid rgba(0,0,0,.3); border-radius:5px; box-shadow: none;} .layui-layer-msg{min-width:180px; border:1px solid #D3D4D3; box-shadow: none;}
.layui-layer-msg{min-width:180px; border:1px solid #D3D4D3; box-shadow: none;} .layui-layer-hui{min-width:100px; background-color: #000; filter:alpha(opacity=60); background-color: rgba(0,0,0,0.6); color: #fff; border:none;}
.layui-layer-hui{min-width:100px; background-color: #000; filter:alpha(opacity=60); background-color: rgba(0,0,0,0.6); color: #fff; border:none;} .layui-layer-hui .layui-layer-content{padding:12px 25px; text-align:center;}
.layui-layer-hui .layui-layer-content{padding:12px 25px; text-align:center;} .layui-layer-dialog .layui-layer-padding{padding: 20px 20px 20px 55px; text-align: left;}
.layui-layer-dialog .layui-layer-padding{padding: 20px 20px 20px 55px; text-align: left;} .layui-layer-page .layui-layer-content{position:relative; overflow:auto;}
.layui-layer-page .layui-layer-content{position:relative; overflow:auto;} .layui-layer-page .layui-layer-btn,.layui-layer-iframe .layui-layer-btn{padding-top:10px;}
.layui-layer-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 .layui-layer-content{width:60px; height:24px; background:url(loading-0.gif) no-repeat;}
.layui-layer-loading{border-radius:100%; background:none; box-shadow:none; border:none;} .layui-layer-loading .layui-layer-loading1{width:37px; height:37px; background:url(loading-1.gif) no-repeat;}
.layui-layer-loading .layui-layer-content{width:60px; height:24px; background:url(loading-0.gif) no-repeat;} .layui-layer-loading .layui-layer-loading2, .layui-layer-ico16{width:32px; height:32px; background:url(loading-2.gif) no-repeat;}
.layui-layer-loading .layui-layer-loading1{width:37px; height:37px; background:url(loading-1.gif) no-repeat;} .layui-layer-tips{background: none; box-shadow:none; border:none;}
.layui-layer-loading .layui-layer-loading2, .layui-layer-ico16{width:32px; height:32px; background:url(loading-2.gif) no-repeat;} .layui-layer-tips .layui-layer-content{position: relative; line-height: 22px; min-width: 12px; padding: 8px 15px; font-size: 12px; _float:left; border-radius: 3px; box-shadow: 1px 1px 3px rgba(0,0,0,.2); background-color: #000; color: #fff;}
.layui-layer-tips{background: none; box-shadow:none; border:none;} .layui-layer-tips .layui-layer-close{right:-2px; top:-1px;}
.layui-layer-tips .layui-layer-content{position: relative; line-height: 22px; min-width: 12px; padding: 8px 15px; font-size: 12px; _float:left; border-radius: 3px; box-shadow: 1px 1px 3px rgba(0,0,0,.2); background-color: #000; color: #fff;} .layui-layer-tips i.layui-layer-TipsG{ position:absolute; width:0; height:0; border-width:8px; border-color:transparent; border-style:dashed; *overflow:hidden;}
.layui-layer-tips .layui-layer-close{right:-2px; top:-1px;} .layui-layer-tips i.layui-layer-TipsT, .layui-layer-tips i.layui-layer-TipsB{left:5px; border-right-style:solid; border-right-color: #000;}
.layui-layer-tips i.layui-layer-TipsG{ position:absolute; width:0; height:0; border-width:8px; border-color:transparent; border-style:dashed; *overflow:hidden;} .layui-layer-tips i.layui-layer-TipsT{bottom:-8px;}
.layui-layer-tips i.layui-layer-TipsT, .layui-layer-tips i.layui-layer-TipsB{left:5px; border-right-style:solid; border-right-color: #000;} .layui-layer-tips i.layui-layer-TipsB{top:-8px;}
.layui-layer-tips i.layui-layer-TipsT{bottom:-8px;} .layui-layer-tips i.layui-layer-TipsR, .layui-layer-tips i.layui-layer-TipsL{top: 5px; border-bottom-style:solid; border-bottom-color: #000;}
.layui-layer-tips i.layui-layer-TipsB{top:-8px;} .layui-layer-tips i.layui-layer-TipsR{left:-8px;}
.layui-layer-tips i.layui-layer-TipsR, .layui-layer-tips i.layui-layer-TipsL{top: 5px; border-bottom-style:solid; border-bottom-color: #000;} .layui-layer-tips i.layui-layer-TipsL{right:-8px;}
.layui-layer-tips i.layui-layer-TipsR{left:-8px;}
.layui-layer-tips i.layui-layer-TipsL{right:-8px;} /* skin */
.layui-layer-lan[type="dialog"]{min-width:280px;}
/* skin */ .layui-layer-lan .layui-layer-title{background:#4476A7; color:#fff; border: none;}
.layui-layer-lan[type="dialog"]{min-width:280px;} .layui-layer-lan .layui-layer-btn{padding: 5px 10px 10px; text-align: right; border-top:1px solid #E9E7E7}
.layui-layer-lan .layui-layer-title{background:#4476A7; color:#fff; border: none;} .layui-layer-lan .layui-layer-btn a{background: #fff; border-color: #E9E7E7; color: #333;}
.layui-layer-lan .layui-layer-btn{padding: 5px 10px 10px; text-align: right; border-top:1px solid #E9E7E7} .layui-layer-lan .layui-layer-btn .layui-layer-btn1{background:#C9C5C5;}
.layui-layer-lan .layui-layer-btn a{background: #fff; border-color: #E9E7E7; color: #333;} .layui-layer-molv .layui-layer-title{background: #009f95; color:#fff; border: none;}
.layui-layer-lan .layui-layer-btn .layui-layer-btn1{background:#C9C5C5;} .layui-layer-molv .layui-layer-btn a{background: #009f95; border-color: #009f95;}
.layui-layer-molv .layui-layer-title{background: #009f95; color:#fff; border: none;} .layui-layer-molv .layui-layer-btn .layui-layer-btn1{background:#92B8B1;}
.layui-layer-molv .layui-layer-btn a{background: #009f95; border-color: #009f95;}
.layui-layer-molv .layui-layer-btn .layui-layer-btn1{background:#92B8B1;}
/**
/** @Name: layer拓展样式
@Name: layer拓展样式 */
*/ .layui-layer-iconext{background:url(icon-ext.png) no-repeat;}
.layui-layer-iconext{background:url(icon-ext.png) no-repeat;} /* prompt模式 */
.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;}
/* prompt模式 */ .layui-layer-prompt textarea.layui-layer-input{width: 300px; height: 100px; line-height: 20px; padding: 6px 10px;}
.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-content{padding: 20px;}
.layui-layer-prompt textarea.layui-layer-input{width: 300px; height: 100px; line-height: 20px; padding: 6px 10px;} .layui-layer-prompt .layui-layer-btn{padding-top: 0;}
.layui-layer-prompt .layui-layer-content{padding: 20px;}
.layui-layer-prompt .layui-layer-btn{padding-top: 0;} /* tab模式 */
.layui-layer-tab{box-shadow:1px 1px 50px rgba(0,0,0,.4);}
/* tab模式 */ .layui-layer-tab .layui-layer-title{padding-left:0; overflow: visible;}
.layui-layer-tab{box-shadow:1px 1px 50px rgba(0,0,0,.4);} .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{padding-left:0; overflow: visible;} .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{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:first-child{border-left:none;}
.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-tabmain{line-height:24px; clear:both;}
.layui-layer-tab .layui-layer-title span:first-child{border-left:none;} .layui-layer-tabmain .layui-layer-tabli{display:none;}
.layui-layer-tabmain{line-height:24px; clear:both;} .layui-layer-tabmain .layui-layer-tabli.layui-this{display: block;}
.layui-layer-tabmain .layui-layer-tabli{display:none;}
.layui-layer-tabmain .layui-layer-tabli.layui-this{display: block;} /* photo模式 */
.layui-layer-photos{background: none; box-shadow: none;}
/* photo模式 */ .layui-layer-photos .layui-layer-content{overflow:hidden; text-align: center;}
.layui-layer-photos{-webkit-animation-duration: .8s; animation-duration: .8s;} .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-content{overflow:hidden; text-align: center;} .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-photos .layui-layer-phimg img{position: relative; width:100%; display: inline-block; *display:inline; *zoom:1; vertical-align:top;} .layui-layer-imgprev{left: 30px; background-position:-5px -5px; _background-position:-70px -5px;}
.layui-layer-imguide,.layui-layer-imgbar{display:none;} .layui-layer-imgprev:hover{background-position:-33px -5px; _background-position:-120px -5px;}
.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-imgnext{right: 30px; _right:8px; background-position:-5px -50px; _background-position:-70px -50px;}
.layui-layer-imgprev{left:10px; background-position:-5px -5px; _background-position:-70px -5px;} .layui-layer-imgnext:hover{background-position: -33px -50px; _background-position: -120px -50px;}
.layui-layer-imgprev:hover{background-position:-33px -5px; _background-position:-120px -5px;} .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-imgnext{right:10px; _right:8px; background-position:-5px -50px; _background-position:-70px -50px;} .layui-layer-imgtit{/*position:absolute; left:20px;*/}
.layui-layer-imgnext:hover{background-position:-33px -50px; _background-position:-120px -50px;} .layui-layer-imgtit *{display:inline-block; *display:inline; *zoom:1; vertical-align:top; font-size:12px;}
.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-imgtit a{max-width:65%; text-overflow: ellipsis; overflow: hidden; white-space: nowrap; color:#fff;}
.layui-layer-imgtit{/*position:absolute; left:20px;*/} .layui-layer-imgtit a:hover{color:#fff; text-decoration:underline;}
.layui-layer-imgtit *{display:inline-block; *display:inline; *zoom:1; vertical-align:top; font-size:12px;} .layui-layer-imgtit em{padding-left:10px; font-style: normal;}
.layui-layer-imgtit a{max-width:65%; text-overflow: ellipsis; overflow: hidden; white-space: nowrap; color:#fff;}
.layui-layer-imgtit a:hover{color:#fff; text-decoration:underline;} /* 关闭动画 */
.layui-layer-imgtit em{padding-left:10px; font-style: normal;} @-webkit-keyframes layer-bounceOut {
100% {opacity: 0; -webkit-transform: scale(.7); transform: scale(.7)}
/* 关闭动画 */ 30% {-webkit-transform: scale(1.05); transform: scale(1.05)}
@-webkit-keyframes layer-bounceOut { 0% {-webkit-transform: scale(1); transform: scale(1);}
100% {opacity: 0; -webkit-transform: scale(.7); transform: scale(.7)} }
30% {-webkit-transform: scale(1.05); transform: scale(1.05)} @keyframes layer-bounceOut {
0% {-webkit-transform: scale(1); transform: scale(1);} 100% {opacity: 0; -webkit-transform: scale(.7); -ms-transform: scale(.7); transform: scale(.7);}
} 30% {-webkit-transform: scale(1.05); -ms-transform: scale(1.05); transform: scale(1.05);}
@keyframes layer-bounceOut { 0% {-webkit-transform: scale(1); -ms-transform: scale(1);transform: scale(1);}
100% {opacity: 0; -webkit-transform: scale(.7); -ms-transform: scale(.7); transform: scale(.7);} }
30% {-webkit-transform: scale(1.05); -ms-transform: scale(1.05); transform: scale(1.05);} .layer-anim-close{-webkit-animation-name: layer-bounceOut; animation-name: layer-bounceOut; -webkit-animation-fill-mode: both; animation-fill-mode: both; -webkit-animation-duration:.2s; animation-duration:.2s;}
0% {-webkit-transform: scale(1); -ms-transform: scale(1);transform: scale(1);}
} /* @media screen and (max-width: 1100px) { 没有标题的时候,关闭按钮显示不全 */
.layer-anim-close{-webkit-animation-name: layer-bounceOut; animation-name: layer-bounceOut; -webkit-animation-fill-mode: both; animation-fill-mode: both; -webkit-animation-duration:.2s; animation-duration:.2s;} /* .layui-layer-iframe{overflow-y: auto; -webkit-overflow-scrolling: touch;} */
/* } */
/* @media screen and (max-width: 1100px) { 没有标题的时候,关闭按钮显示不全 */
/* .layui-layer-iframe{overflow-y: auto; -webkit-overflow-scrolling: touch;} */ /* ThinkGem */
/* } */ .layui-layer-title {font-weight:bold;font-size:15px;background:#fff;height:45px;line-height:45px;}
.layui-layer-page .layui-layer-content {overflow-x:hidden;}
/* ThinkGem */ .layui-layer-page .layui-layer-content .form-file{padding-top:4px;}
.layui-layer-title {font-weight:bold;font-size:15px;background:#fff;height:45px;line-height:45px;} .layui-layer-page .layui-layer-btn, .layui-layer-iframe .layui-layer-btn {
.layui-layer-page .layui-layer-content {overflow-x:hidden;} padding-top:3px;padding-bottom:10px;}
.layui-layer-page .layui-layer-content .form-file{padding-top:4px;} .layui-layer-btn .layui-layer-btn0{border-color:#367fa9;background-color:#367fa9;}
.layui-layer-page .layui-layer-btn, .layui-layer-iframe .layui-layer-btn { .layui-layer-btn a {height:auto;padding:0 12px;font-size:13px;background-color:#f4f4f4;}
padding-top:3px;padding-bottom:10px;} .layui-layer.toast-top-full-width {min-width: 60%;}
.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;}

View File

Before

Width:  |  Height:  |  Size: 5.7 KiB

After

Width:  |  Height:  |  Size: 5.7 KiB

View File

Before

Width:  |  Height:  |  Size: 1.7 KiB

After

Width:  |  Height:  |  Size: 1.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.4 KiB

View 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;
}

View File

@@ -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)
* 关注微信公众号,了解最新动态:
![JeeSite微信公众号](https://images.gitee.com/uploads/images/2020/0727/091951_a3ab258c_6732.jpeg "JeeSite微信公众号")
## 项目介绍 ## 项目介绍
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>
* 微信公众号(关注动态):
![JeeSite4微信公众号](https://static.oschina.net/uploads/space/2018/0302/145133_OGZf_941661.jpg "JeeSite4微信公众号")
## 今后如何升级? ## 今后如何升级?
尽量不修改 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 全局设置技巧
``` ```
@@ -88,4 +90,4 @@ git config --global core.autocrlf false
2、拒绝提交包含混合换行符的文件 2、拒绝提交包含混合换行符的文件
git config --global core.safecrlf true git config --global core.safecrlf true
``` ```

16
modules/cms/bin/deploy.sh Normal file
View 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

View File

@@ -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

View 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

View File

@@ -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>

View File

@@ -9,4 +9,5 @@
4.2.3 4.2.3
4.3.0 4.3.0
4.3.1 4.3.1
4.3.2 4.3.2
4.3.3

View File

@@ -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;}

View File

@@ -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>

View File

@@ -264,8 +264,8 @@ 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);
// 一次性后台加载用户,若数据量比较大,建议使用懒加载
if (StringUtils.equals(isLoadUser, "true")) {
List<Map<String, Object>> userList =
empUserController.treeData("u_", e.getOfficeCode(), e.getOfficeCode(),
companyCode, postCode, roleCode, isAll, isShowCode, ctrlPermi);
mapList.addAll(userList);
}
}
mapList.add(map); mapList.add(map);
} }
// 一次性后台加载用户,若数据量比较大,建议使用懒加载
if (StringUtils.equals(isLoadUser, "true") && idList.size() > 0) {
List<Map<String, Object>> userList =
empUserController.treeData(userIdPrefix, idList.toArray(new String[idList.size()]),
companyCode, postCode, roleCode, isAll, isShowCode, ctrlPermi);
mapList.addAll(userList);
}
// 懒加载用户,点击叶子节点的时候再去加载部门(懒加载无法回显,数据量大时,建议使用 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);
} }

View File

@@ -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);

View File

@@ -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);
} }

View File

@@ -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:

View File

@@ -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

View File

@@ -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>
<% } } %> <% }
} %>

View File

@@ -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>
<% } %> <% } %>

View File

@@ -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");

View File

@@ -1,9 +1,8 @@
<% 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">
<li style="float:left;width:16.66666%;padding:5px;"> <li style="float:left;width:16.66666%;padding:5px;">
@@ -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>
<% } %> <% } %>

View File

@@ -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}');

View File

@@ -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();

View File

@@ -5,7 +5,7 @@ companyName: ThinkGem
# 产品版本、版权年份 # 产品版本、版权年份
productVersion: V4.3 productVersion: V4.3
copyrightYear: 2021 copyrightYear: 2022
# 数据库连接 # 数据库连接
jdbc: jdbc:

View File

@@ -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 为您的模块即可 ====== -->

View File

@@ -4,4 +4,5 @@
4.2.3 4.2.3
4.3.0 4.3.0
4.3.1 4.3.1
4.3.2 4.3.2
4.3.3

View File

@@ -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>

View File

@@ -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>

View File

@@ -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>

View 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

View File

@@ -9,7 +9,7 @@ companyName: ThinkGem
# 产品版本、版权年份 # 产品版本、版权年份
productVersion: V4.3 productVersion: V4.3
copyrightYear: 2021 copyrightYear: 2022
#是否演示模式 #是否演示模式
demoMode: false demoMode: false

View 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>

View File

@@ -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:'&nbsp;',dictValue:''}], ${@DictUtils.getDictListJson('sys_menu_type')}), items: $.merge([{dictLabel:'&nbsp;',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();}
// }, // },

View File

@@ -14,105 +14,105 @@
</div> </div>
</div> </div>
<div class="box-body"> <div class="box-body">
<#form:form id="searchForm" model="${testData}" action="${ctx}/test/testData/listData" method="post" class="form-inline hide" <#form:form id="searchForm" model="${testData}" action="${ctx}/test/testData/listData" method="post" class="form-inline hide"
data-page-no="${parameter.pageNo}" data-page-size="${parameter.pageSize}" data-order-by="${parameter.orderBy}"> data-page-no="${parameter.pageNo}" data-page-size="${parameter.pageSize}" data-order-by="${parameter.orderBy}">
<div class="form-group"> <div class="form-group">
<label class="control-label">单行文本:</label> <label class="control-label">单行文本:</label>
<div class="control-inline"> <div class="control-inline">
<#form:input path="testInput" maxlength="200" class="form-control width-120"/> <#form:input path="testInput" maxlength="200" class="form-control width-120"/>
</div> </div>
</div> </div>
<div class="form-group"> <div class="form-group">
<label class="control-label">多行文本:</label> <label class="control-label">多行文本:</label>
<div class="control-inline"> <div class="control-inline">
<#form:input path="testTextarea" maxlength="200" class="form-control width-120"/> <#form:input path="testTextarea" maxlength="200" class="form-control width-120"/>
</div> </div>
</div> </div>
<div class="form-group"> <div class="form-group">
<label class="control-label">下拉框:</label> <label class="control-label">下拉框:</label>
<div class="control-inline width-120"> <div class="control-inline width-120">
<#form:select path="testSelect" dictType="sys_menu_type" blankOption="true" class="form-control"/> <#form:select path="testSelect" dictType="sys_menu_type" blankOption="true" class="form-control"/>
</div> </div>
</div> </div>
<div class="form-group"> <div class="form-group">
<label class="control-label">下拉多选:</label> <label class="control-label">下拉多选:</label>
<div class="control-inline width-120"> <div class="control-inline width-120">
<#form:select path="testSelectMultiple" dictType="sys_menu_type" multiple="true" blankOption="true" class="form-control"/> <#form:select path="testSelectMultiple" dictType="sys_menu_type" multiple="true" blankOption="true" class="form-control"/>
</div> </div>
</div> </div>
<div class="form-group"> <div class="form-group">
<label class="control-label">单选框:</label> <label class="control-label">单选框:</label>
<div class="control-inline"> <div class="control-inline">
<#form:radio path="testRadio" dictType="sys_menu_type" blankOption="true" class="form-control"/> <#form:radio path="testRadio" dictType="sys_menu_type" blankOption="true" class="form-control"/>
</div> </div>
</div> </div>
<div class="form-group"> <div class="form-group">
<label class="control-label">复选框:</label> <label class="control-label">复选框:</label>
<div class="control-inline"> <div class="control-inline">
<#form:checkbox path="testCheckbox" dictType="sys_menu_type" blankOption="true" class="form-control"/> <#form:checkbox path="testCheckbox" dictType="sys_menu_type" blankOption="true" class="form-control"/>
</div> </div>
</div> </div>
<div class="form-group"> <div class="form-group">
<label class="control-label">日期选择:</label> <label class="control-label">日期选择:</label>
<div class="control-inline"> <div class="control-inline">
<#form:input path="testDate_gte" readonly="true" maxlength="20" class="form-control laydate width-date" <#form:input path="testDate_gte" readonly="true" maxlength="20" class="form-control laydate width-date"
dataFormat="date" data-type="date" data-format="yyyy-MM-dd" data-done="testDate_lte.click()"/> dataFormat="date" data-type="date" data-format="yyyy-MM-dd" data-done="testDate_lte.click()"/>
&nbsp;-&nbsp; &nbsp;-&nbsp;
<#form:input path="testDate_lte" readonly="true" maxlength="20" class="form-control laydate width-date" <#form:input path="testDate_lte" readonly="true" maxlength="20" class="form-control laydate width-date"
dataFormat="date" data-type="date" data-format="yyyy-MM-dd"/> dataFormat="date" data-type="date" data-format="yyyy-MM-dd"/>
</div> </div>
</div> </div>
<div class="form-group"> <div class="form-group">
<label class="control-label">日期时间:</label> <label class="control-label">日期时间:</label>
<div class="control-inline"> <div class="control-inline">
<#form:input path="testDatetime_gte" readonly="true" maxlength="20" class="form-control laydate width-datetime" <#form:input path="testDatetime_gte" readonly="true" maxlength="20" class="form-control laydate width-datetime"
dataFormat="datetime" data-type="datetime" data-format="yyyy-MM-dd HH:mm" data-done="testDatetime_lte.click()"/> dataFormat="datetime" data-type="datetime" data-format="yyyy-MM-dd HH:mm" data-done="testDatetime_lte.click()"/>
&nbsp;-&nbsp; &nbsp;-&nbsp;
<#form:input path="testDatetime_lte" readonly="true" maxlength="20" class="form-control laydate width-datetime" <#form:input path="testDatetime_lte" readonly="true" maxlength="20" class="form-control laydate width-datetime"
dataFormat="datetime" data-type="datetime" data-format="yyyy-MM-dd HH:mm"/> dataFormat="datetime" data-type="datetime" data-format="yyyy-MM-dd HH:mm"/>
</div> </div>
</div> </div>
<div class="form-group"> <div class="form-group">
<label class="control-label">用户选择:</label> <label class="control-label">用户选择:</label>
<div class="control-inline width-120" > <div class="control-inline width-120" >
<#form:treeselect id="testUser" title="用户选择" <#form:treeselect id="testUser" title="用户选择"
path="testUser.userCode" labelPath="testUser.userName" path="testUser.userCode" labelPath="testUser.userName"
url="${ctx}/sys/office/treeData?isLoadUser=true" allowClear="true"/> url="${ctx}/sys/office/treeData?isLoadUser=true" allowClear="true"/>
</div> </div>
</div> </div>
<div class="form-group"> <div class="form-group">
<label class="control-label">机构选择:</label> <label class="control-label">机构选择:</label>
<div class="control-inline width-120" > <div class="control-inline width-120" >
<#form:treeselect id="testOffice" title="机构选择" <#form:treeselect id="testOffice" title="机构选择"
path="testOffice.officeCode" labelPath="testOffice.officeName" path="testOffice.officeCode" labelPath="testOffice.officeName"
url="${ctx}/sys/office/treeData" allowClear="true"/> url="${ctx}/sys/office/treeData" allowClear="true"/>
</div> </div>
</div> </div>
<div class="form-group"> <div class="form-group">
<label class="control-label">区域选择:</label> <label class="control-label">区域选择:</label>
<div class="control-inline width-120" > <div class="control-inline width-120" >
<#form:treeselect id="testAreaCode" title="区域选择" <#form:treeselect id="testAreaCode" title="区域选择"
path="testAreaCode" labelPath="testAreaName" path="testAreaCode" labelPath="testAreaName"
url="${ctx}/sys/area/treeData" allowClear="true"/> url="${ctx}/sys/area/treeData" allowClear="true"/>
</div> </div>
</div> </div>
<div class="form-group"> <div class="form-group">
<label class="control-label">状态:</label> <label class="control-label">状态:</label>
<div class="control-inline width-120"> <div class="control-inline width-120">
<#form:select path="status" dictType="sys_search_status" blankOption="true" class="form-control isQuick"/> <#form:select path="status" dictType="sys_search_status" blankOption="true" class="form-control isQuick"/>
</div> </div>
</div> </div>
<div class="form-group"> <div class="form-group">
<label class="control-label">备注信息:</label> <label class="control-label">备注信息:</label>
<div class="control-inline"> <div class="control-inline">
<#form:input path="remarks" maxlength="500" class="form-control width-120"/> <#form:input path="remarks" maxlength="500" class="form-control width-120"/>
</div> </div>
</div> </div>
<div class="form-group"> <div class="form-group">
<button type="submit" class="btn btn-primary btn-sm">查询</button> <button type="submit" class="btn btn-primary btn-sm">查询</button>
<button type="reset" class="btn btn-default btn-sm">重置</button> <button type="reset" class="btn btn-default btn-sm">重置</button>
</div> </div>
</#form:form> </#form:form>
<table id="dataGrid"></table> <table id="dataGrid"></table>
<div id="dataGridPage"></div> <div id="dataGridPage"></div>
</div> </div>

View File

@@ -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:'&nbsp;',dictValue:''}], ${@DictUtils.getDictListJson('sys_menu_type')}), items: $.merge([{dictLabel:'&nbsp;',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:'&nbsp;',dictValue:''}], ${@DictUtils.getDictListJson('sys_menu_type')}), items: $.merge([{dictLabel:'&nbsp;',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()});
} }
} }
}, },

View File

@@ -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:'&nbsp;',dictValue:''}], ${@DictUtils.getDictListJson('sys_menu_type')}), items: $.merge([{dictLabel:'&nbsp;',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()});
} }
} }
}, },

View File

@@ -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>&nbsp;');
}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>&nbsp;');
}
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:'&nbsp;',dictValue:''}], ${@DictUtils.getDictListJson('sys_menu_type')}), items: $.merge([{dictLabel:'&nbsp;',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:'&nbsp;',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>&nbsp;');
}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>&nbsp;');
}
return actions.join('');
}, editoptions: {defaultValue: 'new'}}
], ],
shrinkToFit: false, // 是否按百分比自动调整列宽
// 编辑表格参数 // 编辑表格参数
editGrid: true, // 是否是编辑表格 editGrid: true, // 是否是编辑表格