/* eslint-disable react-hooks/exhaustive-deps */ import React, { useState, useEffect, useRef } from 'react'; import { connect } from 'react-redux'; import { Spin, Table } from 'antd'; import classnames from 'classnames/bind'; import { push } from 'react-router-redux'; import moment from 'moment'; import request from 'superagent'; import ProTable from '@ant-design/pro-table'; import { Scroller } from '$components'; import { getPeople, getWait, postKeySearch, } from '../actions/profile'; import styles from './index.less'; const schedule = require('node-schedule'); const CX = classnames.bind(styles); const topImg = '/assets/images/top.png'; const pointImg = '/assets/images/point.png'; function Management(props) { const { dispatch, user } = props; const [name, setName] = useState();// 名字查询 const [ajob, setAjob] = useState();// 岗位查询 const [projectData, setProjectData] = useState([]); const [peopleData, setPeopleData] = useState([]); const [waitData, setWaitData] = useState([]); const ref = useRef(); function getOngoingProjects() { request.get('/ongoing/projects').then((res) => { setProjectData(res?.body?.projects); }); } useEffect(() => { getOngoingProjects(); schedule.scheduleJob('0 0 7,18 * * ?', () => { // 每天 7时、18时 定时更新 getOngoingProjects(); }); dispatch(getPeople()).then((res) => { setPeopleData(res?.payload.data?.projects); }); dispatch(getWait()).then((res) => { setWaitData(res?.payload.data?.projects); }); }, []); const projectCol = [ { title: '执行ID', dataIndex: 'execution_id', key: 'execution_id', align: 'center', }, { title: '项目名称', dataIndex: 'name_project', key: 'name_project', align: 'center', }, { title: '投入人力', dataIndex: 'part_people', key: 'part_people', align: 'center', render: (dom, record) => (
{record.part_people.map((i, index) => (record.part_people.length == 1 ? {i.name_people} : ( {i.name_people} {index < record.part_people.length - 1 ? '、' : ''} )))}
), }, { title: '构建时间', dataIndex: 'build_time', key: 'build_time', align: 'center', defaultSortOrder: 'ascend', // sortOrder:'descend' , sorter: { compare: (a, b) => { const one = moment(a.build_time).format('YYYYMMDD'); const two = moment(b.build_time).format('YYYYMMDD'); return one - two; }, }, render: (dom, record) => <>{record.build_time ? moment(record.build_time).format('YYYY-MM-DD') : '待定'}, }, { title: '发布时间', dataIndex: 'publish_time', key: 'publish_time', align: 'center', render: (dom, record) => moment(record.publish_time).format('YYYY-MM-DD'), }, { title: '进度', dataIndex: 'progress', key: 'progress', align: 'center', }, { title: '状态', dataIndex: 'deferred_payment', key: 'deferred_payment', align: 'center', render: (dom, record) => ( <> { record.publish_time && moment().isAfter(moment(record.publish_time)) ?
已延期
:
未延期
} ), }, ]; const peopleCol = [ { title: '人员姓名', dataIndex: 'name_people', key: 'name_people', ellipsis: true, hideInSearch: true, width: 100, render: (dom, record) => record.name_people, }, { title: '岗位', key: 'post_people', dataIndex: 'post_people', valueType: 'select', initialValue: null, fieldProps: { onChange: (value, cs) => { setAjob(value); }, options: [ { label: '全部岗位', value: null, }, { label: '研发', value: '研发', }, { label: '测试', value: '测试', }, { label: 'UI', value: 'UI', }, ], }, render: (dom, record) => record.post_people, }, { title: '周一', key: 'md', dataIndex: 'md', hideInSearch: true, render: (dom, record) =>
{record.md == 'undefined' ? '--' : record.md}
, }, { title: '周二', key: 'td', dataIndex: 'td', hideInSearch: true, render: (dom, record) =>
{record.td == 'undefined' ? '--' : record.td}
, }, { title: '周三', key: 'wd', dataIndex: 'wd', hideInSearch: true, render: (dom, record) =>
{record.wd == 'undefined' ? '--' : record.wd}
, }, { title: '周四', key: 'thd ', dataIndex: 'thd ', hideInSearch: true, render: (dom, record) =>
{record.thd == 'undefined' ? '--' : record.thd}
, }, { title: '周五', key: 'fd', dataIndex: 'fd', hideInSearch: true, render: (dom, record) =>
{record.fd == 'undefined' ? '--' : record.fd}
, }, { title: '周六', key: 'sd', dataIndex: 'sd', hideInSearch: true, render: (dom, record) =>
{record.sd == 'undefined' ? '--' : record.sd}
, }, { title: '周日', key: 'ssd', dataIndex: 'ssd', hideInSearch: true, render: (dom, record) =>
{record.ssd == 'undefined' ? '--' : record.ssd}
, }, { title: '关键字搜索', key: 'direction', hideInTable: true, dataIndex: 'direction', order: 6, fieldProps: { onChange: (value, cs) => { setName(value.target.value); }, placeholder: '请输入关键字进行搜索', getPopupContainer: (triggerNode) => triggerNode.parentNode, }, }, ]; const waitCol = [ { title: '项目', dataIndex: 'name_project', key: 'name_project', align: 'center', }, { title: '需求来源', dataIndex: 'from_project', key: 'from_project', align: 'center', }, { title: '对接人', dataIndex: 'contacts', key: 'contacts', align: 'center', }, { title: '评估工时', dataIndex: 'consum_time', key: 'consum_time', align: 'center', }, { title: '处理进度', dataIndex: 'progress', key: 'progress', align: 'center', }, ]; return ( <>
本月在研项目
/Research project this week
待研发项目
/Project to be developed
人员情况
/Information on Personnel
{/* */} { if (name || ajob) { const query = { value1: name, value2: ajob, }; const res = await dispatch(postKeySearch(query)); setPeopleData(res?.payload.data.projects); return { ...res, // total: res.payload.data.data ? res.payload.data.total : 0, }; } const res = await dispatch(getPeople()); setPeopleData(res?.payload.data.projects); return { ...res, // total: res.payload.data.data ? res.payload.data.total : 0, }; }} onReset={(v) => { setName(null); setAjob(null); }} /> {/* */}
{ if ( user && user.authorized && JSON.parse(sessionStorage.getItem('user')) ) { dispatch(push('/article')); } else { dispatch(push('/login')); } }} > 进入后台 ); } function mapStateToProps(state) { const { auth, global } = state; return { // loding: party.isRequesting, // user: auth.user, // actions: global.actions, }; } export default connect(mapStateToProps)(Management);