Files
SIPAIIS_WMS_JSSW/WebRoot/jsp/forcePasswordChange.jsp
2026-01-16 14:13:44 +08:00

406 lines
18 KiB
Plaintext
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<!DOCTYPE html>
<%@page import="com.sipai.tools.CommString"%>
<%@ page language="java" pageEncoding="UTF-8"%>
<%@ page import="java.net.URLDecoder"%>
<%@ taglib uri="http://java.sun.com/jstl/core_rt" prefix="c"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn"%>
<%@ page import="com.sipai.entity.base.ServerObject"%>
<html lang="zh-CN">
<!-- BEGIN HEAD -->
<head>
<title><%= ServerObject.atttable.get("TOPTITLE")%></title>
<jsp:include page="/jsp/inc.jsp"></jsp:include>
<style type="text/css">
.fa_eye {
color: #ccc;
display: block;
position: absolute;
margin: 8px;
z-index: 3;
width: 16px;
font-size: 16px;
text-align: center;
right: 15px;
top: 0;
}
</style>
<script type="text/javascript">
function dosave() {
$("#subForm").bootstrapValidator('validate');//提交验证
if ($("#subForm").data('bootstrapValidator').isValid()) {//获取验证结果,如果成功,执行下面代码
$.post(ext.contextPath + "/user/saveChangePassword.do", $("#subForm").serialize(), function(data) {
if (data == 1) {
showAlert('s','修改成功');
closeModal('subPasswordModal');
$.post(ext.contextPath+"/Login/logout.do",function(){
delCookie("j_username");
delCookie("j_password");
location.replace(ext.contextPath);
});
}else if(data == 2){
showAlert('d','原始密码错误 ');
}else if(data == 0){
showAlert('d','保存失败');
}else{
showAlert('d',data.res);
}
},'json');
}
}
function logout() {
swal({
text: "您确定要退出吗?",
dangerMode: true,
buttons: {
cancel: {
text: "取消",
value: null,
visible: true,
className: "btn btn-default btn-sm",
closeModal: true,
},
confirm: {
text: "确定",
value: true,
visible: true,
className: "btn btn-danger btn-sm",
closeModal: true
}
}
})
.then(function(willDelete) {
if (willDelete) {
$.post(ext.contextPath+"/Login/logout.do",function(){
delCookie("j_password");
delCookie('savePassword');
location.replace(ext.contextPath);
});
}
});
};
//读取cookies
function getCookie(name) {
var arr,reg=new RegExp("(^| )"+name+"=([^;]*)(;|$)");
if(arr=document.cookie.match(reg)) return unescape(arr[2]);
else return null;
}
//删除cookies
function delCookie(name) {
var exp = new Date();
exp.setTime(exp.getTime() - 1);
var cval=getCookie(name);
if(cval!=null) document.cookie= name + "="+cval+";expires="+exp.toGMTString();
}
function switchPwd() {
var passwordeye = $('.fa_eye');
passwordeye.each(function(){
$(this).off('click').on('click',function(){
if($(this).hasClass('fa-eye-slash')){
$(this).removeClass('fa-eye-slash').addClass('fa-eye');//密码可见
$(this).prev().prop('type','text');
}else{
if($(this).hasClass('fa-eye')){
$(this).removeClass('fa-eye').addClass('fa-eye-slash');//密码不可见
$(this).prev().prop('type','password');
}
};
});
});
}
$(function() {
var type = "strong";
var max = 18;
var min = 10;
//配置logo
var array = eval(${jsonArray});
if(array!=null && array!=undefined && array.length>0){
for(var i =0;i<array.length;i++){
if(array[i].id == "password-type"){
if(array[i].type!=null){
type = array[i].type;
}
}
if(array[i].id == "password-max"){
if(array[i].type!=null){
max = array[i].type;
}
}
if(array[i].id == "password-min"){
if(array[i].type!=null){
min = array[i].type;
}
}
}
}
$('#minAndMax').html("至少"+min+"个字符,最多"+max+"个字符");
if(type=="strong"){
$('#passwordType').html("用户密码必须包含大小写字母、数字、特殊字符");
//输入框验证
$('#subForm').bootstrapValidator({
fields: {
/*验证:规则*/
oldPassword: {
validators: {
notEmpty: {
message: '用户原始密码不能为空'
},
/* stringLength: {
min: 6,
max: 19,
message: '用户原始密码长度大于5小于20'
}, */
regexp: {
regexp: /^[^ ]+$/,
//regexp:/^(?=.*[0-9])(?=.*[a-zA-Z])(?=.*[^a-zA-Z0-9]).{10,18}$/,
message: '用户原始密码不能有空格'
},
different: { //比较
field: 'newPassword', //需要进行比较的input name值
message: '新密码不能与原始密码相同'
},
}
},
newPassword: {
validators: {
notEmpty: {
message: '用户新密码不能为空'
},
identical: {
field: 'comfirmPassword',
message: '用户新密码与确认密码不一致!'
},
stringLength: {
min: min,
max: max,
message: '用户新密码长度大于等于'+min+'小于等于'+max,
},
regexp: {
//regexp: /^[^ ]+$/,
regexp:'^(?=.*[0-9])(?=.*[a-z])(?=.*[A-Z])(?=.*[^a-zA-Z0-9]).{'+min+','+max+'}$',
message: '用户密码不符合要求'
},
different: { //比较
field: 'oldPassword', //需要进行比较的input name值
message: '新密码不能与原始密码相同'
},
}
},
comfirmPassword: {
validators: {
identical: {
field: 'newPassword',
message: '用户新密码与确认密码不一致!'
},
notEmpty: {
message: '用户确认密码不能为空'
},
stringLength: {
min: min,
max: max,
message: '用户新密码长度大于等于'+min+'小于等于'+max,
},
regexp: {
//regexp: /^[^ ]+$/,
regexp:'^(?=.*[0-9])(?=.*[a-z])(?=.*[A-Z])(?=.*[^a-zA-Z0-9]).{'+min+','+max+'}$',
message: '用户密码不符合要求'
},
different: { //比较
field: 'oldPassword', //需要进行比较的input name值
message: '新密码不能与原始密码相同'
},
}
}
}
})
.on('error.validator.bv', function (e, data) {//这个方法是让错误信息只显示最新的一个(有时会出现多个错误信息同时显示用这个方法解决)
data.element
.data('bv.messages')
.find('.help-block[data-bv-for="' + data.field + '"]').hide()
.filter('[data-bv-validator="' + data.validator + '"]').show();
})
.on('error.field.bv', function (e, data) {//‘用户确认密码’ 没输入的时候,‘用户新密码’不提示‘用户新密码与确认密码不一致’
if (data.field == 'newPassword') {
var len1 = data.element.val().length;
var len2 = $('#comfirmPassword').val().length;
var k = data.element.val().indexOf(" ");
if (len1 > 5 && len2 < 6 && k < 0) {
var $parent = data.element.parents('.form-group');
$parent.removeClass('has-error');
$parent.find('.[data-bv-icon-for="' + data.field + '"]').hide();
data.element.siblings('[data-bv-validator="identical"]').hide();
}
}
});
}
if(type=="weak"){
$('#passwordType').html("用户密码不能有空格");
//输入框验证
$('#subForm').bootstrapValidator({
fields: {
/*验证:规则*/
oldPassword: {
validators: {
notEmpty: {
message: '用户原始密码不能为空'
},
/* stringLength: {
min: 6,
max: 19,
message: '用户原始密码长度大于5小于20'
}, */
regexp: {
regexp: /^[^ ]+$/,
message: '用户原始密码不能有空格'
}
}
},
newPassword: {
validators: {
notEmpty: {
message: '用户新密码不能为空'
},
identical: {
field: 'comfirmPassword',
message: '用户新密码与确认密码不一致!'
},
stringLength: {
min: min,
max: max,
message: '用户新密码长度大于等于'+min+'小于等于'+max,
},
regexp: {
regexp: /^[^ ]+$/,
message: '用户密码不符合要求'
}
}
},
comfirmPassword: {
validators: {
identical: {
field: 'newPassword',
message: '用户新密码与确认密码不一致!'
},
notEmpty: {
message: '用户确认密码不能为空'
},
stringLength: {
min: min,
max: max,
message: '用户新密码长度大于等于'+min+'小于等于'+max,
},
regexp: {
regexp: /^[^ ]+$/,
message: '用户密码不符合要求'
}
}
}
}
})
.on('error.validator.bv', function (e, data) {//这个方法是让错误信息只显示最新的一个(有时会出现多个错误信息同时显示用这个方法解决)
data.element
.data('bv.messages')
.find('.help-block[data-bv-for="' + data.field + '"]').hide()
.filter('[data-bv-validator="' + data.validator + '"]').show();
})
.on('error.field.bv', function (e, data) {//‘用户确认密码’ 没输入的时候,‘用户新密码’不提示‘用户新密码与确认密码不一致’
if (data.field == 'newPassword') {
var len1 = data.element.val().length;
var len2 = $('#comfirmPassword').val().length;
var k = data.element.val().indexOf(" ");
if (len1 > 5 && len2 < 6 && k < 0) {
var $parent = data.element.parents('.form-group');
$parent.removeClass('has-error');
$parent.find('.[data-bv-icon-for="' + data.field + '"]').hide();
data.element.siblings('[data-bv-validator="identical"]').hide();
}
}
});
}
switchPwd();
})
</script>
</head>
<body class="hold-transition register-page">
<div class="register-box">
<div class="register-logo">
<c:if test="${not empty cu.userDetail}">
<c:choose>
<c:when test="${not empty cu.userDetail.icon}">
<img src="${cu.userDetail.icon}"class="profile-user-img img-responsive img-circle" alt="User Image">
</c:when>
<c:otherwise>
<c:choose>
<c:when test="${cu.sex=='0'}">
<img src="<%=request.getContextPath()%>/plugins/AdminLTE/img/avatar2.png" class="profile-user-img img-responsive img-circle" alt="User Image">
</c:when>
<c:otherwise>
<img src="<%=request.getContextPath()%>/plugins/AdminLTE/img/avatar5.png" class="profile-user-img img-responsive img-circle" alt="User Image">
</c:otherwise>
</c:choose>
</c:otherwise>
</c:choose>
</c:if>
<!--如果用户没有上传过头像,显示系统默认头像 -->
<c:if test="${empty cu.userDetail}">
<c:choose>
<c:when test="${cu.sex=='0'}">
<img src="<%=request.getContextPath()%>/plugins/AdminLTE/img/avatar2.png" class="profile-user-img img-responsive img-circle" alt="User Image">
</c:when>
<c:otherwise>
<img src="<%=request.getContextPath()%>/plugins/AdminLTE/img/avatar5.png" class="profile-user-img img-responsive img-circle" alt="User Image">
</c:otherwise>
</c:choose>
</c:if>
<h3 class="profile-username text-center">${cu.caption}</h3>
</div>
<div class="register-box-body">
<p class="login-box-msg "><c:choose>
<c:when test="${titleStr!='' && titleStr!=null}">${titleStr}</c:when>
<c:otherwise>修改原始密码</c:otherwise>
</c:choose></p>
<!-- 新增界面formid强制为subForm -->
<form class="form-horizontal" id="subForm" enctype="multipart/form-data" >
<!-- 界面提醒div强制id为alertDiv -->
<div id="alertDiv"></div>
<div class="form-group has-feedback">
<label class="control-label col-sm-3">原始密码</label>
<div class="col-sm-9">
<input class="form-control" type="password" placeholder="原始密码"
name="oldPassword" id="oldPassword"/>
<a class="fa fa-eye-slash fa_eye "></a>
</div>
</div>
<div class="form-group has-feedback">
<label class="control-label col-sm-3">新密码</label>
<div class="col-sm-9">
<input class="form-control" type="password" placeholder="新密码"
name="newPassword" id="newPassword"/>
<a class="fa fa-eye-slash fa_eye "></a>
</div>
</div>
<div class="form-group has-feedback">
<label class="control-label col-sm-3">确认密码</label>
<div class="col-sm-9">
<input class="form-control" type="password" placeholder="确认密码"
name="comfirmPassword" id="comfirmPassword"/>
<a class="fa fa-eye-slash fa_eye "></a>
</div>
</div>
</form>
<div class="social-auth-links text-center">
<p id="passwordType">用户密码必须包含大小写字母、数字、特殊字符</p>
<p id="minAndMax">至少10个字符最多18个字符</p>
<a href="#" class="btn btn-block btn-primary" onclick="dosave()" >确认</a>
<a href="#" class="btn btn-block btn-danger" onclick="logout()" >退出</a>
</div>
</div>
</div>
</body>
</html>