diff --git a/pc4mobx/hrmSalary/apis/welfareScheme.js b/pc4mobx/hrmSalary/apis/welfareScheme.js index b9f851d3..f4a017ef 100644 --- a/pc4mobx/hrmSalary/apis/welfareScheme.js +++ b/pc4mobx/hrmSalary/apis/welfareScheme.js @@ -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); diff --git a/pc4mobx/hrmSalary/pages/socialSecurityBenefits/programme/copySchemaModal.js b/pc4mobx/hrmSalary/pages/socialSecurityBenefits/programme/copySchemaModal.js new file mode 100644 index 00000000..c13969ad --- /dev/null +++ b/pc4mobx/hrmSalary/pages/socialSecurityBenefits/programme/copySchemaModal.js @@ -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 ( + this.props.onCancel()} visible={this.props.visible}> + + + 方案名称 + + + {this.props.onChange(v)}} /> + + + + ) + } +} \ No newline at end of file diff --git a/pc4mobx/hrmSalary/pages/socialSecurityBenefits/programme/index.js b/pc4mobx/hrmSalary/pages/socialSecurityBenefits/programme/index.js index 79c82ed7..fa130d84 100644 --- a/pc4mobx/hrmSalary/pages/socialSecurityBenefits/programme/index.js +++ b/pc4mobx/hrmSalary/pages/socialSecurityBenefits/programme/index.js @@ -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 {this.onEdit(record)}}>编辑 + default: + return
+ } + } + 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 () } + const handleCopyModalSave = () => { + const { programmeStore: {copyScheme}} = this.props; + const { copyId, copyModalValue } = this.state; + copyScheme({id:copyId, schemeName: copyModalValue}) + this.setState({copyModalVisible : false}) + } + return (
} - } - content={( { - this.setState({requestParams}) + content={( { + setRequestParams(requestParams) }}/>)} onClose={() => this.setState({ slideVisiable: false })} showMask={true} closeMaskOnClick={() => this.setState({ slideVisiable: false })} onAnimationEnd={() => console.log('onAnimationEnd')} /> + + { + this.state.copyModalVisible && this.setState({copyModalValue: value})} + onCancel={() => {this.setState({copyModalVisible: false})}} + footer={ + } + /> + }
) } diff --git a/pc4mobx/hrmSalary/stores/programme.js b/pc4mobx/hrmSalary/stores/programme.js index de215f46..1cd1f86f 100644 --- a/pc4mobx/hrmSalary/stores/programme.js +++ b/pc4mobx/hrmSalary/stores/programme.js @@ -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); + } + }) + } + } \ No newline at end of file