薪资档案接口对接

This commit is contained in:
MustangDeng 2022-04-07 09:41:16 +08:00
parent c9110014c8
commit 15d3eb6e15
7 changed files with 304 additions and 13 deletions

View File

@ -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())
}

View File

@ -60,7 +60,6 @@ export default class EditableTable extends React.Component {
<div>{text}</div>
</Tooltip>
)
}
if (item.children) {

View File

@ -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>

View File

@ -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})}}
/>

View File

@ -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>

View File

@ -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">

View File

@ -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 || "获取失败")
}
})
}
}