import React, { Component } from 'react'; import { connect } from 'dva'; import moment from 'moment'; import { Tabs, Alert, Form, Button, DatePicker, Select } from 'antd'; import './less/medical.less'; import PTable from '../../../components/Pro/PTable'; import * as request from '../../../utils/request.js'; import * as ajax from '../../../services/api'; // import store from 'store'; import axios from 'axios'; const { MonthPicker } = DatePicker; const { Option } = Select; const monthFormat = 'YYYY-MM'; const { TabPane } = Tabs; @connect(state => ({ global: state.global })) @Form.create() /** * 医社保记录查询 */ export default class MedicalBasic extends Component { constructor(props, context) { super(props, context); // const curDate = new Date(); // const preDate = new Date(curDate.getTime() - (30 * 24 * 60 * 60 * 1000)); //前一天 this.state = { forceUpdate: false, pay: false, //是否设置缴交比例 payMsg: '', comTotalPayAmount: '', //企业缴费总计 perTotalPayAmount: '', //个人缴费总计 totalPayAmount: '', //总缴费 pageParm: { paySituation: '3', //缴交情况 pageSize: '10', payPeriod: this.getMonth(), pageNumber: '1' }, payPeriod: this.getMonth(), //时间默认值 paySituation: '3' //缴交情况默认值 }; } getMonth = () => { const nowdays = new Date(); let year = nowdays.getFullYear(); let month = nowdays.getMonth(); if (month === 0) { month = 12; year--; } if (month < 10) { month = '0' + month; } const yearMon = year + '-' + month; //上个月的第一天 + "-" + "01" return yearMon; }; //render之后调用 componentDidMount() { this.ajaxGetStaticInfo(); this.toSetScheme(); } //声明函数 时间选择 onChangeTime = (date, dateString) => { console.log('dateString' + dateString); this.setState({ payPeriod: dateString }); }; //声明函数 ajax获取数据,搜索按钮 getRecList = () => { this.ajaxGetStaticInfo(); //获取统计数据 const pageParm = { ...this.state.pageParm }; pageParm.paySituation = this.state.paySituation; pageParm.payPeriod = this.state.payPeriod; console.log('>>>>>>>>>>>>>>>>>>>', pageParm); this.setState({ pageParm, forceUpdate: true }, () => { this.setState({ forceUpdate: false }); }); }; //头部提醒 setPay = () => { if (this.state.pay === 0) { return (
{this.state.payMsg} { this.props.history.push('/salarymanagement/proportion'); }} > 去设置
} type='warning' showIcon /> ); } else if (this.state.pay === 1) { return (
{this.state.payMsg} { this.props.history.push('/salarymanagement/proportion'); }} > 去设置
} type='warning' showIcon /> ); } else { return
; } //2表示不需要提示 }; //ajax 获取统计数据 ajaxGetStaticInfo = () => { ajax .statHisRecList({ comId: this.props.global.companyInfo.comId, payPeriod: this.state.payPeriod }) .then(data => { console.log('医社保记录统计', data.data); if (data.data) { this.setState({ totalPayAmount: data.data.totalPayAmount, comTotalPayAmount: data.data.comTotalPayAmount, perTotalPayAmount: data.data.perTotalPayAmount }); } else { this.setState({ totalPayAmount: 0, comTotalPayAmount: 0, perTotalPayAmount: 0 }); } }); }; //缴交情况 handleChangeCondition = value => { console.log(`selected ${value}`); this.setState({ paySituation: value }); }; //声明函数 导出excel exportList = () => { ajax .exportHisRecList({ comId: this.props.global.companyInfo.comId, payPeriod: this.state.pageParm.payPeriod }) .then( data => { console.log('导出成功', data); }, err => { console.log('导出失败', err); } ); }; //提示用户去完成方案的设置 toSetScheme = () => { ajax .promptUserToSetScheme({ comId: this.props.global.companyInfo.comId }) .then( data => { console.log('提示用户去完成方案的设置' + data.data); this.setState({ pay: data.data, payMsg: data.msg }); }, err => { console.log('提示用户去完成方案的设置err', err); } ); }; //PTable 回调函数 dateTableChange = data => { console.log('PTable 回调函数', data); }; handleClickLink = () => { axios({ method: 'get', url: request.getHostByPath('/enterprise') + '/enterprise/ins/medical-social-rec/export-his-rec-list?comId=' + this.props.global.companyInfo.comId + '&payPeriod=' + this.state.pageParm.payPeriod, //后台请求地址 headers: { access_token: store.get('saas')['access_token'], Accesstoken: store.get('saas')['access_token'] || sessionStorage.userV5Token, }, responseType: "blob", }).then(data => { if (!data) { return; } // 假设response是从后端获取的文件流 // 创建Blob对象 const blob = new Blob([data.data], { type: 'application/vnd.ms-excel;charset=utf-8' }); // 创建一个虚拟的URL,用于下载 const url = window.URL.createObjectURL(blob); // 创建一个元素,设置其href属性为虚拟URL,触发下载 const link = document.createElement('a'); link.href = url; link.download = '五险一金.xls'; // 设置下载文件的名称 document.body.appendChild(link); link.click(); // 清理创建的URL对象 window.URL.revokeObjectURL(url); }); }; // 表格渲染 renderOrderList = () => { // const pageInitStudent = { // defaultPageSize: 10, // showQuickJumper: true, // pageSizeOptions: ["5", "10", "15", "20", "25"], // showSizeChanger: true, // showTotal: () => { return '共 ' + this.state.total + ' 条数据'; } // }; const columns = [ { title: '姓名', dataIndex: 'name', key: 'name', width: 100, fixed: 'left' }, { title: '身份证号', dataIndex: 'idCardNo', key: 'idCardNo', width: 180, fixed: 'left' }, { title: '企业缴交', children: [ { title: '养老保险', dataIndex: 'pensionComPayAmount', key: 'pensionComPayAmount' }, { title: '医疗保险', dataIndex: 'medicalComPayAmount', key: 'medicalComPayAmount' }, { title: '失业保险', dataIndex: 'unemploymentComPayAmount', key: 'unemploymentComPayAmount' }, { title: '工伤保险', dataIndex: 'injuryComPayAmount', key: 'injuryComPayAmount' }, { title: '生育保险', dataIndex: 'birthComPayAmount', key: 'birthComPayAmount' }, { title: '公积金', dataIndex: 'fundComPayAmount', key: 'fundComPayAmount' } ] }, { title: '个人缴交', children: [ { title: '养老保险', dataIndex: 'pensionPerPayAmount', key: 'pensionPerPayAmount' }, { title: '医疗保险', dataIndex: 'medicalPerPayAmount', key: 'medicalPerPayAmount' }, { title: '失业保险', dataIndex: 'unemploymentPerPayAmount', key: 'unemploymentPerPayAmount' }, { title: '工商保险', dataIndex: 'injuryPerPayAmount', key: 'injuryPerPayAmount' }, { title: '生育保险', dataIndex: 'birthPerPayAmount', key: 'birthPerPayAmount' }, { title: '公积金', dataIndex: 'fundPerPayAmount', key: 'fundPerPayAmount' } ] }, { title: '合计', dataIndex: 'totalPayAmount', key: 'totalPayAmount', width: 130, fixed: 'right' } ]; return ( ); }; render() { return (
1、请为每个需要核算薪酬的员工设置五险一金的基数及比例,系统每月1号会自动生成该月份每个员工五险一金的缴纳金额;
2、每月生成的五险一金缴纳金额会关联到本月薪酬核算的薪酬数据中,若未设置五险一金,则薪酬核算无法获取相应金额数据。
} type='warning' showIcon style={{ marginBottom: '15px' }} /> {this.setPay()}
{this.state.pageParm.payPeriod}|应缴交总计 {this.state.totalPayAmount}元| 企业缴交总金额 {this.state.comTotalPayAmount}元| 个人缴交总金额 {this.state.perTotalPayAmount}元
{/* {console.log(request.getHostByPath('/enterprise') + '/enterprise/ins/medical-social-rec/export-his-rec-list?comId=' + this.state.pageParm.comId + '&payPeriod=' + this.state.pageParm.payPeriod)} */}
{this.renderOrderList()}
); } }