import React from 'react';
import { inject, observer } from 'mobx-react';
import { toJS } from 'mobx';
import { Button, Table, DatePicker, Row, Col, Switch, Modal, Dropdown, Menu } from 'antd';
import { WeaTop, WeaTab, WeaRightMenu, WeaRangePicker, WeaInputSearch, WeaSlideModal, WeaSelect, WeaTable } from 'ecCom';
import { WeaTableNew } from "comsMobx"
import CustomTable from '../../../components/customTable'
import "./index.less";
const WeaMobxTable = WeaTableNew.WeaTable;
import { renderNoright, getSearchs } from '../../../util'; // 渲染form数据的方法:因为多个页面都会使用,所以抽的公共方法在util中
import CustomTab from '../../../components/customTab';
import ContentWrapper from '../../../components/contentWrapper';
import SlideModalTitle from '../../../components/slideModalTitle';
import TipLabel from '../../../components/TipLabel'
import DefaultSlideForm from './defaultSlideForm'
import CustomNewModal from './customNewModal'
import { welfareTypeEnum, paymentScopeEnum } from './enum';
import CustomPaginationTable from '../../../components/customPaginationTable'
import {
socialSecurityColumns,
accumulationFundColumns,
otherBenefitsColumns,
CustomBenefitsColumns, dataSource
} from './columns';
const { MonthPicker } = DatePicker;
import TwoColContent from '../../../components/twoColContent';
import CopySchemaModal from './copySchemaModal';
@inject('programmeStore')
@observer
export default class Programme extends React.Component {
constructor(props) {
super(props);
this.state = {
value: "",
searchValue: "",
slideVisiable: false,
currentOperate: "add",
copyModalValue: "",
copyId: "",
customNewVisible: false,
customEdit: false
}
this.pageInfo = {current: 1, pageSize: 10}
}
componentWillMount() {
const { programmeStore } = this.props;
const {doInit} = programmeStore;
doInit();
}
// 增加编辑功能,重写columns绑定事件
getColumns = (columns) => {
let newColumns = columns.filter(item => item.dataIndex !== "id" && item.dataIndex !== "paymentArea")
newColumns = newColumns.map(column => {
let newColumn = column;
newColumn.render = (text, record, index) => { //前端元素转义
let valueSpan = record[newColumn.dataIndex + "span"] !== undefined ? record[newColumn.dataIndex + "span"] : record[newColumn.dataIndex];
if(newColumn.dataIndex == "id") {
newColumn.display = false
}
switch(newColumn.dataIndex) {
case "operate":
return {this.onEdit(record)}}>编辑
default:
return
}
}
return newColumn;
});
newColumns.push({
title: "操作",
dataIndex: "operate",
render: (text, record) => {
return {this.onEdit(record)}}>编辑
}
})
newColumns.push(
{
title : '',
key: "moreOperate",
dataIndex: "moreOperate",
render: (text, record) => {
return (
{
this.onCopy(record);
}}>复制
}>
);
}
})
return newColumns;
}
handleCategoryStatusChange(record, value) {
const {programmeStore: { updateCustomCategoryStatus }} = this.props;
Modal.confirm({
title: '信息确认',
content: `确认要${value ? '启用' : '停用'}吗`,
onOk:() => {
updateCustomCategoryStatus(record.id, value)
},
onCancel: () => {
},
});
}
getCustomColumns = (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.onCustomEdit(record)}}>编辑
case "is_use":
return {this.handleCategoryStatusChange(record, value)}}/>
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
})
}
onCustomOperatesClick(record, index, operate, flag) {
switch(operate.text.toString()){
case '编辑': // 编辑
this.onCustomEdit(record);
break;
}
}
onCustomEdit(record) {
const { programmeStore: {getCustomForm, setCustomNewVisible, setCustomRequest}} = this.props;
getCustomForm()
setCustomNewVisible(true)
this.setState({
customEdit: true
})
setCustomRequest({
insuranceName: record['insurance_name'],
id: record.id,
isUse: record.is_use,
paymentScope: record.payment_scope.split(",").map(item => paymentScopeEnum[item]),
welfareType: welfareTypeEnum[record.welfare_type]
})
}
// 页面跳转
handlePageChange(value) {
const { programmeStore: {form, getTableDatas, selectedKey} } = this.props;
this.pageInfo.current = value
getTableDatas(selectedKey, this.pageInfo)
}
render() {
const { programmeStore } = this.props;
const { loading, hasRight, form, condition, tableStore, showSearchAd, getTableDatas, doSearch, setShowSearchAd } = programmeStore;
const { selectedKey, setSelectedKey, getCustomCategoryList, customTableStore,
customSelectkey, setCustomSelectkey, requestParams, setRequestParams, formCondition,
setCustomNewVisible, customNewVisible, tableDataSource, tableColumns, tablePageInfo } = programmeStore;
if (!hasRight && !loading) { // 无权限处理
return renderNoright();
}
const rightMenu = [// 右键菜单
{
key: 'BTN_COLUMN',
icon: ,
content: '显示列定制',
onClick: this.showColumn
},
];
const collectParams = { // 收藏功能配置
favname: '社保福利方案',
favouritetype: 1,
objid: 0,
link: 'wui/index.html#/ns_demo03/index',
importantlevel: 1,
};
const adBtn = [ // 高级搜索内部按钮
,
,
,
];
const topTab = [
{
title: "社保",
viewcondition: "SOCIAL_SECURITY"
},
{
title: "公积金",
viewcondition: "ACCUMULATION_FUND"
},
{
title: "企业年金及其他福利",
viewcondition: "OTHER"
},
{
title: "自定义福利",
viewcondition: "custom"
}
];
const options = [
{
showname: "全部",
key: ""
},
{
showname: "社保",
key: "SOCIAL_SECURITY"
},
{
showname: "公积金",
key: "ACCUMULATION_FUND"
},
{
showname: "企业年金及其他福利",
key: "OTHER"
}
]
const handleNewClick = () => {
const { programmeStore: {initSlideParms, getForm, selectedKey}} = this.props;
initSlideParms();
this.setState({ slideVisiable: true, currentOperate: "add" })
getForm({welfareTypeEnum: selectedKey})
}
const handleCustomNewClick = () => {
const { programmeStore : { getCustomForm, getCumCustomForm, setCustomNewVisible, setCustomRequest }} = this.props;
getCustomForm()
setCustomRequest({})
setCustomNewVisible(true)
this.setState({customEdit: false})
}
// const renderSearchOperationItem = () => {
// const { programmeStore: {setCustomSelectkey, getCustomCategoryList}} = this.props;
// return
// }
const handleOnSave = () => {
const { programmeStore } = this.props
const { currentOperate } = this.state
const { selectedKey, defaultPersonDataSource, defaultCompanyDataSource, createScheme, requestParams, updateScheme } = programmeStore
let { schemeName, remarks, paymentArea, paymentType } = requestParams
let request = {
insuranceScheme: {
paymentType,
welfareType: selectedKey,
schemeName,
remarks,
paymentArea
},
insuranceSchemeDetailList: [...defaultPersonDataSource, ...defaultCompanyDataSource]
}
if(currentOperate == "add") {
createScheme(request)
} else if(currentOperate == "update"){
request.insuranceScheme.id = requestParams.id
updateScheme(request)
}
this.setState({slideVisiable: false})
}
const renderCustomRightContent = () => {
let tipList = [
"1、可以为社保、公积金、企业年金及其他福利新增自定义的福利项,如:残疾保险等",
"2、新增自定义福利默认启用,社保福利方案中的自定义福利项均未开启缴纳,当前页面的自定义福利项才可以停用;停用后再新增方案时没有该福利项",
"3、自定义福利若要缴纳,需要在方案里填写缴纳相关数据"
]
return ()
}
const handleCopyModalSave = () => {
const { programmeStore: {copyScheme}} = this.props;
const { copyId, copyModalValue } = this.state;
copyScheme({id:copyId, schemeName: copyModalValue})
this.setState({copyModalVisible : false})
}
const handleSlideClose = () => {
this.setState({ slideVisiable: false })
const { programmeStore: {initSlideParms} } = this.props;
initSlideParms()
}
return (
} // 左侧图标
iconBgcolor='#F14A2D' // 左侧图标背景色
showDropIcon={true} // 是否显示下拉按钮
dropMenuDatas={rightMenu} // 下拉菜单(和页面的右键菜单相同)
dropMenuProps={{ collectParams }} // 收藏功能: 配置之后显示 收藏、帮助、显示页面地址 这3个功能
>
{
selectedKey == "custom" && {
setCustomSelectkey(v)
getCustomCategoryList(v)
console.log("v:", v)
}}
/>
}
}
onChange={(v) => {
setSelectedKey(v)
if(v == "custom") { // 自定义福利
getCustomCategoryList()
} else {
getTableDatas(v)
}
}}
/>
{
selectedKey == "custom" ?
}
rightContent={
renderCustomRightContent()
}
/> :
{
this.handlePageChange(value)
}}
onShowSizeChange={(current,pageSize) => {
this.pageInfo = {current, pageSize}
const { programmeStore: {form, getTableDatas, selectedKey} } = this.props;
getTableDatas(selectedKey, this.pageInfo)
}}
/>
}
{
this.state.slideVisiable && {
handleOnSave();
}}
/>
}
content={( {
console.log("requestParams:", requestParams);
setRequestParams(requestParams)
}}/>)}
onClose={() => {handleSlideClose()}}
showMask={true}
closeMaskOnClick={() => {handleSlideClose()}}
onAnimationEnd={() => console.log('onAnimationEnd')} />
}
{
this.state.copyModalVisible && this.setState({copyModalValue: value})}
onCancel={() => {this.setState({copyModalVisible: false})}}
footer={
}
/>
}
{
customNewVisible && {setCustomNewVisible(false)}}
/>
}
)
}
}