强制跳转修改密码

master
linjj 1 year ago
parent 42bf8f46ee
commit c63ff290f4

@ -118,6 +118,7 @@
}
</style>
<body>
<input type="hedden" style="display:none" value="${msg}" id="msg"/>
<div class="login">
<div class="left">
<img src="./static/img/login/login_bg.png" alt="">

@ -51,13 +51,13 @@ function login() {
url: path + "/login",
data: {userName: userName, userPwd: userPwd, rememberMe: rememberMe},
success: function (data) {
var reg = /^(?![A-Za-z]+$)(?![A-Z\d]+$)(?![A-Z\W]+$)(?![a-z\d]+$)(?![a-z\W]+$)(?![\d\W]+$)\S{8,20}$/;
var msg = $("#msg").val();
console.log("msg" + msg)
var reg = /^(?![A-Za-z]+$)(?![A-Z\d]+$)(?![A-Z\W]+$)(?![a-z\d]+$)(?![a-z\W]+$)(?![\d\W]+$)\S{8,20}$/;
if (!reg.test(userPwd)) {
window.location.href = 'updatePassword';
}else {
window.location.href = 'gatewayPage';
}
window.location.href = 'gatewayPage';
},
})
}

@ -9,16 +9,13 @@ $(function() {
isOldValid = true;
});
//提交更改
$('#btn_submit').click(function () {
/*if($("#userPwd").val() == ""){
toastr.warning("旧密码不能为空!")
return false;
}
if($("#userPwd").val().length < 8){
toastr.warning("旧密码长度小于8位")
return false;
}*/
var reg = /^(?![A-Za-z]+$)(?![A-Z\d]+$)(?![A-Z\W]+$)(?![a-z\d]+$)(?![a-z\W]+$)(?![\d\W]+$)\S{8,20}$/;
if($("#newUserPwd").val() == ""){
toastr.warning("新密码不能为空!")
return false;
@ -39,6 +36,10 @@ $(function() {
toastr.warning("重复密码与密码不一致!")
return false;
}
if (!reg.test($("#newUserPwd").val())) {
toastr.warning("口令必须包含如下字符的组合:一个小写字母、个大写字母、一数字、一特殊字符中三种组合!")
return false;
}
$.ajax({
type: "post",
url: path+"/user/updatePassword",

@ -0,0 +1,108 @@
<?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:aop="http://www.springframework.org/schema/aop"
xmlns:tx="http://www.springframework.org/schema/tx"
xmlns:mvc="http://www.springframework.org/schema/mvc"
xsi:schemaLocation="http://www.springframework.org/schema/mvc
http://www.springframework.org/schema/mvc/spring-mvc-4.3.xsd
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context.xsd
http://www.springframework.org/schema/aop
http://www.springframework.org/schema/aop/spring-aop.xsd
http://www.springframework.org/schema/tx
http://www.springframework.org/schema/tx/spring-tx.xsd">
<!-- 开启注解扫描 -->
<mvc:annotation-driven/>
<context:property-placeholder location="classpath:config/*.properties"/>
<!-- 注解扫面包路径 -->
<context:component-scan base-package="com.manage">
<!-- 制定扫包规则 ,不扫描@Controller注解的JAVA类 -->
<context:exclude-filter type="annotation" expression="org.springframework.stereotype.Controller"/>
</context:component-scan>
<!--配置数据源-->
<bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource" destroy-method="close">
<property name="driverClassName" value="${jdbc.driver}"/> <!--数据库连接驱动-->
<property name="url" value="${jdbc.url}"/> <!--数据库地址-->
<property name="username" value="${jdbc.username}"/> <!--用户名-->
<property name="password" value="${jdbc.password}"/> <!--密码-->
<property name="maxActive" value="40"/> <!-- 最大连接数-->
<property name="minIdle" value="1"/> <!--最小连接数-->
<property name="initialSize" value="10"/> <!-- 初始化连接池内的数据库连接-->
</bean>
<!-- ====================== 配置和MyBatis的整合 ======================== -->
<!--配置session工厂MyBatis的整合-->
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<!-- 指定mybatis全局配置文件的位置 -->
<property name="configLocation" value="classpath:config/mybatis-config.xml"></property>
<property name="dataSource" ref="dataSource"></property>
<!-- 指定mybatis,mapper文件的位置 -->
<property name="mapperLocations" value="classpath:mapper/*.xml"/>
</bean>
<!-- mapper扫描 -->
<!-- <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
<property name="sqlSessionFactoryBeanName" value="sqlSessionFactory"></property>
<property name="basePackage" value="com.manage.dao"></property>
</bean>-->
<!-- 配置扫描器将mybatis接口的实现加入到IOC容器中 -->
<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
<property name="sqlSessionFactoryBeanName" value="sqlSessionFactory"></property>
<!-- 扫描所有的dao接口的实现加入到ioc容器 -->
<property name="basePackage" value="com.manage.dao"></property>
</bean>
<!-- 配置一个可以执行批量的sqlSession -->
<bean id="sqlSession" class="org.mybatis.spring.SqlSessionTemplate">
<constructor-arg name="sqlSessionFactory" ref="sqlSessionFactory"></constructor-arg>
<constructor-arg name="executorType" value="BATCH"></constructor-arg>
</bean>
<!-- ====================== 事物管理器配置 ======================== -->
<!-- 事物管理器配置 -->
<bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource" ref="dataSource"/>
</bean>
<!-- 开启基于注解的事务使用xml配置形式的事务必须主要的都是使用配置式 -->
<aop:config>
<!-- 切入表达式 -->
<aop:pointcut expression="execution(* com.manage.service..*(..))" id="txPoint"/>
<!-- 配置事务增强 -->
<aop:advisor advice-ref="txAdvice" pointcut-ref="txPoint"/>
</aop:config>
<!-- 配置事务增强 ,事务如何切入-->
<tx:advice id="txAdvice" transaction-manager="transactionManager">
<!-- 所有方法都是事务方法 -->
<tx:attributes>
<tx:method name="*"/>
<tx:method name="insert*" propagation="REQUIRED"/>
<tx:method name="add*" propagation="REQUIRED"/>
<tx:method name="create*" propagation="REQUIRED"/>
<tx:method name="delete*" propagation="REQUIRED"/>
<tx:method name="update*" propagation="REQUIRED"/>
<tx:method name="find*" propagation="SUPPORTS" read-only="true"/>
<tx:method name="select*" propagation="SUPPORTS" read-only="true"/>
<tx:method name="get*" propagation="SUPPORTS" read-only="true"/>
</tx:attributes>
</tx:advice>
<!-- Spring配置文件的核心点数据源、与 mybatis的整合事务控制 -->
<!-- 事务扫描开始(开启@Tranctional) -->
<!-- <tx:annotation-driven transaction-manager="transactionManager" proxy-target-class="true"/> -->
<!-- 使用annotation定义事务 -->
<!-- <tx:annotation-driven transaction-manager="transactionManager"/> -->
<!-- 定义切面功能 -->
<!-- <aop:aspectj-autoproxy />-->
<!-- 引入websocket -->
</beans>

@ -0,0 +1,85 @@
# 拦截菜单配置文件 ljx 2019-4-27
#interceptRequest 未登录之前放行。默认为none
#ajaxRequest ajax请求没有对应模块需要放行。 默认为none
releaseRequest = /login,/logout,/services,/font,/refuse,/swagger-ui.html,/webjars,/swagger-resources,/v2,/qualityModel
ajaxRequest = none
#session过期时间
TOKEN_EXPIRE_TIME = 3600000
##################################################服务器ip##########################################################
#通用服务器IP与通用服务器端口
SERVER_IP = localhost
SERVER_PORT = 8081
#power权限系统ip
POWER_IP = ${SERVER_IP}
#权限系统端口
POWER_PORT = ${SERVER_PORT}
#病案归档系统ip
EMRMEDICALRECORD_IP = ${SERVER_IP}
#病案归档系统端口
EMRMEDICALRECORD_PORT = 8082
#病案管理系统ip
EMRRECORD_IP = ${SERVER_IP}
#病案管理系统端口
EMRRECORD_PORT = 8083
#病案复印预约ip
EMRAPPLYCOPY_IP = ${SERVER_IP}
#病案复印预约端口
EMRAPPLYCOPY_PORT = ${SERVER_PORT}
#病案签收ip
EMRFILES_IP = ${SERVER_IP}
#病案签收端口
EMRFILES_PORT = ${SERVER_PORT}
#emr_medical_record归档系统的系统标识
EMRMEDICALRECORD_SYSFLAG = emr_medical_record
#emr_medical_record归档系统的服务器地址头
EMRMEDICALRECORD_URLHEAD = http://${EMRMEDICALRECORD_IP}:${EMRMEDICALRECORD_PORT}/${EMRMEDICALRECORD_SYSFLAG}
#emr_record病案管理系统的系统标识
EMRRECORD_SYSFLAG = emr_record
#emr_record病案管理系统的服务器地址头
EMRRECORD_URLHEAD = http://${EMRRECORD_IP}:${EMRRECORD_PORT}/${EMRRECORD_SYSFLAG}
#emr_apply_copy病案复印预约的系统标识
EMRAPPLYCOPY_SYSFLAG = emr_apply_copy
#emr_apply_copy病案复印预约的服务器地址头
EMRAPPLYCOPY_URLHEAD = http://${EMRAPPLYCOPY_IP}:${EMRAPPLYCOPY_PORT}/${EMRAPPLYCOPY_SYSFLAG}
#emr_files病案签收的系统标识
EMRFILES__SYSFLAG = emr_files
#emr_files病案签收的服务器地址头
EMRFILES_URLHEAD = http://${EMRFILES_IP}:${EMRFILES_PORT}/${EMRFILES__SYSFLAG}
#####################################################其他##############################################
#病案回收地址系统
EMR_RECOVERY=https://192.168.16.85:9012/recycle
#webSocket服务器地址
WEBSOCKET_URLHEAD = ${POWER_IP}:8088
#通知字符串间隔符
STR_SPLIT = *^:|,.
#日志保留天数
log.days = 90
#定义是否为长期登录用户次数
login.times = 3
synchronizationSwitch = 1
#厦门中山医院获取二维码接口地址
wsdlUrl = http://101.132.67.155:8087/PKIQRCode/services/v1?wsdl
#厦门中山医院获取二维码接口名称标识
operationName = SOF_GetQRCodeBySys
#厦门中山医院获取用户扫码状态接口地址
queryQRCodeUrl= http://101.132.67.155:8087/PKIQRCode/services/v1?wsdl
#厦门中山医院获取用户扫码状态接口标识
queryQRCodeUrlName= SOF_QueryQRCode
#厦门中山医院获取用户扫码状态接口标识
getLoginUserInfoName=SOF_LoginWithAccountInfo
#厦门中山医院获取用户扫码状态接口地址
getLoginUserInfoUrl=http://101.132.67.155:8087/pkis/services/v1?wsdl

@ -0,0 +1,24 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE configuration
PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
<settings>
<!-- 列自动映射 -->
<setting name="mapUnderscoreToCamelCase" value="true"/>
<!--<setting name="logImpl" value="STDOUT_LOGGING"/>-->
</settings>
<typeAliases>
<package name="com.manage.entity"/>
</typeAliases>
<plugins>
<!-- com.github.pagehelper为PageHelper类所在包名 -->
<plugin interceptor="com.github.pagehelper.PageInterceptor">
<!--分页参数合理化-->
<property name="reasonable" value="true"/>
</plugin>
</plugins>
</configuration>

@ -0,0 +1,25 @@
jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc\:mysql\://localhost\:3306/qf_power?useUnicode\=true&characterEncoding\=utf-8
jdbc.username=root
jdbc.password=root
#hibernate config
hibernate.dialect = org.hibernate.dialect.MySQLDialect
hibernate.show_sql = true
hibernate.format_sql = true
hibernate.hbm2ddl.auto =update
#hibernate.current_session_context_class=org.springframework.orm.hibernate5.SpringSessionContext
hibernate.current_session_context_class=thread
hibernate.jdbc.batch_size=50
hibernate.enable_lazy_load_no_trans=true
targetProject=src/main/java
#modelPackage,sqlMapperPackage,daoMapperPackage ͨ<><CDA8>һ<EFBFBD><D2BB>??
modelPackage=com.manage.entity
daoMapperPackage=com.manage.dao
targetProject2=src/main/resources
sqlMapperPackage=mapper

@ -0,0 +1,59 @@
<?xml version="1.0" encoding="UTF-8"?><configuration status="warn">
<Properties>
<Property name="infoLogFileDir">D:docus_logs/power/info</Property>
<Property name="infoLogFileName">info_log</Property>
<Property name="infoLogFileSrc">${infoLogFileDir}/${infoLogFileName}</Property>
<Property name="errorLogFileDir">D:docus_logs/power/error</Property>
<Property name="errorLogFileName">error_log</Property>
<Property name="errorLogFileSrc">${errorLogFileDir}/${errorLogFileName}</Property>
</Properties>
<appenders>
<RollingFile name="infoLogRollingFile" fileName="${infoLogFileSrc}"
filePattern="${infoLogFileSrc}-%d{yyyy-MM-dd}-%i.log">
<PatternLayout pattern="%d{yyyy-MM-dd 'at' HH:mm:ss z} %-5level %class{36} %L %M - %msg%xEx%n"/>
<!--配置1天存储一个文件-->
<TimeBasedTriggeringPolicy interval="1" modulate="true" />
<!--配置超过文件大小切割成多个文件%i区分序号目前配一个文件20M-->
<SizeBasedTriggeringPolicy size="20MB"/>
<!-- DefaultRolloverStrategy属性如不设置则默认为最多同一文件夹下7个文件这里设置了20 -->
<DefaultRolloverStrategy max="20">
<Delete basePath="${infoLogFileDir}/" maxDepth="1">
<IfFileName glob="*.log" />
<!--!Note: 这里的age必须和filePattern协调, 后者是精确到HH, 这里就要写成xH, xd就不起作用
另外, 数字最好>2, 否则可能造成删除的时候, 最近的文件还处于被占用状态,导致删除不成功!-->
<!--保留30天-->
<IfLastModified age="30d" />
</Delete>
</DefaultRolloverStrategy>
</RollingFile>
<RollingFile name="errorLogRollingFile" fileName="${errorLogFileSrc}"
filePattern="${errorLogFileSrc}-%d{yyyy-MM-dd}-%i.log">
<PatternLayout pattern="%d{yyyy-MM-dd 'at' HH:mm:ss z} %-5level %class{36} %L %M - %msg%xEx%n"/>
<!--配置1天存储一个文件-->
<TimeBasedTriggeringPolicy interval="1" modulate="true" />
<!--配置超过文件大小切割成多个文件%i区分序号目前配一个文件20M-->
<SizeBasedTriggeringPolicy size="20MB"/>
<!-- DefaultRolloverStrategy属性如不设置则默认为最多同一文件夹下7个文件这里设置了20 -->
<DefaultRolloverStrategy max="20">
<Delete basePath="${errorLogFileDir}/" maxDepth="1">
<IfFileName glob="*.log" />
<!--!Note: 这里的age必须和filePattern协调, 后者是精确到HH, 这里就要写成xH, xd就不起作用
另外, 数字最好>2, 否则可能造成删除的时候, 最近的文件还处于被占用状态,导致删除不成功!-->
<!--保留30天-->
<IfLastModified age="30d" />
</Delete>
</DefaultRolloverStrategy>
</RollingFile>
</appenders>
<loggers>
<Logger name="infoLog" additivity="TRUE" level="ALL">
<AppenderRef ref="infoLogRollingFile" level="INFO" />
</Logger>
<Logger name="errorLog" additivity="TRUE" level="ALL">
<AppenderRef ref="errorLogRollingFile" level="ERROR" />
</Logger>
</loggers>
</configuration>

@ -0,0 +1,79 @@
<?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"
xmlns:aop="http://www.springframework.org/schema/aop"
xmlns:task="http://www.springframework.org/schema/task"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context.xsd
http://www.springframework.org/schema/mvc
http://www.springframework.org/schema/mvc/spring-mvc.xsd
http://www.springframework.org/schema/aop
http://www.springframework.org/schema/aop/spring-aop.xsd
http://www.springframework.org/schema/task
http://www.springframework.org/schema/task/spring-task.xsd">
<bean id="configProperties" class="org.springframework.beans.factory.config.PropertiesFactoryBean">
<property name="locations">
<list>
<value>classpath:/config/*.properties</value>
</list>
</property>
</bean>
<bean id="propertyConfigurer" class="org.springframework.beans.factory.config.PreferencesPlaceholderConfigurer">
<property name="properties" ref="configProperties" />
</bean>
<task:annotation-driven />
<mvc:annotation-driven/>
<context:component-scan base-package="com.manage.controller,com.manage.annotation"/>
<aop:aspectj-autoproxy proxy-target-class="true" />
<aop:config proxy-target-class="true"/>
<!-- 静态资源映射 -->
<!-- <mvc:resources mapping="/static/**" location="/static/" />-->
<!-- 当上面要访问的静态资源不包括在上面的配置中时,则根据此配置来访问 -->
<!--<mvc:default-servlet-handler />-->
<bean id="exceptionResolver" class="org.springframework.web.servlet.handler.SimpleMappingExceptionResolver">
<property name="exceptionMappings">
<props>
<prop key="com.manage.controller.PermissionsException">redirect:/refuse</prop>
</props>
</property>
</bean>
<!--配置视图解析器,方便页面返回 -->
<bean id="jspViewResolver"
class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/WEB-INF/views/" />
<property name="suffix" value=".jsp" />
</bean>
<!-- 两个标准配置 -->
<!-- 将springmvc不能处理的请求交tomcat -->
<mvc:default-servlet-handler/>
<!-- 支持springmvc更高级的一些功能JSR303校验,快捷的ajax...映射动态请求 -->
<!-- 2019-4-18 ljx -->
<mvc:annotation-driven>
<mvc:message-converters>
<bean class="org.springframework.http.converter.StringHttpMessageConverter"/>
<bean class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter"/>
</mvc:message-converters>
</mvc:annotation-driven>
<!-- 登录拦截器 -->
<!-- 2019-4-16 ljx -->
<mvc:interceptors>
<mvc:interceptor>
<mvc:mapping path="/**"/>
<mvc:exclude-mapping path="/static/**"/>
<bean class="com.manage.interceptor.LoginInterceptor"/>
</mvc:interceptor>
</mvc:interceptors>
<!-- <bean id="multipartResolver"
class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
<property name="maxUploadSize" value="104857600" />
<property name="maxInMemorySize" value="4096" />
</bean>-->
</beans>

@ -0,0 +1,64 @@
<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<c:set var="path" value="${pageContext.request.contextPath}"/>
<%@taglib prefix="pm" uri="/WEB-INF/taglib/guardtag.tld"%>
<link rel="stylesheet" href="${path}/static/css/comm.css"/>
<link rel="stylesheet" href="${path}/static/bootstrap-3.3.7/bower_components/bootstrap/dist/css/bootstrap.min.css"/>
<link rel="stylesheet" href="${path}/static/bootstrap-3.3.7/bower_components/font-awesome/css/font-awesome.min.css"/>
<link rel="stylesheet" href="${path}/static/bootstrap-3.3.7/bower_components/Ionicons/css/ionicons.min.css"/>
<link rel="stylesheet" href="${path}/static/bootstrap-3.3.7/dist/css/AdminLTE.min.css"/>
<link rel="stylesheet" href="${path}/static/bootstrap-3.3.7/dist/css/skins/_all-skins.min.css"/>
<link rel="stylesheet" href="${path}/static/bootstrap-3.3.7/bower_components/bootstrap-datepicker/dist/css/bootstrap-datepicker.min.css"/>
<link rel="stylesheet" href="${path}/static/bootstrap-3.3.7/bower_components/bootstrap-table/bootstrap-table.min.css">
<link rel="stylesheet" href="${path}/static/css/bootstrap-select.min.css">
<link rel="stylesheet" href="${path}/static/js/toastr.min.css" type="text/css">
<link rel="shortcut icon" href="favicon.ico">
<!-- 引入Jquery -->
<script type="text/javascript" src="${path}/static/js/jquery-3.3.1.js"></script>
<!-- jQuery UI 1.11.4 -->
<script src="${path}/static/js/jquery-ui.min.js"></script>
<!-- Bootstrap 3.3.7 -->
<script src="${path}/static/bootstrap-3.3.7/bower_components/bootstrap/dist/js/bootstrap.min.js"></script>
<!-- datepicker -->
<script src="${path}/static/bootstrap-3.3.7/bower_components/bootstrap-datepicker/dist/js/bootstrap-datepicker.min.js"></script>
<!-- AdminLTE App -->
<script src="${path}/static/bootstrap-3.3.7/dist/js/adminlte.min.js"></script>
<script src="${path}/static/bootstrap-3.3.7/bower_components/bootstrap-table/bootstrap-table.js"></script>
<script src="${path}/static/bootstrap-3.3.7/bower_components/bootstrap-table/locale/bootstrap-table-zh-CN.min.js"></script>
<script src="${path}/static/js/bootstrap-select.min.js"></script>
<script src="${path}/static/js/toastr.min.js"></script>
<script src="${path}/static/js/jquery.form.js"></script>
<script>
toastr.options.positionClass = 'toast-top-right';
</script>
<script>
var path = "${path}";
//回跳表格页码
function backToPage(){
refresh();
setTimeout(function(){
var pageSize=$('#bootstrapTable').bootstrapTable('getOptions').pageSize;
var rows=$('#bootstrapTable').bootstrapTable("getOptions").totalRows;
if((pageSize*(pageNumber-1)) == rows && pageNumber != 1){
pageNumber -= 1;
}
$('#bootstrapTable').bootstrapTable('selectPage', pageNumber);
},100)
}
function toPage() {
var pageNum = $("#pageNum").val();
if (pageNum) {
$('#bootstrapTable').bootstrapTable('selectPage', parseInt(pageNum));
}
setTimeout(function(){
$("#pageNum").val(pageNum)
},500)
}
</script>
<%@ include file="/WEB-INF/jspf/confirmJsp.jspf"%>

@ -0,0 +1,45 @@
<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<c:set var="path" value="${pageContext.request.contextPath}"/>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<link rel="stylesheet" href="${path}/static/js/jquery-confirm.min.css">
<script src="${path}/static/js/jquery-confirm.min.js"></script>
<input type="hidden" id="common_confirm_btn" class="btn btn-primary btn-lg" data-toggle="modal" data-target="#common_confirm_model">
<div id="common_confirm_model" class="modal" style="z-index: 99999">
<div class="modal-dialog modal-sm">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal"><span aria-hidden="true">&times;</span><span class="sr-only">Close</span></button>
<h5 class="modal-title"><i class="fa fa-exclamation-circle"></i> <span class="title"></span></h5>
</div>
<div class="modal-body small">
<p ><span class="message"></span></p>
</div>
<div class="modal-footer" >
<button type="button" class="btn btn-primary ok" data-dismiss="modal">确认</button>
<button type="button" class="btn btn-default cancel" data-dismiss="modal">取消</button>
</div>
</div>
</div>
</div>
<script>
var Common = {
confirm:function(params){
var model = $("#common_confirm_model");
model.find(".title").html(params.title)
model.find(".message").html(params.message)
$("#common_confirm_btn").click()
//每次都将监听先关闭,防止多次监听发生,确保只有一次监听
model.find(".cancel").off("click")
model.find(".ok").off("click")
model.find(".ok").on("click",function(){
params.operate(true)
})
model.find(".cancel").on("click",function(){
params.operate(false)
})
}
}
</script>

@ -0,0 +1,151 @@
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ include file="/WEB-INF/jspf/common.jspf" %>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8" />
<title>角色菜单权限</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no"/>
<link rel="stylesheet" href="${path}/static/zTree_v3-master/css/demo.css" type="text/css">
<link rel="stylesheet" href="${path}/static/zTree_v3-master/css/zTreeStyle/zTreeStyle.css" type="text/css">
<script src="${path}/static/zTree_v3-master/js/jquery.ztree.all.js"></script>
<script src="${path}/static/zTree_v3-master/js/jquery.ztree.exhide.js"></script>
<script>
var path = "${path}";
</script>
<style type="text/css">
.widget-header{
height:26px;
background-color: #1D9ED7;
}
.searcDiv{
margin-top: 5px;
height: 30px;
}
.form-group{
margin-bottom: 0!important;
}
.form-control{
margin: 0 auto;
}
.treeBtn{
margin-top:10px;
padding-left:19%;
}
.btn{
margin-left:8%;
}
.ztree{
border: 0px!important;
background-color: #fff!important;
overflow: auto!important;
font-size: 14rem!important;
height:75%!important;
width: 100%!important;
}
.zTreeDemo{
margin-left:10%;
}
.buttonDiv{
width: 10%;
height: 10%;
position: fixed;
right: 3%;
bottom: 10%;
}
.restore{
width:100px!important;
}
/*h1{
margin-left:-80%;
}*/
</style>
</head>
<body>
<%--<div class="row">
<h1>
授权管理/角色分配菜单
</h1>
</div>--%>
<div class="row">
<input type="hidden" id="roleId" name="roleId">
<input type="hidden" id="sysFlag" name="sysFlag">
<input type="hidden" id="menus" name="menus">
<input type="hidden" id="methods">
<%--<div class="row">
<h1 style="text-align:left">
基本管理/用户管理
</h1>
</div>--%>
<!--节点menuId-->
<input type="hidden" id="divIndex">
<!--角色树-->
<div class="col-sm-3">
<div class="">
<div class="widget-header">
<h2>&nbsp;</h2>
</div>
<div class="searcDiv">
<div class="form-group">
<label class="col-sm-9 control-label"><input type="text" class="form-control input-sm" id="key" maxlength="16" placeholder="角色名"></label>
<div class="col-sm-3">
<button type="button" class="btn btn-sm btn-primary left" onclick="reloadTree()">搜索</button>
</div>
</div>
</div>
<div class="treeBtn">
<button type="button" class="btn btn-primary btn-sm" onclick="expandAll();">全部展开</button>
<button type="button" class="btn btn-primary btn-sm" onclick="collapseAll();">全部折叠</button>
</div>
<div class="zTreeDemo">
<ul id="ztree" class="ztree"></ul>
</div>
</div>
</div>
<!--菜单树-->
<div class="col-sm-3">
<div class="">
<div class="widget-header">
<h2>&nbsp;</h2>
</div>
<div class="searcDiv">
<input type="text" id="key1" value="" class="form-control input-sm"
placeholder="菜单名称" maxlength="16" style="width:80%"/><br/>
</div>
<div class="treeBtn">
<button type="button" class="btn btn-primary btn-sm" onclick="expandAll1();">全部展开</button>
<button type="button" class="btn btn-primary btn-sm" onclick="collapseAll1();">全部折叠</button>
</div>
<div class="zTreeDemo">
<ul id="ztree1" class="ztree"></ul>
</div>
</div>
</div>
<!--方法区-->
<div class="col-sm-6" >
<div class="">
<div class="widget-header">
<h2>&nbsp;</h2>
</div>
<div class="widget-body">
<div class="widget-main">
<div id="block">
</div>
</div>
</div>
<div class="buttonDiv">
<pm:myPermissions permissions="/menuPower/addRoleMenu">
<button type="button" class="btn btn-primary btn-sm restore" onclick="addMenu()">保存</button>
</pm:myPermissions>
</div>
</div>
</div>
</div>
</div><!-- /.main-container -->
<script src="${path}/static/js/menu/rolePowerList.js"></script>
<script src="${path}/static/js/menu/userAndRoleComment.js"></script>
<script src="${path}/static/js/menu/fuzzysearch.js"></script>
<%@ include file="/WEB-INF/jspf/loading.jspf" %>
</body>
</html>

@ -0,0 +1,345 @@
<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ include file="/WEB-INF/jspf/common.jspf" %>
<%@ include file="/WEB-INF/jspf/confirmJsp.jspf" %>
<html>
<head>
<title>通知管理</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<!-- 引入 Bootstrap -->
<link rel="stylesheet" href="${path}/static/css/comm.css">
<link rel="stylesheet" href="${path}/static/zTree_v3-master/css/zTreeStyle/zTreeStyle.css">
<link rel="stylesheet" href="${path}/static/treegrid/jquery.treegrid.min.css">
<link href="${path}/static/css/bootstrap-select.min.css" rel="stylesheet" />
<script src="${path}/static/js/bootstrap-select.min.js" ></script>
<script src="${path}/static/zTree_v3-master/js/jquery.ztree.core.js"></script>
<script src="${path}/static/zTree_v3-master/js/jquery.ztree.exhide.js"></script>
<script src="${path}/static/bootstrap-3.3.7/TreeGrid.js"></script>
<script src="${path}/static/treegrid/bootstrap-table.min.js"></script>
<script src="${path}/static/bootstrap-3.3.7/bower_components/bootstrap-table/locale/bootstrap-table-zh-CN.min.js"></script>
<script src="${path}/static/treegrid/bootstrap-table-treegrid.js"></script>
<script src="${path}/static/treegrid/jquery.treegrid.min.js"></script>
<style type="text/css">
/*页头*/
.panel-heading{
padding: 0 4px;
}
hr{
margin:0;
}
.form-group{
margin-left:5px;
padding-top: 3px;
}
/*模态框表单*/
.formDiv{
width:100%;
height:30px;
margin-top:10px;
}
.control-label{
width:30%;
text-align: right;
padding-top:2px;
}
.input{
width:50%;
float:left;
}
/*按钮组*/
.btns{
text-align: right;
margin-bottom: 10px;
}
/*模态框*/
.modal-header{
text-align: center;
}
.modal-title{
font-weight: bold;
}
.modelBtns{
margin-top:15px;
text-align: center;
}
.modelBtn{
width: 74px;
margin-left: 38px;
margin-bottom: 16px;
}
.tableDiv{
margin-left:15px;
padding-right: 15px;
}
.shortInput{
width:80px;
}
.sexInput{
width:70px;
}
#modal-content{
width:740px;
}
.treeDiv{
margin-top: -15px;
}
/*模态框头*/
.modal-header{
background-color: #199ED8;
text-align: center;
}
/*通知类型模态框*/
#typeModelLeft{
width:30%;
}
#typeModelRight{
width:69%;
}
/**左侧树搜索框*/
.searcDiv{
padding:15px;
}
/**右侧表单div*/
#form1{
padding-top:80px;
}
#addBtn{
height: 30px;
padding: 20px 375px;
}
/**列表按钮*/
.operBtns{
margin-left:10px;
}
/*多选下拉框*/
.dropdown-menu {
position: absolute;
top: 103%;
left: 0;
z-index: 1000;
display: none;
float: left;
list-style: none;
text-shadow: none;
max-height: 400px;
/*设置最大高度为400 overflow: scroll;*/
/* 设置可滚动 padding: 5 px;*/
margin: 0px;
-webkit-box-shadow: 0 1px 8px rgba(0, 0, 0, 0.1);
-moz-box-shadow: 0 1px 8px rgba(0, 0, 0, 0.1);
box-shadow: 0 1px 8px rgba(120, 234, 61, 0.55);
font-size: 14px;
font-family: "Segoe UI", Helvetica, Arial, sans-serif;
border: 1px solid #ddd;
}
/**
*多选下拉框
*/
.bootstrap-select:not([class*=col-]):not([class*=form-control]):not(.input-group-btn){
width: 168px!important;
}
.bootstrap-select>.dropdown-toggle.bs-placeholder{
height: 30px!important;
}
.bootstrap-select>.dropdown-toggle.bs-placeholder{
font-size: 12px!important;
}
</style>
</head>
<body>
<div style="width: 100%;height: 100%;overflow: auto;">
<input type="hidden" id="userName" value="${user.userName}">
<input type="hidden" id="userId" value="${user.userId}">
<input type="hidden" id="roleId" value="${user.roleId}">
<input type="hidden" id="checks">
<div class="">
<div class="col-md-12">
<div class="panel-heading"><h4>通知管理</h4></div>
<hr>
<form class="form-inline" style="margin-top: 10px;" role="form">
<div class="">
<div class="form-group">
<label>通知类型:</label>
<div class=" form-group form-inline" >
<select class=" form-control input-sm" id="searchNoticeId" style="width:140px">
<option value="">全部</option>
<c:forEach items="${dicts}" var="dict">
<c:if test="${dict.noticeTypeName != ''&& dict.noticeTypeName != null}">
<option value="${dict.noticeId}">${dict.noticeTypeName}</option>
</c:if>
</c:forEach>
</select>
</div>
</div>
<div class="form-group">
<label for="effective">是否有效:</label>
<div class=" form-group form-inline">
<select class=" form-control input-sm" id="effective">
<option value="">全部</option>
<option value="1">是</option>
<option value="0">否</option>
</select>
</div>
</div>
<div class="form-group">
<label>通知人:</label>
<input type="text" class="form-control input-sm" id="noticeSend" style="width:100px"/>
</div>
<div class="form-group">
<label>接收人:</label>
<input type="text" class="form-control input-sm" id="searcchNoticeReceive" style="width:100px"/>
</div>
<div class="form-group">
<label>通知时间:</label>
<input type="text" class="form-control input-sm" id="startTime1" style="width:100px"/>
<input type="text" class="form-control input-sm" id="endTime1" style="width:100px"/>
</div>
<div class="form-group">
<label>所属系统:</label>
<div class=" form-group form-inline">
<select class=" form-control input-sm" style="width:106px" id="searchNoticeTypeFlag" style="width:100px">
<option value="">全部</option>
<c:forEach items="${dicts}" var="dict">
<c:if test="${dict.noticeTypeName != ''&& dict.noticeTypeName != null}">
<option value="${dict.noticeTypeFlag}">${dict.remark}</option>
</c:if>
</c:forEach>
</select>
</div>
</div>
<div class="form-group">
<button type="button" id="queryBtn" class="btn btn-primary btn-sm" onclick="refreshTable()">查询</button>
</div>
</div>
</form>
</div>
</div>
<div class="btns">
<%-- <pm:myPermissions permissions="/user/resetPassword">--%>
<c:if test="${user.roleId == 0}">
<button type="button" class="btn btn-info btn-sm" data-toggle="modal" data-target="#myModal">通知类别</button>
</c:if>
<%--</pm:myPermissions>
<pm:myPermissions permissions="/user/add">--%>
<button type="button" onclick="addNotice()" class="btn btn-warning btn-sm" data-toggle="modal" data-target="#myModal1">增加</button>
<%-- </pm:myPermissions>
&lt;%&ndash;<button type="button" class="btn btn-success btn-sm" id="btn_import">导入Excel</button>&ndash;%&gt;
<pm:myPermissions permissions="/user/export">--%>
<button type="button" class="btn btn-primary btn-sm" style="margin-right:40px" onclick="exportExcel()">导出Excel</button>
<%-- </pm:myPermissions>--%>
</div>
<div class="tableDiv">
<table id="table" class="table text-nowrap table-bordered"></table>
</div>
</div>
<!-- 模态框Modal通知类型 -->
<div class="modal fade" id="myModal" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true" data-backdrop="static" data-keyboard="false">
<input type="hidden" id="currentTreeId">
<div class="modal-dialog">
<div class="modal-content" id="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button>
<h4 class="modal-title" id="myModalLabel" style="font-weight: bold">通知类别信息</h4>
</div>
<div class="modal-body" style="height:450px;padding:0">
<div id="typeModelLeft" class="left">
<div class="searcDiv">
<input type="text" id="key" value="" class="form-control input-sm"
placeholder="类别名称"/><br/>
</div>
<div class="treeDiv">
<ul id="treeDemo" class="ztree"></ul>
</div>
</div>
<div style="float:left;width: 1px;height:450px; background: gray;"></div>
<div id="typeModelRight" class="left">
<div id="addBtn" style="display: none">
<button type="button" class="btn btn-primary btn-sm modelBtn" onclick="addNoticeType()">添加</button>
</div>
<form id="form1" style="display: none">
<div class="formDiv">
<input type="hidden" id="noticeId" name="noticeId">
<label class="control-label left">类别标志:</label>
<input type="text" class="form-control input input-sm" id="noticeTypeFlag" name="noticeTypeFlag">
</div>
<div class="formDiv">
<label class="control-label left">类别名称:</label>
<input type="text" class="form-control input input-sm" id="noticeTypeName" name="noticeTypeName">
<input type="hidden" class="form-control input input-sm" value="1" name="effective">
</div>
<div class="modelBtns">
<button type="button" class="btn btn-primary btn-sm modelBtn" id="btn_submit">保存</button>
<button type="button" class="btn btn-danger btn-sm modelBtn" onclick="delNoticeType()">删除</button>
</div>
</form>
</div>
</div>
</div><!-- /.modal-content -->
</div><!-- /.modal-dialog -->
</div>
<!-- 模态框1Modal添加编辑 -->
<div class="modal fade" id="myModal1" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true" data-backdrop="static" data-keyboard="false">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button>
<h4 class="modal-title" style="font-weight: bold">通知信息</h4>
</div>
<div class="modal-body" style="height:auto">
<form id="form2">
<div class="formDiv">
<label class="control-label left">通知主题:</label>
<input type="hidden" name="noticeId" id="noticeId1">
<input type="hidden" name="readFlag" id="readFlag">
<input type="text" class="form-control input input-sm" id="noticeTitle" name="noticeTitle" maxlength="15">
</div>
<div class="formDiv">
<label class="control-label left">通知类型:</label>
<select class="form-control input input-sm sexInput" id="parentId" name="parentId" style="width:180px">
<option value="">请选择</option>
<c:forEach items="${dicts}" var="dict">
<c:if test="${dict.noticeTypeName != ''&& dict.noticeTypeName != null}">
<option value="${dict.noticeId}">${dict.noticeTypeName}</option>
</c:if>
</c:forEach>
</select>
</div>
<div class="formDiv" style="height:47px;">
<label class="control-label left">通知内容:</label>
<textarea class="form-control input input-sm" id="noticeContent" name="noticeContent"></textarea>
</div>
<div class="formDiv">
<label class="control-label left">接收人:</label>
<select class="selectpicker form-control input input-sm" multiple name="noticeReceive" id="noticeReceive" data-live-search="true" data-actions-box="true">
</select>
</div>
<div class="formDiv">
<label class="control-label left">是否有效:</label>
<select class="form-control input input-sm shortInput" id="effective1" name="effective">
<option value="1">有效</option>
<option value="0">无效</option>
</select>
</div>
<div class="formDiv">
<label class="control-label left">备注:</label>
<textarea class="form-control input input-sm" id="remark" name="remark"></textarea>
</div>
</form>
</div>
<div class="modelBtns">
<button type="button" class="btn btn-primary btn-sm modelBtn" id="notice_submit">提交</button>
<button type="button" class="btn btn-default btn-sm modelBtn" onclick="clearForm()">清空</button>
</div>
</div><!-- /.modal-content -->
</div><!-- /.modal-dialog -->
</div>
<script src="${path}/static/js/dateUtil.js"></script>
<script src="${path}/static/js/noticePage.js"></script>
<script src="${path}/static/js/menu/fuzzysearch.js"></script>
</body>
</html>

@ -0,0 +1,40 @@
<%--
Created by IntelliJ IDEA.
User: ljx
Date: 2019/5/13
Time: 17:02
To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>修改密码</title>
<%@ include file="/WEB-INF/jspf/common.jspf" %>
</head>
<style>
img{
width: 300px;
height: 300px;
position: absolute;
top: 50%;
left: 50%;
margin-top: -122px;
margin-left: -109px;
}
</style>
<body>
<fieldset>
<legend style="text-align: center;font-weight: bold;font-size: 25px">修改密码</legend>
</fieldset>
<div class="flexbox">
<img src="../static/img/login/厦门中山医院修改密码.png" >
</div>
</body>
<script src="${path}/static/js/updatePassword.js?t=1"></script>
</html>

@ -0,0 +1,90 @@
<?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" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0">
<display-name>power-admin</display-name>
<welcome-file-list>
<welcome-file>/loginDir/login174.jsp</welcome-file>
</welcome-file-list>
<!-- 字符编码过滤器 -->
<filter>
<filter-name>characterEncodingFilter</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>forceRequestEncoding</param-name>
<param-value>true</param-value>
</init-param>
<init-param>
<param-name>forceResponseEncoding</param-name>
<param-value>true</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>characterEncodingFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<!-- <filter>
<filter-name>MyFilter</filter-name>
<filter-class>com.manage.controller.webSocket.StartFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>MyFilter</filter-name>
<url-pattern>/myHandler</url-pattern>
</filter-mapping>-->
<!-- 启动spring的容器 -->
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:config/applicationContext.xml
</param-value>
</context-param>
<!-- 启动listener-->
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<context-param>
<param-name>webAppRootKey</param-name>
<param-value>power.root</param-value>
</context-param>
<listener>
<listener-class>org.springframework.web.util.WebAppRootListener</listener-class>
</listener>
<!-- springMVC的前端控制器拦截所有的请求 -->
<servlet>
<servlet-name>dispatcherServlet</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<load-on-startup>1</load-on-startup>
<async-supported>true</async-supported>
</servlet>
<servlet-mapping>
<servlet-name>dispatcherServlet</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
<!-- cxf服务启动servlet -->
<servlet>
<servlet-name>CXFServlet</servlet-name>
<servlet-class>org.apache.cxf.transport.servlet.CXFServlet</servlet-class>
<load-on-startup>2</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>CXFServlet</servlet-name>
<url-pattern>/WebService/*</url-pattern>
</servlet-mapping>
<error-page>
<exception-type>com.manage.controller.PermissionsException</exception-type>
<location>/WEB-INF/views/refuse.jsp</location>
</error-page>
<filter>
<filter-name>startFilter</filter-name>
<filter-class>com.manage.service.webSocket.StartFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>startFilter</filter-name>
<url-pattern>/</url-pattern>
</filter-mapping>
</web-app>

@ -0,0 +1,95 @@
/**
* @author: YL
* @version: v1.0.0
*/
!function ($) {
'use strict';
$.extend($.fn.bootstrapTable.defaults, {
treeShowField: null,
idField: 'id',
parentIdField: 'pid',
onGetNodes: function (row, data) {
var that = this;
var nodes = [];
$.each(data, function (i, item) {
if (row[that.options.idField] === item[that.options.parentIdField]) {
nodes.push(item);
}
});
return nodes;
},
onCheckRoot: function (row, data) {
var that = this;
return !row[that.options.parentIdField];
}
});
var BootstrapTable = $.fn.bootstrapTable.Constructor,
_initRow = BootstrapTable.prototype.initRow,
_initHeader = BootstrapTable.prototype.initHeader;
// td
BootstrapTable.prototype.initHeader = function () {
var that = this;
_initHeader.apply(that, Array.prototype.slice.apply(arguments));
var treeShowField = that.options.treeShowField;
if (treeShowField) {
$.each(this.header.fields, function (i, field) {
if (treeShowField === field) {
that.treeEnable = true;
return false;
}
});
}
};
var initTr = function (item, idx, data, parentDom) {
var that = this;
var nodes = that.options.onGetNodes.apply(that, [item, data]);
item._nodes = nodes;
parentDom.append(_initRow.apply(that, [item, idx, data, parentDom]));
// init sub node
var len = nodes.length - 1;
for (var i = 0; i <= len; i++) {
var node = nodes[i];
node._level = item._level + 1;
node._parent = item;
if (i === len)
node._last = 1;
// jquery.treegrid.js
that.options.rowStyle = function (item, idx) {
var id = item[that.options.idField] ? item[that.options.idField] : 0;
var pid = item[that.options.parentIdField] ? item[that.options.parentIdField] : 0;
return {
classes: 'treegrid-' + id + ' treegrid-parent-' + pid
};
};
initTr.apply(that, [node, $.inArray(node, data), data, parentDom]);
}
};
// tr
BootstrapTable.prototype.initRow = function (item, idx, data, parentDom) {
var that = this;
if (that.treeEnable) {
// init root node
if (that.options.onCheckRoot.apply(that, [item, data])) {
if (item._level === undefined) {
item._level = 0;
}
// jquery.treegrid.js
that.options.rowStyle = function (item, idx) {
var x = item[that.options.idField] ? item[that.options.idField] : 0;
return {
classes: 'treegrid-' + x
};
};
initTr.apply(that, [item, idx, data, parentDom]);
return true;
}
return false;
}
return _initRow.apply(that, Array.prototype.slice.apply(arguments));
};
}(jQuery);

File diff suppressed because one or more lines are too long

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 238 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 197 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 982 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 178 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

Some files were not shown because too many files have changed in this diff Show More

Loading…
Cancel
Save