weaver_trunk_cli/pc4mobx/hrm/components/Password.js

977 lines
32 KiB
JavaScript
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.

import {
inject,
observer,
} from 'mobx-react';
import {
Row,
Col,
Form,
Steps,
Button,
message,
} from 'antd'
import {
WeaTop,
WeaTab,
WeaTools,
WeaInput,
WeaDialog,
WeaFormItem,
WeaTableEdit,
WeaRightMenu,
WeaDialogFooter,
WeaLocaleProvider,
} from 'ecCom'
import {
i18n
} from '../public/i18n';
import React from 'react'
import * as mobx from 'mobx'
import '../style/password.css';
import SecondaryVerify from './secondaryVerify/SecondaryVerify.js'
import {
RSAEcrypt
} from "../util/RSAUtil";
import {
checkWeakPass
} from "../util/PASSUtil.js";
import {addContentPath} from '../util/index.js'
const getLabel = WeaLocaleProvider.getLabel;
const Step = Steps.Step;
const toJS = mobx.toJS;
const FormItem = Form.Item;
@inject('hrmPassword')
@observer
class Password extends React.Component {
constructor(props) {
super(props);
this.state = {
oldVal: '',
newVal: '',
confirmVal: '',
verifyCode: '',
minPassLen: 1,
passwordComplexity: '0',
pwd: '',
tip: '',
date: new Date().getTime(),
height: 460,
}
}
componentDidMount() {
const {
hrmPassword
} = this.props;
hrmPassword.getSecuritySettingStatus();
hrmPassword.isOpenSecondaryPwd();
this.init();
}
componentWillReceiveProps(nextProps) {
if (this.props.location.key !== nextProps.location.key) {
this.resetPwdField();
}
}
init() {
const {
hrmPassword
} = this.props;
const hrmId = this.props.params.hrmId || '';
hrmPassword.hrmId = hrmId;
WeaTools.callApi('/api/hrm/password/getPasswordSetting', 'GET', {
id: hrmId
}).then((data) => {
this.setState({
passwordComplexity: data.passwordComplexity,
minPassLen: data.minpasslen,
openRSA:data.openRSA
});
if (data.passwordComplexity == '1') {
this.setState({
tip: getLabel('24080', "字母大写、字母小写、数字组合")
});
}
if (data.passwordComplexity == '2') {
this.setState({
tip: getLabel('24081', "字母、数字、特殊字符组合")
});
}
if (data.passwordComplexity == '3') {
this.setState({
tip: getLabel('512563', "字母、数字组合")
});
}
hrmPassword.hrmId = data.hrmId;
});
const {
tabKey
} = this.props.location.query;
if (tabKey) {
hrmPassword.tabKey = tabKey
} else {
hrmPassword.tabKey = '0';
}
//加载公钥
loadjs.isDefined('rsa') ? loadjs.ready('rsa', () => {
}) : loadjs(["/js/rsa/jsencrypt.js", "/js/rsa/rsa.js"], 'rsa', {
async: false
});
const doUserSession = this.props.location&&this.props.location.query&&this.props.location.query.doUserSession;
if(hrmPassword.tabKey=='0'&&doUserSession=='1'){
message.info(getLabel('81626',"首次登录需修改密码!"));
}
}
pwdSave() {
const {
oldVal,
newVal,
confirmVal,
verifyCode,
openRSA
} = this.state;
const {
minPassLen,
passwordComplexity
} = this.state;
if (!oldVal || !newVal || !confirmVal || !verifyCode) {
message.error(getLabel('386497', "必填信息不完整!"));
return false
}
let RSAParam = {
'passwordold': oldVal,
'passwordnew': newVal,
}
RSAEcrypt(openRSA,RSAParam).then(RSAParam => {
const hrmId = this.props.params.hrmId || '';
const dialogId = this.props.location.query.dialogId || '';
const optype = this.props.location.query.optype || '';
let params = {
'id': hrmId,
'passwordold': RSAParam.passwordold,
'passwordnew': RSAParam.passwordnew,
'validatecode': verifyCode,
'optype':optype,
}
let result = this.newPwdVerification(newVal, confirmVal, minPassLen, passwordComplexity);
if (result) {
checkWeakPass(RSAParam.passwordnew,()=>{
WeaTools.callApi('/api/hrm/password/changePassword', 'POST', params).then(data => {
if (data.status == '1') {
message.success(data.message);
if (dialogId != '') {
setTimeout(() => {
let dialog = top.window.getParentDialog();
if (!dialog) {
if (dialogId && window.top.window.dialogMapper && window.top.window.dialogMapper[dialogId]) {
dialog = window.top.window.dialogMapper[dialogId];
}
}
this.resetPwdField();
dialog.close(); // 关闭。 会触发onCancel
}, 3000);
} else {
this.resetPwdField();
const doUserSession = this.props.location&&this.props.location.query&&this.props.location.query.doUserSession;
if(doUserSession=='1'){
window.location.href = addContentPath('/wui/index.html#/main');
return;
}
}
} else {
message.error(data.message);
}
this.setState({
date: new Date()
});
})
},()=>{
this.setState({
date: new Date()
})
})
}
});
}
resetPwdField() {
this.setState({
oldVal: '',
newVal: '',
confirmVal: '',
verifyCode: '',
});
}
newPwdVerification(newVal, confirmVal, minPassLen, passwordComplexity) {
let checkpass = true;
if (newVal !== confirmVal) {
message.error(getLabel('386508', "密码确认不正确!"));
return false
} else {
if (newVal.length < minPassLen) {
message.error(getLabel('20172', "密码长度不能小于") + minPassLen);
return false;
} else {
if (passwordComplexity == "1") {
const complexity11 = /[a-z]+/;
const complexity12 = /[A-Z]+/;
const complexity13 = /\d+/;
if (complexity11.test(newVal) && complexity12.test(newVal) && complexity13.test(newVal)) {
checkpass = true;
} else {
message.error(i18n.label['514130']());
checkpass = false;
}
} else if (passwordComplexity == "2") {
const complexity21 = /[a-zA-Z_]+/;
const complexity22 = /\W+/;
const complexity23 = /\d+/;
if (complexity21.test(newVal) && complexity22.test(newVal) && complexity23.test(newVal)) {
checkpass = true;
} else {
message.error(i18n.label['514057']());
checkpass = false;
}
} else if (passwordComplexity == "3") {
const complexity31 = /[a-zA-Z_]+/;
const complexity32 = /\d+/;
if (complexity31.test(newVal) && complexity32.test(newVal)) {
checkpass = true;
} else {
message.error(i18n.label['514131']());
checkpass = false;
}
}
}
return checkpass;
}
}
getPwdModificationGrid() {
const {
oldVal,
newVal,
confirmVal,
verifyCode,
tip,
date,
} = this.state;
const dialogId = this.props.location.query.dialogId || '';
return (
<div>
<div style={{marginTop: '60px'}}>
<WeaFormItem ecId={`${this && this.props && this.props.ecId || ''}_WeaFormItem@zovp8c`}
label={getLabel('32738',"旧密码")}
labelCol={{span: 3, offset: 6}}
wrapperCol={{span: 7}}
>
<WeaInput ecId={`${this && this.props && this.props.ecId || ''}_WeaInput@6pvv39`}
type="password"
viewAttr='3'
value={oldVal}
onChange={(val) => this.setState({oldVal: val})}
/>
</WeaFormItem>
</div>
<div style={{marginTop: '35px'}}>
<WeaFormItem ecId={`${this && this.props && this.props.ecId || ''}_WeaFormItem@cjmvod`}
label={getLabel('27303',"新密码")}
labelCol={{span: 3, offset: 6}}
wrapperCol={{span: 7}}
>
<WeaInput ecId={`${this && this.props && this.props.ecId || ''}_WeaInput@g1lm3j`}
type="password"
viewAttr='3'
passwordStrength
tip={tip}
value={newVal}
onChange={(val) => this.setState({newVal: val})}
/>
</WeaFormItem>
</div>
<div style={{marginTop: '35px'}}>
<WeaFormItem ecId={`${this && this.props && this.props.ecId || ''}_WeaFormItem@3fgd3h`}
label={getLabel('32739',"确认新密码")}
labelCol={{span: 3, offset: 6}}
wrapperCol={{span: 7}}
>
<WeaInput ecId={`${this && this.props && this.props.ecId || ''}_WeaInput@z27cbb`}
type="password"
viewAttr='3'
value={confirmVal}
onChange={(val) => this.setState({confirmVal: val})}
/>
</WeaFormItem>
</div>
<div style={{marginTop: '35px'}}>
<WeaFormItem ecId={`${this && this.props && this.props.ecId || ''}_WeaFormItem@jd9mwb`}
label={getLabel('130021',"验证码")}
labelCol={{span: 3, offset: 6}}
wrapperCol={{span: 7}}
>
<div style={{width:'170%'}}>
<WeaInput ecId={`${this && this.props && this.props.ecId || ''}_WeaInput@xa1ojh`}
viewAttr='3'
value={verifyCode}
style={{width:'58.9%',float:'left'}}
onChange={(val) => this.setState({verifyCode: val})}
/>
<img
src={addContentPath(`/weaver/weaver.file.MakeValidateCode?from=_changePass&isView=1&validatetype=0&validatenum=4&seriesnum_=${date}`)}
style={{cursor:'pointer',display:'block',float:'left',marginLeft: 25}}
onClick={() => this.setState({date: new Date().getTime()})}
/>
</div>
</WeaFormItem>
</div>
{dialogId !='' && <WeaDialogFooter ecId={`${this && this.props && this.props.ecId || ''}_WeaDialogFooter@rw3r1z`} buttons={<Button ecId={`${this && this.props && this.props.ecId || ''}_Button@1fspc7`} type="primary" onClick={() => this.pwdSave()}>{i18n.button.save()}</Button>} />}
</div>
)
}
getPwdSettingContent() {
const {
hrmPassword
} = this.props;
const {
isSetted
} = hrmPassword;
return (
<div style={{position: 'relative'}}>
<div style={{position: 'absolute', left: '50%', top: 50, marginLeft: -337}}>
<div style={{float: 'left', width: 265}}>
<img src={addContentPath('/hrm/hrm_e9/image/computer.png')} alt=''/>
</div>
<div style={{float: 'left', width: 410}}>
{ isSetted ? this.pwdSecurityStatus() : this.pwdSettingIllustration()}
</div>
</div>
</div>
)
}
pwdSecurityStatus() {
const {
hrmPassword
} = this.props;
const {
secStatus
} = hrmPassword;
const {
pwd
} = this.state;
return (
<div style={{marginTop: '30px'}}>
<p style={{marginBottom: '12px', fontWeight: 'bold'}}><span style={{fontSize: '14px'}}>{getLabel('386526',"密保状态")}</span><span style={{fontSize: '13px',color: '#2DB7F5'}}>{secStatus ? getLabel('387099','') : getLabel('387100','')}</span></p>
<p style={{marginBottom: '12px'}}> {getLabel('386509',"密保问题忘了怎么办?")}</p>
<p style={{marginBottom: '12px'}}>{getLabel('386510',"可采用发送短信或发送邮件方式找回密码,若这两种方式都未开启,则联系系统管理员解决。")}</p>
<div style={{marginTop: '35px'}}>
<Button ecId={`${this && this.props && this.props.ecId || ''}_Button@2radb2`} type='primary' onClick={() => {hrmPassword.doOpen('1');hrmPassword.isModifyBtnClick = false}}>{secStatus ? getLabel('26471',"停用") : getLabel('26472',"启用")}</Button>
{secStatus ? <Button ecId={`${this && this.props && this.props.ecId || ''}_Button@r5gjck`} type='primary' onClick={() => {hrmPassword.doOpen('1');hrmPassword.isModifyBtnClick = true}} style={{marginLeft: '30px'}}>{getLabel('103',"修改")}</Button>
: ''}
</div>
</div>
)
}
pwdSettingIllustration() {
const {
hrmPassword
} = this.props;
return (
<div style={{marginTop: '30px'}}>
<p style={{marginBottom: '12px'}}> {getLabel('386511',"什么是密保问题?")}</p>
<p style={{marginBottom: '12px'}}>{getLabel('506872',"由用户设定的几个问题及对应答案组成用于找回E-cology登录密码。")}</p>
<p style={{marginBottom: '12px'}}> {getLabel('386512',"如何用密保问题找回密码?")}</p>
<p style={{marginBottom: '12px'}}>{getLabel('386513',"您可以通过登录页面中的“忘记密码”选择“密保问题”验证答案,找回密码。")}</p>
<Button ecId={`${this && this.props && this.props.ecId || ''}_Button@6ez37z`} type='primary' onClick={() => {hrmPassword.doOpen('1');}}>{getLabel('386514',"立即设置")}</Button>
</div>
)
}
pwdVerification(arg) {
const {
hrmPassword
} = this.props;
const {
isSetted,
secStatus,
isModifyBtnClick,
reDate,
} = hrmPassword;
const {
pwd,
openRSA
} = this.state;
const hrmId = this.props.params.hrmId || '';
if (isSetted && !isModifyBtnClick) {
if (!pwd || !this.vfyc) {
message.error(getLabel('386497', "必填信息不完整!"));
return false;
}
RSAEcrypt(openRSA, {
password:pwd
}).then(RSAParam => {
hrmPassword.setSecutityStatus({pswd:RSAParam.password,validatecode:this.vfyc}, this.clearField);
});
}
if (!isSetted || isModifyBtnClick) {
if (!pwd || !this.vfyc) {
message.error(getLabel('386497', "必填信息不完整!"));
return false;
}
let RSAParam = {
'password':pwd
}
RSAEcrypt(openRSA, RSAParam).then(RSAParam => {
let params = {
'id': hrmId,
'pswd': RSAParam.password,
validatecode:this.vfyc
}
WeaTools.callApi('/api/hrm/password/verifyPswd', 'POST', params).then((data) => {
if (data.result == 'true') {
hrmPassword.getTableEditInfo();
hrmPassword.doOpen('2');
hrmPassword.doClose('1');
this.clearField();
} else {
reDate();
if (data.message) {
message.error(data.message);
} else {
message.error(getLabel('386525', "密码校验不通过,请重新输入!"));
}
}
});
hrmPassword.setPwdCopy(pwd);
});
}
}
clearField = () => {
this.vfyc="";
this.setState({
pwd: ''
});
}
getButtons() {
const {
hrmPassword
} = this.props;
const {
current
} = hrmPassword;
let btns = [];
const pre = <Button ecId={`${this && this.props && this.props.ecId || ''}_Button@mibjj0`} type="primary" onClick={() => this.pre()} >{i18n.button.lastStep()}</Button>;
const next = <Button ecId={`${this && this.props && this.props.ecId || ''}_Button@7dspo2`} type="primary" onClick={() => this.next()} >{i18n.button.nextStep()}</Button>;
const finish = <Button ecId={`${this && this.props && this.props.ecId || ''}_Button@k0l0x3`} type="primary" onClick={() => this.finish()} >{i18n.button.done()}</Button>;
if (current == 0) {
btns = [next];
} else if (current == 1) {
btns = [pre, next];
} else {
btns = [finish];
}
return btns;
}
pre() {
const {
hrmPassword
} = this.props;
const {
current
} = hrmPassword;
this.props.form.resetFields();
hrmPassword.minus();
}
next() {
const {
hrmPassword
} = this.props;
const {
current,
datasource
} = hrmPassword;
const {
pwd
} = this.state;
if (current == 0) {
if (datasource.length == 0) {
message.error(getLabel('386515', "请填写密保问题!"));
return false;
} else {
for (let i = 0; i < datasource.length; i++) {
if (this.isEmptyObject(datasource[i])) {
message.error(getLabel('386497', "必填信息不完整!"));
return false;
}
for (let key in datasource[i]) {
if (!('answer' in datasource[i]) || !('question' in datasource[i])) {
message.error(getLabel('386497', "必填信息不完整!"));
return false;
}
if (datasource[i][key] == '') {
message.error(getLabel('386497', "必填信息不完整!"));
return false;
}
}
}
}
}
if (current == 1) {
let answerArray = [];
let obj = this.props.form.getFieldsValue();
for (let i in obj) {
answerArray.push(obj[i]);
}
let b = this.securityAnswerVerification(answerArray);
if (typeof b == 'number') {
message.error(getLabel('24419', "问题 ") + b + getLabel('386516', " 输入的答案与问题不匹配,请重新输入!"));
return false;
} else {
if (b) {
let ds = toJS(datasource);
let obj = {};
for (let i = 0; i < ds.length; i++) {
for (let key in ds[i]) {
obj[key + '_' + i] = ds[i][key];
}
}
hrmPassword.save(obj);
this.props.form.resetFields();
} else {
message.error(getLabel('386497', "必填信息不完整!"));
return false;
}
}
}
hrmPassword.plus();
}
finish() {
const {
hrmPassword
} = this.props;
const {
isSetted
} = hrmPassword;
hrmPassword.doClose('2');
hrmPassword.reset();
}
isEmptyObject(obj) {
for (let key in obj) {
return false;
}
return true;
}
securityAnswerVerification(answerArray) {
const {
hrmPassword
} = this.props;
const {
datasource
} = hrmPassword;
let arr = [];
let _arr = toJS(datasource);
for (let i = 0; i < answerArray.length; i++) {
if (!answerArray[i]) return false;
}
for (let i = 0; i < _arr.length; i++) {
arr.push(_arr[i].answer);
}
for (let i = 0; i < arr.length; i++) {
if (arr[i] !== answerArray[i]) {
return i + 1;
}
}
return true;
}
getTableEdit() {
const {
hrmPassword
} = this.props;
let {
columns,
datasource
} = hrmPassword;
return (
<WeaTableEdit ecId={`${this && this.props && this.props.ecId || ''}_WeaTableEdit@4jgsv4`}
columns={toJS(columns)}
datas={toJS(datasource)}
onChange={(arr) => hrmPassword.datasource = arr}
/>
)
}
getQaForm() {
const {
hrmPassword
} = this.props;
const {
datasource
} = hrmPassword;
const {
getFieldDecorator,
getFieldProps
} = this.props.form;
const tip = (
<p>
<i className="icon-coms-Explain" style={{color: "#faa825"}}/>
<span style={{marginLeft: 10}}>{getLabel('386517',"以下是您刚刚设置的密保问题,请依次做出回答,以便进行确认")}</span>
</p>
)
const Qa = (question,i) => {
return (
<div>
<p>
<span>
{getLabel('24419',"问题 ")}:
</span>
<span>
{question}
</span>
</p>
<p>
<span>{getLabel('24122',"答案")}:</span>
<FormItem ecId={`${this && this.props && this.props.ecId || ''}_FormItem@lssr05`}>
<WeaInput ecId={`${this && this.props && this.props.ecId || ''}_WeaInput@d9z31q`}
{...getFieldProps('answer' + (i+1))}
{...getFieldDecorator('answer' + (i+1))}
type="text"
viewAttr='3'
/>
</FormItem>
</p>
</div>
)
}
const arr = [];
arr.push(tip);
if (datasource.length) {
datasource.forEach( (data,index) => {
arr.push(Qa(data.question, index));
})
}
return (
<div className="hrm-pass-qa">
<Form ecId={`${this && this.props && this.props.ecId || ''}_Form@9myso7`}>{arr}</Form>
</div>
);
let _arr = [];
_arr.push(
<div style={{marginTop: '40px'}}>
<Row ecId={`${this && this.props && this.props.ecId || ''}_Row@l63cok@1`}>
<Col ecId={`${this && this.props && this.props.ecId || ''}_Col@yqdwcq@1`} span={1} offset={5}>
<img src={addContentPath('/hrm/hrm_e9/image/wenhao.png')} alt='' style={{width: '15px', height: '15px'}}/>
</Col>
<Col ecId={`${this && this.props && this.props.ecId || ''}_Col@m0h1dm@1`} span={13}>
<p>{getLabel('386517',"以下是您刚刚设置的密保问题,请依次做出回答,以便进行确认")}</p>
</Col>
</Row>
</div>
);
for (let i = 0; i < datasource.length; i++) {
_arr.push(<div style={{marginTop: '15px'}}>
<div style={{marginTop: '20px', width:420 ,marginLeft:113}}>
<WeaFormItem ecId={`${this && this.props && this.props.ecId || ''}_WeaFormItem@58oknx@${i}`}
label={getLabel('24419',"问题 ")}
labelCol={{span: 3, offset: 2}}
wrapperCol={{span: 19}}
>
<p style={{marginTop: 4}}>{datasource[i].question}</p>
</WeaFormItem>
</div>
<div style={{marginTop: '20px',width:420 ,marginLeft:113}}>
<WeaFormItem ecId={`${this && this.props && this.props.ecId || ''}_WeaFormItem@nu2jh9@${i}`}
label={getLabel('24122',"答案")}
labelCol={{span: 3, offset: 2}}
wrapperCol={{span: 19}}
>
<FormItem ecId={`${this && this.props && this.props.ecId || ''}_FormItem@bhpxpx@${i}`}>
<WeaInput ecId={`${this && this.props && this.props.ecId || ''}_WeaInput@hhbp07@${i}`}
{...getFieldProps('answer' + (i+1))}
{...getFieldDecorator('answer' + (i+1))}
type="text"
viewAttr='3'
/>
</FormItem>
</WeaFormItem>
</div>
</div>);
}
return <Form ecId={`${this && this.props && this.props.ecId || ''}_Form@1egz04`}>{_arr}</Form>;
}
getFinishLogo() {
return (
<div style={{position: 'relative'}}>
<div style={{position: 'absolute', top: 50, left: '50%', marginLeft: -92.5, width: 185}}>
<img src={addContentPath('/hrm/hrm_e9/image/finish.png')} alt='' />
</div>
<p style={{fontSize: '15px',paddingTop: 190,textAlign:'center'}}>{getLabel('386518',"您已完成了密保问题的设置!")}</p>
</div>
)
}
dropMenuDatasClick(key) {
const {
hrmPassword
} = this.props;
hrmPassword.doOpen('1');
if (key == '3') hrmPassword.setModifyBtnStatus(false);
if (key == '4') hrmPassword.setModifyBtnStatus(false);
if (key == '5') hrmPassword.setModifyBtnStatus(true);
}
render() {
const {
hrmPassword
} = this.props;
const {
tabKey,
isPwdVerifyDialogShow,
isPwdSecuritySettingShow,
current,
isSetted,
secStatus,
hrmId,
showSecondaryPwd,
showSecuritySetting,
date,
reDate,
} = hrmPassword;
const {
pwd,
height,
} = this.state;
const btn1 = [
(<Button ecId={`${this && this.props && this.props.ecId || ''}_Button@2ts290@1`} type="primary" onClick={() => this.pwdSave()}>{i18n.button.save()}</Button>),
]
const btn2 = [
(<Button ecId={`${this && this.props && this.props.ecId || ''}_Button@1oorxd@2`} type="primary" onClick={() => this.pwdVerification()}>{i18n.button.nextStep()}</Button>),
]
const dropMenuDatas = [{
key: '0',
content: i18n.button.save(),
key: 'save',
icon: <i className='icon-coms-Preservation' />,
onClick: key => {
this.pwdSave();
}
}, {
key: '1',
content: i18n.button.nextStep(),
icon: <i className='icon-coms-Browse-box-Add-to' />
}, {
key: '2',
content: getLabel('386514', "立即设置"),
icon: <i className='icon-coms-currency' />
}, {
key: '3',
content: getLabel('26472', "启用"),
icon: <i className='icon-coms-operation' />
}, {
key: '4',
content: getLabel('26471', "停用"),
icon: <i className='icon-coms-locking' />
}, {
key: '5',
content: getLabel('103', "修改"),
icon: <i className='icon-coms-edit' />
}, ]
const dropMenuDatas1 = dropMenuDatas.slice(0, 1);
const dropMenuDatas2 = dropMenuDatas.slice(1, 2);
let dropMenuDatas3;
if (!isSetted) dropMenuDatas3 = dropMenuDatas.slice(2, 3);
if (isSetted && !secStatus) dropMenuDatas3 = dropMenuDatas.slice(3, 4);
if (isSetted && secStatus) dropMenuDatas3 = dropMenuDatas.slice(4, 6);
dropMenuDatas1.push({
icon: <i className='icon-coms-Print-log'/>,
content: i18n.button.log(),
key: 'showLog',
onClick: key => {
window.setLogViewProps({
logSmallType: i18n.smallType.HRM_PASSWPRD,
targetId: hrmId
});
}
})
let tabName1 = [{
key: '0',
title: getLabel('528200', "登录密码")
}, {
key: '2',
title: getLabel('501204', "二次验证密码")
}, {
key: '1',
title: getLabel('81604', "密保设置")
}]
const dialogId = this.props.location.query.dialogId || '';
if (dialogId != '') {
tabName1 = [{
key: '0',
title: getLabel('81631', "密码修改")
}]
}
if (!showSecondaryPwd) {
if (tabName1.length > 1) {
tabName1.splice(1, 1);
}
}
if (!showSecuritySetting) {
if (tabName1.length > 1) {
const ssIndex = tabName1.findIndex(tab => tab.key === '1');
(ssIndex > -1) && tabName1.splice(ssIndex, 1);
}
}
return (
<div className='hrm-password-bgcolor'>
<WeaRightMenu ecId={`${this && this.props && this.props.ecId || ''}_WeaRightMenu@s32eh2`}
datas={ tabKey == '0' ? dropMenuDatas1 : dropMenuDatas3}
onClick={(key) => {tabKey == '0' ? '' : this.dropMenuDatasClick(key)}}
collectParams={{favname: getLabel('20170',"密码设置"),favouritetype:5}}
>
<WeaTop ecId={`${this && this.props && this.props.ecId || ''}_WeaTop@7a4pri`}
title={getLabel('20170',"密码设置")}
icon={<i className='icon-coms-hrm' />}
iconBgcolor='#217346'
loading={true}
buttons={tabKey == '0' && dialogId == '' ? btn1 : []}
showDropIcon={tabKey == '0' && dialogId == '' ? true : false}
dropMenuDatas={dropMenuDatas1}
></WeaTop>
<WeaTab ecId={`${this && this.props && this.props.ecId || ''}_WeaTab@crp93f`}
selectedKey={tabKey}
datas={tabName1}
keyParam='key'
onChange={(key) =>{hrmPassword.tabKey = key;['oldVal','newVal','confirmVal','verifyCode'].map(v => this.setState({[v]:''}))}}
/>
{tabKey == '0' ? this.getPwdModificationGrid() : tabKey == '1' ? this.getPwdSettingContent() : <SecondaryVerify ecId={`${this && this.props && this.props.ecId || ''}_SecondaryVerify@vn57mk`} />}
</WeaRightMenu>
<WeaDialog ecId={`${this && this.props && this.props.ecId || ''}_WeaDialog@vk3p58`}
title={getLabel('504331',"请先输入登录密码")}
icon="icon-coms-hrm"
iconBgcolor="#217346"
visible={isPwdVerifyDialogShow}
onCancel={() => {hrmPassword.doClose('1'); this.setState({pwd: ''});this.vfyc=""}}
buttons={btn2}
style={{width: 600, height: 105}}
>
<WeaRightMenu ecId={`${this && this.props && this.props.ecId || ''}_WeaRightMenu@tlbtdv`} datas={dropMenuDatas2} onClick={() => this.pwdVerification()}>
<div style={{paddingTop: 15}}>
<WeaFormItem ecId={`${this && this.props && this.props.ecId || ''}_WeaFormItem@iv3q7e`}
label={getLabel('528200',"登录密码")}
labelCol={{span: 3, offset: 2}}
wrapperCol={{span: 13}}
style={{padding:"5px 0"}}
>
<WeaInput ecId={`${this && this.props && this.props.ecId || ''}_WeaInput@wi7roe`}
type="password"
viewAttr='3'
value={pwd}
onChange={(val) => this.setState({pwd: val})}
/>
</WeaFormItem>
<WeaFormItem ecId={`${this && this.props && this.props.ecId || ''}_WeaFormItem@699yr5`}
label={getLabel('130021',"验证码")}
labelCol={{span: 3, offset: 2}}
wrapperCol={{span: 13}}
style={{padding:"5px 0"}}
>
<WeaInput ecId={`${this && this.props && this.props.ecId || ''}_WeaInput@5j6biw`}
viewAttr='3'
defaultValue=""
onChange={(val) => this.vfyc = val}
/>
<img
src={addContentPath(`/weaver/weaver.file.MakeValidateCode?from=_changePass&isView=1&validatetype=0&validatenum=4&seriesnum_=${date}`)}
style={{cursor:'pointer',display:'inline-block',marginLeft: 20,position:"absolute",top:-5}}
onClick={reDate}
/>
</WeaFormItem>
</div>
</WeaRightMenu>
</WeaDialog>
<WeaDialog ecId={`${this && this.props && this.props.ecId || ''}_WeaDialog@f0jhln`}
title={getLabel('386520',"密保问题设置")}
icon="icon-coms-hrm"
iconBgcolor="#217346"
visible={isPwdSecuritySettingShow}
hasScroll={true}
onCancel={() => {hrmPassword.doClose('2'),hrmPassword.reset()}}
buttons={this.getButtons()}
style={{width: 720, height: 460}}
onChangeHeight={(h) => this.setState({height: h})}
>
<Steps ecId={`${this && this.props && this.props.ecId || ''}_Steps@ywldc9`} current={current} className="hrm-pwd-step-wrapper">
<Step ecId={`${this && this.props && this.props.ecId || ''}_Step@omolc6`} description={getLabel('386521',"填写密保问题")} />
<Step ecId={`${this && this.props && this.props.ecId || ''}_Step@3r8wye`} description={getLabel('386522',"验证密保问题")} />
<Step ecId={`${this && this.props && this.props.ecId || ''}_Step@2ilr60`} description={getLabel('386523',"完成密保问题")} />
</Steps>
<div ref="scrollBar">
<div className={`${current == 0? 'wea-show': 'wea-hide'}`}>
{this.getTableEdit()}
</div>
<div className={`${current == 1? 'wea-show': 'wea-hide'}`}>
{(current == 1) && this.getQaForm()}
</div>
<div className={`${current == 2? 'wea-show': 'wea-hide'}`}>
{this.getFinishLogo()}
</div>
</div>
</WeaDialog>
</div>
)
}
}
Password = Form.create({})(Password);
export default Password