/* * Author: 黎永顺 * name: 薪资核算-自定义导出 * Description: * Date: 2023/9/18 */ import React, { Component } from "react"; import { Button, Col, message, Row } from "antd"; import { inject, observer } from "mobx-react"; import { WeaCheckbox, WeaDialog, WeaLocaleProvider, WeaSearchGroup, WeaSelect } from "ecCom"; import ExpTempManagementDialog from "../expTempManagementDialog"; import { customCacheExportField, getExportField, getExportTemplateForm, getExportTemplateList } from "../../../../../apis/calculate"; import { convertToUrlString } from "../../../../../util/url"; import "./index.less"; import TempDialog from "../expFieldsSetDialog/tempDialog"; const { getLabel } = WeaLocaleProvider; @inject("calculateStore") @observer class Index extends Component { constructor(props) { super(props); this.state = { itemsCheckeds: [], showOnlyChecked: false, tempMangeDialog: { visible: false, salaryAcctRecordId: "" }, tempDialog: { visible: false, salaryAcctRecordId: "", id: "", salaryItemIds: [] }, tempOptions: [ { key: "NULL", showname: "" }, { key: "system", selected: true, showname: getLabel(111, "系统模板") } ] }; } async componentWillReceiveProps(nextProps, nextContext) { if (nextProps.visible !== this.props.visible && nextProps.visible) { this.setState({ itemsCheckeds: !_.isEmpty(nextProps.checkItems) ? nextProps.checkItems : [] }, () => this.getExportTemplateList(nextProps)); } else { this.setState({ tempOptions: [ { key: "NULL", showname: "" }, { key: "system", selected: true, showname: getLabel(111, "系统模板") } ] }); } } getExportTemplateList = (props) => { const { salaryAcctRecordId } = props; getExportTemplateList({ salaryAcctRecordId }).then(({ status, data }) => { if (status) { const { pageInfo: { list } } = data; this.setState({ tempOptions: [ ...this.state.tempOptions, ..._.map(list, o => ({ key: String(o.id), showname: o.templateName })) ] }); } }); }; customExportClick = () => { const { calculateStore: { ECSearchForm }, salaryAcctRecordId } = this.props; const { itemsCheckeds } = this.state; customCacheExportField({ salaryItems: _.map(itemsCheckeds, it => it.toString()) }).then(({ status, errorMsg }) => { if (status) { const { consolidatedTaxation = "0", ...extra } = ECSearchForm.getFormParams(); const payload = { ...extra, consolidatedTaxation: consolidatedTaxation === "0" ? "" : consolidatedTaxation }; window.open( `/api/bs/hrmsalary/salaryacct/acctresult/exportWithCustomFields?salaryAcctRecordId=${salaryAcctRecordId}&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) }); } } }); }; handleChangeExpTemp = async (id) => { switch (id) { case "system": const { salaryAcctRecordId } = this.props; const { data: { checkItems: checkeds } } = await getExportField({ salaryAcctRecordId }); this.setState({ itemsCheckeds: checkeds }); break; case "NULL": this.setState({ itemsCheckeds: [] }); break; default: const { data: { checkItems } } = await getExportTemplateForm({ id }); this.setState({ itemsCheckeds: _.map(checkItems, o => parseInt(o)) }); break; } }; render() { const { showOnlyChecked, itemsCheckeds, tempMangeDialog, tempDialog, tempOptions } = this.state; const { itemsByGroup, salaryAcctRecordId } = 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) }; }); } const titleComp =
{getLabel(111, "选择字段")}
; 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, "暂无数据")} } ; }) } this.setState({ tempMangeDialog: { ...tempMangeDialog, visible: false } }, () => this.getExportTemplateList(this.props))} /> {/*模板保存*/} this.setState({ tempDialog: { ...tempDialog, visible: false } }, () => this.getExportTemplateList(this.props))}/> ); } } export default Index;