import React, { useEffect, useState, useRef } from 'react'; import { connect } from 'dva'; import { Form, Table, DatePicker, Input, Button, Empty, Card, Affix, TreeSelect } from 'antd'; import styles from './report.less'; import UserRptModal from './UserRptModal'; import DepCompareModal from './DepCompareModal'; import moment from 'moment'; import { downloadFile, getToken } from '@/utils/utils.js'; import * as echarts from 'echarts'; import { CloseOutlined } from '@ant-design/icons'; const { RangePicker } = DatePicker; //按天取前月26-当月25 var initDate; if (moment().date() > 25) { initDate = [ moment() .subtract(1, 'month') .set('date', 26), moment().set('date', 25), ]; } else { initDate = [ moment() .subtract(2, 'month') .set('date', 26), moment() .subtract(1, 'month') .set('date', 25), ]; } function Department(props) { const { dispatch, loading, dep } = props; const [form] = Form.useForm(); const [visible, setVisible] = useState(false); const [modalFilter, setModalFilter] = useState({}); const [current, setCurrent] = useState(null); const [currentDep, setCurrentDep] = useState(null); const chartRef = useRef(null); const filterRef = useRef({ pageSize: 99999 }); //控制图表部门选择参数 const [loadedDepKey, setLoadedDepKey] = useState([]); const [expandedDepKey, setExpandedDepKey] = useState([]); const columns = [ { title: '部门名称', render: record => showUserModal(record)}>{record.dep_name}, // render: record => setCurrent(record)}>{record.dep_name}, width: '32%', }, { title: '有效利用率', dataIndex: 'usage_percent', render: percent => (percent * 100).toFixed(2) + '%', }, { title: '执行项目人日', dataIndex: 'type_project_cnt', }, { title: '售前支持', dataIndex: 'type_sale_cnt', }, { title: '市场品牌', dataIndex: 'type_market_cnt', }, { title: '日常', dataIndex: 'type_normal_cnt', }, { title: '标准化', dataIndex: 'type_standardize_cnt', }, { title: '研发', dataIndex: 'type_rd_cnt', }, // { // title: '漏填工时', // dataIndex: 'type_lost_cnt', // }, { title: '应填报总工时', dataIndex: 'total_cnt', }, // { // title: '操作', // width: 80, // render: item => showDepCompare(item)}>详情, // }, // { // title: '付费工时数', // dataIndex: 'pay_workload_cnt', // }, // { // title: '付费工时率', // dataIndex: 'pay_workload_percent', // render: percent => (percent * 100).toFixed(2) + '%', // }, ]; const handleSearch = () => { const { time } = form.getFieldsValue(); filterRef.current.s_time = time[0] ? moment(time[0]).format('YYYY-MM-DD') : ''; filterRef.current.e_time = time[1] ? moment(time[1]).format('YYYY-MM-DD') : ''; //重置图表部门选择 setLoadedDepKey([]); setExpandedDepKey([]); dispatch({ type: 'report/queryDepReport', payload: { filter: filterRef.current, }, callback: list => handleChangeCurrent(list[0]), }); }; const handleDownload = finance => { const token = getToken(); const { time } = form.getFieldsValue(); let s_time = time[0] ? moment(time[0]).format('YYYY-MM-DD') : ''; let e_time = time[1] ? moment(time[1]).format('YYYY-MM-DD') : ''; if (finance) downloadFile( `/api/v2/workload/finance/people/export?JWT-TOKEN=${token}&s_time=${s_time}&e_time=${e_time}`, `财务报表_部门${moment().format('YYYYMMDDHHMMSS')}.xlsx` ); else downloadFile( `/api/v2/workload/rpt/dep/export2excel?JWT-TOKEN=${token}&s_time=${s_time}&e_time=${e_time}`, `部门报表${moment().format('YYYYMMDDHHMMSS')}.xlsx` ); }; const renderSearch = () => { return (