import React from 'react' import { Row, Col, Table, Modal, Icon, Button, Select, message } from 'antd' const { Option } = Select import { WeaInput, WeaSelect, WeaDatePicker, WeaTable } from "ecCom" import { changeSalaryModalColumns, dataSource } from './columns' import RequiredLabelTip from '../../components/requiredLabelTip' import "./index.less" import { inject, observer } from 'mobx-react'; import moment from 'moment' @inject('salaryFileStore') @observer export default class ChangeSalaryModal extends React.Component { constructor(props) { super(props) this.state = { inited: 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; // alert("item.id : "+ item.id) // alert(JSON.stringify({salaryArchiveId: this.props.currentId, salaryItemId: item.id})) 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 {salaryFileStore: {salaryItemChangeForm} } = 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)}> { salaryItemList && salaryItemList.map(item => ( {item.showname} )) } ) } }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({ salaryArchiveItems: data.dataSource, inited: true, request }) }) } else { getSalaryItemForm(currentId).then(() => {this.setState({ inited: true })}) } } // 保存 handleSave() { const { salaryFileStore: {saveSalaryItem, fetchSingleSalaryItemList, getArchiveForm}} = this.props; let saveRequest = {...this.state.request} const { salaryArchiveItems } = 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 }) saveSalaryItem(saveRequest).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} } = this.props; const { request, salaryArchiveItems, selectedRowKeys } = this.state; const { effectiveTime, adjustReason, description } = request const rowSelection = { selectedRowKeys, onChange: this.onSelectChange, }; return ( {this.props.onCancel()}} footer={ { this.handleSave() }}>保存} > 生效日期 {this.handleChange({ effectiveTime: value })}} /> 调整原因 {/* { this.state.inited && {this.handleChange({ adjustReason: value })}} /> } */} this.handleChange({adjustReason: value})}> { salaryItemChangeForm.adjustReasonList && salaryItemChangeForm.adjustReasonList.map(item => ( {item.showname} )) } 说明 {this.handleChange({description: value})}} /> 调薪明细 {this.handleRemoveClick()}}/> {this.handleAddItemClick()}}/> { this.state.inited && } ) } }