import React, { useState, useEffect } from "react"; import { Row, Col, Card, Statistic, Table, Tag, Form, Space, Tooltip, } from "antd"; import dayjs from "dayjs"; import { AntdTableFuncControl } from "@cqsjjb/jjb-common-decorator/antd"; import PageLayout from "@cqsjjb/jjb-react-admin-component/PageLayout"; import SearchForm from "@cqsjjb/jjb-react-admin-component/SearchForm"; import ControlWrapper from "@cqsjjb/jjb-react-admin-component/ControlWrapper"; import { Connect } from "@cqsjjb/jjb-dva-runtime"; import { NS_SAFETY_EVAL_BUSINESS } from "~/enumerate/namespace"; import { tools } from "@cqsjjb/jjb-common-lib"; import { EVAL_TYPE_OPTIONS, EVAL_TYPE_MAP, MONITOR_WARING_STATUS_OPTIONS, } from "~/enumerate/constant"; import { QUALIFICATION_INDUSTRY_OPTIONS, QUALIFICATION_INDUSTRY_OPTIONS_MAP, } from "~/enumerate/enterpriseOptions"; import "./index.less"; const { router } = tools; const STAT_ITEMS = [ { key: "monitoringCount", title: "在监项目", color: "#1677ff" }, { key: "normalCount", title: "正常执行", color: "#52c41a" }, { key: "warningCount", title: "进度/人员预警", color: "#faad14" }, { key: "monthPlanCompleteCount", title: "本月计划完成", color: "#722ed1" }, ]; const EvalProjectMonitor = (props) => { const [searchForm] = Form.useForm(); const [dataSource, setDataSource] = useState([]); const [total, setTotal] = useState(0); const { safetyEvalBusiness, evalProjectMonitorStat, evalProjectMonitorPage } = props; const { evalProjectMonitorStatLoading, evalProjectMonitorPageLoading } = safetyEvalBusiness || {}; const statData = safetyEvalBusiness?.evalProjectMonitorStat || {}; const getStat = async () => { evalProjectMonitorStat(); }; const getData = async () => { const params = { ...router.query, current: router.query.current || 1, size: router.query.size || 10, }; const res = await evalProjectMonitorPage(params); if (res?.success !== false) { setDataSource(res?.data || []); setTotal(res?.total || 0); } }; useEffect(() => { searchForm.setFieldsValue({ ...router.query, planEndDateRange: router.query.planEndDateStart && router.query.planEndDateEnd ? [ dayjs(router.query.planEndDateStart), dayjs(router.query.planEndDateEnd), ] : undefined, }); getStat(); getData(); }, []); const handleSearch = (values) => { const { planEndDateRange, ...rest } = values; router.query = { ...rest, planEndDateStart: planEndDateRange?.[0]?.format?.("YYYY-MM-DD") || undefined, planEndDateEnd: planEndDateRange?.[1]?.format?.("YYYY-MM-DD") || undefined, current: 1, size: 10, }; getData(); }; const handleReset = (values) => { searchForm.resetFields(); values.planEndDateStart = undefined; values.planEndDateEnd = undefined; router.query = { ...values, current: 1, size: 10 }; getData(); }; const handlePageChange = (pagination) => { router.query = { ...router.query, current: pagination.current, size: pagination.pageSize, }; getData(); }; const renderWaringStatus = (_, record) => { if (record.waringStatus === "NORMAL") { return 正常; } const tags = []; if (record.processWaringMsg) { tags.push( 进度预警 , ); } if (record.personnelWaringMsg) { tags.push( 人员异常 , ); } return {tags}; }; const columns = [ { title: "项目编号", dataIndex: "projectNo", width: 140 }, { title: "项目名称", dataIndex: "projectName", ellipsis: true, width: 220 }, { title: "评价机构", dataIndex: "orgName", ellipsis: true, width: 200 }, { title: "评价类型", dataIndex: "evalTypeCode", width: 120, render: (code) => EVAL_TYPE_MAP[code] || code, }, { title: "行业", dataIndex: "industryCode", width: 140, ellipsis: true, render: (code) => QUALIFICATION_INDUSTRY_OPTIONS_MAP[code] || code, }, { title: "负责人", dataIndex: "leaderName", width: 90 }, { title: "计划完成", dataIndex: "planEndDate", width: 120 }, { title: "状态", width: 100, render: renderWaringStatus, }, { title: "操作", width: 180, fixed: "right", render: (_, record) => ( ), } ]; return ( {STAT_ITEMS.map((item) => ( ))} , , , , , , ]} onFinish={handleSearch} onReset={handleReset} /> `共 ${t} 条`, }} onChange={handlePageChange} /> ); }; export default Connect( [NS_SAFETY_EVAL_BUSINESS], true, )(AntdTableFuncControl(EvalProjectMonitor));