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"; @inject("calculateStore", "standingBookStore") @observer export default class SelectFieldModal extends React.Component { constructor(props) { super(props); this.state = { fieldData: {} }; } componentWillMount() { const { calculateStore: { getImportField }, standingBookStore: { getWelfareList, getBalanceWelfareList }, isStandingBook, standingBookType } = this.props; if (!isStandingBook) { getImportField(this.props.id).then(data => { let fieldData = {}; let formulaItems = []; formulaItems = data.formulaItems; if (this.props.fieldData.formulaItems) { formulaItems = this.props.fieldData.formulaItems; } let inputItems = []; inputItems = data.inputItems; if (this.props.fieldData.inputItems) { inputItems = this.props.fieldData.inputItems; } let sqlItems = []; sqlItems = data.sqlItems; if (this.props.fieldData.inputItems) { sqlItems = this.props.fieldData.sqlItems; } fieldData.formulaItems = _.map(formulaItems, item => { if (data.checkItems.includes(item.salaryItemId)) { return { ...item, checked: true }; } return { ...item }; }); fieldData.inputItems = _.map(inputItems, item => { if (data.checkItems.includes(item.salaryItemId)) { return { ...item, checked: true }; } return { ...item }; }); fieldData.sqlItems = _.map(sqlItems, item => { if (data.checkItems.includes(item.salaryItemId)) { return { ...item, checked: true }; } return { ...item }; }); this.setState({ fieldData }); this.fieldData = fieldData; }); } else { const APIFox = standingBookType === "difference" ? getBalanceWelfareList : getWelfareList; APIFox().then(result => { let fieldData = {}; let formulaItems = []; formulaItems = _.map(result, it => ({ ...it, salaryItemId: it.salaryItemName })); if (this.props.fieldData.formulaItems) { formulaItems = this.props.fieldData.formulaItems; } fieldData.formulaItems = formulaItems; this.setState({ fieldData }); this.fieldData = fieldData; }); } } // 公式项改变 handleFormalChange(item, value, flag) { item.checked = value == 1 ? true : false; let fieldData = { ...this.state.fieldData }; if (flag === "formluma") { // 公式项 fieldData.formulaItems.map(fieldItem => { if (item.salaryItemId === fieldItem.salaryItemId) { fieldItem.checked = item.checked; } }); } else if (flag === "inputs") { // 输入项 fieldData.inputItems.map(fieldItem => { if (item.salaryItemId === fieldItem.salaryItemId) { fieldItem.checked = item.checked; } }); } else if (flag === "sql") { // sql项 fieldData.sqlItems.map(fieldItem => { if (item.salaryItemId === fieldItem.salaryItemId) { fieldItem.checked = item.checked; } }); } this.setState({ fieldData }); this.fieldData = fieldData; } // 添加按钮点击回调 handleAddClick = async () => { //薪资核算详情页面的导入表单字段缓存功能 if (window.location.hash.indexOf("calculateDetail") !== -1) { const { status } = await this.cacheImportField(); } 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 }); }; // 标题checkbox点击 handleTitleCheckboxChange(value, flag) { let checked = value == 1 ? true : false; let fieldData = { ...this.state.fieldData }; if (flag === "formula") { fieldData.formulaItems.map(fieldItem => { fieldItem.checked = checked; }); } else if (flag === "input") { fieldData.inputItems.map(fieldItem => { fieldItem.checked = checked; }); } else if (flag === "sql") { fieldData.sqlItems.map(fieldItem => { fieldItem.checked = checked; }); } this.setState({ fieldData }); this.fieldData = fieldData; } // 只显示已选中 showSelectedChange(value) { let checked = value == 1 ? true : false; let fieldData = { ...this.fieldData }; if (checked) { if (fieldData.formulaItems) { fieldData.formulaItems = fieldData.formulaItems.filter(fieldItem => fieldItem.checked); } if (fieldData.inputItems) { fieldData.inputItems = fieldData.inputItems.filter(fieldItem => fieldItem.checked); } if (fieldData.sqlItems) { fieldData.sqlItems = fieldData.sqlItems.filter(fieldItem => fieldItem.checked); } } this.setState({ fieldData }); } render() { const { fieldData } = this.state; const { isStandingBook } = this.props; return ( { this.props.onCancel(); }} buttons={[ ]} >
{ !_.isEmpty(fieldData.formulaItems) &&
{ this.handleTitleCheckboxChange(value, "formula"); }}/>
{fieldData.formulaItems && fieldData.formulaItems.map(item => ( { this.handleFormalChange(item, value, "formula"); }}/> ))}
} { !_.isEmpty(fieldData.inputItems) &&
{ this.handleTitleCheckboxChange(value, "input"); }}/>
{fieldData.inputItems && fieldData.inputItems.map(item => ( { this.handleFormalChange(item, value, "input"); }}/> ))}
} { !_.isEmpty(fieldData.sqlItems) &&
{ this.handleTitleCheckboxChange(value, "sql"); }}/>
{fieldData.sqlItems && fieldData.sqlItems.map(item => ( { this.handleFormalChange(item, value, "sql"); }}/> ))}
}
{ this.showSelectedChange(value); }}/>
); } }