diff --git a/pc4mobx/hrmSalary/apis/calculate.js b/pc4mobx/hrmSalary/apis/calculate.js index f2bd582a..85805d5c 100644 --- a/pc4mobx/hrmSalary/apis/calculate.js +++ b/pc4mobx/hrmSalary/apis/calculate.js @@ -228,6 +228,10 @@ export const getColumnDesc = (params) => { export const updateLockStatus = (params) => { return postFetch("/api/bs/hrmsalary/salaryacct/acctresult/updateLockStatus", params); }; +// 更新薪资核算结果的锁定状态 +export const updateLockEmpStatus = (params) => { + return postFetch("/api/bs/hrmsalary/salaryacct/acctresult/lockEmp", params); +}; // 导入薪资核算添加表头字段缓存 export const cacheImportField = (params) => { return postFetch("/api/bs/hrmsalary/salaryacct/acctresult/cacheImportField", params); diff --git a/pc4mobx/hrmSalary/components/mobileTemplate/index.js b/pc4mobx/hrmSalary/components/mobileTemplate/index.js index 18de0574..ca9c8b63 100644 --- a/pc4mobx/hrmSalary/components/mobileTemplate/index.js +++ b/pc4mobx/hrmSalary/components/mobileTemplate/index.js @@ -14,7 +14,7 @@ const getLabel = WeaLocaleProvider.getLabel; class Index extends Component { render() { const { theme, background, tip, tipPosi, itemTypeList, title } = this.props; - const { onlyOneGrup, showData } = dealTemplate(itemTypeList, "mobile"); + const { onlyOneGrup, showData } = dealTemplate(_.filter(itemTypeList, o => !!o), "mobile"); return ( {/*
{title || getLabel(111, "薪酬预览")}
*/} diff --git a/pc4mobx/hrmSalary/components/pcTemplate/content.js b/pc4mobx/hrmSalary/components/pcTemplate/content.js index 310999d6..6bc3c60e 100644 --- a/pc4mobx/hrmSalary/components/pcTemplate/content.js +++ b/pc4mobx/hrmSalary/components/pcTemplate/content.js @@ -7,7 +7,7 @@ const getLabel = WeaLocaleProvider.getLabel; class Content extends Component { render() { const { theme, background, tip, tipPosi, itemTypeList, sendTime = new Date() } = this.props; - const { onlyOneGrup, showData } = dealTemplate(itemTypeList, "pc"); + const { onlyOneGrup, showData } = dealTemplate(_.filter(itemTypeList, o => !!o), "pc"); return (
diff --git a/pc4mobx/hrmSalary/pages/analysisOfSalaryStatistics/components/salaryDetails.js b/pc4mobx/hrmSalary/pages/analysisOfSalaryStatistics/components/salaryDetails.js index 84882ff0..66538450 100644 --- a/pc4mobx/hrmSalary/pages/analysisOfSalaryStatistics/components/salaryDetails.js +++ b/pc4mobx/hrmSalary/pages/analysisOfSalaryStatistics/components/salaryDetails.js @@ -105,7 +105,7 @@ class SalaryDetails extends Component { return; } WeaLoadingGlobal.start(); - const promise = API.exportSalaryList({ ...payload, ids: selectedRowKeys }); + const promise = API.exportSalaryList({ ...payload, ids: key === "SELECTED" ? selectedRowKeys : [] }); }; getColumns = () => { const { attendanceStore: { tableStore } } = this.props; diff --git a/pc4mobx/hrmSalary/pages/calculate/doCalc/components/salaryEditCalc/editCalcTable.js b/pc4mobx/hrmSalary/pages/calculate/doCalc/components/salaryEditCalc/editCalcTable.js index e5614f87..d3097ad5 100644 --- a/pc4mobx/hrmSalary/pages/calculate/doCalc/components/salaryEditCalc/editCalcTable.js +++ b/pc4mobx/hrmSalary/pages/calculate/doCalc/components/salaryEditCalc/editCalcTable.js @@ -8,7 +8,7 @@ import React, { Component } from "react"; import { WeaLocaleProvider, WeaTools } from "ecCom"; import { message, Modal, Spin } from "antd"; import { inject, observer } from "mobx-react"; -import { acctResultList, updateLockStatus } from "../../../../../apis/calculate"; +import { acctResultList, updateLockEmpStatus, updateLockStatus } from "../../../../../apis/calculate"; import ProgressModal from "../../../../../components/progressModal"; import BatchUpdateSalaryItemValDialog from "./batchUpdateSalaryItemValDialog"; import EditSalaryCalcSlide from "./editSalaryCalcSlide"; @@ -57,12 +57,15 @@ class EditCalcTable extends Component { this.props.onShowFormulaTd(dataIndex); break; case "LOCKING": - const { salaryItemId, lockType: lockStatus } = params; - if (lockStatus === "BATCHUPDATE") { + const { salaryItemId, lockType } = params; + if (lockType === "BATCHUPDATE") { this.batchUpdateSalaryItemVal(params); return; } - this.updateLockStatus({ lockStatus, salaryItemId }); + this.updateLockStatus({ lockStatus: lockType, salaryItemId }); + break; + case "LOCKEMP": + this.updateEmpLockStatus({ ...params }); break; case "EDIT": const { id: salaryCalcId } = params; @@ -131,6 +134,52 @@ class EditCalcTable extends Component { } }); }; + updateEmpLockStatus = (payload) => { + const { lockStatus } = payload; + Modal.confirm({ + title: getLabel(131329, "信息确认"), + content:
+
+ {lockStatus === "LOCK" ? getLabel(111, "确定要锁定该人员核算数据吗?") : getLabel(111, "确定要解锁该人员核算数据吗?")} +
+
+ {lockStatus === "LOCK" ? getLabel(111, "确定后,核算数据锁定,项目公式失效;点击核算将跳过该人员已核算的项目!") : + getLabel(111, "确定后,则项目公式生效,页面仍显示手动修改的项目值;点击核算将按公式重新核算,不再显示解锁标识!")} +
+
, + onOk: () => { + this.setState({ + progressVisible: true + }, () => { + this.timerLock = setInterval(() => { + if (this.state.progress !== 100) { + this.setState({ + progress: this.state.progress + 1 + }); + } else { + clearInterval(this.timerLock); + this.setState({ + progressVisible: false, + progress: 0 + }); + } + }, 500); + }); + const { routeParams: { salaryAcctRecordId } } = this.props; + updateLockEmpStatus({ ...payload, salaryAcctRecordId }).then(({ status, errormsg }) => { + if (status) { + clearInterval(this.timerLock); + this.setState({ + progressVisible: false, + progress: 0 + }, () => this.queryCalcResultList()); + } else { + message.error(errormsg); + } + }); + } + }); + }; batchUpdateSalaryItemVal = (payload) => { Modal.confirm({ title: getLabel(131329, "信息确认"), @@ -180,7 +229,8 @@ class EditCalcTable extends Component { "共": getLabel(18609, "共"), "条": getLabel(18256, "条"), "总计": getLabel(523, "总计"), "批量解锁": getLabel(111, "批量解锁"), "批量锁定": getLabel(111, "批量锁定"), "批量更新": getLabel(111, "批量更新"), - "查看拓扑图": getLabel(111, "查看拓扑图") + "查看拓扑图": getLabel(111, "查看拓扑图"), "锁定": getLabel(111, "锁定"), + "解锁": getLabel(111, "解锁") }; this.setState({ originPayloadData: { ...payload, i18n } }); const childFrameObj = document.getElementById("atdTable"); diff --git a/pc4mobx/hrmSalary/pages/dataAcquisition/attendance/components/attendanceDataViewSlide.js b/pc4mobx/hrmSalary/pages/dataAcquisition/attendance/components/attendanceDataViewSlide.js index 4e2735aa..634d36fe 100644 --- a/pc4mobx/hrmSalary/pages/dataAcquisition/attendance/components/attendanceDataViewSlide.js +++ b/pc4mobx/hrmSalary/pages/dataAcquisition/attendance/components/attendanceDataViewSlide.js @@ -40,7 +40,8 @@ class AttendanceDataViewSlide extends Component { const { columns, list: dataSource, pageNum: current, pageSize, total } = data.pageInfo; this.setState({ pageInfo: { ...pageInfo, current, pageSize, total }, dataSource, - columns: _.map(columns, o => ({ ...o, width: 150, fixed: o.dataIndex === "username" ? "left" : null })) + // o.dataIndex === "username" ? "left" : + columns: _.map(columns, o => ({ ...o, width: 150, fixed: null })) }); } }).catch(() => this.setState({ loading: { ...loading, query: false } })); diff --git a/pc4mobx/hrmSalary/pages/dataAcquisition/cumDeduct/columns.js b/pc4mobx/hrmSalary/pages/dataAcquisition/cumDeduct/columns.js index aac5fff7..f74313ec 100644 --- a/pc4mobx/hrmSalary/pages/dataAcquisition/cumDeduct/columns.js +++ b/pc4mobx/hrmSalary/pages/dataAcquisition/cumDeduct/columns.js @@ -550,6 +550,17 @@ export const cumTaxPeriodCondition = [ value: "", rules: "required", viewAttr: 3 + },{ + colSpan: 1, + conditionType: "SELECT", + domkey: ["taxAgentIds"], + multiple: true, + fieldcol: 18, + label: "个税扣缴义务人", + lanId: 537996, + labelcol: 6, + value: "", + viewAttr: 2 }], title: "", defaultshow: true diff --git a/pc4mobx/hrmSalary/pages/dataAcquisition/cumDeduct/components/salaryCumDeductChooseTaxPeriodDialog.js b/pc4mobx/hrmSalary/pages/dataAcquisition/cumDeduct/components/salaryCumDeductChooseTaxPeriodDialog.js index 7e0c76f4..5947b8da 100644 --- a/pc4mobx/hrmSalary/pages/dataAcquisition/cumDeduct/components/salaryCumDeductChooseTaxPeriodDialog.js +++ b/pc4mobx/hrmSalary/pages/dataAcquisition/cumDeduct/components/salaryCumDeductChooseTaxPeriodDialog.js @@ -6,7 +6,8 @@ */ import React, { Component } from "react"; import { inject, observer } from "mobx-react"; -import { WeaDialog, WeaLocaleProvider } from "ecCom"; +import { toJS } from "mobx"; +import { WeaDialog, WeaLocaleProvider, WeaTools } from "ecCom"; import { Button, message } from "antd"; import { getSearchs } from "../../../../util"; import { cumTaxPeriodCondition } from "../columns"; @@ -14,6 +15,7 @@ import { onlineRequest } from "../../../../apis/cumDeduct"; import { onlineActualAddUpAdvanceTax } from "../../../../apis/cumSituation"; const getLabel = WeaLocaleProvider.getLabel; +const getKey = WeaTools.getKey; const APIFox = { online: onlineRequest, advance: onlineActualAddUpAdvanceTax @@ -25,13 +27,23 @@ class SalaryCumDeductChooseTaxPeriodDialog extends Component { constructor(props) { super(props); this.state = { - loading: false + loading: false, conditions: [] }; } componentWillReceiveProps(nextProps, nextContext) { const { cumDeductStore: { cumTaxPeriodForm, changeCumTaxPeriodForm } } = nextProps; if (nextProps.visible !== this.props.visible && nextProps.visible) { + this.setState({ + conditions: _.map(cumTaxPeriodCondition, item => ({ + ...item, items: _.map(item.items, o => { + if (getKey(o) === "taxAgentIds") { + return { ...o, lable: getLabel(o.lanId, o.label), options: toJS(nextProps.taxAgentOption) }; + } + return { ...o, lable: getLabel(o.lanId, o.label) }; + }) + })) + }); cumTaxPeriodForm.initFormFields(cumTaxPeriodCondition); } if (nextProps.visible !== this.props.visible && !nextProps.visible) { @@ -43,18 +55,19 @@ class SalaryCumDeductChooseTaxPeriodDialog extends Component { save = () => { const { cumDeductStore: { cumTaxPeriodForm }, type } = this.props; cumTaxPeriodForm.validateForm().then(f => { - const { declareMonth } = cumTaxPeriodForm.getFormParams(); + const { declareMonth, taxAgentIds } = cumTaxPeriodForm.getFormParams(); if (f.isValid) { this.setState({ loading: true }); - APIFox[type]({ declareMonth: declareMonth + "-01" }).then(({ status, errormsg }) => { - this.setState({ loading: false }); - if (status) { - message.success(getLabel(111, "获取成功!")); - this.props.onCancel(); - } else { - message.error(errormsg); - } - }).catch(() => this.setState({ loading: false })); + APIFox[type]({ declareMonth: declareMonth + "-01", taxAgentIds: taxAgentIds ? taxAgentIds.split(",") : [] }) + .then(({ status, errormsg }) => { + this.setState({ loading: false }); + if (status) { + message.success(getLabel(111, "获取成功!")); + this.props.onCancel(); + } else { + message.error(errormsg); + } + }).catch(() => this.setState({ loading: false })); } else { f.showErrors(); } @@ -62,17 +75,17 @@ class SalaryCumDeductChooseTaxPeriodDialog extends Component { }; render() { - const { loading } = this.state; + const { loading, conditions } = this.state; const { cumDeductStore: { cumTaxPeriodForm } } = this.props; return ( {getLabel(33703, "确认")}]} bottomLeft={getLabel(111, "点击保存后,稍后请点击【获取结果下载】下载获取结果。获取的数据将覆盖列表原本数据(有则覆盖无则新增)。")} >
- {getSearchs(cumTaxPeriodForm, cumTaxPeriodCondition, 1, false)} + {getSearchs(cumTaxPeriodForm, conditions, 1, false)}
); diff --git a/pc4mobx/hrmSalary/pages/dataAcquisition/cumDeduct/index.js b/pc4mobx/hrmSalary/pages/dataAcquisition/cumDeduct/index.js index 980ee789..4e903cc6 100644 --- a/pc4mobx/hrmSalary/pages/dataAcquisition/cumDeduct/index.js +++ b/pc4mobx/hrmSalary/pages/dataAcquisition/cumDeduct/index.js @@ -69,7 +69,7 @@ class Index extends Component { exportPayloadType: false, advanceCondition: null, cumTaxPeriodDialog: { - visible: false, title: "", type: "" + visible: false, title: "", type: "", taxAgentOption: [] }, feedbackLoading: false, incomeTaxStatus: false, @@ -401,6 +401,7 @@ class Index extends Component { */ getTopBtns = () => { const { addAllLoading, cumTaxPeriodDialog, feedbackLoading, incomeTaxStatus } = this.state; + const { taxAgentStore: { taxAgentOption } } = this.props; const commonBtns = [ , , @@ -421,7 +422,7 @@ class Index extends Component { const incomeTaxBtns = [