diff --git a/pc4mobx/hrmSalary/apis/payroll.js b/pc4mobx/hrmSalary/apis/payroll.js
index c322c94f..fdef4e0e 100644
--- a/pc4mobx/hrmSalary/apis/payroll.js
+++ b/pc4mobx/hrmSalary/apis/payroll.js
@@ -202,8 +202,12 @@ export const salaryBillSendSum = (params) => {
return postFetch("/api/bs/hrmsalary/salaryBill/send/sum", params);
};
//工资单发放-发送短信验证码
-export const sendMobileCode = (params) => {
- return postFetch("/api/bs/hrmsalary/salaryBill/sendMobileCode", params);
+export const sendMobileCode = (params, header = {}) => {
+ return postFetch("/api/bs/hrmsalary/salaryBill/sendMobileCode", params, header);
+};
+//工资单发放-发送短信验证码
+export const checkMobileCode = (params, header = {}) => {
+ return postFetch("/api/bs/hrmsalary/salaryBill/checkMobileCode", params, header);
};
//工资单-验证方式
export const payrollCheckType = params => {
diff --git a/pc4mobx/hrmSalary/components/captchaModal/index.js b/pc4mobx/hrmSalary/components/captchaModal/index.js
index a7f00b9b..87da6745 100644
--- a/pc4mobx/hrmSalary/components/captchaModal/index.js
+++ b/pc4mobx/hrmSalary/components/captchaModal/index.js
@@ -6,31 +6,32 @@
*/
import React, { Component } from "react";
import { WeaDialog, WeaError, WeaFormItem, WeaInput, WeaLocaleProvider, WeaSearchGroup } from "ecCom";
-import { sendMobileCode } from "../../apis/payroll";
-import { Button } from "antd";
+import { WeaForm, WeaSwitch } from "comsMobx";
+import { checkMobileCode, sendMobileCode } from "../../apis/payroll";
+import { getQueryString } from "../../util/url";
+import FormInfo from "../FormInfo";
+import { captchaCondition } from "../../pages/mobilePayroll/pwdCondtion";
+import MobileModal from "../../pages/mobilePayroll/mobileModal";
+import { Button, message } from "antd";
import "./index.less";
+const form = new WeaForm();
const { getLabel } = WeaLocaleProvider;
class Index extends Component {
constructor(props) {
super(props);
- this.state = {
- captcha: "",
- time: 60
- };
+ this.state = { captcha: "", time: 60 };
this.timeRef = null;
}
+ componentDidMount() {
+ form.initFormFields(captchaCondition);
+ }
+
componentWillUnmount() {
clearInterval(this.timeRef);
- }
-
- componentWillReceiveProps(nextProps, nextContext) {
- if (nextProps.visible !== this.props.visible && !nextProps.visible) {
- clearInterval(this.timeRef);
- this.setState({ captcha: "", time: 60 });
- }
+ this.setState({ captcha: "", time: 60 });
}
handleSendCaptcha = () => {
@@ -48,44 +49,73 @@ class Index extends Component {
}
});
};
- handleConfirm = () => {
- if (!this.state.captcha) {
+ handleConfirm = async () => {
+ const type = getQueryString("type"), f = await form.validateForm();
+ if (!this.state.captcha && type !== "phone") {
this.refs.weaError.showError();
- // return
+ return;
+ } else if (!f.isValid && type === "phone") {
+ f.showErrors();
+ return;
}
- this.props.onCancel();
- this.props.onConfirm();
+ checkMobileCode({ id: this.props.id, mobileCode: this.state.captcha }).then(({ status, errormsg }) => {
+ if (status) {
+ this.props.onCancel();
+ this.props.onConfirm();
+ } else {
+ message.error(errormsg);
+ }
+ });
};
render() {
- const { captcha, time } = this.state;
- return (
- {getLabel(826, "确定")}
- ]}
- >
-
-
-
-
- this.setState({ captcha })}/>
-
-
-
-
-
-
+ const { captcha, time } = this.state, type = getQueryString("type");
+ const itemRender = {
+ mobileCode: (field, textAreaProps, form, formParams) => {
+ return (
+ this.setState({ captcha: form.getFormParams().mobileCode })}/>
+
+
);
+ }
+ };
+ return (
+ {
+ type === "phone" ?
+
+ :
+ {getLabel(826, "确定")}
+ ]}
+ >
+
+
+
+
+ this.setState({ captcha })}/>
+
+
+
+
+
+
+ }
+
);
}
}
diff --git a/pc4mobx/hrmSalary/components/captchaModal/index.less b/pc4mobx/hrmSalary/components/captchaModal/index.less
index 4f8d23b7..2728112b 100644
--- a/pc4mobx/hrmSalary/components/captchaModal/index.less
+++ b/pc4mobx/hrmSalary/components/captchaModal/index.less
@@ -5,25 +5,25 @@
.wea-form-item-wrapper {
.wea-error {
width: 100%;
-
- .captchaInputBox {
- display: flex;
- align-items: center;
-
- .wea-input-normal {
- flex: 1;
- }
-
- button {
- padding: 8px 10px;
- border-radius: 0;
- min-width: 80px;
- text-align: center;
- height: 30px;
- line-height: 15px;
- }
- }
}
}
}
}
+
+.captchaInputBox {
+ display: flex;
+ align-items: center;
+
+ .wea-input-normal {
+ flex: 1;
+ }
+
+ button {
+ padding: 8px 10px;
+ border-radius: 0;
+ min-width: 80px;
+ text-align: center;
+ height: 30px;
+ line-height: 15px;
+ }
+}
diff --git a/pc4mobx/hrmSalary/pages/analysisOfSalaryStatistics/components/salaryDetails.js b/pc4mobx/hrmSalary/pages/analysisOfSalaryStatistics/components/salaryDetails.js
index 1893e77e..1775ee97 100644
--- a/pc4mobx/hrmSalary/pages/analysisOfSalaryStatistics/components/salaryDetails.js
+++ b/pc4mobx/hrmSalary/pages/analysisOfSalaryStatistics/components/salaryDetails.js
@@ -166,7 +166,7 @@ class SalaryDetails extends Component {
this.postMessageToChild({
dataSource, pageInfo, selectedRowKeys, showTotalCell, calcDetail: true, tableScrollHeight: 154, sumRow,
columns: _.map(columns, (it, idx) => ({
- dataIndex: it.column || it.dataIndex, title: it.text || it.title, calcDetail: true,
+ dataIndex: it.column || it.dataIndex, title: it.text || it.title, calcDetail: true, showSee: false,
width: (it.dataIndex === "taxAgent" || it.dataIndex === "salarySob") ? 176 : (it.width || it.oldWidth),
fixed: (idx === 1 || idx === 0 || idx === 2) ? "left" : "",
ellipsis: true
diff --git a/pc4mobx/hrmSalary/pages/dataAcquisition/attendance/components/attendanceDataViewSlide.js b/pc4mobx/hrmSalary/pages/dataAcquisition/attendance/components/attendanceDataViewSlide.js
index be64c8e8..2f4804b6 100644
--- a/pc4mobx/hrmSalary/pages/dataAcquisition/attendance/components/attendanceDataViewSlide.js
+++ b/pc4mobx/hrmSalary/pages/dataAcquisition/attendance/components/attendanceDataViewSlide.js
@@ -5,9 +5,9 @@
* Date: 2023/3/7
*/
import React, { Component } from "react";
-import { WeaInputSearch, WeaLocaleProvider, WeaSlideModal, WeaTable, WeaTop } from "ecCom";
-import { Button } from "antd";
+import { WeaInputSearch, WeaLocaleProvider, WeaSlideModal, WeaTop } from "ecCom";
import { viewAttendQuote } from "../../../../apis/attendance";
+import { Button, Spin } from "antd";
import "./index.less";
const { getLabel } = WeaLocaleProvider;
@@ -16,11 +16,31 @@ class AttendanceDataViewSlide extends Component {
constructor(props) {
super(props);
this.state = {
- loading: { query: false }, keyword: "", dataSource: [], columns: [],
- pageInfo: { current: 1, pageSize: 10, total: 0 }
+ loading: { query: false }, keyword: "", dataSource: [], pageInfo: { current: 1, pageSize: 10, total: 0 }
};
}
+ componentDidMount() {
+ window.addEventListener("message", this.handleReceive, false);
+ }
+
+ componentWillUnmount() {
+ window.removeEventListener("message", this.handleReceive, false);
+ }
+
+ handleReceive = async ({ data }) => {
+ const { type, payload: { id, params } = {} } = data;
+ if (type === "turn") {
+ switch (id) {
+ case "PAGEINFO":
+ this.setState({ pageInfo: { ...this.state.pageInfo, ...params } }, () => this.viewAttendQuote());
+ break;
+ default:
+ break;
+ }
+ }
+ };
+
componentWillReceiveProps(nextProps, nextContext) {
if (nextProps.visible !== this.props.visible && nextProps.visible) {
document.querySelector(".attendanceRefWrapper").classList.add("zIndex0-attendance");
@@ -33,19 +53,29 @@ class AttendanceDataViewSlide extends Component {
viewAttendQuote = (extraPayload = {}, props) => {
const { loading, pageInfo, keyword } = this.state;
- const { attendQuoteId } = props;
+ const { attendQuoteId } = props || this.props;
this.setState({ loading: { ...loading, query: true } });
viewAttendQuote({ ...pageInfo, attendQuoteId, keyword, ...extraPayload }).then(({ status, data }) => {
this.setState({ loading: { ...loading, query: false } });
if (status) {
const { columns, list: dataSource, pageNum: current, pageSize, total } = data.pageInfo;
this.setState({
- pageInfo: { ...pageInfo, current, pageSize, total }, dataSource,
- columns: _.map(columns, (o, i) => ({ ...o, width: 150, fixed: i === 0 ? "left" : null }))
- });
+ pageInfo: { ...pageInfo, current, pageSize, total }, dataSource
+ }, () => this.postMessageToChild({
+ pageInfo: this.state.pageInfo, dataSource, showRowSelection: false, unitTableType: "attendanceView",
+ columns: _.map(columns, (o, i) => ({ ...o, width: 150, fixed: i === 0 ? "left" : false }))
+ }));
}
}).catch(() => this.setState({ loading: { ...loading, query: false } }));
};
+ postMessageToChild = (payload = {}) => {
+ const i18n = {
+ "操作": getLabel(30585, "操作"), "编辑": getLabel(111, "编辑"), "共": getLabel(18609, "共"),
+ "条": getLabel(18256, "条")
+ };
+ const childFrameObj = document.getElementById("attendanceViewTable");
+ childFrameObj && childFrameObj.contentWindow.postMessage(JSON.stringify({ ...payload, i18n }), "*");
+ };
handleExportAttendQuote = () => {
if (!this.handleDebounce) {
this.handleDebounce = _.debounce(() => {
@@ -60,24 +90,7 @@ class AttendanceDataViewSlide extends Component {
render() {
const { showOperateBtn, salaryYearMonth, ...extra } = this.props;
- const { columns, dataSource, loading, pageInfo, keyword } = this.state;
- const pagination = {
- ...pageInfo,
- showTotal: (total) => `共 ${total} 条`,
- pageSizeOptions: ["10", "20", "50", "100"],
- showSizeChanger: true,
- showQuickJumper: true,
- onShowSizeChange: (current, pageSize) => {
- this.setState({
- pageInfo: { ...pageInfo, current, pageSize }
- }, () => this.viewAttendQuote({}, this.props));
- },
- onChange: (current) => {
- this.setState({
- pageInfo: { ...pageInfo, current }
- }, () => this.viewAttendQuote({}, this.props));
- }
- };
+ const { loading, keyword } = this.state;
const btns = [
,
{getLabel(543376, "考勤周期")}:{salaryYearMonth}
-
+
+
+
+
+
}
/>
diff --git a/pc4mobx/hrmSalary/pages/dataAcquisition/attendance/components/index.less b/pc4mobx/hrmSalary/pages/dataAcquisition/attendance/components/index.less
index 51316cab..8b586900 100644
--- a/pc4mobx/hrmSalary/pages/dataAcquisition/attendance/components/index.less
+++ b/pc4mobx/hrmSalary/pages/dataAcquisition/attendance/components/index.less
@@ -54,8 +54,8 @@
margin-bottom: 8px;
}
- .wea-new-table {
- background: #FFF;
+ .ant-spin-nested-loading, .ant-spin-container {
+ height: 100%;
}
}
diff --git a/pc4mobx/hrmSalary/pages/datapush/components/PDDialog/customTreeSelect.js b/pc4mobx/hrmSalary/pages/datapush/components/PDDialog/customTreeSelect.js
index e595e7dc..bc8ad18a 100644
--- a/pc4mobx/hrmSalary/pages/datapush/components/PDDialog/customTreeSelect.js
+++ b/pc4mobx/hrmSalary/pages/datapush/components/PDDialog/customTreeSelect.js
@@ -73,9 +73,14 @@ class CustomTreeSelect extends Component {
const { itemName } = detail;
return (
this.getSourceItem(node.props.value)}
- onSelect={this.handleSelect}>
+ onSelect={this.handleSelect}
+ treeNodeFilterProp="title"
+ filterTreeNode={(inputValue, treeNode) => {
+ const title = treeNode.props.title.props ? treeNode.props.title.props.children[0].props.children : treeNode.props.title;
+ return title.toLowerCase().indexOf(inputValue.toLowerCase()) >= 0;
+ }}>
{
_.map(sourceList, o => (
diff --git a/pc4mobx/hrmSalary/pages/mobilePayroll/index.js b/pc4mobx/hrmSalary/pages/mobilePayroll/index.js
index a1756ede..47c46604 100644
--- a/pc4mobx/hrmSalary/pages/mobilePayroll/index.js
+++ b/pc4mobx/hrmSalary/pages/mobilePayroll/index.js
@@ -37,15 +37,12 @@ export default class MobilePayroll extends React.Component {
this.id = getQueryString("id");
const { mySalaryStore: { init, setMySalaryBill } } = this.props;
setMySalaryBill({});
- if (type !== "phone") {
- const { data, status } = await payrollCheckType();
- if (status && data === "PWD") {
- init(false, () => this.getMySalaryBill(this.id));
- } else {
- this.setState({ captchaVisible: true });
- }
+ const { data, status } = await payrollCheckType();
+ if (status && data === "PWD") {
+ type !== "phone" ? init(false, () => this.getMySalaryBill(this.id)) : await this.initMobile();
+ } else {
+ this.setState({ captchaVisible: true });
}
- type === "phone" && await this.initMobile();
}
initMobile = async () => {
@@ -156,11 +153,17 @@ export default class MobilePayroll extends React.Component {
{pwdSetVisible && this.setState({ pwdSetVisible: false }, () => this.initMobile())}/>}
{/*发送验证码*/}
- this.setState({ captchaVisible: false })}
- onConfirm={() => this.props.mySalaryStore.setInitEmVerify()}
- />
+ {
+ captchaVisible &&
+ this.setState({ captchaVisible: false })}
+ onConfirm={() => {
+ setInitEmVerify();
+ this.getMySalaryBill(getQueryString("id"));
+ }}
+ />
+ }
;
const {
salaryTemplate, salaryGroups, employeeInformation, sendTime, confirmStatus, showAck, showFeedback
diff --git a/pc4mobx/hrmSalary/pages/mobilePayroll/pwdCondtion.js b/pc4mobx/hrmSalary/pages/mobilePayroll/pwdCondtion.js
index 5cb571e6..159807e0 100644
--- a/pc4mobx/hrmSalary/pages/mobilePayroll/pwdCondtion.js
+++ b/pc4mobx/hrmSalary/pages/mobilePayroll/pwdCondtion.js
@@ -1,6 +1,25 @@
import { WeaLocaleProvider } from "ecCom";
const { getLabel } = WeaLocaleProvider;
+export const captchaCondition = [
+ {
+ items: [
+ {
+ colSpan: 1,
+ conditionType: "INPUT",
+ domkey: ["mobileCode"],
+ fieldcol: 18,
+ label: getLabel(111, "验证码"),
+ labelcol: 6,
+ detailtype: 1,
+ rules: "required|string",
+ viewAttr: 3
+ }
+ ],
+ title: "",
+ defaultshow: true
+ }
+];
export const loginCondition = [
{
items: [
diff --git a/pc4mobx/hrmSalary/pages/payrollRelease/components/updatePayrollTemplateSlide/index.js b/pc4mobx/hrmSalary/pages/payrollRelease/components/updatePayrollTemplateSlide/index.js
index b4d7dd4e..37381a6f 100644
--- a/pc4mobx/hrmSalary/pages/payrollRelease/components/updatePayrollTemplateSlide/index.js
+++ b/pc4mobx/hrmSalary/pages/payrollRelease/components/updatePayrollTemplateSlide/index.js
@@ -53,7 +53,7 @@ class Index extends Component {
} = payrollTempForm.getFormParams(),
{ ackFeedbackStatus, feedbackStatus, autoAckDays, ...extraFb } = payrollTempFeedbackForm.getFormParams(),
{ formData, smsSettingDialog } = this.tmpBaseSetRef.state;
- if (autoSendStatus !== "1" && emailStatus !== "1" && msgStatus !== "1" && smsStatus !== 1) {
+ if (autoSendStatus !== "1" && emailStatus !== "1" && msgStatus !== "1" && smsStatus !== "1") {
message.warning(getLabel(111, "工资单模板至少开启一个发送通道"));
return;
}
diff --git a/pc4mobx/hrmSalary/pages/salary/components/personalScopeModal.js b/pc4mobx/hrmSalary/pages/salary/components/personalScopeModal.js
index 581fa39c..6bdb46a8 100644
--- a/pc4mobx/hrmSalary/pages/salary/components/personalScopeModal.js
+++ b/pc4mobx/hrmSalary/pages/salary/components/personalScopeModal.js
@@ -59,7 +59,6 @@ class PersonalScopeModal extends Component {
...scopeSelectLinkageDatas[cur],
browserConditionParam: {
...scopeSelectLinkageDatas[cur].browserConditionParam,
- isSingle: true,
replaceDatas: !_.isEmpty(record) ? [{
id: String(record.targetId),
name: record.targetName
diff --git a/pc4mobx/hrmSalary/util/request.js b/pc4mobx/hrmSalary/util/request.js
index 4fd7e4e4..ef487037 100644
--- a/pc4mobx/hrmSalary/util/request.js
+++ b/pc4mobx/hrmSalary/util/request.js
@@ -16,12 +16,12 @@ export const formHeaderPost = (url, method, params, header) => {
body: formdata
}).then(res => res.json());
};
-export const postFetch = (url, params) => {
+export const postFetch = (url, params, header = {}) => {
if (typeof localStorage.access_token === "string" && localStorage.access_token !== "") {
params.access_token = localStorage.access_token;
}
url = server + url + "?__random__=" + (new Date()).valueOf();
- return fetch(url, getFetchParams("POST", params)).then(res => res.json());
+ return fetch(url, getFetchParams("POST", params, header)).then(res => res.json());
};
export const headerRequestFetch = (url, method, params, header) => {
if (typeof localStorage.access_token === "string" && localStorage.access_token !== "") {