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

218 lines
6.3 KiB
JavaScript

import React from "react";
import { Button, Icon } from "antd";
import { WeaHelpfulTip } from "ecCom";
import "./index.less";
import AddCategoryModal from "./step3/AddCategoryModal";
import { inject, observer } from "mobx-react";
import { toJS } from "mobx";
import CanMoveItem from "./step3/canMoveItem";
import UserInfoSelected from "./step3/UserInfoSelect";
import PreviewSalaryModal from "./step3/previewSalaryModal";
@inject("ledgerStore")
@observer
export default class SalaryItemForm extends React.Component {
constructor(props) {
super(props);
this.state = {
addCategoryVisible: false,
previewVisible: false,
date: ''
};
const { ledgerStore: { empFieldList } } = this.props;
empFieldList();
}
componentWillMount() {
const { ledgerStore: { getLedgerItemForm } } = this.props;
getLedgerItemForm();
}
handleAddCategorySave(name) {
const { ledgerStore: { addItemGroup } } = this.props;
addItemGroup(name);
}
handleCanMoveItemChange(dataSource, item) {
const { ledgerStore: { itemGroups, setItemGroups } } = this.props;
let groups = [...itemGroups];
groups.map(i => {
if (i.title == item.title) {
item.items = dataSource;
}
});
setItemGroups(groups);
this.setState({date: new Date()})
}
// 薪资项目
handleItemDataSourceChange(dataSource, item) {
const { ledgerStore: { itemGroups, setItemGroups } } = this.props;
let newItemGroups = [...itemGroups];
newItemGroups.map(group => {
if (group.id == item.id) {
group.items = dataSource;
}
});
setItemGroups(newItemGroups);
}
// 预览点击事件
handlePreview() {
this.setState({ previewVisible: true });
}
// 修改薪资分类标题回调
handleItemTitleChange(item, value) {
const { ledgerStore: { itemGroups, setItemGroups } } = this.props;
let newItemGroups = [...itemGroups];
newItemGroups.map(group => {
if (group.id == item.id) {
group.name = value;
}
});
setItemGroups(newItemGroups);
}
// 删除分类回调
handleGroupDelete(item) {
const { ledgerStore: { itemGroups, setItemGroups } } = this.props;
let newItemGroups = [...itemGroups];
newItemGroups = newItemGroups.filter(group => group.id !== item.id);
setItemGroups(newItemGroups);
}
// 修改项目组数据顺序
handleUpgo = (index) => {
const { ledgerStore: { itemGroups, setItemGroups } } = this.props;
let newItemGroups = [...itemGroups];
if (index !== 0) {
newItemGroups[index] = newItemGroups.splice(index - 1, 1, newItemGroups[index])[0];
} else {
newItemGroups.push(newItemGroups.shift());
}
setItemGroups(_.map(newItemGroups, (it, idx) => ({
...it,
sortedIndex: it.sortedIndex ? idx : undefined
})));
};
handleDowngo = (index) => {
const { ledgerStore: { itemGroups, setItemGroups } } = this.props;
let newItemGroups = [...itemGroups];
if (index !== newItemGroups.length - 1) {
newItemGroups[index] = newItemGroups.splice(index + 1, 1, newItemGroups[index])[0];
} else {
newItemGroups.unshift(newItemGroups.splice(index, 1)[0]);
}
setItemGroups(_.map(newItemGroups, (it, idx) => ({
...it,
sortedIndex: it.sortedIndex ? idx : undefined
})));
};
render() {
const {
ledgerStore: {
itemGroups,
setAddCategoryVisible,
addCategoryVisible,
baseInfoRequest
}
} = this.props;
const { canEdit = "true" } = baseInfoRequest;
const { previewVisible } = this.state;
return (
<div className="salaryItemForm">
<div className="btnBar">
<div className="btns">
<Button
type="primary"
onClick={() => {
setAddCategoryVisible(true);
}}
disabled={canEdit !== "true"}>
新增分类
</Button>
<Button
type="primary"
style={{ marginLeft: "10px" }}
onClick={() => {
this.handlePreview();
}}
disabled={canEdit !== "true"}>
预览
</Button>
</div>
</div>
<div className="userInfoWrapper">
<div>
<span>
<span>员工基本信息</span>
<WeaHelpfulTip
style={{ marginLeft: "10px" }}
width={200}
title="姓名、部门、个税扣缴义务人为必须项,不可删除"
placement="topLeft"
/>
</span>
<div className="rightBtnsWrapper">
<i
className="icon-coms-down2"
style={{ cursor: "pointer",fontSize: 18 }}
/>
</div>
</div>
<UserInfoSelected/>
</div>
{itemGroups &&
itemGroups.map((item, index) => {
if (item.items) {
return (
<CanMoveItem
disabled={canEdit !== "true"}
dataSource={toJS(item.items)}
onUpgo={this.handleUpgo}
onDowngo={this.handleDowngo}
onDataSourceChange={dataSource => {
this.handleItemDataSourceChange(dataSource, item);
}}
title={item.name}
sortedIndex={index}
onGroupDelete={() => {
this.handleGroupDelete(item);
}}
onTitleChange={value => {
this.handleItemTitleChange(item, value);
}}
onChange={dataSource => {
this.handleCanMoveItemChange(dataSource, item);
}}
/>
);
}
return "";
})}
{addCategoryVisible &&
<AddCategoryModal
onSave={value => {
this.handleAddCategorySave(value);
}}
visible={addCategoryVisible}
onCancel={() => {
setAddCategoryVisible(false);
}}
/>}
{previewVisible &&
<PreviewSalaryModal
visible={previewVisible}
onCancel={() => {
this.setState({ previewVisible: false });
}}
/>}
</div>
);
}
}