import React from "react"; import { inject, observer } from "mobx-react"; import { toJS } from "mobx"; import { Button, Dropdown, Menu, message, Modal, Switch } from "antd"; import { WeaSelect, WeaSlideModal, WeaTop } from "ecCom"; import { WeaTableNew } from "comsMobx"; import { renderNoright } from "../../../util"; // 渲染form数据的方法:因为多个页面都会使用,所以抽的公共方法在util中 import CustomTab from "../../../components/customTab"; import SlideModalTitle from "../../../components/slideModalTitle"; import TipLabel from "../../../components/TipLabel"; import DefaultSlideForm from "./defaultSlideForm"; import CustomNewModal from "./customNewModal"; import { paymentScopeEnum, welfareTypeEnum } from "./enum"; import CustomPaginationTable from "../../../components/customPaginationTable"; import TwoColContent from "../../../components/twoColContent"; import CopySchemaModal from "./copySchemaModal"; import "./index.less"; const WeaMobxTable = WeaTableNew.WeaTable; @inject("programmeStore", "taxAgentStore", "salaryFileStore") @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, salaryFileStore } = this.props; const { doInit } = programmeStore; doInit(); const { commonEnumList } = salaryFileStore; commonEnumList("user", { enumClass: "com.engine.salary.enums.sicategory.SharedTypeEnum" }); } // 增加编辑功能,重写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({ key: "moreOperate", dataIndex: "moreOperate", render: (text, record) => { return ( { this.onCopy(record); }}> 复制 {/*暂时隐藏*/} { this.onDelete(record); }}> 删除 }> ); } }); return newColumns; }; handleCategoryStatusChange(record, value) { const { programmeStore: { updateCustomCategoryStatus } } = this.props; Modal.confirm({ title: "信息确认", content: `确认要${value ? "启用" : "停用"}吗`, onOk: () => { updateCustomCategoryStatus(record.id, value); }, onCancel: () => { } }); } getCustomColumns = columns => { const { taxAgentStore: { showOperateBtn } } = this.props; 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, customEdit: true, currentOperate: "update" }); } onCopy(record) { this.setState({ copyId: record.id, copyModalValue: record.schemeName, copyModalVisible: true }); } onDelete = (record) => { const { programmeStore: { deleteScheme, deleteLoading, selectedKey } } = this.props; Modal.confirm({ title: "确认信息", content: "确认删除本条数据吗?", confirmLoading: deleteLoading, onOk: () => { deleteScheme({ ids: [record.id], welfareTypeEnum: selectedKey }); }, onCancel: () => { } }); }; onCustomOperatesClick(record, index, operate, flag) { switch (operate.text.toString()) { case "编辑": // 编辑 this.onCustomEdit(record); break; } } onCustomEdit = (record) => { const { programmeStore: { getCustomForm, setCustomNewVisible, setCustomRequest }, taxAgentStore: { showOperateBtn } } = this.props; if (!showOperateBtn) { message.warning("请设置编辑权限!"); return; } 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]).join(","), 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, taxAgentStore: { showOperateBtn } } = 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 = [ // 右键菜单 ]; 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, 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, sharedType, taxAgentIds } = requestParams; let request = { insuranceScheme: { paymentType, welfareType: selectedKey, schemeName, remarks, paymentArea, sharedType, taxAgentIds }, insuranceSchemeDetailList: [ ...defaultPersonDataSource, ...defaultCompanyDataSource ] }; if (currentOperate == "add") { createScheme(request).then(res => { if (res.status) this.setState({ slideVisiable: false }); }); } else if (currentOperate == "update") { request.insuranceScheme.id = requestParams.id; updateScheme(request).then(res => { if (res.status) this.setState({ slideVisiable: false }); }); } }; const renderCustomRightContent = () => { let tipList = [ "1、可以为社保、公积金、企业年金及其他福利新增自定义的福利项,如:残疾保险等", "2、新增自定义福利默认启用,社保福利方案中的自定义福利项均未开启缴纳,当前页面的自定义福利项才可以停用;停用后再新增方案时没有该福利项", "3、自定义福利若要缴纳,需要在方案里填写缴纳相关数据" ]; return ; }; const handleCopyModalSave = () => { const { programmeStore: { copyScheme } } = this.props; const { copyId, copyModalValue } = this.state; if (_.isEmpty(this.refs.copyRef.state.value)) { this.refs.copyRef.refs.weaError.showError(); } else { copyScheme({ id: copyId, schemeName: copyModalValue }).then(() => { this.setState({ copyModalVisible: false }); }); } }; const handleSlideClose = () => { this.setState({ slideVisiable: false, customEdit: false }); const { programmeStore: { initSlideParms } } = this.props; initSlideParms(); }; return (
} // 左侧图标 iconBgcolor="#F14A2D" // 左侧图标背景色 showDropIcon={false} // 是否显示下拉按钮 dropMenuDatas={rightMenu} // 下拉菜单(和页面的右键菜单相同) dropMenuProps={{ collectParams }}> {/* 收藏功能: 配置之后显示 收藏、帮助、显示页面地址 这3个功能 */} {/* 操作按钮权限 */} {showOperateBtn && } {selectedKey == "custom" && { setCustomSelectkey(v); getCustomCategoryList(v); }} />}
} onChange={v => { setSelectedKey(v); handleSlideClose(); 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); }} />} { handleOnSave(); }} /> } content={ this.state.slideVisiable ? { setRequestParams(requestParams); }} /> : null } onClose={() => { handleSlideClose(); }} showMask={true} closeMaskOnClick={() => { handleSlideClose(); }} /> {this.state.copyModalVisible && it.viewcondition === selectedKey)[0].title} visible={this.state.copyModalVisible} value={this.state.copyModalValue} onChange={value => this.setState({ copyModalValue: value })} onCancel={() => { this.setState({ copyModalVisible: false }); }} footer={ [] } />} {customNewVisible && { setCustomNewVisible(false); }} />}
); } }