import React from "react"; import { Button, Col, message, Row } from "antd"; import { WeaDatePicker, WeaDialog, WeaInput, WeaSelect, WeaTable } from "ecCom"; import { inject, observer } from "mobx-react"; import moment from "moment"; import "./index.less"; @inject("salaryFileStore") @observer export default class ChangeSalaryModal extends React.Component { constructor(props) { super(props); this.state = { inited: false, canOperator: false, selectedRowKeys: [], salaryArchiveItems: [ { key: "1", salaryItem: "", salaryBefore: "", adjustAfter: "" } ], request: { effectiveTime: moment(new Date()).format("YYYY-MM-DD"), salaryArchiveId: this.props.currentId, adjustReason: "", description: "" } }; } // 改变回调 handleChange(params) { let request = { ...this.state.request, ...params }; this.setState({ request }); } // 表格中薪资项目选择项下拉,改变事件 handleSalaryItemChange(item, value) { const { salaryFileStore: { getSalaryItemAdjustBeforeValue } } = this.props; const { salaryArchiveItems } = this.state; getSalaryItemAdjustBeforeValue({ salaryArchiveId: this.props.currentId, salaryItemId: value }).then((data) => { let dataSource = [...salaryArchiveItems]; dataSource.map(i => { if (i.key == item.key) { i.salaryItem = value; i.salaryBefore = data; } }); this.setState({ salaryArchiveItems: dataSource }); }); } // 调整后表格字段变化回调 handleSalaryAfterItemChange(item, value) { const { salaryArchiveItems } = this.state; let dataSource = [...salaryArchiveItems]; dataSource.map(i => { if (i.key == item.key) { i.adjustAfter = value; } }); this.setState({ salaryArchiveItems: dataSource }); } // 解析Columns getColumns() { const { canOperator } = this.state; const { salaryFileStore: { salaryItemChangeForm }, recordId } = this.props; const { salaryItemList } = salaryItemChangeForm; let { columns } = salaryItemChangeForm; return columns.map(item => { item = { ...item }; if (item.dataIndex == "salaryItem") { item.title = {item.title}; item.render = (text, record) => { return ( this.handleSalaryItemChange(record, value)}/> ); }; } else if (item.dataIndex == "adjustAfter") { item.title = {item.title}; item.render = (text, record) => { return ( { this.handleSalaryAfterItemChange(record, value); }} /> ); }; } return item; }); } // 添加按钮点击回调 handleAddItemClick() { const { salaryArchiveItems } = this.state; let result = [...salaryArchiveItems]; let lastKey = "1"; if (result.length > 0) { lastKey = parseInt(result[result.length - 1].key) + 1; } result.push({ key: lastKey + "", salaryItem: "", adjustBefore: "", adjustAfter: "" }); this.setState({ salaryArchiveItems: result }); } componentWillMount() { const { salaryFileStore: { salaryItemChangeForm, getSalaryItemForm, getSalaryItemFormByItemId }, currentId, recordId } = this.props; if (recordId) { getSalaryItemFormByItemId(recordId).then(data => { let request = { ...this.state.request }; request.effectiveTime = data.effectiveTime; request.adjustReason = data.adjustReason; request.description = data.description; this.setState({ canOperator: data.canOperator, salaryArchiveItems: data.dataSource, inited: true, request }); }); } else { getSalaryItemForm(currentId).then(() => { this.setState({ inited: true }); }); } } // 保存 handleSave() { const { salaryFileStore: { saveSalaryItem, editSingleSalaryItem, fetchSingleSalaryItemList, getArchiveForm }, recordId } = this.props; let saveRequest = { ...this.state.request }; const { salaryArchiveItems, canOperator } = this.state; if (salaryArchiveItems.length === 0) { message.warning("请添加调薪明细"); return; } saveRequest.salaryArchiveItems = salaryArchiveItems.map(item => { let result = {}; result.salaryItemId = item.salaryItem; result.adjustValue = item.adjustAfter; return result; }); if (!recordId) { saveSalaryItem(saveRequest).then(() => { getArchiveForm(this.props.currentId); fetchSingleSalaryItemList({ salaryArchiveId: this.props.currentId }); this.props.onCancel(); }); } else { editSingleSalaryItem({ ...saveRequest, salaryArchiveItemId: recordId, canOperator }).then(() => { getArchiveForm(this.props.currentId); fetchSingleSalaryItemList({ salaryArchiveId: this.props.currentId }); this.props.onCancel(); }); } } onSelectChange = selectedRowKeys => { this.setState({ selectedRowKeys }); }; // 批量删除回调 handleRemoveClick = () => { const { selectedRowKeys, salaryArchiveItems } = this.state; let result = [...salaryArchiveItems]; if (selectedRowKeys.length === 0) { message.warning("未选择条目"); } this.setState({ salaryArchiveItems: result.filter(item => selectedRowKeys.indexOf(item.key) < 0) }); }; render() { const { salaryFileStore: { salaryItemChangeForm }, recordId } = this.props; const { request, salaryArchiveItems, selectedRowKeys, canOperator } = this.state; const { effectiveTime, adjustReason, description } = request; const rowSelection = { selectedRowKeys, onChange: this.onSelectChange }; return ( { this.props.onCancel(); }} buttons={[]} >
生效日期 { this.handleChange({ effectiveTime: value }); }} /> 调整原因 this.handleChange({ adjustReason: value })} options={ !_.isEmpty(salaryItemChangeForm.adjustReasonList) ? [{ key: "", showname: "" }, ...salaryItemChangeForm.adjustReasonList] : [{ key: "", showname: "" }] } /> 说明 { this.handleChange({ description: value }); }} />
调薪明细 { !recordId &&
}
{ this.state.inited && }
); } }