import React, { useEffect, useState, useRef } from "react"; import { Tag, Button, Card, Row, Col, Table, Form, Input, Select, Radio, DatePicker, Flex, message, Spin, Modal, } from "antd"; import dayjs from "dayjs"; import { Connect } from "@cqsjjb/jjb-dva-runtime"; import { NS_SAFETY_EVAL_BUSINESS } from "~/enumerate/namespace"; import {EVAL_TYPE_OPTIONS} from '~/enumerate/constant'; import { QUALIFICATION_INDUSTRY_OPTIONS } from "~/enumerate/enterpriseOptions"; import { tools } from "@cqsjjb/jjb-common-lib"; import AttachmentUpload from "~/components/AttachmentUpload"; const { router } = tools; const { TextArea } = Input; const RiskAnalysisContent = ({ readOnly, ...props }) => { const [form] = Form.useForm(); const projectId = router.query?.id; const { safetyEvalBusiness, evalRiskAnalysisGet, evalRiskAnalysisSave, evalRiskAnalysisPeopleSave, evalSignTaskSave, } = props; const { riskAnalysisLoading, evalProjectDetailLoading, riskAnalysisSaveLoading, evalSignTaskSaveLoading, evalProjectDetailData, } = safetyEvalBusiness || {}; // 查询风险分析数据回显 const [participantModalOpen, setParticipantModalOpen] = useState(false); const [selectedParticipantIds, setSelectedParticipantIds] = useState([]); const [signingIndex, setSigningIndex] = useState(null); const addParticipantRef = useRef(null); const fetchData = async () => { if (!projectId) return; const res = await evalRiskAnalysisGet({ projectId }); if (res?.success !== false && res?.data) { form.setFieldsValue({ ...res.data, riskFileUrl: res.data.riskFileUrl? JSON.parse(res.data.riskFileUrl) :undefined, analysisDate: res.data.analysisDate ? dayjs(res.data.analysisDate) : undefined, }); } else { form.setFieldsValue({ evalTypeCode: evalProjectDetailData.evalTypeCode, projectName: evalProjectDetailData.projectName, industryName: evalProjectDetailData.industryCode, }); } }; useEffect(() => { if (evalProjectDetailData?.id) { fetchData(); } }, [projectId, evalProjectDetailData?.id]); // 保存 const handleSave = async (statusCode) => { const values = await form.validateFields(); const { analysisDate, ...rest } = values; // 检查是否有文件正在上传中 const fileList = rest.riskFileUrl || []; if (fileList.some((f) => f.status === "uploading")) { message.warning("文件上传中,请稍后再保存"); return; } if (statusCode === 2&&!rest.participants?.length) { message.warning("请选择风险分析人员"); return; } const res = await evalRiskAnalysisSave({ ...rest, projectId, statusCode, riskFileUrl: rest.riskFileUrl? JSON.stringify(rest.riskFileUrl) :undefined, analysisDate: analysisDate ? analysisDate.format("YYYY-MM-DD") : undefined, }); if (res?.success) { let peopleSaved = true; if (res.data && rest.participants?.length) { const result = await evalRiskAnalysisPeopleSave( rest.participants.map((item) => { return { ...item, riskId: res.data.id, }; }), ); peopleSaved = result?.success; } if (peopleSaved) { message.success(statusCode === 2 ? "风险分析已完成" : "已暂存"); props.getDetail(); } } }; // 发起APP签字 const handleSignApp = async (fieldName) => { const participant = form.getFieldValue(["participants", fieldName]); if (!participant?.personnelId) { message.warning("该人员信息不完整,请先保存后再发起签字"); return; } setSigningIndex(fieldName); try { const res = await evalSignTaskSave({ projectId, nodeCode: "RISK_ANALYSIS", bizRefId: form.getFieldValue("id") || undefined, signerPersonnelId: participant.personnelId, taskTitle: "风险分析签字", taskStatusCode: 1, }); if (res?.success) { message.success("已发起APP签字"); form.setFieldValue(["participants", fieldName, "signStatusCode"], 1); } } finally { setSigningIndex(null); } }; return (
市场部经办人 / 市场部经理 市场部组织前置条件调查和风险分析,相关职能部门参与;市场部经理依据分析结果决定是否签订技术服务合同。