Showing preview only (1,946K chars total). Download the full file or copy to clipboard to get everything.
Repository: Kiritor/HR
Branch: master
Commit: 38460b6c8645
Files: 219
Total size: 1.8 MB
Directory structure:
gitextract_xq0sadbf/
├── .classpath
├── .gitignore
├── .project
├── .settings/
│ ├── org.eclipse.core.resources.prefs
│ ├── org.eclipse.jdt.core.prefs
│ └── org.eclipse.m2e.core.prefs
├── README.md
├── pom.xml
└── src/
├── main/
│ ├── java/
│ │ └── com/
│ │ └── lcore/
│ │ └── hr/
│ │ ├── core/
│ │ │ ├── datamng/
│ │ │ │ ├── BaseDataMng.java
│ │ │ │ └── impl/
│ │ │ │ └── BaseDataMngImpl.java
│ │ │ ├── entity/
│ │ │ │ ├── Module.java
│ │ │ │ ├── Role.java
│ │ │ │ ├── RoleToUserRel.java
│ │ │ │ ├── Root.java
│ │ │ │ └── User.java
│ │ │ └── utils/
│ │ │ ├── HibernateTemplateManger.java
│ │ │ ├── JDBCTemplateManager.java
│ │ │ ├── SpringFactory.java
│ │ │ └── TemplateFactory.java
│ │ ├── entity/
│ │ │ ├── Organization.java
│ │ │ ├── OrganizationAddr.java
│ │ │ ├── OrganizationCategroy.java
│ │ │ └── OrganizationType.java
│ │ ├── interceptor/
│ │ │ └── SecurityInterceptor.java
│ │ ├── menu/
│ │ │ ├── auth/
│ │ │ │ ├── controller/
│ │ │ │ │ ├── ModuleController.java
│ │ │ │ │ ├── RoleController.java
│ │ │ │ │ └── UserController.java
│ │ │ │ └── service/
│ │ │ │ ├── ModuleService.java
│ │ │ │ ├── RoleService.java
│ │ │ │ ├── UserService.java
│ │ │ │ └── impl/
│ │ │ │ ├── ModuleServiceImpl.java
│ │ │ │ ├── RoleServiceImpl.java
│ │ │ │ └── UserServiceImpl.java
│ │ │ ├── base/
│ │ │ │ ├── controller/
│ │ │ │ │ ├── BaseController.java
│ │ │ │ │ └── LoginController.java
│ │ │ │ └── service/
│ │ │ │ ├── BaseService.java
│ │ │ │ └── impl/
│ │ │ │ └── BaseServiceImpl.java
│ │ │ └── organization/
│ │ │ ├── controller/
│ │ │ │ └── OrganizationController.java
│ │ │ └── service/
│ │ │ ├── OrganizationService.java
│ │ │ └── impl/
│ │ │ └── OrganizationServiceImpl.java
│ │ ├── module/
│ │ │ └── listener/
│ │ │ └── StartupListener.java
│ │ ├── utils/
│ │ │ ├── Env.java
│ │ │ ├── GeneralBeanOrMapUtils.java
│ │ │ └── GlobalConfigHolder.java
│ │ └── view/
│ │ └── ModelView.java
│ ├── resources/
│ │ ├── i18n/
│ │ │ ├── messages_en.properties
│ │ │ └── messages_zh.properties
│ │ ├── jdbc.properties
│ │ ├── log4j.properties
│ │ ├── spring-common.xml
│ │ ├── spring-mvc.xml
│ │ └── sys.properties
│ └── webapp/
│ ├── WEB-INF/
│ │ ├── views/
│ │ │ ├── admin/
│ │ │ │ └── index.vm
│ │ │ ├── auth/
│ │ │ │ ├── module/
│ │ │ │ │ ├── addModule.vm
│ │ │ │ │ ├── moduleList.easyui.vm
│ │ │ │ │ ├── moduleList.vm
│ │ │ │ │ └── updateModule.vm
│ │ │ │ ├── role/
│ │ │ │ │ ├── addRole.vm
│ │ │ │ │ ├── roleAllocation.vm
│ │ │ │ │ ├── roleList.vm
│ │ │ │ │ └── updateRole.vm
│ │ │ │ └── user/
│ │ │ │ ├── addUser.vm
│ │ │ │ ├── updateUser.vm
│ │ │ │ └── userList.vm
│ │ │ ├── common/
│ │ │ │ ├── header.vm
│ │ │ │ ├── layout.vm
│ │ │ │ └── left.vm
│ │ │ ├── login/
│ │ │ │ └── login.vm
│ │ │ └── ou/
│ │ │ ├── addOu.vm
│ │ │ ├── ouList.vm
│ │ │ └── updateOu.vm
│ │ └── web.xml
│ └── static/
│ ├── css/
│ │ ├── animate.css
│ │ ├── bootstrap-social.css
│ │ ├── bootstrap-table-editable.css
│ │ ├── bootstrap-table.css
│ │ ├── bootstrap.css
│ │ ├── build.css
│ │ ├── flavr.css
│ │ ├── jquery.datetimepicker.css
│ │ ├── layout.css
│ │ ├── metro-bootstrap.css
│ │ ├── simple-line-icons.css
│ │ ├── style.css
│ │ └── templatemo_style.css
│ ├── easyui/
│ │ ├── easyloader.js
│ │ ├── jquery.easyui.patch.js
│ │ ├── locale/
│ │ │ ├── easyui-lang-af.js
│ │ │ ├── easyui-lang-am.js
│ │ │ ├── easyui-lang-ar.js
│ │ │ ├── easyui-lang-bg.js
│ │ │ ├── easyui-lang-ca.js
│ │ │ ├── easyui-lang-cs.js
│ │ │ ├── easyui-lang-cz.js
│ │ │ ├── easyui-lang-da.js
│ │ │ ├── easyui-lang-de.js
│ │ │ ├── easyui-lang-el.js
│ │ │ ├── easyui-lang-en.js
│ │ │ ├── easyui-lang-es.js
│ │ │ ├── easyui-lang-fr.js
│ │ │ ├── easyui-lang-it.js
│ │ │ ├── easyui-lang-jp.js
│ │ │ ├── easyui-lang-nl.js
│ │ │ ├── easyui-lang-pl.js
│ │ │ ├── easyui-lang-pt_BR.js
│ │ │ ├── easyui-lang-ru.js
│ │ │ ├── easyui-lang-sv_SE.js
│ │ │ ├── easyui-lang-tr.js
│ │ │ ├── easyui-lang-zh_CN.js
│ │ │ └── easyui-lang-zh_TW.js
│ │ ├── plugins/
│ │ │ ├── jquery.accordion.js
│ │ │ ├── jquery.calendar.js
│ │ │ ├── jquery.combo.js
│ │ │ ├── jquery.combobox.js
│ │ │ ├── jquery.combogrid.js
│ │ │ ├── jquery.combotree.js
│ │ │ ├── jquery.datagrid.js
│ │ │ ├── jquery.datebox.js
│ │ │ ├── jquery.datetimebox.js
│ │ │ ├── jquery.datetimespinner.js
│ │ │ ├── jquery.dialog.js
│ │ │ ├── jquery.draggable.js
│ │ │ ├── jquery.droppable.js
│ │ │ ├── jquery.filebox.js
│ │ │ ├── jquery.form.js
│ │ │ ├── jquery.layout.js
│ │ │ ├── jquery.linkbutton.js
│ │ │ ├── jquery.menu.js
│ │ │ ├── jquery.menubutton.js
│ │ │ ├── jquery.messager.js
│ │ │ ├── jquery.numberbox.js
│ │ │ ├── jquery.numberspinner.js
│ │ │ ├── jquery.pagination.js
│ │ │ ├── jquery.panel.js
│ │ │ ├── jquery.parser.js
│ │ │ ├── jquery.progressbar.js
│ │ │ ├── jquery.propertygrid.js
│ │ │ ├── jquery.resizable.js
│ │ │ ├── jquery.searchbox.js
│ │ │ ├── jquery.slider.js
│ │ │ ├── jquery.spinner.js
│ │ │ ├── jquery.splitbutton.js
│ │ │ ├── jquery.tabs.js
│ │ │ ├── jquery.textbox.js
│ │ │ ├── jquery.timespinner.js
│ │ │ ├── jquery.tooltip.js
│ │ │ ├── jquery.tree.js
│ │ │ ├── jquery.treegrid.js
│ │ │ ├── jquery.validatebox.js
│ │ │ └── jquery.window.js
│ │ ├── src/
│ │ │ ├── easyloader.js
│ │ │ ├── jquery.accordion.js
│ │ │ ├── jquery.calendar.js
│ │ │ ├── jquery.combobox.js
│ │ │ ├── jquery.datebox.js
│ │ │ ├── jquery.draggable.js
│ │ │ ├── jquery.droppable.js
│ │ │ ├── jquery.form.js
│ │ │ ├── jquery.linkbutton.js
│ │ │ ├── jquery.menu.js
│ │ │ ├── jquery.parser.js
│ │ │ ├── jquery.progressbar.js
│ │ │ ├── jquery.propertygrid.js
│ │ │ ├── jquery.resizable.js
│ │ │ ├── jquery.slider.js
│ │ │ ├── jquery.tabs.js
│ │ │ └── jquery.window.js
│ │ └── themes/
│ │ ├── color.css
│ │ ├── icon.css
│ │ └── metro/
│ │ ├── accordion.css
│ │ ├── calendar.css
│ │ ├── combo.css
│ │ ├── combobox.css
│ │ ├── datagrid.css
│ │ ├── datebox.css
│ │ ├── dialog.css
│ │ ├── easyui.css
│ │ ├── filebox.css
│ │ ├── layout.css
│ │ ├── linkbutton.css
│ │ ├── menu.css
│ │ ├── menubutton.css
│ │ ├── messager.css
│ │ ├── numberbox.css
│ │ ├── pagination.css
│ │ ├── panel.css
│ │ ├── progressbar.css
│ │ ├── propertygrid.css
│ │ ├── searchbox.css
│ │ ├── slider.css
│ │ ├── spinner.css
│ │ ├── splitbutton.css
│ │ ├── tabs.css
│ │ ├── textbox.css
│ │ ├── tooltip.css
│ │ ├── tree.css
│ │ ├── validatebox.css
│ │ └── window.css
│ ├── fonts/
│ │ └── FontAwesome.otf
│ ├── jcheckbox/
│ │ ├── css/
│ │ │ └── jquery-labelauty.css
│ │ └── js/
│ │ └── jquery-labelauty.js
│ └── js/
│ ├── bootstrap-editable.js
│ ├── bootstrap-table-editable.js
│ ├── bootstrap-table-export.js
│ ├── bootstrap-table-zh-CN.js
│ ├── bootstrap-table.js
│ ├── bt-validate.js
│ ├── dateFormat.js
│ ├── flavr.js
│ ├── jquery.datetimepicker.js
│ ├── jquery.nicescroll.js
│ ├── json.js
│ └── tableExport.js
└── test/
├── java/
│ └── com/
│ └── test/
│ └── bpm/
│ └── TestBpm.java
└── resources/
├── jdbc.properties
├── log4j.properties
├── spring-common.xml
├── spring-mvc.xml
└── sys.properties
================================================
FILE CONTENTS
================================================
================================================
FILE: .classpath
================================================
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
<classpathentry kind="src" output="target/classes" path="src/main/java">
<attributes>
<attribute name="optional" value="true"/>
<attribute name="maven.pomderived" value="true"/>
</attributes>
</classpathentry>
<classpathentry excluding="**" kind="src" output="target/classes" path="src/main/resources">
<attributes>
<attribute name="maven.pomderived" value="true"/>
</attributes>
</classpathentry>
<classpathentry kind="src" output="target/test-classes" path="src/test/java">
<attributes>
<attribute name="optional" value="true"/>
<attribute name="maven.pomderived" value="true"/>
</attributes>
</classpathentry>
<classpathentry excluding="**" kind="src" output="target/test-classes" path="src/test/resources">
<attributes>
<attribute name="maven.pomderived" value="true"/>
</attributes>
</classpathentry>
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.launching.macosx.MacOSXType/Java SE 8 [1.8.0_25]">
<attributes>
<attribute name="maven.pomderived" value="true"/>
</attributes>
</classpathentry>
<classpathentry kind="con" path="org.eclipse.m2e.MAVEN2_CLASSPATH_CONTAINER">
<attributes>
<attribute name="maven.pomderived" value="true"/>
</attributes>
</classpathentry>
<classpathentry kind="output" path="target/classes"/>
</classpath>
================================================
FILE: .gitignore
================================================
/target/
================================================
FILE: .project
================================================
<?xml version="1.0" encoding="UTF-8"?>
<projectDescription>
<name>hr</name>
<comment></comment>
<projects>
</projects>
<buildSpec>
<buildCommand>
<name>org.eclipse.wst.common.project.facet.core.builder</name>
<arguments>
</arguments>
</buildCommand>
<buildCommand>
<name>org.eclipse.jdt.core.javabuilder</name>
<arguments>
</arguments>
</buildCommand>
<buildCommand>
<name>org.eclipse.m2e.core.maven2Builder</name>
<arguments>
</arguments>
</buildCommand>
</buildSpec>
<natures>
<nature>org.eclipse.jdt.core.javanature</nature>
<nature>org.eclipse.m2e.core.maven2Nature</nature>
<nature>org.eclipse.wst.common.project.facet.core.nature</nature>
</natures>
</projectDescription>
================================================
FILE: .settings/org.eclipse.core.resources.prefs
================================================
eclipse.preferences.version=1
encoding//src/main/java/com/lcore/core/datamng/BaseDataMng.java=UTF-8
encoding/<project>=UTF-8
================================================
FILE: .settings/org.eclipse.jdt.core.prefs
================================================
eclipse.preferences.version=1
org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.6
org.eclipse.jdt.core.compiler.compliance=1.6
org.eclipse.jdt.core.compiler.problem.forbiddenReference=warning
org.eclipse.jdt.core.compiler.source=1.6
================================================
FILE: .settings/org.eclipse.m2e.core.prefs
================================================
activeProfiles=
eclipse.preferences.version=1
resolveWorkspaceProjects=true
version=1
================================================
FILE: README.md
================================================
# 前言
最近想做一个业务简单的系统,夯实下基础(前端+后端)。人力资源系统业务上较为简单,也比较独立,适合个人练手项目。人力资源系统包括一些核心的人力资源管理业务功能如:**考勤管理**、**薪酬管理**、**绩效管理**、**员工管理**、**加班申请**、**出差申请**等模块。
# 开发环境
**JDK1.6 + Eclipse + MySQL + Maven**
本项目作为业余研究,后端使用spring mvc进行开发,前端主要使用bootstrap也是初学,完成整个项目的过程,也是一个学习的过程,下面是项目中使用到的相关知识点:
# 前端技术
**1. jQuery:js库**
**2. Bootstrap:**前端界面框架(学习中)
**3. BootstrapTable:**表格扩展插件
**4. Velocity:**基于java的模板引擎(放在前端貌似不恰当)
**5. ...**
# 后端技术
**1. Hibernate:**ORM框架,底层封装BaseDataMng数据库操作接口
**2. Spring:**轻量级的IOC(控制反转)、AOP(面向切面)的容器框架
**3. SpringMVC:**MVC框架
**4. Activiti:**工作流引擎
**5. ...**
# 项目进度
##登录模块
密码密文存储、设置了拦截器(不登录返回登录界面)、登录、退出系统.
<center></center>
##权限管理
主要包含角色、用户基础信息的管理(CRUD)、用户角色的分配、模块的管理(CRUD),模块授权.
###角色管理
角色的增、删、查、改、模糊搜索功能.
<center></center>
###用户管理
用户的增、删、查、改、模糊搜索功能(密码的密文保存MD5加密).
<center></center>
================================================
FILE: pom.xml
================================================
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.lcore.hr</groupId>
<artifactId>hr</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>war</packaging>
<build>
<sourceDirectory>src</sourceDirectory>
<plugins>
<plugin>
<groupId>org.apache.tomcat.maven</groupId>
<artifactId>tomcat7-maven-plugin</artifactId>
<version>2.0-beta-1</version>
<configuration>
<path>/hr</path>
<port>9999</port>
<contextReloadable>false</contextReloadable>
</configuration>
</plugin>
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<version>2.3.2</version>
<configuration>
<source>1.6</source>
<target>1.6</target>
<encoding>utf8</encoding>
</configuration>
</plugin>
</plugins>
</build>
<dependencies>
<!-- spring-mvc -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>3.1.2.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-orm</artifactId>
<version>3.1.2.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-test</artifactId>
<version>3.1.2.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>3.1.2.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-tx</artifactId>
<version>3.1.2.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-mock</artifactId>
<version>2.0.8</version>
</dependency>
<!-- hibernate -->
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-c3p0</artifactId>
<version>3.6.0.Final</version>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-ehcache</artifactId>
<version>3.6.10.Final</version>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-core</artifactId>
<version>3.5.6-Final</version>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-annotations</artifactId>
<version>3.5.6-Final</version>
</dependency>
<!-- velocity -->
<dependency>
<groupId>org.apache.velocity</groupId>
<artifactId>velocity</artifactId>
<version>1.7</version>
</dependency>
<dependency>
<groupId>org.apache.velocity</groupId>
<artifactId>velocity-tools</artifactId>
<version>2.0</version>
</dependency>
<!-- Jersey -->
<dependency>
<groupId>com.sun.jersey</groupId>
<artifactId>jersey-server</artifactId>
<version>1.17</version>
</dependency>
<!-- rest webservice -->
<dependency>
<groupId>com.sun.jersey</groupId>
<artifactId>jersey-json</artifactId>
<version>1.17</version>
</dependency>
<dependency>
<groupId>com.sun.jersey.contribs</groupId>
<artifactId>jersey-multipart</artifactId>
<version>1.17</version>
</dependency>
<!-- <dependency> -->
<!-- <groupId>com.alibaba</groupId> -->
<!-- <artifactId>fastjson</artifactId> -->
<!-- <version>1.1.39</version> -->
<!-- </dependency> -->
<!-- 工作流 -->
<dependency>
<groupId>org.activiti</groupId>
<artifactId>activiti-engine</artifactId>
<version>5.15.1</version>
</dependency>
<!-- spring junit -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-test</artifactId>
<version>3.1.2.RELEASE</version>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.10</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
<version>1.7.2</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.21</version>
</dependency>
<dependency>
<groupId>jstl</groupId>
<artifactId>jstl</artifactId>
<version>1.2</version>
</dependency>
<dependency>
<groupId>taglibs</groupId>
<artifactId>standard</artifactId>
<version>1.1.2</version>
</dependency>
<dependency>
<groupId>commons-lang</groupId>
<artifactId>commons-lang</artifactId>
<version>2.5</version>
</dependency>
<dependency>
<groupId>cglib</groupId>
<artifactId>cglib</artifactId>
<version>2.1_3</version>
</dependency>
<dependency>
<groupId>javassist</groupId>
<artifactId>javassist</artifactId>
<version>3.4.GA</version>
</dependency>
<dependency>
<groupId>org.codehaus.jackson</groupId>
<artifactId>jackson-core-asl</artifactId>
<version>1.9.8</version>
</dependency>
<dependency>
<groupId>org.codehaus.jackson</groupId>
<artifactId>jackson-mapper-asl</artifactId>
<version>1.9.8</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-core</artifactId>
<version>2.1.0</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.1.0</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-annotations</artifactId>
<version>2.1.0</version>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>servlet-api</artifactId>
<version>2.4</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>commons-dbcp</groupId>
<artifactId>commons-dbcp</artifactId>
<version>1.2.2</version>
</dependency>
<!-- date -->
<dependency>
<groupId>joda-time</groupId>
<artifactId>joda-time</artifactId>
<version>2.8</version>
</dependency>
<!-- Shiro -->
<dependency>
<groupId>commons-collections</groupId>
<artifactId>commons-collections</artifactId>
<version>3.2.1</version>
</dependency>
<dependency>
<groupId>net.sf.ehcache</groupId>
<artifactId>ehcache-core</artifactId>
<version>2.6.9</version>
</dependency>
<dependency>
<groupId>org.apache.shiro</groupId>
<artifactId>shiro-spring</artifactId>
<version>1.2.3</version>
</dependency>
<dependency>
<groupId>org.apache.shiro</groupId>
<artifactId>shiro-ehcache</artifactId>
<version>1.2.3</version>
</dependency>
<dependency>
<groupId>org.apache.shiro</groupId>
<artifactId>shiro-quartz</artifactId>
<version>1.2.3</version>
</dependency>
</dependencies>
</project>
================================================
FILE: src/main/java/com/lcore/hr/core/datamng/BaseDataMng.java
================================================
package com.lcore.hr.core.datamng;
import java.util.List;
import java.util.Map;
import com.lcore.hr.core.entity.Root;
/**
* 封装底层数据访问
* @author lcore
*
*/
public interface BaseDataMng {
/**
* 保存对象
* @param root
* @return
* @throws Exception
*/
public abstract String saveObj(Root root) throws Exception;
/**
* 保存或者更新对象
* @param root
* @throws Exception
*/
public abstract void saveOrUpdate(Root root) throws Exception;
/**
* 更新对象
* @param root
* @throws Exception
*/
public abstract void updateObj(Root root) throws Exception;
/**
* 通过id和实体名字获取对象
* @param id
* @param className
* @return
*/
public abstract Root getObj(String className, String id);
/**
* 通过id和实体获取对象
* @param id
* @param className
* @return
*/
public abstract Root getObj(Class<?> className,String id);
/**
* 通过id和实体名字删除纪录
* @param id
* @param className
* @return
* @throws Exception
*/
public abstract void deleteObj(String className,String id) throws Exception;
/**
* 通过id和实体删除对象
* @param id
* @param className
* @return
* @throws Exception
*/
public abstract void deleteObj(Class<?> className,String id) throws Exception;
/**
* 根据条件表达式和实体名得到单条纪录
* @param className
* @param condition
* @return
*/
public abstract Root getObjByCondition(String className,String condition);
/**
* 根据条件表达式和实体得到单条纪录
* @param className
* @param condition
* @return
*/
public abstract Root getObjByCondition(Class<?> className,String condition);
/**
* 根据条件表达式和实体名得到集合纪录
* @param className
* @param condition
* @return
*/
public abstract List<Root> getObjListByCondition(String className,String condition);
/**
* 根据条件表达式和实体得到集合纪录
* @param className
* @param condition
* @return
*/
public abstract List<Root> getObjListByCondition(Class<?> className,String condition);
/**
* 根据条件得到分页纪录
* @param className
* @param condition
* @param firstRow
* @param pageSize
* @return
*/
public abstract List<Root> getPagedObjListWithCondition(String className,String condition,int firstRow,int pageSize);
/**
* 根据查询条件得到分页纪录
* @param className
* @param condition
* @param firstRow
* @param pageSize
* @return
*/
public abstract List<Root> getPagedObjListWithCondition(Class<?> className,String condition,int firstRow,int pageSize);
/**
* 根据查询条件得到查询总数
* @param className
* @param condition
* @return
*/
public abstract long getCountByCondition(String className,String condition);
public List<Map<String,Object>> querySql(String sql,List<Object> param);
}
================================================
FILE: src/main/java/com/lcore/hr/core/datamng/impl/BaseDataMngImpl.java
================================================
package com.lcore.hr.core.datamng.impl;
import java.util.Date;
import java.util.List;
import java.util.Map;
import org.apache.shiro.SecurityUtils;
import org.apache.shiro.subject.Subject;
import org.hibernate.Query;
import org.hibernate.Session;
import org.springframework.orm.hibernate3.HibernateTemplate;
import org.springframework.stereotype.Repository;
import org.springframework.transaction.annotation.Transactional;
import com.lcore.hr.core.datamng.BaseDataMng;
import com.lcore.hr.core.entity.Root;
import com.lcore.hr.core.utils.TemplateFactory;
import com.lcore.hr.utils.Env;
import com.lcore.hr.utils.GlobalConfigHolder;
@Repository("baseDataMng")
@Transactional
public class BaseDataMngImpl implements BaseDataMng {
public BaseDataMngImpl() {
}
protected HibernateTemplate getHibernateTemplate() {
return TemplateFactory.getHibernateTemplateById("hibernateTemplate");
}
protected Session getSession() {
return getHibernateTemplate().getSessionFactory().getCurrentSession();
}
public String saveObj(Root root) throws Exception {
//压入创建时间,更新时间
root.setCreateTime(new Date());
root.setUpdateTime(new Date());
//压入创建人,更新人
Env env = GlobalConfigHolder.getEnv();
root.setCreater(env.getUser().getUserName());
root.setUpdater(env.getUser().getUserName());
return (String) getHibernateTemplate().save(root);
}
public void saveOrUpdate(Root root) throws Exception {
getHibernateTemplate().saveOrUpdate(root);
}
public void updateObj(Root root) throws Exception {
//压入更新时间
root.setUpdateTime(new Date());
//压入更新人
Env env = GlobalConfigHolder.getEnv();
root.setUpdater(env.getUser().getUserName());
getHibernateTemplate().update(root);
}
public Root getObj(String className, String id) {
return (Root) getHibernateTemplate().get(className, id);
}
public Root getObj(Class<?> className, String id) {
return (Root)getHibernateTemplate().get(className, id);
}
public void deleteObj(String className, String id) throws Exception {
Root root = getObj(className, id);
getHibernateTemplate().delete(root);
}
public void deleteObj(Class<?> className, String id) throws Exception {
Root root = getObj(className, id);
getHibernateTemplate().delete(root);
}
public Root getObjByCondition(String className, String condition) {
List<Root> list = getObjListByCondition(className, condition);
return (list!=null&&list.size()>0?list.get(0):null);
}
public Root getObjByCondition(Class<?> className, String condition) {
return getObjByCondition(className.getSimpleName(), condition);
}
@SuppressWarnings("unchecked")
public List<Root> getObjListByCondition(String className, String condition) {
String queryString = "";
if(condition!=null&&!condition.trim().isEmpty()){
queryString = (new StringBuffer(" from ")).append(className)
.append(" as obj where 1=1 and ( ").append(condition)
.append(" )").toString();
}else
queryString += "from "+className+" as obj where 1=1";
Query query = getSession().createQuery(queryString);
return query.list();
}
public List<Root> getObjListByCondition(Class<?> className, String condition) {
return getObjListByCondition(className.getSimpleName(),condition);
}
/**
* HQL
*/
public List<Root> getPagedObjListWithCondition(String className,
String condition, int firstRow, int pageSize) {
String queryString = "";
if(condition!=null&&!condition.trim().isEmpty()){
queryString = (new StringBuffer(" from ")).append(className)
.append(" as obj where 1=1 and ").append(condition).toString();
}
else
queryString += "from "+className+" as obj where 1=1";
Query query = getSession().createQuery(queryString);
if(pageSize!=-1) {
query.setMaxResults(pageSize);
query.setFirstResult(firstRow);
}
return query.list();
}
public List<Root> getPagedObjListWithCondition(Class<?> className,
String condition, int firstRow, int pageSize) {
return getPagedObjListWithCondition(className.getClass().getSimpleName(), condition, firstRow, pageSize);
}
public long getCountByCondition(String className,String condition){
return getObjListByCondition(className, condition).size();
}
@Override
public List<Map<String, Object>> querySql(String sql, List<Object> param) {
Session session = getSession();
Query hqlQuery = session.createQuery(sql);
if(param!=null){
for(int i=0;i<param.size();i++){
hqlQuery.setParameter(i, param.get(i));
}
}
return hqlQuery.list();
}
}
================================================
FILE: src/main/java/com/lcore/hr/core/entity/Module.java
================================================
package com.lcore.hr.core.entity;
import javax.persistence.Entity;
import javax.persistence.Inheritance;
import javax.persistence.InheritanceType;
import javax.persistence.Table;
/**
* 模块:菜单
*
* @author LCore
*
*/
@Entity
@Table(name = "auth_module")
@Inheritance(strategy = InheritanceType.TABLE_PER_CLASS)
public class Module extends Root {
private Integer indexNum;
private String moduleName;
private String name;
private String parentId;
public Integer getIndexNum() {
return indexNum;
}
public void setIndexNum(Integer indexNum) {
this.indexNum = indexNum;
}
public String getModuleName() {
return moduleName;
}
public void setModuleName(String moduleName) {
this.moduleName = moduleName;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getParentId() {
return parentId;
}
public void setParentId(String parentId) {
this.parentId = parentId;
}
public String getTarget() {
return target;
}
public void setTarget(String target) {
this.target = target;
}
private String target;
}
================================================
FILE: src/main/java/com/lcore/hr/core/entity/Role.java
================================================
package com.lcore.hr.core.entity;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.Inheritance;
import javax.persistence.InheritanceType;
import javax.persistence.Table;
import org.hibernate.annotations.GenericGenerator;
@Entity
@Table(name = "t_role")
@Inheritance(strategy = InheritanceType.TABLE_PER_CLASS)
public class Role extends Root {
private String name;
private String remark;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getRemark() {
return remark;
}
public void setRemark(String remark) {
this.remark = remark;
}
}
================================================
FILE: src/main/java/com/lcore/hr/core/entity/RoleToUserRel.java
================================================
package com.lcore.hr.core.entity;
import javax.persistence.Entity;
import javax.persistence.Inheritance;
import javax.persistence.InheritanceType;
import javax.persistence.Table;
@Entity
@Table(name = "role_user_rel")
@Inheritance(strategy = InheritanceType.TABLE_PER_CLASS)
public class RoleToUserRel extends Root{
private String userId;
private String roleId;
public String getUserId() {
return userId;
}
public void setUserId(String userId) {
this.userId = userId;
}
public String getRoleId() {
return roleId;
}
public void setRoleId(String roleId) {
this.roleId = roleId;
}
}
================================================
FILE: src/main/java/com/lcore/hr/core/entity/Root.java
================================================
package com.lcore.hr.core.entity;
import java.util.Date;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.Inheritance;
import javax.persistence.InheritanceType;
import javax.persistence.Table;
import org.hibernate.annotations.GenericGenerator;
import org.springframework.format.annotation.DateTimeFormat;
@Entity
@Table(name = "T_ROOT")
@Inheritance(strategy = InheritanceType.TABLE_PER_CLASS)
public class Root {
private String id;
@DateTimeFormat(pattern="yyyy-MM-dd")
private Date createTime;
@DateTimeFormat(pattern="yyyy-MM-dd")
private Date updateTime;
private String creater;
private String updater;
@Id
@GeneratedValue(generator = "systemUUid")
@GenericGenerator(name = "systemUUid", strategy = "uuid")
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public Date getCreateTime() {
return createTime;
}
public void setCreateTime(Date createTime) {
this.createTime = createTime;
}
public Date getUpdateTime() {
return updateTime;
}
public void setUpdateTime(Date updateTime) {
this.updateTime = updateTime;
}
public String getCreater() {
return creater;
}
public void setCreater(String creater) {
this.creater = creater;
}
public String getUpdater() {
return updater;
}
public void setUpdater(String updater) {
this.updater = updater;
}
}
================================================
FILE: src/main/java/com/lcore/hr/core/entity/User.java
================================================
package com.lcore.hr.core.entity;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.Inheritance;
import javax.persistence.InheritanceType;
import javax.persistence.Table;
import org.hibernate.annotations.GenericGenerator;
@Entity
@Table(name = "t_user")
@Inheritance(strategy = InheritanceType.TABLE_PER_CLASS)
public class User extends Root {
private String userName;
private String password;
private String gender;
public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public String getGender() {
return gender;
}
public void setGender(String gender) {
this.gender = gender;
}
}
================================================
FILE: src/main/java/com/lcore/hr/core/utils/HibernateTemplateManger.java
================================================
package com.lcore.hr.core.utils;
import org.hibernate.SessionFactory;
import org.springframework.orm.hibernate3.HibernateTemplate;
public class HibernateTemplateManger{
private HibernateTemplateManger(){
}
public static HibernateTemplateManger getInstance(){
if(templateManger == null){
templateManger = new HibernateTemplateManger();
}
return templateManger;
}
protected HibernateTemplate getHibernateTemplate(String templateId){
cacheHibernateTemplate(templateId);
return template;
}
private synchronized void cacheHibernateTemplate(String templateName) {
HibernateTemplate ht = (HibernateTemplate) SpringFactory.getObject(templateName);
template = ht;
}
private static HibernateTemplateManger templateManger = null;
private static HibernateTemplate template = null;
}
================================================
FILE: src/main/java/com/lcore/hr/core/utils/JDBCTemplateManager.java
================================================
package com.lcore.hr.core.utils;
import javax.sql.DataSource;
import org.springframework.jdbc.core.JdbcTemplate;
public class JDBCTemplateManager {
private JDBCTemplateManager(){
}
public static JDBCTemplateManager getInstance(){
if(jdbcTemplateManager == null){
jdbcTemplateManager = new JDBCTemplateManager();
}
return jdbcTemplateManager;
}
private synchronized JdbcTemplate createTemplate(String templateId) {
JdbcTemplate jdbcTemplate = new JdbcTemplate();
String dataSourceName = templateId;
DataSource dataSource = (DataSource) SpringFactory.getObject(dataSourceName);
jdbcTemplate.setDataSource(dataSource);
return jdbcTemplate;
}
protected JdbcTemplate getTemplate(String templateId){
return createTemplate(templateId);
}
private static JDBCTemplateManager jdbcTemplateManager= null;
}
================================================
FILE: src/main/java/com/lcore/hr/core/utils/SpringFactory.java
================================================
package com.lcore.hr.core.utils;
import org.springframework.beans.BeansException;
import org.springframework.context.ApplicationContext;
import org.springframework.context.ApplicationContextAware;
public class SpringFactory implements ApplicationContextAware{
public SpringFactory() {
}
public void setApplicationContext(ApplicationContext applicationContext)
throws BeansException {
context = applicationContext;
}
public static Object getObject(String id) {
Object object = null;
object = context.getBean(id);
return object;
}
public static ApplicationContext getApplicationContext() {
return context;
}
private static ApplicationContext context;
}
================================================
FILE: src/main/java/com/lcore/hr/core/utils/TemplateFactory.java
================================================
package com.lcore.hr.core.utils;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.orm.hibernate3.HibernateTemplate;
public class TemplateFactory {
private TemplateFactory(){
}
public static HibernateTemplate getHibernateTemplateById(String templateId){
return HibernateTemplateManger.getInstance().getHibernateTemplate(templateId);
}
public static JdbcTemplate getJDBCTemplateById(String templateId) {
return JDBCTemplateManager.getInstance().getTemplate(templateId);
}
}
================================================
FILE: src/main/java/com/lcore/hr/entity/Organization.java
================================================
package com.lcore.hr.entity;
import java.util.Date;
import javax.persistence.Entity;
import javax.persistence.Inheritance;
import javax.persistence.InheritanceType;
import javax.persistence.Table;
import org.springframework.format.annotation.DateTimeFormat;
import com.lcore.hr.core.entity.Root;
@Entity
@Table(name = "Organization_info")
@Inheritance(strategy = InheritanceType.TABLE_PER_CLASS)
public class Organization extends Root{
private String ouName;
@DateTimeFormat(pattern="yyyy-MM-dd")
private Date startTime;
@DateTimeFormat(pattern="yyyy-MM-dd")
private Date endTime;
private String addressId;
private String ouTypeId;
public String getOuName() {
return ouName;
}
public void setOuName(String ouName) {
this.ouName = ouName;
}
public Date getStartTime() {
return startTime;
}
public void setStartTime(Date startTime) {
this.startTime = startTime;
}
public Date getEndTime() {
return endTime;
}
public void setEndTime(Date endTime) {
this.endTime = endTime;
}
public String getAddressId() {
return addressId;
}
public void setAddressId(String addressId) {
this.addressId = addressId;
}
public String getOuTypeId() {
return ouTypeId;
}
public void setOuTypeId(String ouTypeId) {
this.ouTypeId = ouTypeId;
}
}
================================================
FILE: src/main/java/com/lcore/hr/entity/OrganizationAddr.java
================================================
package com.lcore.hr.entity;
import javax.persistence.Entity;
import javax.persistence.Inheritance;
import javax.persistence.InheritanceType;
import javax.persistence.Table;
import com.lcore.hr.core.entity.Root;
@Entity
@Table(name = "Organization_addr")
@Inheritance(strategy = InheritanceType.TABLE_PER_CLASS)
public class OrganizationAddr extends Root{
private String place;
private String address;
private Boolean isInside;
private String address_in;
public String getPlace() {
return place;
}
public void setPlace(String place) {
this.place = place;
}
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
public Boolean getIsInside() {
return isInside;
}
public void setIsInside(Boolean isInside) {
this.isInside = isInside;
}
public String getAddress_in() {
return address_in;
}
public void setAddress_in(String address_in) {
this.address_in = address_in;
}
}
================================================
FILE: src/main/java/com/lcore/hr/entity/OrganizationCategroy.java
================================================
package com.lcore.hr.entity;
import javax.persistence.Entity;
import javax.persistence.Inheritance;
import javax.persistence.InheritanceType;
import javax.persistence.Table;
import com.lcore.hr.core.entity.Root;
@Entity
@Table(name = "Organization_categroy")
@Inheritance(strategy = InheritanceType.TABLE_PER_CLASS)
public class OrganizationCategroy extends Root{
private String name;
private Boolean isEnable;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Boolean getIsEnable() {
return isEnable;
}
public void setIsEnable(Boolean isEnable) {
this.isEnable = isEnable;
}
}
================================================
FILE: src/main/java/com/lcore/hr/entity/OrganizationType.java
================================================
package com.lcore.hr.entity;
import javax.persistence.Entity;
import javax.persistence.Inheritance;
import javax.persistence.InheritanceType;
import javax.persistence.Table;
import com.lcore.hr.core.entity.Root;
@Entity
@Table(name = "Organization_type")
@Inheritance(strategy = InheritanceType.TABLE_PER_CLASS)
public class OrganizationType extends Root{
private String name;
private Boolean isEnable;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Boolean getIsEnable() {
return isEnable;
}
public void setIsEnable(Boolean isEnable) {
this.isEnable = isEnable;
}
}
================================================
FILE: src/main/java/com/lcore/hr/interceptor/SecurityInterceptor.java
================================================
package com.lcore.hr.interceptor;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import org.springframework.web.servlet.HandlerInterceptor;
import org.springframework.web.servlet.ModelAndView;
import com.lcore.hr.utils.Env;
import com.lcore.hr.utils.GlobalConfigHolder;
/**
*
* 安全拦截器:当用户为空的时候
* 也就是session为null的时候是不能
* 直接访问功能模块的(页面资源的),必须返回进行登录
*/
public class SecurityInterceptor implements HandlerInterceptor{
private static final String BASE_PATH="/hr";
public void afterCompletion(HttpServletRequest req,
HttpServletResponse res, Object arg2, Exception arg3)
throws Exception {
}
public void postHandle(HttpServletRequest arg0, HttpServletResponse arg1,
Object arg2, ModelAndView arg3) throws Exception {
}
public boolean preHandle(HttpServletRequest req, HttpServletResponse res,
Object arg2) throws Exception {
HttpSession httpSession = req.getSession(true);
//1、请求到登录页面 放行
if(req.getServletPath().equals("")||req.getServletPath().equals("/")||req.getServletPath().endsWith("login")) {
return true;
}
//2、TODO:游客,登出
//3、用户已经登录,放行
Object object = httpSession.getAttribute("user");
if(object != null&&GlobalConfigHolder.getEnv().user!=null)
{
return true;
}
//4、非法登录
res.sendRedirect(req.getContextPath() + "/");
return false;
}
}
================================================
FILE: src/main/java/com/lcore/hr/menu/auth/controller/ModuleController.java
================================================
package com.lcore.hr.menu.auth.controller;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.servlet.ModelAndView;
import com.lcore.hr.core.entity.Module;
import com.lcore.hr.core.entity.Root;
import com.lcore.hr.menu.auth.service.ModuleService;
import com.lcore.hr.utils.GeneralBeanOrMapUtils;
import com.lcore.hr.view.ModelView;
@Controller
@RequestMapping("/auth/module")
public class ModuleController extends ModelView {
@Resource
ModuleService moduleService;
@RequestMapping("/addModule")
@ResponseBody
public String addModule(HttpServletRequest request,
HttpServletResponse response, Module module) throws Exception {
moduleService.addModule(module);
return "success";
}
@RequestMapping("/deleteModule")
@ResponseBody
public String deleteModule(HttpServletRequest request,
HttpServletResponse response,@RequestParam String[] ids) throws Exception {
List<String> list = new ArrayList<String>();
for(String id:ids){
list.add(id);
}
moduleService.deleteModule(list);
return "sucess";
}
@RequestMapping("/getModuleListDropDown")
@ResponseBody
public List<Map<String,Object>> getModuleListDropDown(HttpServletRequest request,
HttpServletResponse response) throws Exception {
List<Map<String,Object>> result = moduleService.getModuleList(0, -1, null, null);
return result;
}
@RequestMapping("/getModuleList")
@ResponseBody
public Map<String, Object> getModuleList(HttpServletRequest request,
HttpServletResponse response) throws Exception {
Map<String, Object> map = new HashMap<String, Object>();
List<Map<String,Object>> result = moduleService.getModuleList(0, -1, null, null);
map.put("rows", result);
map.put("total", result.size());
return map;
}
@RequestMapping("/updateModule")
@ResponseBody
public String updateModule(HttpServletRequest request,
HttpServletResponse response, Module module) throws Exception {
moduleService.updateModule(module);
return "success";
}
@RequestMapping("/listView")
public ModelAndView moduleList(HttpServletRequest request,
HttpServletResponse response) {
return createLayoutView("auth/module/moduleList", request, response);
}
@RequestMapping("/addModuleView")
public ModelAndView addModuleView(HttpServletRequest request,
HttpServletResponse response) {
return createSingleView("auth/module/addModule", request, response);
}
@RequestMapping("/updateModuleView")
public ModelAndView updateModuleView(HttpServletRequest request,
HttpServletResponse response) {
return createSingleView("auth/module/updateModule", request, response);
}
}
================================================
FILE: src/main/java/com/lcore/hr/menu/auth/controller/RoleController.java
================================================
package com.lcore.hr.menu.auth.controller;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.servlet.ModelAndView;
import com.lcore.hr.core.entity.Role;
import com.lcore.hr.core.entity.Root;
import com.lcore.hr.menu.auth.service.RoleService;
import com.lcore.hr.menu.auth.service.UserService;
import com.lcore.hr.utils.GeneralBeanOrMapUtils;
import com.lcore.hr.view.ModelView;
@Controller
@RequestMapping("/auth/role")
public class RoleController extends ModelView {
@Resource
private RoleService roleService;
@Resource
private UserService userService;
/**
* 得到角色列表
*
* @param request
* @param response
* @param limit
* @param offset
* @param search
* @param order
* @param sort
* @return
* @throws Exception
*/
@RequestMapping("/getRoleList")
@ResponseBody
public Map<String, Object> getRoleList(HttpServletRequest request,
HttpServletResponse response, @RequestParam int limit,
@RequestParam int offset, @RequestParam String search,
@RequestParam String order, @RequestParam String sort)
throws Exception {
Map<String, Object> map = new HashMap<String,Object>();
List<Root> list = roleService.getRoleList(offset, limit, sort, order,
search);
map.put("total", roleService.getRoleList(0, -1, sort, order, search)
.size());
map.put("rows", list);
return map;
}
/**
* 得到角色列表(角色分配)
*
* @param request
* @param response
* @param search
* @param order
* @param sort
* @return
* @throws Exception
*/
@RequestMapping("/roleList")
@ResponseBody
public List<Map<String, Object>> roleList(HttpServletRequest request,
HttpServletResponse response, @RequestParam String search,
@RequestParam String order, @RequestParam String sort)
throws Exception {
Map<String, Object> map = new HashMap<String,Object>();
List<Root> list = roleService.getRoleList(0, -1, sort, order,
search);
List<Map<String, Object>> result = new ArrayList<Map<String,Object>>();
for(Root root:list){
result.add(GeneralBeanOrMapUtils.convertBean2Map(root));
}
return result;
}
/**
*
* @param request
* @param response
* @param roleId
* @return
* @throws Exception
*/
@RequestMapping("/getUserListByRoleId")
@ResponseBody
public Map<String,Object> getUserListByRoleId(HttpServletRequest request,HttpServletResponse response,
@RequestParam int limit,@RequestParam int offset,@RequestParam String search,
@RequestParam String order,@RequestParam String sort,
String roleId) throws Exception {
Map<String,Object> map = new HashMap<String,Object>();
List<Root> list = userService.getUserList(offset, limit, sort, order, null);
List<Map<String,Object>> result = new ArrayList<Map<String,Object>>();
List<String> userIds = roleService.getUserIdsByRoleId(roleId);
for(Root root:list){
Map<String,Object> mapUser = GeneralBeanOrMapUtils.convertBean2Map(root);
if(userIds!=null&&userIds.contains(mapUser.get("id").toString())){
mapUser.put("selected", true);
}else
mapUser.put("selected", false);
result.add(mapUser);
}
map.put("rows", result);
map.put("total", userService.getUserList(0, -1, sort, order, null).size());
return map;
}
/**
* 添加角色
*
* @param request
* @param response
* @param role
* @return
* @throws Exception
*/
@RequestMapping("/addRole")
@ResponseBody
public String addRole(HttpServletRequest request,
HttpServletResponse response, Role role) throws Exception {
roleService.addRole(role);
return "success";
}
/**
* 删除角色
*
* @param request
* @param response
* @param ids
* @return
* @throws Exception
*/
@RequestMapping("/deleteRole")
@ResponseBody
public String deleteRole(HttpServletRequest request,
HttpServletResponse response, @RequestParam String ids)
throws Exception {
String[] idA = ids.split(",");
List<String> idList = new ArrayList<String>();
for (int i = 0; i < idA.length; i++) {
idList.add(idA[i]);
}
roleService.deleteRole(idList);
return "success";
}
/**
* 更新角色
* @param request
* @param response
* @param role
* @return
* @throws Exception
*/
@RequestMapping("/updateRole")
@ResponseBody
public String updateRole(HttpServletRequest request,
HttpServletResponse response,Role role) throws Exception {
roleService.updateRole(role);
return "success";
}
@RequestMapping("/updateRoleToUserRel")
@ResponseBody
public String updateRoleToUserRel(HttpServletRequest request,
HttpServletResponse response,@RequestParam String roleId,
@RequestParam String[] userIds) throws Exception {
roleService.updateRoleToUserRel(roleId, userIds);
return "success";
}
/**
* 跳转到角色列表页面
*
* @param request
* @param response
* @return
*/
@RequestMapping("/listView")
public ModelAndView roleList(HttpServletRequest request,
HttpServletResponse response) {
return createLayoutView("auth/role/roleList", request, response);
}
/**
* 跳转到添加角色界面
* @param request
* @param response
* @return
*/
@RequestMapping("/addRoleView")
public ModelAndView addRoleView(HttpServletRequest request,
HttpServletResponse response) {
return createSingleView("auth/role/addRole", request, response);
}
/**
* 跳转到更新角色界面
* @param request
* @param response
* @return
*/
@RequestMapping("/updateRoleView")
public ModelAndView updateRoleView(HttpServletRequest request,
HttpServletResponse response) {
return createSingleView("auth/role/updateRole",request,response);
}
/**
* 跳转到角色分配界面
* @param request
* @param response
* @return
*/
@RequestMapping("/roleAllocationView")
public ModelAndView roleAllocation(HttpServletRequest request,
HttpServletResponse response) {
return createLayoutView("auth/role/roleAllocation", request, response);
}
}
================================================
FILE: src/main/java/com/lcore/hr/menu/auth/controller/UserController.java
================================================
package com.lcore.hr.menu.auth.controller;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.commons.collections.map.HashedMap;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.servlet.ModelAndView;
import com.lcore.hr.core.entity.Root;
import com.lcore.hr.core.entity.User;
import com.lcore.hr.menu.auth.service.UserService;
import com.lcore.hr.view.ModelView;
@Controller
@RequestMapping("/auth/user")
public class UserController extends ModelView{
@Resource
private UserService userService;
/**
* 得到人员列表
* @param request
* @param response
* @param limit
* @param offset
* @param search
* @param order
* @param sort
* @return
* @throws Exception
*/
@RequestMapping("/getUserList")
@ResponseBody
public Map<String,Object> getUserList(HttpServletRequest request,HttpServletResponse response,
@RequestParam int limit,@RequestParam int offset,@RequestParam String search,
@RequestParam String order,@RequestParam String sort) throws Exception{
Map<String,Object> map = new HashedMap();
List<Root> list = userService.getUserList(offset,limit,sort,order,search);
map.put("total", userService.getUserList(0, -1, sort, order, search).size());
map.put("rows",list);
return map;
}
@RequestMapping("/addUser")
@ResponseBody
public String addUser(HttpServletRequest request,HttpServletResponse response,
User user) throws Exception{
userService.addUser(user);
return "success";
}
@RequestMapping("/deleteUser")
@ResponseBody
public String deleteOu(HttpServletRequest request,HttpServletResponse response,
@RequestParam String ids) throws Exception{
String[] idA = ids.split(",");
List<String> idList = new ArrayList<String>();
for(int i=0;i<idA.length;i++){
idList.add(idA[i]);
}
userService.deleteUser(idList);
return "success";
}
@RequestMapping("/updateUser")
@ResponseBody
public String deleteOu(HttpServletRequest request,HttpServletResponse response,
User user) throws Exception{
userService.updateUser(user);
return "success";
}
/**
* 跳转到人员管理界面
* @param request
* @param response
* @return
*/
@RequestMapping("/listView")
public ModelAndView userList(HttpServletRequest request,HttpServletResponse response){
return createLayoutView("auth/user/userList", request, response);
}
/**
* 跳转到添加用户页面
* @param request
* @param response
* @param user
* @return
* @throws Exception
*/
@RequestMapping("/addUserView")
public ModelAndView addUserView(HttpServletRequest request,HttpServletResponse response) throws Exception{
return createSingleView("auth/user/addUser", request, response);
}
/**
* 跳转到更新用户页面
* @param request
* @param response
* @param user
* @return
* @throws Exception
*/
@RequestMapping("/updateUserView")
public ModelAndView updateUserView(HttpServletRequest request,HttpServletResponse response) throws Exception{
return createSingleView("auth/user/updateUser", request, response);
}
}
================================================
FILE: src/main/java/com/lcore/hr/menu/auth/service/ModuleService.java
================================================
package com.lcore.hr.menu.auth.service;
import java.util.List;
import java.util.Map;
import com.lcore.hr.core.entity.Module;
public interface ModuleService {
public abstract void addModule(Module module) throws Exception;
public abstract List<Map<String,Object>> getModuleList(int offset,int limit,String sort,String order) throws Exception;
public abstract void deleteModule(List<String> ids) throws Exception;
public abstract void updateModule(Module module) throws Exception;
}
================================================
FILE: src/main/java/com/lcore/hr/menu/auth/service/RoleService.java
================================================
package com.lcore.hr.menu.auth.service;
import java.util.List;
import com.lcore.hr.core.entity.Role;
import com.lcore.hr.core.entity.Root;
import com.lcore.hr.core.entity.User;
public interface RoleService {
/**
* 查询角色列表
* @param offset firstRow
* @param limit pageSize:-1表示不分頁
* @param sort
* @param order
* @param key 模糊搜索关键字
* @return
*/
public abstract List<Root> getRoleList(int offset,int limit,String sort,String order,String key);
/**
* 添加角色
* @param org
* @throws Exception
*/
public abstract void addRole(Role role) throws Exception;
/**
* 批量删除角色
* @param ids
* @throws Exception
*/
public abstract void deleteRole(List<String> ids) throws Exception;
/**
* 更新角色
* @param org
* @throws Exception
*/
public abstract void updateRole(Role role) throws Exception;
/**
* 根据角色id得到用户id列表
* @param roleId
* @return
* @throws Exception
*/
public List<String> getUserIdsByRoleId(String roleId) throws Exception;
/**
* 根据roleId删除关系
* @param roleId
* @throws Exception
*/
public void deleteUserIdsByRoleId(String roleId) throws Exception;
/**
* 批量维护角色和用户的关系
* @param roleId
* @param userIds
* @throws Exception
*/
public void updateRoleToUserRel(String roleId,String[] userIds) throws Exception;
}
================================================
FILE: src/main/java/com/lcore/hr/menu/auth/service/UserService.java
================================================
package com.lcore.hr.menu.auth.service;
import java.util.List;
import com.lcore.hr.core.entity.Root;
import com.lcore.hr.core.entity.User;
import com.lcore.hr.menu.base.service.BaseService;
public interface UserService extends BaseService{
/**
* 查询用户列表
* @param offset firstRow
* @param limit pageSize:-1表示不分頁
* @param sort
* @param order
* @param key 模糊搜索关键字
* @return
*/
public abstract List<Root> getUserList(int offset,int limit,String sort,String order,String key);
/**
* 添加组织
* @param org
* @throws Exception
*/
public abstract void addUser(User user) throws Exception;
/**
* 批量删除用户
* @param ids
* @throws Exception
*/
public abstract void deleteUser(List<String> ids) throws Exception;
/**
* 更新用户
* @param org
* @throws Exception
*/
public abstract void updateUser(User user) throws Exception;
}
================================================
FILE: src/main/java/com/lcore/hr/menu/auth/service/impl/ModuleServiceImpl.java
================================================
package com.lcore.hr.menu.auth.service.impl;
import java.beans.IntrospectionException;
import java.lang.reflect.InvocationTargetException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import com.lcore.hr.core.entity.Module;
import com.lcore.hr.core.entity.Root;
import com.lcore.hr.menu.auth.service.ModuleService;
import com.lcore.hr.menu.base.service.impl.BaseServiceImpl;
import com.lcore.hr.utils.GeneralBeanOrMapUtils;
@Service("moduleService")
@Transactional
public class ModuleServiceImpl extends BaseServiceImpl implements ModuleService{
@Override
public void addModule(Module module) throws Exception {
this.save(module);
}
@Override
public List<Map<String,Object>> getModuleList(int offset, int limit, String sort,
String order) throws Exception {
List<Root> roots = this.getObjListByCondition(Module.class.getName(), null);
List<Map<String,Object>> resultList = new ArrayList<Map<String,Object>>();
String pId ="";
Map<String,Object> temp = new HashMap<String, Object>();
for(Root root:roots) {
temp = GeneralBeanOrMapUtils.convertBean2Map(root);
pId = temp.get("parentId")==null?"":temp.get("parentId").toString();
if(pId!=null&&!"".equals(pId)){
Module r = (Module)this.getObjById(Module.class.getName(), pId);
temp.put("parentName", r.getModuleName());
}
resultList.add(temp);
}
return resultList;
}
@Override
public void deleteModule(List<String> ids) throws Exception {
for (String id : ids) {
if (id != null && !"".equals(id.trim()))
this.delete(Module.class.getName(), id);
}
}
@Override
public void updateModule(Module module) throws Exception {
this.update(module);
}
}
================================================
FILE: src/main/java/com/lcore/hr/menu/auth/service/impl/RoleServiceImpl.java
================================================
package com.lcore.hr.menu.auth.service.impl;
import java.util.ArrayList;
import java.util.List;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import com.lcore.hr.core.entity.Role;
import com.lcore.hr.core.entity.RoleToUserRel;
import com.lcore.hr.core.entity.Root;
import com.lcore.hr.core.entity.User;
import com.lcore.hr.menu.auth.service.RoleService;
import com.lcore.hr.menu.auth.service.UserService;
import com.lcore.hr.menu.base.service.impl.BaseServiceImpl;
@Service("roleService")
@Transactional
public class RoleServiceImpl extends BaseServiceImpl implements RoleService{
@Override
public List<Root> getRoleList(int offset, int limit, String sort,
String order, String key) {
String condition = " 1=1 ";
if (key != null && !"".equals(key)) {
condition += " and (obj.name like '%" + key + "%' or obj.remark like '%"+key+"%')";
}
if (null != sort && !"".equals(sort))
condition += " order by " + " obj." + sort + "" + " " + order;
return this.getPagedObjListWithCondition(Role.class.getSimpleName(),
condition, offset, limit);
}
@Override
public void addRole(Role role) throws Exception {
this.save(role);
}
@Override
public void deleteRole(List<String> ids) throws Exception {
for (String id : ids) {
if (id != null && !"".equals(id.trim()))
this.delete(Role.class.getName(), id);
}
}
@Override
public void updateRole(Role role) throws Exception {
this.update(role);
}
@Override
public List<String> getUserIdsByRoleId(String roleId) throws Exception {
String condition = " 1=1 ";
if(roleId == null ||roleId.trim().equals("")){
return null;
}
condition += " and obj.roleId = '"+roleId+"'";
List<Root> list = this.getObjListByCondition(RoleToUserRel.class.getSimpleName(), condition);
List<String> resultList = new ArrayList<String>();
for(Root root:list){
RoleToUserRel rel = (RoleToUserRel) root;
resultList.add(rel.getUserId());
}
return resultList;
}
@Override
public void updateRoleToUserRel(String roleId, String[] userIds)
throws Exception {
//1、删除以前的关系
deleteUserIdsByRoleId(roleId);
//2、批量添加关系
for(String str:userIds){
RoleToUserRel tmp = new RoleToUserRel();
tmp.setRoleId(roleId);
tmp.setUserId(str);
this.save(tmp);
}
}
@Override
public void deleteUserIdsByRoleId(String roleId) throws Exception {
List<Root> roots = this.getObjListByCondition(RoleToUserRel.class.getSimpleName(), " obj.roleId ='"+roleId+"'");
for(Root root:roots){
this.delete(RoleToUserRel.class.getName(), root.getId());
}
}
}
================================================
FILE: src/main/java/com/lcore/hr/menu/auth/service/impl/UserServiceImpl.java
================================================
package com.lcore.hr.menu.auth.service.impl;
import java.util.List;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import com.lcore.hr.core.entity.Root;
import com.lcore.hr.core.entity.User;
import com.lcore.hr.menu.auth.service.UserService;
import com.lcore.hr.menu.base.service.impl.BaseServiceImpl;
@Service("userService")
@Transactional
public class UserServiceImpl extends BaseServiceImpl implements UserService {
@Override
public List<Root> getUserList(int offset, int limit, String sort,
String order, String key) {
String condition = " 1=1 ";
if (key != null && !"".equals(key)) {
condition += " and obj.userName like '%" + key + "%'";
}
if (null != sort && !"".equals(sort))
condition += " order by " + " obj." + sort + "" + " " + order;
return this.getPagedObjListWithCondition(User.class.getName(),
condition, offset, limit);
}
@Override
public void addUser(User user) throws Exception {
this.save(user);
}
@Override
public void deleteUser(List<String> ids) throws Exception {
for (String id : ids) {
if (id != null && !"".equals(id.trim()))
this.delete(User.class.getName(), id);
}
}
@Override
public void updateUser(User user) throws Exception {
this.update(user);
}
}
================================================
FILE: src/main/java/com/lcore/hr/menu/base/controller/BaseController.java
================================================
package com.lcore.hr.menu.base.controller;
import java.util.Locale;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.springframework.context.i18n.LocaleContextHolder;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.i18n.CookieLocaleResolver;
import org.springframework.web.servlet.i18n.SessionLocaleResolver;
import com.lcore.hr.view.ModelView;
@Controller
public class BaseController extends ModelView{
@RequestMapping("/")
public ModelAndView login(HttpServletRequest request,HttpServletResponse response){
ModelAndView view = createSingleView("login/login", request, response);
return view;
}
@RequestMapping("/index")
public ModelAndView index(HttpServletRequest request,HttpServletResponse response){
ModelAndView view = createLayoutView("admin/index", request, response);
return view;
}
@RequestMapping("/lang")
@ResponseBody
public String lang(HttpServletRequest request,HttpServletResponse response) {
String langType = request.getParameter("langType");
if (langType.equals("zh")) {
Locale locale = new Locale("zh", "CN");
//request.getSession().setAttribute(SessionLocaleResolver.LOCALE_SESSION_ATTRIBUTE_NAME, locale);
new CookieLocaleResolver().setLocale(request, response, locale);
} else if (langType.equals("en")) {
Locale locale = new Locale("en", "US");
//request.getSession().setAttribute(SessionLocaleResolver.LOCALE_SESSION_ATTRIBUTE_NAME, locale);
new CookieLocaleResolver().setLocale(request, response, locale);
} else
new CookieLocaleResolver().setLocale(request, response, LocaleContextHolder.getLocale());
//request.getSession().setAttribute(SessionLocaleResolver.LOCALE_SESSION_ATTRIBUTE_NAME, LocaleContextHolder.getLocale());
return null;
}
}
================================================
FILE: src/main/java/com/lcore/hr/menu/base/controller/LoginController.java
================================================
package com.lcore.hr.menu.base.controller;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.shiro.SecurityUtils;
import org.apache.shiro.authc.AuthenticationInfo;
import org.apache.shiro.authc.SimpleAuthenticationInfo;
import org.apache.shiro.authc.UsernamePasswordToken;
import org.apache.shiro.session.Session;
import org.apache.shiro.subject.Subject;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.servlet.ModelAndView;
import com.lcore.hr.core.entity.User;
import com.lcore.hr.menu.base.service.BaseService;
import com.lcore.hr.utils.Env;
import com.lcore.hr.utils.GlobalConfigHolder;
import com.lcore.hr.view.ModelView;
@Controller
public class LoginController extends ModelView{
@Resource
private BaseService baseService;
@RequestMapping("/login")
@ResponseBody
public Boolean login(HttpServletRequest request,HttpServletResponse response,
@RequestParam String userName,@RequestParam String password,Boolean isRemeberMe){
UsernamePasswordToken token = new UsernamePasswordToken(userName, password);
Subject subject = SecurityUtils.getSubject();
try {
subject.login(token);
} catch (Exception e) {
e.printStackTrace();
return false;
}
if(null!=isRemeberMe&&isRemeberMe)
token.setRememberMe(true);
if(subject.isAuthenticated()){
AuthenticationInfo info = new SimpleAuthenticationInfo(userName,password,userName);
Subject currentUser = SecurityUtils.getSubject();
Session session = currentUser.getSession();
User user = new User();
user.setUserName(userName);
user.setPassword(password);
Env env = new Env();
env.setUser(user);
session.setAttribute("env",env);
GlobalConfigHolder.setEnv(env);
return true;
}else
return false;
}
@RequestMapping("/logout")
public ModelAndView logout(HttpServletRequest request,HttpServletResponse response) throws Exception{
request.getSession().removeAttribute("env");
GlobalConfigHolder.setEnv(null);
Subject subject = SecurityUtils.getSubject();
subject.logout();
return createSingleView("login/login", request, response);
}
@RequestMapping("/loginSYS")
public ModelAndView loginSYS(HttpServletRequest request,HttpServletResponse response) throws Exception{
ModelAndView view = createLayoutView("admin/index", request, response);
return view;
}
@RequestMapping("/loginUrl")
public ModelAndView loginUrl(HttpServletRequest request,HttpServletResponse response) throws Exception{
return createSingleView("login/login", request, response);
}
}
================================================
FILE: src/main/java/com/lcore/hr/menu/base/service/BaseService.java
================================================
package com.lcore.hr.menu.base.service;
import java.util.List;
import java.util.Map;
import com.lcore.hr.core.entity.Root;
public interface BaseService {
/**
* 保存对象
* @param root
* @return
* @throws Exception
*/
public abstract String save(Root root) throws Exception;
/**
* 保存或者更新对象
* @param root
* @throws Exception
*/
public abstract void saveOrUpdate(Root root) throws Exception;
/**
* 更新对象
* @param root
* @throws Exception
*/
public abstract void update(Root root) throws Exception;
/**
* 通过id和实体名字获取对象
* @param id
* @param className
* @return
*/
public abstract Root getObjById(String className, String id);
/**
* 通过id和实体获取对象
* @param id
* @param className
* @return
*/
public abstract Root getObjById(Class<?> className,String id);
/**
* 通过id和实体名字删除纪录
* @param id
* @param className
* @return
* @throws Exception
*/
public abstract void delete(String className,String id) throws Exception;
/**
* 通过id和实体删除对象
* @param id
* @param className
* @return
* @throws Exception
*/
public abstract void delete(Class<?> className,String id) throws Exception;
/**
* 根据条件表达式和实体名得到单条纪录
* @param className
* @param condition
* @return
*/
public abstract Root getObjByCondition(String className,String condition);
/**
* 根据条件表达式和实体得到单条纪录
* @param className
* @param condition
* @return
*/
public abstract Root getObjByCondition(Class<?> className,String condition);
/**
* 根据条件表达式和实体名得到集合纪录
* @param className
* @param condition
* @return
*/
public abstract List<Root> getObjListByCondition(String className,String condition);
/**
* 根据条件表达式和实体得到集合纪录
* @param className
* @param condition
* @return
*/
public abstract List<Root> getObjListByCondition(Class<?> className,String condition);
/**
* 根据条件得到分页纪录
* @param className
* @param condition
* @param firstRow
* @param pageSize
* @return
*/
public abstract List<Root> getPagedObjListWithCondition(String className,String condition,int firstRow,int pageSize);
/**
* 根据查询条件得到分页纪录
* @param className
* @param condition
* @param firstRow
* @param pageSize
* @return
*/
public abstract List<Root> getPagedObjListWithCondition(Class<?> className,String condition,int firstRow,int pageSize);
/**
* 根据查询条件获取总的条数
* @param className
* @param condition
* @return
*/
public long getCountByCondition(String className,String condition);
/**
* 根据hql语句查询
* @param hql
* @param objs
* @return
*/
public abstract List<Root> getObjListByHql(String hql,List<Object> objs);
/**
* 根据hql语句查询(分页)
* @param hql
* @param objs
* @param firstRow
* @param pageSize
* @return
*/
public abstract List<Root> getObjListByHql(String hql,List<Object> objs,int firstRow,int pageSize);
/**
* 根据sql语句查询
* @param sql
* @param objs
* @return
*/
public abstract List<Map<String,Object>> getObjListBySql(String sql,List<Object> objs);
/**
* 根据sql语句查询(分页)
* @param sql
* @param objs
* @param firstRow
* @param pageSize
* @return
*/
public abstract List<Map<String,Object>> getObjListBySql(String sql,List<Object> objs,int firstRow,int pageSize);
/**
* 根据sql语句更新
* @param sql
* @param objs
* @throws Exception
*/
public void updateBySql(String sql,List<Object> objs) throws Exception;
/**
* 根据sql语句删除
* @param sql
* @param objs
* @throws Exception
*/
public void deleteBySql(String sql, List<Object> objs) throws Exception;
}
================================================
FILE: src/main/java/com/lcore/hr/menu/base/service/impl/BaseServiceImpl.java
================================================
package com.lcore.hr.menu.base.service.impl;
import java.util.List;
import java.util.Map;
import javax.annotation.Resource;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import com.lcore.hr.core.datamng.BaseDataMng;
import com.lcore.hr.core.entity.Root;
import com.lcore.hr.menu.base.service.BaseService;
@Service("baseService")
@Transactional
public class BaseServiceImpl implements BaseService{
@Resource
private BaseDataMng baseDataMng;
@Override
public String save(Root root) throws Exception {
return baseDataMng.saveObj(root);
}
@Override
public void saveOrUpdate(Root root) throws Exception {
baseDataMng.saveOrUpdate(root);
}
@Override
public void update(Root root) throws Exception {
baseDataMng.updateObj(root);
}
@Override
public Root getObjById(String className, String id) {
return baseDataMng.getObj(className, id);
}
@Override
public Root getObjById(Class<?> className, String id) {
return baseDataMng.getObj(className, id);
}
@Override
public void delete(String className, String id) throws Exception {
baseDataMng.deleteObj(className, id);
}
@Override
public void delete(Class<?> className, String id) throws Exception {
baseDataMng.deleteObj(className, id);
}
@Override
public Root getObjByCondition(String className, String condition) {
return baseDataMng.getObjByCondition(className, condition);
}
@Override
public Root getObjByCondition(Class<?> className, String condition) {
return baseDataMng.getObjByCondition(className, condition);
}
@Override
public List<Root> getObjListByCondition(String className, String condition) {
// TODO Auto-generated method stub
return baseDataMng.getObjListByCondition(className, condition);
}
@Override
public List<Root> getObjListByCondition(Class<?> className, String condition) {
return baseDataMng.getObjListByCondition(className, condition);
}
@Override
public List<Root> getPagedObjListWithCondition(String className,
String condition, int firstRow, int pageSize) {
return baseDataMng.getPagedObjListWithCondition(className, condition, firstRow, pageSize);
}
@Override
public List<Root> getPagedObjListWithCondition(Class<?> className,
String condition, int firstRow, int pageSize) {
return baseDataMng.getPagedObjListWithCondition(className, condition, firstRow, pageSize);
}
@Override
public long getCountByCondition(String className, String condition) {
// TODO Auto-generated method stub
return baseDataMng.getCountByCondition(className, condition);
}
@Override
public List<Root> getObjListByHql(String hql, List<Object> objs) {
// TODO Auto-generated method stub
return null;
}
@Override
public List<Root> getObjListByHql(String hql, List<Object> objs,
int firstRow, int pageSize) {
// TODO Auto-generated method stub
return null;
}
@Override
public List<Map<String, Object>> getObjListBySql(String sql,
List<Object> objs) {
// TODO Auto-generated method stub
return null;
}
@Override
public List<Map<String, Object>> getObjListBySql(String sql,
List<Object> objs, int firstRow, int pageSize) {
// TODO Auto-generated method stub
return null;
}
@Override
public void updateBySql(String sql, List<Object> objs) throws Exception {
// TODO Auto-generated method stub
}
@Override
public void deleteBySql(String sql, List<Object> objs) throws Exception {
// TODO Auto-generated method stub
}
}
================================================
FILE: src/main/java/com/lcore/hr/menu/organization/controller/OrganizationController.java
================================================
package com.lcore.hr.menu.organization.controller;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.commons.collections.map.HashedMap;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.servlet.ModelAndView;
import com.lcore.hr.entity.Organization;
import com.lcore.hr.menu.organization.service.OrganizationService;
import com.lcore.hr.view.ModelView;
@Controller
@RequestMapping("/ou")
public class OrganizationController extends ModelView{
@Resource
private OrganizationService organizationService;
@RequestMapping("/getOuList")
@ResponseBody
public Map<String,Object> getOuList(HttpServletRequest request,HttpServletResponse response,
@RequestParam int limit,@RequestParam int offset,@RequestParam String search,
@RequestParam String order,@RequestParam String sort) throws Exception{
Map<String,Object> map = new HashedMap();
List list = organizationService.getOuList(offset,limit,sort,order,search);
map.put("total", organizationService.getOuList(0, -1, sort, order, search).size());
map.put("rows",list);
return map;
}
@RequestMapping("/addOu")
@ResponseBody
public String addOu(HttpServletRequest request,HttpServletResponse response,
Organization org) throws Exception{
organizationService.addOu(org);
return "success";
}
@RequestMapping("/deleteOu")
@ResponseBody
public String deleteOu(HttpServletRequest request,HttpServletResponse response,
@RequestParam String ids) throws Exception{
String[] idA = ids.split(",");
List<String> idList = new ArrayList<String>();
for(int i=0;i<idA.length;i++){
idList.add(idA[i]);
}
organizationService.deleteOu(idList);
return "success";
}
@RequestMapping("/updateOu")
@ResponseBody
public String deleteOu(HttpServletRequest request,HttpServletResponse response,
Organization org) throws Exception{
organizationService.updateOu(org);
return "success";
}
/**
* 跳转到组织管理界面
* @param request
* @param response
* @return
* @throws Exception
*/
@RequestMapping("/list")
public ModelAndView list(HttpServletRequest request,HttpServletResponse response) throws Exception{
return createLayoutView("ou/ouList", request, response);
}
/**
* 跳转到添加组织界面
* @param request
* @param response
* @return
* @throws Exception
*/
@RequestMapping("/addOuView")
public ModelAndView addOuView(HttpServletRequest request,HttpServletResponse response) throws Exception{
return createSingleView("ou/addOu", request, response);
}
/**
* 跳转到更新组织界面
* @param request
* @param response
* @return
* @throws Exception
*/
@RequestMapping("/updateOuView")
public ModelAndView updateOuView(HttpServletRequest request,HttpServletResponse response) throws Exception{
return createSingleView("ou/updateOu", request, response);
}
}
================================================
FILE: src/main/java/com/lcore/hr/menu/organization/service/OrganizationService.java
================================================
package com.lcore.hr.menu.organization.service;
import java.util.List;
import com.lcore.hr.core.entity.Root;
import com.lcore.hr.entity.Organization;
import com.lcore.hr.menu.base.service.BaseService;
public interface OrganizationService extends BaseService{
/**
* 查询组织列表
* @param offset firstRow
* @param limit pageSize:-1表示不分頁
* @param sort
* @param order
* @param key 模糊搜索关键字
* @return
*/
public abstract List<Root> getOuList(int offset,int limit,String sort,String order,String key);
/**
* 添加组织
* @param org
* @throws Exception
*/
public abstract void addOu(Organization org) throws Exception;
/**
* 批量删除组织
* @param ids
* @throws Exception
*/
public abstract void deleteOu(List<String> ids) throws Exception;
/**
* 更新组织
* @param org
* @throws Exception
*/
public abstract void updateOu(Organization org) throws Exception;
}
================================================
FILE: src/main/java/com/lcore/hr/menu/organization/service/impl/OrganizationServiceImpl.java
================================================
package com.lcore.hr.menu.organization.service.impl;
import java.util.Date;
import java.util.List;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import com.lcore.hr.core.entity.Root;
import com.lcore.hr.entity.Organization;
import com.lcore.hr.menu.base.service.impl.BaseServiceImpl;
import com.lcore.hr.menu.organization.service.OrganizationService;
@Service("organizationService")
@Transactional
public class OrganizationServiceImpl extends BaseServiceImpl implements
OrganizationService {
@Override
public List<Root> getOuList(int offset, int limit, String sort,
String order, String key) {
// 构造查询条件:所有字段模糊匹配
String condition = " 1=1 ";
if (key != null && !key.equals("")) {
condition = " (obj.createTime like '%" + key + "%' ";
condition += " or obj.updateTime like '%" + key + "%' ";
condition += " or obj.startTime like '%" + key + "%' ";
condition += " or obj.endTime like '%" + key + "%' ";
condition += " or obj.ouName like '%" + key + "%' ";
condition += " or obj.updater like '%" + key + "%' ";
condition += " or obj.creater like '%" + key + "%' )";
}
if (null != sort && !"".equals(sort))
condition += " order by " + " obj." + sort + "" + " " + order;
return this.getPagedObjListWithCondition(
Organization.class.getSimpleName(), condition, offset, limit);
}
@Override
public void addOu(Organization org) throws Exception {
org.setStartTime(new Date());
this.save(org);
}
@Override
public void deleteOu(List<String> ids) throws Exception {
for (String id : ids) {
if (id != null && !"".equals(id.trim()))
this.delete(Organization.class.getName(), id);
}
}
@Override
public void updateOu(Organization org) throws Exception {
this.update(org);
}
}
================================================
FILE: src/main/java/com/lcore/hr/module/listener/StartupListener.java
================================================
package com.lcore.hr.module.listener;
import java.io.IOException;
import javax.servlet.ServletContext;
import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;
import com.lcore.hr.utils.GlobalConfigHolder;
/**
* @author LCore
*/
public class StartupListener implements ServletContextListener {
public void contextDestroyed(ServletContextEvent event) {}
public void contextInitialized(ServletContextEvent event) {
ServletContext context = event.getServletContext();
try {
initSys();
} catch ( Exception e ) {
e.printStackTrace();
}
}
private void initSys() throws IOException {
GlobalConfigHolder.init();
}
}
================================================
FILE: src/main/java/com/lcore/hr/utils/Env.java
================================================
package com.lcore.hr.utils;
import com.lcore.hr.core.entity.User;
public class Env {
public User user;
public User getUser() {
return user;
}
public void setUser(User user) {
this.user = user;
}
public Env() {
}
}
================================================
FILE: src/main/java/com/lcore/hr/utils/GeneralBeanOrMapUtils.java
================================================
package com.lcore.hr.utils;
import java.beans.BeanInfo;
import java.beans.IntrospectionException;
import java.beans.Introspector;
import java.beans.PropertyDescriptor;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import java.util.HashMap;
import java.util.Map;
/**
* JavaBean和map相互转换
*/
public class GeneralBeanOrMapUtils {
/**
* 将一个 Map 对象转化为一个 JavaBean
*
* @param <T>
*
* @param clazz
* 要转化的类型
* @param map
* 包含属性值的 map
* @return 转化出来的 JavaBean 对象
* @throws IntrospectionException
* 如果分析类属性失败
* @throws IllegalAccessException
* 如果实例化 JavaBean 失败
* @throws InstantiationException
* 如果实例化 JavaBean 失败
* @throws InvocationTargetException
* 如果调用属性的 setter 方法失败
*/
public static <T> T convertMap2Bean(Class<T> clazz, Map map) throws IntrospectionException, IllegalAccessException,
InstantiationException, InvocationTargetException {
BeanInfo beanInfo = Introspector.getBeanInfo(clazz); // 获取类属性
T obj = (T) clazz.newInstance(); // 创建 JavaBean 对象
// 给 JavaBean 对象的属性赋值
PropertyDescriptor[] propertyDescriptors = beanInfo.getPropertyDescriptors();
for (int i = 0; i < propertyDescriptors.length; i++) {
PropertyDescriptor descriptor = propertyDescriptors[i];
String propertyName = descriptor.getName();
if (map.containsKey(propertyName)) {
Object value = map.get(propertyName);
Object[] args = new Object[1];
args[0] = value;
descriptor.getWriteMethod().invoke(obj, args);
}
}
return obj;
}
/**
* 将Map转换为bean
*
* @param className
* 要转换的类型名称(注意,需要加上包路径)
* @param map
* 包含属性值的 map
* @return 转化出来的 JavaBean 对象
* @throws IllegalAccessException
* @throws InstantiationException
* @throws InvocationTargetException
* @throws ClassNotFoundException
* @throws IntrospectionException
*/
public static Object convertMap2Bean(String className, Map map) throws IllegalAccessException, InstantiationException,
InvocationTargetException, ClassNotFoundException, IntrospectionException {
Class clazz = Class.forName(className);
Object obj = convertMap2Bean(clazz, map);
return obj;
}
/**
* 将一个 JavaBean 对象转化为一个 Map
*
* @param bean
* 要转化的JavaBean 对象
* @return 转化出来的 Map 对象
* @throws IntrospectionException
* 如果分析类属性失败
* @throws IllegalAccessException
* 如果实例化 JavaBean 失败
* @throws InvocationTargetException
* 如果调用属性的 setter 方法失败
*/
public static Map convertBean2Map(Object bean) throws IntrospectionException, IllegalAccessException, InvocationTargetException {
Class clazz = bean.getClass();
Map returnMap = new HashMap();
BeanInfo beanInfo = Introspector.getBeanInfo(clazz);
PropertyDescriptor[] propertyDescriptors = beanInfo.getPropertyDescriptors();
for (int i = 0; i < propertyDescriptors.length; i++) {
PropertyDescriptor descriptor = propertyDescriptors[i];
String propertyName = descriptor.getName();
if (!propertyName.equals("class")) {
Method readMethod = descriptor.getReadMethod();
Object result = readMethod.invoke(bean, new Object[0]);
if (result != null) {
returnMap.put(propertyName, result);
} else {
returnMap.put(propertyName, null);
}
}
}
return returnMap;
}
}
================================================
FILE: src/main/java/com/lcore/hr/utils/GlobalConfigHolder.java
================================================
package com.lcore.hr.utils;
import java.io.IOException;
import java.io.InputStream;
import java.util.HashMap;
import java.util.Map;
import java.util.Properties;
public class GlobalConfigHolder {
private static Map<String, String> propertiesMap = new HashMap<String, String>();
private static Env env = null;
public static Env getEnv() {
return env;
}
public static void setEnv(Env env) {
GlobalConfigHolder.env = env;
}
public static void init() throws IOException {
InputStream inputStream = GlobalConfigHolder.class.getClassLoader().getResourceAsStream("sys.properties");
Properties p = new Properties();
p.load(inputStream);
for (Object key : p.keySet()) {
GlobalConfigHolder.setProperty((String) key, (String) p.get(key));
}
}
public static Map<String, String> getPropertiesMap() {
return propertiesMap;
}
public static void setPropertiesMap(Map<String, String> propertiesMap) {
GlobalConfigHolder.propertiesMap = propertiesMap;
}
public static void setProperty(String name, String object) {
propertiesMap.put(name, object);
}
public static String getProperty(String name) {
return propertiesMap.get(name);
}
}
================================================
FILE: src/main/java/com/lcore/hr/view/ModelView.java
================================================
package com.lcore.hr.view;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.springframework.web.servlet.ModelAndView;
import com.lcore.hr.core.entity.User;
import com.lcore.hr.utils.Env;
import com.lcore.hr.utils.GlobalConfigHolder;
/**
* 视图model
* @author LCore
*
*/
public class ModelView {
/**
* 单页视图model
* @param fileName
* @param request
* @param response
* @return
*/
protected ModelAndView createSingleView(String fileName,
HttpServletRequest request, HttpServletResponse response) {
ModelAndView view = new ModelAndView();
view.addObject("basePath",GlobalConfigHolder.getProperty("basePath"));
view.setViewName(fileName);
view.addObject("Env",GlobalConfigHolder.getEnv());
return view;
}
/**
* 布局页视图model
* @param fileName
* @param layout
* @param request
* @param response
* @return
*/
protected ModelAndView createLayoutView(String fileName, String layout,
HttpServletRequest request, HttpServletResponse response) {
ModelAndView view = new ModelAndView();
if (layout != null && !layout.equals("")) {
view.setViewName(layout);
} else
view.setViewName("common/layout");
view.addObject("header_path", "common/header.vm");
view.addObject("left_path", "common/left.vm");
view.addObject("content_path", fileName + ".vm");
String path = GlobalConfigHolder.getProperty("basePath");
view.addObject("basePath",GlobalConfigHolder.getProperty("basePath"));
view.addObject("Env",GlobalConfigHolder.getEnv());
return view;
}
protected ModelAndView createLayoutView(String fileName,
HttpServletRequest request, HttpServletResponse response) {
return createLayoutView(fileName, null, request, response);
}
}
================================================
FILE: src/main/resources/i18n/messages_en.properties
================================================
#System
system.name=HR-ADMIN
#Login
login.button.login=Login
login.forgetPassword=Forget Password?
login.remember=Remember me
login.third=Third-Login
#Header
header.message=Message
header.to-list=ToDo-List
header.language=Language
header.zh_CH=Chinese
header.en=English
################Module####################
#Home
home=Home
home.dashboard=Dashboard
home.framework=Framework&Technology
================================================
FILE: src/main/resources/i18n/messages_zh.properties
================================================
#System
system.name=\u4EBA\u529B\u8D44\u6E90\u7BA1\u7406
#Login
login.button.login=\u767B\u5F55
login.forgetPassword=\u5FD8\u8BB0\u5BC6\u7801?
login.remember=\u8BB0\u4F4F\u5BC6\u7801
login.third=\u7B2C\u4E09\u65B9\u767B\u5F55
#Header
header.message=\u6D88\u606F
header.to-list=\u5F85\u529E\u4E8B\u5B9C
header.language=\u8BED\u8A00
header.zh_CH=\u4E2D\u6587
header.en=\u82F1\u6587
################Module####################
#Home
home=\u9996\u9875
home.dashboard=\u4EEA\u8868\u76D8
home.framework=\u6846\u67B6\u6280\u672F\u4ECB\u7ECD
================================================
FILE: src/main/resources/jdbc.properties
================================================
jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost/hr
jdbc.username=root
jdbc.password=root
================================================
FILE: src/main/resources/log4j.properties
================================================
# Rules reminder:
# DEBUG < INFO < WARN < ERROR < FATAL
# Global logging configuration
log4j.rootLogger=info, stdout,DefLog
# My logging configuration...
log4j.logger.org.mybatis.jpetstore=INFO
## Console output...
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%5p %d %C: %m%n
## File output...
og4j.appender.DefLog=org.apache.log4j.RollingFileAppender
log4j.appender.DefLog.File=${catalina.home}/logs/flow.log
log4j.appender.DefLog.DatePattern='.'yyyy-MM-dd'.log'
log4j.appender.DefLog.maxBackupIndex=10
log4j.appender.DefLog.maxFileSize=10MB
log4j.appender.DefLog.Append=true
log4j.appender.DefLog.layout=org.apache.log4j.PatternLayout
log4j.appender.DefLog.layout.ConversionPattern=%5p [%t] [%d] (%c) - %m%n
================================================
FILE: src/main/resources/spring-common.xml
================================================
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context"
xmlns:p="http://www.springframework.org/schema/p" xmlns:tx="http://www.springframework.org/schema/tx"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.1.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-3.1.xsd
http://www.springframework.org/schema/tx
http://www.springframework.org/schema/tx/spring-tx-3.1.xsd"
default-autowire="byName">
<bean id="springContextHelper" class="com.lcore.hr.core.utils.SpringFactory">
</bean>
<context:property-placeholder location="classpath:jdbc.properties" />
<context:component-scan base-package="com.lcore.hr" />
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource"
p:driverClassName="${jdbc.driver}" p:url="${jdbc.url}" p:username="${jdbc.username}"
p:password="${jdbc.password}" />
<bean id="sessionFactory"
class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean">
<property name="dataSource" ref="dataSource" />
<property name="hibernateProperties">
<props>
<prop key="hibernate.dialect">org.hibernate.dialect.MySQLDialect</prop>
<!-- <prop key="hibernate.current_session_context_class">thread</prop> -->
<prop key="hibernate.hbm2ddl.auto">update</prop>
<prop key="hibernate.show_sql">true</prop>
<prop key="hibernate.format_sql">false</prop>
</props>
</property>
<property name="packagesToScan">
<list>
<value>com.lcore.hr.core.entity</value>
<value>com.lcore.hr.entity</value>
</list>
</property>
</bean>
<!-- JDBC模板 -->
<bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
<property name="dataSource" ref="dataSource" />
</bean>
<!-- Hibernate模板 -->
<bean id="hibernateTemplate" class="org.springframework.orm.hibernate3.HibernateTemplate">
<property name="sessionFactory" ref="sessionFactory" />
</bean>
<!-- 配置事务 -->
<bean id="transactionManager"
class="org.springframework.orm.hibernate3.HibernateTransactionManager">
<property name="sessionFactory" ref="sessionFactory" />
</bean>
<!-- 配置注解性事务 -->
<tx:annotation-driven transaction-manager="transactionManager"></tx:annotation-driven>
<!-- 国际化配置 -->
<bean id="messageSource"
class="org.springframework.context.support.ResourceBundleMessageSource">
<!-- 国际化信息资源文件所在的目录 -->
<property name="basename" value="i18n.messages" />
<!-- 找不到对应的代码信息,就用这个代码作为标识 -->
<property name="useCodeAsDefaultMessage" value="true" />
</bean>
<!-- 数据库保存的密码是使用MD5算法加密的,所以这里需要配置一个密码匹配对象 -->
<bean id="credentialsMatcher" class="org.apache.shiro.authc.credential.Md5CredentialsMatcher"></bean>
<!-- 缓存管理 -->
<bean id="cacheManager" class="org.apache.shiro.cache.MemoryConstrainedCacheManager"></bean>
<!-- 使用Shiro自带的JdbcRealm类 指定密码匹配所需要用到的加密对象 指定存储用户、角色、权限许可的数据源及相关查询语句 -->
<bean id="jdbcRealm" class="org.apache.shiro.realm.jdbc.JdbcRealm">
<property name="credentialsMatcher" ref="credentialsMatcher"></property>
<property name="permissionsLookupEnabled" value="true"></property>
<property name="dataSource" ref="dataSource"></property>
<property name="authenticationQuery"
value="SELECT password,id FROM t_user WHERE userName = ?"></property>
<property name="userRolesQuery"
value="SELECT role_name from sec_user_role left join sec_role using(role_id) left join sec_user using(user_id) WHERE user_name = ?"></property>
<property name="permissionsQuery"
value="SELECT permission_name FROM sec_role_permission left join sec_role using(role_id) left join sec_permission using(permission_id) WHERE role_name = ?">
</property>
</bean>
<bean id="sessionIdCookie" class="org.apache.shiro.web.servlet.SimpleCookie">
<constructor-arg value="sid" />
<property name="httpOnly" value="true" />
<property name="maxAge" value="-1" />
</bean>
<!-- remenberMe配置 -->
<bean id="rememberMeCookie" class="org.apache.shiro.web.servlet.SimpleCookie">
<constructor-arg value="rememberMe" />
<property name="httpOnly" value="true" />
<!-- 默认记住7天(单位:秒) -->
<property name="maxAge" value="604800" />
</bean>
<!-- rememberMe管理器 -->
<bean id="rememberMeManager" class="org.apache.shiro.web.mgt.CookieRememberMeManager">
<property name="cipherKey"
value="#{T(org.apache.shiro.codec.Base64).decode('4AvVhmFLUs0KTA3Kprsdag==')}" />
<property name="cookie" ref="rememberMeCookie" />
</bean>
<!-- Shiro安全管理器 -->
<bean id="securityManager" class="org.apache.shiro.web.mgt.DefaultWebSecurityManager">
<property name="realm" ref="jdbcRealm"></property>
<property name="cacheManager" ref="cacheManager"></property>
<property name="rememberMeManager" ref="rememberMeManager" />
</bean>
<!-- Shiro主过滤器本身功能十分强大,其强大之处就在于它支持任何基于URL路径表达式的、自定义的过滤器的执行 Web应用中,Shiro可控制的Web请求必须经过Shiro主过滤器的拦截,Shiro对基于Spring的Web应用提供了完美的支持 -->
<bean id="shiroFilter" class="org.apache.shiro.spring.web.ShiroFilterFactoryBean">
<!-- Shiro的核心安全接口,这个属性是必须的 -->
<property name="securityManager" ref="securityManager"></property>
<!-- 要求登录时的链接(登录页面地址),非必须的属性,默认会自动寻找Web工程根 目录下的"/login.jsp"页面 -->
<property name="loginUrl" value="/"></property>
<!-- 登录成功后要跳转的连接(本例中此属性用不到,因为登录成功后的处理逻辑在LoginController里硬编码) -->
<!-- <property name="successUrl" value="/" ></property> -->
<!-- 用户访问未对其授权的资源时,所显示的连接 -->
<property name="unauthorizedUrl" value="/"></property>
<property name="filterChainDefinitions">
<value>
/auth/** = authc
</value>
</property>
</bean>
<!-- 开启Shiro的注解(如@RequiresRoles,@RequiresPermissions),需借助SpringAOP扫描使用Shiro注解的类,
并在必要时进行安全逻辑验证 -->
<!-- <bean class="org.springframework.aop.framework.autoproxy.DefaultAdvisorAutoProxyCreator"></bean>
<bean class="org.apache.shiro.spring.security.interceptor.AuthorizationAttributeSourceAdvisor">
<property name="securityManager" ref="securityManager"></property> </bean> -->
<!-- shiro生命周期管理 -->
<bean id="lifecycleBeanPostProcessor" class="org.apache.shiro.spring.LifecycleBeanPostProcessor"></bean>
</beans>
================================================
FILE: src/main/resources/spring-mvc.xml
================================================
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context"
xmlns:mvc="http://www.springframework.org/schema/mvc"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.1.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-3.1.xsd
http://www.springframework.org/schema/mvc
http://www.springframework.org/schema/mvc/spring-mvc-3.1.xsd">
<!-- 注解扫描包 -->
<context:component-scan base-package="com.lcore.hr.menu.*.controller" />
<!-- 启动spring mvc的注解功能,完成请求和注解POJO的映射 -->
<bean
class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter">
<!-- 配置信息转换,将用@responsebody注解的返回值转换为json返回前台,编码为utf-8 -->
<property name="messageConverters">
<list>
</list>
</property>
</bean>
<mvc:annotation-driven>
<!-- 处理responseBody 里面日期类型 -->
<mvc:message-converters>
<bean
class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter">
<property name="objectMapper">
<bean class="com.fasterxml.jackson.databind.ObjectMapper">
<property name="dateFormat">
<bean class="java.text.SimpleDateFormat">
<constructor-arg type="java.lang.String" value="yyyy-MM-dd" />
</bean>
</property>
</bean>
</property>
</bean>
</mvc:message-converters>
</mvc:annotation-driven>
<!-- 静态资源(js/image)的访问 -->
<mvc:resources mapping="/static/**" location="/static/" />
<!-- 国际化配置 -->
<bean id="localeResolver"
class="org.springframework.web.servlet.i18n.CookieLocaleResolver">
<!-- 设置cookieName名称,可以根据名称通过js来修改设置,默认的名称为 类名+.LOCALE如上图 -->
<!-- <property name="cookieName" value="lang" /> -->
<!-- 设置最大有效时间,如果是-1,则不存储,浏览器关闭后即失效,默认为Integer.MAX_INT -->
<!-- <property name="cookieMaxAge" value="100000" /> -->
<!-- 设置cookie可见的地址,默认是“/”即对网站所有地址都是可见的,如果设为其它地址,则只有该地址或其后的地址才可见 -->
<property name="cookiePath" value="/" />
</bean>
<!-- <mvc:interceptors> -->
<!-- <bean class="org.springframework.web.servlet.i18n.LocaleChangeInterceptor" /> -->
<!-- <mvc:interceptor> -->
<!-- <mvc:mapping path="/index" /> -->
<!-- <mvc:mapping path="/ou/*" /> -->
<!-- <mvc:mapping path="/auth/*/*" /> -->
<!-- <bean class="com.lcore.hr.interceptor.SecurityInterceptor" /> -->
<!-- </mvc:interceptor> -->
<!-- </mvc:interceptors> -->
<!-- 定义视图解析器 -->
<!-- 配置velocity引擎处理请求 -->
<bean id="velocityConfigurer"
class="org.springframework.web.servlet.view.velocity.VelocityConfigurer">
<!-- <property name="configLocation"> <value>/WEB-INF/toolbox.xml</value>
</property> -->
<property name="resourceLoaderPath">
<value>/WEB-INF/views/</value>
</property>
<property name="velocityProperties">
<props>
<prop key="input.encoding">UTF-8</prop>
<prop key="output.encoding">UTF-8</prop>
</props>
</property>
</bean>
<!-- 配置velocity视图解析器 -->
<bean id="viewResolver"
class="org.springframework.web.servlet.view.velocity.VelocityViewResolver">
<property name="suffix">
<value>.vm</value>
</property>
<property name="contentType" value="text/html;charset=UTF-8"></property>
</bean>
</beans>
================================================
FILE: src/main/resources/sys.properties
================================================
basePath=/hr
================================================
FILE: src/main/webapp/WEB-INF/views/admin/index.vm
================================================
<ol class="breadcrumb" style="margin-bottom:2px;">
<li><a href="#">#springMessage("home")</a>
</li>
<li><a href="#">#springMessage("home.framework")</a>
</li>
</ol>
<div style="margin-left:20px;margin-right:10px;">
<div class="portal">
<h3>前端</h3>
<div class="portalPanel">
<h3>jQuery</h3>
</div>
<div class="portalPanel">
<h3>Bootstrap</h3>
</div>
<div class="portalPanel">
<h3>EasyUI</h3>
</div>
<div class="portalPanel">
<h3>BootstrapTable</h3>
</div>
<div class="portalPanel">
<h3>Velocity</h3>
</div>
<div class="portalPanel">
<h3>插件</h3>
</div>
<div class="portalPanel">
<h3>...</h3>
</div>
</div>
<div class="portal">
<h3>后端</h3>
<div class="portalPanel">
<h3>Hibernate(ORM)</h3>
</div>
<div class="portalPanel">
<h3>Spring(IOC容器)</h3>
</div>
<div class="portalPanel">
<h3>Spring MVC(MVC框架)</h3>
</div>
<div class="portalPanel">
<h3>Activiti(工作流引擎)</h3>
</div>
<div class="portalPanel">
<h3>待续</h3>
</div>
</div>
</div>
================================================
FILE: src/main/webapp/WEB-INF/views/auth/module/addModule.vm
================================================
<style>
.ctable {
border: 0px;
}
.ctable tr {
border: 0px;
}
.ctable td {
text-align: right;
padding: 5px;
border: 0px;
}
</style>
<div class="modal-dialog" style="display: inline-block; width: auto;">
<div class="modal-content">
<div class="modal-header text-left">
<button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">×</span>
</button>
<h4 class="modal-title" id="addModuleModalLabel">添加模块</h4>
</div>
<div class="modal-body">
<table class="ctable">
<tr>
<td>
<label for="addModuleName">模块名</label>
<input type="text" id="addModuleName">
</td>
<td>
<label for="addName">名称(国际化)</label>
<input type="text" id="addName">
</td>
<td>
<label for="addModuleParent">父模块</label>
<input type="text" id="addModuleParent">
</td>
</tr>
<tr>
<td>
<label for="addModuleTarget">Target</label>
<input type="text" id="addModuleTarget">
</td>
<td>
<label for="addIndexNum">序号</label>
<input type="text" id="addIndexNum">
</td>
<td>
</td>
</tr>
</table>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-danger" data-dismiss="modal">关闭</button>
<button type="submit" class="btn btn-success" id="addModule">确定</button>
</div>
</div>
</div>
<script>
$(function() {
$("#addModuleParent").combobox({
url:'${basePath}/auth/module/getModuleListDropDown',
valueField: 'id',
textField: 'moduleName',
panelMaxHeight: 360,
panelHeight: 'auto',
height: 30,
width: 155
});
$("#addModule").on("click", function() {
var obj = new Object();
obj.moduleName = $("#addModuleName").val();
obj.name = $("#addName").val();
obj.target = $("#addModuleTarget").val();
obj.parentId = $("#addModuleParent").combobox("getValue");
obj.indexNum = $("#addIndexNum").val();
$.ajax({
url: '${basePath}/auth/module/addModule',
data: obj,
method: 'post',
dataType: 'json',
complete: function(jqXHR, textStatus) {
$("#addModuleModal").modal("hide");
}
});
});
});
</script>
================================================
FILE: src/main/webapp/WEB-INF/views/auth/module/moduleList.easyui.vm
================================================
<ol class="breadcrumb" style="margin-bottom:2px;">
<li><a href="#">首页</a>
</li>
<li><a href="#">权限管理</a>
</li>
<li><a href="#">模块管理</a>
</li>
</ol>
<!-- Modal -->
<div class="modal fade text-center" id="addModuleModal"></div>
<div class="modal fade text-center" id="updateModuleModal"></div>
<div id="toolbar" class="toolbuttonbar">
<button type="button" class="btn btn-default" id="save">
<i class="glyphicon glyphicon-floppy-save"></i>
</button>
<button class="btn btn-default" id="add" data-backdrop="false" data-url="${basePath}/auth/module/addModuleView" href="#addModuleModal" data-toggle="modal">
<i class="glyphicon glyphicon-plus"></i>
</button>
<button class="btn btn-default" id="edit" data-backdrop="false" data-url="${basePath}/auth/module/updateModuleView" href="#updateModuleModal" data-toggle="modal">
<i class="glyphicon glyphicon-edit"></i>
</button>
<button type="button" class="btn btn-default" id="delete">
<i class="glyphicon glyphicon-remove-circle"></i>
</button>
</div>
<table id="moduleList">
</table>
<script>
$(function() {
/****************右方树型表格**************************/
$('#moduleList').treegrid({
url:"${basePath}/auth/module/getModuleList",
method: 'post',
width: '100%',
height: 500,
nowrap: true,
idField: 'id',
treeField: 'moduleName',
singleSelect: true,
toolbar:'#toolbar',
columns: [[
{
title:'模块名称',
field:'moduleName',
width: "15%",
halign:'center'
},
{
title:'indexNum',
field:'indexNum',
width: "15%",
halign:'center'
},
{
title:'target',
field:'target',
width: "10%",
halign:'center'
},
{
title:'name',
field:'name',
width: "10%",
halign:'center'
}
]]
});
})
</script>
================================================
FILE: src/main/webapp/WEB-INF/views/auth/module/moduleList.vm
================================================
<ol class="breadcrumb" style="margin-bottom:2px;">
<li><a href="#">首页</a>
</li>
<li><a href="#">权限管理</a>
</li>
<li><a href="#">模块管理</a>
</li>
</ol>
<!-- Modal -->
<div class="modal fade text-center" id="addModuleModal"></div>
<div class="modal fade text-center" id="updateModuleModal"></div>
<div id="toolbar" class="btn-group">
<button type="button" class="btn btn-default" id="save">
<i class="glyphicon glyphicon-floppy-save"></i>
</button>
<button class="btn btn-default" id="add" data-backdrop="false" data-url="${basePath}/auth/module/addModuleView" href="#addModuleModal" data-toggle="modal">
<i class="glyphicon glyphicon-plus"></i>
</button>
<button class="btn btn-default" id="edit" data-backdrop="false" data-url="${basePath}/auth/module/updateModuleView" href="#updateModuleModal" data-toggle="modal">
<i class="glyphicon glyphicon-edit"></i>
</button>
<button type="button" class="btn btn-default" id="delete">
<i class="glyphicon glyphicon-remove-circle"></i>
</button>
</div>
<table id="moduleList" data-toggle="table" data-url="${basePath}/auth/module/getModuleList" data-show-header="true" data-show-refresh="true" data-show-columns="false" data-pagination="true" data-side-pagination="server" data-height="520" data-show-export="true" data-show-paginationSwitch="true" data-pagination-detail-h-align="left" data-pagination-h-align="right" data-click-to-select="true"
data-toolbar="#toolbar">
<thead>
<tr>
<th data-field="state" data-checkbox="true"></th>
<th data-field="id" data-visible="false">id</th>
<th data-field="parentId" data-visible="false">parentId</th>
<th data-field="moduleName" data-sortable="true" data-editable="false">模块名称</th>
<th data-field="name" data-sortable="false">名称(国际化)</th>
<th data-field="indexNum" data-sortable="false">序号</th>
<th data-field="target" data-sortable="false">Target</th>
<th data-field="parentName">父模块名称</th>
<th data-field="creater" data-sortable="false" >创建人</th>
<th data-field="createTime" data-sortable="false" >创建日期</th>
<th data-field="updater" data-sortable="false">更新人</th>
<th data-field="updateTime" data-sortable="false">更新日期</th>
</tr>
</thead>
</table>
<script>
$("#moduleList").bootstrapTable({
height:$(window).height()-130
});
$(function() {
//排序事件
$("#moduleList").on('sort.bs.table', function(name, order) {
$(this).bootstrapTable("getOptions").pageNumber = 1; //默认排序从第一页开始
});
//添加模块
$("#add").on("click",function(){
$("#addModuleModal").load($(this).attr("data-url"));
$('#addModuleModal').on('hidden.bs.modal', function (e) {
search();
})
});
//更新模块
$("#edit").on("click", function() {
var data = $("#moduleList").bootstrapTable("getSelections");
if (data.length > 1||data.length<1) {
new $.flavr({
animateEntrance: "rollIn",
animateClosing: "rollOut",
content: '请选择一条记录',
autoclose: true,
timeout: 3000
});
$('#updateModuleModal').modal({backdrop:false});//去掉蒙板
return;
}else{
$("#updateModuleModal").load($(this).attr("data-url"));
$('#updateModuleModal').on('hidden.bs.modal', function (e) {
search();
});
}
});
//删除模块
$("#delete").on("click", function() {
var datas = $("#moduleList").bootstrapTable("getSelections");
var ids = "";
var i = 0;
if (datas.length < 1) {
new $.flavr({
animateEntrance: "rollIn",
animateClosing: "rollOut",
content: '请选择一条记录',
autoclose: true,
timeout: 3000
});
return;
}
for (i = 0; i < datas.length; i++) {
ids += datas[i].id + ",";
}
$.ajax({
url: '${basePath}/auth/module/deleteModule?ids=' + ids,
method: 'post',
dataType: 'json',
complete: function(jqXHR, textStatus) {
search();
}
});
});
})
</script>
================================================
FILE: src/main/webapp/WEB-INF/views/auth/module/updateModule.vm
================================================
<style>
.utable {
border: 0px;
}
.utable tr {
border: 0px;
}
.utable td {
text-align: right;
padding: 5px;
border: 0px;
}
</style>
<div class="modal-dialog" style="display: inline-block; width: auto;">
<div class="modal-content">
<div class="modal-header text-left">
<button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">×</span>
</button>
<h4 class="modal-title" id="updateModuleModalLabel">更新模块</h4>
</div>
<div class="modal-body">
<table class="utable">
<tr style="border: 0px;">
<td>
<label for="updateModuleName">模块名</label>
<input type="text" id="updateModuleName">
</td>
<td>
<label for="updateName">名称(国际化)</label>
<input type="text" id="updateName">
</td>
<td>
<label for="updateModuleParent">父模块</label>
<input type="text" id="updateModuleParent">
</td>
</tr>
<tr>
<td>
<label for="updateModuleTarget">Target</label>
<input type="text" id="updateModuleTarget">
</td>
<td>
<label for="updateIndexNum">序号</label>
<input type="text" id="updateIndexNum">
</td>
<td>
</td>
</tr>
</table>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-danger" data-dismiss="modal">关闭</button>
<button type="submit" class="btn btn-success" id="updateModule">确定</button>
</div>
</div>
</div>
<script>
$(function() {
var data = $("#moduleList").bootstrapTable("getSelections")[0];
$("#updateModuleName").val(data.moduleName);
$("#updateName").val(data.name);
$("#updateModuleTarget").val(data.target);
$("#updateIndexNum").val(data.indexNum);
$("#updateModuleParent").combobox({
url:'${basePath}/auth/module/getModuleListDropDown',
valueField: 'id',
textField: 'moduleName',
panelMaxHeight: 360,
panelHeight: 'auto',
height: 30,
width: 155,
disabled:true,
editable:false,
onLoadSuccess:function(){
$(this).combobox("setValue",data.parentId);
}
});
$("#updateModule").on("click", function() {
var obj = new Object();
obj.moduleName = $("#updateModuleName").val();
obj.name = $("#updateName").val();
obj.target = $("#updateModuleTarget").val();
obj.parentId = $("#updateModuleParent").combobox("getValue");
obj.indexNum = $("#updateIndexNum").val();
var data = $("#moduleList").bootstrapTable("getSelections")[0];
obj.id = data.id;
$.ajax({
url: '${basePath}/auth/module/updateModule',
data: obj,
method: 'post',
dataType: 'json',
complete: function(jqXHR, textStatus) {
$("#updateModuleModal").modal("hide");
}
});
});
});
</script>
================================================
FILE: src/main/webapp/WEB-INF/views/auth/role/addRole.vm
================================================
<div class="modal-dialog" style="display: inline-block; width: auto;">
<div class="modal-content">
<div class="modal-header text-left">
<button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">×</span>
</button>
<h4 class="modal-title" id="addRoleModalLabel">添加角色</h4>
</div>
<div class="modal-body">
<form class="form-inline">
<div class="form-group">
<label for="addRoleName">角色名</label>
<input type="text" class="form-control" id="addRoleName" btvd-type="mail" btvd-class='btvdclass' btvd-err="data-邮箱格式不正确!">
</div>
<div class="form-group">
<label for="addRoleRemark">角色描述</label>
<input type="text" class="form-control" id="addRoleRemark" btvd-type="mail" btvd-class='btvdclass' btvd-err="data-邮箱格式不正确!">
</div>
</form>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-danger" data-dismiss="modal">关闭</button>
<button type="submit" class="btn btn-success" id="addRole">添加</button>
</div>
</div>
</div>
<script>
$(function() {
$("#addRole").on("click", function() {
var obj = new Object();
obj.name = $("#addRoleName").val();
obj.remark = $("#addRoleRemark").val();
$.ajax({
url: '${basePath}/auth/role/addRole',
data: obj,
method: 'post',
dataType: 'json',
complete: function(jqXHR, textStatus) {
$("#addRoleModal").modal("hide");
}
});
});
});
</script>
================================================
FILE: src/main/webapp/WEB-INF/views/auth/role/roleAllocation.vm
================================================
<ol class="breadcrumb" style="margin-bottom:2px;">
<li><a href="#">首页</a>
</li>
<li><a href="#">权限管理</a>
</li>
<li><a href="#">角色分配</a>
</li>
</ol>
<div class="container-fluid">
<div class="row">
<div class="col-md-4">
<table id="roleList" data-cache="false" data-toggle="table" data-url="${basePath}/auth/role/getRoleList?search" data-sort-name="name" data-sort-order="desc" data-show-header="true" data-pagination="true" data-side-pagination="server" data-page-list="[10,20]" data-height="test()" data-show-export="false" data-show-paginationSwitch="true" data-pagination-detail-h-align="left" data-pagination-h-align="right" data-click-to-select="true" data-single-select="true">
<thead>
<tr>
<th data-field="state" data-checkbox="true"></th>
<th data-field="id" data-visible="false">id</th>
<th data-field="name" data-sortable="true" data-editable="false">角色名</th>
<th data-field="remark" data-sortable="true" data-editable="false">描述</th>
</tr>
</thead>
</table>
<div style="margin-top:10px;text-align:right">
<button class="btn btn-success" id="save" data-backdrop="false" data-url="${basePath}/auth/role/updateRoleView" href="#updateRoleModal" data-toggle="modal">
确定
</button>
<button class="btn btn-info" id="edit" data-backdrop="false" data-url="${basePath}/auth/role/updateRoleView" href="#updateRoleModal" data-toggle="modal">
重置
</button>
</div>
</div>
<div class="col-md-8">
<table id="userList" data-cache="false" data-toggle="table" data-url="${basePath}/auth/role/getUserListByRoleId?search=" data-response-handler="responseHandler" data-sort-name="userName" data-sort-order="desc" data-show-header="true" data-pagination="true" data-side-pagination="server" data-page-list="[10,20]" data-height="500" data-show-paginationSwitch="true" data-pagination-detail-h-align="left" data-pagination-h-align="right" data-click-to-select="true">
<thead>
<tr>
<th data-field="state" data-checkbox="true"></th>
<th data-field="id" data-visible="false">id</th>
<th data-field="userName" data-sortable="true" data-editable="false">用户名</th>
<th data-field="gender" data-sortable="true" data-formatter="formatGender">性别</th>
<th data-field="creater" data-sortable="true">创建人</th>
<th data-field="createTime" data-sortable="true">创建日期</th>
<th data-field="updater" data-sortable="true">更新人</th>
<th data-field="updateTime" data-sortable="true">更新日期</th>
</tr>
</thead>
</table>
</div>
</div>
</div>
<script>
var $table = $('#userList');
var selections = new Array();;
$(function() {
$("#roleList").bootstrapTable().on("click-row.bs.table", function(e, row, $element) {
var options = $("#userList").bootstrapTable("getOptions");
selections = new Array();
options.pageNumber = 1;
options.url = "${basePath}/auth/role/getUserListByRoleId?search=&roleId=" + row.id;
$("#userList").bootstrapTable("refresh", {
query: {
offset: 0
}
});
});
$("#userList").bootstrapTable().on("load-success.bs.table", function(e, data) {
var roleId = $("#roleList").bootstrapTable("getSelections");
if (!roleId || roleId.length == 0) {
return;
}
var rows = data.rows;
for (var index = 0; index < rows.length; index++) {
if (rows[index].selected == true) {
$("#userList").bootstrapTable("check", index)
}
}
});
$("#userList").bootstrapTable().on("check.bs.table check-all.bs.table",function(){
selections = $.merge(selections,getIdSelections());
selections.sort();
selections = $.unique(selections);
});
});
$("#save").on("click", function() {
var roleId = $("#roleList").bootstrapTable("getSelections")[0].id;
if (!roleId) {
return;
}
var userList = $("#userList").bootstrapTable("getSelections");
var userIds = new Array();
for (var i = 0; i < userList.length; i++) {
userIds.push(userList[i].id);
}
$.ajax({
url: '${basePath}/auth/role/updateRoleToUserRel?roleId=' + roleId + "&userIds=" + selections,
method: 'post',
dataType: 'json',
complete: function(jqXHR, textStatus) {
new $.flavr({
animateEntrance: "rollIn",
animateClosing: "rollOut",
content: '分配成功',
autoclose: true,
timeout: 3000
});
$("#roleList").bootstrapTable("refresh");
//clear
selections = new Array();
var options = $("#userList").bootstrapTable("getOptions");
options.pageNumber = 1;
options.url = "${basePath}/auth/role/getUserListByRoleId?search=&roleId=";
$("#userList").bootstrapTable("refresh");
}
});
});
function getIdSelections() {
return $.map($table.bootstrapTable('getSelections'), function(row) {
return row.id
});
}
function responseHandler(res) {
$.each(res.rows, function(i, row) {
row.state = $.inArray(row.id, selections) !== -1;
});
return res;
}
$("#roleList").bootstrapTable({
height:$(window).height()-240
});
$("#userList").bootstrapTable({
height:$(window).height()-160
});
</script>
================================================
FILE: src/main/webapp/WEB-INF/views/auth/role/roleList.vm
================================================
<ol class="breadcrumb" style="margin-bottom:2px;">
<li><a href="#">首页</a>
</li>
<li><a href="#">权限管理</a>
</li>
<li><a href="#">角色管理</a>
</li>
</ol>
<!-- Modal -->
<div class="modal fade text-center" id="addRoleModal"></div>
<div class="modal fade text-center" id="updateRoleModal"></div>
<div id="toolbar" class="btn-group">
<input class="form-" type="text" placeholder="角色名/描述" style="float:left" id="searchBox" />
<button type="button" class="btn btn-default" id="search" style="margin-left:5px;">
<i class="glyphicon glyphicon-search"></i>
</button>
<button type="button" class="btn btn-default" id="save">
<i class="glyphicon glyphicon-floppy-save"></i>
</button>
<button class="btn btn-default" id="add" data-backdrop="false" data-url="${basePath}/auth/role/addRoleView" href="#addRoleModal" data-toggle="modal">
<i class="glyphicon glyphicon-plus"></i>
</button>
<button class="btn btn-default" id="edit" data-backdrop="false" data-url="${basePath}/auth/role/updateRoleView" href="#updateRoleModal" data-toggle="modal">
<i class="glyphicon glyphicon-edit"></i>
</button>
<button type="button" class="btn btn-default" id="delete">
<i class="glyphicon glyphicon-remove-circle"></i>
</button>
</div>
<table id="roleList" data-cache="false" data-toggle="table" data-url="${basePath}/auth/role/getRoleList?search" data-sort-name="name" data-sort-order="desc" data-show-header="true" data-show-refresh="true" data-show-columns="true" data-pagination="true" data-side-pagination="server" data-page-list="[10,20]" data-page-size="20" data-height="test()" data-show-export="false" data-toolbar="#toolbar" data-show-paginationSwitch="true" data-pagination-detail-h-align="left" data-pagination-h-align="right" data-click-to-select="true">
<thead>
<tr>
<th data-field="state" data-checkbox="true"></th>
<th data-field="id" data-visible="false">id</th>
<th data-field="name" data-sortable="true" data-editable="false">角色名</th>
<th data-field="remark" data-sortable="true" data-editable="false">描述</th>
<th data-field="creater" data-sortable="true">创建人</th>
<th data-field="createTime" data-sortable="true" >创建日期</th>
<th data-field="updater" data-sortable="true">更新人</th>
<th data-field="updateTime" data-sortable="true">更新日期</th>
</tr>
</thead>
</table>
<script>
$("#roleList").bootstrapTable({
height:$(window).height()-120
});
$(function() {
//搜索事件
$("#search").on("click", function() {
search();
});
function search() {
var $table = $("#roleList");
var searchText = $("#searchBox").val();
$.post("${basePath}/auth/role/getRoleList", {
search: searchText,
limit: 20,
offset: 0,
order: "desc",
sort: 'name'
}, function(res) {
$table.bootstrapTable("getOptions").pageNumber = 1; //默认排序从第一页开始
$table.bootstrapTable('load', res);
});
}
//排序事件
$("#userList").on('sort.bs.table', function(name, order) {
$(this).bootstrapTable("getOptions").pageNumber = 1; //默认排序从第一页开始
});
//添加角色
$("#add").on("click",function(){
$("#addRoleModal").load($(this).attr("data-url"));
$('#addRoleModal').on('hidden.bs.modal', function (e) {
search();
})
});
//更新角色
$("#edit").on("click", function() {
var data = $("#roleList").bootstrapTable("getSelections");
if (data.length > 1||data.length<1) {
new $.flavr({
animateEntrance: "rollIn",
animateClosing: "rollOut",
content: '请选择一条记录',
autoclose: true,
timeout: 3000
});
$('#updateRoleModal').modal({backdrop:false});//去掉蒙板
return;
}else{
$("#updateRoleModal").load($(this).attr("data-url"));
$('#updateRoleModal').on('hidden.bs.modal', function (e) {
search();
});
}
});
//删除角色
$("#delete").on("click", function() {
var datas = $("#roleList").bootstrapTable("getSelections");
var ids = "";
var i = 0;
if (datas.length < 1) {
new $.flavr({
animateEntrance: "rollIn",
animateClosing: "rollOut",
content: '请选择一条记录',
autoclose: true,
timeout: 3000
});
return;
}
for (i = 0; i < datas.length; i++) {
ids += datas[i].id + ",";
}
$.ajax({
url: '${basePath}/auth/role/deleteRole?ids=' + ids,
method: 'post',
dataType: 'json',
complete: function(jqXHR, textStatus) {
search();
}
});
});
})
</script>
================================================
FILE: src/main/webapp/WEB-INF/views/auth/role/updateRole.vm
================================================
<div class="modal-dialog" style="display: inline-block; width: auto;">
<div class="modal-content">
<div class="modal-header text-left">
<button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">×</span>
</button>
<h4 class="modal-title" id="updateRoleModalLabel">更新角色</h4>
</div>
<div class="modal-body">
<form class="form-inline">
<div class="form-group">
<label for="updateRoleName">角色名</label>
<input type="text" class="form-control" id="updateRoleName" btvd-type="mail" btvd-class='btvdclass' btvd-err="data-邮箱格式不正确!">
</div>
<div class="form-group">
<label for="updateRoleRemark">角色描述</label>
<input type="text" class="form-control" id="updateRoleRemark" btvd-type="mail" btvd-class='btvdclass' btvd-err="data-邮箱格式不正确!">
</div>
</form>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-danger" data-dismiss="modal">关闭</button>
<button type="submit" class="btn btn-success" id="updateRole">更新</button>
</div>
</div>
</div>
<script>
$(function() {
var data = $("#roleList").bootstrapTable("getSelections")[0];
$("#updateRoleName").val(data.name);
$("#updateRoleRemark").val(data.remark);
$("#updateRole").on("click", function() {
var obj = new Object();
data.name = $("#updateRoleName").val();
data.remark = $("#updateRoleRemark").val();
$.ajax({
url: '${basePath}/auth/role/updateRole',
data: data,
method: 'post',
dataType: 'json',
complete: function(jqXHR, textStatus) {
$("#updateRoleModal").modal("hide");
}
});
});
});
</script>
================================================
FILE: src/main/webapp/WEB-INF/views/auth/user/addUser.vm
================================================
<div class="modal-dialog" style="display: inline-block; width: auto;">
<div class="modal-content">
<div class="modal-header text-left">
<button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">×</span>
</button>
<h4 class="modal-title" id="addUserModalLabel">添加用户</h4>
</div>
<div class="modal-body">
<form class="form-inline">
<div class="form-group">
<label for="addUserName">用户名</label>
<input type="text" class="form-control" id="addUserName" btvd-type="mail" btvd-class='btvdclass' btvd-err="data-邮箱格式不正确!">
</div>
<div class="form-group">
<label for="addUserPassword">密码</label>
<div class="input-group">
<input type="text" value="6666" class="form-control" id="addUserPassword">
</div>
</div>
<div class="form-group">
<input type="radio" name="addGender" data-labelauty="男" value="male" checked="checked">
<input type="radio" name="addGender" data-labelauty="女" value="female">
</div>
</form>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-danger" data-dismiss="modal">关闭</button>
<button type="submit" class="btn btn-success" id="addUser">添加</button>
</div>
</div>
</div>
<script>
$(function() {
$(':input[name=addGender]').labelauty();
$("#addUser").on("click", function() {
var obj = new Object();
obj.userName = $("#addUserName").val();
obj.password = md5($("#addUserPassword").val());
obj.gender = $("input[name='addGender']:checked").val();
$.ajax({
url: '${basePath}/auth/user/addUser',
data: obj,
method: 'post',
dataType: 'json',
complete: function(jqXHR, textStatus) {
$("#addUserModal").modal("hide");
}
});
});
});
</script>
================================================
FILE: src/main/webapp/WEB-INF/views/auth/user/updateUser.vm
================================================
<div class="modal-dialog" style="display: inline-block; width: auto;">
<div class="modal-content">
<div class="modal-header text-left">
<button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">×</span>
</button>
<h4 class="modal-title" id="updateUserModalLabel">更新用户</h4>
</div>
<div class="modal-body">
<form class="form-inline">
<div class="form-group">
<label for="updateUserName">用户名</label>
<input type="text" class="form-control" id="updateUserName" btvd-type="mail" btvd-class='btvdclass' btvd-err="data-邮箱格式不正确!">
</div>
<div class="form-group">
<label for="updateUserPassword">密码</label>
<div class="input-group">
<input type="text" class="form-control" id="updateUserPassword">
</div>
</div>
<div class="form-group">
<input type="radio" name="updateGender" data-labelauty="男" value="male" checked="checked">
<input type="radio" name="updateGender" data-labelauty="女" value="female">
</div>
</form>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-danger" data-dismiss="modal">关闭</button>
<button type="submit" class="btn btn-success" id="updateUser">确定</button>
</div>
</div>
</div>
<script>
$(function() {
$(':input[name=updateGender]').labelauty();
var data = $("#userList").bootstrapTable("getSelections")[0];
$("#updateUserName").val(data.userName);
//$("#updateUserPassword").val('');
var gender = data.gender;
//根据value值设置radio选中项
$("input:radio[value="+gender+"]").attr('checked','true');
$("#updateUser").on("click", function() {
data.userName = $("#updateUserName").val();
//加密
data.password = md5($("#updateUserPassword").val());
data.gender = $("input[name='updateGender']:checked").val();
$.ajax({
url: '${basePath}/auth/user/updateUser',
data: data,
method: 'post',
dataType: 'json',
complete: function(jqXHR, textStatus) {
$("#updateUserName").val("");
$("#updateUserPassword").val("");
$("#updateUserModal").modal("hide");
}
});
});
});
</script>
================================================
FILE: src/main/webapp/WEB-INF/views/auth/user/userList.vm
================================================
<ol class="breadcrumb" style="margin-bottom:2px;">
<li><a href="#">首页</a>
</li>
<li><a href="#">权限管理</a>
</li>
<li><a href="#">用户管理</a>
</li>
</ol>
<!-- Modal -->
<div class="modal fade text-center" id="addUserModal"></div>
<div class="modal fade text-center" id="updateUserModal"></div>
<div id="toolbar" class="btn-group">
<input class="form-" type="text" placeholder="用户名" style="float:left" id="searchBox" />
<button type="button" class="btn btn-default" id="search" style="margin-left:5px;">
<i class="glyphicon glyphicon-search"></i>
</button>
<button type="button" class="btn btn-default" id="save">
<i class="glyphicon glyphicon-floppy-save"></i>
</button>
<button class="btn btn-default" id="add" data-backdrop="false" data-url="${basePath}/auth/user/addUserView" href="#addUserModal" data-toggle="modal">
<i class="glyphicon glyphicon-plus"></i>
</button>
<button class="btn btn-default" id="edit" data-backdrop="false" data-url="${basePath}/auth/user/updateUserView" href="#updateUserModal" data-toggle="modal">
<i class="glyphicon glyphicon-edit"></i>
</button>
<button type="button" class="btn btn-default" id="delete">
<i class="glyphicon glyphicon-remove-circle"></i>
</button>
</div>
<table id="userList" data-cache="false" data-toggle="table" data-url="${basePath}/auth/user/getUserList?search" data-sort-name="userName" data-sort-order="desc" data-show-header="true" data-show-refresh="true" data-show-columns="false" data-pagination="true" data-side-pagination="server" data-page-size="20" data-page-list="[10,20]" data-height="520" data-show-export="true" data-toolbar="#toolbar" data-show-paginationSwitch="true" data-pagination-detail-h-align="left" data-pagination-h-align="right" data-click-to-select="true">
<thead>
<tr>
<th data-field="state" data-checkbox="true"></th>
<th data-field="id" data-visible="false">id</th>
<th data-field="userName" data-sortable="true" data-editable="false">用户名</th>
<th data-field="password" data-sortable="false">密码</th>
<th data-field="gender" data-align="center" data-sortable="true" data-formatter="formatGender">性别</th>
<th data-field="creater" data-sortable="true">创建人</th>
<th data-field="createTime" data-sortable="true" >创建日期</th>
<th data-field="updater" data-sortable="true">更新人</th>
<th data-field="updateTime" data-sortable="true">更新日期</th>
</tr>
</thead>
</table>
<script>
$(function() {
//搜索事件
$("#search").on("click", function() {
search();
});
function search() {
var $table = $("#userList");
var searchText = $("#searchBox").val();
$.post("${basePath}/auth/user/getUserList", {
search: searchText,
limit: 20,
offset: 0,
order: "desc",
sort: 'userName'
}, function(res) {
$table.bootstrapTable("getOptions").pageNumber = 1; //默认排序从第一页开始
$table.bootstrapTable('load', res);
});
}
//排序事件
$("#userList").on('sort.bs.table', function(name, order) {
$(this).bootstrapTable("getOptions").pageNumber = 1; //默认排序从第一页开始
});
//添加用户
$("#add").on("click",function(){
$("#addUserModal").load($(this).attr("data-url"));
$('#addUserModal').on('hidden.bs.modal', function (e) {
search();
})
});
//更新用户
$("#edit").on("click", function() {
var data = $("#userList").bootstrapTable("getSelections");
if (data.length > 1||data.length<1) {
new $.flavr({
animateEntrance: "rollIn",
animateClosing: "rollOut",
content: '请选择一条记录',
autoclose: true,
timeout: 3000
});
$('#updateUserModal').modal({backdrop:false});//去掉蒙板
return;
}else{
$("#updateUserModal").load($(this).attr("data-url"));
$('#updateUserModal').on('hidden.bs.modal', function (e) {
search();
});
}
});
//删除用户
$("#delete").on("click", function() {
var datas = $("#userList").bootstrapTable("getSelections");
var ids = "";
var i = 0;
if (datas.length < 1) {
new $.flavr({
animateEntrance: "rollIn",
animateClosing: "rollOut",
content: '请选择一条记录',
autoclose: true,
timeout: 3000
});
return;
}
for (i = 0; i < datas.length; i++) {
ids += datas[i].id + ",";
}
$.ajax({
url: '${basePath}/auth/user/deleteUser?ids=' + ids,
method: 'post',
dataType: 'json',
complete: function(jqXHR, textStatus) {
search();
}
});
});
});
$("#userList").bootstrapTable({
height:$(window).height()-140
});
</script>
================================================
FILE: src/main/webapp/WEB-INF/views/common/header.vm
================================================
<nav class="navbar box-shadow bg-white-only " role="navigation" style="margin-bottom:1px;">
<div class="navbar-header" style="margin-left:20px;">
<img src="${basePath}/static/img/logo.png" alt="...">
</div>
<div style="margin-right:40px;float:left;line-height:50px;">
<span>
<i class="fa fa-dedent fa-fw"></i>
</span>
<span>
<i class="icon-user fa-fw"></i>
</span>
<span class="dropdown">
<a href="#" class="dropdown-toggle" data-toggle="dropdown">
#springMessage("header.message")
<b class="caret"></b>
</a>
</span>
<span class="dropdown">
<a href="#" class="dropdown-toggle" data-toggle="dropdown">
#springMessage("header.to-list")
<b class="caret"></b>
</a>
<ul class="dropdown-menu dropdown-menu-right" role="menu" aria-labelledby="dropdownMenu1">
<li role="presentation"><a role="menuitem" tabindex="-1" href="#">English</a></li>
<li role="presentation"><a role="menuitem" tabindex="-1" href="#">Chniese</a></li>
</ul>
</span>
</div>
<div style="margin-right:40px;float:right;line-height:50px;">
<span class="dropdown">
<a href="#" class="dropdown-toggle" data-toggle="dropdown">
#springMessage("header.language")
<b class="caret"></b>
</a>
<ul class="dropdown-menu dropdown-menu-right" role="menu" aria-labelledby="dropdownMenu1">
<li role="presentation"><a role="menuitem" tabindex="-1" onclick="changeLang('en')">#springMessage("header.en")</a></li>
<li role="presentation"><a role="menuitem" tabindex="-1" onclick="changeLang('zh')">#springMessage("header.zh_CH")</a></li>
</ul>
</span>
<span>
<i class="fa fa-expand fa-fw text"></i>
</span>
<span>
<i class="icon-bell fa-fw"></i>
</span>
<span class="dropdown">
<a href="#" class="dropdown-toggle" data-toggle="dropdown">
$!{Env.getUser().getUserName()}
<img src="${basePath}/static/img/a0.jpg" alt="..." class="img-circle">
<b class="caret"></b>
</a>
<ul style="min-width:80px;" class="dropdown-menu dropdown-menu-right" role="menu" aria-labelledby="dropdownMenu1">
<li role="presentation"><a role="menuitem" tabindex="-1" href="${basePath}/logout"><i class="glyphicon glyphicon-off"></i>退出</a></li>
</ul>
</span>
</div>
</nav>
<script>
function changeLang(lang){
$.post("${basePath}/lang?langType="+lang,function(data,status){
location.reload();
});
}
</script>
================================================
FILE: src/main/webapp/WEB-INF/views/common/layout.vm
================================================
<!DOCTYPE html>
<html>
<head lang="en">
<meta charset="UTF-8">
<title>HR-ADMIN</title>
<link href="${basePath}/static/css/style.css" rel="stylesheet">
<link href="${basePath}/static/css/bootstrap.css" rel="stylesheet">
<link href="${basePath}/static/css/font-awesome.min.css" rel="stylesheet">
<link href="${basePath}/static/css/simple-line-icons.css" rel="stylesheet">
<link href="${basePath}/static/css/layout.css" rel="stylesheet">
<script src="${basePath}/static/js/jquery.min.js"></script>
<script src="${basePath}/static/js/bootstrap.min.js"></script>
<link rel="shortcut icon" href="/hr/static/img/favicon.ico" />
<link href="${basePath}/static/css/bootstrap-table.css" rel="stylesheet">
<link href="${basePath}/static/css/bootstrap-table-editable.css" rel="stylesheet">
<script src="${basePath}/static/js/bootstrap-table.js"></script>
<script src="${basePath}/static/js/bootstrap-table-zh-CN.js"></script>
<script src="${basePath}/static/js/dateFormat.js"></script>
<script src="${basePath}/static/js/bootstrap-table-editable.js"></script>
<script src="${basePath}/static/js/bootstrap-editable.js"></script>
<script src="${basePath}/static/js/bootstrap-table-export.js"></script>
<script src="${basePath}/static/js/tableExport.js"></script>
<link href="${basePath}/static/css/animate.css" rel="stylesheet">
<link href="${basePath}/static/css/flavr.css" rel="stylesheet">
<script src="${basePath}/static/js/flavr.js"></script>
<script src="${basePath}/static/js/jquery.datetimepicker.js"></script>
<link href="${basePath}/static/css/jquery.datetimepicker.css" rel="stylesheet">
<script src="${basePath}/static/js/jquery.nicescroll.js"></script>
<script src="${basePath}/static/jcheckbox/js/jquery-labelauty.js"></script>
<link href="${basePath}/static/jcheckbox/css/jquery-labelauty.css" rel="stylesheet">
<script src="${basePath}/static/js/bt-validate.js"></script>
<script src="${basePath}/static/js/md5.min.js"></script>
<script src="${basePath}/static/js/json.js"></script>
<script src="${basePath}/static/js/bootstrap-combobox.min.js"></script>
<link href="${basePath}/static/easyui/themes/metro/easyui.css" rel="stylesheet">
<script src="${basePath}/static//easyui/jquery.easyui.min.js"></script>
<link href="${basePath}/static/css/build.css" rel="stylesheet">
</head>
#parse("${header_path}")
#parse("${left_path}")
<div style="margin-left:161px;margin-right:6px;font-family:'微软雅黑'">
#parse("${content_path}")
</div>
<div class="footer">
Copyright © 2015 L.Tao All rights Reserved.
</div>
<script>
$(function(){
$.fn.editable.defaults.mode = 'inline';
$("html").niceScroll({
cursorcolor: "#777777",
cursoropacitymax: 1,
touchbehavior: false,
cursorwidth: "6px",
cursorborder: "5",
cursorborderradius: "4px",
autohidemode: true
});
});
</script>
</body>
</html>
================================================
FILE: src/main/webapp/WEB-INF/views/common/left.vm
================================================
<div class="leftsidebar_box">
<a href="${basePath}/index">
<dl class="system_log" style="margin-top:40px;">
<dt >#springMessage("home.dashboard")<img src="${basePath}/static/img/left/select_xl01.png"></dt>
</dl>
</a>
<dl class="custom">
<dt >权限管理<img src="${basePath}/static/img/left/select_xl01.png"></dt>
<dd class="first_dd"><a href="${basePath}/auth/role/listView">角色管理</a>
</dd>
<dd ><a href="${basePath}/auth/user/listView">用户管理</a>
</dd>
<dd><a href="${basePath}/auth/role/roleAllocationView">角色分配</a>
</dd>
<dd><a href="${basePath}/auth/module/listView">模块管理</a>
</dd>
</dl>
<dl class="system_log">
<dt >组织管理<img src="${basePath}/static/img/left/select_xl01.png"></dt>
<dd class="first_dd"><a href="${basePath}/ou/list">组织信息</a>
</dd>
<dd><a href="#">组织类型</a>
</dd>
<dd><a href="#">组织类别</a>
</dd>
<dd><a href="#">组织地址</a>
</dd>
</dl>
<dl class="channel">
<dt>人员管理<img src="${basePath}/static/img/left/select_xl01.png"></dt>
<dd class="first_dd"><a href="#">渠道主页</a>
</dd>
<dd><a href="#">渠道标准管理</a>
</dd>
<dd><a href="#">系统通知</a>
</dd>
<dd><a href="#">渠道商管理</a>
</dd>
<dd><a href="#">渠道商链接</a>
</dd>
</dl>
<dl class="app">
<dt >薪酬管理<img src="${basePath}/static/img/left/select_xl01.png"></dt>
<dd class="first_dd"><a href="#">App运营商管理</a>
</dd>
<dd><a href="#">开放接口管理</a>
</dd>
<dd><a href="#">接口类型管理</a>
</dd>
</dl>
<dl class="cloud">
<dt>合同管理</dt>
<dd class="first_dd"><a href="#">平台运营商管理</a>
</dd>
</dl>
<dl class="syetem_management">
<dt>绩效管理<img src="${basePath}/static/img/left/select_xl01.png"></dt>
<dd class="first_dd"><a href="#">后台用户管理</a>
</dd>
<dd><a href="#">角色管理</a>
</dd>
<dd><a href="#">客户类型管理</a>
</dd>
<dd><a href="#">栏目管理</a>
</dd>
<dd><a href="#">微官网模板组管理</a>
</dd>
<dd><a href="#">商城模板管理</a>
</dd>
<dd><a href="#">微功能管理</a>
</dd>
<dd><a href="#">修改用户密码</a>
</dd>
</dl>
<dl class="statistics">
<dt>统计分析<img src="${basePath}/static/img/left/select_xl01.png"></dt>
<dd class="first_dd"><a href="#">客户统计</a>
</dd>
</dl>
</div>
<script type="text/javascript">
$(".leftsidebar_box dt").css({
"background-color": "#fff"
});
$(".leftsidebar_box dt img").attr("src", "${basePath}/static/img/left/select_xl01.png");
$(function() {
$(".leftsidebar_box dd").hide();
$(".leftsidebar_box dt").click(function() {
$(".leftsidebar_box dt").css({
"background-color": "#fff"
})
$(this).css({
"background-color": "#42b4f0"
});
$(this).parent().find('dd').removeClass("menu_chioce");
$(".leftsidebar_box dt img").attr("src", "${basePath}/static/img/left/select_xl01.png");
$(this).parent().find('img').attr("src", "${basePath}/static/img/left/select_xl.png");
$(".menu_chioce").slideUp();
$(this).parent().find('dd').slideToggle();
$(this).parent().find('dd').addClass("menu_chioce");
});
})
</script>
================================================
FILE: src/main/webapp/WEB-INF/views/login/login.vm
================================================
<!DOCTYPE html>
<head>
<title>HR-Login</title>
<link href="${basePath}/static/css/templatemo_style.css" rel="stylesheet" type="text/css">
<link href="${basePath}/static/css/bootstrap.css" rel="stylesheet">
<link href="${basePath}/static/css/font-awesome.min.css" rel="stylesheet">
<link href="${basePath}/static/css/simple-line-icons.css" rel="stylesheet">
<script src="${basePath}/static/js/jquery.min.js"></script>
<script src="${basePath}/static/js/bootstrap.min.js"></script>
<link rel="shortcut icon" href="/hr/static/img/favicon.ico" />
<script src="${basePath}/static/js/md5.min.js"></script>
<link href="${basePath}/static/css/build.css" rel="stylesheet">
</head>
<body class="templatemo-bg-gray">
<div class="container" style="margin-top:80px;">
<div class="col-md-12">
<h1 class="margin-bottom-15">#springMessage("system.name")</h1>
<form id="loginForm" class="form-horizontal templatemo-container templatemo-login-form-1 margin-bottom-30" role="form">
<div class="form-group">
<div class="col-xs-12">
<div class="control-wrapper">
<label for="username" class="control-label fa-label"><i class="fa fa-user fa-medium"></i></label>
<input type="text" class="form-control" id="userName" placeholder="Username" name="userName">
</div>
</div>
</div>
<div class="form-group">
<div class="col-md-12">
<div class="control-wrapper">
<label for="password" class="control-label fa-label"><i class="fa fa-lock fa-medium"></i></label>
<input type="password" class="form-control" id="password" placeholder="Password" name="password">
</div>
</div>
</div>
<div class="form-group">
<div class="col-md-12">
<div class="checkbox control-wrapper checkbox-info checkbox-circle " style="margin-left:30px;">
<input id="isRemeberMe" name="isRemeberMe" class="styled" type="checkbox" checked value="true">
<label for="checkbox2">
#springMessage("login.remember")
</label>
</div>
</div>
</div>
<div class="form-group">
<div class="col-md-12">
<div class="control-wrapper">
<input type="button" value="登录" class="btn btn-info" style="border-radius:4px;" id="login">
<a href="" id="message" style="color:red;" class="text-right pull-right"></a>
</div>
</div>
</div>
<hr>
<div class="form-group">
<div class="col-md-12">
<label>#springMessage("login.third"): </label>
<div class="inline-block">
<a href="#"><i class="fa fa-facebook-square login-with"></i></a>
<a href="#"><i class="fa fa-twitter-square login-with"></i></a>
<a href="#"><i class="fa fa-google-plus-square login-with"></i></a>
<a href="#"><i class="fa fa-tumblr-square login-with"></i></a>
<a href="#"><i class="fa fa-github-square login-with"></i></a>
</div>
</div>
</div>
</form>
</div>
</div>
<script>
function valadation(){
if($("#userName").val()==""||$("#password").val()==""){
return false;
}
return true;
}
$(function(){
$("#login").on("click",function(){
if(valadation()){
var data = new Object();
data.userName=$("#userName").val();
data.password=$("#password").val();
data.isRemeberMe = false;
if($("#isRemeberMe").get(0).checked)
data.isRemeberMe = true;
$.ajax({
url:"${basePath}/login",
method:"post",
data:data,
success:function(data, textStatus, jqXHR) {
if(data){
window.location.href = "${basePath}/loginSYS";
}else{
$("#message").html("用户名、密码错误!");
}
},
error:function(jqXHR, textStatus, errorThrown) {
}
});
}else
$("#message").html("用户名、密码不能为空!");
});
$("#username").keypress(function(event) {
if (event.which == 13) {
$("#login").click();
}
});
$("#password").keypress(function(event) {
if (event.which == 13) {
$("#login").click();
}
});
});
</script>
</body>
</html>
================================================
FILE: src/main/webapp/WEB-INF/views/ou/addOu.vm
================================================
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header text-left">
<button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">×</span>
</button>
<h4 class="modal-title" id="myModalLabel">添加组织</h4>
</div>
<div class="modal-body">
<form class="form-inline">
<div class="form-group">
<label for="addOuName">组织名称</label>
<input type="text" class="form-control" id="addOuName">
</div>
<div class="form-group">
<label for="addEndTime">失效日期</label>
<div class="input-group">
<input type="time" class="form-control" id="addEndTime">
<span class="input-group-addon"><i class="glyphicon glyphicon-time"></i></span>
</div>
</div>
</form>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-danger" data-dismiss="modal">关闭</button>
<button type="button" class="btn btn-success" id="addOu">添加</button>
</div>
</div>
</div>
<script>
$(function(){
$("#addEndTime").datetimepicker();
$("#addOu").on("click", function() {
var obj = new Object();
obj.ouName = $("#addOuName").val();
obj.endTime = $("#addEndTime").val();
$.ajax({
url: '${basePath}/ou/addOu',
data: obj,
method: 'post',
dataType: 'json',
complete: function(jqXHR, textStatus) {
$("#addOuModal").modal("hide");
search();
}
});
});
});
</script>
================================================
FILE: src/main/webapp/WEB-INF/views/ou/ouList.vm
================================================
<ol class="breadcrumb" style="margin-bottom:2px;">
<li><a href="#">首页</a>
</li>
<li><a href="#">组织管理</a>
</li>
<li class="active">基本信息</li>
</ol>
<!-- Modal -->
<div class="modal fade text-center" id="addOuModal"></div>
<div class="modal fade text-center" id="updateOuModal"></div>
<div id="toolbar" class="btn-group">
<input class="form-" type="text" placeholder="搜索" style="float:left" id="searchBox" />
<button type="button" class="btn btn-default" id="search" style="margin-left:5px;">
<i class="glyphicon glyphicon-search"></i>
</button>
<button type="button" class="btn btn-default" id="save">
<i class="glyphicon glyphicon-floppy-save"></i>
</button>
<button class="btn btn-default" id="add" data-backdrop="false" data-url="${basePath}/ou/addOuView" href="#addOuModal" data-toggle="modal">
<i class="glyphicon glyphicon-plus"></i>
</button>
<button class="btn btn-default" id="edit" data-backdrop="false" data-url="${basePath}/ou/updateOuView" href="#updateOuModal" data-toggle="modal">
<i class="glyphicon glyphicon-edit"></i>
</button>
<button type="button" class="btn btn-default" id="delete">
<i class="glyphicon glyphicon-remove-circle"></i>
</button>
</div>
<table id="ouList" data-toggle="table" data-cache="false" data-url="${basePath}/ou/getOuList?search" data-sort-name="ouName" data-sort-order="desc" data-show-header="true" data-show-refresh="true" data-show-columns="true" data-pagination="true" data-side-pagination="server" data-page-size="20" data-page-list="[10,20]" data-height="520" data-show-export="true" data-toolbar="#toolbar" data-show-paginationSwitch="true" data-pagination-detail-h-align="left" data-pagination-h-align="right" data-click-to-select="true">
<thead>
<tr>
<th data-field="state" data-checkbox="true"></th>
<th data-field="id" data-visible="false">id</th>
<th data-field="ouName" data-sortable="true" data-editable="false">组织名称</th>
<th data-field="startTime" data-sortable="true">开始日期</th>
<th data-field="endTime" data-sortable="true">失效日期</th>
<th data-field="createTime" data-sortable="true" >创建日期</th>
<th data-field="creater" data-sortable="true">创建人</th>
<th data-field="updateTime" data-sortable="true">更新日期</th>
<th data-field="updater" data-sortable="true">更新人</th>
</tr>
</thead>
</table>
<script>
$(function() {
$("#search").on("click", function() {
search();
});
function search() {
var $table = $("#ouList");
var searchText = $("#searchBox").val();
$.post("${basePath}/ou/getOuList", {
search: searchText,
limit: 10,
offset: 0,
order: "desc",
sort: 'ouName'
}, function(res) {
$table.bootstrapTable("getOptions").pageNumber = 1; //默认排序从第一页开始
$table.bootstrapTable('load', res);
});
}
$("#ouList").on('sort.bs.table', function(name, order) {
$(this).bootstrapTable("getOptions").pageNumber = 1; //默认排序从第一页开始
console.info($(this).bootstrapTable("getOptions"))
});
//添加组织
$("#add").on("click",function(){
$("#addOuModal").load($(this).attr("data-url"));
$('#addOuModal').on('hidden.bs.modal', function (e) {
search();
})
});
//更新用户
$("#edit").on("click", function() {
var data = $("#ouList").bootstrapTable("getSelections");
if (data.length > 1||data.length<1) {
new $.flavr({
animateEntrance: "rollIn",
animateClosing: "rollOut",
content: '请选择一条记录',
autoclose: true,
timeout: 3000
});
$('#updateOuModal').modal({backdrop:false});//去掉蒙板
return;
}else{
$("#updateOuModal").load($(this).attr("data-url"));
$('#updateOuModal').on('hidden.bs.modal', function (e) {
search();
});
}
});
$("#delete").on("click", function() {
var datas = $("#ouList").bootstrapTable("getSelections");
var ids = "";
var i = 0;
if (datas.length < 1) {
new $.flavr({
animateEntrance: "rollIn",
animateClosing: "rollOut",
content: '请选择一条记录',
autoclose: true,
timeout: 3000
});
return;
}
for (i = 0; i < datas.length; i++) {
ids += datas[i].id + ",";
}
$.ajax({
url: '${basePath}/ou/deleteOu?ids=' + ids,
method: 'post',
dataType: 'json',
complete: function(jqXHR, textStatus) {
search();
}
});
});
});
$("#ouList").bootstrapTable({
height:$(window).height()-140
});
</script>
================================================
FILE: src/main/webapp/WEB-INF/views/ou/updateOu.vm
================================================
<div class="modal-dialog">
<div class="modal-content text-left">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">×</span>
</button>
<h4 class="modal-title" id="myModalLabel">更新组织</h4>
</div>
<div class="modal-body">
<form class="form-inline">
<div class="form-group">
<label for="">组织名称</label>
<input type="text" class="form-control" id="editOuName">
<input type="hidden" class="form-control" id="editId">
</div>
<div class="form-group">
<label for="">失效日期</label>
<div class="input-group">
<input type="time" class="form-control" id="editEndTime">
<span class="input-group-addon"><i class="glyphicon glyphicon-time"></i></span>
</div>
</div>
</form>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-danger" data-dismiss="modal">关闭</button>
<button type="button" class="btn btn-success" id="editOu">确定</button>
</div>
</div>
</div>
<script>
$(function(){
$("#editEndTime").datetimepicker();
var data = $("#ouList").bootstrapTable("getSelections")[0];
$("#editEndTime").val(data.endTime);
$("#editOuName").val(data.ouName);
$("#editOu").on("click",function(){
var obj = $("#ouList").bootstrapTable("getSelections")[0];
obj.ouName = $("#editOuName").val();
obj.endTime = $("#editEndTime").val();
$.ajax({
url: '${basePath}/ou/updateOu',
method: 'post',
dataType: 'json',
data:obj,
complete: function(jqXHR, textStatus) {
$("#updateOuModal").modal("hide");
}
});
});
});
</script>
================================================
FILE: src/main/webapp/WEB-INF/web.xml
================================================
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
id="WebApp_ID" version="2.5">
<display-name>hr</display-name>
<welcome-file-list>
<welcome-file>index.vm</welcome-file>
</welcome-file-list>
<!-- 加载所有的配置文件 这里我将配置文件置于源码包中 -->
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath*:spring-*.xml</param-value>
</context-param>
<!-- 配置Spring -->
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<!-- -->
<listener>
<listener-class>com.lcore.hr.module.listener.StartupListener</listener-class>
</listener>
<!-- 配置SpringMVC -->
<servlet>
<servlet-name>springMVC</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath*:spring-mvc.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>springMVC</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
<filter>
<filter-name>shiroFilter</filter-name>
<filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class>
<init-param>
<param-name>targetFilterLifecycle</param-name>
<param-value>true</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>shiroFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<!-- 配置字符集 -->
<filter>
<filter-name>encodingFilter</filter-name>
<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>UTF-8</param-value>
</init-param>
<init-param>
<param-name>forceEncoding</param-name>
<param-value>true</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>encodingFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<!-- 配置Session -->
<filter>
<filter-name>openSession</filter-name>
<filter-class>org.springframework.orm.hibernate3.support.OpenSessionInViewFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>openSession</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
</web-app>
================================================
FILE: src/main/webapp/static/css/animate.css
================================================
@charset "UTF-8";
/*!
Animate.css - http://daneden.me/animate
Licensed under the MIT license
Copyright (c) 2013 Daniel Eden
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
*/
.animated {
-webkit-animation-duration: 1s;
animation-duration: 1s;
-webkit-animation-fill-mode: both;
animation-fill-mode: both;
}
.animated.hinge {
-webkit-animation-duration: 2s;
animation-duration: 2s;
}
@-webkit-keyframes bounce {
0%, 20%, 50%, 80%, 100% {
-webkit-transform: translateY(0);
transform: translateY(0);
}
40% {
-webkit-transform: translateY(-30px);
transform: translateY(-30px);
}
60% {
-webkit-transform: translateY(-15px);
transform: translateY(-15px);
}
}
@keyframes bounce {
0%, 20%, 50%, 80%, 100% {
-webkit-transform: translateY(0);
-ms-transform: translateY(0);
transform: translateY(0);
}
40% {
-webkit-transform: translateY(-30px);
-ms-transform: translateY(-30px);
transform: translateY(-30px);
}
60% {
-webkit-transform: translateY(-15px);
-ms-transform: translateY(-15px);
transform: translateY(-15px);
}
}
.bounce {
-webkit-animation-name: bounce;
animation-name: bounce;
}
@-webkit-keyframes flash {
0%, 50%, 100% {
opacity: 1;
}
25%, 75% {
opacity: 0;
}
}
@keyframes flash {
0%, 50%, 100% {
opacity: 1;
}
25%, 75% {
opacity: 0;
}
}
.flash {
-webkit-animation-name: flash;
animation-name: flash;
}
/* originally authored by Nick Pettit - https://github.com/nickpettit/glide */
@-webkit-keyframes pulse {
0% {
-webkit-transform: scale(1);
transform: scale(1);
}
50% {
-webkit-transform: scale(1.1);
transform: scale(1.1);
}
100% {
-webkit-transform: scale(1);
transform: scale(1);
}
}
@keyframes pulse {
0% {
-webkit-transform: scale(1);
-ms-transform: scale(1);
transform: scale(1);
}
50% {
-webkit-transform: scale(1.1);
-ms-transform: scale(1.1);
transform: scale(1.1);
}
100% {
-webkit-transform: scale(1);
-ms-transform: scale(1);
transform: scale(1);
}
}
.pulse {
-webkit-animation-name: pulse;
animation-name: pulse;
}
@-webkit-keyframes rubberBand {
0% {
-webkit-transform: scale(1);
transform: scale(1);
}
30% {
-webkit-transform: scaleX(1.25) scaleY(0.75);
transform: scaleX(1.25) scaleY(0.75);
}
40% {
-webkit-transform: scaleX(0.75) scaleY(1.25);
transform: scaleX(0.75) scaleY(1.25);
}
60% {
-webkit-transform: scaleX(1.15) scaleY(0.85);
transform: scaleX(1.15) scaleY(0.85);
}
100% {
-webkit-transform: scale(1);
transform: scale(1);
}
}
@keyframes rubberBand {
0% {
-webkit-transform: scale(1);
-ms-transform: scale(1);
transform: scale(1);
}
30% {
-webkit-transform: scaleX(1.25) scaleY(0.75);
-ms-transform: scaleX(1.25) scaleY(0.75);
transform: scaleX(1.25) scaleY(0.75);
}
40% {
-webkit-transform: scaleX(0.75) scaleY(1.25);
-ms-transform: scaleX(0.75) scaleY(1.25);
transform: scaleX(0.75) scaleY(1.25);
}
60% {
-webkit-transform: scaleX(1.15) scaleY(0.85);
-ms-transform: scaleX(1.15) scaleY(0.85);
transform: scaleX(1.15) scaleY(0.85);
}
100% {
-webkit-transform: scale(1);
-ms-transform: scale(1);
transform: scale(1);
}
}
.rubberBand {
-webkit-animation-name: rubberBand;
animation-name: rubberBand;
}
@-webkit-keyframes shake {
0%, 100% {
-webkit-transform: translateX(0);
transform: translateX(0);
}
10%, 30%, 50%, 70%, 90% {
-webkit-transform: translateX(-10px);
transform: translateX(-10px);
}
20%, 40%, 60%, 80% {
-webkit-transform: translateX(10px);
transform: translateX(10px);
}
}
@keyframes shake {
0%, 100% {
-webkit-transform: translateX(0);
-ms-transform: translateX(0);
transform: translateX(0);
}
10%, 30%, 50%, 70%, 90% {
-webkit-transform: translateX(-10px);
-ms-transform: translateX(-10px);
transform: translateX(-10px);
}
20%, 40%, 60%, 80% {
-webkit-transform: translateX(10px);
-ms-transform: translateX(10px);
transform: translateX(10px);
}
}
.shake {
-webkit-animation-name: shake;
animation-name: shake;
}
@-webkit-keyframes swing {
20% {
-webkit-transform: rotate(15deg);
transform: rotate(15deg);
}
40% {
-webkit-transform: rotate(-10deg);
transform: rotate(-10deg);
}
60% {
-webkit-transform: rotate(5deg);
transform: rotate(5deg);
}
80% {
-webkit-transform: rotate(-5deg);
transform: rotate(-5deg);
}
100% {
-webkit-transform: rotate(0deg);
transform: rotate(0deg);
}
}
@keyframes swing {
20% {
-webkit-transform: rotate(15deg);
-ms-transform: rotate(15deg);
transform: rotate(15deg);
}
40% {
-webkit-transform: rotate(-10deg);
-ms-transform: rotate(-10deg);
transform: rotate(-10deg);
}
60% {
-webkit-transform: rotate(5deg);
-ms-transform: rotate(5deg);
transform: rotate(5deg);
}
80% {
-webkit-transform: rotate(-5deg);
-ms-transform: rotate(-5deg);
transform: rotate(-5deg);
}
100% {
-webkit-transform: rotate(0deg);
-ms-transform: rotate(0deg);
transform: rotate(0deg);
}
}
.swing {
-webkit-transform-origin: top center;
-ms-transform-origin: top center;
transform-origin: top center;
-webkit-animation-name: swing;
animation-name: swing;
}
@-webkit-keyframes tada {
0% {
-webkit-transform: scale(1);
transform: scale(1);
}
10%, 20% {
-webkit-transform: scale(0.9) rotate(-3deg);
transform: scale(0.9) rotate(-3deg);
}
30%, 50%, 70%, 90% {
-webkit-transform: scale(1.1) rotate(3deg);
transform: scale(1.1) rotate(3deg);
}
40%, 60%, 80% {
-webkit-transform: scale(1.1) rotate(-3deg);
transform: scale(1.1) rotate(-3deg);
}
100% {
-webkit-transform: scale(1) rotate(0);
transform: scale(1) rotate(0);
}
}
@keyframes tada {
0% {
-webkit-transform: scale(1);
-ms-transform: scale(1);
transform: scale(1);
}
10%, 20% {
-webkit-transform: scale(0.9) rotate(-3deg);
-ms-transform: scale(0.9) rotate(-3deg);
transform: scale(0.9) rotate(-3deg);
}
30%, 50%, 70%, 90% {
-webkit-transform: scale(1.1) rotate(3deg);
-ms-transform: scale(1.1) rotate(3deg);
transform: scale(1.1) rotate(3deg);
}
40%, 60%, 80% {
-webkit-transform: scale(1.1) rotate(-3deg);
-ms-transform: scale(1.1) rotate(-3deg);
transform: scale(1.1) rotate(-3deg);
}
100% {
-webkit-transform: scale(1) rotate(0);
-ms-transform: scale(1) rotate(0);
transform: scale(1) rotate(0);
}
}
.tada {
-webkit-animation-name: tada;
animation-name: tada;
}
/* originally authored by Nick Pettit - https://github.com/nickpettit/glide */
@-webkit-keyframes wobble {
0% {
-webkit-transform: translateX(0%);
transform: translateX(0%);
}
15% {
-webkit-transform: translateX(-25%) rotate(-5deg);
transform: translateX(-25%) rotate(-5deg);
}
30% {
-webkit-transform: translateX(20%) rotate(3deg);
transform: translateX(20%) rotate(3deg);
}
45% {
-webkit-transform: translateX(-15%) rotate(-3deg);
transform: translateX(-15%) rotate(-3deg);
}
60% {
-webkit-transform: translateX(10%) rotate(2deg);
transform: translateX(10%) rotate(2deg);
}
75% {
-webkit-transform: translateX(-5%) rotate(-1deg);
transform: translateX(-5%) rotate(-1deg);
}
100% {
-webkit-transform: translateX(0%);
transform: translateX(0%);
}
}
@keyframes wobble {
0% {
-webkit-transform: translateX(0%);
-ms-transform: translateX(0%);
transform: translateX(0%);
}
15% {
-webkit-transform: translateX(-25%) rotate(-5deg);
-ms-transform: translateX(-25%) rotate(-5deg);
transform: translateX(-25%) rotate(-5deg);
}
30% {
-webkit-transform: translateX(20%) rotate(3deg);
-ms-transform: translateX(20%) rotate(3deg);
transform: translateX(20%) rotate(3deg);
}
45% {
-webkit-transform: translateX(-15%) rotate(-3deg);
-ms-transform: translateX(-15%) rotate(-3deg);
transform: translateX(-15%) rotate(-3deg);
}
60% {
-webkit-transform: translateX(10%) rotate(2deg);
-ms-transform: translateX(10%) rotate(2deg);
transform: translateX(10%) rotate(2deg);
}
75% {
-webkit-transform: translateX(-5%) rotate(-1deg);
-ms-transform: translateX(-5%) rotate(-1deg);
transform: translateX(-5%) rotate(-1deg);
}
100% {
-webkit-transform: translateX(0%);
-ms-transform: translateX(0%);
transform: translateX(0%);
}
}
.wobble {
-webkit-animation-name: wobble;
animation-name: wobble;
}
@-webkit-keyframes bounceIn {
0% {
opacity: 0;
-webkit-transform: scale(.3);
transform: scale(.3);
}
50% {
opacity: 1;
-webkit-transform: scale(1.05);
transform: scale(1.05);
}
70% {
-webkit-transform: scale(.9);
transform: scale(.9);
}
100% {
opacity: 1;
-webkit-transform: scale(1);
transform: scale(1);
}
}
@keyframes bounceIn {
0% {
opacity: 0;
-webkit-transform: scale(.3);
-ms-transform: scale(.3);
transform: scale(.3);
}
50% {
opacity: 1;
-webkit-transform: scale(1.05);
-ms-transform: scale(1.05);
transform: scale(1.05);
}
70% {
-webkit-transform: scale(.9);
-ms-transform: scale(.9);
transform: scale(.9);
}
100% {
opacity: 1;
-webkit-transform: scale(1);
-ms-transform: scale(1);
transform: scale(1);
}
}
.bounceIn {
-webkit-animation-name: bounceIn;
animation-name: bounceIn;
}
@-webkit-keyframes bounceInDown {
0% {
opacity: 0;
-webkit-transform: translateY(-2000px);
transform: translateY(-2000px);
}
60% {
opacity: 1;
-webkit-transform: translateY(30px);
transform: translateY(30px);
}
80% {
-webkit-transform: translateY(-10px);
transform: translateY(-10px);
}
100% {
-webkit-transform: translateY(0);
transform: translateY(0);
}
}
@keyframes bounceInDown {
0% {
opacity: 0;
-webkit-transform: translateY(-2000px);
-ms-transform: translateY(-2000px);
transform: translateY(-2000px);
}
60% {
opacity: 1;
-webkit-transform: translateY(30px);
-ms-transform: translateY(30px);
transform: translateY(30px);
}
80% {
-webkit-transform: translateY(-10px);
-ms-transform: translateY(-10px);
transform: translateY(-10px);
}
100% {
-webkit-transform: translateY(0);
-ms-transform: translateY(0);
transform: translateY(0);
}
}
.bounceInDown {
-webkit-animation-name: bounceInDown;
animation-name: bounceInDown;
}
@-webkit-keyframes bounceInLeft {
0% {
opacity: 0;
-webkit-transform: translateX(-2000px);
transform: translateX(-2000px);
}
60% {
opacity: 1;
-webkit-transform: translateX(30px);
transform: translateX(30px);
}
80% {
-webkit-transform: translateX(-10px);
transform: translateX(-10px);
}
100% {
-webkit-transform: translateX(0);
transform: translateX(0);
}
}
@keyframes bounceInLeft {
0% {
opacity: 0;
-webkit-transform: translateX(-2000px);
-ms-transform: translateX(-2000px);
transform: translateX(-2000px);
}
60% {
opacity: 1;
-webkit-transform: translateX(30px);
-ms-transform: translateX(30px);
transform: translateX(30px);
}
80% {
-webkit-transform: translateX(-10px);
-ms-transform: translateX(-10px);
transform: translateX(-10px);
}
100% {
-webkit-transform: translateX(0);
-ms-transform: translateX(0);
transform: translateX(0);
}
}
.bounceInLeft {
-webkit-animation-name: bounceInLeft;
animation-name: bounceInLeft;
}
@-webkit-keyframes bounceInRight {
0% {
opacity: 0;
-webkit-transform: translateX(2000px);
transform: translateX(2000px);
}
60% {
opacity: 1;
-webkit-transform: translateX(-30px);
transform: translateX(-30px);
}
80% {
-webkit-transform: translateX(10px);
transform: translateX(10px);
}
100% {
-webkit-transform: translateX(0);
transform: translateX(0);
}
}
@keyframes bounceInRight {
0% {
opacity: 0;
-webkit-transform: translateX(2000px);
-ms-transform: translateX(2000px);
transform: translateX(2000px);
}
60% {
opacity: 1;
-webkit-transform: translateX(-30px);
-ms-transform: translateX(-30px);
transform: translateX(-30px);
}
80% {
-webkit-transform: translateX(10px);
-ms-transform: translateX(10px);
transform: translateX(10px);
}
100% {
-webkit-transform: translateX(0);
-ms-transform: translateX(0);
transform: translateX(0);
}
}
.bounceInRight {
-webkit-animation-name: bounceInRight;
animation-name: bounceInRight;
}
@-webkit-keyframes bounceInUp {
0% {
opacity: 0;
-webkit-transform: translateY(2000px);
transform: translateY(2000px);
}
60% {
opacity: 1;
-webkit-transform: translateY(-30px);
transform: translateY(-30px);
}
80% {
-webkit-transform: translateY(10px);
transform: translateY(10px);
}
100% {
-webkit-transform: translateY(0);
transform: translateY(0);
}
}
@keyframes bounceInUp {
0% {
opacity: 0;
-webkit-transform: translateY(2000px);
-ms-transform: translateY(2000px);
transform: translateY(2000px);
}
60% {
opacity: 1;
-webkit-transform: translateY(-30px);
-ms-transform: translateY(-30px);
transform: translateY(-30px);
}
80% {
-webkit-transform: translateY(10px);
-ms-transform: translateY(10px);
transform: translateY(10px);
}
100% {
-webkit-transform: translateY(0);
-ms-transform: translateY(0);
transform: translateY(0);
}
}
.bounceInUp {
-webkit-animation-name: bounceInUp;
animation-name: bounceInUp;
}
@-webkit-keyframes bounceOut {
0% {
-webkit-transform: scale(1);
transform: scale(1);
}
25% {
-webkit-transform: scale(.95);
transform: scale(.95);
}
50% {
opacity: 1;
-webkit-transform: scale(1.1);
transform: scale(1.1);
}
100% {
opacity: 0;
-webkit-transform: scale(.3);
transform: scale(.3);
}
}
@keyframes bounceOut {
0% {
-webkit-transform: scale(1);
-ms-transform: scale(1);
transform: scale(1);
}
25% {
-webkit-transform: scale(.95);
-ms-transform: scale(.95);
transform: scale(.95);
}
50% {
opacity: 1;
-webkit-transform: scale(1.1);
-ms-transform: scale(1.1);
transform: scale(1.1);
}
100% {
opacity: 0;
-webkit-transform: scale(.3);
-ms-transform: scale(.3);
transform: scale(.3);
}
}
.bounceOut {
-webkit-animation-name: bounceOut;
animation-name: bounceOut;
}
@-webkit-keyframes bounceOutDown {
0% {
-webkit-transform: translateY(0);
transform: translateY(0);
}
20% {
opacity: 1;
-webkit-transform: translateY(-20px);
transform: translateY(-20px);
}
100% {
opacity: 0;
-webkit-transform: translateY(2000px);
transform: translateY(2000px);
}
}
@keyframes bounceOutDown {
0% {
-webkit-transform: translateY(0);
-ms-transform: translateY(0);
transform: translateY(0);
}
20% {
opacity: 1;
-webkit-transform: translateY(-20px);
-ms-transform: translateY(-20px);
transform: translateY(-20px);
}
100% {
opacity: 0;
-webkit-transform: translateY(2000px);
-ms-transform: translateY(2000px);
transform: translateY(2000px);
}
}
.bounceOutDown {
-webkit-animation-name: bounceOutDown;
animation-name: bounceOutDown;
}
@-webkit-keyframes bounceOutLeft {
0% {
-webkit-transform: translateX(0);
transform: translateX(0);
}
20% {
opacity: 1;
-webkit-transform: translateX(20px);
transform: translateX(20px);
}
100% {
opacity: 0;
-webkit-transform: translateX(-2000px);
transform: translateX(-2000px);
}
}
@keyframes bounceOutLeft {
0% {
-webkit-transform: translateX(0);
-ms-transform: translateX(0);
transform: translateX(0);
}
20% {
opacity: 1;
-webkit-transform: translateX(20px);
-ms-transform: translateX(20px);
transform: translateX(20px);
}
100% {
opacity: 0;
-webkit-transform: translateX(-2000px);
-ms-transform: translateX(-2000px);
transform: translateX(-2000px);
}
}
.bounceOutLeft {
-webkit-animation-name: bounceOutLeft;
animation-name: bounceOutLeft;
}
@-webkit-keyframes bounceOutRight {
0% {
-webkit-transform: translateX(0);
transform: translateX(0);
}
20% {
opacity: 1;
-webkit-transform: translateX(-20px);
transform: translateX(-20px);
}
100% {
opacity: 0;
-webkit-transform: translateX(2000px);
transform: translateX(2000px);
}
}
@keyframes bounceOutRight {
0% {
-webkit-transform: translateX(0);
-ms-transform: translateX(0);
transform: translateX(0);
}
20% {
opacity: 1;
-webkit-transform: translateX(-20px);
-ms-transform: translateX(-20px);
transform: translateX(-20px);
}
100% {
opacity: 0;
-webkit-transform: translateX(2000px);
-ms-transform: translateX(2000px);
transform: translateX(2000px);
}
}
.bounceOutRight {
-webkit-animation-name: bounceOutRight;
animation-name: bounceOutRight;
}
@-webkit-keyframes bounceOutUp {
0% {
-webkit-transform: translateY(0);
transform: translateY(0);
}
20% {
opacity: 1;
-webkit-transform: translateY(20px);
transform: translateY(20px);
}
100% {
opacity: 0;
-webkit-transform: translateY(-2000px);
transform: translateY(-2000px);
}
}
@keyframes bounceOutUp {
0% {
-webkit-transform: translateY(0);
-ms-transform: translateY(0);
transform: translateY(0);
}
20% {
opacity: 1;
-webkit-transform: translateY(20px);
-ms-transform: translateY(20px);
transform: translateY(20px);
}
100% {
opacity: 0;
-webkit-transform: translateY(-2000px);
-ms-transform: translateY(-2000px);
transform: translateY(-2000px);
}
}
.bounceOutUp {
-webkit-animation-name: bounceOutUp;
animation-name: bounceOutUp;
}
@-webkit-keyframes fadeIn {
0% {
opacity: 0;
}
100% {
opacity: 1;
}
}
@keyframes fadeIn {
0% {
opacity: 0;
}
100% {
opacity: 1;
}
}
.fadeIn {
-webkit-animation-name: fadeIn;
animation-name: fadeIn;
}
@-webkit-keyframes fadeInDown {
0% {
opacity: 0;
-webkit-transform: translateY(-20px);
transform: translateY(-20px);
}
100% {
opacity: 1;
-webkit-transform: translateY(0);
transform: translateY(0);
}
}
@keyframes fadeInDown {
0% {
opacity: 0;
-webkit-transform: translateY(-20px);
-ms-transform: translateY(-20px);
transform: translateY(-20px);
}
100% {
opacity: 1;
-webkit-transform: translateY(0);
-ms-transform: translateY(0);
transform: translateY(0);
}
}
.fadeInDown {
-webkit-animation-name: fadeInDown;
animation-name: fadeInDown;
}
@-webkit-keyframes fadeInDownBig {
0% {
opacity: 0;
-webkit-transform: translateY(-2000px);
transform: translateY(-2000px);
}
100% {
opacity: 1;
-webkit-transform: translateY(0);
transform: translateY(0);
}
}
@keyframes fadeInDownBig {
0% {
opacity: 0;
-webkit-transform: translateY(-2000px);
-ms-transform: translateY(-2000px);
transform: translateY(-2000px);
}
100% {
opacity: 1;
-webkit-transform: translateY(0);
-ms-transform: translateY(0);
transform: translateY(0);
}
}
.fadeInDownBig {
-webkit-animation-name: fadeInDownBig;
animation-name: fadeInDownBig;
}
@-webkit-keyframes fadeInLeft {
0% {
opacity: 0;
-webkit-transform: translateX(-20px);
transform: translateX(-20px);
}
100% {
opacity: 1;
-webkit-transform: translateX(0);
transform: translateX(0);
}
}
@keyframes fadeInLeft {
0% {
opacity: 0;
-webkit-transform: translateX(-20px);
-ms-transform: translateX(-20px);
transform: translateX(-20px);
}
100% {
opacity: 1;
-webkit-transform: translateX(0);
-ms-transform: translateX(0);
transform: translateX(0);
}
}
.fadeInLeft {
-webkit-animation-name: fadeInLeft;
animation-name: fadeInLeft;
}
@-webkit-keyframes fadeInLeftBig {
0% {
opacity: 0;
-webkit-transform: translateX(-2000px);
transform: translateX(-2000px);
}
100% {
opacity: 1;
-webkit-transform: translateX(0);
transform: translateX(0);
}
}
@keyframes fadeInLeftBig {
0% {
opacity: 0;
-webkit-transform: translateX(-2000px);
-ms-transform: translateX(-2000px);
transform: translateX(-2000px);
}
100% {
opacity: 1;
-webkit-transform: translateX(0);
-ms-transform: translateX(0);
transform: translateX(0);
}
}
.fadeInLeftBig {
-webkit-animation-name: fadeInLeftBig;
animation-name: fadeInLeftBig;
}
@-webkit-keyframes fadeInRight {
0% {
opacity: 0;
-webkit-transform: translateX(20px);
transform: translateX(20px);
}
100% {
opacity: 1;
-webkit-transform: translateX(0);
transform: translateX(0);
}
}
@keyframes fadeInRight {
0% {
opacity: 0;
-webkit-transform: translateX(20px);
-ms-transform: translateX(20px);
transform: translateX(20px);
}
100% {
opacity: 1;
-webkit-transform: translateX(0);
-ms-transform: translateX(0);
transform: translateX(0);
}
}
.fadeInRight {
-webkit-animation-name: fadeInRight;
animation-name: fadeInRight;
}
@-webkit-keyframes fadeInRightBig {
0% {
opacity: 0;
-webkit-transform: translateX(2000px);
transform: translateX(2000px);
}
100% {
opacity: 1;
-webkit-transform: translateX(0);
transform: translateX(0);
}
}
@keyframes fadeInRightBig {
0% {
opacity: 0;
-webkit-transform: translateX(2000px);
-ms-transform: translateX(2000px);
transform: translateX(2000px);
}
100% {
opacity: 1;
-webkit-transform: translateX(0);
-ms-transform: translateX(0);
transform: translateX(0);
}
}
.fadeInRightBig {
-webkit-animation-name: fadeInRightBig;
animation-name: fadeInRightBig;
}
@-webkit-keyframes fadeInUp {
0% {
opacity: 0;
-webkit-transform: translateY(20px);
transform: translateY(20px);
}
100% {
opacity: 1;
-webkit-transform: translateY(0);
transform: translateY(0);
}
}
@keyframes fadeInUp {
0% {
opacity: 0;
-webkit-transform: translateY(20px);
-ms-transform: translateY(20px);
transform: translateY(20px);
}
100% {
opacity: 1;
-webkit-transform: translateY(0);
-ms-transform: translateY(0);
transform: translateY(0);
}
}
.fadeInUp {
-webkit-animation-name: fadeInUp;
animation-name: fadeInUp;
}
@-webkit-keyframes fadeInUpBig {
0% {
opacity: 0;
-webkit-transform: translateY(2000px);
transform: translateY(2000px);
}
100% {
opacity: 1;
-webkit-transform: translateY(0);
transform: translateY(0);
}
}
@keyframes fadeInUpBig {
0% {
opacity: 0;
-webkit-transform: translateY(2000px);
-ms-transform: translateY(2000px);
transform: translateY(2000px);
}
100% {
opacity: 1;
-webkit-transform: translateY(0);
-ms-transform: translateY(0);
transform: translateY(0);
}
}
.fadeInUpBig {
-webkit-animation-name: fadeInUpBig;
animation-name: fadeInUpBig;
}
@-webkit-keyframes fadeOut {
0% {
opacity: 1;
}
100% {
opacity: 0;
}
}
@keyframes fadeOut {
0% {
opacity: 1;
}
100% {
opacity: 0;
}
}
.fadeOut {
-webkit-animation-name: fadeOut;
animation-name: fadeOut;
}
@-webkit-keyframes fadeOutDown {
0% {
opacity: 1;
-webkit-transform: translateY(0);
transform: translateY(0);
}
100% {
opacity: 0;
-webkit-transform: translateY(20px);
transform: translateY(20px);
}
}
@keyframes fadeOutDown {
0% {
opacity: 1;
-webkit-transform: translateY(0);
-ms-transform: translateY(0);
transform: translateY(0);
}
100% {
opacity: 0;
-webkit-transform: translateY(20px);
-ms-transform: translateY(20px);
transform: translateY(20px);
}
}
.fadeOutDown {
-webkit-animation-name: fadeOutDown;
animation-name: fadeOutDown;
}
@-webkit-keyframes fadeOutDownBig {
0% {
opacity: 1;
-webkit-transform: translateY(0);
transform: translateY(0);
}
100% {
opacity: 0;
-webkit-transform: translateY(2000px);
transform: translateY(2000px);
}
}
@keyframes fadeOutDownBig {
0% {
opacity: 1;
-webkit-transform: translateY(0);
-ms-transform: translateY(0);
gitextract_xq0sadbf/
├── .classpath
├── .gitignore
├── .project
├── .settings/
│ ├── org.eclipse.core.resources.prefs
│ ├── org.eclipse.jdt.core.prefs
│ └── org.eclipse.m2e.core.prefs
├── README.md
├── pom.xml
└── src/
├── main/
│ ├── java/
│ │ └── com/
│ │ └── lcore/
│ │ └── hr/
│ │ ├── core/
│ │ │ ├── datamng/
│ │ │ │ ├── BaseDataMng.java
│ │ │ │ └── impl/
│ │ │ │ └── BaseDataMngImpl.java
│ │ │ ├── entity/
│ │ │ │ ├── Module.java
│ │ │ │ ├── Role.java
│ │ │ │ ├── RoleToUserRel.java
│ │ │ │ ├── Root.java
│ │ │ │ └── User.java
│ │ │ └── utils/
│ │ │ ├── HibernateTemplateManger.java
│ │ │ ├── JDBCTemplateManager.java
│ │ │ ├── SpringFactory.java
│ │ │ └── TemplateFactory.java
│ │ ├── entity/
│ │ │ ├── Organization.java
│ │ │ ├── OrganizationAddr.java
│ │ │ ├── OrganizationCategroy.java
│ │ │ └── OrganizationType.java
│ │ ├── interceptor/
│ │ │ └── SecurityInterceptor.java
│ │ ├── menu/
│ │ │ ├── auth/
│ │ │ │ ├── controller/
│ │ │ │ │ ├── ModuleController.java
│ │ │ │ │ ├── RoleController.java
│ │ │ │ │ └── UserController.java
│ │ │ │ └── service/
│ │ │ │ ├── ModuleService.java
│ │ │ │ ├── RoleService.java
│ │ │ │ ├── UserService.java
│ │ │ │ └── impl/
│ │ │ │ ├── ModuleServiceImpl.java
│ │ │ │ ├── RoleServiceImpl.java
│ │ │ │ └── UserServiceImpl.java
│ │ │ ├── base/
│ │ │ │ ├── controller/
│ │ │ │ │ ├── BaseController.java
│ │ │ │ │ └── LoginController.java
│ │ │ │ └── service/
│ │ │ │ ├── BaseService.java
│ │ │ │ └── impl/
│ │ │ │ └── BaseServiceImpl.java
│ │ │ └── organization/
│ │ │ ├── controller/
│ │ │ │ └── OrganizationController.java
│ │ │ └── service/
│ │ │ ├── OrganizationService.java
│ │ │ └── impl/
│ │ │ └── OrganizationServiceImpl.java
│ │ ├── module/
│ │ │ └── listener/
│ │ │ └── StartupListener.java
│ │ ├── utils/
│ │ │ ├── Env.java
│ │ │ ├── GeneralBeanOrMapUtils.java
│ │ │ └── GlobalConfigHolder.java
│ │ └── view/
│ │ └── ModelView.java
│ ├── resources/
│ │ ├── i18n/
│ │ │ ├── messages_en.properties
│ │ │ └── messages_zh.properties
│ │ ├── jdbc.properties
│ │ ├── log4j.properties
│ │ ├── spring-common.xml
│ │ ├── spring-mvc.xml
│ │ └── sys.properties
│ └── webapp/
│ ├── WEB-INF/
│ │ ├── views/
│ │ │ ├── admin/
│ │ │ │ └── index.vm
│ │ │ ├── auth/
│ │ │ │ ├── module/
│ │ │ │ │ ├── addModule.vm
│ │ │ │ │ ├── moduleList.easyui.vm
│ │ │ │ │ ├── moduleList.vm
│ │ │ │ │ └── updateModule.vm
│ │ │ │ ├── role/
│ │ │ │ │ ├── addRole.vm
│ │ │ │ │ ├── roleAllocation.vm
│ │ │ │ │ ├── roleList.vm
│ │ │ │ │ └── updateRole.vm
│ │ │ │ └── user/
│ │ │ │ ├── addUser.vm
│ │ │ │ ├── updateUser.vm
│ │ │ │ └── userList.vm
│ │ │ ├── common/
│ │ │ │ ├── header.vm
│ │ │ │ ├── layout.vm
│ │ │ │ └── left.vm
│ │ │ ├── login/
│ │ │ │ └── login.vm
│ │ │ └── ou/
│ │ │ ├── addOu.vm
│ │ │ ├── ouList.vm
│ │ │ └── updateOu.vm
│ │ └── web.xml
│ └── static/
│ ├── css/
│ │ ├── animate.css
│ │ ├── bootstrap-social.css
│ │ ├── bootstrap-table-editable.css
│ │ ├── bootstrap-table.css
│ │ ├── bootstrap.css
│ │ ├── build.css
│ │ ├── flavr.css
│ │ ├── jquery.datetimepicker.css
│ │ ├── layout.css
│ │ ├── metro-bootstrap.css
│ │ ├── simple-line-icons.css
│ │ ├── style.css
│ │ └── templatemo_style.css
│ ├── easyui/
│ │ ├── easyloader.js
│ │ ├── jquery.easyui.patch.js
│ │ ├── locale/
│ │ │ ├── easyui-lang-af.js
│ │ │ ├── easyui-lang-am.js
│ │ │ ├── easyui-lang-ar.js
│ │ │ ├── easyui-lang-bg.js
│ │ │ ├── easyui-lang-ca.js
│ │ │ ├── easyui-lang-cs.js
│ │ │ ├── easyui-lang-cz.js
│ │ │ ├── easyui-lang-da.js
│ │ │ ├── easyui-lang-de.js
│ │ │ ├── easyui-lang-el.js
│ │ │ ├── easyui-lang-en.js
│ │ │ ├── easyui-lang-es.js
│ │ │ ├── easyui-lang-fr.js
│ │ │ ├── easyui-lang-it.js
│ │ │ ├── easyui-lang-jp.js
│ │ │ ├── easyui-lang-nl.js
│ │ │ ├── easyui-lang-pl.js
│ │ │ ├── easyui-lang-pt_BR.js
│ │ │ ├── easyui-lang-ru.js
│ │ │ ├── easyui-lang-sv_SE.js
│ │ │ ├── easyui-lang-tr.js
│ │ │ ├── easyui-lang-zh_CN.js
│ │ │ └── easyui-lang-zh_TW.js
│ │ ├── plugins/
│ │ │ ├── jquery.accordion.js
│ │ │ ├── jquery.calendar.js
│ │ │ ├── jquery.combo.js
│ │ │ ├── jquery.combobox.js
│ │ │ ├── jquery.combogrid.js
│ │ │ ├── jquery.combotree.js
│ │ │ ├── jquery.datagrid.js
│ │ │ ├── jquery.datebox.js
│ │ │ ├── jquery.datetimebox.js
│ │ │ ├── jquery.datetimespinner.js
│ │ │ ├── jquery.dialog.js
│ │ │ ├── jquery.draggable.js
│ │ │ ├── jquery.droppable.js
│ │ │ ├── jquery.filebox.js
│ │ │ ├── jquery.form.js
│ │ │ ├── jquery.layout.js
│ │ │ ├── jquery.linkbutton.js
│ │ │ ├── jquery.menu.js
│ │ │ ├── jquery.menubutton.js
│ │ │ ├── jquery.messager.js
│ │ │ ├── jquery.numberbox.js
│ │ │ ├── jquery.numberspinner.js
│ │ │ ├── jquery.pagination.js
│ │ │ ├── jquery.panel.js
│ │ │ ├── jquery.parser.js
│ │ │ ├── jquery.progressbar.js
│ │ │ ├── jquery.propertygrid.js
│ │ │ ├── jquery.resizable.js
│ │ │ ├── jquery.searchbox.js
│ │ │ ├── jquery.slider.js
│ │ │ ├── jquery.spinner.js
│ │ │ ├── jquery.splitbutton.js
│ │ │ ├── jquery.tabs.js
│ │ │ ├── jquery.textbox.js
│ │ │ ├── jquery.timespinner.js
│ │ │ ├── jquery.tooltip.js
│ │ │ ├── jquery.tree.js
│ │ │ ├── jquery.treegrid.js
│ │ │ ├── jquery.validatebox.js
│ │ │ └── jquery.window.js
│ │ ├── src/
│ │ │ ├── easyloader.js
│ │ │ ├── jquery.accordion.js
│ │ │ ├── jquery.calendar.js
│ │ │ ├── jquery.combobox.js
│ │ │ ├── jquery.datebox.js
│ │ │ ├── jquery.draggable.js
│ │ │ ├── jquery.droppable.js
│ │ │ ├── jquery.form.js
│ │ │ ├── jquery.linkbutton.js
│ │ │ ├── jquery.menu.js
│ │ │ ├── jquery.parser.js
│ │ │ ├── jquery.progressbar.js
│ │ │ ├── jquery.propertygrid.js
│ │ │ ├── jquery.resizable.js
│ │ │ ├── jquery.slider.js
│ │ │ ├── jquery.tabs.js
│ │ │ └── jquery.window.js
│ │ └── themes/
│ │ ├── color.css
│ │ ├── icon.css
│ │ └── metro/
│ │ ├── accordion.css
│ │ ├── calendar.css
│ │ ├── combo.css
│ │ ├── combobox.css
│ │ ├── datagrid.css
│ │ ├── datebox.css
│ │ ├── dialog.css
│ │ ├── easyui.css
│ │ ├── filebox.css
│ │ ├── layout.css
│ │ ├── linkbutton.css
│ │ ├── menu.css
│ │ ├── menubutton.css
│ │ ├── messager.css
│ │ ├── numberbox.css
│ │ ├── pagination.css
│ │ ├── panel.css
│ │ ├── progressbar.css
│ │ ├── propertygrid.css
│ │ ├── searchbox.css
│ │ ├── slider.css
│ │ ├── spinner.css
│ │ ├── splitbutton.css
│ │ ├── tabs.css
│ │ ├── textbox.css
│ │ ├── tooltip.css
│ │ ├── tree.css
│ │ ├── validatebox.css
│ │ └── window.css
│ ├── fonts/
│ │ └── FontAwesome.otf
│ ├── jcheckbox/
│ │ ├── css/
│ │ │ └── jquery-labelauty.css
│ │ └── js/
│ │ └── jquery-labelauty.js
│ └── js/
│ ├── bootstrap-editable.js
│ ├── bootstrap-table-editable.js
│ ├── bootstrap-table-export.js
│ ├── bootstrap-table-zh-CN.js
│ ├── bootstrap-table.js
│ ├── bt-validate.js
│ ├── dateFormat.js
│ ├── flavr.js
│ ├── jquery.datetimepicker.js
│ ├── jquery.nicescroll.js
│ ├── json.js
│ └── tableExport.js
└── test/
├── java/
│ └── com/
│ └── test/
│ └── bpm/
│ └── TestBpm.java
└── resources/
├── jdbc.properties
├── log4j.properties
├── spring-common.xml
├── spring-mvc.xml
└── sys.properties
SYMBOL INDEX (841 symbols across 104 files)
FILE: src/main/java/com/lcore/hr/core/datamng/BaseDataMng.java
type BaseDataMng (line 13) | public interface BaseDataMng {
method saveObj (line 21) | public abstract String saveObj(Root root) throws Exception;
method saveOrUpdate (line 28) | public abstract void saveOrUpdate(Root root) throws Exception;
method updateObj (line 35) | public abstract void updateObj(Root root) throws Exception;
method getObj (line 43) | public abstract Root getObj(String className, String id);
method getObj (line 51) | public abstract Root getObj(Class<?> className,String id);
method deleteObj (line 60) | public abstract void deleteObj(String className,String id) throws Exce...
method deleteObj (line 69) | public abstract void deleteObj(Class<?> className,String id) throws Ex...
method getObjByCondition (line 77) | public abstract Root getObjByCondition(String className,String conditi...
method getObjByCondition (line 85) | public abstract Root getObjByCondition(Class<?> className,String condi...
method getObjListByCondition (line 93) | public abstract List<Root> getObjListByCondition(String className,Stri...
method getObjListByCondition (line 101) | public abstract List<Root> getObjListByCondition(Class<?> className,St...
method getPagedObjListWithCondition (line 111) | public abstract List<Root> getPagedObjListWithCondition(String classNa...
method getPagedObjListWithCondition (line 121) | public abstract List<Root> getPagedObjListWithCondition(Class<?> class...
method getCountByCondition (line 129) | public abstract long getCountByCondition(String className,String condi...
method querySql (line 131) | public List<Map<String,Object>> querySql(String sql,List<Object> param);
FILE: src/main/java/com/lcore/hr/core/datamng/impl/BaseDataMngImpl.java
class BaseDataMngImpl (line 22) | @Repository("baseDataMng")
method BaseDataMngImpl (line 26) | public BaseDataMngImpl() {
method getHibernateTemplate (line 30) | protected HibernateTemplate getHibernateTemplate() {
method getSession (line 34) | protected Session getSession() {
method saveObj (line 38) | public String saveObj(Root root) throws Exception {
method saveOrUpdate (line 49) | public void saveOrUpdate(Root root) throws Exception {
method updateObj (line 53) | public void updateObj(Root root) throws Exception {
method getObj (line 62) | public Root getObj(String className, String id) {
method getObj (line 65) | public Root getObj(Class<?> className, String id) {
method deleteObj (line 69) | public void deleteObj(String className, String id) throws Exception {
method deleteObj (line 74) | public void deleteObj(Class<?> className, String id) throws Exception {
method getObjByCondition (line 79) | public Root getObjByCondition(String className, String condition) {
method getObjByCondition (line 84) | public Root getObjByCondition(Class<?> className, String condition) {
method getObjListByCondition (line 87) | @SuppressWarnings("unchecked")
method getObjListByCondition (line 100) | public List<Root> getObjListByCondition(Class<?> className, String con...
method getPagedObjListWithCondition (line 107) | public List<Root> getPagedObjListWithCondition(String className,
method getPagedObjListWithCondition (line 124) | public List<Root> getPagedObjListWithCondition(Class<?> className,
method getCountByCondition (line 129) | public long getCountByCondition(String className,String condition){
method querySql (line 133) | @Override
FILE: src/main/java/com/lcore/hr/core/entity/Module.java
class Module (line 14) | @Entity
method getIndexNum (line 23) | public Integer getIndexNum() {
method setIndexNum (line 27) | public void setIndexNum(Integer indexNum) {
method getModuleName (line 31) | public String getModuleName() {
method setModuleName (line 35) | public void setModuleName(String moduleName) {
method getName (line 39) | public String getName() {
method setName (line 43) | public void setName(String name) {
method getParentId (line 47) | public String getParentId() {
method setParentId (line 51) | public void setParentId(String parentId) {
method getTarget (line 55) | public String getTarget() {
method setTarget (line 59) | public void setTarget(String target) {
FILE: src/main/java/com/lcore/hr/core/entity/Role.java
class Role (line 12) | @Entity
method getName (line 20) | public String getName() {
method setName (line 23) | public void setName(String name) {
method getRemark (line 26) | public String getRemark() {
method setRemark (line 29) | public void setRemark(String remark) {
FILE: src/main/java/com/lcore/hr/core/entity/RoleToUserRel.java
class RoleToUserRel (line 8) | @Entity
method getUserId (line 14) | public String getUserId() {
method setUserId (line 17) | public void setUserId(String userId) {
method getRoleId (line 20) | public String getRoleId() {
method setRoleId (line 23) | public void setRoleId(String roleId) {
FILE: src/main/java/com/lcore/hr/core/entity/Root.java
class Root (line 15) | @Entity
method getId (line 27) | @Id
method setId (line 34) | public void setId(String id) {
method getCreateTime (line 37) | public Date getCreateTime() {
method setCreateTime (line 41) | public void setCreateTime(Date createTime) {
method getUpdateTime (line 45) | public Date getUpdateTime() {
method setUpdateTime (line 49) | public void setUpdateTime(Date updateTime) {
method getCreater (line 53) | public String getCreater() {
method setCreater (line 57) | public void setCreater(String creater) {
method getUpdater (line 61) | public String getUpdater() {
method setUpdater (line 65) | public void setUpdater(String updater) {
FILE: src/main/java/com/lcore/hr/core/entity/User.java
class User (line 12) | @Entity
method getUserName (line 21) | public String getUserName() {
method setUserName (line 25) | public void setUserName(String userName) {
method getPassword (line 29) | public String getPassword() {
method setPassword (line 33) | public void setPassword(String password) {
method getGender (line 37) | public String getGender() {
method setGender (line 41) | public void setGender(String gender) {
FILE: src/main/java/com/lcore/hr/core/utils/HibernateTemplateManger.java
class HibernateTemplateManger (line 6) | public class HibernateTemplateManger{
method HibernateTemplateManger (line 8) | private HibernateTemplateManger(){
method getInstance (line 12) | public static HibernateTemplateManger getInstance(){
method getHibernateTemplate (line 19) | protected HibernateTemplate getHibernateTemplate(String templateId){
method cacheHibernateTemplate (line 24) | private synchronized void cacheHibernateTemplate(String templateName) {
FILE: src/main/java/com/lcore/hr/core/utils/JDBCTemplateManager.java
class JDBCTemplateManager (line 7) | public class JDBCTemplateManager {
method JDBCTemplateManager (line 8) | private JDBCTemplateManager(){
method getInstance (line 12) | public static JDBCTemplateManager getInstance(){
method createTemplate (line 19) | private synchronized JdbcTemplate createTemplate(String templateId) {
method getTemplate (line 27) | protected JdbcTemplate getTemplate(String templateId){
FILE: src/main/java/com/lcore/hr/core/utils/SpringFactory.java
class SpringFactory (line 7) | public class SpringFactory implements ApplicationContextAware{
method SpringFactory (line 8) | public SpringFactory() {
method setApplicationContext (line 11) | public void setApplicationContext(ApplicationContext applicationContext)
method getObject (line 16) | public static Object getObject(String id) {
method getApplicationContext (line 22) | public static ApplicationContext getApplicationContext() {
FILE: src/main/java/com/lcore/hr/core/utils/TemplateFactory.java
class TemplateFactory (line 6) | public class TemplateFactory {
method TemplateFactory (line 8) | private TemplateFactory(){
method getHibernateTemplateById (line 12) | public static HibernateTemplate getHibernateTemplateById(String templa...
method getJDBCTemplateById (line 16) | public static JdbcTemplate getJDBCTemplateById(String templateId) {
FILE: src/main/java/com/lcore/hr/entity/Organization.java
class Organization (line 14) | @Entity
method getOuName (line 26) | public String getOuName() {
method setOuName (line 30) | public void setOuName(String ouName) {
method getStartTime (line 34) | public Date getStartTime() {
method setStartTime (line 38) | public void setStartTime(Date startTime) {
method getEndTime (line 42) | public Date getEndTime() {
method setEndTime (line 46) | public void setEndTime(Date endTime) {
method getAddressId (line 50) | public String getAddressId() {
method setAddressId (line 54) | public void setAddressId(String addressId) {
method getOuTypeId (line 58) | public String getOuTypeId() {
method setOuTypeId (line 62) | public void setOuTypeId(String ouTypeId) {
FILE: src/main/java/com/lcore/hr/entity/OrganizationAddr.java
class OrganizationAddr (line 10) | @Entity
method getPlace (line 19) | public String getPlace() {
method setPlace (line 22) | public void setPlace(String place) {
method getAddress (line 25) | public String getAddress() {
method setAddress (line 28) | public void setAddress(String address) {
method getIsInside (line 31) | public Boolean getIsInside() {
method setIsInside (line 34) | public void setIsInside(Boolean isInside) {
method getAddress_in (line 37) | public String getAddress_in() {
method setAddress_in (line 40) | public void setAddress_in(String address_in) {
FILE: src/main/java/com/lcore/hr/entity/OrganizationCategroy.java
class OrganizationCategroy (line 10) | @Entity
method getName (line 17) | public String getName() {
method setName (line 21) | public void setName(String name) {
method getIsEnable (line 25) | public Boolean getIsEnable() {
method setIsEnable (line 29) | public void setIsEnable(Boolean isEnable) {
FILE: src/main/java/com/lcore/hr/entity/OrganizationType.java
class OrganizationType (line 10) | @Entity
method getName (line 17) | public String getName() {
method setName (line 21) | public void setName(String name) {
method getIsEnable (line 25) | public Boolean getIsEnable() {
method setIsEnable (line 29) | public void setIsEnable(Boolean isEnable) {
FILE: src/main/java/com/lcore/hr/interceptor/SecurityInterceptor.java
class SecurityInterceptor (line 19) | public class SecurityInterceptor implements HandlerInterceptor{
method afterCompletion (line 22) | public void afterCompletion(HttpServletRequest req,
method postHandle (line 29) | public void postHandle(HttpServletRequest arg0, HttpServletResponse arg1,
method preHandle (line 34) | public boolean preHandle(HttpServletRequest req, HttpServletResponse res,
FILE: src/main/java/com/lcore/hr/menu/auth/controller/ModuleController.java
class ModuleController (line 24) | @Controller
method addModule (line 31) | @RequestMapping("/addModule")
method deleteModule (line 39) | @RequestMapping("/deleteModule")
method getModuleListDropDown (line 52) | @RequestMapping("/getModuleListDropDown")
method getModuleList (line 59) | @RequestMapping("/getModuleList")
method updateModule (line 70) | @RequestMapping("/updateModule")
method moduleList (line 78) | @RequestMapping("/listView")
method addModuleView (line 84) | @RequestMapping("/addModuleView")
method updateModuleView (line 90) | @RequestMapping("/updateModuleView")
FILE: src/main/java/com/lcore/hr/menu/auth/controller/RoleController.java
class RoleController (line 25) | @Controller
method getRoleList (line 48) | @RequestMapping("/getRoleList")
method roleList (line 76) | @RequestMapping("/roleList")
method getUserListByRoleId (line 100) | @RequestMapping("/getUserListByRoleId")
method addRole (line 131) | @RequestMapping("/addRole")
method deleteRole (line 148) | @RequestMapping("/deleteRole")
method updateRole (line 170) | @RequestMapping("/updateRole")
method updateRoleToUserRel (line 179) | @RequestMapping("/updateRoleToUserRel")
method roleList (line 195) | @RequestMapping("/listView")
method addRoleView (line 207) | @RequestMapping("/addRoleView")
method updateRoleView (line 220) | @RequestMapping("/updateRoleView")
method roleAllocation (line 233) | @RequestMapping("/roleAllocationView")
FILE: src/main/java/com/lcore/hr/menu/auth/controller/UserController.java
class UserController (line 23) | @Controller
method getUserList (line 42) | @RequestMapping("/getUserList")
method addUser (line 54) | @RequestMapping("/addUser")
method deleteOu (line 62) | @RequestMapping("/deleteUser")
method deleteOu (line 74) | @RequestMapping("/updateUser")
method userList (line 89) | @RequestMapping("/listView")
method addUserView (line 102) | @RequestMapping("/addUserView")
method updateUserView (line 115) | @RequestMapping("/updateUserView")
FILE: src/main/java/com/lcore/hr/menu/auth/service/ModuleService.java
type ModuleService (line 8) | public interface ModuleService {
method addModule (line 9) | public abstract void addModule(Module module) throws Exception;
method getModuleList (line 10) | public abstract List<Map<String,Object>> getModuleList(int offset,int ...
method deleteModule (line 11) | public abstract void deleteModule(List<String> ids) throws Exception;
method updateModule (line 12) | public abstract void updateModule(Module module) throws Exception;
FILE: src/main/java/com/lcore/hr/menu/auth/service/RoleService.java
type RoleService (line 9) | public interface RoleService {
method getRoleList (line 19) | public abstract List<Root> getRoleList(int offset,int limit,String sor...
method addRole (line 25) | public abstract void addRole(Role role) throws Exception;
method deleteRole (line 31) | public abstract void deleteRole(List<String> ids) throws Exception;
method updateRole (line 38) | public abstract void updateRole(Role role) throws Exception;
method getUserIdsByRoleId (line 46) | public List<String> getUserIdsByRoleId(String roleId) throws Exception;
method deleteUserIdsByRoleId (line 53) | public void deleteUserIdsByRoleId(String roleId) throws Exception;
method updateRoleToUserRel (line 61) | public void updateRoleToUserRel(String roleId,String[] userIds) throws...
FILE: src/main/java/com/lcore/hr/menu/auth/service/UserService.java
type UserService (line 9) | public interface UserService extends BaseService{
method getUserList (line 19) | public abstract List<Root> getUserList(int offset,int limit,String sor...
method addUser (line 25) | public abstract void addUser(User user) throws Exception;
method deleteUser (line 31) | public abstract void deleteUser(List<String> ids) throws Exception;
method updateUser (line 38) | public abstract void updateUser(User user) throws Exception;
FILE: src/main/java/com/lcore/hr/menu/auth/service/impl/ModuleServiceImpl.java
class ModuleServiceImpl (line 19) | @Service("moduleService")
method addModule (line 23) | @Override
method getModuleList (line 28) | @Override
method deleteModule (line 47) | @Override
method updateModule (line 55) | @Override
FILE: src/main/java/com/lcore/hr/menu/auth/service/impl/RoleServiceImpl.java
class RoleServiceImpl (line 17) | @Service("roleService")
method getRoleList (line 21) | @Override
method addRole (line 34) | @Override
method deleteRole (line 39) | @Override
method updateRole (line 47) | @Override
method getUserIdsByRoleId (line 52) | @Override
method updateRoleToUserRel (line 68) | @Override
method deleteUserIdsByRoleId (line 83) | @Override
FILE: src/main/java/com/lcore/hr/menu/auth/service/impl/UserServiceImpl.java
class UserServiceImpl (line 13) | @Service("userService")
method getUserList (line 17) | @Override
method addUser (line 31) | @Override
method deleteUser (line 37) | @Override
method updateUser (line 45) | @Override
FILE: src/main/java/com/lcore/hr/menu/base/controller/BaseController.java
class BaseController (line 18) | @Controller
method login (line 21) | @RequestMapping("/")
method index (line 27) | @RequestMapping("/index")
method lang (line 33) | @RequestMapping("/lang")
FILE: src/main/java/com/lcore/hr/menu/base/controller/LoginController.java
class LoginController (line 25) | @Controller
method login (line 29) | @RequestMapping("/login")
method logout (line 60) | @RequestMapping("/logout")
method loginSYS (line 69) | @RequestMapping("/loginSYS")
method loginUrl (line 75) | @RequestMapping("/loginUrl")
FILE: src/main/java/com/lcore/hr/menu/base/service/BaseService.java
type BaseService (line 8) | public interface BaseService {
method save (line 15) | public abstract String save(Root root) throws Exception;
method saveOrUpdate (line 22) | public abstract void saveOrUpdate(Root root) throws Exception;
method update (line 29) | public abstract void update(Root root) throws Exception;
method getObjById (line 37) | public abstract Root getObjById(String className, String id);
method getObjById (line 45) | public abstract Root getObjById(Class<?> className,String id);
method delete (line 54) | public abstract void delete(String className,String id) throws Exception;
method delete (line 63) | public abstract void delete(Class<?> className,String id) throws Excep...
method getObjByCondition (line 71) | public abstract Root getObjByCondition(String className,String conditi...
method getObjByCondition (line 79) | public abstract Root getObjByCondition(Class<?> className,String condi...
method getObjListByCondition (line 87) | public abstract List<Root> getObjListByCondition(String className,Stri...
method getObjListByCondition (line 95) | public abstract List<Root> getObjListByCondition(Class<?> className,St...
method getPagedObjListWithCondition (line 105) | public abstract List<Root> getPagedObjListWithCondition(String classNa...
method getPagedObjListWithCondition (line 115) | public abstract List<Root> getPagedObjListWithCondition(Class<?> class...
method getCountByCondition (line 123) | public long getCountByCondition(String className,String condition);
method getObjListByHql (line 131) | public abstract List<Root> getObjListByHql(String hql,List<Object> objs);
method getObjListByHql (line 141) | public abstract List<Root> getObjListByHql(String hql,List<Object> obj...
method getObjListBySql (line 149) | public abstract List<Map<String,Object>> getObjListBySql(String sql,Li...
method getObjListBySql (line 159) | public abstract List<Map<String,Object>> getObjListBySql(String sql,Li...
method updateBySql (line 167) | public void updateBySql(String sql,List<Object> objs) throws Exception;
method deleteBySql (line 175) | public void deleteBySql(String sql, List<Object> objs) throws Exception;
FILE: src/main/java/com/lcore/hr/menu/base/service/impl/BaseServiceImpl.java
class BaseServiceImpl (line 15) | @Service("baseService")
method save (line 21) | @Override
method saveOrUpdate (line 25) | @Override
method update (line 29) | @Override
method getObjById (line 33) | @Override
method getObjById (line 37) | @Override
method delete (line 41) | @Override
method delete (line 45) | @Override
method getObjByCondition (line 49) | @Override
method getObjByCondition (line 53) | @Override
method getObjListByCondition (line 57) | @Override
method getObjListByCondition (line 62) | @Override
method getPagedObjListWithCondition (line 66) | @Override
method getPagedObjListWithCondition (line 71) | @Override
method getCountByCondition (line 76) | @Override
method getObjListByHql (line 81) | @Override
method getObjListByHql (line 86) | @Override
method getObjListBySql (line 92) | @Override
method getObjListBySql (line 98) | @Override
method updateBySql (line 104) | @Override
method deleteBySql (line 109) | @Override
FILE: src/main/java/com/lcore/hr/menu/organization/controller/OrganizationController.java
class OrganizationController (line 22) | @Controller
method getOuList (line 28) | @RequestMapping("/getOuList")
method addOu (line 39) | @RequestMapping("/addOu")
method deleteOu (line 46) | @RequestMapping("/deleteOu")
method deleteOu (line 58) | @RequestMapping("/updateOu")
method list (line 73) | @RequestMapping("/list")
method addOuView (line 84) | @RequestMapping("/addOuView")
method updateOuView (line 96) | @RequestMapping("/updateOuView")
FILE: src/main/java/com/lcore/hr/menu/organization/service/OrganizationService.java
type OrganizationService (line 9) | public interface OrganizationService extends BaseService{
method getOuList (line 19) | public abstract List<Root> getOuList(int offset,int limit,String sort,...
method addOu (line 25) | public abstract void addOu(Organization org) throws Exception;
method deleteOu (line 31) | public abstract void deleteOu(List<String> ids) throws Exception;
method updateOu (line 38) | public abstract void updateOu(Organization org) throws Exception;
FILE: src/main/java/com/lcore/hr/menu/organization/service/impl/OrganizationServiceImpl.java
class OrganizationServiceImpl (line 14) | @Service("organizationService")
method getOuList (line 19) | @Override
method addOu (line 39) | @Override
method deleteOu (line 45) | @Override
method updateOu (line 53) | @Override
FILE: src/main/java/com/lcore/hr/module/listener/StartupListener.java
class StartupListener (line 14) | public class StartupListener implements ServletContextListener {
method contextDestroyed (line 16) | public void contextDestroyed(ServletContextEvent event) {}
method contextInitialized (line 18) | public void contextInitialized(ServletContextEvent event) {
method initSys (line 27) | private void initSys() throws IOException {
FILE: src/main/java/com/lcore/hr/utils/Env.java
class Env (line 5) | public class Env {
method getUser (line 7) | public User getUser() {
method setUser (line 11) | public void setUser(User user) {
method Env (line 17) | public Env() {
FILE: src/main/java/com/lcore/hr/utils/GeneralBeanOrMapUtils.java
class GeneralBeanOrMapUtils (line 15) | public class GeneralBeanOrMapUtils {
method convertMap2Bean (line 35) | public static <T> T convertMap2Bean(Class<T> clazz, Map map) throws In...
method convertMap2Bean (line 73) | public static Object convertMap2Bean(String className, Map map) throws...
method convertBean2Map (line 93) | public static Map convertBean2Map(Object bean) throws IntrospectionExc...
FILE: src/main/java/com/lcore/hr/utils/GlobalConfigHolder.java
class GlobalConfigHolder (line 9) | public class GlobalConfigHolder {
method getEnv (line 15) | public static Env getEnv() {
method setEnv (line 19) | public static void setEnv(Env env) {
method init (line 23) | public static void init() throws IOException {
method getPropertiesMap (line 32) | public static Map<String, String> getPropertiesMap() {
method setPropertiesMap (line 36) | public static void setPropertiesMap(Map<String, String> propertiesMap) {
method setProperty (line 40) | public static void setProperty(String name, String object) {
method getProperty (line 44) | public static String getProperty(String name) {
FILE: src/main/java/com/lcore/hr/view/ModelView.java
class ModelView (line 17) | public class ModelView {
method createSingleView (line 25) | protected ModelAndView createSingleView(String fileName,
method createLayoutView (line 42) | protected ModelAndView createLayoutView(String fileName, String layout,
method createLayoutView (line 58) | protected ModelAndView createLayoutView(String fileName,
FILE: src/main/webapp/static/easyui/easyloader.js
function _4 (line 14) | function _4(_5,_6){
function _9 (line 31) | function _9(_a,_b){
function _c (line 39) | function _c(_d,_e){
function _10 (line 50) | function _10(_11,_12){
function _17 (line 87) | function _17(_18,_19){
FILE: src/main/webapp/static/easyui/jquery.easyui.patch.js
function setMe (line 5) | function setMe(target){
function setMe (line 86) | function setMe(target){
function setValues (line 165) | function setValues(target, values, remainText){
function setMe (line 206) | function setMe(target){
function buildFileBox (line 247) | function buildFileBox(target){
function initCss (line 273) | function initCss(){
function load (line 330) | function load(target, data){
function setBodySize (line 420) | function setBodySize(target){
function setMe (line 478) | function setMe(target){
function setMe (line 547) | function setMe(target){
function splitMe (line 579) | function splitMe(container, region){
function bindEvents (line 704) | function bindEvents(container){
function forNodes (line 792) | function forNodes(data, callback){
function getCheckedNode (line 807) | function getCheckedNode(target, state){
function getSelectedNode (line 832) | function getSelectedNode(target){
function showParents (line 861) | function showParents(domId){
function setValues (line 875) | function setValues(target, values){
FILE: src/main/webapp/static/easyui/plugins/jquery.accordion.js
function _1 (line 11) | function _1(_2,_3){
function _f (line 44) | function _f(_10,_11,_12,all){
function _14 (line 65) | function _14(_15){
function _16 (line 68) | function _16(_17){
function _18 (line 72) | function _18(_19,_1a){
function _1b (line 75) | function _1b(_1c,_1d){
function _1f (line 86) | function _1f(_20){
function _22 (line 95) | function _22(_23){
function _27 (line 113) | function _27(_28,pp,_29){
function _30 (line 171) | function _30(_31,_32){
function _35 (line 180) | function _35(_36,_37){
function _39 (line 189) | function _39(_3a){
function _33 (line 204) | function _33(_3f){
function add (line 210) | function add(_41,_42){
function _46 (line 227) | function _46(_47,_48){
FILE: src/main/webapp/static/easyui/plugins/jquery.calendar.js
function _1 (line 11) | function _1(_2,_3){
function _6 (line 23) | function _6(_7){
function _9 (line 32) | function _9(_a){
function _5 (line 147) | function _5(_1a){
function _20 (line 172) | function _20(_21,_22,_23){
function _19 (line 231) | function _19(_2f){
FILE: src/main/webapp/static/easyui/plugins/jquery.combo.js
function _2 (line 21) | function _2(_3){
function _b (line 54) | function _b(_c){
function _f (line 66) | function _f(_10){
function _1 (line 77) | function _1(_13){
function _14 (line 85) | function _14(e){
function _19 (line 97) | function _19(e){
function _1d (line 140) | function _1d(_1e){
function _12 (line 183) | function _12(_27){
function _29 (line 187) | function _29(_2a){
function _2e (line 198) | function _2e(_2f,_30){
function _33 (line 206) | function _33(_34){
function _37 (line 214) | function _37(_38,_39){
function _41 (line 255) | function _41(_42){
function _44 (line 259) | function _44(_45,_46){
function _47 (line 262) | function _47(_48){
FILE: src/main/webapp/static/easyui/plugins/jquery.combobox.js
function _2 (line 12) | function _2(_3,_4){
function _8 (line 23) | function _8(_9,_a){
function _e (line 39) | function _e(_f,dir){
function _15 (line 75) | function _15(_16,_17){
function _1b (line 88) | function _1b(_1c,_1d){
function _1a (line 98) | function _1a(_21,_22,_23){
function _26 (line 122) | function _26(_27,_28,_29){
function _2e (line 163) | function _2e(_2f,url,_30,_31){
function _34 (line 178) | function _34(_35,q){
function _3c (line 219) | function _3c(_3d){
function _42 (line 248) | function _42(_43){
function _5b (line 385) | function _5b(el,_5c){
FILE: src/main/webapp/static/easyui/plugins/jquery.combogrid.js
function _1 (line 11) | function _1(_2){
function nav (line 76) | function nav(_16,dir){
function _1c (line 107) | function _1c(_1d,_1e,_1f){
function _28 (line 141) | function _28(_29,q){
function _2e (line 177) | function _2e(_2f){
FILE: src/main/webapp/static/easyui/plugins/jquery.combotree.js
function _1 (line 11) | function _1(_2){
function _e (line 53) | function _e(_f){
function _15 (line 73) | function _15(_16,_17){
FILE: src/main/webapp/static/easyui/plugins/jquery.datagrid.js
function _2 (line 12) | function _2(a,o){
function _4 (line 20) | function _4(a,o,id){
function _7 (line 35) | function _7(a,o,r){
function _9 (line 43) | function _9(_a){
function _1c (line 110) | function _1c(_1d,_1e){
function _22 (line 124) | function _22(_23){
function _36 (line 165) | function _36(_37,_38,_39){
function _47 (line 226) | function _47(_48,_49){
function _4f (line 242) | function _4f(_50,_51){
function _5a (line 280) | function _5a(_5b){
function _75 (line 437) | function _75(_76){
function _85 (line 553) | function _85(_86){
function _8e (line 572) | function _8e(e){
function _99 (line 636) | function _99(e){
function _9e (line 652) | function _9e(e){
function _89 (line 663) | function _89(t){
function _87 (line 666) | function _87(t){
function _8b (line 674) | function _8b(tr){
function _a2 (line 681) | function _a2(_a3,_a4){
function _b0 (line 741) | function _b0(_b1){
function _c2 (line 822) | function _c2(_c3,_c4){
function _d1 (line 885) | function _d1(_d2,_d3){
function _d7 (line 910) | function _d7(_da){
function _d8 (line 925) | function _d8(_dd){
function _74 (line 938) | function _74(_e0,_e1){
function _73 (line 960) | function _73(_e5,_e6){
function _af (line 1002) | function _af(_f0,_f1){
function _f9 (line 1062) | function _f9(_fa){
function _102 (line 1097) | function _102(_103,row){
function _105 (line 1112) | function _105(_106){
function _108 (line 1126) | function _108(_109){
function _10b (line 1139) | function _10b(_10c,_10d){
function _8c (line 1161) | function _8c(_112,_113){
function _95 (line 1168) | function _95(_115,_116,_117){
function _96 (line 1189) | function _96(_11a,_11b,_11c){
function _11e (line 1206) | function _11e(_11f,_120){
function _119 (line 1222) | function _119(_125,_126){
function _92 (line 1238) | function _92(_12b,_12c,_12d){
function _93 (line 1264) | function _93(_12f,_130,_131){
function _123 (line 1284) | function _123(_134,_135){
function _129 (line 1302) | function _129(_137,_138){
function _13a (line 1320) | function _13a(_13b,_13c){
function _140 (line 1341) | function _140(_141,_142,_143){
function _14d (line 1388) | function _14d(_14e,_14f){
function _151 (line 1401) | function _151(_152,_153){
function _13d (line 1410) | function _13d(_155,_156){
function _14c (line 1441) | function _14c(_15d,_15e){
function _13f (line 1458) | function _13f(_15f,_160){
function _162 (line 1469) | function _162(_163,_164){
function _168 (line 1494) | function _168(_169,_16a){
function _16e (line 1515) | function _16e(_16f,_170){
function _172 (line 1523) | function _172(_173,row){
function _175 (line 1531) | function _175(_176){
function _179 (line 1544) | function _179(_17a){
function _17b (line 1558) | function _17b(_17c){
function _ae (line 1596) | function _ae(_189,_18a){
function _18e (line 1635) | function _18e(_18f,_190){
function _197 (line 1709) | function _197(_198){
function _20e (line 2205) | function _20e(_213){
function _216 (line 2219) | function _216(_217){
function _21d (line 2243) | function _21d(_21e){
function _221 (line 2261) | function _221(_222){
function _229 (line 2288) | function _229(_22a){
FILE: src/main/webapp/static/easyui/plugins/jquery.datebox.js
function _1 (line 11) | function _1(_2){
function _16 (line 94) | function _16(_17,q){
function _19 (line 97) | function _19(_1a){
function _18 (line 106) | function _18(_1e,_1f,_20){
FILE: src/main/webapp/static/easyui/plugins/jquery.datetimebox.js
function _1 (line 11) | function _1(_2){
function _8 (line 31) | function _8(_9){
function _b (line 37) | function _b(_c,q){
function _e (line 40) | function _e(_f){
function _d (line 46) | function _d(_12,_13,_14){
function _2f (line 152) | function _2f(_30){
FILE: src/main/webapp/static/easyui/plugins/jquery.datetimespinner.js
function _1 (line 11) | function _1(_2){
FILE: src/main/webapp/static/easyui/plugins/jquery.dialog.js
function _1 (line 11) | function _1(_2){
function _a (line 71) | function _a(_b,_c){
FILE: src/main/webapp/static/easyui/plugins/jquery.draggable.js
function _1 (line 11) | function _1(e){
function _8 (line 54) | function _8(e){
function _c (line 64) | function _c(e){
function _12 (line 100) | function _12(e){
function _16 (line 128) | function _16(e){
function _25 (line 245) | function _25(e){
FILE: src/main/webapp/static/easyui/plugins/jquery.droppable.js
function _1 (line 11) | function _1(_2){
FILE: src/main/webapp/static/easyui/plugins/jquery.filebox.js
function _2 (line 12) | function _2(_3){
FILE: src/main/webapp/static/easyui/plugins/jquery.form.js
function _1 (line 11) | function _1(_2,_3){
function _11 (line 98) | function _11(_12,_13){
function _25 (line 174) | function _25(_26){
function _2c (line 214) | function _2c(_2d){
function _30 (line 227) | function _30(_31){
function _34 (line 240) | function _34(_35,_36){
function _2b (line 249) | function _2b(_38){
function _33 (line 259) | function _33(_3a,_3b){
FILE: src/main/webapp/static/easyui/plugins/jquery.layout.js
function _2 (line 12) | function _2(_3,_4){
function _12 (line 70) | function _12(_13){
function _17 (line 90) | function _17(_18,_19,el){
function _26 (line 194) | function _26(_27,_28){
function _2b (line 206) | function _2b(_2c,_2d,_2e){
function _3c (line 318) | function _3c(_3d,_3e){
function _a (line 356) | function _a(pp){
function _45 (line 366) | function _45(_46){
FILE: src/main/webapp/static/easyui/plugins/jquery.linkbutton.js
function _1 (line 11) | function _1(_2,_3){
function _b (line 37) | function _b(_c){
function _f (line 81) | function _f(_11,_12){
function _10 (line 102) | function _10(_14,_15){
FILE: src/main/webapp/static/easyui/plugins/jquery.menu.js
function _1 (line 11) | function _1(_2){
function _f (line 79) | function _f(_11,_12){
function _10 (line 119) | function _10(_18,_19){
function _e (line 134) | function _e(_1c,_1d){
function _1b (line 182) | function _1b(_23){
function _25 (line 192) | function _25(_26,_27){
function _22 (line 250) | function _22(_2e){
function _30 (line 269) | function _30(_31,_32){
function _d (line 289) | function _d(_37,_38,_39){
function _3a (line 308) | function _3a(_3b,_3c){
function _40 (line 354) | function _40(_41,_42){
function _46 (line 372) | function _46(_47,_48,_49){
function _4b (line 381) | function _4b(_4c){
FILE: src/main/webapp/static/easyui/plugins/jquery.menubutton.js
function _1 (line 11) | function _1(_2){
function _f (line 40) | function _f(_10){
function _14 (line 71) | function _14(_15){
FILE: src/main/webapp/static/easyui/plugins/jquery.messager.js
function _1 (line 11) | function _1(el,_2,_3,_4){
function _7 (line 48) | function _7(el,_8,_9){
function _b (line 75) | function _b(_c){
function _f (line 90) | function _f(_10,_11,_12){
FILE: src/main/webapp/static/easyui/plugins/jquery.numberbox.js
function _1 (line 11) | function _1(_2){
function _7 (line 23) | function _7(_8,_9){
FILE: src/main/webapp/static/easyui/plugins/jquery.numberspinner.js
function _1 (line 11) | function _1(_2){
function _4 (line 17) | function _4(_5,_6){
FILE: src/main/webapp/static/easyui/plugins/jquery.pagination.js
function _1 (line 11) | function _1(_2){
function _10 (line 139) | function _10(_11,_12){
function _14 (line 144) | function _14(_15,_16){
function _1d (line 217) | function _1d(_1e,_1f){
FILE: src/main/webapp/static/easyui/plugins/jquery.panel.js
function _1 (line 21) | function _1(_2){
function _3 (line 24) | function _3(_4,_5){
function _f (line 50) | function _f(_10,_11){
function _14 (line 64) | function _14(_15){
function _18 (line 76) | function _18(_19){
function _25 (line 181) | function _25(_26,_27){
function _2d (line 211) | function _2d(_2e){
function _2f (line 230) | function _2f(_30){
function _31 (line 233) | function _31(_32,_33){
function _39 (line 282) | function _39(_3a,_3b){
function _3e (line 315) | function _3e(_3f,_40){
function _38 (line 328) | function _38(_44,_45){
function _4a (line 352) | function _4a(_4b,_4c){
function _37 (line 380) | function _37(_51){
function _55 (line 399) | function _55(_56){
function _59 (line 408) | function _59(_5a){
function _5e (line 424) | function _5e(_5f,_60){
function _6f (line 523) | function _6f(_70,_71){
FILE: src/main/webapp/static/easyui/plugins/jquery.parser.js
function _16 (line 174) | function _16(_19,_1a,fit){
function _18 (line 205) | function _18(_1c,_1d,_1e,_1f){
function _17 (line 228) | function _17(_21,_22,_23){
function _28 (line 266) | function _28(e){
function _2a (line 288) | function _2a(e){
function _2b (line 300) | function _2b(e){
function _29 (line 309) | function _29(e,_2c,_2d){
FILE: src/main/webapp/static/easyui/plugins/jquery.progressbar.js
function _1 (line 11) | function _1(_2){
function _4 (line 22) | function _4(_5,_6){
FILE: src/main/webapp/static/easyui/plugins/jquery.propertygrid.js
function _3 (line 20) | function _3(_4){
function _2 (line 56) | function _2(_f){
function _38 (line 201) | function _38(_3c){
function _35 (line 210) | function _35(){
function _52 (line 285) | function _52(_53,_54){
FILE: src/main/webapp/static/easyui/plugins/jquery.resizable.js
function _3 (line 15) | function _3(e){
function _8 (line 41) | function _8(e){
function _a (line 52) | function _a(e){
function _b (line 57) | function _b(e){
function _c (line 64) | function _c(e){
function _11 (line 103) | function _11(css){
function _10 (line 117) | function _10(e){
FILE: src/main/webapp/static/easyui/plugins/jquery.searchbox.js
function _1 (line 11) | function _1(_2){
FILE: src/main/webapp/static/easyui/plugins/jquery.slider.js
function _1 (line 11) | function _1(_2){
function _6 (line 28) | function _6(_7,_8){
function _d (line 51) | function _d(_e){
function _17 (line 81) | function _17(_18){
function _23 (line 132) | function _23(_24,_25){
function _c (line 167) | function _c(_2c){
function _2a (line 175) | function _2a(_2e,_2f){
function _34 (line 189) | function _34(_35,pos){
FILE: src/main/webapp/static/easyui/plugins/jquery.spinner.js
function _1 (line 11) | function _1(_2){
function _6 (line 26) | function _6(e){
FILE: src/main/webapp/static/easyui/plugins/jquery.splitbutton.js
function _1 (line 11) | function _1(_2){
FILE: src/main/webapp/static/easyui/plugins/jquery.tabs.js
function _1 (line 11) | function _1(_2){
function _c (line 51) | function _c(_d){
function _12 (line 74) | function _12(_13,_14){
function _1c (line 123) | function _1c(_1d){
function _23 (line 133) | function _23(_24){
function _28 (line 162) | function _28(_29){
function _30 (line 212) | function _30(_31){
function _35 (line 250) | function _35(_36,pp,_37){
function _3b (line 265) | function _3b(_3c,_3d){
function _42 (line 281) | function _42(_43,_44){
function _4c (line 348) | function _4c(_4d,_4e){
function _53 (line 381) | function _53(_57,_58,_59){
function _4b (line 405) | function _4b(_5b,tab){
function _1f (line 414) | function _1f(_5d){
function _5f (line 424) | function _5f(_60){
function _41 (line 435) | function _41(_63,_64){
function _6b (line 475) | function _6b(_71,_72){
function _52 (line 489) | function _52(_75,_76){
function _77 (line 492) | function _77(_78,_79){
function _8c (line 580) | function _8c(){
FILE: src/main/webapp/static/easyui/plugins/jquery.textbox.js
function _1 (line 11) | function _1(_2){
function _5 (line 21) | function _5(_6){
function _c (line 51) | function _c(_d){
function _e (line 57) | function _e(_f,_10){
function _1a (line 97) | function _1a(_1b){
function _1f (line 120) | function _1f(_20){
function _a (line 188) | function _a(_2d,_2e){
function _b (line 202) | function _b(_31,_32){
FILE: src/main/webapp/static/easyui/plugins/jquery.timespinner.js
function _1 (line 11) | function _1(_2){
function _5 (line 25) | function _5(_6,_7,_8){
function _a (line 38) | function _a(_b){
function _e (line 44) | function _e(e){
function _13 (line 56) | function _13(_14,_15){
function _18 (line 68) | function _18(_19,_1a){
function _1d (line 74) | function _1d(_1e,_1f){
function _2e (line 148) | function _2e(_2f){
function _32 (line 165) | function _32(s){
FILE: src/main/webapp/static/easyui/plugins/jquery.tooltip.js
function _1 (line 11) | function _1(_2){
function _3 (line 14) | function _3(_4){
function _6 (line 28) | function _6(_7){
function _9 (line 39) | function _9(_a){
function _13 (line 111) | function _13(_14,e){
function _1a (line 133) | function _1a(_1b,e){
function _17 (line 143) | function _17(_1d,_1e){
function _21 (line 156) | function _21(_22){
FILE: src/main/webapp/static/easyui/plugins/jquery.tree.js
function _1 (line 11) | function _1(_2){
function _4 (line 16) | function _4(_5){
function _d (line 84) | function _d(_e){
function _11 (line 91) | function _11(_12){
function _34 (line 235) | function _34(_35,_36,_37){
function _43 (line 310) | function _43(_44,_45){
function _4d (line 359) | function _4d(_4e,ul,_4f,_50){
function _5d (line 410) | function _5d(_5e,ul,_5f){
function _6b (line 456) | function _6b(_6c,ul,_6d,_6e){
function _75 (line 486) | function _75(_76,_77,_78){
function _7c (line 544) | function _7c(_7d,_7e){
function _81 (line 571) | function _81(_82,_83){
function _84 (line 582) | function _84(_85,_86){
function _88 (line 591) | function _88(_89,_8a){
function _8d (line 602) | function _8d(_8e,_8f){
function _92 (line 622) | function _92(_93,_94){
function _96 (line 631) | function _96(_97,_98){
function _9c (line 661) | function _9c(_9d,_9e){
function _a2 (line 693) | function _a2(_a3,_a4){
function _56 (line 721) | function _56(_a9,_aa){
function _af (line 738) | function _af(_b0,_b1){
function _b3 (line 751) | function _b3(_b4){
function _4c (line 758) | function _4c(_b7,_b8){
function _8c (line 767) | function _8c(_bc,_bd){
function _be (line 771) | function _be(_bf,_c0){
function _c4 (line 798) | function _c4(_c5){
function _c7 (line 802) | function _c7(_c8,_c9){
function _c (line 811) | function _c(_cc,_cd){
function _ce (line 814) | function _ce(_cf,id){
function _55 (line 817) | function _55(_d0,_d1,_d2){
function _b6 (line 828) | function _b6(_d6){
function _5a (line 834) | function _5a(_d7,_d8){
function _db (line 851) | function _db(_dc,_dd){
function _48 (line 861) | function _48(_e0,_e1){
function _e2 (line 864) | function _e2(_e3,_e4){
function _e9 (line 899) | function _e9(_ea,_eb){
function _ef (line 910) | function _ef(_f0,_f1){
function _117 (line 1072) | function _117(aa,tree){
function _11d (line 1095) | function _11d(_11e,_11f){
FILE: src/main/webapp/static/easyui/plugins/jquery.treegrid.js
function _1 (line 11) | function _1(_2){
function _26 (line 95) | function _26(_27,_28){
function _2f (line 117) | function _2f(_30){
function _32 (line 127) | function _32(_33){
function _34 (line 137) | function _34(e){
function _37 (line 147) | function _37(_38,_39){
function _3f (line 159) | function _3f(_40,_41,_42,_43){
function _25 (line 210) | function _25(_4c,_4d,_4e,_4f,_50){
function _57 (line 250) | function _57(_58){
function _5a (line 258) | function _5a(_5b){
function _5c (line 261) | function _5c(_5d,_5e){
function _2b (line 269) | function _2b(_5f,_60){
function _69 (line 294) | function _69(_6a,_6b){
function _47 (line 303) | function _47(_6f,_70){
function _74 (line 322) | function _74(_75,_76){
function _78 (line 354) | function _78(_79,_7a){
function _36 (line 405) | function _36(_7f,_80){
function _82 (line 415) | function _82(_83,_84){
function _87 (line 425) | function _87(_88,_89){
function _8c (line 435) | function _8c(_8d,_8e){
function _90 (line 448) | function _90(_91,_92){
function _96 (line 467) | function _96(_97,_98){
function _a2 (line 500) | function _a2(_a3,_a4){
function _a6 (line 508) | function _a6(_a7){
function _d4 (line 762) | function _d4(_d5,_d6,_d7){
function _f7 (line 907) | function _f7(_f8){
function del (line 942) | function del(id){
function _104 (line 977) | function _104(_105,_106){
function _10a (line 1008) | function _10a(rows){
FILE: src/main/webapp/static/easyui/plugins/jquery.validatebox.js
function _1 (line 11) | function _1(_2){
function _3 (line 14) | function _3(_4){
function _6 (line 24) | function _6(_7){
function _b (line 35) | function _b(e){
function _10 (line 61) | function _10(e){
function _14 (line 71) | function _14(e){
function _17 (line 77) | function _17(e){
function _16 (line 84) | function _16(_1a){
function _f (line 90) | function _f(_1d){
function _13 (line 96) | function _13(_1f){
function _21 (line 101) | function _21(_22){
function _32 (line 176) | function _32(_33,_34){
FILE: src/main/webapp/static/easyui/plugins/jquery.window.js
function _1 (line 11) | function _1(_2,_3){
function _5 (line 26) | function _5(_6,_7){
function _b (line 40) | function _b(_c,_d){
function _11 (line 54) | function _11(_12){
function _19 (line 138) | function _19(_1a){
function _18 (line 194) | function _18(){
FILE: src/main/webapp/static/easyui/src/easyloader.js
function loadJs (line 210) | function loadJs(url, callback){
function runJs (line 228) | function runJs(url, callback){
function loadCss (line 237) | function loadCss(url, callback){
function loadSingle (line 249) | function loadSingle(name, callback){
function loadModule (line 291) | function loadModule(name, callback){
FILE: src/main/webapp/static/easyui/src/jquery.accordion.js
function setSize (line 19) | function setSize(container){
function findBy (line 69) | function findBy(container, property, value, all){
function getSelections (line 91) | function getSelections(container){
function getSelected (line 95) | function getSelected(container){
function getPanelIndex (line 103) | function getPanelIndex(container, panel){
function getPanel (line 110) | function getPanel(container, which){
function setProperties (line 122) | function setProperties(container){
function init (line 132) | function init(container){
function createPanel (line 156) | function createPanel(container, pp, options){
function select (line 227) | function select(container, which){
function unselect (line 235) | function unselect(container, which){
function doFirstSelect (line 243) | function doFirstSelect(container){
function stopAnimate (line 263) | function stopAnimate(container){
function add (line 270) | function add(container, options){
function remove (line 290) | function remove(container, which){
FILE: src/main/webapp/static/easyui/src/jquery.calendar.js
function setSize (line 16) | function setSize(target){
function init (line 31) | function init(target){
function showMonth (line 96) | function showMonth(target, delta){
function showYear (line 116) | function showYear(target, delta){
function showSelectMenus (line 128) | function showSelectMenus(target){
function getWeeks (line 208) | function getWeeks(target, year, month){
function show (line 273) | function show(target){
FILE: src/main/webapp/static/easyui/src/jquery.combobox.js
function getRowIndex (line 20) | function getRowIndex(target, value){
function scrollTo (line 35) | function scrollTo(target, value){
function nav (line 50) | function nav(target, dir){
function select (line 95) | function select(target, value){
function unselect (line 112) | function unselect(target, value){
function setValues (line 126) | function setValues(target, values, remainText){
function loadData (line 153) | function loadData(target, data, remainText){
function request (line 213) | function request(target, url, param, remainText){
function doQuery (line 233) | function doQuery(target, q){
function doEnter (line 277) | function doEnter(target){
function create (line 310) | function create(target){
function _parseItem (line 475) | function _parseItem(el, group){
FILE: src/main/webapp/static/easyui/src/jquery.datebox.js
function createBox (line 22) | function createBox(target){
function doQuery (line 115) | function doQuery(target, q){
function doEnter (line 122) | function doEnter(target){
function setValue (line 132) | function setValue(target, value, remainText){
FILE: src/main/webapp/static/easyui/src/jquery.draggable.js
function drag (line 16) | function drag(e){
function applyDrag (line 69) | function applyDrag(e){
function doDown (line 89) | function doDown(e){
function doMove (line 131) | function doMove(e){
function doUp (line 162) | function doUp(e){
function checkArea (line 326) | function checkArea(e) {
FILE: src/main/webapp/static/easyui/src/jquery.droppable.js
function init (line 15) | function init(target){
FILE: src/main/webapp/static/easyui/src/jquery.form.js
function ajaxSubmit (line 18) | function ajaxSubmit(target, options){
function load (line 115) | function load(target, data){
function clear (line 221) | function clear(target){
function enabled (line 264) | function enabled(target){
function reset (line 272) | function reset(target){
function setForm (line 300) | function setForm(target){
function validate (line 324) | function validate(target){
function setValidation (line 335) | function setValidation(target, novalidate){
FILE: src/main/webapp/static/easyui/src/jquery.linkbutton.js
function createButton (line 16) | function createButton(target) {
function setSelected (line 73) | function setSelected(target, selected){
function setDisabled (line 95) | function setDisabled(target, disabled){
FILE: src/main/webapp/static/easyui/src/jquery.menu.js
function init (line 19) | function init(target){
function setMenuWidth (line 97) | function setMenuWidth(target, menu){
function bindMenuEvent (line 138) | function bindMenuEvent(target, menu){
function bindMenuItemEvent (line 157) | function bindMenuItemEvent(target, item){
function hideAll (line 216) | function hideAll(target){
function showMenu (line 235) | function showMenu(target, param){
function hideMenu (line 290) | function hideMenu(menu){
function findItem (line 310) | function findItem(target, text){
function setDisabled (line 329) | function setDisabled(target, itemEl, disabled){
function appendItem (line 348) | function appendItem(target, param){
function removeItem (line 384) | function removeItem(target, itemEl){
function destroyMenu (line 399) | function destroyMenu(target){
FILE: src/main/webapp/static/easyui/src/jquery.parser.js
function onTouchStart (line 209) | function onTouchStart(e){
function onTouchMove (line 230) | function onTouchMove(e){
function onTouchEnd (line 240) | function onTouchEnd(e){
function fire (line 251) | function fire(e, name, which){
FILE: src/main/webapp/static/easyui/src/jquery.progressbar.js
function init (line 18) | function init(target){
function setSize (line 24) | function setSize(target,width){
FILE: src/main/webapp/static/easyui/src/jquery.propertygrid.js
function buildGrid (line 20) | function buildGrid(target){
function stopEditing (line 75) | function stopEditing(target){
function getGroup (line 250) | function getGroup(value){
function initCss (line 259) | function initCss(){
FILE: src/main/webapp/static/easyui/src/jquery.resizable.js
function resize (line 21) | function resize(e){
function applySize (line 70) | function applySize(e){
function doDown (line 82) | function doDown(e){
function doMove (line 89) | function doMove(e){
function doUp (line 97) | function doUp(e){
function getCssValue (line 142) | function getCssValue(css) {
function getDirection (line 174) | function getDirection(e) {
FILE: src/main/webapp/static/easyui/src/jquery.slider.js
function init (line 18) | function init(target){
function setSize (line 42) | function setSize(target, param){
function showRule (line 73) | function showRule(target){
function buildSlider (line 117) | function buildSlider(target){
function setValue (line 181) | function setValue(target, value){
function initValue (line 217) | function initValue(target){
function value2pos (line 245) | function value2pos(target, value){
function pos2value (line 274) | function pos2value(target, pos){
FILE: src/main/webapp/static/easyui/src/jquery.tabs.js
function setScrollers (line 24) | function setScrollers(container) {
function addTools (line 96) | function addTools(container){
function setSize (line 121) | function setSize(container) {
function setSelectedSize (line 188) | function setSelectedSize(container){
function wrapTabs (line 205) | function wrapTabs(container) {
function bindEvents (line 245) | function bindEvents(container){
function setProperties (line 290) | function setProperties(container){
function createTab (line 325) | function createTab(container, pp, options) {
function addTab (line 362) | function addTab(container, options) {
function updateTab (line 385) | function updateTab(container, param){
function closeTab (line 460) | function closeTab(container, which) {
function getTab (line 502) | function getTab(container, which, removeit){
function getTabIndex (line 527) | function getTabIndex(container, tab){
function getSelectedTab (line 537) | function getSelectedTab(container){
function doFirstSelect (line 551) | function doFirstSelect(container){
function selectTab (line 566) | function selectTab(container, which){
function unselectTab (line 610) | function unselectTab(container, which){
function exists (line 625) | function exists(container, which){
function showHeader (line 629) | function showHeader(container, visible){
function getMaxScrollWidth (line 746) | function getMaxScrollWidth(){
FILE: src/main/webapp/static/easyui/src/jquery.window.js
function setSize (line 20) | function setSize(target, param){
function moveWindow (line 32) | function moveWindow(target, param){
function hcenter (line 50) | function hcenter(target, tomove){
function vcenter (line 69) | function vcenter(target, tomove){
function create (line 85) | function create(target){
function setProperties (line 199) | function setProperties(target){
function getPageArea (line 289) | function getPageArea() {
FILE: src/main/webapp/static/jcheckbox/js/jquery-labelauty.js
function getRealWidth (line 178) | function getRealWidth( element )
function debug (line 191) | function debug( debug, message )
function create (line 197) | function create( input_id, messages_object, label )
FILE: src/main/webapp/static/js/bootstrap-editable.js
function getNearest (line 4292) | function getNearest($select, value) {
function UTCDate (line 4943) | function UTCDate(){
function UTCToday (line 4946) | function UTCToday(){
function opts_from_el (line 5848) | function opts_from_el(el, prefix){
function opts_from_locale (line 5862) | function opts_from_locale(lang){
FILE: src/main/webapp/static/js/dateFormat.js
function formatDatebox (line 25) | function formatDatebox(value) {
function formatGender (line 40) | function formatGender(value){
FILE: src/main/webapp/static/js/jquery.datetimepicker.js
function handler (line 1574) | function handler(event) {
FILE: src/main/webapp/static/js/jquery.nicescroll.js
function getScriptPath (line 24) | function getScriptPath() {
function detectCursorGrab (line 181) | function detectCursorGrab() {
function requestSync (line 379) | function requestSync() {
function getMatrixValues (line 458) | function getMatrixValues() {
function getZIndex (line 561) | function getZIndex() {
function getWidthToPixel (line 575) | function getWidthToPixel(dom,prop,chkheight) {
function checkSelectionScroll (line 1313) | function checkSelectionScroll(e) {
function oniframeload (line 1653) | function oniframeload(e) {
function _modernWheelEvent (line 1933) | function _modernWheelEvent(dom,name,fn,bubble) {
function execScrollWheel (line 2211) | function execScrollWheel(e,hr,chkscroll) {
function scrolling (line 2580) | function scrolling() {
function mplex (line 3114) | function mplex(el,lst,fn) {
FILE: src/main/webapp/static/js/json.js
function f (line 169) | function f(n) {
function quote (line 203) | function quote(string) {
function str (line 220) | function str(key, holder) {
function walk (line 416) | function walk(holder, key) {
FILE: src/main/webapp/static/js/tableExport.js
function escapeRegExp (line 453) | function escapeRegExp(string){
function replaceAll (line 457) | function replaceAll(string, find, replace){
function csvString (line 461) | function csvString(cell, rowIndex, colIndex){
function parseString (line 479) | function parseString(cell, rowIndex, colIndex){
function hyphenate (line 499) | function hyphenate (a, b, c){
function getStyle (line 504) | function getStyle (target, prop){
function getPropertyUnitValue (line 515) | function getPropertyUnitValue (target, prop, unit){
function downloadFile (line 540) | function downloadFile(filename, data){
function utf8Encode (line 565) | function utf8Encode(string) {
function base64encode (line 586) | function base64encode(input) {
FILE: src/test/java/com/test/bpm/TestBpm.java
class TestBpm (line 15) | @RunWith(SpringJUnit4ClassRunner.class)
method test01 (line 21) | @Test
Condensed preview — 219 files, each showing path, character count, and a content snippet. Download the .json file or copy for the full structured content (2,059K chars).
[
{
"path": ".classpath",
"chars": 1402,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<classpath>\n\t<classpathentry kind=\"src\" output=\"target/classes\" path=\"src/main/ja"
},
{
"path": ".gitignore",
"chars": 9,
"preview": "/target/\n"
},
{
"path": ".project",
"chars": 760,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\r\n<projectDescription>\r\n\t<name>hr</name>\r\n\t<comment></comment>\r\n\t<projects>\r\n\t</pr"
},
{
"path": ".settings/org.eclipse.core.resources.prefs",
"chars": 128,
"preview": "eclipse.preferences.version=1\r\nencoding//src/main/java/com/lcore/core/datamng/BaseDataMng.java=UTF-8\r\nencoding/<project>"
},
{
"path": ".settings/org.eclipse.jdt.core.prefs",
"chars": 243,
"preview": "eclipse.preferences.version=1\r\norg.eclipse.jdt.core.compiler.codegen.targetPlatform=1.6\r\norg.eclipse.jdt.core.compiler.c"
},
{
"path": ".settings/org.eclipse.m2e.core.prefs",
"chars": 90,
"preview": "activeProfiles=\r\neclipse.preferences.version=1\r\nresolveWorkspaceProjects=true\r\nversion=1\r\n"
},
{
"path": "README.md",
"chars": 1420,
"preview": "# 前言\n 最近想做一个业务简单的系统,夯实下基础(前端+后端)。人力资源系统业务上较为简单,也比较独立,适合个人练手项目。人力资源系统包括一些核心的人力资源管理业务功能如:**考勤管理**、*"
},
{
"path": "pom.xml",
"chars": 6996,
"preview": "<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\r\n\txsi:schemaLoc"
},
{
"path": "src/main/java/com/lcore/hr/core/datamng/BaseDataMng.java",
"chars": 2789,
"preview": "package com.lcore.hr.core.datamng;\r\n\r\n\r\nimport java.util.List;\r\nimport java.util.Map;\r\n\r\nimport com.lcore.hr.core.entity"
},
{
"path": "src/main/java/com/lcore/hr/core/datamng/impl/BaseDataMngImpl.java",
"chars": 4654,
"preview": "package com.lcore.hr.core.datamng.impl;\r\n\r\nimport java.util.Date;\r\nimport java.util.List;\r\nimport java.util.Map;\r\n\r\nimpo"
},
{
"path": "src/main/java/com/lcore/hr/core/entity/Module.java",
"chars": 1175,
"preview": "package com.lcore.hr.core.entity;\r\n\r\nimport javax.persistence.Entity;\r\nimport javax.persistence.Inheritance;\r\nimport jav"
},
{
"path": "src/main/java/com/lcore/hr/core/entity/Role.java",
"chars": 728,
"preview": "package com.lcore.hr.core.entity;\r\n\r\nimport javax.persistence.Entity;\r\nimport javax.persistence.GeneratedValue;\r\nimport "
},
{
"path": "src/main/java/com/lcore/hr/core/entity/RoleToUserRel.java",
"chars": 632,
"preview": "package com.lcore.hr.core.entity;\r\n\r\nimport javax.persistence.Entity;\r\nimport javax.persistence.Inheritance;\r\nimport jav"
},
{
"path": "src/main/java/com/lcore/hr/core/entity/Root.java",
"chars": 1497,
"preview": "package com.lcore.hr.core.entity;\r\n\r\nimport java.util.Date;\r\n\r\nimport javax.persistence.Entity;\r\nimport javax.persistenc"
},
{
"path": "src/main/java/com/lcore/hr/core/entity/User.java",
"chars": 926,
"preview": "package com.lcore.hr.core.entity;\r\n\r\nimport javax.persistence.Entity;\r\nimport javax.persistence.GeneratedValue;\r\nimport "
},
{
"path": "src/main/java/com/lcore/hr/core/utils/HibernateTemplateManger.java",
"chars": 840,
"preview": "package com.lcore.hr.core.utils;\r\n\r\nimport org.hibernate.SessionFactory;\r\nimport org.springframework.orm.hibernate3.Hibe"
},
{
"path": "src/main/java/com/lcore/hr/core/utils/JDBCTemplateManager.java",
"chars": 907,
"preview": "package com.lcore.hr.core.utils;\r\n\r\nimport javax.sql.DataSource;\r\n\r\nimport org.springframework.jdbc.core.JdbcTemplate;\r\n"
},
{
"path": "src/main/java/com/lcore/hr/core/utils/SpringFactory.java",
"chars": 706,
"preview": "package com.lcore.hr.core.utils;\r\n\r\nimport org.springframework.beans.BeansException;\r\nimport org.springframework.context"
},
{
"path": "src/main/java/com/lcore/hr/core/utils/TemplateFactory.java",
"chars": 560,
"preview": "package com.lcore.hr.core.utils;\r\n\r\nimport org.springframework.jdbc.core.JdbcTemplate;\r\nimport org.springframework.orm.h"
},
{
"path": "src/main/java/com/lcore/hr/entity/Organization.java",
"chars": 1349,
"preview": "package com.lcore.hr.entity;\r\n\r\nimport java.util.Date;\r\n\r\nimport javax.persistence.Entity;\r\nimport javax.persistence.Inh"
},
{
"path": "src/main/java/com/lcore/hr/entity/OrganizationAddr.java",
"chars": 1019,
"preview": "package com.lcore.hr.entity;\r\n\r\nimport javax.persistence.Entity;\r\nimport javax.persistence.Inheritance;\r\nimport javax.pe"
},
{
"path": "src/main/java/com/lcore/hr/entity/OrganizationCategroy.java",
"chars": 690,
"preview": "package com.lcore.hr.entity;\r\n\r\nimport javax.persistence.Entity;\r\nimport javax.persistence.Inheritance;\r\nimport javax.pe"
},
{
"path": "src/main/java/com/lcore/hr/entity/OrganizationType.java",
"chars": 682,
"preview": "package com.lcore.hr.entity;\r\n\r\nimport javax.persistence.Entity;\r\nimport javax.persistence.Inheritance;\r\nimport javax.pe"
},
{
"path": "src/main/java/com/lcore/hr/interceptor/SecurityInterceptor.java",
"chars": 1554,
"preview": "package com.lcore.hr.interceptor;\r\n\r\nimport javax.servlet.http.HttpServletRequest;\r\nimport javax.servlet.http.HttpServle"
},
{
"path": "src/main/java/com/lcore/hr/menu/auth/controller/ModuleController.java",
"chars": 3130,
"preview": "package com.lcore.hr.menu.auth.controller;\r\n\r\nimport java.util.ArrayList;\r\nimport java.util.HashMap;\r\nimport java.util.L"
},
{
"path": "src/main/java/com/lcore/hr/menu/auth/controller/RoleController.java",
"chars": 6466,
"preview": "package com.lcore.hr.menu.auth.controller;\r\n\r\nimport java.util.ArrayList;\r\nimport java.util.HashMap;\r\nimport java.util.L"
},
{
"path": "src/main/java/com/lcore/hr/menu/auth/controller/UserController.java",
"chars": 3514,
"preview": "package com.lcore.hr.menu.auth.controller;\r\n\r\nimport java.util.ArrayList;\r\nimport java.util.List;\r\nimport java.util.Map;"
},
{
"path": "src/main/java/com/lcore/hr/menu/auth/service/ModuleService.java",
"chars": 501,
"preview": "package com.lcore.hr.menu.auth.service;\r\n\r\nimport java.util.List;\r\nimport java.util.Map;\r\n\r\nimport com.lcore.hr.core.ent"
},
{
"path": "src/main/java/com/lcore/hr/menu/auth/service/RoleService.java",
"chars": 1498,
"preview": "package com.lcore.hr.menu.auth.service;\r\n\r\nimport java.util.List;\r\n\r\nimport com.lcore.hr.core.entity.Role;\r\nimport com.l"
},
{
"path": "src/main/java/com/lcore/hr/menu/auth/service/UserService.java",
"chars": 980,
"preview": "package com.lcore.hr.menu.auth.service;\r\n\r\nimport java.util.List;\r\n\r\nimport com.lcore.hr.core.entity.Root;\r\nimport com.l"
},
{
"path": "src/main/java/com/lcore/hr/menu/auth/service/impl/ModuleServiceImpl.java",
"chars": 1902,
"preview": "package com.lcore.hr.menu.auth.service.impl;\r\n\r\nimport java.beans.IntrospectionException;\r\nimport java.lang.reflect.Invo"
},
{
"path": "src/main/java/com/lcore/hr/menu/auth/service/impl/RoleServiceImpl.java",
"chars": 2744,
"preview": "package com.lcore.hr.menu.auth.service.impl;\r\n\r\nimport java.util.ArrayList;\r\nimport java.util.List;\r\n\r\nimport org.spring"
},
{
"path": "src/main/java/com/lcore/hr/menu/auth/service/impl/UserServiceImpl.java",
"chars": 1359,
"preview": "package com.lcore.hr.menu.auth.service.impl;\r\n\r\nimport java.util.List;\r\n\r\nimport org.springframework.stereotype.Service;"
},
{
"path": "src/main/java/com/lcore/hr/menu/base/controller/BaseController.java",
"chars": 2166,
"preview": "package com.lcore.hr.menu.base.controller;\r\n\r\nimport java.util.Locale;\r\n\r\nimport javax.servlet.http.HttpServletRequest;\r"
},
{
"path": "src/main/java/com/lcore/hr/menu/base/controller/LoginController.java",
"chars": 2914,
"preview": "package com.lcore.hr.menu.base.controller;\r\n\r\nimport javax.annotation.Resource;\r\nimport javax.servlet.http.HttpServletRe"
},
{
"path": "src/main/java/com/lcore/hr/menu/base/service/BaseService.java",
"chars": 3902,
"preview": "package com.lcore.hr.menu.base.service;\r\n\r\nimport java.util.List;\r\nimport java.util.Map;\r\n\r\nimport com.lcore.hr.core.ent"
},
{
"path": "src/main/java/com/lcore/hr/menu/base/service/impl/BaseServiceImpl.java",
"chars": 3579,
"preview": "package com.lcore.hr.menu.base.service.impl;\r\n\r\nimport java.util.List;\r\nimport java.util.Map;\r\n\r\nimport javax.annotation"
},
{
"path": "src/main/java/com/lcore/hr/menu/organization/controller/OrganizationController.java",
"chars": 3289,
"preview": "package com.lcore.hr.menu.organization.controller;\r\n\r\nimport java.util.ArrayList;\r\nimport java.util.List;\r\nimport java.u"
},
{
"path": "src/main/java/com/lcore/hr/menu/organization/service/OrganizationService.java",
"chars": 1005,
"preview": "package com.lcore.hr.menu.organization.service;\r\n\r\nimport java.util.List;\r\n\r\nimport com.lcore.hr.core.entity.Root;\r\nimpo"
},
{
"path": "src/main/java/com/lcore/hr/menu/organization/service/impl/OrganizationServiceImpl.java",
"chars": 1867,
"preview": "package com.lcore.hr.menu.organization.service.impl;\r\n\r\nimport java.util.Date;\r\nimport java.util.List;\r\n\r\nimport org.spr"
},
{
"path": "src/main/java/com/lcore/hr/module/listener/StartupListener.java",
"chars": 700,
"preview": "package com.lcore.hr.module.listener;\r\n\r\nimport java.io.IOException;\r\n\r\nimport javax.servlet.ServletContext;\r\nimport jav"
},
{
"path": "src/main/java/com/lcore/hr/utils/Env.java",
"chars": 255,
"preview": "package com.lcore.hr.utils;\r\n\r\nimport com.lcore.hr.core.entity.User;\r\n\r\npublic class Env {\r\n\tpublic User user;\r\n\tpublic"
},
{
"path": "src/main/java/com/lcore/hr/utils/GeneralBeanOrMapUtils.java",
"chars": 3961,
"preview": "package com.lcore.hr.utils;\r\n\r\nimport java.beans.BeanInfo;\r\nimport java.beans.IntrospectionException;\r\nimport java.beans"
},
{
"path": "src/main/java/com/lcore/hr/utils/GlobalConfigHolder.java",
"chars": 1313,
"preview": "package com.lcore.hr.utils;\r\n\r\nimport java.io.IOException;\r\nimport java.io.InputStream;\r\nimport java.util.HashMap;\r\nimpo"
},
{
"path": "src/main/java/com/lcore/hr/view/ModelView.java",
"chars": 1812,
"preview": "package com.lcore.hr.view;\r\n\r\nimport javax.servlet.http.HttpServletRequest;\r\nimport javax.servlet.http.HttpServletRespon"
},
{
"path": "src/main/resources/i18n/messages_en.properties",
"chars": 412,
"preview": "#System\r\nsystem.name=HR-ADMIN\r\n\r\n#Login\r\nlogin.button.login=Login\r\nlogin.forgetPassword=Forget Password?\r\nlogin.remember"
},
{
"path": "src/main/resources/i18n/messages_zh.properties",
"chars": 555,
"preview": "#System\r\nsystem.name=\\u4EBA\\u529B\\u8D44\\u6E90\\u7BA1\\u7406\r\n\r\n#Login\r\nlogin.button.login=\\u767B\\u5F55\r\nlogin.forgetPasswo"
},
{
"path": "src/main/resources/jdbc.properties",
"chars": 109,
"preview": "jdbc.driver=com.mysql.jdbc.Driver\r\njdbc.url=jdbc:mysql://localhost/hr\r\njdbc.username=root\r\njdbc.password=root"
},
{
"path": "src/main/resources/log4j.properties",
"chars": 850,
"preview": "# Rules reminder:\n# DEBUG < INFO < WARN < ERROR < FATAL\n\n# Global logging configuration\nlog4j.rootLogger=info, stdout,De"
},
{
"path": "src/main/resources/spring-common.xml",
"chars": 6364,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\r\n<beans xmlns=\"http://www.springframework.org/schema/beans\"\r\n\txmlns:xsi=\"http://w"
},
{
"path": "src/main/resources/spring-mvc.xml",
"chars": 3411,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\r\n<beans xmlns=\"http://www.springframework.org/schema/beans\"\r\n\txmlns:xsi=\"http://w"
},
{
"path": "src/main/resources/sys.properties",
"chars": 12,
"preview": "basePath=/hr"
},
{
"path": "src/main/webapp/WEB-INF/views/admin/index.vm",
"chars": 1019,
"preview": "<ol class=\"breadcrumb\" style=\"margin-bottom:2px;\">\r\n <li><a href=\"#\">#springMessage(\"home\")</a>\r\n </li>\r\n <li><"
},
{
"path": "src/main/webapp/WEB-INF/views/auth/module/addModule.vm",
"chars": 3053,
"preview": "<style>\r\n .ctable {\r\n border: 0px;\r\n }\r\n .ctable tr {\r\n border: 0px;\r\n }\r\n .ctable td {\r\n "
},
{
"path": "src/main/webapp/WEB-INF/views/auth/module/moduleList.easyui.vm",
"chars": 1959,
"preview": "<ol class=\"breadcrumb\" style=\"margin-bottom:2px;\">\r\n <li><a href=\"#\">首页</a>\r\n </li>\r\n\t<li><a href=\"#\">权限管理</a>\r\n "
},
{
"path": "src/main/webapp/WEB-INF/views/auth/module/moduleList.vm",
"chars": 4685,
"preview": "<ol class=\"breadcrumb\" style=\"margin-bottom:2px;\">\r\n <li><a href=\"#\">首页</a>\r\n </li>\r\n\t<li><a href=\"#\">权限管理</a>\r\n "
},
{
"path": "src/main/webapp/WEB-INF/views/auth/module/updateModule.vm",
"chars": 3683,
"preview": "<style>\r\n .utable {\r\n border: 0px;\r\n }\r\n .utable tr {\r\n border: 0px;\r\n }\r\n .utable td {\r\n "
},
{
"path": "src/main/webapp/WEB-INF/views/auth/role/addRole.vm",
"chars": 2198,
"preview": " <div class=\"modal-dialog\" style=\"display: inline-block; width: auto;\">\r\n <div class=\"modal-content\">\r\n "
},
{
"path": "src/main/webapp/WEB-INF/views/auth/role/roleAllocation.vm",
"chars": 6352,
"preview": "<ol class=\"breadcrumb\" style=\"margin-bottom:2px;\">\r\n <li><a href=\"#\">首页</a>\r\n </li>\r\n <li><a href=\"#\">权限管理</a>\r"
},
{
"path": "src/main/webapp/WEB-INF/views/auth/role/roleList.vm",
"chars": 5406,
"preview": "<ol class=\"breadcrumb\" style=\"margin-bottom:2px;\">\r\n <li><a href=\"#\">首页</a>\r\n </li>\r\n <li><a href=\"#\">权限管理</a>\r"
},
{
"path": "src/main/webapp/WEB-INF/views/auth/role/updateRole.vm",
"chars": 2425,
"preview": " <div class=\"modal-dialog\" style=\"display: inline-block; width: auto;\">\r\n <div class=\"modal-content\">\r\n "
},
{
"path": "src/main/webapp/WEB-INF/views/auth/user/addUser.vm",
"chars": 2692,
"preview": " <div class=\"modal-dialog\" style=\"display: inline-block; width: auto;\">\r\n <div class=\"modal-content\">\r\n "
},
{
"path": "src/main/webapp/WEB-INF/views/auth/user/updateUser.vm",
"chars": 3178,
"preview": " <div class=\"modal-dialog\" style=\"display: inline-block; width: auto;\">\r\n <div class=\"modal-content\">\r\n "
},
{
"path": "src/main/webapp/WEB-INF/views/auth/user/userList.vm",
"chars": 5504,
"preview": "<ol class=\"breadcrumb\" style=\"margin-bottom:2px;\">\r\n <li><a href=\"#\">首页</a>\r\n </li>\r\n <li><a href=\"#\">权限管理</a>\r"
},
{
"path": "src/main/webapp/WEB-INF/views/common/header.vm",
"chars": 2836,
"preview": "<nav class=\"navbar box-shadow bg-white-only \" role=\"navigation\" style=\"margin-bottom:1px;\">\r\n <div class=\"navbar-head"
},
{
"path": "src/main/webapp/WEB-INF/views/common/layout.vm",
"chars": 3207,
"preview": "<!DOCTYPE html>\r\n<html>\r\n\r\n<head lang=\"en\">\r\n <meta charset=\"UTF-8\">\r\n <title>HR-ADMIN</title>\r\n <link href=\"${"
},
{
"path": "src/main/webapp/WEB-INF/views/common/left.vm",
"chars": 3586,
"preview": "<div class=\"leftsidebar_box\">\r\n <a href=\"${basePath}/index\">\r\n <dl class=\"system_log\" style=\"margin-top:40px;\">\r\n "
},
{
"path": "src/main/webapp/WEB-INF/views/login/login.vm",
"chars": 4931,
"preview": "<!DOCTYPE html>\r\n<head>\r\n\t<title>HR-Login</title>\r\n\t<link href=\"${basePath}/static/css/templatemo_style.css\" rel=\"styles"
},
{
"path": "src/main/webapp/WEB-INF/views/ou/addOu.vm",
"chars": 2018,
"preview": "<div class=\"modal-dialog\">\r\n <div class=\"modal-content\">\r\n <div class=\"modal-header text-left\">\r\n "
},
{
"path": "src/main/webapp/WEB-INF/views/ou/ouList.vm",
"chars": 5383,
"preview": "<ol class=\"breadcrumb\" style=\"margin-bottom:2px;\">\r\n <li><a href=\"#\">首页</a>\r\n </li>\r\n <li><a href=\"#\">组织管理</a>\r"
},
{
"path": "src/main/webapp/WEB-INF/views/ou/updateOu.vm",
"chars": 2291,
"preview": "<div class=\"modal-dialog\">\r\n <div class=\"modal-content text-left\">\r\n <div class=\"modal-header\">\r\n "
},
{
"path": "src/main/webapp/WEB-INF/web.xml",
"chars": 2586,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\r\n<web-app xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\r\n\txmlns=\"http://j"
},
{
"path": "src/main/webapp/static/css/animate.css",
"chars": 61190,
"preview": "@charset \"UTF-8\";\r\n\r\n/*!\r\nAnimate.css - http://daneden.me/animate\r\nLicensed under the MIT license\r\n\r\nCopyright (c) 2013 "
},
{
"path": "src/main/webapp/static/css/bootstrap-social.css",
"chars": 19473,
"preview": "/*\n * Social Buttons for Bootstrap\n *\n * Copyright 2013-2014 Panayiotis Lipiridis\n * Licensed under the MIT License\n *\n "
},
{
"path": "src/main/webapp/static/css/bootstrap-table-editable.css",
"chars": 21882,
"preview": "/*! X-editable - v1.5.1 \r\n* In-place editing with Twitter Bootstrap, jQuery UI or pure jQuery\r\n* http://github.com/vital"
},
{
"path": "src/main/webapp/static/css/bootstrap-table.css",
"chars": 5423,
"preview": "/**\n * @author zhixin wen <wenzhixin2010@gmail.com>\n * version: 1.7.0\n * https://github.com/wenzhixin/bootstrap-table/\n "
},
{
"path": "src/main/webapp/static/css/bootstrap.css",
"chars": 135416,
"preview": "/*!\n * Bootstrap v3.3.0 (http://getbootstrap.com)\n * Copyright 2011-2014 Twitter, Inc.\n * Licensed under MIT (https://gi"
},
{
"path": "src/main/webapp/static/css/build.css",
"chars": 7146,
"preview": ".checkbox {\n padding-left: 20px; }\n .checkbox label {\n display: inline-block;\n vertical-align: middle;\n posit"
},
{
"path": "src/main/webapp/static/css/flavr.css",
"chars": 12688,
"preview": "/* CSS crunched with Crunch - http://crunchapp.net/ */\r\n.flavr-container {\r\n\tposition: fixed;\r\n\ttext-align: center;\r\n\tvi"
},
{
"path": "src/main/webapp/static/css/jquery.datetimepicker.css",
"chars": 9802,
"preview": ".xdsoft_datetimepicker{\n\tbox-shadow: 0px 5px 15px -5px rgba(0, 0, 0, 0.506);\n\tbackground: #FFFFFF;\n\tborder-bottom: 1px s"
},
{
"path": "src/main/webapp/static/css/layout.css",
"chars": 2127,
"preview": ".navbar {\r\n\t/*background-color:#F5F5F5;*/\r\n}\r\n.navbar span {\r\n\tdisplay: -moz-inline-box; /* css注释:for ff2 */\r\n\tdisplay: "
},
{
"path": "src/main/webapp/static/css/metro-bootstrap.css",
"chars": 139227,
"preview": "/*!\n * metro-bootstrap v3.2.0.1\n *\n * from talkslab based on twitter bootstrap.\n */\n/*! normalize.css v3.0.1 | MIT Licen"
},
{
"path": "src/main/webapp/static/css/simple-line-icons.css",
"chars": 11572,
"preview": "@font-face {\r\n\tfont-family: 'Simple-Line-Icons';\r\n\tsrc:url('../fonts/Simple-Line-Icons.eot');\r\n\tsrc:url('../fonts/Simple"
},
{
"path": "src/main/webapp/static/css/style.css",
"chars": 2246,
"preview": "body {\r\n background-color: transparent;\r\n font-family: Arial,sans-serif,\"微软雅黑\";\r\n font-size: 14px;\r\n}\r\n\r\n.bg-"
},
{
"path": "src/main/webapp/static/css/templatemo_style.css",
"chars": 9173,
"preview": "/* \r\n\r\n\r\nCredit: www.cssmoban.com\r\n\t1. General\r\n\t2. login-form-1\r\n\t3. login-form-2\r\n\t4. inline-login\r\n\t5. create-account"
},
{
"path": "src/main/webapp/static/easyui/easyloader.js",
"chars": 6624,
"preview": "/**\r\n * jQuery EasyUI 1.4.1\r\n * \r\n * Copyright (c) 2009-2014 www.jeasyui.com. All rights reserved.\r\n *\r\n * Licensed unde"
},
{
"path": "src/main/webapp/static/easyui/jquery.easyui.patch.js",
"chars": 30034,
"preview": "/**\n * The Patch for jQuery EasyUI 1.4.1\n */\n(function($){\n\tfunction setMe(target){\n\t\tvar opts = $(target).textbox('opti"
},
{
"path": "src/main/webapp/static/easyui/locale/easyui-lang-af.js",
"chars": 1699,
"preview": "if ($.fn.pagination){\r\n\t$.fn.pagination.defaults.beforePageText = 'Bladsy';\r\n\t$.fn.pagination.defaults.afterPageText = '"
},
{
"path": "src/main/webapp/static/easyui/locale/easyui-lang-am.js",
"chars": 1907,
"preview": "if ($.fn.pagination){\r\n\t$.fn.pagination.defaults.beforePageText = 'Էջ';\r\n\t$.fn.pagination.defaults.afterPageText = 'ից {"
},
{
"path": "src/main/webapp/static/easyui/locale/easyui-lang-ar.js",
"chars": 1768,
"preview": "if ($.fn.pagination){\r\n\t$.fn.pagination.defaults.beforePageText = 'صفحة';\r\n\t$.fn.pagination.defaults.afterPageText = 'من"
},
{
"path": "src/main/webapp/static/easyui/locale/easyui-lang-bg.js",
"chars": 1731,
"preview": "if ($.fn.pagination){\r\n\t$.fn.pagination.defaults.beforePageText = 'Страница';\r\n\t$.fn.pagination.defaults.afterPageText ="
},
{
"path": "src/main/webapp/static/easyui/locale/easyui-lang-ca.js",
"chars": 1755,
"preview": "if ($.fn.pagination){\r\n\t$.fn.pagination.defaults.beforePageText = 'Pàgina';\r\n\t$.fn.pagination.defaults.afterPageText = '"
},
{
"path": "src/main/webapp/static/easyui/locale/easyui-lang-cs.js",
"chars": 1731,
"preview": "if ($.fn.pagination){\r\n\t$.fn.pagination.defaults.beforePageText = 'Strana';\r\n\t$.fn.pagination.defaults.afterPageText = '"
},
{
"path": "src/main/webapp/static/easyui/locale/easyui-lang-cz.js",
"chars": 1865,
"preview": "if ($.fn.pagination){\r\n\t$.fn.pagination.defaults.beforePageText = 'Strana';\r\n\t$.fn.pagination.defaults.afterPageText = '"
},
{
"path": "src/main/webapp/static/easyui/locale/easyui-lang-da.js",
"chars": 1702,
"preview": "if ($.fn.pagination){\r\n\t$.fn.pagination.defaults.beforePageText = 'Page';\r\n\t$.fn.pagination.defaults.afterPageText = 'af"
},
{
"path": "src/main/webapp/static/easyui/locale/easyui-lang-de.js",
"chars": 2320,
"preview": "if ($.fn.pagination){\r\n\t$.fn.pagination.defaults.beforePageText = 'Seite';\r\n\t$.fn.pagination.defaults.afterPageText = 'v"
},
{
"path": "src/main/webapp/static/easyui/locale/easyui-lang-el.js",
"chars": 1869,
"preview": "if ($.fn.pagination){\r\n\t$.fn.pagination.defaults.beforePageText = 'Σελίδα';\r\n\t$.fn.pagination.defaults.afterPageText = '"
},
{
"path": "src/main/webapp/static/easyui/locale/easyui-lang-en.js",
"chars": 1790,
"preview": "if ($.fn.pagination){\r\n\t$.fn.pagination.defaults.beforePageText = 'Page';\r\n\t$.fn.pagination.defaults.afterPageText = 'of"
},
{
"path": "src/main/webapp/static/easyui/locale/easyui-lang-es.js",
"chars": 1886,
"preview": "if ($.fn.pagination){\r\n\t$.fn.pagination.defaults.beforePageText = 'Página';\r\n\t$.fn.pagination.defaults.afterPageT"
},
{
"path": "src/main/webapp/static/easyui/locale/easyui-lang-fr.js",
"chars": 1791,
"preview": "if ($.fn.pagination){\r\n\t$.fn.pagination.defaults.beforePageText = 'Page';\r\n\t$.fn.pagination.defaults.afterPageText = 'de"
},
{
"path": "src/main/webapp/static/easyui/locale/easyui-lang-it.js",
"chars": 1752,
"preview": "if ($.fn.pagination){\n\t$.fn.pagination.defaults.beforePageText = 'Pagina';\n\t$.fn.pagination.defaults.afterPageText = 'di"
},
{
"path": "src/main/webapp/static/easyui/locale/easyui-lang-jp.js",
"chars": 1701,
"preview": "if ($.fn.pagination){\r\n\t$.fn.pagination.defaults.beforePageText = 'ページ';\r\n\t$.fn.pagination.defaults.afterPageText = '{pa"
},
{
"path": "src/main/webapp/static/easyui/locale/easyui-lang-nl.js",
"chars": 1705,
"preview": "if ($.fn.pagination){\r\n\t$.fn.pagination.defaults.beforePageText = 'Pagina';\r\n\t$.fn.pagination.defaults.afterPageText = '"
},
{
"path": "src/main/webapp/static/easyui/locale/easyui-lang-pl.js",
"chars": 1805,
"preview": "if ($.fn.pagination){\r\n\t$.fn.pagination.defaults.beforePageText = 'Strona';\r\n\t$.fn.pagination.defaults.afterPageText = '"
},
{
"path": "src/main/webapp/static/easyui/locale/easyui-lang-pt_BR.js",
"chars": 1775,
"preview": "if ($.fn.pagination){\r\n\t$.fn.pagination.defaults.beforePageText = 'Página';\r\n\t$.fn.pagination.defaults.afterPageText = '"
},
{
"path": "src/main/webapp/static/easyui/locale/easyui-lang-ru.js",
"chars": 1871,
"preview": "if ($.fn.pagination){\r\n\t$.fn.pagination.defaults.beforePageText = 'Страница';\r\n\t$.fn.pagination.defaults.afterPageText ="
},
{
"path": "src/main/webapp/static/easyui/locale/easyui-lang-sv_SE.js",
"chars": 1944,
"preview": "if ($.fn.pagination) {\r\n $.fn.pagination.defaults.beforePageText = 'Sida';\r\n $.fn.pagination.defaults.afterPageTex"
},
{
"path": "src/main/webapp/static/easyui/locale/easyui-lang-tr.js",
"chars": 2291,
"preview": "if ($.fn.pagination){\n $.fn.pagination.defaults.beforePageText = 'Sayfa';\n $.fn.pagination.defaults.afterPageText "
},
{
"path": "src/main/webapp/static/easyui/locale/easyui-lang-zh_CN.js",
"chars": 2267,
"preview": "if ($.fn.pagination){\r\n\t$.fn.pagination.defaults.beforePageText = '第';\r\n\t$.fn.pagination.defaults.afterPageText = '共{pag"
},
{
"path": "src/main/webapp/static/easyui/locale/easyui-lang-zh_TW.js",
"chars": 1752,
"preview": "if ($.fn.pagination){\r\n\t$.fn.pagination.defaults.beforePageText = '第';\r\n\t$.fn.pagination.defaults.afterPageText = '共{pag"
},
{
"path": "src/main/webapp/static/easyui/plugins/jquery.accordion.js",
"chars": 7038,
"preview": "/**\r\n * jQuery EasyUI 1.4.1\r\n * \r\n * Copyright (c) 2009-2014 www.jeasyui.com. All rights reserved.\r\n *\r\n * Licensed unde"
},
{
"path": "src/main/webapp/static/easyui/plugins/jquery.calendar.js",
"chars": 10104,
"preview": "/**\r\n * jQuery EasyUI 1.4.1\r\n * \r\n * Copyright (c) 2009-2014 www.jeasyui.com. All rights reserved.\r\n *\r\n * Licensed unde"
},
{
"path": "src/main/webapp/static/easyui/plugins/jquery.combo.js",
"chars": 8819,
"preview": "/**\n * jQuery EasyUI 1.4.1\n * \n * Copyright (c) 2009-2014 www.jeasyui.com. All rights reserved.\n *\n * Licensed under the"
},
{
"path": "src/main/webapp/static/easyui/plugins/jquery.combobox.js",
"chars": 10659,
"preview": "/**\r\n * jQuery EasyUI 1.4.1\r\n * \r\n * Copyright (c) 2009-2014 www.jeasyui.com. All rights reserved.\r\n *\r\n * Licensed unde"
},
{
"path": "src/main/webapp/static/easyui/plugins/jquery.combogrid.js",
"chars": 6383,
"preview": "/**\r\n * jQuery EasyUI 1.4.1\r\n * \r\n * Copyright (c) 2009-2014 www.jeasyui.com. All rights reserved.\r\n *\r\n * Licensed unde"
},
{
"path": "src/main/webapp/static/easyui/plugins/jquery.combotree.js",
"chars": 4182,
"preview": "/**\r\n * jQuery EasyUI 1.4.1\r\n * \r\n * Copyright (c) 2009-2014 www.jeasyui.com. All rights reserved.\r\n *\r\n * Licensed unde"
},
{
"path": "src/main/webapp/static/easyui/plugins/jquery.datagrid.js",
"chars": 62871,
"preview": "/**\n * jQuery EasyUI 1.4.1\n * \n * Copyright (c) 2009-2014 www.jeasyui.com. All rights reserved.\n *\n * Licensed under the"
},
{
"path": "src/main/webapp/static/easyui/plugins/jquery.datebox.js",
"chars": 5983,
"preview": "/**\r\n * jQuery EasyUI 1.4.1\r\n * \r\n * Copyright (c) 2009-2014 www.jeasyui.com. All rights reserved.\r\n *\r\n * Licensed unde"
},
{
"path": "src/main/webapp/static/easyui/plugins/jquery.datetimebox.js",
"chars": 5390,
"preview": "/**\r\n * jQuery EasyUI 1.4.1\r\n * \r\n * Copyright (c) 2009-2014 www.jeasyui.com. All rights reserved.\r\n *\r\n * Licensed unde"
},
{
"path": "src/main/webapp/static/easyui/plugins/jquery.datetimespinner.js",
"chars": 1839,
"preview": "/**\r\n * jQuery EasyUI 1.4.1\r\n * \r\n * Copyright (c) 2009-2014 www.jeasyui.com. All rights reserved.\r\n *\r\n * Licensed unde"
},
{
"path": "src/main/webapp/static/easyui/plugins/jquery.dialog.js",
"chars": 3415,
"preview": "/**\r\n * jQuery EasyUI 1.4.1\r\n * \r\n * Copyright (c) 2009-2014 www.jeasyui.com. All rights reserved.\r\n *\r\n * Licensed unde"
},
{
"path": "src/main/webapp/static/easyui/plugins/jquery.draggable.js",
"chars": 6889,
"preview": "/**\r\n * jQuery EasyUI 1.4.1\r\n * \r\n * Copyright (c) 2009-2014 www.jeasyui.com. All rights reserved.\r\n *\r\n * Licensed unde"
},
{
"path": "src/main/webapp/static/easyui/plugins/jquery.droppable.js",
"chars": 1686,
"preview": "/**\r\n * jQuery EasyUI 1.4.1\r\n * \r\n * Copyright (c) 2009-2014 www.jeasyui.com. All rights reserved.\r\n *\r\n * Licensed unde"
},
{
"path": "src/main/webapp/static/easyui/plugins/jquery.filebox.js",
"chars": 1970,
"preview": "/**\r\n * jQuery EasyUI 1.4.1\r\n * \r\n * Copyright (c) 2009-2014 www.jeasyui.com. All rights reserved.\r\n *\r\n * Licensed unde"
},
{
"path": "src/main/webapp/static/easyui/plugins/jquery.form.js",
"chars": 6397,
"preview": "/**\r\n * jQuery EasyUI 1.4.1\r\n * \r\n * Copyright (c) 2009-2014 www.jeasyui.com. All rights reserved.\r\n *\r\n * Licensed unde"
},
{
"path": "src/main/webapp/static/easyui/plugins/jquery.layout.js",
"chars": 11464,
"preview": "/**\r\n * jQuery EasyUI 1.4.1\r\n * \r\n * Copyright (c) 2009-2014 www.jeasyui.com. All rights reserved.\r\n *\r\n * Licensed unde"
},
{
"path": "src/main/webapp/static/easyui/plugins/jquery.linkbutton.js",
"chars": 4623,
"preview": "/**\r\n * jQuery EasyUI 1.4.1\r\n * \r\n * Copyright (c) 2009-2014 www.jeasyui.com. All rights reserved.\r\n *\r\n * Licensed unde"
},
{
"path": "src/main/webapp/static/easyui/plugins/jquery.menu.js",
"chars": 10691,
"preview": "/**\r\n * jQuery EasyUI 1.4.1\r\n * \r\n * Copyright (c) 2009-2014 www.jeasyui.com. All rights reserved.\r\n *\r\n * Licensed unde"
},
{
"path": "src/main/webapp/static/easyui/plugins/jquery.menubutton.js",
"chars": 3238,
"preview": "/**\r\n * jQuery EasyUI 1.4.1\r\n * \r\n * Copyright (c) 2009-2014 www.jeasyui.com. All rights reserved.\r\n *\r\n * Licensed unde"
},
{
"path": "src/main/webapp/static/easyui/plugins/jquery.messager.js",
"chars": 5108,
"preview": "/**\r\n * jQuery EasyUI 1.4.1\r\n * \r\n * Copyright (c) 2009-2014 www.jeasyui.com. All rights reserved.\r\n *\r\n * Licensed unde"
},
{
"path": "src/main/webapp/static/easyui/plugins/jquery.numberbox.js",
"chars": 4507,
"preview": "/**\r\n * jQuery EasyUI 1.4.1\r\n * \r\n * Copyright (c) 2009-2014 www.jeasyui.com. All rights reserved.\r\n *\r\n * Licensed unde"
},
{
"path": "src/main/webapp/static/easyui/plugins/jquery.numberspinner.js",
"chars": 1589,
"preview": "/**\r\n * jQuery EasyUI 1.4.1\r\n * \r\n * Copyright (c) 2009-2014 www.jeasyui.com. All rights reserved.\r\n *\r\n * Licensed unde"
},
{
"path": "src/main/webapp/static/easyui/plugins/jquery.pagination.js",
"chars": 7890,
"preview": "/**\n * jQuery EasyUI 1.4.1\n * \n * Copyright (c) 2009-2014 www.jeasyui.com. All rights reserved.\n *\n * Licensed under the"
},
{
"path": "src/main/webapp/static/easyui/plugins/jquery.panel.js",
"chars": 14582,
"preview": "/**\r\n * jQuery EasyUI 1.4.1\r\n * \r\n * Copyright (c) 2009-2014 www.jeasyui.com. All rights reserved.\r\n *\r\n * Licensed unde"
},
{
"path": "src/main/webapp/static/easyui/plugins/jquery.parser.js",
"chars": 6544,
"preview": "/**\r\n * jQuery EasyUI 1.4.1\r\n * \r\n * Copyright (c) 2009-2014 www.jeasyui.com. All rights reserved.\r\n *\r\n * Licensed unde"
},
{
"path": "src/main/webapp/static/easyui/plugins/jquery.progressbar.js",
"chars": 2180,
"preview": "/**\r\n * jQuery EasyUI 1.4.1\r\n * \r\n * Copyright (c) 2009-2014 www.jeasyui.com. All rights reserved.\r\n *\r\n * Licensed unde"
},
{
"path": "src/main/webapp/static/easyui/plugins/jquery.propertygrid.js",
"chars": 9581,
"preview": "/**\r\n * jQuery EasyUI 1.4.1\r\n * \r\n * Copyright (c) 2009-2014 www.jeasyui.com. All rights reserved.\r\n *\r\n * Licensed unde"
},
{
"path": "src/main/webapp/static/easyui/plugins/jquery.resizable.js",
"chars": 4616,
"preview": "/**\r\n * jQuery EasyUI 1.4.1\r\n * \r\n * Copyright (c) 2009-2014 www.jeasyui.com. All rights reserved.\r\n *\r\n * Licensed unde"
},
{
"path": "src/main/webapp/static/easyui/plugins/jquery.searchbox.js",
"chars": 3556,
"preview": "/**\r\n * jQuery EasyUI 1.4.1\r\n * \r\n * Copyright (c) 2009-2014 www.jeasyui.com. All rights reserved.\r\n *\r\n * Licensed unde"
},
{
"path": "src/main/webapp/static/easyui/plugins/jquery.slider.js",
"chars": 7117,
"preview": "/**\r\n * jQuery EasyUI 1.4.1\r\n * \r\n * Copyright (c) 2009-2014 www.jeasyui.com. All rights reserved.\r\n *\r\n * Licensed unde"
},
{
"path": "src/main/webapp/static/easyui/plugins/jquery.spinner.js",
"chars": 2156,
"preview": "/**\r\n * jQuery EasyUI 1.4.1\r\n * \r\n * Copyright (c) 2009-2014 www.jeasyui.com. All rights reserved.\r\n *\r\n * Licensed unde"
},
{
"path": "src/main/webapp/static/easyui/plugins/jquery.splitbutton.js",
"chars": 1465,
"preview": "/**\r\n * jQuery EasyUI 1.4.1\r\n * \r\n * Copyright (c) 2009-2014 www.jeasyui.com. All rights reserved.\r\n *\r\n * Licensed unde"
},
{
"path": "src/main/webapp/static/easyui/plugins/jquery.tabs.js",
"chars": 14970,
"preview": "/**\r\n * jQuery EasyUI 1.4.1\r\n * \r\n * Copyright (c) 2009-2014 www.jeasyui.com. All rights reserved.\r\n *\r\n * Licensed unde"
},
{
"path": "src/main/webapp/static/easyui/plugins/jquery.textbox.js",
"chars": 11159,
"preview": "/**\r\n * jQuery EasyUI 1.4.1\r\n * \r\n * Copyright (c) 2009-2014 www.jeasyui.com. All rights reserved.\r\n *\r\n * Licensed unde"
},
{
"path": "src/main/webapp/static/easyui/plugins/jquery.timespinner.js",
"chars": 4629,
"preview": "/**\r\n * jQuery EasyUI 1.4.1\r\n * \r\n * Copyright (c) 2009-2014 www.jeasyui.com. All rights reserved.\r\n *\r\n * Licensed unde"
},
{
"path": "src/main/webapp/static/easyui/plugins/jquery.tooltip.js",
"chars": 5772,
"preview": "/**\r\n * jQuery EasyUI 1.4.1\r\n * \r\n * Copyright (c) 2009-2014 www.jeasyui.com. All rights reserved.\r\n *\r\n * Licensed unde"
},
{
"path": "src/main/webapp/static/easyui/plugins/jquery.tree.js",
"chars": 25957,
"preview": "/**\r\n * jQuery EasyUI 1.4.1\r\n * \r\n * Copyright (c) 2009-2014 www.jeasyui.com. All rights reserved.\r\n *\r\n * Licensed unde"
},
{
"path": "src/main/webapp/static/easyui/plugins/jquery.treegrid.js",
"chars": 28583,
"preview": "/**\r\n * jQuery EasyUI 1.4.1\r\n * \r\n * Copyright (c) 2009-2014 www.jeasyui.com. All rights reserved.\r\n *\r\n * Licensed unde"
},
{
"path": "src/main/webapp/static/easyui/plugins/jquery.validatebox.js",
"chars": 7923,
"preview": "/**\r\n * jQuery EasyUI 1.4.1\r\n * \r\n * Copyright (c) 2009-2014 www.jeasyui.com. All rights reserved.\r\n *\r\n * Licensed unde"
},
{
"path": "src/main/webapp/static/easyui/plugins/jquery.window.js",
"chars": 7350,
"preview": "/**\r\n * jQuery EasyUI 1.4.1\r\n * \r\n * Copyright (c) 2009-2014 www.jeasyui.com. All rights reserved.\r\n *\r\n * Licensed unde"
},
{
"path": "src/main/webapp/static/easyui/src/easyloader.js",
"chars": 8837,
"preview": "/**\r\n * jQuery EasyUI 1.3.6\r\n * \r\n * Copyright (c) 2009-2014 www.jeasyui.com. All rights reserved.\r\n *\r\n * Licensed und"
},
{
"path": "src/main/webapp/static/easyui/src/jquery.accordion.js",
"chars": 10731,
"preview": "/**\r\n * jQuery EasyUI 1.3.6\r\n * \r\n * Copyright (c) 2009-2014 www.jeasyui.com. All rights reserved.\r\n *\r\n * Licensed und"
},
{
"path": "src/main/webapp/static/easyui/src/jquery.calendar.js",
"chars": 14012,
"preview": "/**\r\n * jQuery EasyUI 1.3.6\r\n * \r\n * Copyright (c) 2009-2014 www.jeasyui.com. All rights reserved.\r\n *\r\n * Licensed und"
},
{
"path": "src/main/webapp/static/easyui/src/jquery.combobox.js",
"chars": 15472,
"preview": "/**\r\n * jQuery EasyUI 1.3.6\r\n * \r\n * Copyright (c) 2009-2014 www.jeasyui.com. All rights reserved.\r\n *\r\n * Licensed und"
},
{
"path": "src/main/webapp/static/easyui/src/jquery.datebox.js",
"chars": 7052,
"preview": "/**\r\n * jQuery EasyUI 1.3.6\r\n * \r\n * Copyright (c) 2009-2014 www.jeasyui.com. All rights reserved.\r\n *\r\n * Licensed und"
},
{
"path": "src/main/webapp/static/easyui/src/jquery.draggable.js",
"chars": 11342,
"preview": "/**\r\n * jQuery EasyUI 1.3.6\r\n * \r\n * Copyright (c) 2009-2014 www.jeasyui.com. All rights reserved.\r\n *\r\n * Licensed und"
},
{
"path": "src/main/webapp/static/easyui/src/jquery.droppable.js",
"chars": 2200,
"preview": "/**\r\n * jQuery EasyUI 1.3.6\r\n * \r\n * Copyright (c) 2009-2014 www.jeasyui.com. All rights reserved.\r\n *\r\n * Licensed und"
},
{
"path": "src/main/webapp/static/easyui/src/jquery.form.js",
"chars": 10562,
"preview": "/**\r\n * jQuery EasyUI 1.3.6\r\n * \r\n * Copyright (c) 2009-2014 www.jeasyui.com. All rights reserved.\r\n *\r\n * Licensed und"
},
{
"path": "src/main/webapp/static/easyui/src/jquery.linkbutton.js",
"chars": 5213,
"preview": "/**\r\n * jQuery EasyUI 1.3.6\r\n * \r\n * Copyright (c) 2009-2014 www.jeasyui.com. All rights reserved.\r\n *\r\n * Licensed und"
},
{
"path": "src/main/webapp/static/easyui/src/jquery.menu.js",
"chars": 15311,
"preview": "/**\r\n * jQuery EasyUI 1.3.6\r\n * \r\n * Copyright (c) 2009-2014 www.jeasyui.com. All rights reserved.\r\n *\r\n * Licensed und"
},
{
"path": "src/main/webapp/static/easyui/src/jquery.parser.js",
"chars": 6841,
"preview": "/**\r\n * jQuery EasyUI 1.3.6\r\n * \r\n * Copyright (c) 2009-2014 www.jeasyui.com. All rights reserved.\r\n *\r\n * Licensed und"
},
{
"path": "src/main/webapp/static/easyui/src/jquery.progressbar.js",
"chars": 2804,
"preview": "/**\r\n * jQuery EasyUI 1.3.6\r\n * \r\n * Copyright (c) 2009-2014 www.jeasyui.com. All rights reserved.\r\n *\r\n * Licensed und"
},
{
"path": "src/main/webapp/static/easyui/src/jquery.propertygrid.js",
"chars": 10141,
"preview": "/**\r\n * jQuery EasyUI 1.3.6\r\n * \r\n * Copyright (c) 2009-2014 www.jeasyui.com. All rights reserved.\r\n *\r\n * Licensed und"
},
{
"path": "src/main/webapp/static/easyui/src/jquery.resizable.js",
"chars": 7480,
"preview": "/**\r\n * jQuery EasyUI 1.3.6\r\n * \r\n * Copyright (c) 2009-2014 www.jeasyui.com. All rights reserved.\r\n *\r\n * Licensed und"
},
{
"path": "src/main/webapp/static/easyui/src/jquery.slider.js",
"chars": 11250,
"preview": "/**\r\n * jQuery EasyUI 1.3.6\r\n * \r\n * Copyright (c) 2009-2014 www.jeasyui.com. All rights reserved.\r\n *\r\n * Licensed und"
},
{
"path": "src/main/webapp/static/easyui/src/jquery.tabs.js",
"chars": 22417,
"preview": "/**\r\n * jQuery EasyUI 1.3.6\r\n * \r\n * Copyright (c) 2009-2014 www.jeasyui.com. All rights reserved.\r\n *\r\n * Licensed und"
},
{
"path": "src/main/webapp/static/easyui/src/jquery.window.js",
"chars": 11349,
"preview": "/**\r\n * jQuery EasyUI 1.3.6\r\n * \r\n * Copyright (c) 2009-2014 www.jeasyui.com. All rights reserved.\r\n *\r\n * Licensed und"
},
{
"path": "src/main/webapp/static/easyui/themes/color.css",
"chars": 4056,
"preview": ".c1,.c1:hover{\r\n\tcolor: #fff;\r\n\tborder-color: #3c8b3c;\r\n\tbackground: #4cae4c;\r\n\tbackground: -webkit-linear-gradient(top,"
},
{
"path": "src/main/webapp/static/easyui/themes/icon.css",
"chars": 2803,
"preview": "/*-----------------------------------\r\n 扩展图片\r\n-----------------------------------*/\r\n.icon-cyan-file {\r\n\tbackground"
},
{
"path": "src/main/webapp/static/easyui/themes/metro/accordion.css",
"chars": 829,
"preview": ".accordion {\n overflow: hidden;\n border-width: 1px;\n border-style: solid;\n}\n.accordion .accordion-header {\n border-w"
},
{
"path": "src/main/webapp/static/easyui/themes/metro/calendar.css",
"chars": 3751,
"preview": ".calendar {\n border-width: 1px;\n border-style: solid;\n padding: 1px;\n overflow: hidden;\n}\n.calendar table {\n table-"
},
{
"path": "src/main/webapp/static/easyui/themes/metro/combo.css",
"chars": 1050,
"preview": ".combo {\n display: inline-block;\n white-space: nowrap;\n margin: 0;\n padding: 0;\n border-width: 1px;\n border-style:"
},
{
"path": "src/main/webapp/static/easyui/themes/metro/combobox.css",
"chars": 390,
"preview": ".combobox-item,\n.combobox-group {\n font-size: 12px;\n padding: 3px;\n padding-right: 0px;\n}\n.combobox-item-disabled {\n "
},
{
"path": "src/main/webapp/static/easyui/themes/metro/datagrid.css",
"chars": 5064,
"preview": ".datagrid .panel-body {\n overflow: hidden;\n position: relative;\n}\n\n.datagrid-view {\n position: relative;\n ov"
},
{
"path": "src/main/webapp/static/easyui/themes/metro/datebox.css",
"chars": 616,
"preview": ".datebox-calendar-inner {\n height: 180px;\n}\n.datebox-button {\n height: 18px;\n padding: 2px 5px;\n text-align: center;"
},
{
"path": "src/main/webapp/static/easyui/themes/metro/dialog.css",
"chars": 533,
"preview": ".dialog-content {\n overflow: auto;\n}\n.dialog-toolbar {\n padding: 2px 5px;\n}\n.dialog-tool-separator {\n float: left;\n "
},
{
"path": "src/main/webapp/static/easyui/themes/metro/easyui.css",
"chars": 48538,
"preview": ".panel {\n overflow: hidden;\n text-align: left;\n margin: 0 4px 0 0;\n border: 0;\n -moz-border-radius: 0 0 0 0;\n -web"
},
{
"path": "src/main/webapp/static/easyui/themes/metro/filebox.css",
"chars": 100,
"preview": ".filebox .textbox-value {\n vertical-align: top;\n position: absolute;\n top: 0;\n left: -5000px;\n}\n"
},
{
"path": "src/main/webapp/static/easyui/themes/metro/layout.css",
"chars": 1681,
"preview": ".layout {\n position: relative;\n overflow: hidden;\n margin: 0;\n padding: 0;\n z-index: 0;\n}\n.layout-panel {\n positio"
},
{
"path": "src/main/webapp/static/easyui/themes/metro/linkbutton.css",
"chars": 4254,
"preview": ".l-btn {\n text-decoration: none;\n display: inline-block;\n overflow: hidden;\n margin: 0;\n padding: 0;\n cursor: poin"
},
{
"path": "src/main/webapp/static/easyui/themes/metro/menu.css",
"chars": 2037,
"preview": ".menu {\n position: absolute;\n margin: 0;\n padding: 2px;\n border-width: 1px;\n border-style: solid;\n overflow: hidde"
},
{
"path": "src/main/webapp/static/easyui/themes/metro/menubutton.css",
"chars": 1870,
"preview": ".m-btn-downarrow,\n.s-btn-downarrow {\n display: inline-block;\n position: absolute;\n width: 16px;\n height: 16px;\n fon"
},
{
"path": "src/main/webapp/static/easyui/themes/metro/messager.css",
"chars": 801,
"preview": ".messager-body {\n padding: 10px;\n overflow: hidden;\n}\n.messager-button {\n text-align: center;\n padding-top: 10px;\n}\n"
},
{
"path": "src/main/webapp/static/easyui/themes/metro/numberbox.css",
"chars": 125,
"preview": ".numberbox {\n border: 1px solid #ddd;\n margin: 0;\n padding: 0 2px;\n vertical-align: middle;\n}\n.textbox {\n padding: "
},
{
"path": "src/main/webapp/static/easyui/themes/metro/pagination.css",
"chars": 1836,
"preview": ".pagination {\n zoom: 1;\n}\n.pagination table {\n float: left;\n height: 20px;\n}\n.pagination td {\n border: 0;\n}\n.paginat"
},
{
"path": "src/main/webapp/static/easyui/themes/metro/panel.css",
"chars": 2500,
"preview": ".panel {\n overflow: hidden;\n text-align: left;\n margin: 0;\n border: 0;\n -moz-border-radius: 0 0 0 0;\n -webkit-bord"
},
{
"path": "src/main/webapp/static/easyui/themes/metro/progressbar.css",
"chars": 644,
"preview": ".progressbar {\n border-width: 1px;\n border-style: solid;\n -moz-border-radius: 0px 0px 0px 0px;\n -webkit-border-radiu"
},
{
"path": "src/main/webapp/static/easyui/themes/metro/propertygrid.css",
"chars": 710,
"preview": ".propertygrid .datagrid-view1 .datagrid-body td {\n padding-bottom: 1px;\n border-width: 0 1px 0 0;\n}\n.propertygrid .dat"
},
{
"path": "src/main/webapp/static/easyui/themes/metro/searchbox.css",
"chars": 1843,
"preview": ".searchbox {\n display: inline-block;\n white-space: nowrap;\n margin: 0;\n padding: 0;\n border-width: 1px;\n border-st"
},
{
"path": "src/main/webapp/static/easyui/themes/metro/slider.css",
"chars": 1610,
"preview": ".slider-disabled {\n opacity: 0.5;\n filter: alpha(opacity=50);\n}\n.slider-h {\n height: 22px;\n}\n.slider-v {\n width: 22p"
},
{
"path": "src/main/webapp/static/easyui/themes/metro/spinner.css",
"chars": 1436,
"preview": ".spinner {\n display: inline-block;\n white-space: nowrap;\n margin: 0;\n padding: 0;\n border-width: 1px;\n border-styl"
},
{
"path": "src/main/webapp/static/easyui/themes/metro/splitbutton.css",
"chars": 293,
"preview": ".s-btn:hover .m-btn-line,\n.s-btn-active .m-btn-line,\n.s-btn-plain-active .m-btn-line {\n display: inline-block;\n}\n.l-btn"
},
{
"path": "src/main/webapp/static/easyui/themes/metro/tabs.css",
"chars": 6834,
"preview": ".tabs-container {\n overflow: hidden;\n border-radius: 0px;\n}\n\n.tabs-header {\n border-width: 1px;\n border-styl"
},
{
"path": "src/main/webapp/static/easyui/themes/metro/textbox.css",
"chars": 1774,
"preview": ".textbox {\n position: relative;\n border: 1px solid #ddd;\n background-color: #fff;\n vertical-align: middle;\n display"
},
{
"path": "src/main/webapp/static/easyui/themes/metro/tooltip.css",
"chars": 1903,
"preview": ".tooltip {\n position: absolute;\n display: none;\n z-index: 9900000;\n outline: none;\n opacity: 1;\n filter: alpha(opa"
},
{
"path": "src/main/webapp/static/easyui/themes/metro/tree.css",
"chars": 3425,
"preview": ".tree {\n margin: 0;\n padding: 0;\n list-style-type: none;\n}\n.tree li {\n white-space: nowrap;\n}\n.tree li ul {\n list-s"
},
{
"path": "src/main/webapp/static/easyui/themes/metro/validatebox.css",
"chars": 94,
"preview": ".validatebox-invalid {\n border-color: #ffa8a8;\n background-color: #fff3f3;\n color: #000;\n}\n"
},
{
"path": "src/main/webapp/static/easyui/themes/metro/window.css",
"chars": 1698,
"preview": ".window {\n overflow: hidden;\n padding: 5px;\n border-width: 1px;\n border-style: solid;\n}\n.window .window-header {\n b"
},
{
"path": "src/main/webapp/static/jcheckbox/css/jquery-labelauty.css",
"chars": 3174,
"preview": "/*!\n * LABELAUTY jQuery Plugin Styles\n *\n * @file: jquery-labelauty.css\n * @author: Francisco Neves (@fntneves)\n * @site"
},
{
"path": "src/main/webapp/static/jcheckbox/js/jquery-labelauty.js",
"chars": 7138,
"preview": "/*!\n * LABELAUTY jQuery Plugin\n *\n * @file: jquery-labelauty.js\n * @author: Francisco Neves (@fntneves)\n * @site: www.fr"
}
]
// ... and 19 more files (download for full content)
About this extraction
This page contains the full source code of the Kiritor/HR GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 219 files (1.8 MB), approximately 528.8k tokens, and a symbol index with 841 extracted functions, classes, methods, constants, and types. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.
Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.