diff --git a/pc4mobx/hrmSalary/apis/mySalaryBenefits.js b/pc4mobx/hrmSalary/apis/mySalaryBenefits.js index a2f5be7a..274544aa 100644 --- a/pc4mobx/hrmSalary/apis/mySalaryBenefits.js +++ b/pc4mobx/hrmSalary/apis/mySalaryBenefits.js @@ -31,6 +31,12 @@ export const mySalaryBill = params => { export const isNeedSecondPwdVerify = params => { return WeaTools.callApi("/api/encrypt/secondauthsetting/isNeedSecondAuth", "POST", params); }; +export const getSecondAuthForm = params => { + return WeaTools.callApi("/api/encrypt/secondauthsetting/getSecondAuthForm", "POST", params); +}; export const doSecondAuth = params => { return WeaTools.callApi("/api/encrypt/secondauthsetting/doSecondAuth", "POST", params); }; +export const saveSecondaryPwd = params => { + return WeaTools.callApi("/api/hrm/secondarypwd/saveSecondaryPwd", "POST", params); +}; diff --git a/pc4mobx/hrmSalary/pages/mobilePayroll/index.js b/pc4mobx/hrmSalary/pages/mobilePayroll/index.js index db4f3c2f..5a41f8ac 100644 --- a/pc4mobx/hrmSalary/pages/mobilePayroll/index.js +++ b/pc4mobx/hrmSalary/pages/mobilePayroll/index.js @@ -1,7 +1,7 @@ import React from "react"; import { inject, observer } from "mobx-react"; import { getQueryString } from "../../util/url"; -import { WeaDialog, WeaError, WeaInput } from "ecCom"; +import { WeaDialog, WeaError, WeaInput, WeaLocaleProvider } from "ecCom"; import { Button, message } from "antd"; import Authority from "../mySalary/authority"; import ComputerTemplate from "../payroll/templatePreview/computerTemplate"; @@ -9,8 +9,11 @@ import PhoneTemplate from "../payroll/templatePreview/phoneTemplate"; import "../payroll/templatePreview/index.less"; import * as API from "../../apis/mySalaryBenefits"; import { payrollCheckType } from "../../apis/payroll"; -import "./index.less"; import CaptchaModal from "../../components/captchaModal"; +import PassSetDialog from "./passSetDialog"; +import "./index.less"; + +const getLabel = WeaLocaleProvider.getLabel; @inject("mySalaryStore") @observer @@ -18,9 +21,11 @@ export default class MobilePayroll extends React.Component { constructor(props) { super(props); this.state = { + pwdSetVisible: false, visible: false, captchaVisible: false, authCode: "", + notSetting: false, mySalaryBillData: { employeeInformation: {}, salaryTemplate: [] @@ -49,7 +54,11 @@ export default class MobilePayroll extends React.Component { // if (window.em) { API.isNeedSecondPwdVerify({ mouldCode: "HRM", itemCode: "SALARY" }).then(({ status, isNeedSecondAuth }) => { if (status && isNeedSecondAuth) { - this.setState({ visible: true }); + this.setState({ visible: true }, () => { + API.getSecondAuthForm({ mouldCode: "HRM", itemCode: "SALARY" }).then(({ status, notSetting }) => { + this.setState({ notSetting }); + }); + }); } else { this.getMySalaryBill(getQueryString("id")); setInitEmVerify(); @@ -106,8 +115,8 @@ export default class MobilePayroll extends React.Component { }; render() { - const { mySalaryStore: { clearLoading } } = this.props; - const { mySalaryBillData, visible, captchaVisible } = this.state; + const { mySalaryStore: { clearLoading, pwdForm } } = this.props; + const { mySalaryBillData, visible, captchaVisible, notSetting, pwdSetVisible } = this.state; const type = getQueryString("type"); const employeeInformation = mySalaryBillData.employeeInformation ? mySalaryBillData.employeeInformation : {}; const salaryGroups = mySalaryBillData.salaryGroups ? mySalaryBillData.salaryGroups : []; @@ -126,9 +135,17 @@ export default class MobilePayroll extends React.Component { ]} > - this.setState({ authCode })}/> + this.setState({ authCode })}/> + { + notSetting && +
+ {getLabel("514970", "您还未设置二次验证密码,点击")} + this.setState({ pwdSetVisible: true })}>{getLabel("30747", "设置")} +
+ } + this.setState({ pwdSetVisible: false })}/> { type === "phone" ? { + const { isFormInit } = form, formParams = form.getFormParams(); + let group = []; + isFormInit && condition && condition.map(c => { + let items = []; + c.items.map(fields => { + items.push({ + com: ( + + { + fields.domkey[0] === "validatecode" ? +
+ + { + this.setState({ num: this.state.num + 1 }, () => { + this.setState({ src: `${window.ecologyContentPath || ""}/weaver/weaver.file.MakeValidateCode?notneedvalidate=1&isView=1&validatetype=0&validatenum=4&seriesnum_=${this.state.num}` }); + }); + }} + alt="" + /> +
+ : + } +
), + colSpan: 1 + }); + }); + group.push( + ); + }); + return group; + }; + saveSecondaryPassword = () => { + const { form } = this.props; + const { secondaryPwd1, secondaryPwd2, validatecode } = form.getFormParams(); + if (!validatecode || !secondaryPwd1 || !secondaryPwd2) { + message.error(getLabel(518702, "必要信息不完整,红色*为必填项!")); + return; + } + if (secondaryPwd1 !== secondaryPwd2) { + message.error(getLabel("504376", "密码确认不正确!")); + return; + } + const params = { secondaryPwd1, secondaryPwd2 }; + RSAEcrypt("1", params).then(RSAParam => { + saveSecondaryPwd({ ...RSAParam, validatecode }).then(({ sign, message: msg }) => { + if (sign === "1") { + message.success(msg); + this.props.onCancel(); + form.resetForm(); + } else { + message.warning(msg); + } + }); + }); + }; + + render() { + return ( + {getLabel(537558, "保存")} + ]} + > + {this.getSearchs(this.props.form, condition)} + + ); + } +} + +export default PassSetDialog; diff --git a/pc4mobx/hrmSalary/pages/mobilePayroll/pwdCondtion.js b/pc4mobx/hrmSalary/pages/mobilePayroll/pwdCondtion.js new file mode 100644 index 00000000..c2b9df7a --- /dev/null +++ b/pc4mobx/hrmSalary/pages/mobilePayroll/pwdCondtion.js @@ -0,0 +1,45 @@ +import { WeaLocaleProvider } from "ecCom"; + +const { getLabel } = WeaLocaleProvider; +export const condition = [ + { + items: [ + { + colSpan: 1, + checkbox: false, + checkboxValue: false, + conditionType: "INPUT", + domkey: ["secondaryPwd1"], + fieldcol: 18, + label: getLabel(409, "密码"), + labelcol: 6, + detailtype: 3, + rules: "required|string", + viewAttr: 3 + }, + { + colSpan: 1, + conditionType: "INPUT", + domkey: ["secondaryPwd2"], + fieldcol: 18, + label: getLabel(511112, "确认密码"), + labelcol: 6, + rules: "required|string", + viewAttr: 3 + }, + { + colSpan: 1, + conditionType: "INPUT", + domkey: ["validatecode"], + fieldcol: 18, + label: getLabel(511113, "验证码"), + labelcol: 6, + value: "", + rules: "required|string", + viewAttr: 3 + } + ], + title: "", + defaultshow: true + } +]; diff --git a/pc4mobx/hrmSalary/stores/mySalary.js b/pc4mobx/hrmSalary/stores/mySalary.js index 61988d5b..916c3be9 100644 --- a/pc4mobx/hrmSalary/stores/mySalary.js +++ b/pc4mobx/hrmSalary/stores/mySalary.js @@ -14,6 +14,7 @@ const { TableStore } = WeaTableNew; export class MySalaryStore { @observable tableStore = new TableStore(); // new table @observable form = new WeaForm(); // nrew 一个form + @observable pwdForm = new WeaForm(); // new 一个密码验证form @observable condition = []; // 存储后台得到的form数据 @observable hasRight = false; // 判断用户是有权限查看当前页面: 没有权限渲染无权限页面,有权限渲染数据 @observable showSearchAd = false; // 高级搜索面板显示 diff --git a/pc4mobx/hrmSalary/util/RSAUtil.js b/pc4mobx/hrmSalary/util/RSAUtil.js new file mode 100644 index 00000000..97b76234 --- /dev/null +++ b/pc4mobx/hrmSalary/util/RSAUtil.js @@ -0,0 +1,32 @@ +import loadjs from "loadjs"; + +const RSAEcrypt = (openRSA, param) => { + return new Promise((resolve, reject) => { + //异步加载ras文件 + loadjs.isDefined("rsa") ? loadjs.ready("rsa", () => { + if (openRSA && openRSA == "1") { + Object.keys(param).forEach(key => { + param[key] = __RSAEcrypt__.rsa_data_encrypt(param[key]); + }); + } + resolve(param); + }) : loadjs(["/js/rsa/jsencrypt.js", "/js/rsa/rsa.js"], "rsa", { + async: false, + success: () => { + if (openRSA && openRSA == "1") { + const callback = () => { + Object.keys(param).forEach(key => { + param[key] = __RSAEcrypt__.rsa_data_encrypt(param[key]); + }); + resolve(param); + }; + __RSAEcrypt__.initRsaCode(callback); + } else { + resolve(param); + } + } + }); + }); +}; + +export { RSAEcrypt };