diff --git a/pc4mobx/hrmSalary/pages/calculate/calcOc/components/salaryCalcOcList.js b/pc4mobx/hrmSalary/pages/calculate/calcOc/components/salaryCalcOcList.js index e3dda5fb..aefd3e5b 100644 --- a/pc4mobx/hrmSalary/pages/calculate/calcOc/components/salaryCalcOcList.js +++ b/pc4mobx/hrmSalary/pages/calculate/calcOc/components/salaryCalcOcList.js @@ -5,8 +5,8 @@ * Date: 2023/9/26 */ import React, { Component } from "react"; -import { WeaLocaleProvider, WeaTable } from "ecCom"; -import { Alert } from "antd"; +import { WeaLocaleProvider } from "ecCom"; +import { Alert, Spin } from "antd"; import { comparisonResultList } from "../../../../apis/calculate"; const getLabel = WeaLocaleProvider.getLabel; @@ -21,9 +21,35 @@ class SalaryCalcOcList extends Component { } componentDidMount() { - this.comparisonResultList(this.props); + window.addEventListener("message", this.handleReceive, false); } + componentWillUnmount() { + window.removeEventListener("message", this.handleReceive, false); + } + + handleReceive = async ({ data }) => { + const { type, payload: { id, params } = {} } = data; + if (type === "init") { + this.comparisonResultList(this.props); + } else if (type === "turn") { + switch (id) { + case "PAGEINFO": + const { size: pageSize, pageNum: current } = params; + this.setState({ + pageInfo: { ...this.state.pageInfo, current, pageSize } + }, () => this.comparisonResultList(this.props)); + break; + case "FORMULA": + const { formulaDesc } = params; + this.setState({ formulaDesc }); + break; + default: + break; + } + } + }; + componentWillReceiveProps(nextProps, nextContext) { if ( (nextProps.form.onlyDiffEmployee !== this.props.form.onlyDiffEmployee) || @@ -34,6 +60,15 @@ class SalaryCalcOcList extends Component { } } + postMessageToChild = (payload = {}) => { + const i18n = { + "共": getLabel(18609, "共"), "条": getLabel(18256, "条"), + "总计": getLabel(523, "总计"), "系统值": getLabel(543280, "系统值"), + "线下值": getLabel(543281, "线下值"), "差值": getLabel(543282, "差值") + }; + const childFrameObj = document.getElementById("atdTable"); + childFrameObj.contentWindow.postMessage(JSON.stringify({ ...payload, i18n }), "*"); + }; comparisonResultList = (props) => { const { form, routeParams: { salaryAcctRecordId } } = props; const { pageInfo } = this.state; @@ -42,85 +77,47 @@ class SalaryCalcOcList extends Component { comparisonResultList(payload).then(({ status, data }) => { this.setState({ loading: false }); if (status) { - const { list: dataSource, columns, pageNum: current, pageSize, total } = data; + const { columns, pageInfo: { pageNum: current, pageSize, total, list: dataSource } } = data; this.setState({ - dataSource, columns, + dataSource, columns: this.convertColumns(columns), pageInfo: { ...pageInfo, current, pageSize, total } + }, () => { + const { pageInfo, dataSource, columns } = this.state; + this.postMessageToChild({ dataSource, pageInfo, columns }); }); } }).catch(() => this.setState({ loading: false })); }; - render() { - const { dataSource, loading, columns, pageInfo, formulaDesc } = this.state; - const pagination = { - ...pageInfo, - showTotal: total => `${getLabel(18609, "共")} ${total} ${getLabel(18256, "条")}`, - showQuickJumper: true, - showSizeChanger: true, - pageSizeOptions: ["10", "20", "50", "100"], - onShowSizeChange: (current, pageSize) => { - this.setState({ - pageInfo: { ...pageInfo, current, pageSize } - }, () => this.comparisonResultList(this.props)); - }, - onChange: current => { - this.setState({ - pageInfo: { ...pageInfo, current } - }, () => this.comparisonResultList(this.props)); + convertColumns = (cols) => { + return _.map(cols, (item, index) => { + const col = { title: item.text, dataIndex: item.column }; + if (_.isNaN(parseInt(item.column))) { + return item.fixed ? { ...col, width: 150, fixed: item.fixed } : index < 2 ? { + ...col, width: 150, fixed: "left" + } : { ...col, width: 150 }; + } else { + return { ...col, width: 180, children: this.convertColumns(item.children) }; } - }; + }); + }; + + render() { + const { loading, formulaDesc } = this.state; return ( - +
- { - if (i > 1) { - if (i > 2) { - return { - ...o, width: 180, - render: (__, record) => { - const formulaDesc = record["customParameters"][`${o["dataIndex"]}`]; - const showDifference = record[`${o["dataIndex"]}_type`] === "number"; - const { acctResultValue, excelResultValue } = record[o["dataIndex"]]; - return
this.setState({ formulaDesc })}> -
- {getLabel(543280, "系统值")}: - {acctResultValue} -
-
- {getLabel(543281, "线下值")}: - {excelResultValue} -
- { - showDifference && -
- {getLabel(543282, "差值")}: - {calculateDifference(acctResultValue, excelResultValue)} -
- } -
; - } - }; - } - return { ...o, width: 180 }; - } - return { ...o, width: 150, fixed: "left" }; - })} - /> - + +