import React, { useState, useEffect } from "react"; import { Tag, Button, Card, Row, Col, Table, Select, Input, Flex, Typography, message, Tooltip, } from "antd"; import { Connect } from "@cqsjjb/jjb-dva-runtime"; import { NS_SAFETY_EVAL_BUSINESS } from "~/enumerate/namespace"; import { tools } from "@cqsjjb/jjb-common-lib"; const { TextArea } = Input; const { router } = tools; const CONCLUSION_OPTIONS = [ { value: "conform_to", label: "符合" }, { value: "not_conform_to", label: "需修改" }, ]; const TechnicalReviewContent = (props) => { const projectId = router.query?.id; const { techReviewDetail } = props.safetyEvalBusiness || {}; const { techReview, reviewers, reviewItems } = techReviewDetail || {}; const [rows, setRows] = useState([]); const [overallOpinion, setOverallOpinion] = useState(""); const [selectedReviewer, setSelectedReviewer] = useState(undefined); const fetchDetail = () => { props.evalTechReviewDetail({ projectId }).then((res) => { if (res?.success) { const co = res.data?.signTaskPersonCo; if (co?.signerPersonnelId) { setSelectedReviewer(co.signerPersonnelId); } } }); }; useEffect(() => { if (projectId) fetchDetail(); }, [projectId]); useEffect(() => { if (reviewItems) { setRows( reviewItems.map((item) => ({ ...item, _key: item.id || item.reviewDimensionCode, })), ); } if (techReview?.opinionContent) { setOverallOpinion(techReview.opinionContent); } }, [techReviewDetail]); const updateRow = (index, field, value) => { const next = [...rows]; next[index] = { ...next[index], [field]: value }; setRows(next); }; const isDispatched = techReview?.reviewerSignatureTaskStatus === "dispatched"; const staffMatch = techReview?.staffMatchCode === 1 ? "满足" : "不满足"; const inBizScope = techReview?.inBizScopeFlag === 1 ? "在范围内" : "不在范围内"; const handleAssign = async () => { if (!projectId) return; await handleConfirm("2"); const res = await props.evalTechReviewAssign({ projectId, signTaskPersonCmd: { signerPersonnelId: selectedReviewer, signerName: reviewers?.find((r) => r.personnelId === selectedReviewer) ?.personnelName || "", }, }); if (res?.success !== false) { message.success("已下发签字任务"); } }; const handleConfirm = async (resultCode) => { if (!projectId) return; return new Promise(async (resolve, reject) => { const payload = { id: techReview?.id, projectId, resultCode, opinionContent: overallOpinion, reviewItems: rows.map((r) => ({ bizType: "eval_tech_review", bizId: techReview?.id, reviewDimensionCode: r.reviewDimensionCode, reviewDimensionName: r.reviewDimensionName, reviewFocus: r.reviewFocus, reviewConclusion: r.reviewConclusion, reviewOpinion: r.reviewOpinion, })), }; const res = await props.evalTechReviewConfirm(payload); if (res?.success !== false) { resolve(res); message.success( resultCode === "1" ? "已确认技审并提交过程控制" : "已保存", ); if (resultCode === "1") { props.getDetail?.(); } } else { reject(res); } }); }; const columns = [ { title: "审核维度", dataIndex: "reviewDimensionName", width: 120 }, { title: "技术审核重点", dataIndex: "reviewFocus", width: 200 }, { title: "结论", dataIndex: "reviewConclusion", width: 120, render: (val, _, idx) => ( ), }, { title: "技术意见", dataIndex: "reviewOpinion", render: (val, _, idx) => ( updateRow(idx, "reviewOpinion", e.target.value)} /> ), }, ]; return (