import React, { useState, useEffect } from "react"; import { Form, Table, Button, Tag, Modal, Row, Col, Card, Statistic, Descriptions, Steps, Tooltip, } from "antd"; 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 { NS_SAFETY_EVAL_BUSINESS } from "~/enumerate/namespace"; import { PROGRESS_STATUS_MAP, NODE_LABELS, EVAL_TYPE_MAP, } from "~/enumerate/constant"; import { Connect } from "@cqsjjb/jjb-dva-runtime"; import { tools } from "@cqsjjb/jjb-common-lib"; import "./index.less"; const { router } = tools; const ProjectProgress = (props) => { const [searchForm] = Form.useForm(); const [dataSource, setDataSource] = useState([]); const [total, setTotal] = useState(0); const [statData, setStatData] = useState({}); const [detailModalVisible, setDetailModalVisible] = useState(false); const [currentRecord, setCurrentRecord] = useState(null); const { evalProjectProgressPageLoading } = props.safetyEvalBusiness; const getStat = async () => { const res = await props.evalProjectProgressStat(); if (res?.success !== false) { setStatData(res?.data || {}); } }; const getData = async () => { const params = { ...router.query, current: router.query.current || 1, size: router.query.size || 10, }; const res = await props.evalProjectProgressPage(params); if (res?.success !== false) { setDataSource(res?.data || []); setTotal(res?.total || 0); } }; useEffect(() => { searchForm.setFieldsValue(router.query); getStat(); getData(); }, []); const handleSearch = (values) => { router.query = { ...router.query, ...values, current: 1, size: 10 }; getData(); }; const handleReset = (values) => { searchForm.resetFields(); router.query = { ...values, current: 1, size: 10 }; getData(); }; const handlePageChange = (pagination) => { router.query = { ...router.query, current: pagination.current, size: pagination.pageSize, }; getData(); }; const handleView = (record) => { setCurrentRecord(record); setDetailModalVisible(true); }; const renderProgressDots = (nodes) => { if (!nodes || nodes.length === 0) return 暂无进度; const total = nodes.length; const done = nodes.filter((n) => n.state === 1).length; return (