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

141 lines
3.9 KiB
JavaScript
Raw Normal View History

import React from "react";
import { inject, observer } from "mobx-react";
import { Button, message, Switch } from "antd";
import { WeaDialog, WeaInputSearch } from "ecCom";
import CustomTable from "../../../components/customTable";
2022-03-29 17:33:54 +08:00
@inject("ledgerStore")
2022-03-29 17:33:54 +08:00
@observer
export default class AddSalaryItemModal extends React.Component {
constructor(props) {
super(props);
this.state = {
searchValue: "",
selectedRowKeys: []
};
}
2022-03-29 17:33:54 +08:00
componentWillMount() {
const { ledgerStore: { listSalaryItem } } = this.props;
listSalaryItem();
}
2022-03-29 17:33:54 +08:00
// 增加编辑功能重写columns绑定事件
getColumns(columns) {
if (!columns) {
return [];
}
let newColumns = "";
newColumns = columns.map(column => {
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-04-20 15:28:40 +08:00
}
};
return newColumn;
});
return newColumns;
}
handleAdd() {
const { ledgerStore } = this.props;
const { addSalaryItemDataSource, addItemsToGroup, addExcludeIds } = ledgerStore;
const { selectedRowKeys } = this.state;
if (selectedRowKeys.length == 0) {
message.warning("未选择条目");
return;
2022-03-29 17:33:54 +08:00
}
let selectItems = [];
2022-03-29 17:33:54 +08:00
addSalaryItemDataSource.map(item => {
item = { ...item };
selectedRowKeys.map(key => {
if (item.id == key) {
item.salaryItemId = item.id;
item.key = item.id;
selectItems.push(item);
2022-03-29 17:33:54 +08:00
}
});
});
2022-03-29 17:33:54 +08:00
addItemsToGroup(this.props.title, selectItems);
this.props.onCancel();
}
2022-03-29 17:33:54 +08:00
handleSearch = (value) => {
const { ledgerStore: { listSalaryItem } } = this.props;
listSalaryItem(value);
};
2022-04-20 15:28:40 +08:00
onSelectChange = selectedRowKeys => {
this.setState({ selectedRowKeys });
};
2022-04-20 15:28:40 +08:00
// 分页
handleDataPageChange(value) {
const { ledgerStore: { listSalaryItem } } = this.props;
listSalaryItem(this.state.searchValue, value);
}
2022-04-20 15:28:40 +08:00
render() {
const { ledgerStore } = this.props;
const { addSalaryItemDataSource, addSalaryItemColumns, addSalaryItemPageInfo, loading } = ledgerStore;
const { searchValue, selectedRowKeys } = this.state;
2022-04-20 15:28:40 +08:00
const rowSelection = {
selectedRowKeys,
onChange: this.onSelectChange
};
2022-03-29 17:33:54 +08:00
return (
<WeaDialog
visible={this.props.visible}
onCancel={() => {
this.props.onCancel();
}}
title="添加薪资项目"
style={{ width: "80vw", height: 600 }}
buttons={[
<Button
type="primary"
onClick={() => {
this.handleAdd();
}}>添加</Button>
]}
>
<div style={{ display: "flex", justifyContent: "flex-end", alignItems: "center", padding: 20 }}>
<WeaInputSearch value={searchValue} onChange={(value) => {
this.setState({ searchValue: value });
}} onSearch={(value) => {
this.handleSearch(value);
}}/>
</div>
2022-04-20 15:28:40 +08:00
<div style={{ height: "calc(100% - 68px)", overflowY: "scroll" }}>
<CustomTable
loading={loading}
dataSource={addSalaryItemDataSource}
columns={this.getColumns(addSalaryItemColumns)}
rowSelection={rowSelection}
pagination={{
onChange: (value) => {
this.handleDataPageChange(value);
},
total: addSalaryItemPageInfo.total,
showTotal: (total) => `${total}`,
current: addSalaryItemPageInfo.pageNum
}}
/>
</div>
</WeaDialog>
);
}
}