薪资档案接口对接
This commit is contained in:
parent
c9110014c8
commit
15d3eb6e15
|
|
@ -165,3 +165,51 @@ export const exportSalaryArchive = (ids = "") => {
|
|||
window.URL.revokeObjectURL(url);
|
||||
}))
|
||||
}
|
||||
|
||||
// 调整记录-个税扣缴义务人列表
|
||||
export const adjustRecordTaxAgentList = (params) => {
|
||||
return fetch('/api/bs/hrmsalary/salaryArchive/adjustRecord/taxAgentList', {
|
||||
method: 'POST',
|
||||
mode: 'cors',
|
||||
headers: {
|
||||
'Content-Type': 'application/json'
|
||||
},
|
||||
body: JSON.stringify(params)
|
||||
}).then(res => res.json())
|
||||
}
|
||||
|
||||
// 调整记录-薪资项目-列表
|
||||
export const adjustRecordSalaryItemList = (params) => {
|
||||
return fetch('/api/bs/hrmsalary/salaryArchive/adjustRecord/salaryItemList', {
|
||||
method: 'POST',
|
||||
mode: 'cors',
|
||||
headers: {
|
||||
'Content-Type': 'application/json'
|
||||
},
|
||||
body: JSON.stringify(params)
|
||||
}).then(res => res.json())
|
||||
}
|
||||
|
||||
// 调整记录-薪资项目-单个
|
||||
export const singleSalaryItemList = (params) => {
|
||||
return fetch('/api/bs/hrmsalary/salaryArchive/adjustRecord/singleSalaryItemList', {
|
||||
method: 'POST',
|
||||
mode: 'cors',
|
||||
headers: {
|
||||
'Content-Type': 'application/json'
|
||||
},
|
||||
body: JSON.stringify(params)
|
||||
}).then(res => res.json())
|
||||
}
|
||||
|
||||
// 调整记录-个税扣缴义务人-单个
|
||||
export const singleTaxAgentList = (params) => {
|
||||
return fetch('/api/bs/hrmsalary/salaryArchive/adjustRecord/singleTaxAgentList', {
|
||||
method: 'POST',
|
||||
mode: 'cors',
|
||||
headers: {
|
||||
'Content-Type': 'application/json'
|
||||
},
|
||||
body: JSON.stringify(params)
|
||||
}).then(res => res.json())
|
||||
}
|
||||
|
|
@ -60,7 +60,6 @@ export default class EditableTable extends React.Component {
|
|||
<div>{text}</div>
|
||||
</Tooltip>
|
||||
)
|
||||
|
||||
}
|
||||
|
||||
if (item.children) {
|
||||
|
|
|
|||
|
|
@ -1,20 +1,129 @@
|
|||
import React from 'react'
|
||||
import { Row, Col, Table, Modal, Icon } from 'antd'
|
||||
import { WeaInput, WeaSelect } from "ecCom"
|
||||
import { WeaInput, WeaSelect, WeaDatePicker } from "ecCom"
|
||||
import { changeSalaryModalColumns, dataSource } from './columns'
|
||||
import "./index.less"
|
||||
|
||||
import { inject, observer } from 'mobx-react';
|
||||
import moment from 'moment'
|
||||
|
||||
@inject('salaryFileStore')
|
||||
@observer
|
||||
export default class ChangeSalaryModal extends React.Component {
|
||||
constructor(props) {
|
||||
super(props)
|
||||
this.state = {
|
||||
inited: false,
|
||||
salaryArchiveItems: [
|
||||
{
|
||||
key: "1",
|
||||
salaryItem: "",
|
||||
before: "",
|
||||
after: ""
|
||||
}
|
||||
],
|
||||
request: {
|
||||
effectiveTime: moment(new Date()).format("YYYY-MM-DD"),
|
||||
salaryArchiveId: this.props.currentId,
|
||||
adjustReason: "",
|
||||
description: ""
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// 改变回调
|
||||
handleChange(params) {
|
||||
let request = {...this.state.request, ...params}
|
||||
this.setState({
|
||||
request
|
||||
})
|
||||
}
|
||||
|
||||
// 表格中薪资项目选择项下拉,改变事件
|
||||
handleSalaryItemChange(item, value) {
|
||||
const { salaryArchiveItems} = this.state;
|
||||
let dataSource = [ ...salaryArchiveItems ]
|
||||
dataSource.map(i => {
|
||||
if(i.key == item.key) {
|
||||
i.salaryItem = value;
|
||||
}
|
||||
})
|
||||
this.setState({
|
||||
salaryArchiveItems: dataSource
|
||||
})
|
||||
}
|
||||
|
||||
// 调整后表格字段变化回调
|
||||
handleSalaryAfterItemChange(record, value) {
|
||||
const { } = this.state;
|
||||
|
||||
}
|
||||
|
||||
// 解析Columns
|
||||
getColumns() {
|
||||
const {salaryFileStore: {salaryItemChangeForm} } = this.props;
|
||||
const { salaryItemList } = salaryItemChangeForm
|
||||
let {columns} = salaryItemChangeForm
|
||||
return columns.map(item => {
|
||||
item = {...item}
|
||||
if(item.dataIndex == "salaryItem") {
|
||||
item.render = (text, record) => {
|
||||
return (
|
||||
<WeaSelect options={salaryItemList} style={{width: "150px"}} value={text} onChange={(value) => {
|
||||
this.handleSalaryItemChange(record, value)
|
||||
}}/>
|
||||
)
|
||||
}
|
||||
}else if(item.dataIndex == "after"){
|
||||
item.render = (text, record) => {
|
||||
return (
|
||||
<WeaInput type="number" style={{width: '150px'}} value={text} onChange={(value) => {
|
||||
this.handleSalaryAfterItemChange(record, value)
|
||||
}}/>
|
||||
)
|
||||
}
|
||||
}
|
||||
return item;
|
||||
})
|
||||
}
|
||||
|
||||
handleAddItemClick() {
|
||||
const { } = this.props;
|
||||
}
|
||||
|
||||
componentWillMount() {
|
||||
const { salaryFileStore: {getSalaryItemForm}, currentId} = this.props;
|
||||
getSalaryItemForm(currentId).then(() => {this.setState({
|
||||
inited: true
|
||||
})})
|
||||
}
|
||||
|
||||
// 保存
|
||||
handleSave() {
|
||||
|
||||
}
|
||||
|
||||
render() {
|
||||
const { salaryFileStore: {salaryItemChangeForm} } = this.props;
|
||||
const { request, salaryArchiveItems } = this.state;
|
||||
const { effectiveTime, adjustReason, description } = request
|
||||
return (
|
||||
<Modal title="调薪" width={800} visible={this.props.visible} onClose={() => {this.props.onCancel()}}>
|
||||
<Modal title="调薪" width={800} visible={this.props.visible} onClose={() => {this.props.onCancel()}}
|
||||
footer={<Button type="primary" onClick={() => {
|
||||
this.handleSave()
|
||||
}}>保存</Button>}
|
||||
>
|
||||
<div className="changeSalaryModal">
|
||||
<Row className="itemWrapper">
|
||||
<Col span={6}>
|
||||
生效日期
|
||||
</Col>
|
||||
<Col span={18}>
|
||||
<WeaInput style={{width: "200px"}}/>
|
||||
<WeaDatePicker
|
||||
format="yyyy-MM-dd"
|
||||
style={{width: "200px"}}
|
||||
value={effectiveTime}
|
||||
onChange={(value) => {this.handleChange({ effectiveTime: value })}}
|
||||
/>
|
||||
</Col>
|
||||
</Row>
|
||||
<Row className="itemWrapper">
|
||||
|
|
@ -22,7 +131,14 @@ export default class ChangeSalaryModal extends React.Component {
|
|||
调整原因
|
||||
</Col>
|
||||
<Col span={18}>
|
||||
<WeaSelect style={{width: "200px"}} />
|
||||
{
|
||||
this.state.inited && <WeaSelect
|
||||
options={salaryItemChangeForm.adjustReasonList}
|
||||
style={{width: "200px"}}
|
||||
value={adjustReason}
|
||||
onChange={(value) => {this.handleChange({ adjustReason: value })}}
|
||||
/>
|
||||
}
|
||||
</Col>
|
||||
</Row>
|
||||
<Row className="itemWrapper">
|
||||
|
|
@ -30,7 +146,12 @@ export default class ChangeSalaryModal extends React.Component {
|
|||
说明
|
||||
</Col>
|
||||
<Col span={18}>
|
||||
<WeaInput style={{width: "200px"}}/>
|
||||
|
||||
<WeaInput
|
||||
style={{width: "200px"}}
|
||||
value={description}
|
||||
onChange={value => {this.handleChange({description: value})}}
|
||||
/>
|
||||
</Col>
|
||||
</Row>
|
||||
</div>
|
||||
|
|
@ -39,13 +160,15 @@ export default class ChangeSalaryModal extends React.Component {
|
|||
<div className="contentTitleWrapper" style={{height: "40px",lineHeight: "40px"}}>
|
||||
<span className="contentTitle" style={{fontSize: "14px", color: "#666"}}>调薪明细</span>
|
||||
<div className="rightIconWrapper" style={{display: "inline-block", float: "right"}}>
|
||||
<Icon type="minus-square" style={{color: "#2db7f5", cursor: "pointer", marginRight: "15px"}}/>
|
||||
<Icon type="minus-square" style={{color: "#2db7f5", cursor: "pointer", marginRight: "15px"}} onClick={() => {this.handleAddItemClick()}}/>
|
||||
<Icon type="plus-square" style={{color: "#2db7f5", cursor: "pointer"}}/>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div className="tableWrapper">
|
||||
<Table dataSource={dataSource} columns={changeSalaryModalColumns}/>
|
||||
{
|
||||
this.state.inited && <Table dataSource={salaryArchiveItems} columns={this.getColumns()}/>
|
||||
}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
|
|
|||
|
|
@ -303,6 +303,7 @@ export default class SalaryFile extends React.Component {
|
|||
|
||||
{
|
||||
this.state.changeSalaryVisible && <ChangeSalaryModal
|
||||
currentId={this.state.currentId}
|
||||
visible={this.state.changeSalaryVisible}
|
||||
onCancel={() => {this.setState({changeSalaryVisible: false})}}
|
||||
/>
|
||||
|
|
|
|||
|
|
@ -30,8 +30,14 @@ export default class SalaryFileViewSlide extends React.Component {
|
|||
}
|
||||
|
||||
componentWillMount() {
|
||||
const { salaryFileStore: {getArchiveForm} } = this.props;
|
||||
const { salaryFileStore: {getArchiveForm, fetchSingleSalaryItemList} } = this.props;
|
||||
getArchiveForm(this.props.id)
|
||||
fetchSingleSalaryItemList({salaryArchiveId: this.props.id})
|
||||
}
|
||||
|
||||
// tab页签切换回调
|
||||
handleTabChange(item) {
|
||||
this.setState({ selectedTab: item.key})
|
||||
}
|
||||
|
||||
render() {
|
||||
|
|
@ -104,8 +110,9 @@ export default class SalaryFileViewSlide extends React.Component {
|
|||
</div>
|
||||
}
|
||||
|
||||
|
||||
<WeaSearchGroup title={<SelectedTab items={selectedTabItems} onChange={(item) => {this.setState({ selectedTab: item.key})}}/>} items={[]} onVisibleChange={(value) => {this.setState({salaryItemVisible: value})}}/>
|
||||
<WeaSearchGroup title={<SelectedTab items={selectedTabItems} onChange={(item) => {this.handleTabChange(item)}}/>} items={[]} onVisibleChange={(value) => {this.setState({salaryItemVisible: value})}}/>
|
||||
|
||||
|
||||
<div>
|
||||
|
||||
</div>
|
||||
|
|
|
|||
|
|
@ -2,9 +2,16 @@ import React from 'react'
|
|||
import { dataSource, slideSalaryItemColumns } from "./columns"
|
||||
import { WeaInputSearch } from 'ecCom'
|
||||
import { Table } from 'antd'
|
||||
import { inject, observer } from 'mobx-react';
|
||||
import "./index.less"
|
||||
|
||||
@inject('salaryFileStore')
|
||||
@observer
|
||||
export default class SlideSalaryItem extends React.Component {
|
||||
componentWillMount() {
|
||||
const { salaryFileStore: {adjustRecordSalaryItemList}} = this.props;
|
||||
adjustRecordSalaryItemList({})
|
||||
}
|
||||
render() {
|
||||
return (
|
||||
<div className="salaryFileSlide">
|
||||
|
|
|
|||
|
|
@ -21,6 +21,11 @@ export class salaryFileStore {
|
|||
@observable dataSource = [];
|
||||
@observable detailForm= {}
|
||||
@observable salaryArchiveTaxAgentForm = {}
|
||||
@observable salaryItemChangeForm = {}
|
||||
@observable taxAgentList = []
|
||||
@observable salaryItemList = []
|
||||
@observable singleSalaryItemList = []
|
||||
@observable singleTaxAgentList = []
|
||||
|
||||
|
||||
// 初始化操作
|
||||
|
|
@ -197,7 +202,108 @@ export class salaryFileStore {
|
|||
}
|
||||
})
|
||||
})
|
||||
|
||||
}
|
||||
|
||||
// 薪资档案-获取薪资项目调整表单
|
||||
@action
|
||||
getSalaryItemForm = (id) => {
|
||||
return new Promise((resolve, reject) => {
|
||||
API.getSalaryItemForm({salaryArchiveItemId: id}).then(res => {
|
||||
if(res.status) {
|
||||
this.salaryItemChangeForm = {}
|
||||
this.salaryItemChangeForm.adjustReasonList = res.data.salaryArchiveItemForm.adjustReasonList.map(item => {
|
||||
item = {...item}
|
||||
item.key = item.id;
|
||||
item.showname = item.content
|
||||
item.selected = false
|
||||
return item
|
||||
})
|
||||
|
||||
this.salaryItemChangeForm.salaryItemList = res.data.salaryArchiveItemDetail.salaryItemList.map(item => {
|
||||
item = {...item}
|
||||
item.key = item.id;
|
||||
item.showname = item.content
|
||||
item.selected = false
|
||||
return item
|
||||
})
|
||||
|
||||
this.salaryItemChangeForm.columns = res.data.salaryArchiveItemDetail.columns.map(item => {
|
||||
let result = {}
|
||||
result.title = item
|
||||
if(item == "薪资项目") {
|
||||
result.dataIndex = "salaryItem"
|
||||
result.key = "salaryItem"
|
||||
}
|
||||
if(item == "调整前") {
|
||||
result.dataIndex = "before"
|
||||
result.key = "before"
|
||||
}
|
||||
if(item == "调整后") {
|
||||
result.dataIndex = "after"
|
||||
result.key = "after"
|
||||
}
|
||||
return result
|
||||
})
|
||||
resolve()
|
||||
} else {
|
||||
message.error(res.errormsg || "获取失败")
|
||||
reject()
|
||||
}
|
||||
})
|
||||
})
|
||||
}
|
||||
|
||||
// 调整记录 个税义务人调整列表
|
||||
@action
|
||||
adjustRecordTaxAgentList = (params) => {
|
||||
API.adjustRecordTaxAgentList(params).then(res => {
|
||||
if(res.status) {
|
||||
this.taxAgentList = res.data
|
||||
} else {
|
||||
message.error(res.errormsg || "获取失败")
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
// 调整记录 薪资项目调整记录
|
||||
@action
|
||||
adjustRecordSalaryItemList = (params) => {
|
||||
API.adjustRecordSalaryItemList(params).then(res => {
|
||||
if(res.status) {
|
||||
this.salaryItemList = res.data;
|
||||
} else {
|
||||
message.error(res.errormsg || "获取失败")
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
// slide 薪资项目列表
|
||||
@action
|
||||
fetchSingleSalaryItemList = (params) => {
|
||||
API.singleSalaryItemList(params).then(res => {
|
||||
if(res.status) {
|
||||
this.singleSalaryItemList = res.data
|
||||
} else {
|
||||
message.error(res.errormsg || "获取失败");
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
// slide 个税义务人列表
|
||||
@action
|
||||
fetchSingleTaxAgentList = (params) => {
|
||||
API.singleTaxAgentList(params).then(res => {
|
||||
if(res.status) {
|
||||
this.singleTaxAgentList = res.data
|
||||
} else {
|
||||
message.error(res.errormsg || "获取失败")
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
Loading…
Reference in New Issue