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

209 lines
7.1 KiB
JavaScript
Raw Normal View History

2022-03-29 17:33:54 +08:00
import React from 'react'
import { Icon, Table, message, Modal } from 'antd'
2022-04-25 10:03:07 +08:00
import { WeaTable } from 'ecCom'
2022-03-29 17:33:54 +08:00
import { slideStep3Columns } from '../columns'
import AddSalaryItemModal from './AddSalaryItemModal'
import { inject, observer } from 'mobx-react';
2022-04-20 15:28:40 +08:00
import FormalFormModal from '../../salaryItem/formalFormModal'
2022-05-13 15:25:21 +08:00
import AddCategoryModal from '../step3/AddCategoryModal'
2022-06-07 10:22:06 +08:00
import { toJS } from 'mobx';
2022-03-29 17:33:54 +08:00
@inject('ledgerStore')
@observer
export default class CanMoveItem extends React.Component {
constructor(props) {
super(props)
2022-06-07 10:22:06 +08:00
let columns = slideStep3Columns
.map(item => {
2022-04-20 15:28:40 +08:00
item = {...item}
if(item.key == "formulaContent") {
item.render = (text, record) => {
if(record.canEdit) {
return (
<a onClick={() => {
2022-04-27 14:25:59 +08:00
this.handleFormulaClick(record.formulaId, record)
2022-04-20 15:28:40 +08:00
}}>{text}</a>
)
} else {
return (
<span>{text}</span>
)
}
}
}
return item;
})
2022-03-29 17:33:54 +08:00
this.state = {
addItemVisible: false,
showContent: true,
2022-04-20 15:28:40 +08:00
selectedRowKeys: [],
columns,
2022-05-13 15:25:21 +08:00
formalModalVisible: false,
addCategoryVisible: false
2022-03-29 17:33:54 +08:00
}
2022-04-20 15:28:40 +08:00
this.formulaId = ""
2022-04-27 14:25:59 +08:00
this.record = {}
2022-05-13 15:25:21 +08:00
this.title = ""
2022-04-20 15:28:40 +08:00
}
// 编辑公式
2022-04-27 14:25:59 +08:00
handleFormulaClick(formulaId, record) {
2022-04-20 15:28:40 +08:00
this.formulaId = formulaId
2022-04-27 14:25:59 +08:00
this.record = record
2022-04-20 15:28:40 +08:00
this.setState({
formalModalVisible: true
})
2022-03-29 17:33:54 +08:00
}
2022-04-20 15:28:40 +08:00
2022-03-29 17:33:54 +08:00
handleTiggleContent() {
this.setState({showContent: !this.state.showContent})
}
onSelectChange = selectedRowKeys => {
this.setState({ selectedRowKeys });
};
// 删除
handleDelete = () => {
const { selectedRowKeys } = this.state;
if(selectedRowKeys.length == 0) {
message.warning("为选择任何条目")
return
}
Modal.confirm({
title: '信息确认',
content: '确认删除',
onOk:() => {
const {dataSource} = this.props;
let result = [...dataSource]
this.props.onChange(result.filter(item => selectedRowKeys.indexOf(item.key) < 0))
},
onCancel: () => {
},
});
2022-04-20 15:28:40 +08:00
}
2022-03-29 17:33:54 +08:00
2022-04-20 15:28:40 +08:00
// 保存
handleSaveFormal(data) {
2022-04-27 14:25:59 +08:00
let record = {...this.record}
record.formulaId = data.id
let dataSource = [...this.props.dataSource]
dataSource.map(item => {
if(item.id == record.id) {
item.formulaId = data.id
item.formulaContent = data.formula
}
})
this.props.onDataSourceChange(dataSource)
2022-03-29 17:33:54 +08:00
}
2022-05-13 15:25:21 +08:00
// 编辑分类名称
handleUpdateCategorySave(name) {
this.props.onTitleChange && this.props.onTitleChange(name)
this.setState({
addCategoryVisible: false
})
}
// 修改分类名称,弹出修改弹出
handleEditGroupIconClick(title) {
this.title = title
this.setState({addCategoryVisible : true})
}
// 删除分类回调
handleDeleteGroupIconClick() {
Modal.confirm({
title: '信息确认',
content: '确认删除',
onOk:() => {
this.props.onGroupDelete && this.props.onGroupDelete()
},
onCancel: () => {
},
});
2022-05-31 18:51:23 +08:00
}
handleTableDrop = (datas) => {
2022-06-07 10:22:06 +08:00
// TODO
2022-05-31 18:51:23 +08:00
console.log("datas:", datas);
2022-05-13 15:25:21 +08:00
}
2022-03-29 17:33:54 +08:00
render() {
const {ledgerStore: {setAddItemVisible, addItemVisible}} = this.props;
2022-05-13 15:25:21 +08:00
const { selectedRowKeys, formalModalVisible, addCategoryVisible } = this.state;
2022-03-29 17:33:54 +08:00
const rowSelection = {
selectedRowKeys,
onChange: this.onSelectChange,
2022-05-13 15:25:21 +08:00
getCheckboxProps: (record) => ({
disabled: !record.canDelete,
}),
2022-03-29 17:33:54 +08:00
};
return (
<div className="tableItemWrapper">
2022-04-27 19:27:23 +08:00
<div style={{padding: "10px"}}>
2022-05-13 15:25:21 +08:00
<span className="itemTitle">{this.props.title}
{
this.props.title !== "未分类" && <span>
<i className="icon-coms-edit" style={{marginLeft: "10px", marginRight: "10px", cursor:"pointer"}} onClick={() => {this.handleEditGroupIconClick(this.props.title)}}/>
<i className="icon-coms-Delete" style={{cursor:"pointer"}} onClick={() => {this.handleDeleteGroupIconClick()}}/>
</span>
}
</span>
2022-03-29 17:33:54 +08:00
<span className="rightBtnsWrapper">
<Icon className="iconItem" type="minus-square" onClick={() => {this.handleDelete()}}/>
<Icon className="iconItem" type="plus-square" onClick={() => { this.setState({addItemVisible: true}) }}/>
<Icon type={this.state.showContent ? "down" : 'left'} style={{cursor: "pointer"}} onClick={() => {this.handleTiggleContent()}}/>
</span>
</div>
{
2022-05-31 18:51:23 +08:00
this.state.showContent && <WeaTable
rowSelection={rowSelection}
dataSource={this.props.dataSource}
columns={this.state.columns}
2022-06-07 09:08:36 +08:00
onRow={(record, index) => ({
index,
moveRow: record,
})}
2022-05-31 18:51:23 +08:00
pagination={false}
2022-06-02 13:51:45 +08:00
onDrop={(datas) => this.handleTableDrop(datas)}
2022-05-31 18:51:23 +08:00
draggable={true}/>
2022-03-29 17:33:54 +08:00
}
{
this.state.addItemVisible && <AddSalaryItemModal
visible={this.state.addItemVisible}
title={this.props.title}
onCancel={() => { this.setState({addItemVisible: false})}}
/>
}
2022-04-20 15:28:40 +08:00
{
formalModalVisible &&
<FormalFormModal
formulaId={this.formulaId}
visible={formalModalVisible}
onSaveFormal={(data) => {
this.handleSaveFormal(data)
}}
onCancel={() => this.setState({
formalModalVisible: false
})}
/>
}
2022-03-29 17:33:54 +08:00
2022-05-13 15:25:21 +08:00
{/* 编辑分类名称 */}
{
addCategoryVisible &&
<AddCategoryModal title={this.title} onSave={(value) => {this.handleUpdateCategorySave(value)}} visible={addCategoryVisible} onCancel={() => {
this.setState({addCategoryVisible: false})
}} />
}
2022-03-29 17:33:54 +08:00
</div>
)
}
}