基础社保福利方案

This commit is contained in:
MustangDeng 2022-03-21 19:54:16 +08:00
parent be4051e5ea
commit c020cc5a80
4 changed files with 143 additions and 17 deletions

View File

@ -17,7 +17,14 @@ export const createScheme = params => {
}).then(res => res.json())
};
export const updateScheme = params => {
return WeaTools.callApi('/api/bs/hrmsalary/scheme/update', 'post', params);
return fetch('/api/bs/hrmsalary/scheme/update', {
method: 'POST',
mode: 'cors',
headers: {
'Content-Type': 'application/json'
},
body: JSON.stringify(params)
}).then(res => res.json())
};
export const getCopyForm = params => {
return WeaTools.callApi('/api/bs/hrmsalary/scheme/copyForm', 'get', params);

View File

@ -0,0 +1,20 @@
import React from 'react'
import { Modal, Row, Col } from "antd"
import { WeaInput } from 'ecCom'
export default class CopySchemaModal extends React.Component {
render() {
return (
<Modal title="复制社保方案" footer={this.props.footer} onCancel={() => this.props.onCancel()} visible={this.props.visible}>
<Row>
<Col span={6}>
方案名称
</Col>
<Col span={18}>
<WeaInput value={this.props.value} onChange={(v) =>{this.props.onChange(v)}} />
</Col>
</Row>
</Modal>
)
}
}

View File

@ -28,6 +28,7 @@ import {
const { MonthPicker } = DatePicker;
import TwoColContent from '../../../components/twoColContent';
import CopySchemaModal from './copySchemaModal';
@inject('programmeStore')
@observer
@ -38,11 +39,9 @@ export default class Programme extends React.Component {
value: "",
searchValue: "",
slideVisiable: false,
requestParams: {
schemeName: "",
remarks: "",
paymentArea: "1"
}
currentOperate: "add",
copyModalValue: "",
copyId: "",
}
}
@ -51,10 +50,59 @@ export default class Programme extends React.Component {
const {doInit} = programmeStore;
doInit();
}
// 增加编辑功能重写columns绑定事件
getColumns = (columns) => {
let newColumns = '';
newColumns = columns.map(column => {
let newColumn = column;
newColumn.render = (text, record, index) => { //前端元素转义
let valueSpan = record[newColumn.dataIndex + "span"] !== undefined ? record[newColumn.dataIndex + "span"] : record[newColumn.dataIndex];
switch(newColumn.dataIndex) {
case "operate":
return <a onClick={() => {this.onEdit(record)}}>编辑</a>
default:
return <div dangerouslySetInnerHTML={{ __html: valueSpan }} />
}
}
return newColumn;
});
return newColumns;
}
onEdit(record) {
let id = record.id;
const { programmeStore } = this.props
const { getForm, selectedKey } = programmeStore
getForm({
welfareTypeEnum: selectedKey,
id
})
this.setState({slideVisiable: true, currentOperate: "update"})
}
onCopy(record) {
this.setState({
copyId: record.id,
copyModalVisible: true
})
}
onOperatesClick(record, index, operate, flag) {
switch(operate.text.toString()){
case '编辑': // 编辑
this.onEdit(record);
break;
case "复制": // 复制
this.onCopy(record);
break;
}
}
render() {
const { programmeStore } = this.props;
const { loading, hasRight, form, condition, tableStore, showSearchAd, getTableDatas, doSearch, setShowSearchAd } = programmeStore;
const { selectedKey, setSelectedKey, getCustomCategoryList, customTableStore, customSelectkey, setCustomSelectkey } = programmeStore;
const { selectedKey, setSelectedKey, getCustomCategoryList, customTableStore, customSelectkey, setCustomSelectkey, requestParams, setRequestParams } = programmeStore;
if (!hasRight && !loading) { // 无权限处理
return renderNoright();
}
@ -110,12 +158,12 @@ export default class Programme extends React.Component {
},
{
showname: "企业年金及其他福利",
key: "OTHER"
key: "OTHER"
}
]
const handleNewClick = () => {
this.setState({ slideVisiable: true })
this.setState({ slideVisiable: true, currentOperate: "add" })
}
const renderSearchOperationItem = () => {
@ -137,10 +185,10 @@ export default class Programme extends React.Component {
}
const handleOnSave = () => {
let {requestParams} = this.state;
let { schemeName, remarks, paymentArea } = requestParams
const { programmeStore } = this.props
const { selectedKey, defaultPersonDataSource, defaultCompanyDataSource, createScheme } = programmeStore
const { currentOperate } = this.state
const { selectedKey, defaultPersonDataSource, defaultCompanyDataSource, createScheme, requestParams, updateScheme } = programmeStore
let { schemeName, remarks, paymentArea } = requestParams
let request = {
insuranceScheme: {
paymentType: paymentArea == "1" ? "SCHEME_TOWN": "SCHEME_VILLAGE",
@ -151,7 +199,14 @@ export default class Programme extends React.Component {
},
insuranceSchemeDetailList: [...defaultPersonDataSource, ...defaultCompanyDataSource]
}
createScheme(request)
if(currentOperate == "add") {
createScheme(request)
} else if(currentOperate == "update"){
request.insuranceScheme.id = requestParams.id
updateScheme(request)
}
this.setState({slideVisiable: false})
}
const renderCustomRightContent = () => {
@ -163,6 +218,13 @@ export default class Programme extends React.Component {
return (<TipLabel tipList={tipList} />)
}
const handleCopyModalSave = () => {
const { programmeStore: {copyScheme}} = this.props;
const { copyId, copyModalValue } = this.state;
copyScheme({id:copyId, schemeName: copyModalValue})
this.setState({copyModalVisible : false})
}
return (
<div className="mySalaryBenefitsWrapper">
<WeaRightMenu
@ -208,9 +270,10 @@ export default class Programme extends React.Component {
comsWeaTableStore={tableStore} // table store
hasOrder={true} // 是否启用排序
needScroll={true} // 是否启用table内部列表滚动将自适应到父级高度
getColumns={this.getColumns}
onOperatesClick={this.onOperatesClick.bind(this)}
/>
}
</WeaTop>
</WeaRightMenu>
<WeaSlideModal visible={this.state.slideVisiable}
@ -228,13 +291,24 @@ export default class Programme extends React.Component {
}}
/>
}
content={(<DefaultSlideForm requestParams={this.state.requestParams} onChange={(requestParams) => {
this.setState({requestParams})
content={(<DefaultSlideForm requestParams={requestParams} onChange={(requestParams) => {
setRequestParams(requestParams)
}}/>)}
onClose={() => this.setState({ slideVisiable: false })}
showMask={true}
closeMaskOnClick={() => this.setState({ slideVisiable: false })}
onAnimationEnd={() => console.log('onAnimationEnd')} />
{
this.state.copyModalVisible && <CopySchemaModal
visible={this.state.copyModalVisible}
value={this.state.copyModalValue}
onChange={(value) => this.setState({copyModalValue: value})}
onCancel={() => {this.setState({copyModalVisible: false})}}
footer={<Button type="primary" onClick={() => {handleCopyModalSave()}}>保存</Button>
}
/>
}
</div>
)
}

View File

@ -24,7 +24,7 @@ export class ProgrammeStore {
}
@action
setRequestParams = requestParams => this.requestParams;
setRequestParams = requestParams => this.requestParams = requestParams;
@action
setDefaultPersonDataSource = defaultPersonDataSource => this.defaultPersonDataSource = defaultPersonDataSource;
@ -109,6 +109,13 @@ export class ProgrammeStore {
let resultList = res.data.form.schemeDetailList;
this.defaultPersonDataSource = resultList.filter(item => item.paymentScope == "个人")
this.defaultCompanyDataSource = resultList.filter(item => item.paymentScope == "公司")
let defaultRequest = {
schemeName: "",
remarks: "",
paymentArea: "1"
}
this.requestParams = {...defaultRequest, ...res.data.form.schemeBatch}
}
})
}
@ -122,4 +129,22 @@ export class ProgrammeStore {
})
}
@action updateScheme = (params) => {
API.updateScheme(params).then(res => {
if(res.status) {
message.success("更新成功");
this.getTableDatas(this.selectedKey);
}
})
}
@action copyScheme = (params) => {
API.copyScheme(params).then(res => {
if(res.status) {
message.success("复制成功")
this.getTableDatas(this.selectedKey);
}
})
}
}