/* * Author: 黎永顺 * name: 薪资核算-自定义导出字段弹框 * Description: * Date: 2023/7/17 */ import React, { Component } from "react"; import { Button, Col, message, Row } from "antd"; import { WeaCheckbox, WeaDialog, WeaLocaleProvider, WeaSearchGroup } from "ecCom"; import { customCacheExportField } from "../../apis/calculate"; import { convertToUrlString, getQueryString } from "../../util/url"; import "./acctResult/importModal/index.less"; const { getLabel } = WeaLocaleProvider; class CustomExportDialog 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: !_.isEmpty(nextProps.checkItems) ? nextProps.checkItems : [] }); } } customExportClick = () => { const { searchItemsValue } = this.props; const { itemsCheckeds } = this.state; customCacheExportField({ salaryItems: _.map(itemsCheckeds, it => it.toString()) }).then(({ status, errorMsg }) => { if (status) { const { consolidatedTaxation = "0", ...extra } = searchItemsValue; const payload = { ...extra, consolidatedTaxation: consolidatedTaxation === "0" ? "" : consolidatedTaxation }; window.open( `/api/bs/hrmsalary/salaryacct/acctresult/exportWithCustomFields?salaryAcctRecordId=${getQueryString("id")}&ids=&${convertToUrlString(payload)}&salaryItemIds=${itemsCheckeds.join(",")}` ); } else { message.error(errorMsg); } }); }; handleShowOnlyChecked = (showOnlyChecked) => this.setState({ showOnlyChecked: !!Number(showOnlyChecked) }); handleSelectGroupAll = (groupId, checked) => { const { itemsCheckeds } = this.state; const { itemsByGroup } = this.props; _.map(itemsByGroup, item => { if (item.salarySobItemGroupId === groupId) { if (!!Number(checked)) { this.setState({ itemsCheckeds: [...itemsCheckeds, ..._.map(item.salaryItems, child => child.salaryItemId)] }); } else { this.setState({ itemsCheckeds: _.differenceWith(itemsCheckeds, _.map(item.salaryItems, child => child.salaryItemId), _.isEqual) }); } } }); }; render() { const { showOnlyChecked, itemsCheckeds } = this.state; const { itemsByGroup } = this.props; let dataSource = _.map(itemsByGroup, item => { return { ...item, salaryItems: _.map(item.salaryItems, child => { return { ...child, checked: itemsCheckeds.includes(child.salaryItemId) }; }) }; }); if (showOnlyChecked) { dataSource = _.map(dataSource, item => { return { ...item, salaryItems: _.filter(item.salaryItems, it => !!it.checked) }; }); } return ( {getLabel(17416, "导出")}, ]} bottomLeft={} > { _.map(dataSource, item => { const { salarySobItemGroupName, salaryItems, salarySobItemGroupId } = item; const value = _.every(salaryItems, it => !!it.checked) ? "1" : "0"; return this.handleSelectGroupAll(salarySobItemGroupId, val)}/>}> { !_.isEmpty(salaryItems) ? _.map(salaryItems, it => { const { salaryItemId, salaryItemName, checked } = it; return this.setState({ itemsCheckeds: _.xorWith(itemsCheckeds, [salaryItemId], _.isEqual) })}/> ; }) : {getLabel(83553, "暂无数据")} } ; }) } ); } } export default CustomExportDialog;