From 91bc849b49439ff7252700ecb40ef4f39cd9c947 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=BB=8E=E6=B0=B8=E9=A1=BA?= <971387674@qq.com> Date: Tue, 5 Mar 2024 14:23:13 +0800 Subject: [PATCH 1/3] =?UTF-8?q?feature/2.10.1.2402.01-=E7=A4=BE=E4=BF=9D?= =?UTF-8?q?=E5=8F=B0=E8=B4=A6=E5=AF=BC=E5=85=A5=E7=BC=93=E5=AD=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pc4mobx/hrmSalary/apis/calculate.js | 4 ++++ .../acctResult/importModal/selectFieldModal.js | 11 ++++++++++- 2 files changed, 14 insertions(+), 1 deletion(-) diff --git a/pc4mobx/hrmSalary/apis/calculate.js b/pc4mobx/hrmSalary/apis/calculate.js index 1cfca645..d328b700 100644 --- a/pc4mobx/hrmSalary/apis/calculate.js +++ b/pc4mobx/hrmSalary/apis/calculate.js @@ -232,6 +232,10 @@ export const updateLockStatus = (params) => { export const cacheImportField = (params) => { return postFetch("/api/bs/hrmsalary/salaryacct/acctresult/cacheImportField", params); }; +// 导入社保台账添加表头字段缓存 +export const cacheWelfareListField = (params) => { + return postFetch("/api/bs/hrmsalary/siaccount/cacheWelfareList", params); +}; //薪资核算-页面查看权限 export const salaryacctAcctresultCheckAuth = params => { return WeaTools.callApi("/api/bs/hrmsalary/salaryacct/acctresult/checkAuth", "GET", params); diff --git a/pc4mobx/hrmSalary/pages/calculateDetail/acctResult/importModal/selectFieldModal.js b/pc4mobx/hrmSalary/pages/calculateDetail/acctResult/importModal/selectFieldModal.js index f288cc35..2dc1d2f3 100644 --- a/pc4mobx/hrmSalary/pages/calculateDetail/acctResult/importModal/selectFieldModal.js +++ b/pc4mobx/hrmSalary/pages/calculateDetail/acctResult/importModal/selectFieldModal.js @@ -2,7 +2,7 @@ import React from "react"; import { Button, Col, Row } from "antd"; import { inject, observer } from "mobx-react"; import { WeaCheckbox, WeaDialog } from "ecCom"; -import { cacheImportField } from "../../../../apis/calculate"; +import { cacheImportField, cacheWelfareListField } from "../../../../apis/calculate"; @inject("calculateStore", "standingBookStore") @observer @@ -112,15 +112,24 @@ export default class SelectFieldModal extends React.Component { //薪资核算详情页面的导入表单字段缓存功能 if (window.location.hash.indexOf("calculateDetail") !== -1) { const { status } = await this.cacheImportField(); + } else if (window.location.hash.indexOf("standingBookDetail") !== -1) { + const { status } = await this.cacheWelfareListField(); } this.props.onAdd(this.fieldData); this.props.onCancel(); }; + //薪资核算导入缓存字段 cacheImportField = () => { const salaryItemList = _.reduce(_.keys(this.fieldData), (pre, cur) => ([...pre, ...this.fieldData[cur]]), []); const salaryItems = _.map(_.filter(salaryItemList, it => !!it.checked), item => item.salaryItemId); return cacheImportField({ salaryItems }); }; + //社保台账导入缓存字段 + cacheWelfareListField = () => { + const salaryItemList = _.reduce(_.keys(this.fieldData), (pre, cur) => ([...pre, ...this.fieldData[cur]]), []); + const welfareNames = _.map(_.filter(salaryItemList, it => !!it.checked), item => item.fieldId); + return cacheWelfareListField({ welfareNames }); + }; // 标题checkbox点击 handleTitleCheckboxChange(value, flag) { From df9e9c9a21ee44004386742cc68b4abcd5b6fd9d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=BB=8E=E6=B0=B8=E9=A1=BA?= <971387674@qq.com> Date: Tue, 5 Mar 2024 17:49:37 +0800 Subject: [PATCH 2/3] =?UTF-8?q?feature/2.10.1.2402.01-=E7=A4=BE=E4=BF=9D?= =?UTF-8?q?=E5=8F=B0=E8=B4=A6=E5=AF=BC=E5=85=A5=E7=BC=93=E5=AD=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pc4mobx/hrmSalary/apis/calculate.js | 4 - pc4mobx/hrmSalary/apis/standingBook.js | 8 ++ .../importModal/selectFieldModal.js | 10 +- .../components/importHeaderSetDialog.js | 84 +++++++++++ .../standingBookDetail/components/index.less | 18 +++ .../components/makeupDifference.js | 41 +++--- .../standingBookDetail/components/normal.js | 39 ++--- .../standingBookCalcImportDialog.js | 136 ++++++++++++++++++ 8 files changed, 281 insertions(+), 59 deletions(-) create mode 100644 pc4mobx/hrmSalary/pages/socialSecurityBenefits/standingBookDetail/components/importHeaderSetDialog.js create mode 100644 pc4mobx/hrmSalary/pages/socialSecurityBenefits/standingBookDetail/components/standingBookCalcImportDialog.js diff --git a/pc4mobx/hrmSalary/apis/calculate.js b/pc4mobx/hrmSalary/apis/calculate.js index d328b700..1cfca645 100644 --- a/pc4mobx/hrmSalary/apis/calculate.js +++ b/pc4mobx/hrmSalary/apis/calculate.js @@ -232,10 +232,6 @@ export const updateLockStatus = (params) => { export const cacheImportField = (params) => { return postFetch("/api/bs/hrmsalary/salaryacct/acctresult/cacheImportField", params); }; -// 导入社保台账添加表头字段缓存 -export const cacheWelfareListField = (params) => { - return postFetch("/api/bs/hrmsalary/siaccount/cacheWelfareList", params); -}; //薪资核算-页面查看权限 export const salaryacctAcctresultCheckAuth = params => { return WeaTools.callApi("/api/bs/hrmsalary/salaryacct/acctresult/checkAuth", "GET", params); diff --git a/pc4mobx/hrmSalary/apis/standingBook.js b/pc4mobx/hrmSalary/apis/standingBook.js index 8cf772a5..fbcca3c2 100644 --- a/pc4mobx/hrmSalary/apis/standingBook.js +++ b/pc4mobx/hrmSalary/apis/standingBook.js @@ -197,3 +197,11 @@ export const getBalancePaymentGroup = params => { export const addNewBalance = params => { return postFetch("/api/bs/hrmsalary/siaccount/detail/addNewBalance", params); }; +// 导入社保台账添加表头字段缓存-正常缴纳以及补缴 +export const cacheWelfareListField = (params) => { + return postFetch("/api/bs/hrmsalary/siaccount/cacheWelfareList", params); +}; +// 导入社保台账添加表头字段缓存-补差缓存 +export const cacheBalanceWelfareList = (params) => { + return postFetch("/api/bs/hrmsalary/siaccount/cacheBalanceWelfareList", params); +}; diff --git a/pc4mobx/hrmSalary/pages/calculateDetail/acctResult/importModal/selectFieldModal.js b/pc4mobx/hrmSalary/pages/calculateDetail/acctResult/importModal/selectFieldModal.js index 2dc1d2f3..99d55f54 100644 --- a/pc4mobx/hrmSalary/pages/calculateDetail/acctResult/importModal/selectFieldModal.js +++ b/pc4mobx/hrmSalary/pages/calculateDetail/acctResult/importModal/selectFieldModal.js @@ -2,7 +2,7 @@ import React from "react"; import { Button, Col, Row } from "antd"; import { inject, observer } from "mobx-react"; import { WeaCheckbox, WeaDialog } from "ecCom"; -import { cacheImportField, cacheWelfareListField } from "../../../../apis/calculate"; +import { cacheImportField } from "../../../../apis/calculate"; @inject("calculateStore", "standingBookStore") @observer @@ -112,8 +112,6 @@ export default class SelectFieldModal extends React.Component { //薪资核算详情页面的导入表单字段缓存功能 if (window.location.hash.indexOf("calculateDetail") !== -1) { const { status } = await this.cacheImportField(); - } else if (window.location.hash.indexOf("standingBookDetail") !== -1) { - const { status } = await this.cacheWelfareListField(); } this.props.onAdd(this.fieldData); this.props.onCancel(); @@ -124,12 +122,6 @@ export default class SelectFieldModal extends React.Component { const salaryItems = _.map(_.filter(salaryItemList, it => !!it.checked), item => item.salaryItemId); return cacheImportField({ salaryItems }); }; - //社保台账导入缓存字段 - cacheWelfareListField = () => { - const salaryItemList = _.reduce(_.keys(this.fieldData), (pre, cur) => ([...pre, ...this.fieldData[cur]]), []); - const welfareNames = _.map(_.filter(salaryItemList, it => !!it.checked), item => item.fieldId); - return cacheWelfareListField({ welfareNames }); - }; // 标题checkbox点击 handleTitleCheckboxChange(value, flag) { diff --git a/pc4mobx/hrmSalary/pages/socialSecurityBenefits/standingBookDetail/components/importHeaderSetDialog.js b/pc4mobx/hrmSalary/pages/socialSecurityBenefits/standingBookDetail/components/importHeaderSetDialog.js new file mode 100644 index 00000000..3dd17ed2 --- /dev/null +++ b/pc4mobx/hrmSalary/pages/socialSecurityBenefits/standingBookDetail/components/importHeaderSetDialog.js @@ -0,0 +1,84 @@ +/* + * Author: 黎永顺 + * name: 社保福利台账-核算-导入表头设置 + * Description: + * Date: 2024/3/5 + */ +import React, { Component } from "react"; +import { Button, Col, Row } from "antd"; +import { WeaCheckbox, WeaDialog, WeaLocaleProvider } from "ecCom"; +import "./index.less"; + +const getLabel = WeaLocaleProvider.getLabel; + +class ImportHeaderSetDialog extends Component { + constructor(props) { + super(props); + this.state = { + itemsCheckeds: [], showOnlyChecked: false + }; + } + + componentWillReceiveProps(nextProps, nextContext) { + if (nextProps.visible !== this.props.visible && nextProps.visible) { + this.setState({ itemsCheckeds: nextProps.selectItems }); + } + } + + handleShowOnlyChecked = (showOnlyChecked) => this.setState({ showOnlyChecked: !!Number(showOnlyChecked) }); + handleSelectAll = (checked) => { + const { itemsByGroup } = this.props; + if (checked === "1") { + this.setState({ itemsCheckeds: _.map(itemsByGroup, it => it.fieldId) }); + } else { + this.setState({ itemsCheckeds: [] }); + } + }; + + render() { + const { showOnlyChecked, itemsCheckeds } = this.state; + const { itemsByGroup } = this.props; + let dataSource = _.map(itemsByGroup, it => { + return { ...it, checked: itemsCheckeds.includes(it.fieldId) }; + }); + if (showOnlyChecked) { + dataSource = _.filter(dataSource, it => !!it.checked); + } + return ( + this.props.onAdd(itemsCheckeds)}>{getLabel(111, "添加")}, + + ]} + bottomLeft={ + + + + + } + > + { + + { + !_.isEmpty(dataSource) ? + _.map(dataSource, it => { + const { fieldId, salaryItemName, checked } = it; + return + this.setState({ itemsCheckeds: _.xorWith(itemsCheckeds, [fieldId], _.isEqual) })}/> + ; + }) : 暂无数据 + } + + } + + ); + } +} + +export default ImportHeaderSetDialog; diff --git a/pc4mobx/hrmSalary/pages/socialSecurityBenefits/standingBookDetail/components/index.less b/pc4mobx/hrmSalary/pages/socialSecurityBenefits/standingBookDetail/components/index.less index 2ceecea0..235eba25 100644 --- a/pc4mobx/hrmSalary/pages/socialSecurityBenefits/standingBookDetail/components/index.less +++ b/pc4mobx/hrmSalary/pages/socialSecurityBenefits/standingBookDetail/components/index.less @@ -290,3 +290,21 @@ } } } + +//导入头部设置 +.headerSetWrapper { + .ant-modal-body { + .ant-row { + padding: 16px 25px; + } + } + + .ant-col-8 { + padding: 0 8px !important; + } + + .wea-content { + padding: 8px 16px 0; + } +} + diff --git a/pc4mobx/hrmSalary/pages/socialSecurityBenefits/standingBookDetail/components/makeupDifference.js b/pc4mobx/hrmSalary/pages/socialSecurityBenefits/standingBookDetail/components/makeupDifference.js index 057f8379..9ff5fb28 100644 --- a/pc4mobx/hrmSalary/pages/socialSecurityBenefits/standingBookDetail/components/makeupDifference.js +++ b/pc4mobx/hrmSalary/pages/socialSecurityBenefits/standingBookDetail/components/makeupDifference.js @@ -13,15 +13,23 @@ import * as API from "../../../../apis/standingBook"; import { calcPageNo } from "../../../../util"; import RegList from "./regList"; import RegEditDetial from "./regEditDetial"; -import AcctResultImportModal from "../../../calculateDetail/acctResult/importModal/acctResultImportModal"; import AddCompensationPersonnelDialog from "./addCompensationPersonnelDialog"; +import StandingBookCalcImportDialog from "./standingBookCalcImportDialog"; import "./index.less"; class MakeupDifference extends Component { constructor(props) { super(props); this.state = { - selectKey: [], fieldData: {}, loading: { save: false }, importDiffModal: { visible: false }, + selectKey: [], loading: { save: false }, + importDiffModal: { + visible: false, + fieldUrl: "getBalanceWelfareList", + tmpUrl: "exportSiaccountWelfarebalanceimporttemplatetetemplate", + cacheUrl: "cacheBalanceWelfareList", + importUrl: "importBalanceInsuranceDetail", + importparams: {} + }, returnEditPersonSlide: { title: "", editId: "", visible: false }, @@ -65,7 +73,12 @@ class MakeupDifference extends Component { }); break; case "import": - this.setState({ importDiffModal: { ...importDiffModal, visible: true } }); + this.setState({ + importDiffModal: { + ...importDiffModal, visible: true, + importparams: { billMonth: getQueryString("billMonth") } + } + }); break; case "export": const url = `${window.location.origin}/api/bs/hrmsalary/welfare/balance/export?billMonth=${billMonth}&paymentOrganization=${paymentOrganization}`; @@ -103,7 +116,7 @@ class MakeupDifference extends Component { render() { const billMonth = getQueryString("billMonth"); - const { selectKey, importDiffModal, fieldData, returnEditPersonSlide, addPersonalDialog } = this.state; + const { selectKey, importDiffModal, returnEditPersonSlide, addPersonalDialog } = this.state; return (
isRefresh && this.diffListRef.recessionList())} /> {/*导入补差*/} - { - importDiffModal.visible && - this.setState({ fieldData })} - onCancel={() => { - this.setState({ importDiffModal: { ...importDiffModal, visible: false }, fieldData: {} }, () => { - const name = this.regTopRef.state.name; - this.diffListRef.recessionList({ userName: name }); - }); - }} - isStandingBook - standingBookType="difference" - /> - } + this.setState({ + importDiffModal: { ...importDiffModal, visible: false } + }, () => isInit && this.diffListRef.recessionList())}/>
diff --git a/pc4mobx/hrmSalary/pages/socialSecurityBenefits/standingBookDetail/components/normal.js b/pc4mobx/hrmSalary/pages/socialSecurityBenefits/standingBookDetail/components/normal.js index 2fe404a5..45f1a728 100644 --- a/pc4mobx/hrmSalary/pages/socialSecurityBenefits/standingBookDetail/components/normal.js +++ b/pc4mobx/hrmSalary/pages/socialSecurityBenefits/standingBookDetail/components/normal.js @@ -11,7 +11,7 @@ import { WeaFormItem, WeaInput, WeaSearchGroup, WeaTab } from "ecCom"; import { calcPageNo } from "../../../../util"; import { getQueryString } from "../../../../util/url"; import ProgressModal from "../../../../components/progressModal"; -import AcctResultImportModal from "../../../calculateDetail/acctResult/importModal/acctResultImportModal"; +import StandingBookCalcImportDialog from "./standingBookCalcImportDialog"; import AdjustmentSlide from "./adjustmentSlide"; import { getCalculateProgress } from "../../../../apis/calculate"; import RegEditDetial from "./regEditDetial"; @@ -48,7 +48,8 @@ export default class NormalIndex extends Component { progress: 0, fieldData: {}, //选中的表单头信息 importParams: { //导入信息的弹框表示 - visible: false + visible: false, fieldUrl: "getWelfareList", tmpUrl: "exportSiaccountWelfareImporttemplate", + cacheUrl: "cacheWelfareListField", importUrl: "importInsuranceAcctDetail", importparams: {} }, returnEditPersonSlide: { title: "", @@ -473,7 +474,12 @@ export default class NormalIndex extends Component { ]; const btn4 = [ + onClick={() => this.setState({ + importParams: { + ...importParams, visible: true, + tmpUrl: selectedKey === "1" ? "exportSiaccountWelfareImporttemplate" : "exportSiaccountWelfaresupplyimporttemplatetemplate" + } + })}>导入数据 ]; const btn5 = [ @@ -544,29 +550,10 @@ export default class NormalIndex extends Component { progress={this.state.progress} /> {/*导入弹框*/} - { - importParams.visible && - { - this.setState({ - fieldData - }); - }} - onCancel={() => { - this.setState({ importParams: { ...importParams, visible: false }, fieldData: {} }, () => { - const { billMonth, selectedKey, paymentOrganization } = this.props; - const { current } = this.state; - selectedKey === "1" - ? this.getNormalList({ billMonth, current, paymentOrganization }) - : this.getSupplementaryList({ billMonth, current, paymentOrganization }); - }); - }} - isStandingBook - standingBookTabKey={selectedKey} - /> - } + this.setState({ + importParams: { ...importParams, visible: false } + }, () => isInit && this.handleSearch())}/> {/* table */}
diff --git a/pc4mobx/hrmSalary/pages/socialSecurityBenefits/standingBookDetail/components/standingBookCalcImportDialog.js b/pc4mobx/hrmSalary/pages/socialSecurityBenefits/standingBookDetail/components/standingBookCalcImportDialog.js new file mode 100644 index 00000000..0dc97e42 --- /dev/null +++ b/pc4mobx/hrmSalary/pages/socialSecurityBenefits/standingBookDetail/components/standingBookCalcImportDialog.js @@ -0,0 +1,136 @@ +/* + * Author: 黎永顺 + * name: 社保福利台账-核算-导入 + * Description: + * Date: 2024/3/5 + */ +import React, { Component } from "react"; +import { WeaLocaleProvider } from "ecCom"; +import { Badge, Button, message } from "antd"; +import ImportDialog from "../../../../components/importDialog"; +import ImportHeaderSetDialog from "./importHeaderSetDialog"; +import * as API from "../../../../apis/standingBook"; +import { getQueryString } from "../../../../util/url"; + +const getLabel = WeaLocaleProvider.getLabel; + +class StandingBookCalcImportDialog extends Component { + constructor(props) { + super(props); + this.state = { + headerFieldsDialog: { visible: false, itemsByGroup: [], selectItems: [] }, + importDialog: { + visible: false, title: "", nextloading: false, + link: null, importResult: {}, imageId: "", + previewUrl: "/api/bs/hrmsalary/siaccount/welfare/preview" + } + }; + } + + async componentWillReceiveProps(nextProps, nextContext) { + if (nextProps.visible !== this.props.visible && nextProps.visible) { + const { fieldUrl } = nextProps; + const { data } = await API[fieldUrl](); + this.setState({ + importDialog: { + ...this.state.importDialog, link: this.handleExportTemp, title: getLabel(24023, "数据导入") + }, + headerFieldsDialog: { + ...this.state.headerFieldsDialog, itemsByGroup: data, + selectItems: _.map(_.filter(data, k => k.checked), o => o.fieldId) + } + }); + } + this.setState({ importDialog: { ...this.state.importDialog, visible: nextProps.visible } }); + } + + handleImport = (payload) => { + const { importDialog, headerFieldsDialog: { selectItems } } = this.state; + if (_.isEmpty(selectItems)) { + message.error(getLabel(111, "请选择表头字段")); + } else { + const { importUrl, importparams = {} } = this.props; + this.setState({ importDialog: { ...importDialog, nextloading: true } }); + API[importUrl]({ ...payload, ...importparams }).then(({ data, status, errormsg }) => { + this.setState({ importDialog: { ...importDialog, nextloading: false } }); + if (status) { + this.setState({ + importDialog: { ...importDialog, ...payload, importResult: data } + }); + } else { + message.warning(errormsg); + } + }).catch(() => this.setState({ importDialog: { ...importDialog, nextloading: false } })); + } + }; + handleExportTemp = () => { + const { tmpUrl } = this.props; + const { headerFieldsDialog: { selectItems, itemsByGroup } } = this.state; + if (_.isEmpty(selectItems)) { + message.error(getLabel(111, "请选择表头字段")); + } else { + const billMonth = getQueryString("billMonth"); + const paymentOrganization = getQueryString("paymentOrganization"); + const payload = { + billMonth, + welfareNames: _.map(_.filter(itemsByGroup, k => selectItems.includes(k.fieldId)), o => o.salaryItemName), + paymentOrganization: Number(paymentOrganization) + }; + const promise = API[tmpUrl](payload); + } + }; + handleSelectedField = () => { + this.setState({ + headerFieldsDialog: { + ...this.state.headerFieldsDialog, visible: true + } + }); + }; + /* + * Author: 黎永顺 + * Description:表单选项 + * Params: + * Date: 2023/9/18 + */ + renderFormComponent = () => { + const { selectItems } = this.state.headerFieldsDialog; + return
+ + + +
; + }; + + render() { + const { importDialog, headerFieldsDialog } = this.state; + const { cacheUrl } = this.props; + return ( + + this.setState(({ + importDialog: { ...importDialog, importResult: {}, imageId: "" } + }))} + nextCallback={imageId => this.setState({ importDialog: { ...importDialog, imageId } })} + nextUplaodCallback={imageId => this.handleImport({ imageId })} + /> + {/*表头设置*/} + this.setState({ + headerFieldsDialog: { ...headerFieldsDialog, visible: false } + })} + onAdd={selectItems => this.setState({ + headerFieldsDialog: { ...headerFieldsDialog, visible: false, selectItems } + }, () => { + const { selectItems: welfareNames } = this.state.headerFieldsDialog; + const promise = API[cacheUrl]({ welfareNames }); + })} + /> + + ); + } +} + +export default StandingBookCalcImportDialog; From 87d699c59de4322524ae708639e94b34a595cc61 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=BB=8E=E6=B0=B8=E9=A1=BA?= <971387674@qq.com> Date: Wed, 6 Mar 2024 14:04:47 +0800 Subject: [PATCH 3/3] =?UTF-8?q?feature/2.10.1.2402.01-=E7=A4=BE=E4=BF=9D?= =?UTF-8?q?=E5=8F=B0=E8=B4=A6=E5=AF=BC=E5=85=A5=E7=BC=93=E5=AD=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../standingBookDetail/components/importHeaderSetDialog.js | 2 ++ 1 file changed, 2 insertions(+) diff --git a/pc4mobx/hrmSalary/pages/socialSecurityBenefits/standingBookDetail/components/importHeaderSetDialog.js b/pc4mobx/hrmSalary/pages/socialSecurityBenefits/standingBookDetail/components/importHeaderSetDialog.js index 3dd17ed2..2fe7cb3d 100644 --- a/pc4mobx/hrmSalary/pages/socialSecurityBenefits/standingBookDetail/components/importHeaderSetDialog.js +++ b/pc4mobx/hrmSalary/pages/socialSecurityBenefits/standingBookDetail/components/importHeaderSetDialog.js @@ -22,6 +22,8 @@ class ImportHeaderSetDialog extends Component { componentWillReceiveProps(nextProps, nextContext) { if (nextProps.visible !== this.props.visible && nextProps.visible) { this.setState({ itemsCheckeds: nextProps.selectItems }); + } else { + this.setState({ itemsCheckeds: [], showOnlyChecked: false }); } }