salary-management-front/pc4mobx/hrmSalary/pages/ledger/step3/AddSalaryItemModal.js

136 lines
5.0 KiB
JavaScript
Raw Normal View History

2022-03-29 17:33:54 +08:00
import React from 'react'
import { inject, observer } from 'mobx-react';
import { Modal, Button, message, Switch } from 'antd'
2022-04-20 15:28:40 +08:00
import { WeaInputSearch, WeaTable } from 'ecCom'
2022-03-29 17:33:54 +08:00
import { WeaTableNew } from "comsMobx"
import { toJS } from 'mobx'
2022-04-27 19:27:23 +08:00
import CustomTable from '../../../components/customTable'
2022-03-29 17:33:54 +08:00
@inject('ledgerStore')
@observer
export default class AddSalaryItemModal extends React.Component {
constructor(props) {
super(props)
this.state = {
2022-04-20 15:28:40 +08:00
searchValue: "",
selectedRowKeys:[]
2022-03-29 17:33:54 +08:00
}
}
componentWillMount() {
const { ledgerStore: {listSalaryItem}} = this.props;
listSalaryItem()
}
// 增加编辑功能重写columns绑定事件
2022-04-27 19:27:23 +08:00
getColumns(columns) {
2022-04-20 15:28:40 +08:00
if(!columns) {
return []
}
2022-03-29 17:33:54 +08:00
let newColumns = '';
newColumns = columns.map(column => {
2022-04-27 19:27:23 +08:00
let newColumn = column;
newColumn.render = (text, record, index) => { //前端元素转义
let valueSpan = record[newColumn.dataIndex + "span"] !== undefined ? record[newColumn.dataIndex + "span"] : record[newColumn.dataIndex];
switch(newColumn.dataIndex) {
case "useDefault":
case "useInEmployeeSalary":
return <Switch checked={text == 1}/>
default:
return <div dangerouslySetInnerHTML={{ __html: valueSpan }} />
}
2022-03-29 17:33:54 +08:00
}
2022-04-27 19:27:23 +08:00
return newColumn;
2022-03-29 17:33:54 +08:00
});
return newColumns;
}
handleAdd() {
const { ledgerStore } = this.props;
2022-04-20 15:28:40 +08:00
const { addSalaryItemDataSource, addItemsToGroup, addExcludeIds } = ledgerStore
const { selectedRowKeys } = this.state;
2022-03-29 17:33:54 +08:00
if(selectedRowKeys.length == 0) {
message.warning("未选择条目")
}
let selectItems = []
2022-04-19 19:55:16 +08:00
2022-04-20 15:28:40 +08:00
addSalaryItemDataSource.map(item => {
2022-03-29 17:33:54 +08:00
selectedRowKeys.map(key => {
if(item.id == key) {
2022-04-19 19:55:16 +08:00
item.salaryItemId = item.id
2022-03-29 17:33:54 +08:00
selectItems.push(item)
}
})
})
2022-04-20 15:28:40 +08:00
2022-03-29 17:33:54 +08:00
addItemsToGroup(this.props.title, selectItems)
this.props.onCancel();
}
handleSearch = (value) => {
const { ledgerStore: {listSalaryItem}} = this.props
listSalaryItem(value)
}
2022-04-20 15:28:40 +08:00
onSelectChange = selectedRowKeys => {
this.setState({ selectedRowKeys });
}
2022-04-27 19:27:23 +08:00
// 分页
handleDataPageChange(value) {
const { ledgerStore: {listSalaryItem}} = this.props;
listSalaryItem(this.state.searchValue, value)
}
2022-04-20 15:28:40 +08:00
2022-03-29 17:33:54 +08:00
render() {
const { ledgerStore } = this.props;
2022-04-27 19:27:23 +08:00
const { addSalaryItemDataSource, addSalaryItemColumns, addSalaryItemPageInfo,loading } = ledgerStore
2022-04-20 15:28:40 +08:00
const { searchValue, selectedRowKeys } = this.state;
const rowSelection = {
selectedRowKeys,
onChange: this.onSelectChange,
};
2022-03-29 17:33:54 +08:00
return (
<Modal
2022-04-27 19:27:23 +08:00
visible={this.props.visible} onCancel={() => {this.props.onCancel()}} width={900} height={600}
style={{top: 20}}
2022-03-29 17:33:54 +08:00
footer={null}
>
<div style={{height: "47px", lineHeight: '47px'}}>
<span style={{marginLeft: "10px", fontSize: '14px'}}>添加薪资项目</span>
<div style={{float: "right", marginRight: "40px"}}>
<Button type="primary" style={{marginRight: '10px'}} onClick={() => {this.handleAdd()}}>添加</Button>
<WeaInputSearch value={searchValue} onChange={(value) => {this.setState({searchValue: value})}} onSearch={(value) => {this.handleSearch(value)}}/>
</div>
</div>
2022-04-27 19:27:23 +08:00
<div style={{margin: "10px", height: "400px", overflowY: "scroll"}}>
2022-04-20 15:28:40 +08:00
{/* <WeaTable // table内部做了loading加载处理页面就不需要再加了
2022-03-29 17:33:54 +08:00
comsWeaTableStore={salaryItemTableStore} // table store
hasOrder={true} // 是否启用排序
needScroll={true} // 是否启用table内部列表滚动将自适应到父级高度
getColumns={this.getColumns}
// onOperatesClick={this.onOperatesClick.bind(this)}
2022-04-20 15:28:40 +08:00
/> */}
2022-04-27 19:27:23 +08:00
<CustomTable
loading={loading}
2022-04-20 15:28:40 +08:00
dataSource={addSalaryItemDataSource}
columns={this.getColumns(addSalaryItemColumns)}
rowSelection={rowSelection}
2022-04-27 19:27:23 +08:00
pagination={{
onChange: (value) => {this.handleDataPageChange(value)},
total: addSalaryItemPageInfo.total,
2022-05-30 17:30:53 +08:00
showTotal: (total) => `${total}`,
2022-04-27 19:27:23 +08:00
current: addSalaryItemPageInfo.pageNum
}}
2022-03-29 17:33:54 +08:00
/>
</div>
</Modal>
)
}
}