From b992eb1c48b7ca7daa4cbc0b87e26ca3d666d3e5 Mon Sep 17 00:00:00 2001 From: RuoYi Date: Mon, 3 Sep 2018 08:45:08 +0800 Subject: [PATCH] =?UTF-8?q?=E8=8B=A5=E4=BE=9D=202.4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 28 +- pom.xml | 4 +- sql/{ry_20180823.sql => ry_20180903.sql} | 227 +- .../exception/user/UserDeleteException.java | 17 + .../ruoyi/framework/aspectj/LogAspect.java | 4 - .../framework/datascope/DataScopeUtils.java | 72 + .../framework/shiro/realm/UserRealm.java | 29 +- .../framework/shiro/service/LoginService.java | 16 +- .../framework/web/domain/BaseEntity.java | 2 +- .../project/system/config/domain/Config.java | 1 + .../dept/controller/DeptController.java | 14 + .../project/system/dept/domain/Dept.java | 22 + .../system/dept/mapper/DeptMapper.java | 18 +- .../system/dept/service/DeptServiceImpl.java | 59 +- .../system/dept/service/IDeptService.java | 17 +- .../system/menu/mapper/MenuMapper.java | 25 +- .../system/menu/service/IMenuService.java | 5 +- .../system/menu/service/MenuServiceImpl.java | 21 +- .../role/controller/RoleController.java | 25 +- .../project/system/role/domain/Role.java | 44 +- .../project/system/role/domain/RoleDept.java | 40 + .../system/role/mapper/RoleDeptMapper.java | 46 + .../system/role/mapper/RoleMapper.java | 7 - .../system/role/service/IRoleService.java | 8 + .../system/role/service/RoleServiceImpl.java | 57 +- .../user/controller/IndexController.java | 2 +- .../project/system/user/domain/User.java | 18 +- .../system/user/service/UserServiceImpl.java | 3 + src/main/resources/application.yml | 2 +- src/main/resources/i18n/messages.properties | 1 + src/main/resources/logback.xml | 2 +- .../mybatis/monitor/JobLogMapper.xml | 3 +- .../resources/mybatis/monitor/JobMapper.xml | 3 +- .../mybatis/monitor/OnlineMapper.xml | 4 +- .../mybatis/monitor/OperLogMapper.xml | 6 +- .../resources/mybatis/system/ConfigMapper.xml | 3 +- .../resources/mybatis/system/DeptMapper.xml | 58 +- .../mybatis/system/DictDataMapper.xml | 3 +- .../mybatis/system/DictTypeMapper.xml | 3 +- .../resources/mybatis/system/MenuMapper.xml | 26 +- .../resources/mybatis/system/NoticeMapper.xml | 3 +- .../resources/mybatis/system/PostMapper.xml | 3 +- .../mybatis/system/RoleDeptMapper.xml | 34 + .../resources/mybatis/system/RoleMapper.xml | 78 +- .../resources/mybatis/system/UserMapper.xml | 18 +- .../ajax/libs/bootstrap-table/.DS_Store | Bin 6148 -> 0 bytes .../ajax/libs/layer/extend/layer.ext.js | 2 - .../static/ajax/libs/layer/laydate/laydate.js | 11 - .../ajax/libs/layer/laydate/need/laydate.css | 75 - .../libs/layer/laydate/skins/default/icon.png | Bin 309 -> 0 bytes .../layer/laydate/skins/default/laydate.css | 59 - .../resources/static/ajax/libs/layer/layer.js | 2 - .../static/ajax/libs/layer/mobile/layer.js | 2 - .../ajax/libs/layer/mobile/need/layer.css | 1 - .../ajax/libs/layer/skin/default/icon-ext.png | Bin 5911 -> 0 bytes .../ajax/libs/layer/skin/default/icon.png | Bin 11592 -> 0 bytes .../ajax/libs/layer/skin/default/icon_ext.png | Bin 7677 -> 0 bytes .../libs/layer/skin/default/loading-0.gif | Bin 5793 -> 0 bytes .../libs/layer/skin/default/loading-1.gif | Bin 701 -> 0 bytes .../libs/layer/skin/default/loading-2.gif | Bin 1787 -> 0 bytes .../ajax/libs/layer/skin/default/textbg.png | Bin 210 -> 0 bytes .../libs/layer/skin/default/xubox_ico0.png | Bin 32954 -> 0 bytes .../layer/skin/default/xubox_loading0.gif | Bin 5793 -> 0 bytes .../layer/skin/default/xubox_loading1.gif | Bin 701 -> 0 bytes .../layer/skin/default/xubox_loading2.gif | Bin 1787 -> 0 bytes .../layer/skin/default/xubox_loading3.gif | Bin 2364 -> 0 bytes .../libs/layer/skin/default/xubox_title0.png | Bin 221 -> 0 bytes .../static/ajax/libs/layer/skin/layer.css | 7 - .../static/ajax/libs/layer/skin/layer.ext.css | 8 - .../ajax/libs/layer/skin/moon/default.png | Bin 7563 -> 0 bytes .../ajax/libs/layer/skin/moon/style.css | 141 - .../ajax/libs/layer/theme/default/layer.css | 2 +- src/main/resources/static/css/.DS_Store | Bin 6148 -> 0 bytes .../resources/static/css/font-awesome.css | 2794 ----------------- src/main/resources/static/img/.DS_Store | Bin 8196 -> 0 bytes src/main/resources/static/img/bg.png | Bin 2851 -> 0 bytes src/main/resources/static/img/blue.png | Bin 0 -> 1132 bytes src/main/resources/static/img/icons.png | Bin 2678 -> 0 bytes .../resources/static/img/sprite-skin-flat.png | Bin 3376 -> 0 bytes src/main/resources/static/img/success.png | Bin 1621 -> 0 bytes src/main/resources/static/img/webuploader.png | Bin 1672 -> 0 bytes src/main/resources/static/js/.DS_Store | Bin 8196 -> 0 bytes .../resources/static/js/plugins/.DS_Store | Bin 14340 -> 0 bytes src/main/resources/static/ruoyi/css/ry-ui.css | 344 +- .../resources/static/ruoyi/css/ry-ui.min.css | 8 +- src/main/resources/static/ruoyi/js/common.js | 32 +- src/main/resources/static/ruoyi/js/ry-ui.js | 212 +- .../resources/static/ruoyi/js/ry-ui.min.js | 8 +- src/main/resources/templates/include.html | 7 +- src/main/resources/templates/index.html | 6 +- src/main/resources/templates/login.html | 6 +- src/main/resources/templates/main.html | 73 +- .../resources/templates/monitor/job/add.html | 8 +- .../resources/templates/monitor/job/edit.html | 8 +- .../resources/templates/system/dept/add.html | 23 +- .../resources/templates/system/dept/edit.html | 25 +- .../resources/templates/system/dept/tree.html | 169 +- .../templates/system/dict/data/data.html | 7 +- .../resources/templates/system/menu/add.html | 40 +- .../resources/templates/system/menu/edit.html | 38 +- .../resources/templates/system/menu/menu.html | 2 +- .../resources/templates/system/menu/tree.html | 157 +- .../resources/templates/system/role/add.html | 46 +- .../resources/templates/system/role/edit.html | 46 +- .../resources/templates/system/role/role.html | 7 + .../resources/templates/system/role/rule.html | 110 + .../resources/templates/system/user/add.html | 27 +- .../resources/templates/system/user/edit.html | 25 +- .../templates/system/user/profile/avatar.html | 2 +- .../system/user/profile/profile.html | 8 +- .../resources/templates/system/user/user.html | 79 +- .../resources/templates/tool/build/build.html | 14 +- 112 files changed, 1687 insertions(+), 4035 deletions(-) rename sql/{ry_20180823.sql => ry_20180903.sql} (84%) create mode 100644 src/main/java/com/ruoyi/common/exception/user/UserDeleteException.java create mode 100644 src/main/java/com/ruoyi/framework/datascope/DataScopeUtils.java create mode 100644 src/main/java/com/ruoyi/project/system/role/domain/RoleDept.java create mode 100644 src/main/java/com/ruoyi/project/system/role/mapper/RoleDeptMapper.java create mode 100644 src/main/resources/mybatis/system/RoleDeptMapper.xml delete mode 100644 src/main/resources/static/ajax/libs/bootstrap-table/.DS_Store delete mode 100644 src/main/resources/static/ajax/libs/layer/extend/layer.ext.js delete mode 100644 src/main/resources/static/ajax/libs/layer/laydate/laydate.js delete mode 100644 src/main/resources/static/ajax/libs/layer/laydate/need/laydate.css delete mode 100644 src/main/resources/static/ajax/libs/layer/laydate/skins/default/icon.png delete mode 100644 src/main/resources/static/ajax/libs/layer/laydate/skins/default/laydate.css delete mode 100644 src/main/resources/static/ajax/libs/layer/layer.js delete mode 100644 src/main/resources/static/ajax/libs/layer/mobile/layer.js delete mode 100644 src/main/resources/static/ajax/libs/layer/mobile/need/layer.css delete mode 100644 src/main/resources/static/ajax/libs/layer/skin/default/icon-ext.png delete mode 100644 src/main/resources/static/ajax/libs/layer/skin/default/icon.png delete mode 100644 src/main/resources/static/ajax/libs/layer/skin/default/icon_ext.png delete mode 100644 src/main/resources/static/ajax/libs/layer/skin/default/loading-0.gif delete mode 100644 src/main/resources/static/ajax/libs/layer/skin/default/loading-1.gif delete mode 100644 src/main/resources/static/ajax/libs/layer/skin/default/loading-2.gif delete mode 100644 src/main/resources/static/ajax/libs/layer/skin/default/textbg.png delete mode 100644 src/main/resources/static/ajax/libs/layer/skin/default/xubox_ico0.png delete mode 100644 src/main/resources/static/ajax/libs/layer/skin/default/xubox_loading0.gif delete mode 100644 src/main/resources/static/ajax/libs/layer/skin/default/xubox_loading1.gif delete mode 100644 src/main/resources/static/ajax/libs/layer/skin/default/xubox_loading2.gif delete mode 100644 src/main/resources/static/ajax/libs/layer/skin/default/xubox_loading3.gif delete mode 100644 src/main/resources/static/ajax/libs/layer/skin/default/xubox_title0.png delete mode 100644 src/main/resources/static/ajax/libs/layer/skin/layer.css delete mode 100644 src/main/resources/static/ajax/libs/layer/skin/layer.ext.css delete mode 100644 src/main/resources/static/ajax/libs/layer/skin/moon/default.png delete mode 100644 src/main/resources/static/ajax/libs/layer/skin/moon/style.css delete mode 100644 src/main/resources/static/css/.DS_Store delete mode 100644 src/main/resources/static/css/font-awesome.css delete mode 100644 src/main/resources/static/img/.DS_Store delete mode 100644 src/main/resources/static/img/bg.png create mode 100644 src/main/resources/static/img/blue.png delete mode 100644 src/main/resources/static/img/icons.png delete mode 100644 src/main/resources/static/img/sprite-skin-flat.png delete mode 100644 src/main/resources/static/img/success.png delete mode 100644 src/main/resources/static/img/webuploader.png delete mode 100644 src/main/resources/static/js/.DS_Store delete mode 100644 src/main/resources/static/js/plugins/.DS_Store create mode 100644 src/main/resources/templates/system/role/rule.html diff --git a/README.md b/README.md index c6d94ebb..708794fc 100644 --- a/README.md +++ b/README.md @@ -8,16 +8,16 @@ http://www.zi-han.net/theme/hplus -http://webapplayers.com/inspinia_admin-v2.7.1 +http://webapplayers.com/inspinia_admin-v2.7.1 阿里云优惠活动(2CPU 4GRAM 1M带宽 40G高效云盘):https://promotion.aliyun.com/ntms/act/vm/aliyun-group/buy.html?group=BphATfDhsQ -云产品通用代金券,可叠加官网常规优惠使用:https://promotion.aliyun.com/ntms/yunparter/invite.html?userCode=brki8iof +云产品通用1000元代金券,可叠加官网常规优惠使用 :https://promotion.aliyun.com/ntms/yunparter/invite.html?userCode=brki8iof ## 内置功能 1. 用户管理:用户是系统操作者,该功能主要完成系统用户配置。 -2. 部门管理:配置系统组织机构(公司、部门、小组),树结构展现。 +2. 部门管理:配置系统组织机构(公司、部门、小组),树结构展现支持数据权限。 3. 岗位管理:配置系统用户所属担任职务。 4. 菜单管理:配置系统菜单,操作权限,按钮权限标识等。 5. 角色管理:角色菜单权限分配、设置角色按机构进行数据范围权限划分。 @@ -42,27 +42,27 @@ http://webapplayers.com/inspinia_admin-v2.7.1 - + - - + + - - + + - - + + - - + + - - + +
diff --git a/pom.xml b/pom.xml index f043943c..b5b310c9 100644 --- a/pom.xml +++ b/pom.xml @@ -5,7 +5,7 @@ com.ruoyi RuoYi - 2.3.0 + 2.4.0 jar RuoYi @@ -14,7 +14,7 @@ org.springframework.boot spring-boot-starter-parent - 2.0.3.RELEASE + 2.0.4.RELEASE diff --git a/sql/ry_20180823.sql b/sql/ry_20180903.sql similarity index 84% rename from sql/ry_20180823.sql rename to sql/ry_20180903.sql index f57a8ca7..1632154e 100644 --- a/sql/ry_20180823.sql +++ b/sql/ry_20180903.sql @@ -12,6 +12,7 @@ create table sys_dept ( phone varchar(11) default '' comment '联系电话', email varchar(50) default '' comment '邮箱', status char(1) default '0' comment '部门状态(0正常 1停用)', + del_flag char(1) default '0' comment '删除标志(0代表存在 2代表删除)', create_by varchar(64) default '' comment '创建者', create_time datetime comment '创建时间', update_by varchar(64) default '' comment '更新者', @@ -22,17 +23,16 @@ create table sys_dept ( -- ---------------------------- -- 初始化-部门表数据 -- ---------------------------- -insert into sys_dept values(100, 0, '0', '若依集团', 0, '若依', '15888888888', 'ry@qq.com', '0', 'admin', '2018-03-16 11-33-00', 'ry', '2018-03-16 11-33-00'); -insert into sys_dept values(101, 100, '0,100', '研发部门', 1, '若依', '15888888888', 'ry@qq.com', '0', 'admin', '2018-03-16 11-33-00', 'ry', '2018-03-16 11-33-00'); -insert into sys_dept values(102, 100, '0,100', '市场部门', 2, '若依', '15888888888', 'ry@qq.com', '0', 'admin', '2018-03-16 11-33-00', 'ry', '2018-03-16 11-33-00'); -insert into sys_dept values(103, 100, '0,100', '测试部门', 3, '若依', '15888888888', 'ry@qq.com', '0', 'admin', '2018-03-16 11-33-00', 'ry', '2018-03-16 11-33-00'); -insert into sys_dept values(104, 100, '0,100', '财务部门', 4, '若依', '15888888888', 'ry@qq.com', '0', 'admin', '2018-03-16 11-33-00', 'ry', '2018-03-16 11-33-00'); -insert into sys_dept values(105, 100, '0,100', '运维部门', 5, '若依', '15888888888', 'ry@qq.com', '0', 'admin', '2018-03-16 11-33-00', 'ry', '2018-03-16 11-33-00'); -insert into sys_dept values(106, 101, '0,100,101', '研发一部', 1, '若依', '15888888888', 'ry@qq.com', '0', 'admin', '2018-03-16 11-33-00', 'ry', '2018-03-16 11-33-00'); -insert into sys_dept values(107, 101, '0,100,101', '研发二部', 2, '若依', '15888888888', 'ry@qq.com', '0', 'admin', '2018-03-16 11-33-00', 'ry', '2018-03-16 11-33-00'); -insert into sys_dept values(108, 102, '0,100,102', '市场一部', 1, '若依', '15888888888', 'ry@qq.com', '0', 'admin', '2018-03-16 11-33-00', 'ry', '2018-03-16 11-33-00'); -insert into sys_dept values(109, 102, '0,100,102', '市场二部', 2, '若依', '15888888888', 'ry@qq.com', '1', 'admin', '2018-03-16 11-33-00', 'ry', '2018-03-16 11-33-00'); - +insert into sys_dept values(100, 0, '0', '若依科技', 0, '若依', '15888888888', 'ry@qq.com', '0', '0', 'admin', '2018-03-16 11-33-00', 'ry', '2018-03-16 11-33-00'); +insert into sys_dept values(101, 100, '0,100', '深圳总公司', 1, '若依', '15888888888', 'ry@qq.com', '0', '0', 'admin', '2018-03-16 11-33-00', 'ry', '2018-03-16 11-33-00'); +insert into sys_dept values(102, 100, '0,100', '长沙分公司', 2, '若依', '15888888888', 'ry@qq.com', '0', '0', 'admin', '2018-03-16 11-33-00', 'ry', '2018-03-16 11-33-00'); +insert into sys_dept values(103, 101, '0,100,101', '研发部门', 1, '若依', '15888888888', 'ry@qq.com', '0', '0', 'admin', '2018-03-16 11-33-00', 'ry', '2018-03-16 11-33-00'); +insert into sys_dept values(104, 101, '0,100,101', '市场部门', 2, '若依', '15888888888', 'ry@qq.com', '0', '0', 'admin', '2018-03-16 11-33-00', 'ry', '2018-03-16 11-33-00'); +insert into sys_dept values(105, 101, '0,100,101', '测试部门', 3, '若依', '15888888888', 'ry@qq.com', '0', '0', 'admin', '2018-03-16 11-33-00', 'ry', '2018-03-16 11-33-00'); +insert into sys_dept values(106, 101, '0,100,101', '财务部门', 4, '若依', '15888888888', 'ry@qq.com', '0', '0', 'admin', '2018-03-16 11-33-00', 'ry', '2018-03-16 11-33-00'); +insert into sys_dept values(107, 101, '0,100,101', '运维部门', 5, '若依', '15888888888', 'ry@qq.com', '0', '0', 'admin', '2018-03-16 11-33-00', 'ry', '2018-03-16 11-33-00'); +insert into sys_dept values(108, 102, '0,100,102', '市场部门', 1, '若依', '15888888888', 'ry@qq.com', '0', '0', 'admin', '2018-03-16 11-33-00', 'ry', '2018-03-16 11-33-00'); +insert into sys_dept values(109, 102, '0,100,102', '财务部门', 2, '若依', '15888888888', 'ry@qq.com', '0', '0', 'admin', '2018-03-16 11-33-00', 'ry', '2018-03-16 11-33-00'); -- ---------------------------- -- 2、用户信息表 @@ -65,8 +65,8 @@ create table sys_user ( -- ---------------------------- -- 初始化-用户信息表数据 -- ---------------------------- -insert into sys_user values(1, 106, 'admin', '若依', '00', 'ry@163.com', '15888888888', '1', '', '29c67a30398638269fe600f73a054934', '111111', '0', '0', '127.0.0.1', '2018-03-16 11-33-00', 'admin', '2018-03-16 11-33-00', 'ry', '2018-03-16 11-33-00', '管理员'); -insert into sys_user values(2, 108, 'ry', '若依', '00', 'ry@qq.com', '15666666666', '1', '', '8e6d98b90472783cc73c17047ddccf36', '222222', '0', '0', '127.0.0.1', '2018-03-16 11-33-00', 'admin', '2018-03-16 11-33-00', 'ry', '2018-03-16 11-33-00', '测试员'); +insert into sys_user values(1, 103, 'admin', '若依', '00', 'ry@163.com', '15888888888', '1', '', '29c67a30398638269fe600f73a054934', '111111', '0', '0', '127.0.0.1', '2018-03-16 11-33-00', 'admin', '2018-03-16 11-33-00', 'ry', '2018-03-16 11-33-00', '管理员'); +insert into sys_user values(2, 105, 'ry', '若依', '00', 'ry@qq.com', '15666666666', '1', '', '8e6d98b90472783cc73c17047ddccf36', '222222', '0', '0', '127.0.0.1', '2018-03-16 11-33-00', 'admin', '2018-03-16 11-33-00', 'ry', '2018-03-16 11-33-00', '测试员'); -- ---------------------------- @@ -106,7 +106,9 @@ create table sys_role ( role_name varchar(30) not null comment '角色名称', role_key varchar(100) not null comment '角色权限字符串', role_sort int(4) not null comment '显示顺序', + data_scope char(1) default '1' comment '数据范围(1:全部数据权限 2:自定数据权限)', status char(1) not null comment '角色状态(0正常 1停用)', + del_flag char(1) default '0' comment '删除标志(0代表存在 2代表删除)', create_by varchar(64) default '' comment '创建者', create_time datetime comment '创建时间', update_by varchar(64) default '' comment '更新者', @@ -118,8 +120,8 @@ create table sys_role ( -- ---------------------------- -- 初始化-角色信息表数据 -- ---------------------------- -insert into sys_role values('1', '管理员', 'admin', 1, '0', 'admin', '2018-03-16 11-33-00', 'ry', '2018-03-16 11-33-00', '管理员'); -insert into sys_role values('2', '普通角色', 'common', 2, '0', 'admin', '2018-03-16 11-33-00', 'ry', '2018-03-16 11-33-00', '普通角色'); +insert into sys_role values('1', '管理员', 'admin', 1, 1, '0', '0', 'admin', '2018-03-16 11-33-00', 'ry', '2018-03-16 11-33-00', '管理员'); +insert into sys_role values('2', '普通角色', 'common', 2, 2, '0', '0', 'admin', '2018-03-16 11-33-00', 'ry', '2018-03-16 11-33-00', '普通角色'); -- ---------------------------- @@ -271,86 +273,103 @@ create table sys_role_menu ( -- ---------------------------- -- 初始化-角色和菜单关联表数据 -- ---------------------------- -insert into sys_role_menu values ('1', '1'); -insert into sys_role_menu values ('1', '2'); -insert into sys_role_menu values ('1', '3'); -insert into sys_role_menu values ('1', '100'); -insert into sys_role_menu values ('1', '101'); -insert into sys_role_menu values ('1', '102'); -insert into sys_role_menu values ('1', '103'); -insert into sys_role_menu values ('1', '104'); -insert into sys_role_menu values ('1', '105'); -insert into sys_role_menu values ('1', '106'); -insert into sys_role_menu values ('1', '107'); -insert into sys_role_menu values ('1', '108'); -insert into sys_role_menu values ('1', '109'); -insert into sys_role_menu values ('1', '110'); -insert into sys_role_menu values ('1', '111'); -insert into sys_role_menu values ('1', '112'); -insert into sys_role_menu values ('1', '113'); -insert into sys_role_menu values ('1', '114'); -insert into sys_role_menu values ('1', '500'); -insert into sys_role_menu values ('1', '501'); -insert into sys_role_menu values ('1', '1000'); -insert into sys_role_menu values ('1', '1001'); -insert into sys_role_menu values ('1', '1002'); -insert into sys_role_menu values ('1', '1003'); -insert into sys_role_menu values ('1', '1004'); -insert into sys_role_menu values ('1', '1005'); -insert into sys_role_menu values ('1', '1006'); -insert into sys_role_menu values ('1', '1007'); -insert into sys_role_menu values ('1', '1008'); -insert into sys_role_menu values ('1', '1009'); -insert into sys_role_menu values ('1', '1010'); -insert into sys_role_menu values ('1', '1011'); -insert into sys_role_menu values ('1', '1012'); -insert into sys_role_menu values ('1', '1013'); -insert into sys_role_menu values ('1', '1014'); -insert into sys_role_menu values ('1', '1015'); -insert into sys_role_menu values ('1', '1016'); -insert into sys_role_menu values ('1', '1017'); -insert into sys_role_menu values ('1', '1018'); -insert into sys_role_menu values ('1', '1019'); -insert into sys_role_menu values ('1', '1020'); -insert into sys_role_menu values ('1', '1021'); -insert into sys_role_menu values ('1', '1022'); -insert into sys_role_menu values ('1', '1023'); -insert into sys_role_menu values ('1', '1024'); -insert into sys_role_menu values ('1', '1025'); -insert into sys_role_menu values ('1', '1026'); -insert into sys_role_menu values ('1', '1027'); -insert into sys_role_menu values ('1', '1028'); -insert into sys_role_menu values ('1', '1029'); -insert into sys_role_menu values ('1', '1030'); -insert into sys_role_menu values ('1', '1031'); -insert into sys_role_menu values ('1', '1032'); -insert into sys_role_menu values ('1', '1033'); -insert into sys_role_menu values ('1', '1034'); -insert into sys_role_menu values ('1', '1035'); -insert into sys_role_menu values ('1', '1036'); -insert into sys_role_menu values ('1', '1037'); -insert into sys_role_menu values ('1', '1038'); -insert into sys_role_menu values ('1', '1039'); -insert into sys_role_menu values ('1', '1040'); -insert into sys_role_menu values ('1', '1041'); -insert into sys_role_menu values ('1', '1042'); -insert into sys_role_menu values ('1', '1043'); -insert into sys_role_menu values ('1', '1044'); -insert into sys_role_menu values ('1', '1045'); -insert into sys_role_menu values ('1', '1046'); -insert into sys_role_menu values ('1', '1047'); -insert into sys_role_menu values ('1', '1048'); -insert into sys_role_menu values ('1', '1049'); -insert into sys_role_menu values ('1', '1050'); -insert into sys_role_menu values ('1', '1051'); -insert into sys_role_menu values ('1', '1052'); -insert into sys_role_menu values ('1', '1053'); -insert into sys_role_menu values ('1', '1054'); -insert into sys_role_menu values ('1', '1055'); - - --- ---------------------------- --- 8、用户与岗位关联表 用户1-N岗位 +insert into sys_role_menu values ('2', '1'); +insert into sys_role_menu values ('2', '2'); +insert into sys_role_menu values ('2', '3'); +insert into sys_role_menu values ('2', '100'); +insert into sys_role_menu values ('2', '101'); +insert into sys_role_menu values ('2', '102'); +insert into sys_role_menu values ('2', '103'); +insert into sys_role_menu values ('2', '104'); +insert into sys_role_menu values ('2', '105'); +insert into sys_role_menu values ('2', '106'); +insert into sys_role_menu values ('2', '107'); +insert into sys_role_menu values ('2', '108'); +insert into sys_role_menu values ('2', '109'); +insert into sys_role_menu values ('2', '110'); +insert into sys_role_menu values ('2', '111'); +insert into sys_role_menu values ('2', '112'); +insert into sys_role_menu values ('2', '113'); +insert into sys_role_menu values ('2', '114'); +insert into sys_role_menu values ('2', '500'); +insert into sys_role_menu values ('2', '501'); +insert into sys_role_menu values ('2', '1000'); +insert into sys_role_menu values ('2', '1001'); +insert into sys_role_menu values ('2', '1002'); +insert into sys_role_menu values ('2', '1003'); +insert into sys_role_menu values ('2', '1004'); +insert into sys_role_menu values ('2', '1005'); +insert into sys_role_menu values ('2', '1006'); +insert into sys_role_menu values ('2', '1007'); +insert into sys_role_menu values ('2', '1008'); +insert into sys_role_menu values ('2', '1009'); +insert into sys_role_menu values ('2', '1010'); +insert into sys_role_menu values ('2', '1011'); +insert into sys_role_menu values ('2', '1012'); +insert into sys_role_menu values ('2', '1013'); +insert into sys_role_menu values ('2', '1014'); +insert into sys_role_menu values ('2', '1015'); +insert into sys_role_menu values ('2', '1016'); +insert into sys_role_menu values ('2', '1017'); +insert into sys_role_menu values ('2', '1018'); +insert into sys_role_menu values ('2', '1019'); +insert into sys_role_menu values ('2', '1020'); +insert into sys_role_menu values ('2', '1021'); +insert into sys_role_menu values ('2', '1022'); +insert into sys_role_menu values ('2', '1023'); +insert into sys_role_menu values ('2', '1024'); +insert into sys_role_menu values ('2', '1025'); +insert into sys_role_menu values ('2', '1026'); +insert into sys_role_menu values ('2', '1027'); +insert into sys_role_menu values ('2', '1028'); +insert into sys_role_menu values ('2', '1029'); +insert into sys_role_menu values ('2', '1030'); +insert into sys_role_menu values ('2', '1031'); +insert into sys_role_menu values ('2', '1032'); +insert into sys_role_menu values ('2', '1033'); +insert into sys_role_menu values ('2', '1034'); +insert into sys_role_menu values ('2', '1035'); +insert into sys_role_menu values ('2', '1036'); +insert into sys_role_menu values ('2', '1037'); +insert into sys_role_menu values ('2', '1038'); +insert into sys_role_menu values ('2', '1039'); +insert into sys_role_menu values ('2', '1040'); +insert into sys_role_menu values ('2', '1041'); +insert into sys_role_menu values ('2', '1042'); +insert into sys_role_menu values ('2', '1043'); +insert into sys_role_menu values ('2', '1044'); +insert into sys_role_menu values ('2', '1045'); +insert into sys_role_menu values ('2', '1046'); +insert into sys_role_menu values ('2', '1047'); +insert into sys_role_menu values ('2', '1048'); +insert into sys_role_menu values ('2', '1049'); +insert into sys_role_menu values ('2', '1050'); +insert into sys_role_menu values ('2', '1051'); +insert into sys_role_menu values ('2', '1052'); +insert into sys_role_menu values ('2', '1053'); +insert into sys_role_menu values ('2', '1054'); +insert into sys_role_menu values ('2', '1055'); + + +-- ---------------------------- +-- 8、角色和部门关联表 角色1-N部门 +-- ---------------------------- +drop table if exists sys_role_dept; +create table sys_role_dept ( + role_id int(11) not null comment '角色ID', + dept_id int(11) not null comment '部门ID', + primary key(role_id, dept_id) +) engine=innodb default charset=utf8 comment = '角色和部门关联表'; + +-- ---------------------------- +-- 初始化-角色和部门关联表数据 +-- ---------------------------- +insert into sys_role_dept values ('2', '100'); +insert into sys_role_dept values ('2', '101'); +insert into sys_role_dept values ('2', '105'); + +-- ---------------------------- +-- 9、用户与岗位关联表 用户1-N岗位 -- ---------------------------- drop table if exists sys_user_post; create table sys_user_post @@ -368,7 +387,7 @@ insert into sys_user_post values ('2', '2'); -- ---------------------------- --- 9、操作日志记录 +-- 10、操作日志记录 -- ---------------------------- drop table if exists sys_oper_log; create table sys_oper_log ( @@ -391,7 +410,7 @@ create table sys_oper_log ( -- ---------------------------- --- 10、字典类型表 +-- 11、字典类型表 -- ---------------------------- drop table if exists sys_dict_type; create table sys_dict_type @@ -421,7 +440,7 @@ insert into sys_dict_type values(9, '系统状态', 'sys_common_status', '0', -- ---------------------------- --- 11、字典数据表 +-- 12、字典数据表 -- ---------------------------- drop table if exists sys_dict_data; create table sys_dict_data @@ -472,7 +491,7 @@ insert into sys_dict_data values(25, 2, '失败', '1', 'sys_common_status' -- ---------------------------- --- 12、参数配置表 +-- 13、参数配置表 -- ---------------------------- drop table if exists sys_config; create table sys_config ( @@ -494,7 +513,7 @@ insert into sys_config values(2, '用户管理-账号初始密码', 'sys.use -- ---------------------------- --- 13、系统访问记录 +-- 14、系统访问记录 -- ---------------------------- drop table if exists sys_logininfor; create table sys_logininfor ( @@ -512,7 +531,7 @@ create table sys_logininfor ( -- ---------------------------- --- 14、在线用户记录 +-- 15、在线用户记录 -- ---------------------------- drop table if exists sys_user_online; create table sys_user_online ( @@ -532,7 +551,7 @@ create table sys_user_online ( -- ---------------------------- --- 15、定时任务调度表 +-- 16、定时任务调度表 -- ---------------------------- drop table if exists sys_job; create table sys_job ( @@ -557,7 +576,7 @@ insert into sys_job values(2, 'ryTask', '系统默认(有参)', 'ryParams', -- ---------------------------- --- 16、定时任务调度日志表 +-- 17、定时任务调度日志表 -- ---------------------------- drop table if exists sys_job_log; create table sys_job_log ( @@ -575,7 +594,7 @@ create table sys_job_log ( -- ---------------------------- --- 17、通知公告表 +-- 18、通知公告表 -- ---------------------------- drop table if exists sys_notice; create table sys_notice ( diff --git a/src/main/java/com/ruoyi/common/exception/user/UserDeleteException.java b/src/main/java/com/ruoyi/common/exception/user/UserDeleteException.java new file mode 100644 index 00000000..4421db7e --- /dev/null +++ b/src/main/java/com/ruoyi/common/exception/user/UserDeleteException.java @@ -0,0 +1,17 @@ +package com.ruoyi.common.exception.user; + +/** + * 用户账号已被删除 + * + * @author ruoyi + */ +public class UserDeleteException extends UserException +{ + + private static final long serialVersionUID = 1L; + + public UserDeleteException() + { + super("user.password.delete", null); + } +} diff --git a/src/main/java/com/ruoyi/framework/aspectj/LogAspect.java b/src/main/java/com/ruoyi/framework/aspectj/LogAspect.java index 677f40b9..d5de1a9e 100644 --- a/src/main/java/com/ruoyi/framework/aspectj/LogAspect.java +++ b/src/main/java/com/ruoyi/framework/aspectj/LogAspect.java @@ -11,8 +11,6 @@ import org.aspectj.lang.annotation.Pointcut; import org.aspectj.lang.reflect.MethodSignature; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import org.springframework.scheduling.annotation.Async; -import org.springframework.scheduling.annotation.EnableAsync; import org.springframework.stereotype.Component; import com.alibaba.fastjson.JSONObject; import com.ruoyi.common.utils.ServletUtils; @@ -32,7 +30,6 @@ import com.ruoyi.project.system.user.domain.User; */ @Aspect @Component -@EnableAsync public class LogAspect { private static final Logger log = LoggerFactory.getLogger(LogAspect.class); @@ -66,7 +63,6 @@ public class LogAspect handleLog(joinPoint, e); } - @Async protected void handleLog(final JoinPoint joinPoint, final Exception e) { try diff --git a/src/main/java/com/ruoyi/framework/datascope/DataScopeUtils.java b/src/main/java/com/ruoyi/framework/datascope/DataScopeUtils.java new file mode 100644 index 00000000..5165b485 --- /dev/null +++ b/src/main/java/com/ruoyi/framework/datascope/DataScopeUtils.java @@ -0,0 +1,72 @@ +package com.ruoyi.framework.datascope; + +import com.ruoyi.common.utils.StringUtils; +import com.ruoyi.common.utils.security.ShiroUtils; +import com.ruoyi.project.system.role.domain.Role; +import com.ruoyi.project.system.user.domain.User; + +/** + * 数据范围处理 + * + * @author ruoyi + */ +public class DataScopeUtils +{ + /** + * 全部数据权限 + */ + public static final String DATA_SCOPE_ALL = "1"; + + /** + * 自定数据权限 + */ + public static final String DATA_SCOPE_CUSTOM = "2"; + + /** + * 数据范围过滤 + * + * @return 标准连接条件对象 + */ + public static String dataScopeFilter() + { + return dataScopeFilter("u"); + } + + /** + * 数据范围过滤 + * + * @param da 部门表别名 + * @return 标准连接条件对象 + */ + public static String dataScopeFilter(String da) + { + User user = ShiroUtils.getUser(); + // 如果是超级管理员,则不过滤数据 + if (user.isAdmin()) + { + return StringUtils.EMPTY; + } + + StringBuilder sqlString = new StringBuilder(); + + for (Role role : user.getRoles()) + { + String dataScope = role.getDataScope(); + if (DATA_SCOPE_ALL.equals(dataScope)) + { + sqlString = new StringBuilder(); + break; + } + else if (DATA_SCOPE_CUSTOM.equals(dataScope)) + { + sqlString.append(StringUtils.format(" OR {}.dept_id IN ( SELECT dept_id FROM sys_role_dept WHERE role_id = {} ) ", da, role.getRoleId())); + } + } + + if (StringUtils.isNotBlank(sqlString.toString())) + { + return " AND (" + sqlString.substring(4) + ")"; + } + return StringUtils.EMPTY; + } +} diff --git a/src/main/java/com/ruoyi/framework/shiro/realm/UserRealm.java b/src/main/java/com/ruoyi/framework/shiro/realm/UserRealm.java index 915ab986..7e367ab2 100644 --- a/src/main/java/com/ruoyi/framework/shiro/realm/UserRealm.java +++ b/src/main/java/com/ruoyi/framework/shiro/realm/UserRealm.java @@ -1,5 +1,8 @@ package com.ruoyi.framework.shiro.realm; +import java.util.HashSet; +import java.util.Set; + import org.apache.shiro.SecurityUtils; import org.apache.shiro.authc.AuthenticationException; import org.apache.shiro.authc.AuthenticationInfo; @@ -17,6 +20,7 @@ import org.apache.shiro.subject.PrincipalCollection; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; + import com.ruoyi.common.exception.user.CaptchaException; import com.ruoyi.common.exception.user.RoleBlockedException; import com.ruoyi.common.exception.user.UserBlockedException; @@ -53,12 +57,27 @@ public class UserRealm extends AuthorizingRealm @Override protected AuthorizationInfo doGetAuthorizationInfo(PrincipalCollection arg0) { - Long userId = ShiroUtils.getUserId(); + User user = ShiroUtils.getUser(); + // 角色列表 + Set roles = new HashSet(); + // 功能列表 + Set menus = new HashSet(); SimpleAuthorizationInfo info = new SimpleAuthorizationInfo(); - // 角色加入AuthorizationInfo认证对象 - info.setRoles(roleService.selectRoleKeys(userId)); - // 权限加入AuthorizationInfo认证对象 - info.setStringPermissions(menuService.selectPermsByUserId(userId)); + // 管理员拥有所有权限 + if (user.isAdmin()) + { + info.addRole("admin"); + info.addStringPermission("*:*:*"); + } + else + { + roles = roleService.selectRoleKeys(user.getUserId()); + menus = menuService.selectPermsByUserId(user.getUserId()); + // 角色加入AuthorizationInfo认证对象 + info.setRoles(roles); + // 权限加入AuthorizationInfo认证对象 + info.setStringPermissions(menus); + } return info; } diff --git a/src/main/java/com/ruoyi/framework/shiro/service/LoginService.java b/src/main/java/com/ruoyi/framework/shiro/service/LoginService.java index 0151562e..ec987dd8 100644 --- a/src/main/java/com/ruoyi/framework/shiro/service/LoginService.java +++ b/src/main/java/com/ruoyi/framework/shiro/service/LoginService.java @@ -8,6 +8,7 @@ import com.ruoyi.common.constant.ShiroConstants; import com.ruoyi.common.constant.UserConstants; import com.ruoyi.common.exception.user.CaptchaException; import com.ruoyi.common.exception.user.UserBlockedException; +import com.ruoyi.common.exception.user.UserDeleteException; import com.ruoyi.common.exception.user.UserNotExistsException; import com.ruoyi.common.exception.user.UserPasswordNotMatchException; import com.ruoyi.common.utils.DateUtils; @@ -80,19 +81,26 @@ public class LoginService user = userService.selectUserByEmail(username); } - if (user == null || UserStatus.DELETED.getCode().equals(user.getDelFlag())) + if (user == null) { AsyncManager.me().execute(AsyncFactory.recordLogininfor(username, Constants.LOGIN_FAIL, MessageUtils.message("user.not.exists"))); throw new UserNotExistsException(); } - - passwordService.validate(user, password); - + + if (UserStatus.DELETED.getCode().equals(user.getDelFlag())) + { + AsyncManager.me().execute(AsyncFactory.recordLogininfor(username, Constants.LOGIN_FAIL, MessageUtils.message("user.password.delete"))); + throw new UserDeleteException(); + } + if (UserStatus.DISABLE.getCode().equals(user.getStatus())) { AsyncManager.me().execute(AsyncFactory.recordLogininfor(username, Constants.LOGIN_FAIL, MessageUtils.message("user.blocked", user.getRemark()))); throw new UserBlockedException(user.getRemark()); } + + passwordService.validate(user, password); + AsyncManager.me().execute(AsyncFactory.recordLogininfor(username, Constants.LOGIN_SUCCESS, MessageUtils.message("user.login.success"))); recordLoginInfo(user); return user; diff --git a/src/main/java/com/ruoyi/framework/web/domain/BaseEntity.java b/src/main/java/com/ruoyi/framework/web/domain/BaseEntity.java index 01d2925c..23984202 100644 --- a/src/main/java/com/ruoyi/framework/web/domain/BaseEntity.java +++ b/src/main/java/com/ruoyi/framework/web/domain/BaseEntity.java @@ -111,4 +111,4 @@ public class BaseEntity implements Serializable { this.params = params; } -} \ No newline at end of file +} diff --git a/src/main/java/com/ruoyi/project/system/config/domain/Config.java b/src/main/java/com/ruoyi/project/system/config/domain/Config.java index 219b3c79..c9729dc1 100644 --- a/src/main/java/com/ruoyi/project/system/config/domain/Config.java +++ b/src/main/java/com/ruoyi/project/system/config/domain/Config.java @@ -82,6 +82,7 @@ public class Config extends BaseEntity this.configType = configType; } + @Override public String toString() { return "Config [configId=" + configId + ", configName=" + configName + ", configKey=" + configKey diff --git a/src/main/java/com/ruoyi/project/system/dept/controller/DeptController.java b/src/main/java/com/ruoyi/project/system/dept/controller/DeptController.java index 4edbde52..54c99ddd 100644 --- a/src/main/java/com/ruoyi/project/system/dept/controller/DeptController.java +++ b/src/main/java/com/ruoyi/project/system/dept/controller/DeptController.java @@ -2,6 +2,7 @@ package com.ruoyi.project.system.dept.controller; import java.util.List; import java.util.Map; + import org.apache.shiro.authz.annotation.RequiresPermissions; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; @@ -11,12 +12,14 @@ import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.ResponseBody; + import com.ruoyi.framework.aspectj.lang.annotation.Log; import com.ruoyi.framework.aspectj.lang.enums.BusinessType; import com.ruoyi.framework.web.controller.BaseController; import com.ruoyi.framework.web.domain.AjaxResult; import com.ruoyi.project.system.dept.domain.Dept; import com.ruoyi.project.system.dept.service.IDeptService; +import com.ruoyi.project.system.role.domain.Role; /** * 部门信息 @@ -142,4 +145,15 @@ public class DeptController extends BaseController List> tree = deptService.selectDeptTree(); return tree; } + + /** + * 加载角色部门(数据权限)列表树 + */ + @GetMapping("/roleDeptTreeData") + @ResponseBody + public List> deptTreeData(Role role) + { + List> tree = deptService.roleDeptTreeData(role); + return tree; + } } diff --git a/src/main/java/com/ruoyi/project/system/dept/domain/Dept.java b/src/main/java/com/ruoyi/project/system/dept/domain/Dept.java index 26e74735..6e5afa5c 100644 --- a/src/main/java/com/ruoyi/project/system/dept/domain/Dept.java +++ b/src/main/java/com/ruoyi/project/system/dept/domain/Dept.java @@ -10,24 +10,36 @@ import com.ruoyi.framework.web.domain.BaseEntity; public class Dept extends BaseEntity { private static final long serialVersionUID = 1L; + /** 部门ID */ private Long deptId; + /** 父部门ID */ private Long parentId; + /** 祖级列表 */ private String ancestors; + /** 部门名称 */ private String deptName; + /** 显示顺序 */ private String orderNum; + /** 负责人 */ private String leader; + /** 联系电话 */ private String phone; /** 邮箱 */ private String email; + /** 部门状态:0正常,1停用 */ private String status; + + /** 删除标志(0代表存在 2代表删除) */ + private String delFlag; + /** 父部门名称 */ private String parentName; @@ -121,6 +133,16 @@ public class Dept extends BaseEntity this.status = status; } + public String getDelFlag() + { + return delFlag; + } + + public void setDelFlag(String delFlag) + { + this.delFlag = delFlag; + } + public String getParentName() { return parentName; diff --git a/src/main/java/com/ruoyi/project/system/dept/mapper/DeptMapper.java b/src/main/java/com/ruoyi/project/system/dept/mapper/DeptMapper.java index cd59dde4..ad1c80c1 100644 --- a/src/main/java/com/ruoyi/project/system/dept/mapper/DeptMapper.java +++ b/src/main/java/com/ruoyi/project/system/dept/mapper/DeptMapper.java @@ -35,13 +35,6 @@ public interface DeptMapper */ public List selectDeptList(Dept dept); - /** - * 查询部门所有数据 - * - * @return 部门信息集合 - */ - public List selectDeptAll(); - /** * 删除部门管理信息 * @@ -86,7 +79,16 @@ public interface DeptMapper * 校验部门名称是否唯一 * * @param deptName 部门名称 + * @param parentId 父部门ID * @return 结果 */ - public Dept checkDeptNameUnique(String deptName); + public Dept checkDeptNameUnique(@Param("deptName") String deptName, @Param("parentId") Long parentId); + + /** + * 根据角色ID查询部门 + * + * @param roleId 角色ID + * @return 部门列表 + */ + public List selectRoleDeptTree(Long roleId); } diff --git a/src/main/java/com/ruoyi/project/system/dept/service/DeptServiceImpl.java b/src/main/java/com/ruoyi/project/system/dept/service/DeptServiceImpl.java index dba4b775..033b31f7 100644 --- a/src/main/java/com/ruoyi/project/system/dept/service/DeptServiceImpl.java +++ b/src/main/java/com/ruoyi/project/system/dept/service/DeptServiceImpl.java @@ -9,8 +9,10 @@ import org.springframework.stereotype.Service; import com.ruoyi.common.constant.UserConstants; import com.ruoyi.common.utils.StringUtils; import com.ruoyi.common.utils.security.ShiroUtils; +import com.ruoyi.framework.datascope.DataScopeUtils; import com.ruoyi.project.system.dept.domain.Dept; import com.ruoyi.project.system.dept.mapper.DeptMapper; +import com.ruoyi.project.system.role.domain.Role; /** * 部门管理 服务实现 @@ -31,31 +33,60 @@ public class DeptServiceImpl implements IDeptService @Override public List selectDeptList(Dept dept) { + dept.getParams().put("dataScope", DataScopeUtils.dataScopeFilter("d")); return deptMapper.selectDeptList(dept); } /** - * 查询部门所有数据 + * 查询部门管理树 * - * @return 部门信息集合 + * @return 所有部门信息 */ @Override - public List selectDeptAll() + public List> selectDeptTree() { - return deptMapper.selectDeptAll(); + List> trees = new ArrayList>(); + List deptList = selectDeptList(new Dept()); + trees = getTrees(deptList, false, null); + return trees; } /** - * 查询部门管理树 - * - * @return 所有部门信息 + * 根据角色ID查询部门(数据权限) + * + * @param role 角色对象 + * @return 部门列表(数据权限) */ @Override - public List> selectDeptTree() + public List> roleDeptTreeData(Role role) { + Long roleId = role.getRoleId(); List> trees = new ArrayList>(); - List deptList = deptMapper.selectDeptAll(); + List deptList = selectDeptList(new Dept()); + if (StringUtils.isNotNull(roleId)) + { + List roleDeptList = deptMapper.selectRoleDeptTree(roleId); + trees = getTrees(deptList, true, roleDeptList); + } + else + { + trees = getTrees(deptList, false, null); + } + return trees; + } + /** + * 对象转部门树 + * + * @param menuList 部门列表 + * @param isCheck 是否需要选中 + * @param roleDeptList 角色已存在菜单列表 + * @return + */ + public List> getTrees(List deptList, boolean isCheck, List roleDeptList) + { + + List> trees = new ArrayList>(); for (Dept dept : deptList) { if (UserConstants.DEPT_NORMAL.equals(dept.getStatus())) @@ -65,6 +96,14 @@ public class DeptServiceImpl implements IDeptService deptMap.put("pId", dept.getParentId()); deptMap.put("name", dept.getDeptName()); deptMap.put("title", dept.getDeptName()); + if (isCheck) + { + deptMap.put("checked", roleDeptList.contains(dept.getDeptId() + dept.getDeptName())); + } + else + { + deptMap.put("checked", false); + } trees.add(deptMap); } } @@ -185,7 +224,7 @@ public class DeptServiceImpl implements IDeptService public String checkDeptNameUnique(Dept dept) { Long deptId = StringUtils.isNull(dept.getDeptId()) ? -1L : dept.getDeptId(); - Dept info = deptMapper.checkDeptNameUnique(dept.getDeptName()); + Dept info = deptMapper.checkDeptNameUnique(dept.getDeptName(), dept.getParentId()); if (StringUtils.isNotNull(info) && info.getDeptId().longValue() != deptId.longValue()) { return UserConstants.DEPT_NAME_NOT_UNIQUE; diff --git a/src/main/java/com/ruoyi/project/system/dept/service/IDeptService.java b/src/main/java/com/ruoyi/project/system/dept/service/IDeptService.java index 8ed1145d..42eb1503 100644 --- a/src/main/java/com/ruoyi/project/system/dept/service/IDeptService.java +++ b/src/main/java/com/ruoyi/project/system/dept/service/IDeptService.java @@ -2,7 +2,9 @@ package com.ruoyi.project.system.dept.service; import java.util.List; import java.util.Map; + import com.ruoyi.project.system.dept.domain.Dept; +import com.ruoyi.project.system.role.domain.Role; /** * 部门管理 服务层 @@ -19,13 +21,6 @@ public interface IDeptService */ public List selectDeptList(Dept dept); - /** - * 查询部门所有数据 - * - * @return 部门信息集合 - */ - public List selectDeptAll(); - /** * 查询部门管理树 * @@ -33,6 +28,14 @@ public interface IDeptService */ public List> selectDeptTree(); + /** + * 根据角色ID查询菜单 + * + * @param role 角色对象 + * @return 菜单列表 + */ + public List> roleDeptTreeData(Role role); + /** * 查询部门人数 * diff --git a/src/main/java/com/ruoyi/project/system/menu/mapper/MenuMapper.java b/src/main/java/com/ruoyi/project/system/menu/mapper/MenuMapper.java index 5e674025..00be8986 100644 --- a/src/main/java/com/ruoyi/project/system/menu/mapper/MenuMapper.java +++ b/src/main/java/com/ruoyi/project/system/menu/mapper/MenuMapper.java @@ -1,6 +1,7 @@ package com.ruoyi.project.system.menu.mapper; import java.util.List; +import org.apache.ibatis.annotations.Param; import com.ruoyi.project.system.menu.domain.Menu; /** @@ -11,6 +12,20 @@ import com.ruoyi.project.system.menu.domain.Menu; public interface MenuMapper { + /** + * 查询系统所有菜单(含按钮) + * + * @return 菜单列表 + */ + public List selectMenuAll(); + + /** + * 查询系统正常显示菜单(不含按钮) + * + * @return 菜单列表 + */ + public List selectMenuNormalAll(); + /** * 根据用户ID查询菜单 * @@ -43,13 +58,6 @@ public interface MenuMapper */ public List selectMenuList(Menu menu); - /** - * 查询系统所有菜单 - * - * @return 菜单列表 - */ - public List selectMenuAll(); - /** * 删除菜单管理信息 * @@ -94,8 +102,9 @@ public interface MenuMapper * 校验菜单名称是否唯一 * * @param menuName 菜单名称 + * @param parentId 父菜单ID * @return 结果 */ - public Menu checkMenuNameUnique(String menuName); + public Menu checkMenuNameUnique(@Param("menuName") String menuName, @Param("parentId") Long parentId); } diff --git a/src/main/java/com/ruoyi/project/system/menu/service/IMenuService.java b/src/main/java/com/ruoyi/project/system/menu/service/IMenuService.java index 95c6a3b3..7e9fdc7e 100644 --- a/src/main/java/com/ruoyi/project/system/menu/service/IMenuService.java +++ b/src/main/java/com/ruoyi/project/system/menu/service/IMenuService.java @@ -5,6 +5,7 @@ import java.util.Map; import java.util.Set; import com.ruoyi.project.system.menu.domain.Menu; import com.ruoyi.project.system.role.domain.Role; +import com.ruoyi.project.system.user.domain.User; /** * 菜单 业务层 @@ -17,10 +18,10 @@ public interface IMenuService /** * 根据用户ID查询菜单 * - * @param userId 用户ID + * @param user 用户信息 * @return 菜单列表 */ - public List selectMenusByUserId(Long userId); + public List selectMenusByUser(User user); /** * 查询系统菜单列表 diff --git a/src/main/java/com/ruoyi/project/system/menu/service/MenuServiceImpl.java b/src/main/java/com/ruoyi/project/system/menu/service/MenuServiceImpl.java index c92a188a..7459bdd1 100644 --- a/src/main/java/com/ruoyi/project/system/menu/service/MenuServiceImpl.java +++ b/src/main/java/com/ruoyi/project/system/menu/service/MenuServiceImpl.java @@ -6,6 +6,7 @@ import java.util.Arrays; import java.util.HashMap; import java.util.HashSet; import java.util.LinkedHashMap; +import java.util.LinkedList; import java.util.List; import java.util.Map; import java.util.Set; @@ -19,6 +20,7 @@ import com.ruoyi.project.system.menu.domain.Menu; import com.ruoyi.project.system.menu.mapper.MenuMapper; import com.ruoyi.project.system.role.domain.Role; import com.ruoyi.project.system.role.mapper.RoleMenuMapper; +import com.ruoyi.project.system.user.domain.User; /** * 菜单 业务层处理 @@ -37,15 +39,24 @@ public class MenuServiceImpl implements IMenuService private RoleMenuMapper roleMenuMapper; /** - * 根据用户ID查询菜单 + * 根据用户查询菜单 * - * @param userId 用户ID + * @param userId 用户信息 * @return 菜单列表 */ @Override - public List selectMenusByUserId(Long userId) + public List selectMenusByUser(User user) { - List menus = menuMapper.selectMenusByUserId(userId); + List menus = new LinkedList(); + // 管理员显示所有菜单信息 + if (user.isAdmin()) + { + menus = menuMapper.selectMenuNormalAll(); + } + else + { + menus = menuMapper.selectMenusByUserId(user.getUserId()); + } return TreeUtils.getChildPerms(menus, 0); } @@ -281,7 +292,7 @@ public class MenuServiceImpl implements IMenuService public String checkMenuNameUnique(Menu menu) { Long menuId = StringUtils.isNull(menu.getMenuId()) ? -1L : menu.getMenuId(); - Menu info = menuMapper.checkMenuNameUnique(menu.getMenuName()); + Menu info = menuMapper.checkMenuNameUnique(menu.getMenuName(), menu.getParentId()); if (StringUtils.isNotNull(info) && info.getMenuId().longValue() != menuId.longValue()) { return UserConstants.MENU_NAME_NOT_UNIQUE; diff --git a/src/main/java/com/ruoyi/project/system/role/controller/RoleController.java b/src/main/java/com/ruoyi/project/system/role/controller/RoleController.java index d77969e7..3cdc0655 100644 --- a/src/main/java/com/ruoyi/project/system/role/controller/RoleController.java +++ b/src/main/java/com/ruoyi/project/system/role/controller/RoleController.java @@ -116,6 +116,29 @@ public class RoleController extends BaseController return toAjax(roleService.updateRole(role)); } + /** + * 新增数据权限 + */ + @GetMapping("/rule/{roleId}") + public String rule(@PathVariable("roleId") Long roleId, ModelMap mmap) + { + mmap.put("role", roleService.selectRoleById(roleId)); + return prefix + "/rule"; + } + + /** + * 修改保存数据权限 + */ + @RequiresPermissions("system:role:edit") + @Log(title = "角色管理", businessType = BusinessType.UPDATE) + @PostMapping("/rule") + @Transactional(rollbackFor = Exception.class) + @ResponseBody + public AjaxResult ruleSave(Role role) + { + return toAjax(roleService.updateRule(role)); + } + @RequiresPermissions("system:role:remove") @Log(title = "角色管理", businessType = BusinessType.DELETE) @PostMapping("/remove") @@ -141,7 +164,7 @@ public class RoleController extends BaseController { return roleService.checkRoleNameUnique(role); } - + /** * 校验角色权限 */ diff --git a/src/main/java/com/ruoyi/project/system/role/domain/Role.java b/src/main/java/com/ruoyi/project/system/role/domain/Role.java index db6870db..d8f0c5ef 100644 --- a/src/main/java/com/ruoyi/project/system/role/domain/Role.java +++ b/src/main/java/com/ruoyi/project/system/role/domain/Role.java @@ -29,15 +29,26 @@ public class Role extends BaseEntity @Excel(name = "角色排序") private String roleSort; + /** 数据范围(1:所有数据权限;2:自定数据权限) */ + @Excel(name = "数据范围") + private String dataScope; + /** 角色状态(0正常 1停用) */ @Excel(name = "角色状态") private String status; + /** 删除标志(0代表存在 2代表删除) */ + private String delFlag; + /** 用户是否存在此角色标识 默认不存在 */ private boolean flag = false; + /** 菜单组 */ private Long[] menuIds; + /** 部门组(数据权限) */ + private Long[] deptIds; + public Long getRoleId() { return roleId; @@ -48,6 +59,16 @@ public class Role extends BaseEntity this.roleId = roleId; } + public String getDataScope() + { + return dataScope; + } + + public void setDataScope(String dataScope) + { + this.dataScope = dataScope; + } + public String getRoleName() { return roleName; @@ -83,6 +104,16 @@ public class Role extends BaseEntity return status; } + public String getDelFlag() + { + return delFlag; + } + + public void setDelFlag(String delFlag) + { + this.delFlag = delFlag; + } + public void setStatus(String status) { this.status = status; @@ -108,11 +139,22 @@ public class Role extends BaseEntity this.menuIds = menuIds; } + public Long[] getDeptIds() + { + return deptIds; + } + + public void setDeptIds(Long[] deptIds) + { + this.deptIds = deptIds; + } + @Override public String toString() { return "Role [roleId=" + roleId + ", roleName=" + roleName + ", roleKey=" + roleKey + ", roleSort=" + roleSort - + ", status=" + status + ", flag=" + flag + ", menuIds=" + Arrays.toString(menuIds) + "]"; + + ", dataScope=" + dataScope + ", status=" + status + ", flag=" + flag + ", menuIds=" + + Arrays.toString(menuIds) + ", deptIds=" + Arrays.toString(deptIds) + "]"; } } diff --git a/src/main/java/com/ruoyi/project/system/role/domain/RoleDept.java b/src/main/java/com/ruoyi/project/system/role/domain/RoleDept.java new file mode 100644 index 00000000..b98776b3 --- /dev/null +++ b/src/main/java/com/ruoyi/project/system/role/domain/RoleDept.java @@ -0,0 +1,40 @@ +package com.ruoyi.project.system.role.domain; + +/** + * 角色和部门关联 sys_role_dept + * + * @author ruoyi + */ +public class RoleDept +{ + /** 角色ID */ + private Long roleId; + /** 部门ID */ + private Long deptId; + + public Long getRoleId() + { + return roleId; + } + + public void setRoleId(Long roleId) + { + this.roleId = roleId; + } + + public Long getDeptId() + { + return deptId; + } + + public void setDeptId(Long deptId) + { + this.deptId = deptId; + } + + @Override + public String toString() + { + return "RoleDept [roleId=" + roleId + ", deptId=" + deptId + "]"; + } +} diff --git a/src/main/java/com/ruoyi/project/system/role/mapper/RoleDeptMapper.java b/src/main/java/com/ruoyi/project/system/role/mapper/RoleDeptMapper.java new file mode 100644 index 00000000..bed46b5e --- /dev/null +++ b/src/main/java/com/ruoyi/project/system/role/mapper/RoleDeptMapper.java @@ -0,0 +1,46 @@ +package com.ruoyi.project.system.role.mapper; + +import java.util.List; +import com.ruoyi.project.system.role.domain.RoleDept; + +/** + * 角色与部门关联表 数据层 + * + * @author ruoyi + */ +public interface RoleDeptMapper +{ + + /** + * 通过角色ID删除角色和部门关联 + * + * @param roleId 角色ID + * @return 结果 + */ + public int deleteRoleDeptByRoleId(Long roleId); + + /** + * 批量删除角色部门关联信息 + * + * @param ids 需要删除的数据ID + * @return 结果 + */ + public int deleteRoleDept(Long[] ids); + + /** + * 查询部门使用数量 + * + * @param deptId 部门ID + * @return 结果 + */ + public int selectCountRoleDeptByDeptId(Long deptId); + + /** + * 批量新增角色部门信息 + * + * @param roleDeptList 角色部门列表 + * @return 结果 + */ + public int batchRoleDept(List roleDeptList); + +} diff --git a/src/main/java/com/ruoyi/project/system/role/mapper/RoleMapper.java b/src/main/java/com/ruoyi/project/system/role/mapper/RoleMapper.java index eba5aa90..4cc83809 100644 --- a/src/main/java/com/ruoyi/project/system/role/mapper/RoleMapper.java +++ b/src/main/java/com/ruoyi/project/system/role/mapper/RoleMapper.java @@ -27,13 +27,6 @@ public interface RoleMapper */ public List selectRolesByUserId(Long userId); - /** - * 查询角色列表 - * - * @return 角色列表 - */ - public List selectRolesAll(); - /** * 通过角色ID查询角色 * diff --git a/src/main/java/com/ruoyi/project/system/role/service/IRoleService.java b/src/main/java/com/ruoyi/project/system/role/service/IRoleService.java index d522e9db..422607f6 100644 --- a/src/main/java/com/ruoyi/project/system/role/service/IRoleService.java +++ b/src/main/java/com/ruoyi/project/system/role/service/IRoleService.java @@ -83,6 +83,14 @@ public interface IRoleService * @return 结果 */ public int updateRole(Role role); + + /** + * 修改数据权限信息 + * + * @param role 角色信息 + * @return 结果 + */ + public int updateRule(Role role); /** * 校验角色名称是否唯一 diff --git a/src/main/java/com/ruoyi/project/system/role/service/RoleServiceImpl.java b/src/main/java/com/ruoyi/project/system/role/service/RoleServiceImpl.java index 5b8cebf3..fce6ede2 100644 --- a/src/main/java/com/ruoyi/project/system/role/service/RoleServiceImpl.java +++ b/src/main/java/com/ruoyi/project/system/role/service/RoleServiceImpl.java @@ -11,8 +11,11 @@ import com.ruoyi.common.constant.UserConstants; import com.ruoyi.common.support.Convert; import com.ruoyi.common.utils.StringUtils; import com.ruoyi.common.utils.security.ShiroUtils; +import com.ruoyi.framework.datascope.DataScopeUtils; import com.ruoyi.project.system.role.domain.Role; +import com.ruoyi.project.system.role.domain.RoleDept; import com.ruoyi.project.system.role.domain.RoleMenu; +import com.ruoyi.project.system.role.mapper.RoleDeptMapper; import com.ruoyi.project.system.role.mapper.RoleMapper; import com.ruoyi.project.system.role.mapper.RoleMenuMapper; import com.ruoyi.project.system.user.mapper.UserRoleMapper; @@ -35,6 +38,9 @@ public class RoleServiceImpl implements IRoleService @Autowired private UserRoleMapper userRoleMapper; + @Autowired + private RoleDeptMapper roleDeptMapper; + /** * 根据条件分页查询角色数据 * @@ -44,6 +50,7 @@ public class RoleServiceImpl implements IRoleService @Override public List selectRoleList(Role role) { + role.getParams().put("dataScope", DataScopeUtils.dataScopeFilter()); return roleMapper.selectRoleList(role); } @@ -78,7 +85,7 @@ public class RoleServiceImpl implements IRoleService public List selectRolesByUserId(Long userId) { List userRoles = roleMapper.selectRolesByUserId(userId); - List roles = roleMapper.selectRolesAll(); + List roles = selectRoleAll(); for (Role role : roles) { for (Role userRole : userRoles) @@ -101,7 +108,7 @@ public class RoleServiceImpl implements IRoleService @Override public List selectRoleAll() { - return roleMapper.selectRolesAll(); + return selectRoleList(new Role()); } /** @@ -177,12 +184,30 @@ public class RoleServiceImpl implements IRoleService role.setUpdateBy(ShiroUtils.getLoginName()); // 修改角色信息 roleMapper.updateRole(role); + ShiroUtils.clearCachedAuthorizationInfo(); // 删除角色与菜单关联 roleMenuMapper.deleteRoleMenuByRoleId(role.getRoleId()); - ShiroUtils.clearCachedAuthorizationInfo(); return insertRoleMenu(role); } + /** + * 修改数据权限信息 + * + * @param role 角色信息 + * @return 结果 + */ + @Override + public int updateRule(Role role) + { + role.setUpdateBy(ShiroUtils.getLoginName()); + // 修改角色信息 + roleMapper.updateRole(role); + // 删除角色与部门关联 + roleDeptMapper.deleteRoleDeptByRoleId(role.getRoleId()); + // 新增角色和部门信息(数据权限) + return insertRoleDept(role); + } + /** * 新增角色菜单信息 * @@ -207,6 +232,30 @@ public class RoleServiceImpl implements IRoleService return rows; } + /** + * 新增角色部门信息(数据权限) + * + * @param role 角色对象 + */ + public int insertRoleDept(Role role) + { + int rows = 1; + // 新增角色与部门(数据权限)管理 + List list = new ArrayList(); + for (Long deptId : role.getDeptIds()) + { + RoleDept rd = new RoleDept(); + rd.setRoleId(role.getRoleId()); + rd.setDeptId(deptId); + list.add(rd); + } + if (list.size() > 0) + { + rows = roleDeptMapper.batchRoleDept(list); + } + return rows; + } + /** * 校验角色名称是否唯一 * @@ -224,7 +273,7 @@ public class RoleServiceImpl implements IRoleService } return UserConstants.ROLE_NAME_UNIQUE; } - + /** * 校验角色权限是否唯一 * diff --git a/src/main/java/com/ruoyi/project/system/user/controller/IndexController.java b/src/main/java/com/ruoyi/project/system/user/controller/IndexController.java index a6fd9724..276157ca 100644 --- a/src/main/java/com/ruoyi/project/system/user/controller/IndexController.java +++ b/src/main/java/com/ruoyi/project/system/user/controller/IndexController.java @@ -32,7 +32,7 @@ public class IndexController extends BaseController // 取身份信息 User user = getUser(); // 根据用户id取出菜单 - List menus = menuService.selectMenusByUserId(user.getUserId()); + List menus = menuService.selectMenusByUser(user); mmap.put("menus", menus); mmap.put("user", user); mmap.put("copyrightYear", ruoYiConfig.getCopyrightYear()); diff --git a/src/main/java/com/ruoyi/project/system/user/domain/User.java b/src/main/java/com/ruoyi/project/system/user/domain/User.java index b4d17fd7..26603f91 100644 --- a/src/main/java/com/ruoyi/project/system/user/domain/User.java +++ b/src/main/java/com/ruoyi/project/system/user/domain/User.java @@ -2,10 +2,12 @@ package com.ruoyi.project.system.user.domain; import java.util.Arrays; import java.util.Date; +import java.util.List; import org.apache.shiro.crypto.SecureRandomNumberGenerator; import com.ruoyi.framework.aspectj.lang.annotation.Excel; import com.ruoyi.framework.web.domain.BaseEntity; import com.ruoyi.project.system.dept.domain.Dept; +import com.ruoyi.project.system.role.domain.Role; /** * 用户对象 sys_user @@ -73,6 +75,9 @@ public class User extends BaseEntity /** 部门对象 */ private Dept dept; + /** 角色集合 */ + private List roles; + /** 角色组 */ private Long[] roleIds; @@ -260,6 +265,16 @@ public class User extends BaseEntity this.dept = dept; } + public List getRoles() + { + return roles; + } + + public void setRoles(List roles) + { + this.roles = roles; + } + public Long[] getRoleIds() { return roleIds; @@ -287,7 +302,8 @@ public class User extends BaseEntity + ", userName=" + userName + ", email=" + email + ", phonenumber=" + phonenumber + ", sex=" + sex + ", avatar=" + avatar + ", password=" + password + ", salt=" + salt + ", status=" + status + ", delFlag=" + delFlag + ", loginIp=" + loginIp + ", loginDate=" + loginDate + ", dept=" + dept - + ", roleIds=" + Arrays.toString(roleIds) + ", postIds=" + Arrays.toString(postIds) + "]"; + + ", roles=" + roles + ", roleIds=" + Arrays.toString(roleIds) + ", postIds=" + Arrays.toString(postIds) + + "]"; } } diff --git a/src/main/java/com/ruoyi/project/system/user/service/UserServiceImpl.java b/src/main/java/com/ruoyi/project/system/user/service/UserServiceImpl.java index 49191944..c30b69f4 100644 --- a/src/main/java/com/ruoyi/project/system/user/service/UserServiceImpl.java +++ b/src/main/java/com/ruoyi/project/system/user/service/UserServiceImpl.java @@ -8,6 +8,7 @@ import com.ruoyi.common.constant.UserConstants; import com.ruoyi.common.support.Convert; import com.ruoyi.common.utils.StringUtils; import com.ruoyi.common.utils.security.ShiroUtils; +import com.ruoyi.framework.datascope.DataScopeUtils; import com.ruoyi.framework.shiro.service.PasswordService; import com.ruoyi.project.system.post.domain.Post; import com.ruoyi.project.system.post.mapper.PostMapper; @@ -56,6 +57,8 @@ public class UserServiceImpl implements IUserService @Override public List selectUserList(User user) { + // 生成数据权限过滤条件 + user.getParams().put("dataScope", DataScopeUtils.dataScopeFilter()); return userMapper.selectUserList(user); } diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml index a1c0715a..1c8fa4a0 100644 --- a/src/main/resources/application.yml +++ b/src/main/resources/application.yml @@ -3,7 +3,7 @@ ruoyi: #名称 name: RuoYi #版本 - version: 2.3.0 + version: 2.4.0 #版权年份 copyrightYear: 2018 #头像上传路径 diff --git a/src/main/resources/i18n/messages.properties b/src/main/resources/i18n/messages.properties index 038511f9..4f5d77f5 100644 --- a/src/main/resources/i18n/messages.properties +++ b/src/main/resources/i18n/messages.properties @@ -5,6 +5,7 @@ user.not.exists=用户不存在/密码错误 user.password.not.match=用户不存在/密码错误 user.password.retry.limit.count=密码输入错误{0}次,{1} user.password.retry.limit.exceed=密码输入错误{0}次,帐户锁定10分钟 +user.password.delete=对不起,您的账号已被删除 user.blocked=用户已封禁,原因:{0} role.blocked=角色已封禁,原因:{0} user.logout.success=退出成功 diff --git a/src/main/resources/logback.xml b/src/main/resources/logback.xml index d4ef59ea..bd468488 100644 --- a/src/main/resources/logback.xml +++ b/src/main/resources/logback.xml @@ -1,7 +1,7 @@ - + diff --git a/src/main/resources/mybatis/monitor/JobLogMapper.xml b/src/main/resources/mybatis/monitor/JobLogMapper.xml index 11b64f6c..073fc9b1 100644 --- a/src/main/resources/mybatis/monitor/JobLogMapper.xml +++ b/src/main/resources/mybatis/monitor/JobLogMapper.xml @@ -17,7 +17,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" - select job_log_id, job_name, job_group, method_name, method_params, job_message, status, exception_info, create_time from sys_job_log + select job_log_id, job_name, job_group, method_name, method_params, job_message, status, exception_info, create_time + from sys_job_log diff --git a/src/main/resources/mybatis/monitor/OnlineMapper.xml b/src/main/resources/mybatis/monitor/OnlineMapper.xml index 81d2de7d..5bd6de96 100644 --- a/src/main/resources/mybatis/monitor/OnlineMapper.xml +++ b/src/main/resources/mybatis/monitor/OnlineMapper.xml @@ -27,8 +27,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" - select sessionId,login_name,dept_name,ipaddr,login_location,browser,os,status,status,start_timestamp,last_access_time,expire_time - from sys_user_online + select sessionId, login_name, dept_name, ipaddr, login_location, browser, os, status, status, start_timestamp, last_access_time, expire_time + from sys_user_online - + + select count(1) from sys_dept - - and dept_id = #{deptId} - and parent_id = #{parentId} - + where del_flag = '0' + and dept_id = #{deptId} + and parent_id = #{parentId} - - where dept_name=#{deptName} + where dept_name=#{deptName} and parent_id = #{parentId} @@ -127,7 +133,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" - delete from sys_dept where dept_id = #{deptId} + update sys_dept set del_flag = '2' where dept_id = #{deptId} \ No newline at end of file diff --git a/src/main/resources/mybatis/system/DictDataMapper.xml b/src/main/resources/mybatis/system/DictDataMapper.xml index 36ccc935..b24c82b7 100644 --- a/src/main/resources/mybatis/system/DictDataMapper.xml +++ b/src/main/resources/mybatis/system/DictDataMapper.xml @@ -21,7 +21,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" - select dict_code, dict_sort, dict_label, dict_value, dict_type, css_class, list_class, is_default, status, create_by, create_time, remark from sys_dict_data + select dict_code, dict_sort, dict_label, dict_value, dict_type, css_class, list_class, is_default, status, create_by, create_time, remark + from sys_dict_data diff --git a/src/main/resources/mybatis/system/MenuMapper.xml b/src/main/resources/mybatis/system/MenuMapper.xml index 05af46d2..b07e8518 100644 --- a/src/main/resources/mybatis/system/MenuMapper.xml +++ b/src/main/resources/mybatis/system/MenuMapper.xml @@ -23,10 +23,11 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" - select menu_id, menu_name, parent_id, order_num, url, menu_type, visible, perms, icon, create_by, create_time from sys_menu + select menu_id, menu_name, parent_id, order_num, url, menu_type, visible, perms, icon, create_by, create_time + from sys_menu - - select distinct m.menu_id, m.parent_id, m.menu_name, m.url, m.perms , m.menu_type, m.icon, m.order_num, m.create_time from sys_menu m left join sys_role_menu rm on m.menu_id = rm.menu_id @@ -35,6 +36,17 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" where ur.user_id = #{userId} and m.menu_type in ('M', 'C') and m.visible = 0 AND ro.status = 0 order by m.order_num + + + + - - delete from sys_menu where menu_id = #{menuId} or parent_id = #{menuId} @@ -83,9 +91,9 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" select count(1) from sys_menu where parent_id=#{menuId} - - where menu_name=#{menuName} + where menu_name=#{menuName} and parent_id = #{parentId} diff --git a/src/main/resources/mybatis/system/NoticeMapper.xml b/src/main/resources/mybatis/system/NoticeMapper.xml index ed8ca68c..03a26c42 100644 --- a/src/main/resources/mybatis/system/NoticeMapper.xml +++ b/src/main/resources/mybatis/system/NoticeMapper.xml @@ -18,7 +18,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" - select notice_id, notice_title, notice_type, notice_content, status, create_by, create_time, update_by, update_time, remark from sys_notice + select notice_id, notice_title, notice_type, notice_content, status, create_by, create_time, update_by, update_time, remark + from sys_notice diff --git a/src/main/resources/mybatis/system/RoleDeptMapper.xml b/src/main/resources/mybatis/system/RoleDeptMapper.xml new file mode 100644 index 00000000..84dbc875 --- /dev/null +++ b/src/main/resources/mybatis/system/RoleDeptMapper.xml @@ -0,0 +1,34 @@ + + + + + + + + + + + delete from sys_role_dept where role_id=#{roleId} + + + + + + delete from sys_role_dept where role_id in + + #{roleId} + + + + + insert into sys_role_dept(role_id, dept_id) values + + (#{item.roleId},#{item.deptId}) + + + + \ No newline at end of file diff --git a/src/main/resources/mybatis/system/RoleMapper.xml b/src/main/resources/mybatis/system/RoleMapper.xml index e4c98bbd..94ab02b0 100644 --- a/src/main/resources/mybatis/system/RoleMapper.xml +++ b/src/main/resources/mybatis/system/RoleMapper.xml @@ -9,7 +9,9 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" + + @@ -17,56 +19,63 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" - - select role_id, role_name, role_key, role_sort, status, create_time, remark from sys_role + + select distinct r.role_id, r.role_name, r.role_key, r.role_sort, r.data_scope, + r.status, r.del_flag, r.create_time, r.remark + from sys_role r + left join sys_user_role ur on ur.role_id = r.role_id + left join sys_user u on u.user_id = ur.user_id + left join sys_dept d on u.dept_id = d.dept_id + + + select r.role_id, r.role_name, r.role_key, r.role_sort, r.data_scope, r.status, r.del_flag, r.create_time, r.remark + from sys_role r + - - @@ -74,7 +83,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" - delete from sys_role where role_id in + update sys_role set del_flag = '2' where role_id in #{roleId} @@ -86,6 +95,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" role_name = #{roleName}, role_key = #{roleKey}, role_sort = #{roleSort}, + data_scope = #{dataScope}, status = #{status}, remark = #{remark}, update_by = #{updateBy}, @@ -100,6 +110,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" role_name, role_key, role_sort, + data_scope, status, remark, create_by, @@ -109,6 +120,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" #{roleName}, #{roleKey}, #{roleSort}, + #{dataScope}, #{status}, #{remark}, #{createBy}, diff --git a/src/main/resources/mybatis/system/UserMapper.xml b/src/main/resources/mybatis/system/UserMapper.xml index 29e33550..50808aef 100644 --- a/src/main/resources/mybatis/system/UserMapper.xml +++ b/src/main/resources/mybatis/system/UserMapper.xml @@ -24,7 +24,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" - + + @@ -35,12 +36,23 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" + + + + + + + + + select u.user_id, u.dept_id, u.login_name, u.user_name, u.email, u.phonenumber, u.sex, u.avatar, u.password, u.salt, u.status, u.del_flag, u.login_ip, u.login_date, u.create_time, u.remark, - d.dept_id, d.parent_id, d.dept_name, d.order_num, d.status as dept_status + d.dept_id, d.parent_id, d.dept_name, d.order_num, d.status as dept_status, + r.role_id, r.role_name, r.role_key, r.role_sort, r.data_scope, r.status as role_status from sys_user u left join sys_dept d on u.dept_id = d.dept_id left join sys_user_role ur on u.user_id = ur.user_id + left join sys_role r on r.role_id = ur.role_id ":function(){return''}();return layer.open($.extend({btn:["确定","取消"],content:e,skin:"layui-layer-prompt"+b("prompt"),success:function(a){d=a.find(".layui-layer-input"),d.focus()},yes:function(b){var e=d.val();""===e?d.focus():e.length>(a.maxlength||500)?layer.tips("最多输入"+(a.maxlength||500)+"个字数",d,{tips:1}):c&&c(e,b,d)}},a))},layer.tab=function(a){a=a||{};var c=a.tab||{};return layer.open($.extend({type:1,skin:"layui-layer-tab"+b("tab"),title:function(){var a=c.length,b=1,d="";if(a>0)for(d=''+c[0].title+"";a>b;b++)d+=""+c[b].title+"";return d}(),content:'
    '+function(){var a=c.length,b=1,d="";if(a>0)for(d='
  • '+(c[0].content||"no content")+"
  • ";a>b;b++)d+='
  • '+(c[b].content||"no content")+"
  • ";return d}()+"
",success:function(a){var b=a.find(".layui-layer-title").children(),c=a.find(".layui-layer-tabmain").children();b.on("mousedown",function(a){a.stopPropagation?a.stopPropagation():a.cancelBubble=!0;var b=$(this),d=b.index();b.addClass("layui-layer-tabnow").siblings().removeClass("layui-layer-tabnow"),c.eq(d).show().siblings().hide()})}},a))},layer.photos=function(a,c,d){function e(a,b,c){var d=new Image;d.onload=function(){d.onload=null,b(d)},d.onerror=function(a){d.onerror=null,c(a)},d.src=a}var f={};if(a=a||{},a.photos){var g=a.photos.constructor===Object,h=g?a.photos:{},i=h.data||[],j=h.start||0;if(f.imgIndex=j+1,g){if(0===i.length)return void layer.msg("没有图片")}else{var k=$(a.photos),l=k.find(a.img||"img");if(0===l.length)return;if(c||k.find(h.img||"img").each(function(b){var c=$(this);i.push({alt:c.attr("alt"),pid:c.attr("layer-pid"),src:c.attr("layer-src")||c.attr("src"),thumb:c.attr("src")}),c.on("click",function(){layer.photos($.extend(a,{photos:{start:b,data:i,tab:a.tab},full:a.full}),!0)})}),!c)return}f.imgprev=function(a){f.imgIndex--,f.imgIndex<1&&(f.imgIndex=i.length),f.tabimg(a)},f.imgnext=function(a,b){f.imgIndex++,f.imgIndex>i.length&&(f.imgIndex=1,b)||f.tabimg(a)},f.keyup=function(a){if(!f.end){var b=a.keyCode;a.preventDefault(),37===b?f.imgprev(!0):39===b?f.imgnext(!0):27===b&&layer.close(f.index)}},f.tabimg=function(b){i.length<=1||(h.start=f.imgIndex-1,layer.close(f.index),layer.photos(a,!0,b))},f.event=function(){f.bigimg.hover(function(){f.imgsee.show()},function(){f.imgsee.hide()}),f.bigimg.find(".layui-layer-imgprev").on("click",function(a){a.preventDefault(),f.imgprev()}),f.bigimg.find(".layui-layer-imgnext").on("click",function(a){a.preventDefault(),f.imgnext()}),$(document).on("keyup",f.keyup)},f.loadi=layer.load(1,{shade:"shade"in a?!1:.9,scrollbar:!1}),e(i[j].src,function(c){layer.close(f.loadi),f.index=layer.open($.extend({type:1,area:function(){var b=[c.width,c.height],d=[$(window).width()-100,$(window).height()-100];return!a.full&&b[0]>d[0]&&(b[0]=d[0],b[1]=b[0]*d[1]/b[0]),[b[0]+"px",b[1]+"px"]}(),title:!1,shade:.9,shadeClose:!0,closeBtn:!1,move:".layui-layer-phimg img",moveType:1,scrollbar:!1,moveOut:!0,shift:5*Math.random()|0,skin:"layui-layer-photos"+b("photos"),content:'
'+(i[j].alt||
'+(i.length>1?'':"")+'
'+(i[j].alt||"")+""+f.imgIndex+"/"+i.length+"
",success:function(b,c){f.bigimg=b.find(".layui-layer-phimg"),f.imgsee=b.find(".layui-layer-imguide,.layui-layer-imgbar"),f.event(b),a.tab&&a.tab(i[j],b)},end:function(){f.end=!0,$(document).off("keyup",f.keyup)}},a))},function(){layer.close(f.loadi),layer.msg("当前图片地址异常
是否继续查看下一张?",{time:3e4,btn:["下一张","不看了"],yes:function(){i.length>1&&f.imgnext(!0,!0)}})})}}}(); diff --git a/src/main/resources/static/ajax/libs/layer/laydate/laydate.js b/src/main/resources/static/ajax/libs/layer/laydate/laydate.js deleted file mode 100644 index 2da091b9..00000000 --- a/src/main/resources/static/ajax/libs/layer/laydate/laydate.js +++ /dev/null @@ -1,11 +0,0 @@ -/** - - @Name : layDate v1.1 日期控件 - @Author: 贤心 - @Date: 2014-06-25 - @QQ群:176047195 - @Site:http://sentsin.com/layui/laydate - - */ - -;!function(a){var b={path:"",defSkin:"default",format:"YYYY-MM-DD",min:"1900-01-01 00:00:00",max:"2099-12-31 23:59:59",isv:!1},c={},d=document,e="createElement",f="getElementById",g="getElementsByTagName",h=["laydate_box","laydate_void","laydate_click","LayDateSkin","skins/","/laydate.css"];a.laydate=function(b){b=b||{};try{h.event=a.event?a.event:laydate.caller.arguments[0]}catch(d){}return c.run(b),laydate},laydate.v="1.1",c.getPath=function(){var a=document.scripts,c=a[a.length-1].src;return b.path?b.path:c.substring(0,c.lastIndexOf("/")+1)}(),c.use=function(a,b){var f=d[e]("link");f.type="text/css",f.rel="stylesheet",f.href=c.getPath+a+h[5],b&&(f.id=b),d[g]("head")[0].appendChild(f),f=null},c.trim=function(a){return a=a||"",a.replace(/^\s|\s$/g,"").replace(/\s+/g," ")},c.digit=function(a){return 10>a?"0"+(0|a):a},c.stopmp=function(b){return b=b||a.event,b.stopPropagation?b.stopPropagation():b.cancelBubble=!0,this},c.each=function(a,b){for(var c=0,d=a.length;d>c&&b(c,a[c])!==!1;c++);},c.hasClass=function(a,b){return a=a||{},new RegExp("\\b"+b+"\\b").test(a.className)},c.addClass=function(a,b){return a=a||{},c.hasClass(a,b)||(a.className+=" "+b),a.className=c.trim(a.className),this},c.removeClass=function(a,b){if(a=a||{},c.hasClass(a,b)){var d=new RegExp("\\b"+b+"\\b");a.className=a.className.replace(d,"")}return this},c.removeCssAttr=function(a,b){var c=a.style;c.removeProperty?c.removeProperty(b):c.removeAttribute(b)},c.shde=function(a,b){a.style.display=b?"none":"block"},c.query=function(a){var e,b,h,i,j;return a=c.trim(a).split(" "),b=d[f](a[0].substr(1)),b?a[1]?/^\./.test(a[1])?(i=a[1].substr(1),j=new RegExp("\\b"+i+"\\b"),e=[],h=d.getElementsByClassName?b.getElementsByClassName(i):b[g]("*"),c.each(h,function(a,b){j.test(b.className)&&e.push(b)}),e[0]?e:""):(e=b[g](a[1]),e[0]?b[g](a[1]):""):b:void 0},c.on=function(b,d,e){return b.attachEvent?b.attachEvent("on"+d,function(){e.call(b,a.even)}):b.addEventListener(d,e,!1),c},c.stopMosup=function(a,b){"mouseup"!==a&&c.on(b,"mouseup",function(a){c.stopmp(a)})},c.run=function(a){var d,e,g,b=c.query,f=h.event;try{g=f.target||f.srcElement||{}}catch(i){g={}}if(d=a.elem?b(a.elem):g,f&&g.tagName){if(!d||d===c.elem)return;c.stopMosup(f.type,d),c.stopmp(f),c.view(d,a),c.reshow()}else e=a.event||"click",c.each((0|d.length)>0?d:[d],function(b,d){c.stopMosup(e,d),c.on(d,e,function(b){c.stopmp(b),d!==c.elem&&(c.view(d,a),c.reshow())})})},c.scroll=function(a){return a=a?"scrollLeft":"scrollTop",d.body[a]|d.documentElement[a]},c.winarea=function(a){return document.documentElement[a?"clientWidth":"clientHeight"]},c.isleap=function(a){return 0===a%4&&0!==a%100||0===a%400},c.checkVoid=function(a,b,d){var e=[];return a=0|a,b=0|b,d=0|d,ac.maxs[0]?e=["y",1]:a>=c.mins[0]&&a<=c.maxs[0]&&(a==c.mins[0]&&(bc.maxs[1]?e=["m",1]:b==c.maxs[1]&&d>c.maxs[2]&&(e=["d",1]))),e},c.timeVoid=function(a,b){if(c.ymd[1]+1==c.mins[1]&&c.ymd[2]==c.mins[2]){if(0===b&&ac.maxs[3])return 1;if(1===b&&a>c.maxs[4])return 1;if(2===b&&a>c.maxs[5])return 1}return a>(b?59:23)?1:void 0},c.check=function(){var a=c.options.format.replace(/YYYY|MM|DD|hh|mm|ss/g,"\\d+\\").replace(/\\$/g,""),b=new RegExp(a),d=c.elem[h.elemv],e=d.match(/\d+/g)||[],f=c.checkVoid(e[0],e[1],e[2]);if(""!==d.replace(/\s/g,"")){if(!b.test(d))return c.elem[h.elemv]="",c.msg("日期不符合格式,请重新选择。"),1;if(f[0])return c.elem[h.elemv]="",c.msg("日期不在有效期内,请重新选择。"),1;f.value=c.elem[h.elemv].match(b).join(),e=f.value.match(/\d+/g),e[1]<1?(e[1]=1,f.auto=1):e[1]>12?(e[1]=12,f.auto=1):e[1].length<2&&(f.auto=1),e[2]<1?(e[2]=1,f.auto=1):e[2]>c.months[(0|e[1])-1]?(e[2]=31,f.auto=1):e[2].length<2&&(f.auto=1),e.length>3&&(c.timeVoid(e[3],0)&&(f.auto=1),c.timeVoid(e[4],1)&&(f.auto=1),c.timeVoid(e[5],2)&&(f.auto=1)),f.auto?c.creation([e[0],0|e[1],0|e[2]],1):f.value!==c.elem[h.elemv]&&(c.elem[h.elemv]=f.value)}},c.months=[31,null,31,30,31,30,31,31,30,31,30,31],c.viewDate=function(a,b,d){var f=(c.query,{}),g=new Date;a<(0|c.mins[0])&&(a=0|c.mins[0]),a>(0|c.maxs[0])&&(a=0|c.maxs[0]),g.setFullYear(a,b,d),f.ymd=[g.getFullYear(),g.getMonth(),g.getDate()],c.months[1]=c.isleap(f.ymd[0])?29:28,g.setFullYear(f.ymd[0],f.ymd[1],1),f.FDay=g.getDay(),f.PDay=c.months[0===b?11:b-1]-f.FDay+1,f.NDay=1,c.each(h.tds,function(a,b){var g,d=f.ymd[0],e=f.ymd[1]+1;b.className="",a=f.FDay&&a'+a+"年":'
  • '+(a-7+b)+"年
  • "}),b("#laydate_ys").innerHTML=d,c.each(b("#laydate_ys li"),function(a,b){"y"===c.checkVoid(b.getAttribute("y"))[0]?c.addClass(b,h[1]):c.on(b,"click",function(a){c.stopmp(a).reshow(),c.viewDate(0|this.getAttribute("y"),c.ymd[1],c.ymd[2])})})},c.initDate=function(){var d=(c.query,new Date),e=c.elem[h.elemv].match(/\d+/g)||[];e.length<3&&(e=c.options.start.match(/\d+/g)||[],e.length<3&&(e=[d.getFullYear(),d.getMonth()+1,d.getDate()])),c.inymd=e,c.viewDate(e[0],e[1]-1,e[2])},c.iswrite=function(){var a=c.query,b={time:a("#laydate_hms")};c.shde(b.time,!c.options.istime),c.shde(h.oclear,!("isclear"in c.options?c.options.isclear:1)),c.shde(h.otoday,!("istoday"in c.options?c.options.istoday:1)),c.shde(h.ok,!("issure"in c.options?c.options.issure:1))},c.orien=function(a,b){var d,e=c.elem.getBoundingClientRect();a.style.left=e.left+(b?0:c.scroll(1))+"px",d=e.bottom+a.offsetHeight/1.5<=c.winarea()?e.bottom-1:e.top>a.offsetHeight/1.5?e.top-a.offsetHeight+1:c.winarea()-a.offsetHeight,a.style.top=d+(b?0:c.scroll())+"px"},c.follow=function(a){c.options.fixed?(a.style.position="fixed",c.orien(a,1)):(a.style.position="absolute",c.orien(a))},c.viewtb=function(){var a,b=[],f=["日","一","二","三","四","五","六"],h={},i=d[e]("table"),j=d[e]("thead");return j.appendChild(d[e]("tr")),h.creath=function(a){var b=d[e]("th");b.innerHTML=f[a],j[g]("tr")[0].appendChild(b),b=null},c.each(new Array(6),function(d){b.push([]),a=i.insertRow(0),c.each(new Array(7),function(c){b[d][c]=0,0===d&&h.creath(c),a.insertCell(c)})}),i.insertBefore(j,i.children[0]),i.id=i.className="laydate_table",a=b=null,i.outerHTML.toLowerCase()}(),c.view=function(a,f){var i,g=c.query,j={};f=f||a,c.elem=a,c.options=f,c.options.format||(c.options.format=b.format),c.options.start=c.options.start||"",c.mm=j.mm=[c.options.min||b.min,c.options.max||b.max],c.mins=j.mm[0].match(/\d+/g),c.maxs=j.mm[1].match(/\d+/g),h.elemv=/textarea|input/.test(c.elem.tagName.toLocaleLowerCase())?"value":"innerHTML",c.box?c.shde(c.box):(i=d[e]("div"),i.id=h[0],i.className=h[0],i.style.cssText="position: absolute;",i.setAttribute("name","laydate-v"+laydate.v),i.innerHTML=j.html='
      '+function(){var a="";return c.each(new Array(12),function(b){a+=''+c.digit(b+1)+"月"}),a}()+"
      "+"
      "+"
      "+c.viewtb+'
      '+'
        '+'
      • 时间
      • '+"
      • :
      • "+"
      • :
      • "+"
      • "+"
      "+'
      '+'
      '+'清空'+'今天'+'确认'+"
      "+(b.isv?'laydate-v'+laydate.v+"":"")+"
      ",d.body.appendChild(i),c.box=g("#"+h[0]),c.events(),i=null),c.follow(c.box),f.zIndex?c.box.style.zIndex=f.zIndex:c.removeCssAttr(c.box,"z-index"),c.stopMosup("click",c.box),c.initDate(),c.iswrite(),c.check()},c.reshow=function(){return c.each(c.query("#"+h[0]+" .laydate_show"),function(a,b){c.removeClass(b,"laydate_show")}),this},c.close=function(){c.reshow(),c.shde(c.query("#"+h[0]),1),c.elem=null},c.parse=function(a,d,e){return a=a.concat(d),e=e||(c.options?c.options.format:b.format),e.replace(/YYYY|MM|DD|hh|mm|ss/g,function(){return a.index=0|++a.index,c.digit(a[a.index])})},c.creation=function(a,b){var e=(c.query,c.hmsin),f=c.parse(a,[e[0].value,e[1].value,e[2].value]);c.elem[h.elemv]=f,b||(c.close(),"function"==typeof c.options.choose&&c.options.choose(f))},c.events=function(){var b=c.query,e={box:"#"+h[0]};c.addClass(d.body,"laydate_body"),h.tds=b("#laydate_table td"),h.mms=b("#laydate_ms span"),h.year=b("#laydate_y"),h.month=b("#laydate_m"),c.each(b(e.box+" .laydate_ym"),function(a,b){c.on(b,"click",function(b){c.stopmp(b).reshow(),c.addClass(this[g]("div")[0],"laydate_show"),a||(e.YY=parseInt(h.year.value),c.viewYears(e.YY))})}),c.on(b(e.box),"click",function(){c.reshow()}),e.tabYear=function(a){0===a?c.ymd[0]--:1===a?c.ymd[0]++:2===a?e.YY-=14:e.YY+=14,2>a?(c.viewDate(c.ymd[0],c.ymd[1],c.ymd[2]),c.reshow()):c.viewYears(e.YY)},c.each(b("#laydate_YY .laydate_tab"),function(a,b){c.on(b,"click",function(b){c.stopmp(b),e.tabYear(a)})}),e.tabMonth=function(a){a?(c.ymd[1]++,12===c.ymd[1]&&(c.ymd[0]++,c.ymd[1]=0)):(c.ymd[1]--,-1===c.ymd[1]&&(c.ymd[0]--,c.ymd[1]=11)),c.viewDate(c.ymd[0],c.ymd[1],c.ymd[2])},c.each(b("#laydate_MM .laydate_tab"),function(a,b){c.on(b,"click",function(b){c.stopmp(b).reshow(),e.tabMonth(a)})}),c.each(b("#laydate_ms span"),function(a,b){c.on(b,"click",function(a){c.stopmp(a).reshow(),c.hasClass(this,h[1])||c.viewDate(c.ymd[0],0|this.getAttribute("m"),c.ymd[2])})}),c.each(b("#laydate_table td"),function(a,b){c.on(b,"click",function(a){c.hasClass(this,h[1])||(c.stopmp(a),c.creation([0|this.getAttribute("y"),0|this.getAttribute("m"),0|this.getAttribute("d")]))})}),h.oclear=b("#laydate_clear"),c.on(h.oclear,"click",function(){c.elem[h.elemv]="",c.close()}),h.otoday=b("#laydate_today"),c.on(h.otoday,"click",function(){c.elem[h.elemv]=laydate.now(0,c.options.format),c.close()}),h.ok=b("#laydate_ok"),c.on(h.ok,"click",function(){c.valid&&c.creation([c.ymd[0],c.ymd[1]+1,c.ymd[2]])}),e.times=b("#laydate_time"),c.hmsin=e.hmsin=b("#laydate_hms input"),e.hmss=["小时","分钟","秒数"],e.hmsarr=[],c.msg=function(a,d){var f='
      '+(d||"提示")+"×
      ";"string"==typeof a?(f+="

      "+a+"

      ",c.shde(b("#"+h[0])),c.removeClass(e.times,"laydate_time1").addClass(e.times,"laydate_msg")):(e.hmsarr[a]?f=e.hmsarr[a]:(f+='
      ',c.each(new Array(0===a?24:60),function(a){f+=""+a+""}),f+="
      ",e.hmsarr[a]=f),c.removeClass(e.times,"laydate_msg"),c[0===a?"removeClass":"addClass"](e.times,"laydate_time1")),c.addClass(e.times,"laydate_show"),e.times.innerHTML=f},e.hmson=function(a,d){var e=b("#laydate_hmsno span"),f=c.valid?null:1;c.each(e,function(b,e){f?c.addClass(e,h[1]):c.timeVoid(b,d)?c.addClass(e,h[1]):c.on(e,"click",function(){c.hasClass(this,h[1])||(a.value=c.digit(0|this.innerHTML))})}),c.addClass(e[0|a.value],"laydate_click")},c.each(e.hmsin,function(a,b){c.on(b,"click",function(b){c.stopmp(b).reshow(),c.msg(a,e.hmss[a]),e.hmson(this,a)})}),c.on(d,"mouseup",function(){var a=b("#"+h[0]);a&&"none"!==a.style.display&&(c.check()||c.close())}).on(d,"keydown",function(b){b=b||a.event;var d=b.keyCode;13===d&&c.creation([c.ymd[0],c.ymd[1]+1,c.ymd[2]])})},c.init=function(){c.use("need"),c.use(h[4]+b.defSkin,h[3]),c.skinLink=c.query("#"+h[3])}(),laydate.reset=function(){c.box&&c.elem&&c.follow(c.box)},laydate.now=function(a,b){var d=new Date(0|a?function(a){return 864e5>a?+new Date+864e5*a:a}(parseInt(a)):+new Date);return c.parse([d.getFullYear(),d.getMonth()+1,d.getDate()],[d.getHours(),d.getMinutes(),d.getSeconds()],b)},laydate.skin=function(a){c.skinLink.href=c.getPath+h[4]+a+h[5]}}(window); diff --git a/src/main/resources/static/ajax/libs/layer/laydate/need/laydate.css b/src/main/resources/static/ajax/libs/layer/laydate/need/laydate.css deleted file mode 100644 index 4d795c91..00000000 --- a/src/main/resources/static/ajax/libs/layer/laydate/need/laydate.css +++ /dev/null @@ -1,75 +0,0 @@ -/** - - @Name: laydate 核心样式 - @Author:贤心 - @Site:http://sentsin.com/layui/laydate - -**/ - -html{_background-image:url(about:blank); _background-attachment:fixed;} -.layer-date{display: inline-block!important;vertical-align:text-top;max-width:240px;} -.laydate_body .laydate_box, .laydate_body .laydate_box *{margin:0; padding:0;} -.laydate-icon, -.laydate-icon-default, -.laydate-icon-danlan, -.laydate-icon-dahong, -.laydate-icon-molv{height:34px; padding-right:20px;min-width:34px;vertical-align: text-top;border:1px solid #C6C6C6; background-repeat:no-repeat; background-position:right center; background-color:#fff; outline:0;} -.laydate-icon-default{ background-image:url(../skins/default/icon.png)} -.laydate-icon-danlan{border:1px solid #B1D2EC; background-image:url(../skins/danlan/icon.png)} -.laydate-icon-dahong{background-image:url(../skins/dahong/icon.png)} -.laydate-icon-molv{background-image:url(../skins/molv/icon.png)} -.laydate_body .laydate_box{width:240px; font:12px '\5B8B\4F53'; z-index:99999999; *margin:-2px 0 0 -2px; *overflow:hidden; _margin:0; _position:absolute!important; background-color:#fff;} -.laydate_body .laydate_box li{list-style:none;} -.laydate_body .laydate_box .laydate_void{cursor:text!important;} -.laydate_body .laydate_box a, .laydate_body .laydate_box a:hover{text-decoration:none; blr:expression(this.onFocus=this.blur()); cursor:pointer;} -.laydate_body .laydate_box a:hover{text-decoration:none;} -.laydate_body .laydate_box cite, .laydate_body .laydate_box label{position:absolute; width:0; height:0; border-width:5px; border-style:dashed; border-color:transparent; overflow:hidden; cursor:pointer;} -.laydate_body .laydate_box .laydate_yms, .laydate_body .laydate_box .laydate_time{display:none;} -.laydate_body .laydate_box .laydate_show{display:block;} -.laydate_body .laydate_box input{outline:0; font-size:14px; background-color:#fff;} -.laydate_body .laydate_top{position:relative; height:26px; padding:5px; *width:100%; z-index:99;} -.laydate_body .laydate_ym{position:relative; float:left; height:24px; cursor:pointer;} -.laydate_body .laydate_ym input{float:left; height:24px; line-height:24px; text-align:center; border:none; cursor:pointer;} -.laydate_body .laydate_ym .laydate_yms{position:absolute; left: -1px; top: 24px; height:181px;} -.laydate_body .laydate_y{width:121px;} -.laydate_body .laydate_y input{width:64px; margin-right:15px;} -.laydate_body .laydate_y .laydate_yms{width:121px; text-align:center;} -.laydate_body .laydate_y .laydate_yms a{position:relative; display:block; height:20px;} -.laydate_body .laydate_y .laydate_yms ul{height:139px; padding:0; *overflow:hidden;} -.laydate_body .laydate_y .laydate_yms ul li{float:left; width:60px; height:20px; line-height: 20px; text-overflow: ellipsis; overflow: hidden; white-space: nowrap;} -.laydate_box *{box-sizing:content-box!important;} -.laydate_body .laydate_m{width:99px;float: right;margin-right:-2px;} -.laydate_body .laydate_m .laydate_yms{width:99px; padding:0;} -.laydate_body .laydate_m input{width:42px; margin-right:15px;} -.laydate_body .laydate_m .laydate_yms span{display:block; float:left; width:42px; margin: 5px 0 0 5px; line-height:24px; text-align:center; _display:inline;} -.laydate_body .laydate_choose{display:block; float:left; position:relative; width:20px; height:24px;} -.laydate_body .laydate_choose cite, .laydate_body .laydate_tab cite{left:50%; top:50%;} -.laydate_body .laydate_chtop cite{margin:-7px 0 0 -5px; border-bottom-style:solid;} -.laydate_body .laydate_chdown cite, .laydate_body .laydate_ym label{top:50%; margin:-2px 0 0 -5px; border-top-style:solid;} -.laydate_body .laydate_chprev cite{margin:-5px 0 0 -7px;} -.laydate_body .laydate_chnext cite{margin:-5px 0 0 -2px;} -.laydate_body .laydate_ym label{right:28px;} -.laydate_body .laydate_table{ width:230px; margin:0 5px; border-collapse:collapse; border-spacing:0px; } -.laydate_body .laydate_table td{width:31px; height:19px; line-height:19px; text-align: center; cursor:pointer; font-size: 12px;} -.laydate_body .laydate_table thead{height:22px; line-height:22px;} -.laydate_body .laydate_table thead th{font-weight:400; font-size:12px; text-align:center;} -.laydate_body .laydate_bottom{position:relative; height:22px; line-height:20px; padding:5px; font-size:12px;} -.laydate_body .laydate_bottom #laydate_hms{position: relative; z-index: 1; float:left; } -.laydate_body .laydate_time{ position:absolute; left:5px; bottom: 26px; width:129px; height:125px; *overflow:hidden;} -.laydate_body .laydate_time .laydate_hmsno{ padding:5px 0 0 5px;} -.laydate_body .laydate_time .laydate_hmsno span{display:block; float:left; width:24px; height:19px; line-height:19px; text-align:center; cursor:pointer; *margin-bottom:-5px;} -.laydate_body .laydate_time1{width:228px; height:154px;} -.laydate_body .laydate_time1 .laydate_hmsno{padding: 6px 0 0 8px;} -.laydate_body .laydate_time1 .laydate_hmsno span{width:21px; height:20px; line-height:20px;} -.laydate_body .laydate_msg{left:49px; bottom:67px; width:141px; height:auto; overflow: hidden;} -.laydate_body .laydate_msg p{padding:5px 10px;} -.laydate_body .laydate_bottom li{float:left; height:20px; line-height:20px; border-right:none; font-weight:900;} -.laydate_body .laydate_bottom .laydate_sj{width:33px; text-align:center; font-weight:400;} -.laydate_body .laydate_bottom input{float:left; width:21px; height:20px; line-height:20px; border:none; text-align:center; cursor:pointer; font-size:12px; font-weight:400;} -.laydate_body .laydate_bottom .laydte_hsmtex{height:20px; line-height:20px; text-align:center;} -.laydate_body .laydate_bottom .laydte_hsmtex span{position:absolute; width:20px; top:0; right:0px; cursor:pointer;} -.laydate_body .laydate_bottom .laydte_hsmtex span:hover{font-size:14px;} -.laydate_body .laydate_bottom .laydate_btn{position:absolute; right:5px; top:5px;} -.laydate_body .laydate_bottom .laydate_btn a{float:left; height:20px; padding:0 6px; _padding:0 5px;} -.laydate_body .laydate_bottom .laydate_v{position:absolute; left:10px; top:6px; font-family:Courier; z-index:0;} - diff --git a/src/main/resources/static/ajax/libs/layer/laydate/skins/default/icon.png b/src/main/resources/static/ajax/libs/layer/laydate/skins/default/icon.png deleted file mode 100644 index 948660fb555db0e80cb75d6c0e65bb2a73a07145..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 309 zcmeAS@N?(olHy`uVBq!ia0vp^l0YoL!3HEBKfAITNU;<KzsG`@?#WBR9_wMA~yayC`SQV23vceXm zv1BA(p3Ws=_bmSD5{(;zF)7LC_OR~eS#s*p^KA=`)~hsa+|{Q3;lVATSC6&6oUh_$ z=y-o3FXkDegFu#0Udh%rv%9vZCw;oGzQil&TdGL^r-^U4oL7AbDD1xY_KwzdpUys& vjq)}-UjDRtb@EM)>dCV!^S$zXs{6%@Lpy!+E>5-qI*h^7)z4*}Q$iB}YEyI8 diff --git a/src/main/resources/static/ajax/libs/layer/laydate/skins/default/laydate.css b/src/main/resources/static/ajax/libs/layer/laydate/skins/default/laydate.css deleted file mode 100644 index a3ce4d4b..00000000 --- a/src/main/resources/static/ajax/libs/layer/laydate/skins/default/laydate.css +++ /dev/null @@ -1,59 +0,0 @@ -/** - - @Name: laydate皮肤:墨绿 - @Author:贤心 - @Site:http://sentsin.com/layui/laydate - -**/ - -.laydate-icon{border:1px solid #ccc; background-image:url(icon.png)} - -.laydate_body .laydate_bottom #laydate_hms, -.laydate_body .laydate_time{border:1px solid #ccc;} - -.laydate_body .laydate_box, -.laydate_body .laydate_ym .laydate_yms, -.laydate_body .laydate_time{box-shadow: 2px 2px 5px rgba(0,0,0,.1);} - -.laydate_body .laydate_box{border-top:none; border-bottom:none; background-color:#fff; color:#00625A;} -.laydate_body .laydate_box input{background:none!important; color:#fff;} -.laydate_body .laydate_box .laydate_void{color:#00E8D7!important;} -.laydate_body .laydate_box a, .laydate_body .laydate_box a:hover{color:#00625A;} -.laydate_body .laydate_box a:hover{color:#666;} -.laydate_body .laydate_click{background-color:#009F95!important; color:#fff!important;} -.laydate_body .laydate_top{border-top:1px solid #009F95; background-color:#009F95} -.laydate_body .laydate_ym{border:1px solid #009F95; background-color:#009F95;} -.laydate_body .laydate_ym .laydate_yms{border:1px solid #009F95; background-color:#009F95; color:#fff;} -.laydate_body .laydate_y .laydate_yms a{border-bottom:1px solid #009F95;} -.laydate_body .laydate_y .laydate_yms .laydate_chdown{border-top:1px solid #009F95; border-bottom:none;} -.laydate_body .laydate_choose{border-left:1px solid #009F95;} -.laydate_body .laydate_chprev{border-left:none; border-right:1px solid #009F95;} -.laydate_body .laydate_choose:hover, -.laydate_body .laydate_y .laydate_yms a:hover{background-color:#00C1B3;} -.laydate_body .laydate_chtop cite{border-bottom-color:#fff;} -.laydate_body .laydate_chdown cite, .laydate_body .laydate_ym label{border-top-color:#fff;} -.laydate_body .laydate_chprev cite{border-right-style:solid; border-right-color:#fff;} -.laydate_body .laydate_chnext cite{border-left-style:solid; border-left-color:#fff;} -.laydate_body .laydate_table{width: 240px!important; margin: 0!important; border:1px solid #ccc; border-top:none; border-bottom:none;} -.laydate_body .laydate_table td{border:none; height:21px!important; line-height:21px!important; background-color:#fff; color:#00625A;} -.laydate_body .laydate_table .laydate_nothis{color:#999;} -.laydate_body .laydate_table thead{border-bottom:1px solid #ccc; height:21px!important; line-height:21px!important;} -.laydate_body .laydate_table thead th{} -.laydate_body .laydate_bottom{border:1px solid #ccc; border-top:none;} -.laydate_body .laydate_bottom #laydate_hms{background-color:#fff;} -.laydate_body .laydate_time{background-color:#fff;} -.laydate_body .laydate_time1{width: 226px!important; height: 152px!important;} -.laydate_body .laydate_bottom .laydate_sj{width:31px!important; border-right:1px solid #ccc; background-color:#fff;} -.laydate_body .laydate_bottom input{background-color:#fff; color:#00625A;} -.laydate_body .laydate_bottom .laydte_hsmtex{border-bottom:1px solid #ccc;} -.laydate_body .laydate_bottom .laydate_btn{border-right:1px solid #ccc;} -.laydate_body .laydate_bottom .laydate_v{color:#999} -.laydate_body .laydate_bottom .laydate_btn a{border: 1px solid #ccc; border-right:none; background-color:#fff;} -.laydate_body .laydate_bottom .laydate_btn a:hover{background-color:#F6F6F6; color:#00625A;} - -.laydate_body .laydate_m .laydate_yms span:hover, -.laydate_body .laydate_time .laydate_hmsno span:hover, -.laydate_body .laydate_y .laydate_yms ul li:hover, -.laydate_body .laydate_table td:hover{background-color:#00C1B3; color:#fff;} - - diff --git a/src/main/resources/static/ajax/libs/layer/layer.js b/src/main/resources/static/ajax/libs/layer/layer.js deleted file mode 100644 index 12cb6b5c..00000000 --- a/src/main/resources/static/ajax/libs/layer/layer.js +++ /dev/null @@ -1,2 +0,0 @@ -/*! layer-v3.1.1 Web弹层组件 MIT License http://layer.layui.com/ By 贤心 */ - ;!function(e,t){"use strict";var i,n,a=e.layui&&layui.define,o={getPath:function(){var e=document.currentScript?document.currentScript.src:function(){for(var e,t=document.scripts,i=t.length-1,n=i;n>0;n--)if("interactive"===t[n].readyState){e=t[n].src;break}return e||t[i].src}();return e.substring(0,e.lastIndexOf("/")+1)}(),config:{},end:{},minIndex:0,minLeft:[],btn:["确定","取消"],type:["dialog","page","iframe","loading","tips"],getStyle:function(t,i){var n=t.currentStyle?t.currentStyle:e.getComputedStyle(t,null);return n[n.getPropertyValue?"getPropertyValue":"getAttribute"](i)},link:function(t,i,n){if(r.path){var a=document.getElementsByTagName("head")[0],s=document.createElement("link");"string"==typeof i&&(n=i);var l=(n||t).replace(/\.|\//g,""),f="layuicss-"+l,c=0;s.rel="stylesheet",s.href=r.path+t,s.id=f,document.getElementById(f)||a.appendChild(s),"function"==typeof i&&!function u(){return++c>80?e.console&&console.error("layer.css: Invalid"):void(1989===parseInt(o.getStyle(document.getElementById(f),"width"))?i():setTimeout(u,100))}()}}},r={v:"3.1.1",ie:function(){var t=navigator.userAgent.toLowerCase();return!!(e.ActiveXObject||"ActiveXObject"in e)&&((t.match(/msie\s(\d+)/)||[])[1]||"11")}(),index:e.layer&&e.layer.v?1e5:0,path:o.getPath,config:function(e,t){return e=e||{},r.cache=o.config=i.extend({},o.config,e),r.path=o.config.path||r.path,"string"==typeof e.extend&&(e.extend=[e.extend]),o.config.path&&r.ready(),e.extend?(a?layui.addcss("modules/layer/"+e.extend):o.link("theme/"+e.extend),this):this},ready:function(e){var t="layer",i="",n=(a?"modules/layer/":"theme/")+"default/layer.css?v="+r.v+i;return a?layui.addcss(n,e,t):o.link(n,e,t),this},alert:function(e,t,n){var a="function"==typeof t;return a&&(n=t),r.open(i.extend({content:e,yes:n},a?{}:t))},confirm:function(e,t,n,a){var s="function"==typeof t;return s&&(a=n,n=t),r.open(i.extend({content:e,btn:o.btn,yes:n,btn2:a},s?{}:t))},msg:function(e,n,a){var s="function"==typeof n,f=o.config.skin,c=(f?f+" "+f+"-msg":"")||"layui-layer-msg",u=l.anim.length-1;return s&&(a=n),r.open(i.extend({content:e,time:3e3,shade:!1,skin:c,title:!1,closeBtn:!1,btn:!1,resize:!1,end:a},s&&!o.config.skin?{skin:c+" layui-layer-hui",anim:u}:function(){return n=n||{},(n.icon===-1||n.icon===t&&!o.config.skin)&&(n.skin=c+" "+(n.skin||"layui-layer-hui")),n}()))},load:function(e,t){return r.open(i.extend({type:3,icon:e||0,resize:!1,shade:.01},t))},tips:function(e,t,n){return r.open(i.extend({type:4,content:[e,t],closeBtn:!1,time:3e3,shade:!1,resize:!1,fixed:!1,maxWidth:210},n))}},s=function(e){var t=this;t.index=++r.index,t.config=i.extend({},t.config,o.config,e),document.body?t.creat():setTimeout(function(){t.creat()},30)};s.pt=s.prototype;var l=["layui-layer",".layui-layer-title",".layui-layer-main",".layui-layer-dialog","layui-layer-iframe","layui-layer-content","layui-layer-btn","layui-layer-close"];l.anim=["layer-anim-00","layer-anim-01","layer-anim-02","layer-anim-03","layer-anim-04","layer-anim-05","layer-anim-06"],s.pt.config={type:0,shade:.3,fixed:!0,move:l[1],title:"信息",offset:"auto",area:"auto",closeBtn:1,time:0,zIndex:19891014,maxWidth:360,anim:0,isOutAnim:!0,icon:-1,moveType:1,resize:!0,scrollbar:!0,tips:2},s.pt.vessel=function(e,t){var n=this,a=n.index,r=n.config,s=r.zIndex+a,f="object"==typeof r.title,c=r.maxmin&&(1===r.type||2===r.type),u=r.title?'
      '+(f?r.title[0]:r.title)+"
      ":"";return r.zIndex=s,t([r.shade?'
      ':"",'
      '+(e&&2!=r.type?"":u)+'
      '+(0==r.type&&r.icon!==-1?'':"")+(1==r.type&&e?"":r.content||"")+'
      '+function(){var e=c?'':"";return r.closeBtn&&(e+=''),e}()+""+(r.btn?function(){var e="";"string"==typeof r.btn&&(r.btn=[r.btn]);for(var t=0,i=r.btn.length;t'+r.btn[t]+"";return'
      '+e+"
      "}():"")+(r.resize?'':"")+"
      "],u,i('
      ')),n},s.pt.creat=function(){var e=this,t=e.config,a=e.index,s=t.content,f="object"==typeof s,c=i("body");if(!t.id||!i("#"+t.id)[0]){switch("string"==typeof t.area&&(t.area="auto"===t.area?["",""]:[t.area,""]),t.shift&&(t.anim=t.shift),6==r.ie&&(t.fixed=!1),t.type){case 0:t.btn="btn"in t?t.btn:o.btn[0],r.closeAll("dialog");break;case 2:var s=t.content=f?t.content:[t.content||"http://layer.layui.com","auto"];t.content='';break;case 3:delete t.title,delete t.closeBtn,t.icon===-1&&0===t.icon,r.closeAll("loading");break;case 4:f||(t.content=[t.content,"body"]),t.follow=t.content[1],t.content=t.content[0]+'',delete t.title,t.tips="object"==typeof t.tips?t.tips:[t.tips,!0],t.tipsMore||r.closeAll("tips")}if(e.vessel(f,function(n,r,u){c.append(n[0]),f?function(){2==t.type||4==t.type?function(){i("body").append(n[1])}():function(){s.parents("."+l[0])[0]||(s.data("display",s.css("display")).show().addClass("layui-layer-wrap").wrap(n[1]),i("#"+l[0]+a).find("."+l[5]).before(r))}()}():c.append(n[1]),i(".layui-layer-move")[0]||c.append(o.moveElem=u),e.layero=i("#"+l[0]+a),t.scrollbar||l.html.css("overflow","hidden").attr("layer-full",a)}).auto(a),i("#layui-layer-shade"+e.index).css({"background-color":t.shade[1]||"#000",opacity:t.shade[0]||t.shade}),2==t.type&&6==r.ie&&e.layero.find("iframe").attr("src",s[0]),4==t.type?e.tips():e.offset(),t.fixed&&n.on("resize",function(){e.offset(),(/^\d+%$/.test(t.area[0])||/^\d+%$/.test(t.area[1]))&&e.auto(a),4==t.type&&e.tips()}),t.time<=0||setTimeout(function(){r.close(e.index)},t.time),e.move().callback(),l.anim[t.anim]){var u="layer-anim "+l.anim[t.anim];e.layero.addClass(u).one("webkitAnimationEnd mozAnimationEnd MSAnimationEnd oanimationend animationend",function(){i(this).removeClass(u)})}t.isOutAnim&&e.layero.data("isOutAnim",!0)}},s.pt.auto=function(e){var t=this,a=t.config,o=i("#"+l[0]+e);""===a.area[0]&&a.maxWidth>0&&(r.ie&&r.ie<8&&a.btn&&o.width(o.innerWidth()),o.outerWidth()>a.maxWidth&&o.width(a.maxWidth));var s=[o.innerWidth(),o.innerHeight()],f=o.find(l[1]).outerHeight()||0,c=o.find("."+l[6]).outerHeight()||0,u=function(e){e=o.find(e),e.height(s[1]-f-c-2*(0|parseFloat(e.css("padding-top"))))};switch(a.type){case 2:u("iframe");break;default:""===a.area[1]?a.maxHeight>0&&o.outerHeight()>a.maxHeight?(s[1]=a.maxHeight,u("."+l[5])):a.fixed&&s[1]>=n.height()&&(s[1]=n.height(),u("."+l[5])):u("."+l[5])}return t},s.pt.offset=function(){var e=this,t=e.config,i=e.layero,a=[i.outerWidth(),i.outerHeight()],o="object"==typeof t.offset;e.offsetTop=(n.height()-a[1])/2,e.offsetLeft=(n.width()-a[0])/2,o?(e.offsetTop=t.offset[0],e.offsetLeft=t.offset[1]||e.offsetLeft):"auto"!==t.offset&&("t"===t.offset?e.offsetTop=0:"r"===t.offset?e.offsetLeft=n.width()-a[0]:"b"===t.offset?e.offsetTop=n.height()-a[1]:"l"===t.offset?e.offsetLeft=0:"lt"===t.offset?(e.offsetTop=0,e.offsetLeft=0):"lb"===t.offset?(e.offsetTop=n.height()-a[1],e.offsetLeft=0):"rt"===t.offset?(e.offsetTop=0,e.offsetLeft=n.width()-a[0]):"rb"===t.offset?(e.offsetTop=n.height()-a[1],e.offsetLeft=n.width()-a[0]):e.offsetTop=t.offset),t.fixed||(e.offsetTop=/%$/.test(e.offsetTop)?n.height()*parseFloat(e.offsetTop)/100:parseFloat(e.offsetTop),e.offsetLeft=/%$/.test(e.offsetLeft)?n.width()*parseFloat(e.offsetLeft)/100:parseFloat(e.offsetLeft),e.offsetTop+=n.scrollTop(),e.offsetLeft+=n.scrollLeft()),i.attr("minLeft")&&(e.offsetTop=n.height()-(i.find(l[1]).outerHeight()||0),e.offsetLeft=i.css("left")),i.css({top:e.offsetTop,left:e.offsetLeft})},s.pt.tips=function(){var e=this,t=e.config,a=e.layero,o=[a.outerWidth(),a.outerHeight()],r=i(t.follow);r[0]||(r=i("body"));var s={width:r.outerWidth(),height:r.outerHeight(),top:r.offset().top,left:r.offset().left},f=a.find(".layui-layer-TipsG"),c=t.tips[0];t.tips[1]||f.remove(),s.autoLeft=function(){s.left+o[0]-n.width()>0?(s.tipLeft=s.left+s.width-o[0],f.css({right:12,left:"auto"})):s.tipLeft=s.left},s.where=[function(){s.autoLeft(),s.tipTop=s.top-o[1]-10,f.removeClass("layui-layer-TipsB").addClass("layui-layer-TipsT").css("border-right-color",t.tips[1])},function(){s.tipLeft=s.left+s.width+10,s.tipTop=s.top,f.removeClass("layui-layer-TipsL").addClass("layui-layer-TipsR").css("border-bottom-color",t.tips[1])},function(){s.autoLeft(),s.tipTop=s.top+s.height+10,f.removeClass("layui-layer-TipsT").addClass("layui-layer-TipsB").css("border-right-color",t.tips[1])},function(){s.tipLeft=s.left-o[0]-10,s.tipTop=s.top,f.removeClass("layui-layer-TipsR").addClass("layui-layer-TipsL").css("border-bottom-color",t.tips[1])}],s.where[c-1](),1===c?s.top-(n.scrollTop()+o[1]+16)<0&&s.where[2]():2===c?n.width()-(s.left+s.width+o[0]+16)>0||s.where[3]():3===c?s.top-n.scrollTop()+s.height+o[1]+16-n.height()>0&&s.where[0]():4===c&&o[0]+16-s.left>0&&s.where[1](),a.find("."+l[5]).css({"background-color":t.tips[1],"padding-right":t.closeBtn?"30px":""}),a.css({left:s.tipLeft-(t.fixed?n.scrollLeft():0),top:s.tipTop-(t.fixed?n.scrollTop():0)})},s.pt.move=function(){var e=this,t=e.config,a=i(document),s=e.layero,l=s.find(t.move),f=s.find(".layui-layer-resize"),c={};return t.move&&l.css("cursor","move"),l.on("mousedown",function(e){e.preventDefault(),t.move&&(c.moveStart=!0,c.offset=[e.clientX-parseFloat(s.css("left")),e.clientY-parseFloat(s.css("top"))],o.moveElem.css("cursor","move").show())}),f.on("mousedown",function(e){e.preventDefault(),c.resizeStart=!0,c.offset=[e.clientX,e.clientY],c.area=[s.outerWidth(),s.outerHeight()],o.moveElem.css("cursor","se-resize").show()}),a.on("mousemove",function(i){if(c.moveStart){var a=i.clientX-c.offset[0],o=i.clientY-c.offset[1],l="fixed"===s.css("position");if(i.preventDefault(),c.stX=l?0:n.scrollLeft(),c.stY=l?0:n.scrollTop(),!t.moveOut){var f=n.width()-s.outerWidth()+c.stX,u=n.height()-s.outerHeight()+c.stY;af&&(a=f),ou&&(o=u)}s.css({left:a,top:o})}if(t.resize&&c.resizeStart){var a=i.clientX-c.offset[0],o=i.clientY-c.offset[1];i.preventDefault(),r.style(e.index,{width:c.area[0]+a,height:c.area[1]+o}),c.isResize=!0,t.resizing&&t.resizing(s)}}).on("mouseup",function(e){c.moveStart&&(delete c.moveStart,o.moveElem.hide(),t.moveEnd&&t.moveEnd(s)),c.resizeStart&&(delete c.resizeStart,o.moveElem.hide())}),e},s.pt.callback=function(){function e(){var e=a.cancel&&a.cancel(t.index,n);e===!1||r.close(t.index)}var t=this,n=t.layero,a=t.config;t.openLayer(),a.success&&(2==a.type?n.find("iframe").on("load",function(){a.success(n,t.index)}):a.success(n,t.index)),6==r.ie&&t.IE6(n),n.find("."+l[6]).children("a").on("click",function(){var e=i(this).index();if(0===e)a.yes?a.yes(t.index,n):a.btn1?a.btn1(t.index,n):r.close(t.index);else{var o=a["btn"+(e+1)]&&a["btn"+(e+1)](t.index,n);o===!1||r.close(t.index)}}),n.find("."+l[7]).on("click",e),a.shadeClose&&i("#layui-layer-shade"+t.index).on("click",function(){r.close(t.index)}),n.find(".layui-layer-min").on("click",function(){var e=a.min&&a.min(n);e===!1||r.min(t.index,a)}),n.find(".layui-layer-max").on("click",function(){i(this).hasClass("layui-layer-maxmin")?(r.restore(t.index),a.restore&&a.restore(n)):(r.full(t.index,a),setTimeout(function(){a.full&&a.full(n)},100))}),a.end&&(o.end[t.index]=a.end)},o.reselect=function(){i.each(i("select"),function(e,t){var n=i(this);n.parents("."+l[0])[0]||1==n.attr("layer")&&i("."+l[0]).length<1&&n.removeAttr("layer").show(),n=null})},s.pt.IE6=function(e){i("select").each(function(e,t){var n=i(this);n.parents("."+l[0])[0]||"none"===n.css("display")||n.attr({layer:"1"}).hide(),n=null})},s.pt.openLayer=function(){var e=this;r.zIndex=e.config.zIndex,r.setTop=function(e){var t=function(){r.zIndex++,e.css("z-index",r.zIndex+1)};return r.zIndex=parseInt(e[0].style.zIndex),e.on("mousedown",t),r.zIndex}},o.record=function(e){var t=[e.width(),e.height(),e.position().top,e.position().left+parseFloat(e.css("margin-left"))];e.find(".layui-layer-max").addClass("layui-layer-maxmin"),e.attr({area:t})},o.rescollbar=function(e){l.html.attr("layer-full")==e&&(l.html[0].style.removeProperty?l.html[0].style.removeProperty("overflow"):l.html[0].style.removeAttribute("overflow"),l.html.removeAttr("layer-full"))},e.layer=r,r.getChildFrame=function(e,t){return t=t||i("."+l[4]).attr("times"),i("#"+l[0]+t).find("iframe").contents().find(e)},r.getFrameIndex=function(e){return i("#"+e).parents("."+l[4]).attr("times")},r.iframeAuto=function(e){if(e){var t=r.getChildFrame("html",e).outerHeight(),n=i("#"+l[0]+e),a=n.find(l[1]).outerHeight()||0,o=n.find("."+l[6]).outerHeight()||0;n.css({height:t+a+o}),n.find("iframe").css({height:t})}},r.iframeSrc=function(e,t){i("#"+l[0]+e).find("iframe").attr("src",t)},r.style=function(e,t,n){var a=i("#"+l[0]+e),r=a.find(".layui-layer-content"),s=a.attr("type"),f=a.find(l[1]).outerHeight()||0,c=a.find("."+l[6]).outerHeight()||0;a.attr("minLeft");s!==o.type[3]&&s!==o.type[4]&&(n||(parseFloat(t.width)<=260&&(t.width=260),parseFloat(t.height)-f-c<=64&&(t.height=64+f+c)),a.css(t),c=a.find("."+l[6]).outerHeight(),s===o.type[2]?a.find("iframe").css({height:parseFloat(t.height)-f-c}):r.css({height:parseFloat(t.height)-f-c-parseFloat(r.css("padding-top"))-parseFloat(r.css("padding-bottom"))}))},r.min=function(e,t){var a=i("#"+l[0]+e),s=a.find(l[1]).outerHeight()||0,f=a.attr("minLeft")||181*o.minIndex+"px",c=a.css("position");o.record(a),o.minLeft[0]&&(f=o.minLeft[0],o.minLeft.shift()),a.attr("position",c),r.style(e,{width:180,height:s,left:f,top:n.height()-s,position:"fixed",overflow:"hidden"},!0),a.find(".layui-layer-min").hide(),"page"===a.attr("type")&&a.find(l[4]).hide(),o.rescollbar(e),a.attr("minLeft")||o.minIndex++,a.attr("minLeft",f)},r.restore=function(e){var t=i("#"+l[0]+e),n=t.attr("area").split(",");t.attr("type");r.style(e,{width:parseFloat(n[0]),height:parseFloat(n[1]),top:parseFloat(n[2]),left:parseFloat(n[3]),position:t.attr("position"),overflow:"visible"},!0),t.find(".layui-layer-max").removeClass("layui-layer-maxmin"),t.find(".layui-layer-min").show(),"page"===t.attr("type")&&t.find(l[4]).show(),o.rescollbar(e)},r.full=function(e){var t,a=i("#"+l[0]+e);o.record(a),l.html.attr("layer-full")||l.html.css("overflow","hidden").attr("layer-full",e),clearTimeout(t),t=setTimeout(function(){var t="fixed"===a.css("position");r.style(e,{top:t?0:n.scrollTop(),left:t?0:n.scrollLeft(),width:n.width(),height:n.height()},!0),a.find(".layui-layer-min").hide()},100)},r.title=function(e,t){var n=i("#"+l[0]+(t||r.index)).find(l[1]);n.html(e)},r.close=function(e){var t=i("#"+l[0]+e),n=t.attr("type"),a="layer-anim-close";if(t[0]){var s="layui-layer-wrap",f=function(){if(n===o.type[1]&&"object"===t.attr("conType")){t.children(":not(."+l[5]+")").remove();for(var a=t.find("."+s),r=0;r<2;r++)a.unwrap();a.css("display",a.data("display")).removeClass(s)}else{if(n===o.type[2])try{var f=i("#"+l[4]+e)[0];f.contentWindow.document.write(""),f.contentWindow.close(),t.find("."+l[5])[0].removeChild(f)}catch(c){}t[0].innerHTML="",t.remove()}"function"==typeof o.end[e]&&o.end[e](),delete o.end[e]};t.data("isOutAnim")&&t.addClass("layer-anim "+a),i("#layui-layer-moves, #layui-layer-shade"+e).remove(),6==r.ie&&o.reselect(),o.rescollbar(e),t.attr("minLeft")&&(o.minIndex--,o.minLeft.push(t.attr("minLeft"))),r.ie&&r.ie<10||!t.data("isOutAnim")?f():setTimeout(function(){f()},200)}},r.closeAll=function(e){i.each(i("."+l[0]),function(){var t=i(this),n=e?t.attr("type")===e:1;n&&r.close(t.attr("times")),n=null})};var f=r.cache||{},c=function(e){return f.skin?" "+f.skin+" "+f.skin+"-"+e:""};r.prompt=function(e,t){var a="";if(e=e||{},"function"==typeof e&&(t=e),e.area){var o=e.area;a='style="width: '+o[0]+"; height: "+o[1]+';"',delete e.area}var s,l=2==e.formType?'":function(){return''}(),f=e.success;return delete e.success,r.open(i.extend({type:1,btn:["确定","取消"],content:l,skin:"layui-layer-prompt"+c("prompt"),maxWidth:n.width(),success:function(e){s=e.find(".layui-layer-input"),s.focus(),"function"==typeof f&&f(e)},resize:!1,yes:function(i){var n=s.val();""===n?s.focus():n.length>(e.maxlength||500)?r.tips("最多输入"+(e.maxlength||500)+"个字数",s,{tips:1}):t&&t(n,i,s)}},e))},r.tab=function(e){e=e||{};var t=e.tab||{},n="layui-this",a=e.success;return delete e.success,r.open(i.extend({type:1,skin:"layui-layer-tab"+c("tab"),resize:!1,title:function(){var e=t.length,i=1,a="";if(e>0)for(a=''+t[0].title+"";i"+t[i].title+"";return a}(),content:'
        '+function(){var e=t.length,i=1,a="";if(e>0)for(a='
      • '+(t[0].content||"no content")+"
      • ";i'+(t[i].content||"no content")+"";return a}()+"
      ",success:function(t){var o=t.find(".layui-layer-title").children(),r=t.find(".layui-layer-tabmain").children();o.on("mousedown",function(t){t.stopPropagation?t.stopPropagation():t.cancelBubble=!0;var a=i(this),o=a.index();a.addClass(n).siblings().removeClass(n),r.eq(o).show().siblings().hide(),"function"==typeof e.change&&e.change(o)}),"function"==typeof a&&a(t)}},e))},r.photos=function(t,n,a){function o(e,t,i){var n=new Image;return n.src=e,n.complete?t(n):(n.onload=function(){n.onload=null,t(n)},void(n.onerror=function(e){n.onerror=null,i(e)}))}var s={};if(t=t||{},t.photos){var l=t.photos.constructor===Object,f=l?t.photos:{},u=f.data||[],d=f.start||0;s.imgIndex=(0|d)+1,t.img=t.img||"img";var y=t.success;if(delete t.success,l){if(0===u.length)return r.msg("没有图片")}else{var p=i(t.photos),h=function(){u=[],p.find(t.img).each(function(e){var t=i(this);t.attr("layer-index",e),u.push({alt:t.attr("alt"),pid:t.attr("layer-pid"),src:t.attr("layer-src")||t.attr("src"),thumb:t.attr("src")})})};if(h(),0===u.length)return;if(n||p.on("click",t.img,function(){var e=i(this),n=e.attr("layer-index");r.photos(i.extend(t,{photos:{start:n,data:u,tab:t.tab},full:t.full}),!0),h()}),!n)return}s.imgprev=function(e){s.imgIndex--,s.imgIndex<1&&(s.imgIndex=u.length),s.tabimg(e)},s.imgnext=function(e,t){s.imgIndex++,s.imgIndex>u.length&&(s.imgIndex=1,t)||s.tabimg(e)},s.keyup=function(e){if(!s.end){var t=e.keyCode;e.preventDefault(),37===t?s.imgprev(!0):39===t?s.imgnext(!0):27===t&&r.close(s.index)}},s.tabimg=function(e){if(!(u.length<=1))return f.start=s.imgIndex-1,r.close(s.index),r.photos(t,!0,e)},s.event=function(){s.bigimg.hover(function(){s.imgsee.show()},function(){s.imgsee.hide()}),s.bigimg.find(".layui-layer-imgprev").on("click",function(e){e.preventDefault(),s.imgprev()}),s.bigimg.find(".layui-layer-imgnext").on("click",function(e){e.preventDefault(),s.imgnext()}),i(document).on("keyup",s.keyup)},s.loadi=r.load(1,{shade:!("shade"in t)&&.9,scrollbar:!1}),o(u[d].src,function(n){r.close(s.loadi),s.index=r.open(i.extend({type:1,id:"layui-layer-photos",area:function(){var a=[n.width,n.height],o=[i(e).width()-100,i(e).height()-100];if(!t.full&&(a[0]>o[0]||a[1]>o[1])){var r=[a[0]/o[0],a[1]/o[1]];r[0]>r[1]?(a[0]=a[0]/r[0],a[1]=a[1]/r[0]):r[0]'+(u[d].alt||
      '+(u.length>1?'':"")+'
      '+(u[d].alt||"")+""+s.imgIndex+"/"+u.length+"
      ",success:function(e,i){s.bigimg=e.find(".layui-layer-phimg"),s.imgsee=e.find(".layui-layer-imguide,.layui-layer-imgbar"),s.event(e),t.tab&&t.tab(u[d],e),"function"==typeof y&&y(e)},end:function(){s.end=!0,i(document).off("keyup",s.keyup)}},t))},function(){r.close(s.loadi),r.msg("当前图片地址异常
      是否继续查看下一张?",{time:3e4,btn:["下一张","不看了"],yes:function(){u.length>1&&s.imgnext(!0,!0)}})})}},o.run=function(t){i=t,n=i(e),l.html=i("html"),r.open=function(e){var t=new s(e);return t.index}},e.layui&&layui.define?(r.ready(),layui.define("jquery",function(t){r.path=layui.cache.dir,o.run(layui.$),e.layer=r,t("layer",r)})):"function"==typeof define&&define.amd?define(["jquery"],function(){return o.run(e.jQuery),r}):function(){o.run(e.jQuery),r.ready()}()}(window); \ No newline at end of file diff --git a/src/main/resources/static/ajax/libs/layer/mobile/layer.js b/src/main/resources/static/ajax/libs/layer/mobile/layer.js deleted file mode 100644 index f9cf6931..00000000 --- a/src/main/resources/static/ajax/libs/layer/mobile/layer.js +++ /dev/null @@ -1,2 +0,0 @@ -/*! layer mobile-v2.0.0 Web弹层组件 MIT License http://layer.layui.com/mobile By 贤心 */ - ;!function(e){"use strict";var t=document,n="querySelectorAll",i="getElementsByClassName",a=function(e){return t[n](e)},s={type:0,shade:!0,shadeClose:!0,fixed:!0,anim:"scale"},l={extend:function(e){var t=JSON.parse(JSON.stringify(s));for(var n in e)t[n]=e[n];return t},timer:{},end:{}};l.touch=function(e,t){e.addEventListener("click",function(e){t.call(this,e)},!1)};var r=0,o=["layui-m-layer"],c=function(e){var t=this;t.config=l.extend(e),t.view()};c.prototype.view=function(){var e=this,n=e.config,s=t.createElement("div");e.id=s.id=o[0]+r,s.setAttribute("class",o[0]+" "+o[0]+(n.type||0)),s.setAttribute("index",r);var l=function(){var e="object"==typeof n.title;return n.title?'

      '+(e?n.title[0]:n.title)+"

      ":""}(),c=function(){"string"==typeof n.btn&&(n.btn=[n.btn]);var e,t=(n.btn||[]).length;return 0!==t&&n.btn?(e=''+n.btn[0]+"",2===t&&(e=''+n.btn[1]+""+e),'
      '+e+"
      "):""}();if(n.fixed||(n.top=n.hasOwnProperty("top")?n.top:100,n.style=n.style||"",n.style+=" top:"+(t.body.scrollTop+n.top)+"px"),2===n.type&&(n.content='

      '+(n.content||"")+"

      "),n.skin&&(n.anim="up"),"msg"===n.skin&&(n.shade=!1),s.innerHTML=(n.shade?"
      ':"")+'
      "+l+'
      '+n.content+"
      "+c+"
      ",!n.type||2===n.type){var d=t[i](o[0]+n.type),y=d.length;y>=1&&layer.close(d[0].getAttribute("index"))}document.body.appendChild(s);var u=e.elem=a("#"+e.id)[0];n.success&&n.success(u),e.index=r++,e.action(n,u)},c.prototype.action=function(e,t){var n=this;e.time&&(l.timer[n.index]=setTimeout(function(){layer.close(n.index)},1e3*e.time));var a=function(){var t=this.getAttribute("type");0==t?(e.no&&e.no(),layer.close(n.index)):e.yes?e.yes(n.index):layer.close(n.index)};if(e.btn)for(var s=t[i]("layui-m-layerbtn")[0].children,r=s.length,o=0;odiv{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%;height:50px;line-height:50px;font-size:0;border-top:1px solid #D0D0D0;background-color:#F2F2F2}.layui-m-layerbtn span{display:block;-moz-box-flex:1;box-flex:1;-webkit-box-flex:1;font-size:14px;cursor:pointer}.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:active{background-color:#F6F6F6}.layui-m-layerend{position:absolute;right:7px;top:10px;width:30px;height:30px;border:0;font-weight:400;background:0 0;cursor:pointer;-webkit-appearance:none;font-size:30px}.layui-m-layerend::after,.layui-m-layerend::before{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)}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:0 0}.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:0 0;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[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}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} \ No newline at end of file diff --git a/src/main/resources/static/ajax/libs/layer/skin/default/icon-ext.png b/src/main/resources/static/ajax/libs/layer/skin/default/icon-ext.png deleted file mode 100644 index bbbb669bb311514baa5db3a6a00b4644d0e280f1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5911 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 B6HNdB diff --git a/src/main/resources/static/ajax/libs/layer/skin/default/loading-0.gif b/src/main/resources/static/ajax/libs/layer/skin/default/loading-0.gif deleted file mode 100644 index 6f3c9539a22171cc2f12639492e346d97a9078e8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5793 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 bWW^%>x7XlHV^#Q1uOX^B?ki3(VEg|7!QHuF diff --git a/src/main/resources/static/ajax/libs/layer/skin/default/loading-1.gif b/src/main/resources/static/ajax/libs/layer/skin/default/loading-1.gif deleted file mode 100644 index db3a483e4b74971fbfb1cc0fb6499852cedfe650..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 701 zcmZ?wbhEHbRAo?Qn8?Ji_w)@mZNLBj|1&T!DE{a6a}5c0b_{Se(lcOY1PT3QVdY|A zV$cDyff`g97?`@J^shYqmS1s(LX_+4yGox$4el*+Jm?ved2^25GBru=T^dGm#<906 za&AQCZ08H8P;Bd&{NT;vl&}c_^L4%p?g_hjBu{YB29{c>Ob}p@z~Ks3xCw+@!HClp xtZ<(QPf3`00FNu+VbOvoEE+h73k#4LIKl$IE8t;)<_eUs!0QU6uz&iJhvXcHF*h)T1OnEW1i^?zgDfop1p?usL*#PMGT;HQkSO{q6FlJyb$PWkPf|h*eTST}7h8z$}MF(XD(aQ)ZLZ zM?v0rT<1C4XHn<6PbNA{XL@>1^)apdD_@tcYDrW#m`k#MmslI7p^P;Az74wGs`!SI zLs$GEZHsafXsu1i-WleMzAL(yw$-LK{0hv;6hrx8kx!!4$``dAyBnY9Jz&DqJo2$A z!(L$H=KqBeY~CF_viHPz^tTglc?D97CqEBjzUwH}7GI zapg8YZM~>2Wk%E$d&r@9ly9b4Q zJpM7T@}r63I(OExUlG%Xcjz3MU+9U^r!SkpjNThDtaP)7>j6L5z%o5|^hlVOyI*uY zt^UU6NTuY?(Lb4ZIU2Zb5Vz}Pb7KF%ivf&j^CL>$cDz?rMNTQQ|NqDVD7mhghUp%h zhIA{gi{S8y9YhIIbSv$`B!JiPi!0#4#Jge0)p&YVPHchWcyAn zQhvb8ggXGXs9;k`u9Uq*YB>O+Q3Rq=2hlLFcG{Q3ORH_}JnY8C+r%@}6|%ySP%bWG zV~mA;?P`Q2L_Ss})nrJ{$TmeA9Tt*4=}X5x%RioM@_?ZsKSEST-f+GBv~Ya)xX3O{ z8!d=YthI-13OI;RN~`>|6u5L{z20oBp%9MIj)n$!Aw{Wpq&Rtr4~*_74Gjo@3el>B zz(Rk;;>2lp73<2;d=r*8z%WkdsG=vRuG_fvxO#uN^El|+5Qoz^X!2MfxJ3m}vyi?> zMLLDi8+${Z6YbUg?8GNR>-+SwHKdFyr%HqWcs|X_l*-DAC^bG&KCqWg7-_`UlwQ`EdOp_LJkr`L$mHHs75uP?fSgVfsDjuE#ft2b8HDt0yFt!+;C zEgL=)G9ZFt4wa+N3Xg7FGc0~`&EEt6_%7tyzmnb9B_h1~7~GD4V-Bhx7~QKRkF>&aT>(-!Us@aJxAY@8E?HW$G8g zSz@7Jcp>iCp;lU1ieF6n7!oAa-1E!rS0 zF1lBFVS%G#ZO}b@*+bIk+7@Q|iG60vIDVpV%4tW8rKyzwRo_<25;8*Ky@n z-sX>W*b;M){5lB_Edc@m1`VHy0@dg$PTR9uE$O2&a?KAe?xRlCj&Z$iZYwXoo5_Jg=g#%% wwZ%^O`2PNWiCdEY|Nrk-Jkhdnx?2-NuqF3Pjsr>Gfw~wxUHx3vIVCg!0DEac5dZ)H diff --git a/src/main/resources/static/ajax/libs/layer/skin/default/xubox_ico0.png b/src/main/resources/static/ajax/libs/layer/skin/default/xubox_ico0.png deleted file mode 100644 index 7754a47f7ccd1eff1f854ffe9850f5ab38aa62ad..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 32954 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 diff --git a/src/main/resources/static/ajax/libs/layer/skin/default/xubox_loading0.gif b/src/main/resources/static/ajax/libs/layer/skin/default/xubox_loading0.gif deleted file mode 100644 index 6f3c9539a22171cc2f12639492e346d97a9078e8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5793 zcmbW5cU)6v_rUK>LIz0)&0r|DVJRw*1lb}G2peR}lqQ5=SV;(BqpU!Hu=ge)A|fDV zMnRUdimSG+R*hC$tpn_M)!Noy@U8Xr_u=>c@ykEC&%Mt%=lMS8oadZ--8@{aZCG}I z7BGebe);m?iyNnY9jWG}WkHcomKiq!H0N%y|Z(D%p z&!6kQMelS83UsFXxtN(!p&$SN%3Gm6eq;tq#8Up-Ib;Y}>;#U89L?Di$J?Q|JUypJ zj*Ho$7h>T<^$|F8xN+`TLQY`T&LDPH0^24=&%vH-mtmWcBuL_jSmcbPL|%$*#tuDJ z3_qGbmPg=R{n2;a?F<$EvXb!`@oxrOAC@qIqx7OHD=~%h?tzbwt*>(NaXeNcgU?P);_yTs zj2(JP5!0Bs7+botGlM~Q-9~dUqgq7#Gp{&N*f5hJVTgrf5z5FMWl!JeAk;7BEPN>W@@a$hKj`T51l^7Cg;pZxUr(T_hoeDMAKdy2bvZh!aft(!NlU;F0kt6yEY zeCgtarSs>$JbUK!sgoxb7v|??kIzgWJ1U==oERS){bJ+si%9kF8k6S;vF#VRPfpm*grT3@NznT%W8z&^0I1iq1 zj*rNPMweK>GA`*DO`eBg%K8@tCk?c27+bQEO&Y!{TcDfPVYTzqE~xuK?(#{@;q5>Z z(6*O&vWbUBr=^*b5ZMVnctozJ6vr0Fa!Ih#a2TP|i=bK;tE$nQ(AK`4AWPlf8`gJ_ zc4&a3(KOVGw;7>8JIB;|Btw|$ifL~`?LY(ngd6+}b_tvdCWJJz@PaeJ=fq39OK)AD zet^GQzaD}NN9L2P4?>GcKo>_f!+`{P`T9s1vR|?ip}2 z$a)n$tFoXul~e= zC^aO}=v3E2A(9YXvSti?^8ub|RLLgm__XSM=_GX2;V;VWJg%Mzb)q_wS?QlB1Vz10 zEaZwoiHuk>0!uvOy0Gv}h@Ckh%ITMlLXX@6$>8agNrP&iq3fppMEfDn^00{XD5fqt zN07P4tuS6yk6#iflv-EBSJ&3z8?2h5^uX4Dow$xIU6ECK`{@LDYC%(xZuEXmN-Fly z0bS6c7IqvL>Nc7_t_Nv_kbq-n#J+QaMNQN(=owYvReQSgiHoP)ptpVP(5MHSQTHGD zn$a>>e*4$USENtYa`T;!NPCG$x7Ll0M^WxNo9L4UKEqGkpX`D_*zP)d8cohTKdx=+ z>|K4o!F49`cch34`m-tZ@WT*K^3-p~Qc!XC6Aj6R^8D=OvlU*kB9}NkGbfuVHV7&R zMsBo`@Kmq}Q=p;}53p*Z>KhH4TNqWi_N>lGnQ3`1rY`|IaJa!Czoo2rywm}41e5D| zsB@nKC>JFY+QU1U-42izH!_|JG~xx+405hzOs% z%hYX0mWLKAKtaab9jC7){q~Tt#G1=0)2F^K?#}XKqo3P}>_~mj%(0n;$=C=(FwX^A zm|29N0A&^#70hh^YQx$(OhaQ-vqP&vX-By%s>-PYQ*cPFNMe}U(N)poU{f*#mkHRt z6h@hQQs%t>-dIR(=omQLRD_(4rG?UM?UE5eu^WN=z}@vA3h@|Wta$c(dF6#-O|PE& z2r;CZY_!EVMyi6;zm!tj;=JF=882^C$#?ypM0AIG)!wj4w^SIo){}H@7;CJk+s$F~ z$0HiB<6Hz8k*3x-%$lg#IW>1hL$)NpHj$Wa3w1?Eg#Yu$AbR9K=GVqv6CN#j6$+2 z?7TJHQrPyUkkIUeC>TLlz=k@|pd|@>d~_vSpij%Hj|d6GHMjWo7<6>WFg?8oum{^Q z%EKuncKAS>UUAq!S@{uvhYU<-y}KtKT*NYKB=u2)M4toDY5h~!Gm%&K5z$9u#6ge{ z*!XUD3^I)bFSrpz1Zn2x4;@kYSm@SYjpt=_h2vx%lCUN6?8rSaa;>aYe6#`KWU_aw zo`>UXh*Q7F(|{9=JcjlK3!VIpFtHX53cR&>=jGE2FU_onZ#*F%>haVl?9Uj<07toQ zh36fE)bGo)$K4O!#0-!xeqJ`178Vh?568-3>#OF6sU)VLOLC$C;}FZn6n80ddh z`pS6lW@7iZK7JY(zqp~G^)5pvpKrH0`_OY8I$dm%MfC)8g}n8EI2|jY212B4s7_jS zSZ$qY1-yyf+OG6D9<@JOr>ZZcv#X+U&|jx;M6KTxz?V%THgMY$W{AkiS^3BeW|6?! ze|bZ&Sk<-Pg9J$yB8+0&Lg7Z%U4bO@KDKDbPd5``=d~Pwm&@A5yUkwzg@dRgiOuB8 zbIOXeWpHi!Up~+)+YuLBY-vT}0R#(? zwh0aX2%gkHf0v2;X~(vLgmW);_=IDqm;SX{uxM)+tQ#L(uTUbZi;d(+W#EfPdLyZ~ zQZ&Z-%lJ*L98jQDrRFj+s(76xKFw+k?IWHYJh6pt*IhAU-7eD}ztzrIDXO@O1>^It ztuwkv(Yg4L_#}(~COKsDl`qhF?sSwGQ_P3zmPuVJs%rT4jc(22R<`b*j);VoZfqU7 zw}Svw`FEFmChABhWcnW3t22}rkE;}q7LRXf-~!&q>`(FK=DA_23k4VK`H1sQcm`Yn zKTbeLiILZCo1;-TP>+AQ4MF{i625r#`u8_FYo6^(A7GWO*Ml)6qGw<+AU>~qsSM;o z7M|L5%{1mM(v9(?e6OA}Wb<`9Z{v)@FcqOiQph8lF2yFgjr3)V(In+W$AjptiLAU$L)s!3F*;_q#rUVzQ0r%Z5$?`=3M&BB*c)sUz@#oimLOwh(AIeXOAN*j&Lv}5r#(cnGsoYp1ek4OY?XBBYe1%6G$ zg^zp~%7o-k0mh!f{Ci8|Y%XN+sh#eOmSfT*KL9Uzp!Q<{wA)i>?#;N@c>qU6UtI+ z4@9S;52Zx<59MLu#I77)e>~V8glKh&4Uaob2n@2MjCwmG0nE&*w?!2aRlKXTR1X(OR#DL`yw3Ai)jgd>n zg^GeLeSt29hc4*J0;peX0qf5{y&mF2^itzL1Kkn6BbnZ?oV^S}ez>^ELQ>*gCf$}> z=~+lksY%1dRPLe1Ns}S<7zZl4X4`IjduFGjlhl;}mcWunipGfOA#dbiKO88MYuL;| z78Y@6BWIJPudaUm&9&=VYl2++0HPq3$8ZbKiowDCTIV;j=?OTkU7U7fZn+FoMa~ZHJE)d>7*qHu zC>Y&Jgvnr=j)aUh;NzQzHp1KLJV=NN1RX$(v`@v&M)}h<(5k|V+7Q%36z?_(4G*I} zUOo-~8UAQR`Revs^Bt4RI&qgylU+xZi{6bqmwDql9u-#z}NQsG@MJ^i638u*#| bWW^%>x7XlHV^#Q1uOX^B?ki3(VEg|7!QHuF diff --git a/src/main/resources/static/ajax/libs/layer/skin/default/xubox_loading1.gif b/src/main/resources/static/ajax/libs/layer/skin/default/xubox_loading1.gif deleted file mode 100644 index db3a483e4b74971fbfb1cc0fb6499852cedfe650..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 701 zcmZ?wbhEHbRAo?Qn8?Ji_w)@mZNLBj|1&T!DE{a6a}5c0b_{Se(lcOY1PT3QVdY|A zV$cDyff`g97?`@J^shYqmS1s(LX_+4yGox$4el*+Jm?ved2^25GBru=T^dGm#<906 za&AQCZ08H8P;Bd&{NT;vl&}c_^L4%p?g_hjBu{YB29{c>Ob}p@z~Ks3xCw+@!HClp xtZ<(QPf3`00FNu+VbOvoEE+h73k#4LIKl$IE8t;)<_eUs!0QU6uz&iJhvXcHF*h)T1OnEW1i^?zgDfop1p?usL*#PMGT;HQkSO{q6FlJyb$PWkPf|h*eTST}7h8z$}MF(XD(aQ)ZLZ zM?v0rT<1C4XHn<6PbNA{XL@>1^)apdD_@tcYDrW#m`k#MmslI7p^P;Az74wGs`!SI zLs$GEZHsafXsu1i-WleMzAL(yw$-LK{0hv;6hrx8kx!!4$``dAyBnY9Jz&DqJo2$A z!(L$H=KqBeY~CF_viHPz^tTglc?D97CqEBjzUwH}7GI zapg8YZM~>2Wk%E$d&r@9ly9b4Q zJpM7T@}r63I(OExUlG%Xcjz3MU+9U^r!SkpjNThDtaP)7>j6L5z%o5|^hlVOyI*uY zt^UU6NTuY?(Lb4ZIU2Zb5Vz}Pb7KF%ivf&j^CL>$cDz?rMNTQQ|NqDVD7mhghUp%h zhIA{gi{S8y9YhIIbSv$`B!JiPi!0#4#Jge0)p&YVPHchWcyAn zQhvb8ggXGXs9;k`u9Uq*YB>O+Q3Rq=2hlLFcG{Q3ORH_}JnY8C+r%@}6|%ySP%bWG zV~mA;?P`Q2L_Ss})nrJ{$TmeA9Tt*4=}X5x%RioM@_?ZsKSEST-f+GBv~Ya)xX3O{ z8!d=YthI-13OI;RN~`>|6u5L{z20oBp%9MIj)n$!Aw{Wpq&Rtr4~*_74Gjo@3el>B zz(Rk;;>2lp73<2;d=r*8z%WkdsG=vRuG_fvxO#uN^El|+5Qoz^X!2MfxJ3m}vyi?> zMLLDi8+${Z6YbUg?8GNR>-+SwHKdFyr%HqWcs|X_l*-DAC^bG&KCqWg7-_`UlwQ`EdOp_LJkr`L$mHHs75uP?fSgVfsDjuE#ft2b8HDt0yFt!+;C zEgL=)G9ZFt4wa+N3Xg7FGc0~`&EEt6_%7tyzmnb9B_h1~7~GD4V-Bhx7~QKRkF>&aT>(-!Us@aJxAY@8E?HW$G8g zSz@7Jcp>iCp;lU1ieF6n7!oAa-1E!rS0 zF1lBFVS%G#ZO}b@*+bIk+7@Q|iG60vIDVpV%4tW8rKyzwRo_<25;8*Ky@n z-sX>W*b;M){5lB_Edc@m1`VHy0@dg$PTR9uE$O2&a?KAe?xRlCj&Z$iZYwgwj^791R$m6fiquVZa(9u*a3Yik=E?C0cUXJ}|>WMpJ!W@cewVPaxpX=$04 zmuF>V<>26;tE+2lZ2bTKe+JqB#sA!Xt|7tBjsdPldIrplKwA`lvam8RC^6`OYy^3e zf$jf+2?ZWHQvD~E6rIemnt!~n#A|KT`WtJ?PQR_%f4P0bXU*B?Uu>y5o45P^haGop z{xt|xOsG5m{`dce#-`?$*0%Zz4uzCb4iR2nKK996Ra}#2uuoNxaFeK->pFkVyah{_ zELyg5h0EfFYgcVpBOxx%!_lLd!ZBeI^L}PV#sfzVGD@E~dE(HiQ)kYeK7K*^{DrG$ zub;bg?e>kkid)2Y$oEcUXXbv%#>B+-?)|$rlAphP{`B?B_aBnKe*FFV{}bnp^n8Vb z4Xnm05jz;??1)Km_z{(`py6ngm~q;gr3)7y?~}2w;?WFZ_ME70zf7ibp~{JAdg1%N ztl02Sy`xMmP{(0`I@^C9+h(@ECl{``xX7hn%6HWi=HR9N{cf>c3pFpT3R@m$y2^3k z1lK1ePhF00R%cLTxU|Yw`$+Tc?RmEk)oPcoYu{D;@z7Oo^On0i>i&OXebboT)RyqN z!D9OYo!bK0*ZKBI-+1@r^wiI3_jd1mAAf58Q?aWB7A{E}yHC!t<+l9v_`+OH?mpfs zvp2W575D4SwP0f5Tq(_-`u108-svrdkKOjge9k@GQSa`scJrfv1y1XuOS`tN410Hb zfA@R7se3{`hwQ8}?G09X+$FA`aYf^@%9%-DKi_xX8J}7|P4A|-f~RR?@h!b)3l{TP ze>l)AV9)mU^Me+_U%`qF;#@8QEz+kpmjq;P=?V60I=~U^(|I?;nAcQOZE|n7uG{8E z-9~=S%H5|dz63<^fvz@N(z;TS%+V=^6lGCYoS^qqJTSeRiYI(vo5sx@6~ zH+0Mnzb#tp)m))-ZN~Yuf=vhVHd}tMi0M_i@xH9TZvAq3#)ig*nwmPLrlywawvNWG z+PdC`qN28nij0i5yu7%$wv?3M;I^nJCl_b8Iv+n@WZNYM)OMu-wOwaGZ8sZG+Z_hf zcCP`oJ!C*_kAvG@gOcB+cu%Ey&DC1JsIjb|!p!J_fy8PPopX1Vr=5+PJh^p;<=K_D zU+1eN#v7R10`q&NJ3}=KD|ZYq&nq#sb#$@!H1otgV*AR780Vs(hyWFUszG%C7S4T zLnrN*1y6VLhXr1Gv(I1dty(+JZ_k6)I}Ph@zrWa1x4vBd5gTh$MN4a`6tFa`bK`Dg znb0C<|cxmhQ$Ficsv$Ww0VvZb@;Okh~BcwO7_AfL0qBeIx* zfm;ZK886+f`vVjdD{+k|aV|*S-r<(j7}0i%6Gr2m;b2B_Q2WA|R;q8pu0a>~>Q&cDR3wE* z8h>d19gGtu^6yo- z#CHqjPYpD?I^Uu=^m~;yqyw3(ITX;NNnFSg{evJ~(|%))mC1gI83$XBbcy|n%#edG z^Ca*erITm}B+X|7FO??}`vfgtQ(UTh+9!luvRmDz+vYns;a0WT7tb@CtkZ|blV^*i zLTP!1jN$@I=i|43N3hy#+IkORrfn4`E!?vAt@AMOXItmj5cuu;heE>}oiBEU>XzE) zd|}HQ-;n0#`z_aK7;^I;@`PWzIi(JGv-CBC#Pw;E)*UdQ)k`otEZs~hY?G|ojXmPE#1zGp zx4rd_Yj1PO;Hh?Kj>(49{tqI1Z@`{xM4yXaSpPtHQ}gVpjcCvACA8wq%ZwdeFM_PE zd6`xp4u5O$FP%w>^S%HZ;BH9NYJJq+0&`xFz-~@Xg<(sm0&kMe#d??K#C%?_Y`ax8 zI-a^@E}1%Q9>7q)L^M~MxA#Jb*l%kRo3EVSU{F|F{F*SfL`qiHHF3qG{in6ptKVBv zfft^WWFE^4|I(hhU8tzd8l?4a=~bQ0lrmF4NI7Tq$ZvY3Gn#QRNuUk5l#mFmG zK3g(Kr#~>lGvzgL#{*Q}A!yy<+q=u81PN5P11=>7Mn*dRW_t;l{$tzi!x2@ysyAhs+GT}J#u&+Oc6E~8HvznGfh7K{ z{EWN%5)yu5m0y18GHcgM#masNeN(g4&K^|dYw(P8xP$}93+RN6$S=$Ew*Y}W#LzGb z&nbLc@YqyU>C=g!eA~dgs<@`Ma`Yn~|LHn=L5lUoBJ?4sw@Y(g8~gMt(@J=jlz5qT zS~aVi>(fq12E8Nu?tse^>bU1ZX%KZL>ZYd){yBIiLqrSG!Ikyg&QSYjO?1E(M>68U^I_#VR@|qe*6e=^Tp7gq$PY^xzBD)< zoI>cUx=^*-GfjB8b2#>157?drc5wC7kz02QJ`}a0=txxYbPxBcr19gs-=~hclw9kf zJJ!Ha7=Vuc5#Ze(Crc^_$)^NF$)Gs=#tb9grRBbWj-{N29ZyR2nHX<})6hsxF-_nf z7SSNe#k58~`!QJ8Wor{5@$?9)Crp9X-6H(dX8 z3H1(p`L7`{u$P%ZIRgTXt_(;0e&ig4bKp+|WXlt&b{~ar;_De3fJD*w!T52K%;wSg zKj+o0j4U{NyS=oC_X-YQ3gFNK9M-Bf1>>Um+2=rxhc}X3WtY|{>T_$L0LrmzbOI|<{(*y$}j9MS6jvAjN+oU715 z>v6^g^21+ll1JAc^+<7N$2$rf?>-N`|p+2uIrVR;6VxeKZue)Q%LIGz4xKP zXUxO;V>?dkKfL>gV?LZFpUF+)Idx<&@eLj*152eb!7(kn9ANEr=X6=C9RPI^Xk4bX zM_>>mV8MeJjmL!u>6^bcW_U=x_kFT{a;iVq&FZ%D;&ZFxkWIL*tB>)iKeY9!O&=4D zjnWY{Ak?BgT@FAJQCUxtDDCfaw*Fn!B~fECihj4?1y+3tNucdv z_b&YUJNTtHhrbXxS5?IL8WENzso5m%kUaUK96IlLe+|rpb6!cL_twi?Z{oaf-;%9^ zB_()=jFWp31!L>-Ler0dNEnrTf9`DpTqBcPdSM?KLmJF={g{dS!{lai2I>ukPBZ2Y z()FF;q>>bB_|R;)q*4Shm~?%LE^ zetK*Tguvq;mVK6!;6Nta;M->}x#^un!fAP<%YS8#7bA$t&=23H~w0-Y)`OxBVIQnb(C8iQJyWD z(cZhqy8r6WM60p^U@nO%N&O(K;THsHTcVMDMHY^Yf3%m`bTd{) zQdpm>OEm{(A4kZUL^EYxe$w^Vt9U2Zd(*B6qC1-GKcQ!H8`5WAeRS8;vm$HQKQYY} z#UV}t+2rhx6*WGY&MG5L=DEmo8b#@}U5@EOcsrEmEi!yqEglaT96k!VxI(&w&L#+M zp#J2p_#n3gVH$Xb__FRl)~EJkBlp#>G1D=e3wN7t-6FT^jP1%mk-t?Z7#HmU5_?_c zcqF~|gGnpiDZBie@?z?a$VU{phI2Rjc`)y!Esqal?cn5d70&J$#^-h8^O1pe4k}to zChR`;@18#4y2^+fqX_(xKLxID-{XpgGl`0G9CP4ek0O-UYbI))G zKhG9tdoK=uy9X1uHwWrbdD%f|v$@-5(t!0MypBM3L(G6^-HZhLG8A*2=7x>bF z1-qidxIZTE#EFI%IMpMsfpr?+nw_l|a*k>&m-VwA7hYKTwcE@y??Ed)0|q(0(vHXJ z)>{={;^k(tPzeIViD-cv6)xt1BMm2O60By1&Ue;2HQ z!op|ZQf*VheU2kXTmfgx3Rnssk+nO>UrG6)D1&#u57l}VScIcDYo%3RLcN0F%%;Hp z`;Fx3ST7XXZVZoDWCMR)-Qx%ubqO7rbIeUSsMjoyG3R6azWn7>W zD5rrftznu*rrF<7!;$d;hgt#5t$CWW;QOuuJ(yui-l3Q3Aal0{oP*ed1t;yCRQ@8@ zsbSxgUu$o=<a}F}W?5U;i@yYQI&r=+`fO4@G?Pzsxw!IS1qY^-35v2x==0kZ3$EK)aBisGH3be8 z(jjNaP};V*M8;c!KDT26z!)v6b1K&VFbMc>Bpm5Xe?!m?&djG2c(2bRzmh#S2DYJ5Y zGV0usn>8&HdkKd*>tt^0yu2NI*`MHH^0}U}hJq!74~VOyV6k|7LszPs6yE4wcv}y_ z1pVMYv%d9BgPCp0f=30L^#}%*ggCMKa4C}2`Jy6Q5XkK|%>+}CtDTgBUFS<19*1;2~qCt#hjodh1r`i7yRcjD~e)EGI23%u53 zAhPSkfnQ7*B0Uxm1`@HG8NiG(l_w1k!!??^=X->8BJf zA6}p*yiv(?!6Tu0W!wfG<=%ZkyST`(D-(faI{O7WqWYz>HjdZx;=v=@KWJ$X-!$;m z_<(9gE3)}x8~?YTtZnd6qJzg)#;3Ln_XBT|)ua>7#01jCHG-2oirM*|6jzHn7Hq!Z zF2b>3mvDWov|7|(|lX7>z{4I!Qdo; zA!Ppyi@V*6`aiyIh%tLQ=+46Eu5Y}i_48SmqcQoEIs%rzPjs}uU2yqrR+KJSZ!nZW zQ8kWicRQJfx@kQ8Z*OK|-u{c^BFhOAU_fEU6o3Pr+QZxLb%fBlTn4Ktb4OwrKXwGDveBq{4JvR zeA1XH%zPoAwfRa@51!9!pGKceZ(txwUh;NbK)lOl6^8z*&}Fj%0~m)DMPV2nrP`!Q zx;@GAi#F#uBSpVzJdU6{bGhW?`H(ikz>Qgztt}nLYuZzVTr>FhGdoE}nFVKW6jP<*s3?C}ubs}smdr!?tmmkdu*ZFP%RTyH z`cC-uLzjIUV**P%=MA$+s%2~=^!*6jF=ZCBD7Cw%L2nYs6r+zgRS+FlJT~@Ls+GpG z;PLO`u<;6Nm(rk_Ya=bIg&LaV*<|-vW{u7lNS5AZp$xu=J0Qi%-oP>-G3Ya}jfAdN zVX2x?5AHbEr+le#)nw9j4`W<-l?L*AW*SEgT+wCiec6k}$Hp27QR4*VvVzNiMQanI zd29Lo{Y-%S`x)asT%fu2=z7B#Ht+klP0ITxfpQ0|7B()2FP{+2`36*{1DNX+fr`o9 z#CV1ER_@GHO_o>u7OIcOJ<st6GKIuyJ$t9?;C8d zraA*7eEB58`CDo1Z-DRMEd1t!z-qb-AHoTHKnk^W^CL$cEKd+wRP)8}J?LNZe3v~u zP8{}NfyJfyZCi~it16!C_HMk{N-YN~|1=ZSA|**ly+F->&%$M?N`GFlB2k?#PVmJ? z<=|iOmqEJ)z-qye%j06;DwBfU9hK%c=+X^N1<8mmZlBY3A4R(>T%iPv0nrQi&zHT2 zua|n>i5bLef8hJ#ok4UIOMERNvP6WH0e+3Tc{0%W%K+V@x#ZCrNwnqWE-+!y_OZbJ z>5vtQFah6wSgcT&I+CYnWptVrHF3B0Be0l5W|1V9;RVH^^(eTwvg1SY#X!~h)yA%Z z5NK#$9TV83$W0UIR2q20lRBJA;9+jA)3YNQW?*5B>Gqk?6e6q;6Oeu+(L}&(kI{d+ zpc?QXwqG1QZLc)?$^fd*rTz<9$3qI8jDdx zFVlvgpT-95k1?;O?i>*NAxFGvq#fYY%$`cV$eXrbN8eHck;<~pKba|?xjoIhPo4$~ z+KVc#ek4LYyroyLQKSE!ZCR~=#*%;KEPW#?ABgoh;N%jCvbv%s6suBxZ$j%9gKiwk zobSz8pXT$8t005!IvqD?qHb!7LQfK^YBiLao2ZN;RL%rt;QB#3GK!B^~D0Z6N0J=&V5miw~vDDV1FB9S&&M0(y{RIoW)E!S;3L z8T~)($bNPIh2{gt5}i$IoCpbYg#@dM=+#WjpV-MDx;*@)lk~jTKAqC96Xbq4xX>03 zS>Pf|rKatoTOEj8p*EPK|ClRl`qqKKCWnEc^(*%tl zZ`3yyRVoThOx=Sb)b6%1%kcrkje?*tSgczzrOYc=`tlohlqcf`p2UgpKi@gXURgX9 zsNe?K2a47#9mEG!3LlQ2+;UXt!HKmq%a!LsX8DDa4tR?8uhH|7oFdMng5%~(*I9E3 zixwvJjj)nc;j8oKF9jR-90`?(O}0m*9R#WzgAoMzEJm#&f(s;twY)glfM>Okk)z5j zIbWN#)!;H=2e9+Bfq&do7X~G0)#oYr zY_~aRRv)>D`>`1s#fbDrc?`Jo$1Bu^1l^GEp+&ttC?H!uf^v@bgy>L4y8kJW3PiCl z3~bO*v#{hxOBiAulr(AA2QSz2SY6u8!-KIQ_1w%pf%(x?3q9Jh{sMf+h}ZqbLmPDG zUj56YKv$0tfi~32>A};c!kf!1#t{_VXF>k7^h4Y(DrSoO$m@iZUy#n2^{P_Zyp_p{EcSnEeQJ+l`zoy*BVWYv=R*m)u(O7V^`v zmWOW-x8?KtjSZHY7fI*3GVmAsgna+1y@AD`&jZx568hJzjUqa$5jHc$C2OyQ=Wc4F z>`c0+aL>iiU#VUSe5>}ADh3A{Qg?fO<85^d1)yBi%on}-M_p#a#Pk4#iXy4zdWz@8 zMSy0+Tkr6rO}{4rvar?*E224@CpEi#B*lR8dy>>7?CU)y{!VPTLYq`|C^!sqM0K;1 zmP`!MzgnDwRi+1(-Hzl{fPZ!PGX>LHRFRmVS4qt?F?bW;0X#Y1EqdBInt-AM8P@f?yTQ6oZfGXX2fihjoO=zaCrOF;r*?RNt86)S$? zAOB4K_mP++?sUGcj?N+`5y&LlBa~um8pF?BZD|GA2q+7^p`YK2SNeF*Obzor-{~jw zsO@?*u(`G$veH)Atgseka~uD-D1>82ivd3QSmop6l=d0h^9taJe%)~*xj(lt2zWSrOh~ugF-;}y3 z4wM`Y zzidD;j#<|a^1_OxX|GuIqjY|4(X*WQ+LmaldjLkE2zUJ(3NDeluE(h5NhM zdAD0DZJUyX3yh6|I#rAqT{dPmox8|ED;=5VMRne}C5$ja+$!GxOc5aa#_3mXrml1G z!&M4a+xNfY3asug+X-k0(DNlm7QnX_v+olMGJ2NOT2gH|S@Dbke9BM!)`K?ItQ`5v z?JXB;r;Y=h8)RgSJeeZEQRIWTwn!RUFt4Q?R? zO2$6;2@#Fpx7RoJmT1(wqG+^k^uJ6wFNyEk{8Eu-8& zuRed2W4xE-+MUb{_1zC&ht1O$}LcfE^{^UmQMYcu}$5iSAZu{Lc*FTG&9soKg=kS zr$C&4)a2F*C-Nl_A}R4Sbm46?PhH*m1v_vi;5=COQ!%%j5otije+(y66(Nf;-1pOM z*kCeakBnU}A0zV5V3$~Rgf=S!3kN|U;lvJvqUc&+go_t~N?Gk$HhwZ*VYAhnU96TC zISsq3K1=XkH=9!<^r78;W{#~9)xfd1<_+(#)qA>uxuxLL$Q>h(pBMQP z6_TwiX4$2Bp8cFK;SNtUv%76_(3=PL(mq(bU$|3K8)?bf7g1r4qOKLYgf zyS=b2e- li { - position: relative; -} -.fa-li { - position: absolute; - left: -2.14285714em; - width: 2.14285714em; - top: 0.14285714em; - text-align: center; -} -.fa-li.fa-lg { - left: -1.85714286em; -} -.fa-border { - padding: .2em .25em .15em; - border: solid 0.08em #eeeeee; - border-radius: .1em; -} -.fa-pull-left { - float: left; -} -.fa-pull-right { - float: right; -} -.fa.fa-pull-left { - margin-right: .3em; -} -.fa.fa-pull-right { - margin-left: .3em; -} -/* Deprecated as of 4.4.0 */ -.pull-right { - float: right; -} -.pull-left { - float: left; -} -.fa.pull-left { - margin-right: .3em; -} -.fa.pull-right { - margin-left: .3em; -} -.fa-spin { - -webkit-animation: fa-spin 2s infinite linear; - animation: fa-spin 2s infinite linear; -} -.fa-pulse { - -webkit-animation: fa-spin 1s infinite steps(8); - animation: fa-spin 1s infinite steps(8); -} -@-webkit-keyframes fa-spin { - 0% { - -webkit-transform: rotate(0deg); - transform: rotate(0deg); - } - 100% { - -webkit-transform: rotate(359deg); - transform: rotate(359deg); - } -} -@keyframes fa-spin { - 0% { - -webkit-transform: rotate(0deg); - transform: rotate(0deg); - } - 100% { - -webkit-transform: rotate(359deg); - transform: rotate(359deg); - } -} -.fa-rotate-90 { - filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=1); - -webkit-transform: rotate(90deg); - -ms-transform: rotate(90deg); - transform: rotate(90deg); -} -.fa-rotate-180 { - filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=2); - -webkit-transform: rotate(180deg); - -ms-transform: rotate(180deg); - transform: rotate(180deg); -} -.fa-rotate-270 { - filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=3); - -webkit-transform: rotate(270deg); - -ms-transform: rotate(270deg); - transform: rotate(270deg); -} -.fa-flip-horizontal { - filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1); - -webkit-transform: scale(-1, 1); - -ms-transform: scale(-1, 1); - transform: scale(-1, 1); -} -.fa-flip-vertical { - filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1); - -webkit-transform: scale(1, -1); - -ms-transform: scale(1, -1); - transform: scale(1, -1); -} -:root .fa-rotate-90, -:root .fa-rotate-180, -:root .fa-rotate-270, -:root .fa-flip-horizontal, -:root .fa-flip-vertical { - filter: none; -} -.fa-stack { - position: relative; - display: inline-block; - width: 2em; - height: 2em; - line-height: 2em; - vertical-align: middle; -} -.fa-stack-1x, -.fa-stack-2x { - position: absolute; - left: 0; - width: 100%; - text-align: center; -} -.fa-stack-1x { - line-height: inherit; -} -.fa-stack-2x { - font-size: 2em; -} -.fa-inverse { - color: #ffffff; -} -/* Font Awesome uses the Unicode Private Use Area (PUA) to ensure screen - readers do not read off random characters that represent icons */ -.fa-glass:before { - content: "\f000"; -} -.fa-music:before { - content: "\f001"; -} -.fa-search:before { - content: "\f002"; -} -.fa-envelope-o:before { - content: "\f003"; -} -.fa-heart:before { - content: "\f004"; -} -.fa-star:before { - content: "\f005"; -} -.fa-star-o:before { - content: "\f006"; -} -.fa-user:before { - content: "\f007"; -} -.fa-film:before { - content: "\f008"; -} -.fa-th-large:before { - content: "\f009"; -} -.fa-th:before { - content: "\f00a"; -} -.fa-th-list:before { - content: "\f00b"; -} -.fa-check:before { - content: "\f00c"; -} -.fa-remove:before, -.fa-close:before, -.fa-times:before { - content: "\f00d"; -} -.fa-search-plus:before { - content: "\f00e"; -} -.fa-search-minus:before { - content: "\f010"; -} -.fa-power-off:before { - content: "\f011"; -} -.fa-signal:before { - content: "\f012"; -} -.fa-gear:before, -.fa-cog:before { - content: "\f013"; -} -.fa-trash-o:before { - content: "\f014"; -} -.fa-home:before { - content: "\f015"; -} -.fa-file-o:before { - content: "\f016"; -} -.fa-clock-o:before { - content: "\f017"; -} -.fa-road:before { - content: "\f018"; -} -.fa-download:before { - content: "\f019"; -} -.fa-arrow-circle-o-down:before { - content: "\f01a"; -} -.fa-arrow-circle-o-up:before { - content: "\f01b"; -} -.fa-inbox:before { - content: "\f01c"; -} -.fa-play-circle-o:before { - content: "\f01d"; -} -.fa-rotate-right:before, -.fa-repeat:before { - content: "\f01e"; -} -.fa-refresh:before { - content: "\f021"; -} -.fa-list-alt:before { - content: "\f022"; -} -.fa-lock:before { - content: "\f023"; -} -.fa-flag:before { - content: "\f024"; -} -.fa-headphones:before { - content: "\f025"; -} -.fa-volume-off:before { - content: "\f026"; -} -.fa-volume-down:before { - content: "\f027"; -} -.fa-volume-up:before { - content: "\f028"; -} -.fa-qrcode:before { - content: "\f029"; -} -.fa-barcode:before { - content: "\f02a"; -} -.fa-tag:before { - content: "\f02b"; -} -.fa-tags:before { - content: "\f02c"; -} -.fa-book:before { - content: "\f02d"; -} -.fa-bookmark:before { - content: "\f02e"; -} -.fa-print:before { - content: "\f02f"; -} -.fa-camera:before { - content: "\f030"; -} -.fa-font:before { - content: "\f031"; -} -.fa-bold:before { - content: "\f032"; -} -.fa-italic:before { - content: "\f033"; -} -.fa-text-height:before { - content: "\f034"; -} -.fa-text-width:before { - content: "\f035"; -} -.fa-align-left:before { - content: "\f036"; -} -.fa-align-center:before { - content: "\f037"; -} -.fa-align-right:before { - content: "\f038"; -} -.fa-align-justify:before { - content: "\f039"; -} -.fa-list:before { - content: "\f03a"; -} -.fa-dedent:before, -.fa-outdent:before { - content: "\f03b"; -} -.fa-indent:before { - content: "\f03c"; -} -.fa-video-camera:before { - content: "\f03d"; -} -.fa-photo:before, -.fa-image:before, -.fa-picture-o:before { - content: "\f03e"; -} -.fa-pencil:before { - content: "\f040"; -} -.fa-map-marker:before { - content: "\f041"; -} -.fa-adjust:before { - content: "\f042"; -} -.fa-tint:before { - content: "\f043"; -} -.fa-edit:before, -.fa-pencil-square-o:before { - content: "\f044"; -} -.fa-share-square-o:before { - content: "\f045"; -} -.fa-check-square-o:before { - content: "\f046"; -} -.fa-arrows:before { - content: "\f047"; -} -.fa-step-backward:before { - content: "\f048"; -} -.fa-fast-backward:before { - content: "\f049"; -} -.fa-backward:before { - content: "\f04a"; -} -.fa-play:before { - content: "\f04b"; -} -.fa-pause:before { - content: "\f04c"; -} -.fa-stop:before { - content: "\f04d"; -} -.fa-forward:before { - content: "\f04e"; -} -.fa-fast-forward:before { - content: "\f050"; -} -.fa-step-forward:before { - content: "\f051"; -} -.fa-eject:before { - content: "\f052"; -} -.fa-chevron-left:before { - content: "\f053"; -} -.fa-chevron-right:before { - content: "\f054"; -} -.fa-plus-circle:before { - content: "\f055"; -} -.fa-minus-circle:before { - content: "\f056"; -} -.fa-times-circle:before { - content: "\f057"; -} -.fa-check-circle:before { - content: "\f058"; -} -.fa-question-circle:before { - content: "\f059"; -} -.fa-info-circle:before { - content: "\f05a"; -} -.fa-crosshairs:before { - content: "\f05b"; -} -.fa-times-circle-o:before { - content: "\f05c"; -} -.fa-check-circle-o:before { - content: "\f05d"; -} -.fa-ban:before { - content: "\f05e"; -} -.fa-arrow-left:before { - content: "\f060"; -} -.fa-arrow-right:before { - content: "\f061"; -} -.fa-arrow-up:before { - content: "\f062"; -} -.fa-arrow-down:before { - content: "\f063"; -} -.fa-mail-forward:before, -.fa-share:before { - content: "\f064"; -} -.fa-expand:before { - content: "\f065"; -} -.fa-compress:before { - content: "\f066"; -} -.fa-plus:before { - content: "\f067"; -} -.fa-minus:before { - content: "\f068"; -} -.fa-asterisk:before { - content: "\f069"; -} -.fa-exclamation-circle:before { - content: "\f06a"; -} -.fa-gift:before { - content: "\f06b"; -} -.fa-leaf:before { - content: "\f06c"; -} -.fa-fire:before { - content: "\f06d"; -} -.fa-eye:before { - content: "\f06e"; -} -.fa-eye-slash:before { - content: "\f070"; -} -.fa-warning:before, -.fa-exclamation-triangle:before { - content: "\f071"; -} -.fa-plane:before { - content: "\f072"; -} -.fa-calendar:before { - content: "\f073"; -} -.fa-random:before { - content: "\f074"; -} -.fa-comment:before { - content: "\f075"; -} -.fa-magnet:before { - content: "\f076"; -} -.fa-chevron-up:before { - content: "\f077"; -} -.fa-chevron-down:before { - content: "\f078"; -} -.fa-retweet:before { - content: "\f079"; -} -.fa-shopping-cart:before { - content: "\f07a"; -} -.fa-folder:before { - content: "\f07b"; -} -.fa-folder-open:before { - content: "\f07c"; -} -.fa-arrows-v:before { - content: "\f07d"; -} -.fa-arrows-h:before { - content: "\f07e"; -} -.fa-bar-chart-o:before, -.fa-bar-chart:before { - content: "\f080"; -} -.fa-twitter-square:before { - content: "\f081"; -} -.fa-facebook-square:before { - content: "\f082"; -} -.fa-camera-retro:before { - content: "\f083"; -} -.fa-key:before { - content: "\f084"; -} -.fa-gears:before, -.fa-cogs:before { - content: "\f085"; -} -.fa-comments:before { - content: "\f086"; -} -.fa-thumbs-o-up:before { - content: "\f087"; -} -.fa-thumbs-o-down:before { - content: "\f088"; -} -.fa-star-half:before { - content: "\f089"; -} -.fa-heart-o:before { - content: "\f08a"; -} -.fa-sign-out:before { - content: "\f08b"; -} -.fa-linkedin-square:before { - content: "\f08c"; -} -.fa-thumb-tack:before { - content: "\f08d"; -} -.fa-external-link:before { - content: "\f08e"; -} -.fa-sign-in:before { - content: "\f090"; -} -.fa-trophy:before { - content: "\f091"; -} -.fa-github-square:before { - content: "\f092"; -} -.fa-upload:before { - content: "\f093"; -} -.fa-lemon-o:before { - content: "\f094"; -} -.fa-phone:before { - content: "\f095"; -} -.fa-square-o:before { - content: "\f096"; -} -.fa-bookmark-o:before { - content: "\f097"; -} -.fa-phone-square:before { - content: "\f098"; -} -.fa-twitter:before { - content: "\f099"; -} -.fa-facebook-f:before, -.fa-facebook:before { - content: "\f09a"; -} -.fa-github:before { - content: "\f09b"; -} -.fa-unlock:before { - content: "\f09c"; -} -.fa-credit-card:before { - content: "\f09d"; -} -.fa-feed:before, -.fa-rss:before { - content: "\f09e"; -} -.fa-hdd-o:before { - content: "\f0a0"; -} -.fa-bullhorn:before { - content: "\f0a1"; -} -.fa-bell:before { - content: "\f0f3"; -} -.fa-certificate:before { - content: "\f0a3"; -} -.fa-hand-o-right:before { - content: "\f0a4"; -} -.fa-hand-o-left:before { - content: "\f0a5"; -} -.fa-hand-o-up:before { - content: "\f0a6"; -} -.fa-hand-o-down:before { - content: "\f0a7"; -} -.fa-arrow-circle-left:before { - content: "\f0a8"; -} -.fa-arrow-circle-right:before { - content: "\f0a9"; -} -.fa-arrow-circle-up:before { - content: "\f0aa"; -} -.fa-arrow-circle-down:before { - content: "\f0ab"; -} -.fa-globe:before { - content: "\f0ac"; -} -.fa-wrench:before { - content: "\f0ad"; -} -.fa-tasks:before { - content: "\f0ae"; -} -.fa-filter:before { - content: "\f0b0"; -} -.fa-briefcase:before { - content: "\f0b1"; -} -.fa-arrows-alt:before { - content: "\f0b2"; -} -.fa-group:before, -.fa-users:before { - content: "\f0c0"; -} -.fa-chain:before, -.fa-link:before { - content: "\f0c1"; -} -.fa-cloud:before { - content: "\f0c2"; -} -.fa-flask:before { - content: "\f0c3"; -} -.fa-cut:before, -.fa-scissors:before { - content: "\f0c4"; -} -.fa-copy:before, -.fa-files-o:before { - content: "\f0c5"; -} -.fa-paperclip:before { - content: "\f0c6"; -} -.fa-save:before, -.fa-floppy-o:before { - content: "\f0c7"; -} -.fa-square:before { - content: "\f0c8"; -} -.fa-navicon:before, -.fa-reorder:before, -.fa-bars:before { - content: "\f0c9"; -} -.fa-list-ul:before { - content: "\f0ca"; -} -.fa-list-ol:before { - content: "\f0cb"; -} -.fa-strikethrough:before { - content: "\f0cc"; -} -.fa-underline:before { - content: "\f0cd"; -} -.fa-table:before { - content: "\f0ce"; -} -.fa-magic:before { - content: "\f0d0"; -} -.fa-truck:before { - content: "\f0d1"; -} -.fa-pinterest:before { - content: "\f0d2"; -} -.fa-pinterest-square:before { - content: "\f0d3"; -} -.fa-google-plus-square:before { - content: "\f0d4"; -} -.fa-google-plus:before { - content: "\f0d5"; -} -.fa-money:before { - content: "\f0d6"; -} -.fa-caret-down:before { - content: "\f0d7"; -} -.fa-caret-up:before { - content: "\f0d8"; -} -.fa-caret-left:before { - content: "\f0d9"; -} -.fa-caret-right:before { - content: "\f0da"; -} -.fa-columns:before { - content: "\f0db"; -} -.fa-unsorted:before, -.fa-sort:before { - content: "\f0dc"; -} -.fa-sort-down:before, -.fa-sort-desc:before { - content: "\f0dd"; -} -.fa-sort-up:before, -.fa-sort-asc:before { - content: "\f0de"; -} -.fa-envelope:before { - content: "\f0e0"; -} -.fa-linkedin:before { - content: "\f0e1"; -} -.fa-rotate-left:before, -.fa-undo:before { - content: "\f0e2"; -} -.fa-legal:before, -.fa-gavel:before { - content: "\f0e3"; -} -.fa-dashboard:before, -.fa-tachometer:before { - content: "\f0e4"; -} -.fa-comment-o:before { - content: "\f0e5"; -} -.fa-comments-o:before { - content: "\f0e6"; -} -.fa-flash:before, -.fa-bolt:before { - content: "\f0e7"; -} -.fa-sitemap:before { - content: "\f0e8"; -} -.fa-umbrella:before { - content: "\f0e9"; -} -.fa-paste:before, -.fa-clipboard:before { - content: "\f0ea"; -} -.fa-lightbulb-o:before { - content: "\f0eb"; -} -.fa-exchange:before { - content: "\f0ec"; -} -.fa-cloud-download:before { - content: "\f0ed"; -} -.fa-cloud-upload:before { - content: "\f0ee"; -} -.fa-user-md:before { - content: "\f0f0"; -} -.fa-stethoscope:before { - content: "\f0f1"; -} -.fa-suitcase:before { - content: "\f0f2"; -} -.fa-bell-o:before { - content: "\f0a2"; -} -.fa-coffee:before { - content: "\f0f4"; -} -.fa-cutlery:before { - content: "\f0f5"; -} -.fa-file-text-o:before { - content: "\f0f6"; -} -.fa-building-o:before { - content: "\f0f7"; -} -.fa-hospital-o:before { - content: "\f0f8"; -} -.fa-ambulance:before { - content: "\f0f9"; -} -.fa-medkit:before { - content: "\f0fa"; -} -.fa-fighter-jet:before { - content: "\f0fb"; -} -.fa-beer:before { - content: "\f0fc"; -} -.fa-h-square:before { - content: "\f0fd"; -} -.fa-plus-square:before { - content: "\f0fe"; -} -.fa-angle-double-left:before { - content: "\f100"; -} -.fa-angle-double-right:before { - content: "\f101"; -} -.fa-angle-double-up:before { - content: "\f102"; -} -.fa-angle-double-down:before { - content: "\f103"; -} -.fa-angle-left:before { - content: "\f104"; -} -.fa-angle-right:before { - content: "\f105"; -} -.fa-angle-up:before { - content: "\f106"; -} -.fa-angle-down:before { - content: "\f107"; -} -.fa-desktop:before { - content: "\f108"; -} -.fa-laptop:before { - content: "\f109"; -} -.fa-tablet:before { - content: "\f10a"; -} -.fa-mobile-phone:before, -.fa-mobile:before { - content: "\f10b"; -} -.fa-circle-o:before { - content: "\f10c"; -} -.fa-quote-left:before { - content: "\f10d"; -} -.fa-quote-right:before { - content: "\f10e"; -} -.fa-spinner:before { - content: "\f110"; -} -.fa-circle:before { - content: "\f111"; -} -.fa-mail-reply:before, -.fa-reply:before { - content: "\f112"; -} -.fa-github-alt:before { - content: "\f113"; -} -.fa-folder-o:before { - content: "\f114"; -} -.fa-folder-open-o:before { - content: "\f115"; -} -.fa-smile-o:before { - content: "\f118"; -} -.fa-frown-o:before { - content: "\f119"; -} -.fa-meh-o:before { - content: "\f11a"; -} -.fa-gamepad:before { - content: "\f11b"; -} -.fa-keyboard-o:before { - content: "\f11c"; -} -.fa-flag-o:before { - content: "\f11d"; -} -.fa-flag-checkered:before { - content: "\f11e"; -} -.fa-terminal:before { - content: "\f120"; -} -.fa-code:before { - content: "\f121"; -} -.fa-mail-reply-all:before, -.fa-reply-all:before { - content: "\f122"; -} -.fa-star-half-empty:before, -.fa-star-half-full:before, -.fa-star-half-o:before { - content: "\f123"; -} -.fa-location-arrow:before { - content: "\f124"; -} -.fa-crop:before { - content: "\f125"; -} -.fa-code-fork:before { - content: "\f126"; -} -.fa-unlink:before, -.fa-chain-broken:before { - content: "\f127"; -} -.fa-question:before { - content: "\f128"; -} -.fa-info:before { - content: "\f129"; -} -.fa-exclamation:before { - content: "\f12a"; -} -.fa-superscript:before { - content: "\f12b"; -} -.fa-subscript:before { - content: "\f12c"; -} -.fa-eraser:before { - content: "\f12d"; -} -.fa-puzzle-piece:before { - content: "\f12e"; -} -.fa-microphone:before { - content: "\f130"; -} -.fa-microphone-slash:before { - content: "\f131"; -} -.fa-shield:before { - content: "\f132"; -} -.fa-calendar-o:before { - content: "\f133"; -} -.fa-fire-extinguisher:before { - content: "\f134"; -} -.fa-rocket:before { - content: "\f135"; -} -.fa-maxcdn:before { - content: "\f136"; -} -.fa-chevron-circle-left:before { - content: "\f137"; -} -.fa-chevron-circle-right:before { - content: "\f138"; -} -.fa-chevron-circle-up:before { - content: "\f139"; -} -.fa-chevron-circle-down:before { - content: "\f13a"; -} -.fa-html5:before { - content: "\f13b"; -} -.fa-css3:before { - content: "\f13c"; -} -.fa-anchor:before { - content: "\f13d"; -} -.fa-unlock-alt:before { - content: "\f13e"; -} -.fa-bullseye:before { - content: "\f140"; -} -.fa-ellipsis-h:before { - content: "\f141"; -} -.fa-ellipsis-v:before { - content: "\f142"; -} -.fa-rss-square:before { - content: "\f143"; -} -.fa-play-circle:before { - content: "\f144"; -} -.fa-ticket:before { - content: "\f145"; -} -.fa-minus-square:before { - content: "\f146"; -} -.fa-minus-square-o:before { - content: "\f147"; -} -.fa-level-up:before { - content: "\f148"; -} -.fa-level-down:before { - content: "\f149"; -} -.fa-check-square:before { - content: "\f14a"; -} -.fa-pencil-square:before { - content: "\f14b"; -} -.fa-external-link-square:before { - content: "\f14c"; -} -.fa-share-square:before { - content: "\f14d"; -} -.fa-compass:before { - content: "\f14e"; -} -.fa-toggle-down:before, -.fa-caret-square-o-down:before { - content: "\f150"; -} -.fa-toggle-up:before, -.fa-caret-square-o-up:before { - content: "\f151"; -} -.fa-toggle-right:before, -.fa-caret-square-o-right:before { - content: "\f152"; -} -.fa-euro:before, -.fa-eur:before { - content: "\f153"; -} -.fa-gbp:before { - content: "\f154"; -} -.fa-dollar:before, -.fa-usd:before { - content: "\f155"; -} -.fa-rupee:before, -.fa-inr:before { - content: "\f156"; -} -.fa-cny:before, -.fa-rmb:before, -.fa-yen:before, -.fa-jpy:before { - content: "\f157"; -} -.fa-ruble:before, -.fa-rouble:before, -.fa-rub:before { - content: "\f158"; -} -.fa-won:before, -.fa-krw:before { - content: "\f159"; -} -.fa-bitcoin:before, -.fa-btc:before { - content: "\f15a"; -} -.fa-file:before { - content: "\f15b"; -} -.fa-file-text:before { - content: "\f15c"; -} -.fa-sort-alpha-asc:before { - content: "\f15d"; -} -.fa-sort-alpha-desc:before { - content: "\f15e"; -} -.fa-sort-amount-asc:before { - content: "\f160"; -} -.fa-sort-amount-desc:before { - content: "\f161"; -} -.fa-sort-numeric-asc:before { - content: "\f162"; -} -.fa-sort-numeric-desc:before { - content: "\f163"; -} -.fa-thumbs-up:before { - content: "\f164"; -} -.fa-thumbs-down:before { - content: "\f165"; -} -.fa-youtube-square:before { - content: "\f166"; -} -.fa-youtube:before { - content: "\f167"; -} -.fa-xing:before { - content: "\f168"; -} -.fa-xing-square:before { - content: "\f169"; -} -.fa-youtube-play:before { - content: "\f16a"; -} -.fa-dropbox:before { - content: "\f16b"; -} -.fa-stack-overflow:before { - content: "\f16c"; -} -.fa-instagram:before { - content: "\f16d"; -} -.fa-flickr:before { - content: "\f16e"; -} -.fa-adn:before { - content: "\f170"; -} -.fa-bitbucket:before { - content: "\f171"; -} -.fa-bitbucket-square:before { - content: "\f172"; -} -.fa-tumblr:before { - content: "\f173"; -} -.fa-tumblr-square:before { - content: "\f174"; -} -.fa-long-arrow-down:before { - content: "\f175"; -} -.fa-long-arrow-up:before { - content: "\f176"; -} -.fa-long-arrow-left:before { - content: "\f177"; -} -.fa-long-arrow-right:before { - content: "\f178"; -} -.fa-apple:before { - content: "\f179"; -} -.fa-windows:before { - content: "\f17a"; -} -.fa-android:before { - content: "\f17b"; -} -.fa-linux:before { - content: "\f17c"; -} -.fa-dribbble:before { - content: "\f17d"; -} -.fa-skype:before { - content: "\f17e"; -} -.fa-foursquare:before { - content: "\f180"; -} -.fa-trello:before { - content: "\f181"; -} -.fa-female:before { - content: "\f182"; -} -.fa-male:before { - content: "\f183"; -} -.fa-gittip:before, -.fa-gratipay:before { - content: "\f184"; -} -.fa-sun-o:before { - content: "\f185"; -} -.fa-moon-o:before { - content: "\f186"; -} -.fa-archive:before { - content: "\f187"; -} -.fa-bug:before { - content: "\f188"; -} -.fa-vk:before { - content: "\f189"; -} -.fa-weibo:before { - content: "\f18a"; -} -.fa-renren:before { - content: "\f18b"; -} -.fa-pagelines:before { - content: "\f18c"; -} -.fa-stack-exchange:before { - content: "\f18d"; -} -.fa-arrow-circle-o-right:before { - content: "\f18e"; -} -.fa-arrow-circle-o-left:before { - content: "\f190"; -} -.fa-toggle-left:before, -.fa-caret-square-o-left:before { - content: "\f191"; -} -.fa-dot-circle-o:before { - content: "\f192"; -} -.fa-wheelchair:before { - content: "\f193"; -} -.fa-vimeo-square:before { - content: "\f194"; -} -.fa-turkish-lira:before, -.fa-try:before { - content: "\f195"; -} -.fa-plus-square-o:before { - content: "\f196"; -} -.fa-space-shuttle:before { - content: "\f197"; -} -.fa-slack:before { - content: "\f198"; -} -.fa-envelope-square:before { - content: "\f199"; -} -.fa-wordpress:before { - content: "\f19a"; -} -.fa-openid:before { - content: "\f19b"; -} -.fa-institution:before, -.fa-bank:before, -.fa-university:before { - content: "\f19c"; -} -.fa-mortar-board:before, -.fa-graduation-cap:before { - content: "\f19d"; -} -.fa-yahoo:before { - content: "\f19e"; -} -.fa-google:before { - content: "\f1a0"; -} -.fa-reddit:before { - content: "\f1a1"; -} -.fa-reddit-square:before { - content: "\f1a2"; -} -.fa-stumbleupon-circle:before { - content: "\f1a3"; -} -.fa-stumbleupon:before { - content: "\f1a4"; -} -.fa-delicious:before { - content: "\f1a5"; -} -.fa-digg:before { - content: "\f1a6"; -} -.fa-pied-piper:before { - content: "\f1a7"; -} -.fa-pied-piper-alt:before { - content: "\f1a8"; -} -.fa-drupal:before { - content: "\f1a9"; -} -.fa-joomla:before { - content: "\f1aa"; -} -.fa-language:before { - content: "\f1ab"; -} -.fa-fax:before { - content: "\f1ac"; -} -.fa-building:before { - content: "\f1ad"; -} -.fa-child:before { - content: "\f1ae"; -} -.fa-paw:before { - content: "\f1b0"; -} -.fa-spoon:before { - content: "\f1b1"; -} -.fa-cube:before { - content: "\f1b2"; -} -.fa-cubes:before { - content: "\f1b3"; -} -.fa-behance:before { - content: "\f1b4"; -} -.fa-behance-square:before { - content: "\f1b5"; -} -.fa-steam:before { - content: "\f1b6"; -} -.fa-steam-square:before { - content: "\f1b7"; -} -.fa-recycle:before { - content: "\f1b8"; -} -.fa-automobile:before, -.fa-car:before { - content: "\f1b9"; -} -.fa-cab:before, -.fa-taxi:before { - content: "\f1ba"; -} -.fa-tree:before { - content: "\f1bb"; -} -.fa-spotify:before { - content: "\f1bc"; -} -.fa-deviantart:before { - content: "\f1bd"; -} -.fa-soundcloud:before { - content: "\f1be"; -} -.fa-database:before { - content: "\f1c0"; -} -.fa-file-pdf-o:before { - content: "\f1c1"; -} -.fa-file-word-o:before { - content: "\f1c2"; -} -.fa-file-excel-o:before { - content: "\f1c3"; -} -.fa-file-powerpoint-o:before { - content: "\f1c4"; -} -.fa-file-photo-o:before, -.fa-file-picture-o:before, -.fa-file-image-o:before { - content: "\f1c5"; -} -.fa-file-zip-o:before, -.fa-file-archive-o:before { - content: "\f1c6"; -} -.fa-file-sound-o:before, -.fa-file-audio-o:before { - content: "\f1c7"; -} -.fa-file-movie-o:before, -.fa-file-video-o:before { - content: "\f1c8"; -} -.fa-file-code-o:before { - content: "\f1c9"; -} -.fa-vine:before { - content: "\f1ca"; -} -.fa-codepen:before { - content: "\f1cb"; -} -.fa-jsfiddle:before { - content: "\f1cc"; -} -.fa-life-bouy:before, -.fa-life-buoy:before, -.fa-life-saver:before, -.fa-support:before, -.fa-life-ring:before { - content: "\f1cd"; -} -.fa-circle-o-notch:before { - content: "\f1ce"; -} -.fa-ra:before, -.fa-rebel:before { - content: "\f1d0"; -} -.fa-ge:before, -.fa-empire:before { - content: "\f1d1"; -} -.fa-git-square:before { - content: "\f1d2"; -} -.fa-git:before { - content: "\f1d3"; -} -.fa-y-combinator-square:before, -.fa-yc-square:before, -.fa-hacker-news:before { - content: "\f1d4"; -} -.fa-tencent-weibo:before { - content: "\f1d5"; -} -.fa-qq:before { - content: "\f1d6"; -} -.fa-wechat:before, -.fa-weixin:before { - content: "\f1d7"; -} -.fa-send:before, -.fa-paper-plane:before { - content: "\f1d8"; -} -.fa-send-o:before, -.fa-paper-plane-o:before { - content: "\f1d9"; -} -.fa-history:before { - content: "\f1da"; -} -.fa-circle-thin:before { - content: "\f1db"; -} -.fa-header:before { - content: "\f1dc"; -} -.fa-paragraph:before { - content: "\f1dd"; -} -.fa-sliders:before { - content: "\f1de"; -} -.fa-share-alt:before { - content: "\f1e0"; -} -.fa-share-alt-square:before { - content: "\f1e1"; -} -.fa-bomb:before { - content: "\f1e2"; -} -.fa-soccer-ball-o:before, -.fa-futbol-o:before { - content: "\f1e3"; -} -.fa-tty:before { - content: "\f1e4"; -} -.fa-binoculars:before { - content: "\f1e5"; -} -.fa-plug:before { - content: "\f1e6"; -} -.fa-slideshare:before { - content: "\f1e7"; -} -.fa-twitch:before { - content: "\f1e8"; -} -.fa-yelp:before { - content: "\f1e9"; -} -.fa-newspaper-o:before { - content: "\f1ea"; -} -.fa-wifi:before { - content: "\f1eb"; -} -.fa-calculator:before { - content: "\f1ec"; -} -.fa-paypal:before { - content: "\f1ed"; -} -.fa-google-wallet:before { - content: "\f1ee"; -} -.fa-cc-visa:before { - content: "\f1f0"; -} -.fa-cc-mastercard:before { - content: "\f1f1"; -} -.fa-cc-discover:before { - content: "\f1f2"; -} -.fa-cc-amex:before { - content: "\f1f3"; -} -.fa-cc-paypal:before { - content: "\f1f4"; -} -.fa-cc-stripe:before { - content: "\f1f5"; -} -.fa-bell-slash:before { - content: "\f1f6"; -} -.fa-bell-slash-o:before { - content: "\f1f7"; -} -.fa-trash:before { - content: "\f1f8"; -} -.fa-copyright:before { - content: "\f1f9"; -} -.fa-at:before { - content: "\f1fa"; -} -.fa-eyedropper:before { - content: "\f1fb"; -} -.fa-paint-brush:before { - content: "\f1fc"; -} -.fa-birthday-cake:before { - content: "\f1fd"; -} -.fa-area-chart:before { - content: "\f1fe"; -} -.fa-pie-chart:before { - content: "\f200"; -} -.fa-line-chart:before { - content: "\f201"; -} -.fa-lastfm:before { - content: "\f202"; -} -.fa-lastfm-square:before { - content: "\f203"; -} -.fa-toggle-off:before { - content: "\f204"; -} -.fa-toggle-on:before { - content: "\f205"; -} -.fa-bicycle:before { - content: "\f206"; -} -.fa-bus:before { - content: "\f207"; -} -.fa-ioxhost:before { - content: "\f208"; -} -.fa-angellist:before { - content: "\f209"; -} -.fa-cc:before { - content: "\f20a"; -} -.fa-shekel:before, -.fa-sheqel:before, -.fa-ils:before { - content: "\f20b"; -} -.fa-meanpath:before { - content: "\f20c"; -} -.fa-buysellads:before { - content: "\f20d"; -} -.fa-connectdevelop:before { - content: "\f20e"; -} -.fa-dashcube:before { - content: "\f210"; -} -.fa-forumbee:before { - content: "\f211"; -} -.fa-leanpub:before { - content: "\f212"; -} -.fa-sellsy:before { - content: "\f213"; -} -.fa-shirtsinbulk:before { - content: "\f214"; -} -.fa-simplybuilt:before { - content: "\f215"; -} -.fa-skyatlas:before { - content: "\f216"; -} -.fa-cart-plus:before { - content: "\f217"; -} -.fa-cart-arrow-down:before { - content: "\f218"; -} -.fa-diamond:before { - content: "\f219"; -} -.fa-ship:before { - content: "\f21a"; -} -.fa-user-secret:before { - content: "\f21b"; -} -.fa-motorcycle:before { - content: "\f21c"; -} -.fa-street-view:before { - content: "\f21d"; -} -.fa-heartbeat:before { - content: "\f21e"; -} -.fa-venus:before { - content: "\f221"; -} -.fa-mars:before { - content: "\f222"; -} -.fa-mercury:before { - content: "\f223"; -} -.fa-intersex:before, -.fa-transgender:before { - content: "\f224"; -} -.fa-transgender-alt:before { - content: "\f225"; -} -.fa-venus-double:before { - content: "\f226"; -} -.fa-mars-double:before { - content: "\f227"; -} -.fa-venus-mars:before { - content: "\f228"; -} -.fa-mars-stroke:before { - content: "\f229"; -} -.fa-mars-stroke-v:before { - content: "\f22a"; -} -.fa-mars-stroke-h:before { - content: "\f22b"; -} -.fa-neuter:before { - content: "\f22c"; -} -.fa-genderless:before { - content: "\f22d"; -} -.fa-facebook-official:before { - content: "\f230"; -} -.fa-pinterest-p:before { - content: "\f231"; -} -.fa-whatsapp:before { - content: "\f232"; -} -.fa-server:before { - content: "\f233"; -} -.fa-user-plus:before { - content: "\f234"; -} -.fa-user-times:before { - content: "\f235"; -} -.fa-hotel:before, -.fa-bed:before { - content: "\f236"; -} -.fa-viacoin:before { - content: "\f237"; -} -.fa-train:before { - content: "\f238"; -} -.fa-subway:before { - content: "\f239"; -} -.fa-medium:before { - content: "\f23a"; -} -.fa-yc:before, -.fa-y-combinator:before { - content: "\f23b"; -} -.fa-optin-monster:before { - content: "\f23c"; -} -.fa-opencart:before { - content: "\f23d"; -} -.fa-expeditedssl:before { - content: "\f23e"; -} -.fa-battery-4:before, -.fa-battery-full:before { - content: "\f240"; -} -.fa-battery-3:before, -.fa-battery-three-quarters:before { - content: "\f241"; -} -.fa-battery-2:before, -.fa-battery-half:before { - content: "\f242"; -} -.fa-battery-1:before, -.fa-battery-quarter:before { - content: "\f243"; -} -.fa-battery-0:before, -.fa-battery-empty:before { - content: "\f244"; -} -.fa-mouse-pointer:before { - content: "\f245"; -} -.fa-i-cursor:before { - content: "\f246"; -} -.fa-object-group:before { - content: "\f247"; -} -.fa-object-ungroup:before { - content: "\f248"; -} -.fa-sticky-note:before { - content: "\f249"; -} -.fa-sticky-note-o:before { - content: "\f24a"; -} -.fa-cc-jcb:before { - content: "\f24b"; -} -.fa-cc-diners-club:before { - content: "\f24c"; -} -.fa-clone:before { - content: "\f24d"; -} -.fa-balance-scale:before { - content: "\f24e"; -} -.fa-hourglass-o:before { - content: "\f250"; -} -.fa-hourglass-1:before, -.fa-hourglass-start:before { - content: "\f251"; -} -.fa-hourglass-2:before, -.fa-hourglass-half:before { - content: "\f252"; -} -.fa-hourglass-3:before, -.fa-hourglass-end:before { - content: "\f253"; -} -.fa-hourglass:before { - content: "\f254"; -} -.fa-hand-grab-o:before, -.fa-hand-rock-o:before { - content: "\f255"; -} -.fa-hand-stop-o:before, -.fa-hand-paper-o:before { - content: "\f256"; -} -.fa-hand-scissors-o:before { - content: "\f257"; -} -.fa-hand-lizard-o:before { - content: "\f258"; -} -.fa-hand-spock-o:before { - content: "\f259"; -} -.fa-hand-pointer-o:before { - content: "\f25a"; -} -.fa-hand-peace-o:before { - content: "\f25b"; -} -.fa-trademark:before { - content: "\f25c"; -} -.fa-registered:before { - content: "\f25d"; -} -.fa-creative-commons:before { - content: "\f25e"; -} -.fa-gg:before { - content: "\f260"; -} -.fa-gg-circle:before { - content: "\f261"; -} -.fa-tripadvisor:before { - content: "\f262"; -} -.fa-odnoklassniki:before { - content: "\f263"; -} -.fa-odnoklassniki-square:before { - content: "\f264"; -} -.fa-get-pocket:before { - content: "\f265"; -} -.fa-wikipedia-w:before { - content: "\f266"; -} -.fa-safari:before { - content: "\f267"; -} -.fa-chrome:before { - content: "\f268"; -} -.fa-firefox:before { - content: "\f269"; -} -.fa-opera:before { - content: "\f26a"; -} -.fa-internet-explorer:before { - content: "\f26b"; -} -.fa-tv:before, -.fa-television:before { - content: "\f26c"; -} -.fa-contao:before { - content: "\f26d"; -} -.fa-500px:before { - content: "\f26e"; -} -.fa-amazon:before { - content: "\f270"; -} -.fa-calendar-plus-o:before { - content: "\f271"; -} -.fa-calendar-minus-o:before { - content: "\f272"; -} -.fa-calendar-times-o:before { - content: "\f273"; -} -.fa-calendar-check-o:before { - content: "\f274"; -} -.fa-industry:before { - content: "\f275"; -} -.fa-map-pin:before { - content: "\f276"; -} -.fa-map-signs:before { - content: "\f277"; -} -.fa-map-o:before { - content: "\f278"; -} -.fa-map:before { - content: "\f279"; -} -.fa-commenting:before { - content: "\f27a"; -} -.fa-commenting-o:before { - content: "\f27b"; -} -.fa-houzz:before { - content: "\f27c"; -} -.fa-vimeo:before { - content: "\f27d"; -} -.fa-black-tie:before { - content: "\f27e"; -} -.fa-fonticons:before { - content: "\f280"; -} - -@font-face { - font-family:'simple-line-icons';src:url('../fonts/Simple-Line-Icons.eot?v=2.4.0');src:url('../fonts/Simple-Line-Icons.eot?v=2.4.0#iefix') format('embedded-opentype'),url('../fonts/Simple-Line-Icons.woff2?v=2.4.0') format('woff2'),url('../fonts/Simple-Line-Icons.ttf?v=2.4.0') format('truetype'),url('../fonts/Simple-Line-Icons.woff?v=2.4.0') format('woff'),url('../fonts/Simple-Line-Icons.svg?v=2.4.0#simple-line-icons') format('svg');font-weight:normal;font-style:normal -} - -.icon-user,.icon-people,.icon-user-female,.icon-user-follow,.icon-user-following,.icon-user-unfollow,.icon-login,.icon-logout,.icon-emotsmile,.icon-phone,.icon-call-end,.icon-call-in,.icon-call-out,.icon-map,.icon-location-pin,.icon-direction,.icon-directions,.icon-compass,.icon-layers,.icon-menu,.icon-list,.icon-options-vertical,.icon-options,.icon-arrow-down,.icon-arrow-left,.icon-arrow-right,.icon-arrow-up,.icon-arrow-up-circle,.icon-arrow-left-circle,.icon-arrow-right-circle,.icon-arrow-down-circle,.icon-check,.icon-clock,.icon-plus,.icon-minus,.icon-close,.icon-event,.icon-exclamation,.icon-organization,.icon-trophy,.icon-screen-smartphone,.icon-screen-desktop,.icon-plane,.icon-notebook,.icon-mustache,.icon-mouse,.icon-magnet,.icon-energy,.icon-disc,.icon-cursor,.icon-cursor-move,.icon-crop,.icon-chemistry,.icon-speedometer,.icon-shield,.icon-screen-tablet,.icon-magic-wand,.icon-hourglass,.icon-graduation,.icon-ghost,.icon-game-controller,.icon-fire,.icon-eyeglass,.icon-envelope-open,.icon-envelope-letter,.icon-bell,.icon-badge,.icon-anchor,.icon-wallet,.icon-vector,.icon-speech,.icon-puzzle,.icon-printer,.icon-present,.icon-playlist,.icon-pin,.icon-picture,.icon-handbag,.icon-globe-alt,.icon-globe,.icon-folder-alt,.icon-folder,.icon-film,.icon-feed,.icon-drop,.icon-drawer,.icon-docs,.icon-doc,.icon-diamond,.icon-cup,.icon-calculator,.icon-bubbles,.icon-briefcase,.icon-book-open,.icon-basket-loaded,.icon-basket,.icon-bag,.icon-action-undo,.icon-action-redo,.icon-wrench,.icon-umbrella,.icon-trash,.icon-tag,.icon-support,.icon-frame,.icon-size-fullscreen,.icon-size-actual,.icon-shuffle,.icon-share-alt,.icon-share,.icon-rocket,.icon-question,.icon-pie-chart,.icon-pencil,.icon-note,.icon-loop,.icon-home,.icon-grid,.icon-graph,.icon-microphone,.icon-music-tone-alt,.icon-music-tone,.icon-earphones-alt,.icon-earphones,.icon-equalizer,.icon-like,.icon-dislike,.icon-control-start,.icon-control-rewind,.icon-control-play,.icon-control-pause,.icon-control-forward,.icon-control-end,.icon-volume-1,.icon-volume-2,.icon-volume-off,.icon-calendar,.icon-bulb,.icon-chart,.icon-ban,.icon-bubble,.icon-camrecorder,.icon-camera,.icon-cloud-download,.icon-cloud-upload,.icon-envelope,.icon-eye,.icon-flag,.icon-heart,.icon-info,.icon-key,.icon-link,.icon-lock,.icon-lock-open,.icon-magnifier,.icon-magnifier-add,.icon-magnifier-remove,.icon-paper-clip,.icon-paper-plane,.icon-power,.icon-refresh,.icon-reload,.icon-settings,.icon-star,.icon-symbol-female,.icon-symbol-male,.icon-target,.icon-credit-card,.icon-paypal,.icon-social-tumblr,.icon-social-twitter,.icon-social-facebook,.icon-social-instagram,.icon-social-linkedin,.icon-social-pinterest,.icon-social-github,.icon-social-google,.icon-social-reddit,.icon-social-skype,.icon-social-dribbble,.icon-social-behance,.icon-social-foursqare,.icon-social-soundcloud,.icon-social-spotify,.icon-social-stumbleupon,.icon-social-youtube,.icon-social-dropbox,.icon-social-vkontakte,.icon-social-steam { - font-family: 'simple-line-icons'; - speak: none; - font-style: normal; - font-weight: normal; - font-variant: normal; - text-transform: none; - line-height: 1; - -webkit-font-smoothing: antialiased; - -moz-osx-font-smoothing: grayscale -} - -.icon-user:before { - content: "\e005" -} - -.icon-people:before { - content: "\e001" -} - -.icon-user-female:before { - content: "\e000" -} - -.icon-user-follow:before { - content: "\e002" -} - -.icon-user-following:before { - content: "\e003" -} - -.icon-user-unfollow:before { - content: "\e004" -} - -.icon-login:before { - content: "\e066" -} - -.icon-logout:before { - content: "\e065" -} - -.icon-emotsmile:before { - content: "\e021" -} - -.icon-phone:before { - content: "\e600" -} - -.icon-call-end:before { - content: "\e048" -} - -.icon-call-in:before { - content: "\e047" -} - -.icon-call-out:before { - content: "\e046" -} - -.icon-map:before { - content: "\e033" -} - -.icon-location-pin:before { - content: "\e096" -} - -.icon-direction:before { - content: "\e042" -} - -.icon-directions:before { - content: "\e041" -} - -.icon-compass:before { - content: "\e045" -} - -.icon-layers:before { - content: "\e034" -} - -.icon-menu:before { - content: "\e601" -} - -.icon-list:before { - content: "\e067" -} - -.icon-options-vertical:before { - content: "\e602" -} - -.icon-options:before { - content: "\e603" -} - -.icon-arrow-down:before { - content: "\e604" -} - -.icon-arrow-left:before { - content: "\e605" -} - -.icon-arrow-right:before { - content: "\e606" -} - -.icon-arrow-up:before { - content: "\e607" -} - -.icon-arrow-up-circle:before { - content: "\e078" -} - -.icon-arrow-left-circle:before { - content: "\e07a" -} - -.icon-arrow-right-circle:before { - content: "\e079" -} - -.icon-arrow-down-circle:before { - content: "\e07b" -} - -.icon-check:before { - content: "\e080" -} - -.icon-clock:before { - content: "\e081" -} - -.icon-plus:before { - content: "\e095" -} - -.icon-minus:before { - content: "\e615" -} - -.icon-close:before { - content: "\e082" -} - -.icon-event:before { - content: "\e619" -} - -.icon-exclamation:before { - content: "\e617" -} - -.icon-organization:before { - content: "\e616" -} - -.icon-trophy:before { - content: "\e006" -} - -.icon-screen-smartphone:before { - content: "\e010" -} - -.icon-screen-desktop:before { - content: "\e011" -} - -.icon-plane:before { - content: "\e012" -} - -.icon-notebook:before { - content: "\e013" -} - -.icon-mustache:before { - content: "\e014" -} - -.icon-mouse:before { - content: "\e015" -} - -.icon-magnet:before { - content: "\e016" -} - -.icon-energy:before { - content: "\e020" -} - -.icon-disc:before { - content: "\e022" -} - -.icon-cursor:before { - content: "\e06e" -} - -.icon-cursor-move:before { - content: "\e023" -} - -.icon-crop:before { - content: "\e024" -} - -.icon-chemistry:before { - content: "\e026" -} - -.icon-speedometer:before { - content: "\e007" -} - -.icon-shield:before { - content: "\e00e" -} - -.icon-screen-tablet:before { - content: "\e00f" -} - -.icon-magic-wand:before { - content: "\e017" -} - -.icon-hourglass:before { - content: "\e018" -} - -.icon-graduation:before { - content: "\e019" -} - -.icon-ghost:before { - content: "\e01a" -} - -.icon-game-controller:before { - content: "\e01b" -} - -.icon-fire:before { - content: "\e01c" -} - -.icon-eyeglass:before { - content: "\e01d" -} - -.icon-envelope-open:before { - content: "\e01e" -} - -.icon-envelope-letter:before { - content: "\e01f" -} - -.icon-bell:before { - content: "\e027" -} - -.icon-badge:before { - content: "\e028" -} - -.icon-anchor:before { - content: "\e029" -} - -.icon-wallet:before { - content: "\e02a" -} - -.icon-vector:before { - content: "\e02b" -} - -.icon-speech:before { - content: "\e02c" -} - -.icon-puzzle:before { - content: "\e02d" -} - -.icon-printer:before { - content: "\e02e" -} - -.icon-present:before { - content: "\e02f" -} - -.icon-playlist:before { - content: "\e030" -} - -.icon-pin:before { - content: "\e031" -} - -.icon-picture:before { - content: "\e032" -} - -.icon-handbag:before { - content: "\e035" -} - -.icon-globe-alt:before { - content: "\e036" -} - -.icon-globe:before { - content: "\e037" -} - -.icon-folder-alt:before { - content: "\e039" -} - -.icon-folder:before { - content: "\e089" -} - -.icon-film:before { - content: "\e03a" -} - -.icon-feed:before { - content: "\e03b" -} - -.icon-drawer:before { - content: "\e03f" -} - -.icon-docs:before { - content: "\e040" -} - -.icon-doc:before { - content: "\e085" -} - -.icon-diamond:before { - content: "\e043" -} - -.icon-cup:before { - content: "\e044" -} - -.icon-calculator:before { - content: "\e049" -} - -.icon-bubbles:before { - content: "\e04a" -} - -.icon-briefcase:before { - content: "\e04b" -} - -.icon-book-open:before { - content: "\e04c" -} - -.icon-basket-loaded:before { - content: "\e04d" -} - -.icon-basket:before { - content: "\e04e" -} - -.icon-bag:before { - content: "\e04f" -} - -.icon-action-undo:before { - content: "\e050" -} - -.icon-action-redo:before { - content: "\e051" -} - -.icon-wrench:before { - content: "\e052" -} - -.icon-umbrella:before { - content: "\e053" -} - -.icon-trash:before { - content: "\e054" -} - -.icon-tag:before { - content: "\e055" -} - -.icon-support:before { - content: "\e056" -} - -.icon-frame:before { - content: "\e038" -} - -.icon-size-fullscreen:before { - content: "\e057" -} - -.icon-size-actual:before { - content: "\e058" -} - -.icon-shuffle:before { - content: "\e059" -} - -.icon-share-alt:before { - content: "\e05a" -} - -.icon-share:before { - content: "\e05b" -} - -.icon-rocket:before { - content: "\e05c" -} - -.icon-question:before { - content: "\e05d" -} - -.icon-pie-chart:before { - content: "\e05e" -} - -.icon-pencil:before { - content: "\e05f" -} - -.icon-note:before { - content: "\e060" -} - -.icon-loop:before { - content: "\e064" -} - -.icon-home:before { - content: "\e069" -} - -.icon-grid:before { - content: "\e06a" -} - -.icon-graph:before { - content: "\e06b" -} - -.icon-microphone:before { - content: "\e063" -} - -.icon-music-tone-alt:before { - content: "\e061" -} - -.icon-music-tone:before { - content: "\e062" -} - -.icon-earphones-alt:before { - content: "\e03c" -} - -.icon-earphones:before { - content: "\e03d" -} - -.icon-equalizer:before { - content: "\e06c" -} - -.icon-like:before { - content: "\e068" -} - -.icon-dislike:before { - content: "\e06d" -} - -.icon-control-start:before { - content: "\e06f" -} - -.icon-control-rewind:before { - content: "\e070" -} - -.icon-control-play:before { - content: "\e071" -} - -.icon-control-pause:before { - content: "\e072" -} - -.icon-control-forward:before { - content: "\e073" -} - -.icon-control-end:before { - content: "\e074" -} - -.icon-volume-1:before { - content: "\e09f" -} - -.icon-volume-2:before { - content: "\e0a0" -} - -.icon-volume-off:before { - content: "\e0a1" -} - -.icon-calendar:before { - content: "\e075" -} - -.icon-bulb:before { - content: "\e076" -} - -.icon-chart:before { - content: "\e077" -} - -.icon-ban:before { - content: "\e07c" -} - -.icon-bubble:before { - content: "\e07d" -} - -.icon-camrecorder:before { - content: "\e07e" -} - -.icon-camera:before { - content: "\e07f" -} - -.icon-cloud-download:before { - content: "\e083" -} - -.icon-cloud-upload:before { - content: "\e084" -} - -.icon-envelope:before { - content: "\e086" -} - -.icon-eye:before { - content: "\e087" -} - -.icon-flag:before { - content: "\e088" -} - -.icon-heart:before { - content: "\e08a" -} - -.icon-info:before { - content: "\e08b" -} - -.icon-key:before { - content: "\e08c" -} - -.icon-link:before { - content: "\e08d" -} - -.icon-lock:before { - content: "\e08e" -} - -.icon-lock-open:before { - content: "\e08f" -} - -.icon-magnifier:before { - content: "\e090" -} - -.icon-magnifier-add:before { - content: "\e091" -} - -.icon-magnifier-remove:before { - content: "\e092" -} - -.icon-paper-clip:before { - content: "\e093" -} - -.icon-paper-plane:before { - content: "\e094" -} - -.icon-power:before { - content: "\e097" -} - -.icon-refresh:before { - content: "\e098" -} - -.icon-reload:before { - content: "\e099" -} - -.icon-settings:before { - content: "\e09a" -} - -.icon-star:before { - content: "\e09b" -} - -.icon-symbol-female:before { - content: "\e09c" -} - -.icon-symbol-male:before { - content: "\e09d" -} - -.icon-target:before { - content: "\e09e" -} - -.icon-credit-card:before { - content: "\e025" -} - -.icon-paypal:before { - content: "\e608" -} - -.icon-social-tumblr:before { - content: "\e00a" -} - -.icon-social-twitter:before { - content: "\e009" -} - -.icon-social-facebook:before { - content: "\e00b" -} - -.icon-social-instagram:before { - content: "\e609" -} - -.icon-social-linkedin:before { - content: "\e60a" -} - -.icon-social-pinterest:before { - content: "\e60b" -} - -.icon-social-github:before { - content: "\e60c" -} - -.icon-social-google:before { - content: "\e60d" -} - -.icon-social-reddit:before { - content: "\e60e" -} - -.icon-social-skype:before { - content: "\e60f" -} - -.icon-social-dribbble:before { - content: "\e00d" -} - -.icon-social-behance:before { - content: "\e610" -} - -.icon-social-foursqare:before { - content: "\e611" -} - -.icon-social-soundcloud:before { - content: "\e612" -} - -.icon-social-spotify:before { - content: "\e613" -} - -.icon-social-stumbleupon:before { - content: "\e614" -} - -.icon-social-youtube:before { - content: "\e008" -} - -.icon-social-dropbox:before { - content: "\e00c" -} - -.icon-social-vkontakte:before { - content: "\e618" -} - -.icon-social-steam:before { - content: "\e620" -} diff --git a/src/main/resources/static/img/.DS_Store b/src/main/resources/static/img/.DS_Store deleted file mode 100644 index 9a92c7eefe3f1ff8c89b9a0bee6f0edd5c7d4463..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8196 zcmeHM&2AGh5FRH{30*`f>Y>LyaNv?k<)2$r6(p{3C*)sgmL!m_T5fp^9;y$}2jI{n zZxFs2JC!#(4hJL@sdi+~#yg+K^Uc^BZ-~g8W_!tc)lza1JvcSe)KyA+NE z^Xuy-)S>S*r3;!zCOq=?2!X_M>wneE;{>P%FPwG_T|WdcTC8(^t$n!$%!Ka=^F$z>UD! z)5m@gT4T(ok4xwq5G`5TywcRn6-Is30mf&RMsyBL1K-BD<}4my#%=Vf<4898<0L@l zu-)A>XUR(+RR?CnjwiW!NW)Gw%9SZ`saK+wo>9I}RP rzJL3NA+A%`*K~4WCGMd7_ZI>FKa}p5u8Gfo{%s$h|Hy~C^8Eh;q>ZZ$ diff --git a/src/main/resources/static/img/bg.png b/src/main/resources/static/img/bg.png deleted file mode 100644 index 73d102db00caaa7c39241ad6bdf44f2f62deb4e4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2851 zcmaJ@dpMM78`svx*rZ4$VvKAeb1)1uF^VC!21S}^Y0SLC7;`W)j%ggCq?|T~l-1?i zT5>*qu|kR_rp(GB6hb7YaXyUU8*TM{-*tU`@Aba#^E~%;|9CT-hfG!1LBLe9IpnM{ z9*$>O0p3*G5H{cxV(&}}p^?yJhy@mG7KD)!&;c$H97OkJa43+iugMdG| zaB1d{zeN%7j$kV$8vq+akp?6<0s%&$pa>&l6bf+|YzRjf!r;;uWq>fk7^5(TCg9Hx zL>i4vreIFvY(B@5p3EWMTrLX(g9Qc#LIaUdCff^!K%>zc9EOGlQV#=8FoR1BGGK7D zzcAnc4v9@=aj8rOc!QDX$@J%%L!?UoPJzz)O3UDUE|auiuplA}hJeC1Qu^YE$Nzs< zI{m9RhkF|Mx8DCr%yAB80kG2mhw0BINgGGe-U!9QSg`>jm&tZ!GJU^P(b1d9Wpcck zEU=Xm3apDKlBkRg!=XmLdk5+#%N#|!{`*m=ohp(d#Fr@R&mJT*{FG?aK zBb#D}JLVkJJ^phmV-UXWgu?pch4s413FUysi9dmOouuT9$?!K%wQQaEc`CQ>kw+HR z)@tcJ0)arXo{*5hpO&mn1RTk%(+uPBYHMpXgid^q#rd9NEB)u4*uE8E<6%7k>ywh6 z=V9WaD33l5mRJmXLIS#hbOB!k^wT^)9f0wxUcr!09Vid|Gl@AfA;AaO*Tu-?uv5wB_d? ze_wc83@v7*Hy*D`0=ZCFQ_XScs>y`?2_m@JIcbUyR%l)uGF7P4)rzKmi zgE0HRc-@7l*)#m75MJoEG<$VK_J-Afj(V6@Z}uX)80PD>3wbI{F28)h`Dw$fab?HI ziOU}QR$uj}ZLKp}x?c}d;88{YZOSuR@_S=x4sY*|q{#N9jrj5P6Yqkq_5>W~36OY)|CtJu``tStB#IoQyj&KLzKr;{4(Z9Xz4)Z;X5f?!>1w>gUPz8&w|V{Sia4 z7Y2rA0Ov`A(5|bFPOw}PpXa7$-z6c1uG6)V4>3ghw;}y{n_Nnv2 zLG}8_#&zF?#H@^i=Bo|$wEmBBrnrdwil7l@@ReZStqq?4Mfjz(-g{4T{Z^qiB1 zz^-dlX?hlk7L4{qlcwtk_>b>rOkc6D?pi3Rb7EF*=Umh54ev>$% z_94$c2uP9eUmfjoCmVy55_~n*WsCCPOMEji9v58*4jFUluI#th8#TMCc)60U%Hqj0 z@6*Np!jXcWL;0v!JkDeD9+dHm+S89gR_ez@CP>^T({K@2?>vq^;&{#m!zWum84mGO!HVd83!PiwY zpAYzY(UdMZl8czj9i|7$THLMxw0kn(7B5d`I;6) zhmY{yi>B?RRhZO)rigLxWxf3>0fW+7yK3s^3$Vnvz10g>8do$gmMZXG$giW-9fqn8 zKYT0BcFBC(N^REOJ6tay-E3^o!xAcMbssmY+_y;1R9VF}Y(8FDoL|pdO0gSX@`#UK zRmod)!)9ku6=ky%X#`mF%*UPX5vdMMgeuQ9i2}V@=%Ig&|H9BG*dBIIRmY7tXFYiM z{M6V7ckToYzvZ~?~ z9dQN$txWTXP)ckZ@q@Sjmel5crc7bD;_0Jh`M2M7m^Cfu1#6hiy|}67Rz8-w=5*pJ4pG6HD8e*$A#CviD5Rs7^$Q_zfBU3TR8vs)&9)yhAY?2oDT2%*GNIAgZr z{e0~_ta?{xcJ6Ck^l>MUb%%w))1PQ@+NBFgjn%oBr0%M$AF!x@baizr=MHjT=hY@EY2&}t@Q z{ZnVnOz$hdeoP)y?GhIf>SC72hZNkGdQ0NYDf*SxrY5MZ^&FYM;dEp3;;!$u%;sO9*H6;am6P|>F0)n;;U$$_nB zN9y(a2IW=|yC}d+eB|P6a-ht@je|quCbehk#7CCZea9A2AAI}4Qy`UvYZNNw1F}>Y hD}v^2s$Q3a%g~P`+Sj%~6*jJ|cGmW|Ldy%0{{qKIBM1Nh diff --git a/src/main/resources/static/img/blue.png b/src/main/resources/static/img/blue.png new file mode 100644 index 0000000000000000000000000000000000000000..af04cee596d5d2f884b03f9d8f0dd25c1cd5a0fa GIT binary patch literal 1132 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 diff --git a/src/main/resources/static/js/.DS_Store b/src/main/resources/static/js/.DS_Store deleted file mode 100644 index b34c7460ba31ec4ffb2d4d81264d44a86d9455fc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8196 zcmeHM&u1{C1*`&Zr2^{t;9^yni?L-;KRVFp6acXwyLG`f<^h`H#+Zw- zWl&QwrpX>iOeJxOK@1(oUFD9Li?Lk;wmcRXaz#^H=z96Z-{&(ITNDmGjP=_-*bgj59nnmf! zMwIu$6@A7k)Q{T*Pp-Gy3ql0DZO>n1v{`b-&j~I)#%b6=UA@Y9MKtrG!7I^f(ZsvT zDssK#WC|hOKx)C`bdg2OX91I&=|OdroQbWi6Q`!#+0)z8?$*r5r?S)Tr`gln+s^HD z`p8G0oV~nU-@fz1z55RyK6?E8M}6Hu;+GMOne$!yQ@1Ltyb-HHp0-u_-Elf}dGFxx zh%tPvbqB zI-_o9EK|8l?Zz?FaA3+bFmrLp0vDVPPUQ-wZxH{CI1XpwGAzPPxCP(A_wWRs!O!p; z{0aY%0pgGk$#F7EJ|kzyMKVV&kplUWd}ZjV_J$s9PhpU(ASQ0}jbg|H!K*l;SVPdn z2S}hFg*9yTdZ2aw%uH}=tpaaEfj%?qq{{z4@BRJ%jjYX1Y89{wydDKe|M}wiJkHgA z`z5DUxweb-Ypkj$zm`EwL8H@gM4gT!?*79N+b+5)PAY}T7=G8EYdaJpKpc>e#i>Y%JZEu=w9k21OW1A>a zPCf7odgl9QAOunm`~bLf;K-3%c;0u$(ax-`3M8m1&8~K5vVNZVc;=nidEYD%d0UhI zC89PF`M5Z3uHp88sKsgK;NSVm9Ys9xa9zcPe3NKSA&uV~#J%nyht5AJ;1TmnxXLu3 zAj^-tc#0y6_W+t9-#9zN{o2_zji1yHmg^;1oDl zfY*l>E>1Ufda6=cI&kAHJpayHcsY>Ard^)3bh@e2Qk;S**+oub5O_;oNs**&}D!tYkeW#B@TnbO>BgG7C} z#I;O`1H^}PbZJp@k@e21cL61iQ6_6Xr(L8ocJ?JazQau1;*_Zs7D;i0{OuWQv0k@iqmj5ZBS4y#|d4XsLA zs~WJZKU*n}7)IM-U>uBE%3!cHjBJbJaWIfoASZMer&y3#E{}$^q^w(Fq2202yt-Jb zSSt*V_yiWh>&94SUTTk@SneakaucjY%IX8QS}?6uKrA=QVJn%674~4c%&_L5$F`eg zRK#Kfv6W?Zo5lLTs(E;XIzoG1h|QY#BiNr>UjlHKS!@>Hkp6a|)CjB?+$HOhSnne! zUeortg5~T|>~e)VmVH7_cQ^%{0!{&^fK$LJ@Kh`CDq6n=FEGRoYJzIoyPy)tKvOQz-5nSWcmWU-!#zA0v+Q_)&5bujSc*@+y}+plP=Fg-6LgD|`id-}d}Gc%sJmRRkSl^bo}`$C`KZ2DSk#@5F>|%|{L3 zg&M3naIx&;55eIGNX|dz9lgQfn%F1ih{?*D*e^9$+;c8{gfrJJvGa$9ch!eV%0FJw z7qRw-sHLv$wT^x$&hEm(a|*MKGsn}MrbGo0r=UH|CuZ~b?4gZ1Z>laMlx?REzUtNI z=v&_F=TXYy8^BLcHX;hpnvHfq~<4)ylnctv2v$ zz;je`fR?Ce#876#l9++Pt0JnzQBRJ)<~Gp&cKQ*kiVq8jzvP;T3N+8G%`51S(*BrhDBt`@k!T z6-j0+ziknzp$+6Bli^`KF&JEWLLW#BscT`ex-Y@*qHIKwOsptBgYxJr?pWhc?h$Z^ zG(**~tX0.box-header .box-title { @@ -137,85 +136,149 @@ label.error { } .i-checks label.error, .check-box label.error, .radio-box label.error { - right:auto; - width:150px; - left:210px; - top:1px; - max-width: none; + right: auto; + width: 150px; + left: 210px; + top: 1px; + max-width: none; } -/** 内联复选框&单选框 */ +/** 复选框&单选框 */ .check-box,.radio-box { - display:inline-block; - box-sizing:border-box; - cursor:pointer; - position:relative; - padding-right:20px; - padding-top:7px; + display: inline-block; + box-sizing: border-box; + cursor: pointer; + position: relative; + padding-left: 25px; + padding-right: 15px; + padding-top: 8px; +} + +.icheckbox, .icheckbox-blue, .iradio, .iradio-blue, .iradio-purple { + position: absolute; + top: 8px; + left: 0 +} + +/* iCheck */ +.icheckbox-blue,.iradio-blue { + display: block; + margin: 0; + padding: 0; + width: 18px; + height: 18px; + background: url(/img/blue.png) no-repeat; + border: none; + cursor: pointer +} + +.icheckbox-blue,.icheckbox-blue.static:hover { + background-position: 0 0 +} + +.icheckbox-blue.hover,.icheckbox-blue:hover { + background-position: -20px 0 +} + +.icheckbox-blue.checked { + background-position: -40px 0 +} + +.icheckbox-blue.disabled { + background-position: -60px 0; + cursor: default +} + +.icheckbox-blue.checked.disabled { + background-position: -80px 0 +} + +.iradio-blue,.iradio-blue.static:hover { + background-position: -100px 0 +} + +.iradio-blue.hover,.iradio-blue:hover { + background-position: -120px 0 +} + +.iradio-blue.checked { + background-position: -140px 0 +} + +.iradio-blue.disabled { + background-position: -160px 0; + cursor: default +} + +.iradio-blue.checked.disabled { + background-position: -180px 0 } /** 遮罩层 */ .loaderbox { - display: inline-block; - min-width: 125px; - padding: 10px; - margin: 0 auto; - color: #000 !important; - font-size: 13px; - font-weight: 400; - text-align: center; - vertical-align: middle; - border: 1px solid #ddd; - background-color: #eee; - -webkit-border-radius: 2px; - -moz-border-radius: 2px; - -ms-border-radius: 2px; - -o-border-radius: 2px; - border-radius: 2px; - -webkit-box-shadow: 0 1px 8px rgba(0, 0, 0, 0.1); - -moz-box-shadow: 0 1px 8px rgba(0, 0, 0, 0.1); - box-shadow: 0 1px 8px rgba(0, 0, 0, 0.1); + display: inline-block; + min-width: 125px; + padding: 10px; + margin: 0 auto; + color: #000 !important; + font-size: 13px; + font-weight: 400; + text-align: center; + vertical-align: middle; + border: 1px solid #ddd; + background-color: #eee; + -webkit-border-radius: 2px; + -moz-border-radius: 2px; + -ms-border-radius: 2px; + -o-border-radius: 2px; + border-radius: 2px; + -webkit-box-shadow: 0 1px 8px rgba(0, 0, 0, 0.1); + -moz-box-shadow: 0 1px 8px rgba(0, 0, 0, 0.1); + box-shadow: 0 1px 8px rgba(0, 0, 0, 0.1); } .loaderbox .loading-activity { - float: left; - width: 18px; - height: 18px; - border: solid 2px transparent; - border-top-color: #000; - border-left-color: #000; - border-radius: 10px; - -webkit-animation: pace-spinner 400ms linear infinite; - -moz-animation: pace-spinner 400ms linear infinite; - -ms-animation: pace-spinner 400ms linear infinite; - -o-animation: pace-spinner 400ms linear infinite; - animation: pace-spinner 400ms linear infinite; + float: left; + width: 18px; + height: 18px; + border: solid 2px transparent; + border-top-color: #000; + border-left-color: #000; + border-radius: 10px; + -webkit-animation: pace-spinner 400ms linear infinite; + -moz-animation: pace-spinner 400ms linear infinite; + -ms-animation: pace-spinner 400ms linear infinite; + -o-animation: pace-spinner 400ms linear infinite; + animation: pace-spinner 400ms linear infinite; } @media (max-width: 767px) { - .loading-activity { - width: 18px; - height: 18px; - } + .loading-activity { + width: 18px; + height: 18px; + } } @-ms-keyframes pace-spinner { - 0% { - -ms-transform: rotate(0deg); - transform: rotate(0deg); - } - 100% { - -ms-transform: rotate(360deg); - transform: rotate(360deg); - } + 0% { + -ms-transform: rotate(0deg); + transform: rotate(0deg); + } + + 100% { + -ms-transform: rotate(360deg); + transform: rotate(360deg); + } } + @keyframes pace-spinner { - 0% { - transform: rotate(0deg); - } - 100% { - transform: rotate(360deg); - } + 0% { + transform: rotate(0deg); + } + + 100% { + transform: rotate(360deg); + } } /** 表单查询条件 */ @@ -236,12 +299,12 @@ li { } label { - font-weight: normal; + font-weight: normal; } .container-div { - padding:10px 35px; - height:100%; + padding: 10px 35px; + height: 100%; } .container-div .row { @@ -249,13 +312,13 @@ label { } .select-info,.select-table { - width:100%; + width: 100%; background: #fff; - border-radius: 6px; - margin-top:10px; - padding-top: 5px; - padding-bottom: 13px; - box-shadow: 1px 1px 3px rgba(0,0,0,.2); + border-radius: 6px; + margin-top: 10px; + padding-top: 5px; + padding-bottom: 13px; + box-shadow: 1px 1px 3px rgba(0,0,0,.2); } .select-info { @@ -263,97 +326,108 @@ label { } .select-info .col-sm-6 .control-label { - color:#333; + color: #333; } @media ( max-width : 768px) { - .select-info { - display: none; - } + .select-info { + display: none; + } } -.select-list li{ - float:left; - color:#333; +.select-list li { + float: left; + color: #333; margin: 5px 15px 5px 0px; } -.select-list li input{ - border:1px solid #ddd; + +.select-list li input { + border: 1px solid #ddd; border-radius: 4px; background: transparent; outline: none; height: 30px; - width:280px; - padding-left:5px; + width: 280px; + padding-left: 5px; } -.select-list li .submit-btn{ - border:0px; + +.select-list li .submit-btn { + border: 0px; border-radius: 4px; background: transparent; outline: none; width: 40px; - height: 23px; + height: 23px; } -.select-list li select{ - border:1px solid #ddd; + +.select-list li select { + border: 1px solid #ddd; border-radius: 4px; background: transparent; outline: none; height: 30px; - width:280px; + width: 280px; } -.select-list .select-time input{ - width:133px; +.select-list .select-time input { + width: 133px; } -.select-time label,.select-time span,.select-time input{ - float:left; +.select-time label,.select-time span,.select-time input { + float: left; } -.select-time label{ - margin-top: 5px; + +.select-time label { + margin-top: 5px; } -.select-time span{ - display: block; - margin: 5px 5px; + +.select-time span { + display: block; + margin: 5px 5px; } -.search-btn{ + +.search-btn { background-color: #1ab394; - border-color: #1ab394; - color: #FFF; - margin-bottom: 5px; - display: inline-block; - padding: 6px 12px; - margin-bottom: 0; - font-size: 14px; - font-weight: 400; - line-height: 1.42857143; - text-align: center; - white-space: nowrap; - border-radius: 3px; - vertical-align: middle; - cursor: pointer; + border-color: #1ab394; + color: #FFF; + margin-bottom: 5px; + display: inline-block; + padding: 6px 12px; + margin-bottom: 0; + font-size: 14px; + font-weight: 400; + line-height: 1.42857143; + text-align: center; + white-space: nowrap; + border-radius: 3px; + vertical-align: middle; + cursor: pointer; } /** 表格查询数据 */ -.table-striped{ - min-height:75%; +.table-striped { + min-height: 75%; } -.table-striped .bootstrap-table{ - border:0px!important; + +.table-striped .bootstrap-table { + border: 0px!important; } -.table-striped .table, .fixed-table-container, table, .table-striped .table, .table>thead>tr>th, .table>tbody>tr>th, .table>tfoot>tr>th, .table>thead>tr>td, .table>tbody>tr>td, .table>tfoot>tr>td{ - border-bottom: 1px solid #e7eaec!important; - background-color: transparent!important; - border: 0px; + +.table-striped .table, .fixed-table-container, table, .table-striped .table, .table>thead>tr>th, .table>tbody>tr>th, .table>tfoot>tr>th, .table>thead>tr>td, .table>tbody>tr>td, .table>tfoot>tr>td { + border-bottom: 1px solid #e7eaec!important; + background-color: transparent!important; + border: 0px; } -.table-striped .table>thead>tr>th, .table-striped .table>tbody>tr>th{ + +.table-striped .table>thead>tr>th, .table-striped .table>tbody>tr>th { border-bottom: 1px solid #ccc!important; border-top: 0px!important; } -.table-striped .table>thead:first-child>tr:first-child>th{ - color:#333; + +.table-striped .table>thead:first-child>tr:first-child>th { + color: #333; } + .table-bordered td,.table-bordered th { border: 1px solid #ddd!important } diff --git a/src/main/resources/static/ruoyi/css/ry-ui.min.css b/src/main/resources/static/ruoyi/css/ry-ui.min.css index 25496198..a31e7c0f 100644 --- a/src/main/resources/static/ruoyi/css/ry-ui.min.css +++ b/src/main/resources/static/ruoyi/css/ry-ui.min.css @@ -1,5 +1,5 @@ -/*! - * ruoyi.css - * Author: Ruoyi +/** + * 通用css样式布局处理 + * Copyright (c) 2018 ruoyi */ -.box{position:relative;border-radius:3px;background:#fff;border-top:3px solid #d2d6de;margin-bottom:20px;width:100%;box-shadow:0 1px 1px rgba(0,0,0,0.1)}.box-header:before,.box-body:before,.box-footer:before,.box-header:after,.box-body:after,.box-footer:after{content:" ";display:table}.box-header:after,.box-body:after,.box-footer:after{clear:both}.btn-box-tool{padding:5px;font-size:12px;background:transparent;color:#97a0b3}.open .btn-box-tool,.btn-box-tool:hover{color:#606c84}.box-main{margin:0;border:0;padding-top:2px;border-radius:0;box-shadow:none}.box-main>.box-header{border-bottom:1px solid #eee;padding:12px 10px 2px 15px}.box-header .box-title{display:inline-block;font-size:18px;margin:0;line-height:1}.box-main>.box-header .box-title{font-size:16px;margin-bottom:13px;float:left}.box-main>.box-header .box-title .fa{font-size:14px;padding-right:3px;margin-top:-2px}.box-main>.box-header .box-tools{position:relative;top:-5px;right:0}.box-main>.box-header .box-tools .btn{padding:3px 10px 5px 10px;font-size:14px;margin-bottom:2px}.box-main>.box-header .box-tools .btn-box-tool{padding:4px 2px}.box-main form>.box-footer,.nav-main form>.box-footer{background:#fafafa}.box-main form>.box-footer .row,.nav-main form>.box-footer .row{margin:5px 0 5px -25px}.select2-container--default .select2-selection--multiple .select2-selection__choice{background-color:#1ab394;border-color:#1ab394;padding:1px 10px;color:#fff}.select2-container--default .select2-selection--multiple .select2-selection__choice__remove{margin-right:5px;color:rgba(255,255,255,0.7)}.select2-container--default .select2-selection--multiple .select2-selection__choice__remove:hover{color:#fff}.select2-container .select2-selection--single .select2-selection__rendered{padding-right:10px}label.error{position:absolute;right:18px;top:7px;color:#ef392b;font-size:12px}.Validform_error,input.error,select.error{background-color:#fbe2e2;border-color:#c66161;color:#c00}.Validform_wrong,.Validform_right,.Validform_warning{display:inline-block;height:20px;font-size:12px;vertical-align:middle;padding-left:25px}.i-checks label.error,.check-box label.error,.radio-box label.error{right:auto;width:150px;left:210px;top:1px;max-width:none}.check-box,.radio-box{display:inline-block;box-sizing:border-box;cursor:pointer;position:relative;padding-right:20px;padding-top:7px}.loaderbox{display:inline-block;min-width:125px;padding:10px;margin:0 auto;color:#000!important;font-size:13px;font-weight:400;text-align:center;vertical-align:middle;border:1px solid #ddd;background-color:#eee;-webkit-border-radius:2px;-moz-border-radius:2px;-ms-border-radius:2px;-o-border-radius:2px;border-radius:2px;-webkit-box-shadow:0 1px 8px rgba(0,0,0,0.1);-moz-box-shadow:0 1px 8px rgba(0,0,0,0.1);box-shadow:0 1px 8px rgba(0,0,0,0.1)}.loaderbox .loading-activity{float:left;width:18px;height:18px;border:solid 2px transparent;border-top-color:#000;border-left-color:#000;border-radius:10px;-webkit-animation:pace-spinner 400ms linear infinite;-moz-animation:pace-spinner 400ms linear infinite;-ms-animation:pace-spinner 400ms linear infinite;-o-animation:pace-spinner 400ms linear infinite;animation:pace-spinner 400ms linear infinite}@media(max-width:767px){.loading-activity{width:18px;height:18px}}@-ms-keyframes pace-spinner{0%{-ms-transform:rotate(0deg);transform:rotate(0deg)}100%{-ms-transform:rotate(360deg);transform:rotate(360deg)}}@keyframes pace-spinner{0%{transform:rotate(0deg)}100%{transform:rotate(360deg)}}ul{margin:0;padding:0;-webkit-tap-highlight-color:rgba(0,0,0,0)}li{list-style:none}.time-input{display:block;width:100%;padding-left:10px}label{font-weight:normal}.container-div{padding:10px 35px;height:100%}.container-div .row{height:100%}.select-info,.select-table{width:100%;background:#fff;border-radius:6px;margin-top:10px;padding-top:5px;padding-bottom:13px;box-shadow:1px 1px 3px rgba(0,0,0,.2)}.select-info{position:relative}.select-info .col-sm-6 .control-label{color:#333}@media(max-width :768px){.select-info{display:none}}.select-list li{float:left;color:#333;margin:5px 15px 5px 0}.select-list li input{border:1px solid #ddd;border-radius:4px;background:transparent;outline:0;height:30px;width:280px;padding-left:5px}.select-list li .submit-btn{border:0;border-radius:4px;background:transparent;outline:0;width:40px;height:23px}.select-list li select{border:1px solid #ddd;border-radius:4px;background:transparent;outline:0;height:30px;width:280px}.select-list .select-time input{width:133px}.select-time label,.select-time span,.select-time input{float:left}.select-time label{margin-top:5px}.select-time span{display:block;margin:5px 5px}.search-btn{background-color:#1ab394;border-color:#1ab394;color:#FFF;margin-bottom:5px;display:inline-block;padding:6px 12px;margin-bottom:0;font-size:14px;font-weight:400;line-height:1.42857143;text-align:center;white-space:nowrap;border-radius:3px;vertical-align:middle;cursor:pointer}.table-striped{min-height:75%}.table-striped .bootstrap-table{border:0!important}.table-striped .table,.fixed-table-container,table,.table-striped .table,.table>thead>tr>th,.table>tbody>tr>th,.table>tfoot>tr>th,.table>thead>tr>td,.table>tbody>tr>td,.table>tfoot>tr>td{border-bottom:1px solid #e7eaec!important;background-color:transparent!important;border:0}.table-striped .table>thead>tr>th,.table-striped .table>tbody>tr>th{border-bottom:1px solid #ccc!important;border-top:0!important}.table-striped .table>thead:first-child>tr:first-child>th{color:#333}.table-bordered td,.table-bordered th{border:1px solid #ddd!important} \ No newline at end of file + .box{position:relative;border-radius:3px;background:#fff;border-top:3px solid #d2d6de;margin-bottom:20px;width:100%;box-shadow:0 1px 1px rgba(0,0,0,0.1)}.box-header:before,.box-body:before,.box-footer:before,.box-header:after,.box-body:after,.box-footer:after{content:" ";display:table}.box-header:after,.box-body:after,.box-footer:after{clear:both}.btn-box-tool{padding:5px;font-size:12px;background:transparent;color:#97a0b3}.open .btn-box-tool,.btn-box-tool:hover{color:#606c84}.box-main{margin:0;border:0;padding-top:2px;border-radius:0;box-shadow:none}.box-main>.box-header{border-bottom:1px solid #eee;padding:12px 10px 2px 15px}.box-header .box-title{display:inline-block;font-size:18px;margin:0;line-height:1}.box-main>.box-header .box-title{font-size:16px;margin-bottom:13px;float:left}.box-main>.box-header .box-title .fa{font-size:14px;padding-right:3px;margin-top:-2px}.box-main>.box-header .box-tools{position:relative;top:-5px;right:0}.box-main>.box-header .box-tools .btn{padding:3px 10px 5px 10px;font-size:14px;margin-bottom:2px}.box-main>.box-header .box-tools .btn-box-tool{padding:4px 2px}.box-main form>.box-footer,.nav-main form>.box-footer{background:#fafafa}.box-main form>.box-footer .row,.nav-main form>.box-footer .row{margin:5px 0 5px -25px}.select2-container--default .select2-selection--multiple .select2-selection__choice{background-color:#1ab394;border-color:#1ab394;padding:1px 10px;color:#fff}.select2-container--default .select2-selection--multiple .select2-selection__choice__remove{margin-right:5px;color:rgba(255,255,255,0.7)}.select2-container--default .select2-selection--multiple .select2-selection__choice__remove:hover{color:#fff}.select2-container .select2-selection--single .select2-selection__rendered{padding-right:10px}label.error{position:absolute;right:18px;top:7px;color:#ef392b;font-size:12px}.Validform_error,input.error,select.error{background-color:#fbe2e2;border-color:#c66161;color:#c00}.Validform_wrong,.Validform_right,.Validform_warning{display:inline-block;height:20px;font-size:12px;vertical-align:middle;padding-left:25px}.i-checks label.error,.check-box label.error,.radio-box label.error{right:auto;width:150px;left:210px;top:1px;max-width:none}.check-box,.radio-box{display:inline-block;box-sizing:border-box;cursor:pointer;position:relative;padding-left:25px;padding-right:15px;padding-top:8px}.icheckbox,.icheckbox-blue,.iradio,.iradio-blue,.iradio-purple{position:absolute;top:8px;left:0}.icheckbox-blue,.iradio-blue{display:block;margin:0;padding:0;width:18px;height:18px;background:url(/img/blue.png) no-repeat;border:0;cursor:pointer}.icheckbox-blue,.icheckbox-blue.static:hover{background-position:0 0}.icheckbox-blue.hover,.icheckbox-blue:hover{background-position:-20px 0}.icheckbox-blue.checked{background-position:-40px 0}.icheckbox-blue.disabled{background-position:-60px 0;cursor:default}.icheckbox-blue.checked.disabled{background-position:-80px 0}.iradio-blue,.iradio-blue.static:hover{background-position:-100px 0}.iradio-blue.hover,.iradio-blue:hover{background-position:-120px 0}.iradio-blue.checked{background-position:-140px 0}.iradio-blue.disabled{background-position:-160px 0;cursor:default}.iradio-blue.checked.disabled{background-position:-180px 0}.loaderbox{display:inline-block;min-width:125px;padding:10px;margin:0 auto;color:#000!important;font-size:13px;font-weight:400;text-align:center;vertical-align:middle;border:1px solid #ddd;background-color:#eee;-webkit-border-radius:2px;-moz-border-radius:2px;-ms-border-radius:2px;-o-border-radius:2px;border-radius:2px;-webkit-box-shadow:0 1px 8px rgba(0,0,0,0.1);-moz-box-shadow:0 1px 8px rgba(0,0,0,0.1);box-shadow:0 1px 8px rgba(0,0,0,0.1)}.loaderbox .loading-activity{float:left;width:18px;height:18px;border:solid 2px transparent;border-top-color:#000;border-left-color:#000;border-radius:10px;-webkit-animation:pace-spinner 400ms linear infinite;-moz-animation:pace-spinner 400ms linear infinite;-ms-animation:pace-spinner 400ms linear infinite;-o-animation:pace-spinner 400ms linear infinite;animation:pace-spinner 400ms linear infinite}@media(max-width:767px){.loading-activity{width:18px;height:18px}}@-ms-keyframes pace-spinner{0%{-ms-transform:rotate(0deg);transform:rotate(0deg)}100%{-ms-transform:rotate(360deg);transform:rotate(360deg)}}@keyframes pace-spinner{0%{transform:rotate(0deg)}100%{transform:rotate(360deg)}}ul{margin:0;padding:0;-webkit-tap-highlight-color:rgba(0,0,0,0)}li{list-style:none}.time-input{display:block;width:100%;padding-left:10px}label{font-weight:normal}.container-div{padding:10px 35px;height:100%}.container-div .row{height:100%}.select-info,.select-table{width:100%;background:#fff;border-radius:6px;margin-top:10px;padding-top:5px;padding-bottom:13px;box-shadow:1px 1px 3px rgba(0,0,0,.2)}.select-info{position:relative}.select-info .col-sm-6 .control-label{color:#333}@media(max-width :768px){.select-info{display:none}}.select-list li{float:left;color:#333;margin:5px 15px 5px 0}.select-list li input{border:1px solid #ddd;border-radius:4px;background:transparent;outline:0;height:30px;width:280px;padding-left:5px}.select-list li .submit-btn{border:0;border-radius:4px;background:transparent;outline:0;width:40px;height:23px}.select-list li select{border:1px solid #ddd;border-radius:4px;background:transparent;outline:0;height:30px;width:280px}.select-list .select-time input{width:133px}.select-time label,.select-time span,.select-time input{float:left}.select-time label{margin-top:5px}.select-time span{display:block;margin:5px 5px}.search-btn{background-color:#1ab394;border-color:#1ab394;color:#FFF;margin-bottom:5px;display:inline-block;padding:6px 12px;margin-bottom:0;font-size:14px;font-weight:400;line-height:1.42857143;text-align:center;white-space:nowrap;border-radius:3px;vertical-align:middle;cursor:pointer}.table-striped{min-height:75%}.table-striped .bootstrap-table{border:0!important}.table-striped .table,.fixed-table-container,table,.table-striped .table,.table>thead>tr>th,.table>tbody>tr>th,.table>tfoot>tr>th,.table>thead>tr>td,.table>tbody>tr>td,.table>tfoot>tr>td{border-bottom:1px solid #e7eaec!important;background-color:transparent!important;border:0}.table-striped .table>thead>tr>th,.table-striped .table>tbody>tr>th{border-bottom:1px solid #ccc!important;border-top:0!important}.table-striped .table>thead:first-child>tr:first-child>th{color:#333}.table-bordered td,.table-bordered th{border:1px solid #ddd!important} \ No newline at end of file diff --git a/src/main/resources/static/ruoyi/js/common.js b/src/main/resources/static/ruoyi/js/common.js index 79a14978..b7708cf7 100644 --- a/src/main/resources/static/ruoyi/js/common.js +++ b/src/main/resources/static/ruoyi/js/common.js @@ -3,8 +3,8 @@ * Copyright (c) 2018 ruoyi */ -$(function(){ - // 复选框事件绑定 +$(function() { + // select2复选框事件绑定 if ($.fn.select2 !== undefined) { $("select.form-control:not(.noselect2)").each(function () { $(this).select2().on("change", function () { @@ -12,18 +12,21 @@ $(function(){ }) }) } - if ($(".i-checks").length > 0) { - $(".i-checks").iCheck({ - checkboxClass: "icheckbox_square-green", - radioClass: "iradio_square-green", + // checkbox 事件绑定 + if ($(".check-box").length > 0) { + $(".check-box").iCheck({ + checkboxClass: 'icheckbox-blue', + radioClass: 'iradio-blue', }) } + // radio 事件绑定 if ($(".radio-box").length > 0) { $(".radio-box").iCheck({ - checkboxClass: "icheckbox_square-green", - radioClass: "iradio_square-green", + checkboxClass: 'icheckbox-blue', + radioClass: 'iradio-blue', }) } + // laydate 时间控件绑定 if ($(".select-time").length > 0) { layui.use('laydate', function() { var laydate = layui.laydate; @@ -31,6 +34,19 @@ $(function(){ laydate.render({ elem: '#endTime', theme: 'molv' }); }); } + // tree 关键字搜索绑定 + if ($("#keyword").length > 0) { + $("#keyword").bind("focus", function focusKey(e) { + if ($("#keyword").hasClass("empty")) { + $("#keyword").removeClass("empty"); + } + }).bind("blur", function blurKey(e) { + if ($("#keyword").val() === "") { + $("#keyword").addClass("empty"); + } + $.tree.searchNode(e); + }).bind("input propertychange", $.tree.searchNode); + } }); /** 创建选项卡 */ diff --git a/src/main/resources/static/ruoyi/js/ry-ui.js b/src/main/resources/static/ruoyi/js/ry-ui.js index b5cd78ae..faa96d4f 100644 --- a/src/main/resources/static/ruoyi/js/ry-ui.js +++ b/src/main/resources/static/ruoyi/js/ry-ui.js @@ -1,9 +1,11 @@ /** - * 通用方法封装处理 + * 通用js方法封装处理 * Copyright (c) 2018 ruoyi */ (function ($) { $.extend({ + _treeTable: {}, + _tree: {}, // 表格封装处理 table: { _option: {}, @@ -111,10 +113,10 @@ }); }, // 回显数据字典 - selectDictLabel: function(_datas, _value) { + selectDictLabel: function(datas, value) { var actions = []; - $.each(_datas, function(index, dict) { - if (dict.dictValue == _value) { + $.each(datas, function(index, dict) { + if (dict.dictValue == value) { actions.push("" + dict.dictLabel + ""); return false; } @@ -125,7 +127,6 @@ // 表格树封装处理 treeTable: { _option: {}, - _treeTable: {}, // 初始化表格 init: function(options) { $.table._option = options; @@ -141,7 +142,7 @@ expandAll : $.common.visible(options.expandAll), // 是否全部展开 columns: options.columns }); - $.treeTable._treeTable = treeTable; + $._treeTable = treeTable; }, // 条件查询 search: function(formId) { @@ -150,11 +151,11 @@ $.each($("#" + currentId).serializeArray(), function(i, field) { params[field.name] = field.value; }); - $.treeTable._treeTable.bootstrapTreeTable('refresh', params); + $._treeTable.bootstrapTreeTable('refresh', params); }, // 刷新 refresh: function() { - $.treeTable._treeTable.bootstrapTreeTable('refresh'); + $._treeTable.bootstrapTreeTable('refresh'); }, }, // 表单封装处理 @@ -285,7 +286,7 @@ title = false; }; if ($.common.isEmpty(url)) { - url = "404.html"; + url = "/404.html"; }; if ($.common.isEmpty(width)) { width = 800; @@ -306,6 +307,29 @@ shadeClose: true }); }, + // 弹出层指定参数选项 + openOptions: function (options) { + var _url = $.common.isEmpty(options.url) ? "/404.html" : options.url; + var _title = $.common.isEmpty(options.title) ? "系统窗口" : options.title; + var _width = $.common.isEmpty(options.width) ? "800" : options.width; + var _height = $.common.isEmpty(options.height) ? ($(window).height() - 50) : options.height; + layer.open({ + type: 2, + maxmin: true, + shade: 0.3, + title: _title, + fix: false, + area: [_width + 'px', _height + 'px'], + content: _url, + shadeClose: true, + btn: [' 确认', ' 关闭'], + yes: function (index, layero) { + options.callBack(index, layero) + }, cancel: function () { + return true; + } + }); + }, // 弹出层全屏 openFull: function (title, url, width, height) { //如果是移动端,就使用自适应大小弹窗 @@ -317,7 +341,7 @@ title = false; }; if ($.common.isEmpty(url)) { - url = "404.html"; + url = "/404.html"; }; if ($.common.isEmpty(width)) { width = 800; @@ -459,6 +483,170 @@ return false; } }, + // 树插件封装处理 + tree: { + _option: {}, + _lastValue: {}, + // 初始化树结构 + init: function(options) { + $.tree._option = options; + // 属性ID + var _id = $.common.isEmpty(options.id) ? "tree" : options.id; + // 展开等级节点 + var _expandLevel = $.common.isEmpty(options.expandLevel) ? 0 : options.expandLevel; + // 树结构初始化加载 + var setting = { + check: options.check, + view: { selectedMulti: false, nameIsHTML: true }, + data: { key: { title: "title" }, simpleData: { enable: true } }, + callback: { onClick: options.onClick } + }; + $.get(options.url, function(data) { + var treeName = $("#treeName").val(); + var treeId = $("#treeId").val(); + tree = $.fn.zTree.init($("#" + _id), setting, data); + $._tree = tree; + // 展开第一级节点 + var nodes = tree.getNodesByParam("level", 0); + for (var i = 0; i < nodes.length; i++) { + if(_expandLevel > 0) { + tree.expandNode(nodes[i], true, false, false); + } + $.tree.selectByIdName(treeId, treeName, nodes[i]); + } + // 展开第二级节点 + nodes = tree.getNodesByParam("level", 1); + for (var i = 0; i < nodes.length; i++) { + if(_expandLevel > 1) { + tree.expandNode(nodes[i], true, false, false); + } + $.tree.selectByIdName(treeId, treeName, nodes[i]); + } + // 展开第三级节点 + nodes = tree.getNodesByParam("level", 2); + for (var i = 0; i < nodes.length; i++) { + if(_expandLevel > 2) { + tree.expandNode(nodes[i], true, false, false); + } + $.tree.selectByIdName(treeId, treeName, nodes[i]); + } + }, null, null, "正在加载,请稍后..."); + }, + // 搜索节点 + searchNode: function() { + // 取得输入的关键字的值 + var value = $.common.trim($("#keyword").val()); + if ($.tree._lastValue === value) { + return; + } + // 保存最后一次搜索名称 + $.tree._lastValue = value; + var nodes = $._tree.getNodes(); + // 如果要查空字串,就退出不查了。 + if (value == "") { + $.tree.showAllNode(nodes); + return; + } + $.tree.hideAllNode(nodes); + // 根据搜索值模糊匹配 + $.tree.updateNodes($._tree.getNodesByParamFuzzy("name", value)); + }, + // 根据Id和Name选中指定节点 + selectByIdName: function(treeId, treeName, node) { + if ($.common.isNotEmpty(treeName) && $.common.isNotEmpty(treeId)) { + if (treeId == node.id && treeName == node.name) { + $._tree.selectNode(node, true); + } + } + }, + // 显示所有节点 + showAllNode: function(nodes) { + nodes = $._tree.transformToArray(nodes); + for (var i = nodes.length - 1; i >= 0; i--) { + if (nodes[i].getParentNode() != null) { + $._tree.expandNode(nodes[i], true, false, false, false); + } else { + $._tree.expandNode(nodes[i], true, true, false, false); + } + $._tree.showNode(nodes[i]); + $.tree.showAllNode(nodes[i].children); + } + }, + // 隐藏所有节点 + hideAllNode: function(nodes) { + var tree = $.fn.zTree.getZTreeObj("tree"); + var nodes = $._tree.transformToArray(nodes); + for (var i = nodes.length - 1; i >= 0; i--) { + $._tree.hideNode(nodes[i]); + } + }, + // 显示所有父节点 + showParent: function(treeNode) { + var parentNode; + while ((parentNode = treeNode.getParentNode()) != null) { + $._tree.showNode(parentNode); + $._tree.expandNode(parentNode, true, false, false); + treeNode = parentNode; + } + }, + // 显示所有孩子节点 + showChildren: function(treeNode) { + if (treeNode.isParent) { + for (var idx in treeNode.children) { + var node = treeNode.children[idx]; + $._tree.showNode(node); + $.tree.showChildren(node); + } + } + }, + // 更新节点状态 + updateNodes: function(nodeList) { + $._tree.showNodes(nodeList); + for (var i = 0, l = nodeList.length; i < l; i++) { + var treeNode = nodeList[i]; + $.tree.showChildren(treeNode); + $.tree.showParent(treeNode) + } + }, + // 获取当前被勾选集合 + getCheckedNodes: function(column) { + var _column = $.common.isEmpty(column) ? "id" : column; + var nodes = $._tree.getCheckedNodes(true); + return $.map(nodes, function (row) { + return row[_column]; + }).join(); + }, + // 不允许根父节点选择 + notAllowParents: function(_tree) { + var nodes = _tree.getSelectedNodes(); + for (var i = 0; i < nodes.length; i++) { + if (nodes[i].level == 0) { + $.modal.msgError("不能选择根节点(" + nodes[i].name + ")"); + return false; + } + if (nodes[i].isParent) { + $.modal.msgError("不能选择父节点(" + nodes[i].name + ")"); + return false; + } + } + return true; + }, + // 隐藏/显示搜索栏 + toggleSearch: function() { + $('#search').slideToggle(200); + $('#btnShow').toggle(); + $('#btnHide').toggle(); + $('#keyword').focus(); + }, + // 折叠 + collapse: function() { + $._tree.expandAll(false); + }, + // 展开 + expand: function() { + $._tree.expandAll(true); + } + }, // 通用方法封装处理 common: { // 判断字符串是否为空 @@ -468,6 +656,10 @@ } return false; }, + // 判断一个字符串是否为非空串 + isNotEmpty: function (value) { + return !$.common.isEmpty(value); + }, // 是否显示数据 为空默认为显示 visible: function (value) { if ($.common.isEmpty(value) || value == true) { diff --git a/src/main/resources/static/ruoyi/js/ry-ui.min.js b/src/main/resources/static/ruoyi/js/ry-ui.min.js index 2a264c80..7dde973a 100644 --- a/src/main/resources/static/ruoyi/js/ry-ui.min.js +++ b/src/main/resources/static/ruoyi/js/ry-ui.min.js @@ -1,5 +1,5 @@ -/*! - * ruoyi.js - * Author: Ruoyi +/** + * 通用js方法封装处理 + * Copyright (c) 2018 ruoyi */ -(function($){$.extend({table:{_option:{},_params:{},init:function(options){$.table._option=options;$.table._params=$.common.isEmpty(options.queryParams)?$.table.queryParams:options.queryParams;_sortOrder=$.common.isEmpty(options.sortOrder)?"asc":options.sortOrder;_sortName=$.common.isEmpty(options.sortName)?"":options.sortName;$("#bootstrap-table").bootstrapTable({url:options.url,contentType:"application/x-www-form-urlencoded",method:"post",cache:false,sortable:true,sortStable:true,sortName:_sortName,sortOrder:_sortOrder,pagination:$.common.visible(options.pagination),pageNumber:1,pageSize:10,pageList:[10,25,50],iconSize:"outline",toolbar:"#toolbar",sidePagination:"server",search:$.common.visible(options.search),showRefresh:$.common.visible(options.showRefresh),showColumns:$.common.visible(options.showColumns),showToggle:$.common.visible(options.showToggle),showExport:$.common.visible(options.showExport),queryParams:$.table._params,columns:options.columns,responseHandler:$.table.responseHandler})},queryParams:function(params){return{pageSize:params.limit,pageNum:params.offset/params.limit+1,searchValue:params.search,orderByColumn:params.sort,isAsc:params.order}},responseHandler:function(res){if(res.code==0){return{rows:res.rows,total:res.total}}else{$.modal.alertWarning(res.msg);return{rows:[],total:0}}},search:function(formId){var currentId=$.common.isEmpty(formId)?$("form").attr("id"):formId;var params=$("#bootstrap-table").bootstrapTable("getOptions");params.queryParams=function(params){var search={};$.each($("#"+currentId).serializeArray(),function(i,field){search[field.name]=field.value});search.pageSize=params.limit;search.pageNum=params.offset/params.limit+1;search.searchValue=params.search;search.orderByColumn=params.sort;search.isAsc=params.order;return search};$("#bootstrap-table").bootstrapTable("refresh",params)},exportExcel:function(formId){var currentId=$.common.isEmpty(formId)?$("form").attr("id"):formId;$.modal.loading("正在导出数据,请稍后...");$.post($.table._option.exportUrl,$("#"+currentId).serializeArray(),function(result){if(result.code==web_status.SUCCESS){window.location.href=ctx+"common/download?fileName="+result.msg+"&delete="+true}else{$.modal.alertError(result.msg)}$.modal.closeLoading()})},refresh:function(){$("#bootstrap-table").bootstrapTable("refresh",{url:$.table._option.url,silent:true})},selectColumns:function(column){return $.map($("#bootstrap-table").bootstrapTable("getSelections"),function(row){return row[column]})},selectFirstColumns:function(){return $.map($("#bootstrap-table").bootstrapTable("getSelections"),function(row){return row[$.table._option.columns[1].field]})},selectDictLabel:function(_datas,_value){var actions=[];$.each(_datas,function(index,dict){if(dict.dictValue==_value){actions.push(""+dict.dictLabel+"");return false}});return actions.join("")}},treeTable:{_option:{},_treeTable:{},init:function(options){$.table._option=options;var treeTable=$("#bootstrap-table").bootstrapTreeTable({code:options.id,parentCode:options.parentId,type:"get",url:options.url,ajaxParams:{},expandColumn:"0",striped:false,bordered:true,expandAll:$.common.visible(options.expandAll),columns:options.columns});$.treeTable._treeTable=treeTable},search:function(formId){var currentId=$.common.isEmpty(formId)?$("form").attr("id"):formId;var params={};$.each($("#"+currentId).serializeArray(),function(i,field){params[field.name]=field.value});$.treeTable._treeTable.bootstrapTreeTable("refresh",params)},refresh:function(){$.treeTable._treeTable.bootstrapTreeTable("refresh")},},form:{reset:function(formId){var currentId=$.common.isEmpty(formId)?$("form").attr("id"):formId;$("#"+currentId)[0].reset()},selectCheckeds:function(name){var checkeds="";$('input:checkbox[name="'+name+'"]:checked').each(function(i){if(0==i){checkeds=$(this).val()}else{checkeds+=(","+$(this).val())}});return checkeds},selectSelects:function(name){var selects="";$("#"+name+" option:selected").each(function(i){if(0==i){selects=$(this).val()}else{selects+=(","+$(this).val())}});return selects}},modal:{icon:function(type){var icon="";if(type==modal_status.WARNING){icon=0}else{if(type==modal_status.SUCCESS){icon=1}else{if(type==modal_status.FAIL){icon=2}else{icon=3}}}return icon},msg:function(content,type){if(type!=undefined){layer.msg(content,{icon:$.modal.icon(type),time:1000,shift:5})}else{layer.msg(content)}},msgError:function(content){$.modal.msg(content,modal_status.FAIL)},msgSuccess:function(content){$.modal.msg(content,modal_status.SUCCESS)},msgWarning:function(content){$.modal.msg(content,modal_status.WARNING)},alert:function(content,type){layer.alert(content,{icon:$.modal.icon(type),title:"系统提示",btn:["确认"],btnclass:["btn btn-primary"],})},msgReload:function(msg,type){layer.msg(msg,{icon:$.modal.icon(type),time:500,shade:[0.1,"#8F8F8F"]},function(){$.modal.reload()})},alertError:function(content){$.modal.alert(content,modal_status.FAIL)},alertSuccess:function(content){$.modal.alert(content,modal_status.SUCCESS)},alertWarning:function(content){$.modal.alert(content,modal_status.WARNING)},close:function(){var index=parent.layer.getFrameIndex(window.name);parent.layer.close(index)},confirm:function(content,callBack){layer.confirm(content,{icon:3,title:"系统提示",btn:["确认","取消"],btnclass:["btn btn-primary","btn btn-danger"],},function(index){layer.close(index);callBack(true)})},open:function(title,url,width,height){if(navigator.userAgent.match(/(iPhone|iPod|Android|ios)/i)){width="auto";height="auto"}if($.common.isEmpty(title)){title=false}if($.common.isEmpty(url)){url="404.html"}if($.common.isEmpty(width)){width=800}if($.common.isEmpty(height)){height=($(window).height()-50)}layer.open({type:2,area:[width+"px",height+"px"],fix:false,maxmin:true,shade:0.3,title:title,content:url,shadeClose:true})},openFull:function(title,url,width,height){if(navigator.userAgent.match(/(iPhone|iPod|Android|ios)/i)){width="auto";height="auto"}if($.common.isEmpty(title)){title=false}if($.common.isEmpty(url)){url="404.html"}if($.common.isEmpty(width)){width=800}if($.common.isEmpty(height)){height=($(window).height()-50)}var index=layer.open({type:2,area:[width+"px",height+"px"],fix:false,maxmin:true,shade:0.3,title:title,content:url,shadeClose:true});layer.full(index)},loading:function(message){$.blockUI({message:'
      '+message+"
      "})},closeLoading:function(){setTimeout(function(){$.unblockUI()},50)},reload:function(){parent.location.reload()}},operate:{submit:function(url,type,dataType,data){$.modal.loading("正在处理中,请稍后...");var config={url:url,type:type,dataType:dataType,data:data,success:function(result){$.operate.ajaxSuccess(result)}};$.ajax(config)},post:function(url,data){$.operate.submit(url,"post","json",data)},remove:function(id){$.modal.confirm("确定删除该条"+$.table._option.modalName+"信息吗?",function(){var url=$.common.isEmpty(id)?$.table._option.removeUrl:$.table._option.removeUrl.replace("{id}",id);var data={"ids":id};$.operate.submit(url,"post","json",data)})},removeAll:function(){var rows=$.common.isEmpty($.table._option.id)?$.table.selectFirstColumns():$.table.selectColumns($.table._option.id);if(rows.length==0){$.modal.alertWarning("请至少选择一条记录");return}$.modal.confirm("确认要删除选中的"+rows.length+"条数据吗?",function(){var url=$.table._option.removeUrl;var data={"ids":rows.join()};$.operate.submit(url,"post","json",data)})},add:function(id){var url=$.common.isEmpty(id)?$.table._option.createUrl:$.table._option.createUrl.replace("{id}",id);$.modal.open("添加"+$.table._option.modalName,url)},edit:function(id){var url=$.table._option.updateUrl.replace("{id}",id);$.modal.open("修改"+$.table._option.modalName,url)},addFull:function(id){var url=$.common.isEmpty(id)?$.table._option.createUrl:$.table._option.createUrl.replace("{id}",id);$.modal.openFull("添加"+$.table._option.modalName,url)},editFull:function(id){var url=$.table._option.updateUrl.replace("{id}",id);$.modal.openFull("修改"+$.table._option.modalName,url)},save:function(url,data){$.modal.loading("正在处理中,请稍后...");var config={url:url,type:"post",dataType:"json",data:data,success:function(result){$.operate.saveSuccess(result)}};$.ajax(config)},ajaxSuccess:function(result){if(result.code==web_status.SUCCESS){$.modal.msgSuccess(result.msg);$.table.refresh()}else{$.modal.alertError(result.msg)}$.modal.closeLoading()},saveSuccess:function(result){if(result.code==web_status.SUCCESS){$.modal.msgReload("保存成功,正在刷新数据请稍后……",modal_status.SUCCESS)}else{$.modal.alertError(result.msg)}$.modal.closeLoading()}},validate:{unique:function(value){if(value=="0"){return true}return false}},common:{isEmpty:function(value){if(value==null||this.trim(value)==""){return true}return false},visible:function(value){if($.common.isEmpty(value)||value==true){return true}return false},trim:function(value){if(value==null){return""}return value.toString().replace(/(^\s*)|(\s*$)|\r|\n/g,"")},random:function(min,max){return Math.floor((Math.random()*max)+min)}}})})(jQuery);web_status={SUCCESS:0,FAIL:500};modal_status={SUCCESS:"success",FAIL:"error",WARNING:"warning"}; \ No newline at end of file +(function($){$.extend({_treeTable:{},_tree:{},table:{_option:{},_params:{},init:function(options){$.table._option=options;$.table._params=$.common.isEmpty(options.queryParams)?$.table.queryParams:options.queryParams;_sortOrder=$.common.isEmpty(options.sortOrder)?"asc":options.sortOrder;_sortName=$.common.isEmpty(options.sortName)?"":options.sortName;$("#bootstrap-table").bootstrapTable({url:options.url,contentType:"application/x-www-form-urlencoded",method:"post",cache:false,sortable:true,sortStable:true,sortName:_sortName,sortOrder:_sortOrder,pagination:$.common.visible(options.pagination),pageNumber:1,pageSize:10,pageList:[10,25,50],iconSize:"outline",toolbar:"#toolbar",sidePagination:"server",search:$.common.visible(options.search),showRefresh:$.common.visible(options.showRefresh),showColumns:$.common.visible(options.showColumns),showToggle:$.common.visible(options.showToggle),showExport:$.common.visible(options.showExport),queryParams:$.table._params,columns:options.columns,responseHandler:$.table.responseHandler})},queryParams:function(params){return{pageSize:params.limit,pageNum:params.offset/params.limit+1,searchValue:params.search,orderByColumn:params.sort,isAsc:params.order}},responseHandler:function(res){if(res.code==0){return{rows:res.rows,total:res.total}}else{$.modal.alertWarning(res.msg);return{rows:[],total:0}}},search:function(formId){var currentId=$.common.isEmpty(formId)?$("form").attr("id"):formId;var params=$("#bootstrap-table").bootstrapTable("getOptions");params.queryParams=function(params){var search={};$.each($("#"+currentId).serializeArray(),function(i,field){search[field.name]=field.value});search.pageSize=params.limit;search.pageNum=params.offset/params.limit+1;search.searchValue=params.search;search.orderByColumn=params.sort;search.isAsc=params.order;return search};$("#bootstrap-table").bootstrapTable("refresh",params)},exportExcel:function(formId){var currentId=$.common.isEmpty(formId)?$("form").attr("id"):formId;$.modal.loading("正在导出数据,请稍后...");$.post($.table._option.exportUrl,$("#"+currentId).serializeArray(),function(result){if(result.code==web_status.SUCCESS){window.location.href=ctx+"common/download?fileName="+result.msg+"&delete="+true}else{$.modal.alertError(result.msg)}$.modal.closeLoading()})},refresh:function(){$("#bootstrap-table").bootstrapTable("refresh",{url:$.table._option.url,silent:true})},selectColumns:function(column){return $.map($("#bootstrap-table").bootstrapTable("getSelections"),function(row){return row[column]})},selectFirstColumns:function(){return $.map($("#bootstrap-table").bootstrapTable("getSelections"),function(row){return row[$.table._option.columns[1].field]})},selectDictLabel:function(datas,value){var actions=[];$.each(datas,function(index,dict){if(dict.dictValue==value){actions.push(""+dict.dictLabel+"");return false}});return actions.join("")}},treeTable:{_option:{},init:function(options){$.table._option=options;var treeTable=$("#bootstrap-table").bootstrapTreeTable({code:options.id,parentCode:options.parentId,type:"get",url:options.url,ajaxParams:{},expandColumn:"0",striped:false,bordered:true,expandAll:$.common.visible(options.expandAll),columns:options.columns});$._treeTable=treeTable},search:function(formId){var currentId=$.common.isEmpty(formId)?$("form").attr("id"):formId;var params={};$.each($("#"+currentId).serializeArray(),function(i,field){params[field.name]=field.value});$._treeTable.bootstrapTreeTable("refresh",params)},refresh:function(){$._treeTable.bootstrapTreeTable("refresh")},},form:{reset:function(formId){var currentId=$.common.isEmpty(formId)?$("form").attr("id"):formId;$("#"+currentId)[0].reset()},selectCheckeds:function(name){var checkeds="";$('input:checkbox[name="'+name+'"]:checked').each(function(i){if(0==i){checkeds=$(this).val()}else{checkeds+=(","+$(this).val())}});return checkeds},selectSelects:function(name){var selects="";$("#"+name+" option:selected").each(function(i){if(0==i){selects=$(this).val()}else{selects+=(","+$(this).val())}});return selects}},modal:{icon:function(type){var icon="";if(type==modal_status.WARNING){icon=0}else{if(type==modal_status.SUCCESS){icon=1}else{if(type==modal_status.FAIL){icon=2}else{icon=3}}}return icon},msg:function(content,type){if(type!=undefined){layer.msg(content,{icon:$.modal.icon(type),time:1000,shift:5})}else{layer.msg(content)}},msgError:function(content){$.modal.msg(content,modal_status.FAIL)},msgSuccess:function(content){$.modal.msg(content,modal_status.SUCCESS)},msgWarning:function(content){$.modal.msg(content,modal_status.WARNING)},alert:function(content,type){layer.alert(content,{icon:$.modal.icon(type),title:"系统提示",btn:["确认"],btnclass:["btn btn-primary"],})},msgReload:function(msg,type){layer.msg(msg,{icon:$.modal.icon(type),time:500,shade:[0.1,"#8F8F8F"]},function(){$.modal.reload()})},alertError:function(content){$.modal.alert(content,modal_status.FAIL)},alertSuccess:function(content){$.modal.alert(content,modal_status.SUCCESS)},alertWarning:function(content){$.modal.alert(content,modal_status.WARNING)},close:function(){var index=parent.layer.getFrameIndex(window.name);parent.layer.close(index)},confirm:function(content,callBack){layer.confirm(content,{icon:3,title:"系统提示",btn:["确认","取消"],btnclass:["btn btn-primary","btn btn-danger"],},function(index){layer.close(index);callBack(true)})},open:function(title,url,width,height){if(navigator.userAgent.match(/(iPhone|iPod|Android|ios)/i)){width="auto";height="auto"}if($.common.isEmpty(title)){title=false}if($.common.isEmpty(url)){url="/404.html"}if($.common.isEmpty(width)){width=800}if($.common.isEmpty(height)){height=($(window).height()-50)}layer.open({type:2,area:[width+"px",height+"px"],fix:false,maxmin:true,shade:0.3,title:title,content:url,shadeClose:true})},openOptions:function(options){var _url=$.common.isEmpty(options.url)?"/404.html":options.url;var _title=$.common.isEmpty(options.title)?"系统窗口":options.title;var _width=$.common.isEmpty(options.width)?"800":options.width;var _height=$.common.isEmpty(options.height)?($(window).height()-50):options.height;layer.open({type:2,maxmin:true,shade:0.3,title:_title,fix:false,area:[_width+"px",_height+"px"],content:_url,shadeClose:true,btn:[' 确认',' 关闭'],yes:function(index,layero){options.callBack(index,layero)},cancel:function(){return true}})},openFull:function(title,url,width,height){if(navigator.userAgent.match(/(iPhone|iPod|Android|ios)/i)){width="auto";height="auto"}if($.common.isEmpty(title)){title=false}if($.common.isEmpty(url)){url="/404.html"}if($.common.isEmpty(width)){width=800}if($.common.isEmpty(height)){height=($(window).height()-50)}var index=layer.open({type:2,area:[width+"px",height+"px"],fix:false,maxmin:true,shade:0.3,title:title,content:url,shadeClose:true});layer.full(index)},loading:function(message){$.blockUI({message:'
      '+message+"
      "})},closeLoading:function(){setTimeout(function(){$.unblockUI()},50)},reload:function(){parent.location.reload()}},operate:{submit:function(url,type,dataType,data){$.modal.loading("正在处理中,请稍后...");var config={url:url,type:type,dataType:dataType,data:data,success:function(result){$.operate.ajaxSuccess(result)}};$.ajax(config)},post:function(url,data){$.operate.submit(url,"post","json",data)},remove:function(id){$.modal.confirm("确定删除该条"+$.table._option.modalName+"信息吗?",function(){var url=$.common.isEmpty(id)?$.table._option.removeUrl:$.table._option.removeUrl.replace("{id}",id);var data={"ids":id};$.operate.submit(url,"post","json",data)})},removeAll:function(){var rows=$.common.isEmpty($.table._option.id)?$.table.selectFirstColumns():$.table.selectColumns($.table._option.id);if(rows.length==0){$.modal.alertWarning("请至少选择一条记录");return}$.modal.confirm("确认要删除选中的"+rows.length+"条数据吗?",function(){var url=$.table._option.removeUrl;var data={"ids":rows.join()};$.operate.submit(url,"post","json",data)})},add:function(id){var url=$.common.isEmpty(id)?$.table._option.createUrl:$.table._option.createUrl.replace("{id}",id);$.modal.open("添加"+$.table._option.modalName,url)},edit:function(id){var url=$.table._option.updateUrl.replace("{id}",id);$.modal.open("修改"+$.table._option.modalName,url)},addFull:function(id){var url=$.common.isEmpty(id)?$.table._option.createUrl:$.table._option.createUrl.replace("{id}",id);$.modal.openFull("添加"+$.table._option.modalName,url)},editFull:function(id){var url=$.table._option.updateUrl.replace("{id}",id);$.modal.openFull("修改"+$.table._option.modalName,url)},save:function(url,data){$.modal.loading("正在处理中,请稍后...");var config={url:url,type:"post",dataType:"json",data:data,success:function(result){$.operate.saveSuccess(result)}};$.ajax(config)},ajaxSuccess:function(result){if(result.code==web_status.SUCCESS){$.modal.msgSuccess(result.msg);$.table.refresh()}else{$.modal.alertError(result.msg)}$.modal.closeLoading()},saveSuccess:function(result){if(result.code==web_status.SUCCESS){$.modal.msgReload("保存成功,正在刷新数据请稍后……",modal_status.SUCCESS)}else{$.modal.alertError(result.msg)}$.modal.closeLoading()}},validate:{unique:function(value){if(value=="0"){return true}return false}},tree:{_option:{},_lastValue:{},init:function(options){$.tree._option=options;var _id=$.common.isEmpty(options.id)?"tree":options.id;var _expandLevel=$.common.isEmpty(options.expandLevel)?0:options.expandLevel;var setting={check:options.check,view:{selectedMulti:false,nameIsHTML:true},data:{key:{title:"title"},simpleData:{enable:true}},callback:{onClick:options.onClick}};$.get(options.url,function(data){var treeName=$("#treeName").val();var treeId=$("#treeId").val();tree=$.fn.zTree.init($("#"+_id),setting,data);$._tree=tree;var nodes=tree.getNodesByParam("level",0);for(var i=0;i0){tree.expandNode(nodes[i],true,false,false)}$.tree.selectByIdName(treeId,treeName,nodes[i])}nodes=tree.getNodesByParam("level",1);for(var i=0;i1){tree.expandNode(nodes[i],true,false,false)}$.tree.selectByIdName(treeId,treeName,nodes[i])}nodes=tree.getNodesByParam("level",2);for(var i=0;i2){tree.expandNode(nodes[i],true,false,false)}$.tree.selectByIdName(treeId,treeName,nodes[i])}},null,null,"正在加载,请稍后...")},searchNode:function(){var value=$.common.trim($("#keyword").val());if($.tree._lastValue===value){return}$.tree._lastValue=value;var nodes=$._tree.getNodes();if(value==""){$.tree.showAllNode(nodes);return}$.tree.hideAllNode(nodes);$.tree.updateNodes($._tree.getNodesByParamFuzzy("name",value))},selectByIdName:function(treeId,treeName,node){if($.common.isNotEmpty(treeName)&&$.common.isNotEmpty(treeId)){if(treeId==node.id&&treeName==node.name){$._tree.selectNode(node,true)}}},showAllNode:function(nodes){nodes=$._tree.transformToArray(nodes);for(var i=nodes.length-1;i>=0;i--){if(nodes[i].getParentNode()!=null){$._tree.expandNode(nodes[i],true,false,false,false)}else{$._tree.expandNode(nodes[i],true,true,false,false)}$._tree.showNode(nodes[i]);$.tree.showAllNode(nodes[i].children)}},hideAllNode:function(nodes){var tree=$.fn.zTree.getZTreeObj("tree");var nodes=$._tree.transformToArray(nodes);for(var i=nodes.length-1;i>=0;i--){$._tree.hideNode(nodes[i])}},showParent:function(treeNode){var parentNode;while((parentNode=treeNode.getParentNode())!=null){$._tree.showNode(parentNode);$._tree.expandNode(parentNode,true,false,false);treeNode=parentNode}},showChildren:function(treeNode){if(treeNode.isParent){for(var idx in treeNode.children){var node=treeNode.children[idx];$._tree.showNode(node);$.tree.showChildren(node)}}},updateNodes:function(nodeList){$._tree.showNodes(nodeList);for(var i=0,l=nodeList.length;i - + -
      @@ -39,8 +38,8 @@ - - + +
      diff --git a/src/main/resources/templates/index.html b/src/main/resources/templates/index.html index c6c3d726..86689c18 100644 --- a/src/main/resources/templates/index.html +++ b/src/main/resources/templates/index.html @@ -12,10 +12,10 @@ - + - + @@ -136,7 +136,7 @@ - + diff --git a/src/main/resources/templates/login.html b/src/main/resources/templates/login.html index 165843a9..e04625f2 100644 --- a/src/main/resources/templates/login.html +++ b/src/main/resources/templates/login.html @@ -8,11 +8,11 @@ - + - + @@ -82,7 +82,7 @@ - + diff --git a/src/main/resources/templates/main.html b/src/main/resources/templates/main.html index fbe1f4c5..b0b77d0c 100644 --- a/src/main/resources/templates/main.html +++ b/src/main/resources/templates/main.html @@ -7,7 +7,7 @@ 若依介绍 - + @@ -94,13 +94,44 @@
      -
      +
      +
      + v2.4.02018.09.03 +
      +
      +
      +
      +
        +
      1. 支持部门多级查询
      2. +
      3. 修复菜单状态查询无效
      4. +
      5. 支持IP地址开关
      6. +
      7. 支持XSS开关
      8. +
      9. 记录日志异步处理
      10. +
      11. 字典回显样式更改为下拉框
      12. +
      13. 菜单类型必填校验
      14. +
      15. 修复在线用户排序报错
      16. +
      17. 增加重置按钮
      18. +
      19. 支持注解导入数据
      20. +
      21. 支持弹层外区域关闭
      22. +
      23. 备注更换为文本区域
      24. +
      25. 新增角色逻辑删除
      26. +
      27. 新增部门逻辑删除
      28. +
      29. 支持部门数据权限
      30. +
      31. 管理员默认拥有所有授权
      32. +
      33. 字典数据采用分页
      34. +
      35. 部分细节调整优化
      36. +
      +
      +
      +
      +
      +
      v2.3.02018.08.06
      -
      +
      1. 支持表格不分页开关控制
      2. @@ -125,7 +156,7 @@
      -
      +
      v2.2.02018.07.23
      @@ -149,7 +180,7 @@
      -
      +
      v2.1.02018.07.10
      @@ -174,7 +205,7 @@
      -
      +
      v2.0.02018.07.02
      @@ -197,7 +228,7 @@
      -
      +
      v1.1.62018.06.04
      @@ -219,7 +250,7 @@
      -
      +
      v1.1.52018.05.28
      @@ -241,7 +272,7 @@
      -
      +
      v1.1.42018.05.20
      @@ -263,7 +294,7 @@
      -
      +
      v1.1.32018.05.14
      @@ -284,7 +315,7 @@
      -
      +
      v1.1.22018.05.07
      @@ -306,7 +337,7 @@
      -
      +
      v1.1.12018.04.23
      @@ -325,7 +356,7 @@
      -
      +
      v1.1.02018.04.20
      @@ -345,7 +376,7 @@
      -
      +
      v1.0.92018.04.14
      @@ -360,7 +391,7 @@
      -
      +
      v1.0.82018.04.08
      @@ -375,7 +406,7 @@
      -
      +
      v1.0.72018.04.04
      @@ -390,7 +421,7 @@
      -
      +
      v1.0.62018.03.15
      @@ -406,7 +437,7 @@
      -
      +
      v1.0.52018.03.12
      @@ -421,7 +452,7 @@
      -
      +
      v1.0.42018.03.11
      @@ -435,7 +466,7 @@
      -
      +
      v1.0.32018.03.08
      @@ -449,7 +480,7 @@
      -
      +
      v1.0.22018.03.04
      diff --git a/src/main/resources/templates/monitor/job/add.html b/src/main/resources/templates/monitor/job/add.html index 361bff77..beacb3c0 100644 --- a/src/main/resources/templates/monitor/job/add.html +++ b/src/main/resources/templates/monitor/job/add.html @@ -2,7 +2,6 @@ -
      @@ -39,9 +38,9 @@
      - - - + + +
      @@ -68,7 +67,6 @@
      - diff --git a/src/main/resources/templates/system/dept/edit.html b/src/main/resources/templates/system/dept/edit.html index 9c235156..50d99f40 100644 --- a/src/main/resources/templates/system/dept/edit.html +++ b/src/main/resources/templates/system/dept/edit.html @@ -16,7 +16,7 @@
      - +
      @@ -74,7 +74,10 @@ dataType: "json", data: { "deptId": function() { - return $.common.trim($("#deptId").val()); + return $("#deptId").val(); + }, + "parentId": function() { + return $("input[name='parentId']").val(); }, "deptName": function() { return $.common.trim($("#deptName").val()); @@ -108,9 +111,21 @@ /*部门管理-修改-选择部门树*/ function selectDeptTree() { - var deptId = $("#treeId").val(); - var url = prefix + "/selectDeptTree/" + deptId; - $.modal.open("选择部门", url, '380', '380'); + var options = { + title: '部门选择', + width: "380", + height: "380", + url: prefix + "/selectDeptTree/" + $("#treeId").val(), + callBack: doSubmit + }; + $.modal.openOptions(options); + } + + function doSubmit(index, layero){ + var body = layer.getChildFrame('body', index); + $("#treeId").val(body.find('#treeId').val()); + $("#treeName").val(body.find('#treeName').val()); + layer.close(index); } diff --git a/src/main/resources/templates/system/dept/tree.html b/src/main/resources/templates/system/dept/tree.html index 86067dd4..679b5e77 100644 --- a/src/main/resources/templates/system/dept/tree.html +++ b/src/main/resources/templates/system/dept/tree.html @@ -10,173 +10,38 @@ button{font-family: "SimSun","Helvetica Neue",Helvetica,Arial;} -
      +
      - 展开 / - 折叠 + 展开 / + 折叠
      -
      diff --git a/src/main/resources/templates/system/dict/data/data.html b/src/main/resources/templates/system/dict/data/data.html index 3cc08228..fbff8af8 100644 --- a/src/main/resources/templates/system/dict/data/data.html +++ b/src/main/resources/templates/system/dict/data/data.html @@ -121,7 +121,12 @@ function queryParams(params) { return { - dictType: $("#dictType").val() + dictType: $("#dictType").val(), + pageSize: params.limit, + pageNum: params.offset / params.limit + 1, + searchValue: params.search, + orderByColumn: params.sort, + isAsc: params.order }; } diff --git a/src/main/resources/templates/system/menu/add.html b/src/main/resources/templates/system/menu/add.html index d4ce7101..ce734c00 100644 --- a/src/main/resources/templates/system/menu/add.html +++ b/src/main/resources/templates/system/menu/add.html @@ -2,7 +2,6 @@ -
      @@ -16,9 +15,9 @@
      - - - + + +
      @@ -74,7 +73,6 @@
      - diff --git a/src/main/resources/templates/system/menu/edit.html b/src/main/resources/templates/system/menu/edit.html index 3f641eb0..45f349a2 100644 --- a/src/main/resources/templates/system/menu/edit.html +++ b/src/main/resources/templates/system/menu/edit.html @@ -2,7 +2,6 @@ -
      @@ -17,9 +16,9 @@
      - - - + + +
      @@ -75,11 +74,10 @@
      - diff --git a/src/main/resources/templates/system/menu/menu.html b/src/main/resources/templates/system/menu/menu.html index 64f090de..206153f9 100644 --- a/src/main/resources/templates/system/menu/menu.html +++ b/src/main/resources/templates/system/menu/menu.html @@ -62,7 +62,7 @@ field: 'menuName', width: '20%', formatter: function(value, row, index) { - if (row.icon == null || row == "") { + if ($.common.isEmpty(row.icon)) { return row.menuName; } else { return ' ' + row.menuName + ''; diff --git a/src/main/resources/templates/system/menu/tree.html b/src/main/resources/templates/system/menu/tree.html index 8d4871f8..06a7af7c 100644 --- a/src/main/resources/templates/system/menu/tree.html +++ b/src/main/resources/templates/system/menu/tree.html @@ -10,161 +10,38 @@ button{font-family: "SimSun","Helvetica Neue",Helvetica,Arial;} -
      +
      - 展开 / - 折叠 + 展开 / + 折叠
      -
      diff --git a/src/main/resources/templates/system/role/add.html b/src/main/resources/templates/system/role/add.html index c64af035..65c418a8 100644 --- a/src/main/resources/templates/system/role/add.html +++ b/src/main/resources/templates/system/role/add.html @@ -2,7 +2,7 @@ - +
      @@ -59,24 +59,17 @@
      \ No newline at end of file diff --git a/src/main/resources/templates/system/role/rule.html b/src/main/resources/templates/system/role/rule.html new file mode 100644 index 00000000..d50616c6 --- /dev/null +++ b/src/main/resources/templates/system/role/rule.html @@ -0,0 +1,110 @@ + + + + + + +
      + + +
      + +
      + +
      +
      +
      + +
      + +
      +
      +
      + +
      + + 特殊情况下,设置为“自定数据权限” +
      +
      + +
      +
      + + +
      +
      + +
      +
      + + + + diff --git a/src/main/resources/templates/system/user/add.html b/src/main/resources/templates/system/user/add.html index 472237e9..74df6719 100644 --- a/src/main/resources/templates/system/user/add.html +++ b/src/main/resources/templates/system/user/add.html @@ -2,7 +2,6 @@ -
      @@ -75,7 +74,7 @@
      -
      @@ -90,7 +89,6 @@
      - diff --git a/src/main/resources/templates/system/user/edit.html b/src/main/resources/templates/system/user/edit.html index fdd76a90..8ddda359 100644 --- a/src/main/resources/templates/system/user/edit.html +++ b/src/main/resources/templates/system/user/edit.html @@ -2,7 +2,6 @@ -
      @@ -70,7 +69,7 @@
      -
      @@ -85,7 +84,6 @@
      - diff --git a/src/main/resources/templates/system/user/profile/avatar.html b/src/main/resources/templates/system/user/profile/avatar.html index 0e623bb1..ecb122a0 100644 --- a/src/main/resources/templates/system/user/profile/avatar.html +++ b/src/main/resources/templates/system/user/profile/avatar.html @@ -2,7 +2,7 @@ 用户头像修改 - +
      diff --git a/src/main/resources/templates/system/user/profile/profile.html b/src/main/resources/templates/system/user/profile/profile.html index bb3486b6..1bbcf1fb 100644 --- a/src/main/resources/templates/system/user/profile/profile.html +++ b/src/main/resources/templates/system/user/profile/profile.html @@ -6,10 +6,10 @@ 个人信息 - - - - + + + + diff --git a/src/main/resources/templates/system/user/user.html b/src/main/resources/templates/system/user/user.html index d3ec76cd..23b793e9 100644 --- a/src/main/resources/templates/system/user/user.html +++ b/src/main/resources/templates/system/user/user.html @@ -3,8 +3,8 @@ xmlns:shiro="http://www.pollix.at/thymeleaf/shiro"> - - + +
      @@ -15,10 +15,10 @@ 组织机构
      - + - +
      @@ -87,10 +87,10 @@ var datas = [[${@dict.getType('sys_normal_disable')}]]; var prefix = ctx + "system/user" - $(document).ready(function(){ + $(function() { $('body').layout({ west__size: 185 }); queryUserList(); - queryDeptTreeDaTa(); + queryDeptTree(); }); function queryUserList() { @@ -161,46 +161,39 @@ }; $.table.init(options); } - - function queryDeptTreeDaTa() + + function queryDeptTree() { - // 树结构初始化加载 - var setting = {view:{selectedMulti:false},data:{key:{title:"title"},simpleData:{enable:true}}, - callback:{onClick:function(event, treeId, treeNode){ - $("#deptId").val(treeNode.id); - $("#parentId").val(treeNode.pId); - $.table.search(); - }} - }, tree, loadTree = function(){ - $.get(ctx + "system/dept/treeData", function(data) { - tree = $.fn.zTree.init($("#tree"), setting, data); //.expandAll(true); - // 展开第一级节点 - var nodes = tree.getNodesByParam("level", 0); - for (var i = 0; i < nodes.length; i++) { - tree.expandNode(nodes[i], true, false, false); - } - // 展开第二级节点 - nodes = tree.getNodesByParam("level", 1); - for (var i = 0; i < nodes.length; i++) { - tree.expandNode(nodes[i], true, false, false); - } - }, null, null, "正在加载,请稍后..."); - };loadTree(); + var url = ctx + "system/dept/treeData"; + var options = { + url: url, + expandLevel: 2, + onClick : zOnClick + }; + $.tree.init(options); - $('#btnExpand').click(function() { - tree.expandAll(true); - $(this).hide(); - $('#btnCollapse').show(); - }); - $('#btnCollapse').click(function() { - tree.expandAll(false); - $(this).hide(); - $('#btnExpand').show(); - }); - $('#btnRefresh').click(function() { - loadTree(); - }); + function zOnClick(event, treeId, treeNode) { + $("#deptId").val(treeNode.id); + $("#parentId").val(treeNode.pId); + $.table.search(); + } } + + $('#btnExpand').click(function() { + $._tree.expandAll(true); + $(this).hide(); + $('#btnCollapse').show(); + }); + + $('#btnCollapse').click(function() { + $._tree.expandAll(false); + $(this).hide(); + $('#btnExpand').show(); + }); + + $('#btnRefresh').click(function() { + queryDeptTree(); + }); /*用户管理-部门*/ function dept() { diff --git a/src/main/resources/templates/tool/build/build.html b/src/main/resources/templates/tool/build/build.html index 913687d7..80d5d1aa 100644 --- a/src/main/resources/templates/tool/build/build.html +++ b/src/main/resources/templates/tool/build/build.html @@ -2,8 +2,8 @@ - - + + @@ -80,19 +80,19 @@
      - - + +
      -