salary-management-front/pc4mobx/hrmSalary/pages/ledger/calcRulesForm.js

122 lines
3.6 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

import React from "react";
import { Button } from 'antd';
import { WeaTable } from "ecCom";
import { slideStep4Columns } from "./columns";
import "./index.less";
import RuleEditModal from "./step4/RuleEditModal";
import { inject, observer } from "mobx-react";
import { toJS } from 'mobx';
@inject("ledgerStore")
@observer
export default class CalRulesForm extends React.Component {
constructor(props) {
super(props);
this.state = {
modalVisible: false,
slideStep4Columns: slideStep4Columns.map(item => {
item = { ...item };
if (item.key == "cz") {
item.render = (text, record) => {
return (
<a onClick={() => {
this.handleDeleteItem(record);
}}>删除</a>
);
};
}
return item;
})
};
}
componentWillMount() {
const { ledgerStore: { listAdjustmentRule } } = this.props;
listAdjustmentRule();
}
handleSave(params) {
const { ledgerStore: { sobItemRuleDataSource, setSobItemRuleDataSource } } = this.props;
let dataSource = [...sobItemRuleDataSource];
dataSource.push(params);
setSobItemRuleDataSource(dataSource);
}
handleDeleteItem(record) {
const { ledgerStore: { sobItemRuleDataSource, setSobItemRuleDataSource } } = this.props;
let dataSource = [...sobItemRuleDataSource];
setSobItemRuleDataSource(dataSource.filter(item => item.salaryItemId != record.key));
}
convertAdjustmentType(index) {
let nameList = {
1: '取调薪前薪资',
2: '取调薪后薪资',
3: '平均值',
4: '分段计薪',
};
return nameList[Number(index)];
}
getSalaryItemName(salaryItemId) {
const { ledgerStore: { ruleOptionList } } = this.props;
let result = "";
ruleOptionList.map(item => {
if (item.key == salaryItemId) {
result = item.showname;
}
});
return result;
}
convertDataSource(dataSoruce) {
let result = [...dataSoruce];
return result.map(item => {
let resultStr = "";
resultStr += `${item.dayOfMonth}号(含)之前调薪,${this.convertAdjustmentType(item.beforeAdjustmentType)}${item.dayOfMonth}号之后调薪,${this.convertAdjustmentType(item.afterAdjustmentType)}`;
return {
key: item.salaryItemId,
salaryItemId: item.salaryItemId,
salaryItemName: item.salaryItemName ? item.salaryItemName : this.getSalaryItemName(item.salaryItemId),
rule: resultStr
};
});
}
render() {
const { ledgerStore: { sobItemRuleDataSource, baseInfoRequest } } = this.props;
const { canEdit = "true" } = baseInfoRequest;
let datas = this.convertDataSource(sobItemRuleDataSource);
return (
<div className="calRulesForm">
<div className="headerIcon">
{
canEdit === "true" &&
<Button
type="primary"
size="small"
style={{ marginRight: 10 }}
onClick={() => {
this.setState({ modalVisible: true });
}}
><span className="icon-coms-Add-to-hot" title="添加"></span></Button>
}
</div>
<div className="tableWrapper">
<WeaTable dataSource={datas} columns={this.state.slideStep4Columns} pagination={false}/>
</div>
{
this.state.modalVisible && <RuleEditModal
visible={this.state.modalVisible}
onCancel={() => this.setState({ modalVisible: false })}
onSave={(params) => {
this.handleSave(params);
}}
/>
}
</div>
);
}
}