import { Connect } from "@cqsjjb/jjb-dva-runtime"; import { Button, Col, DatePicker, Form, Image, Input, InputNumber, message, Row, Select, Space, Upload, } from "antd"; import { PlusOutlined } from "@ant-design/icons"; import dayjs from "dayjs"; import { useEffect, useState } from "react"; import PageLayout from "@cqsjjb/jjb-react-admin-component/PageLayout"; import { CHONGQING_DISTRICTS, ENTERPRISE_SCALE_OPTIONS, ENTERPRISE_STATUS_OPTIONS, FILING_RECORD_STATUS_OPTIONS, FILING_TYPE_OPTIONS, } from "~/enumerate/enterpriseOptions"; import { NS_ORG_INFO } from "~/enumerate/namespace"; import { mockUploadFileList } from "~/utils/mockUpload"; import { creditCodeRule, latitudeRule, longitudeRule, nonNegativeIntegerRule, phoneRule, positiveNumberRule, urlRule, } from "~/utils/validators"; function OrgInfoPage(props) { const [form] = Form.useForm(); const { orgInfoLoading } = props.orgInfo; const [editing, setEditing] = useState(true); const [submitting, setSubmitting] = useState(false); const [detail, setDetail] = useState({}); const [previewImage, setPreviewImage] = useState(""); /** 是否已存在机构数据(有 id 视为已入库,只能修改) */ const [hasExistingData, setHasExistingData] = useState(false); const selectDistrictOptions = CHONGQING_DISTRICTS.map((v) => ({ label: v, value: v, })); const loadDetail = async () => { try { const res = await props.orgInfoGet(); if (res?.data?.id) { setDetail(res.data); form.setFieldsValue({ ...res.data, productionDate: res.data.productionDate ? dayjs(res.data.productionDate) : undefined, }); setHasExistingData(true); setEditing(false); } else { setDetail({}); setHasExistingData(false); setEditing(true); form.setFieldsValue({ filingType: "确认备案", filingRecordStatus: "未备案", attachments: mockUploadFileList("资质申请书.pdf"), }); } } catch (err) { console.warn("[OrgInfo] loadDetail failed:", err); setDetail({}); setHasExistingData(false); setEditing(true); } }; useEffect(() => { loadDetail(); }, []); const handleCancelEdit = () => { if (hasExistingData) { form.setFieldsValue({ ...detail, productionDate: detail.productionDate ? dayjs(detail.productionDate) : undefined, }); setEditing(false); } else { form.resetFields(); } }; const handleSave = async (submitType) => { try { const formValues = await form.validateFields(); const values = { ...formValues, productionDate: formValues.productionDate ? dayjs(formValues.productionDate).format("YYYY-MM-DD") : undefined, }; setSubmitting(true); let request; if (hasExistingData) { // 已有数据:仅走修改接口 request = props.orgInfoSave; values.id = detail.id; } else { // 无数据:暂存、提交均走保存接口(草稿/已提交由 authStatusCode 区分) request = submitType === "draft" ? props.orgInfoDraft : props.orgInfoSave; } const res = await request(values); if (res?.success !== false) { message.success( hasExistingData ? "修改成功" : submitType === "draft" ? "暂存成功" : "提交成功", ); setEditing(false); loadDetail(); } } catch (err) { if (err?.errorFields) { return; } message.error( hasExistingData ? "修改失败,请稍后重试" : "保存失败,请稍后重试", ); } finally { setSubmitting(false); } }; return ( 机构信息管理
新成立或首次使用系统的安全评价机构,可通过系统提供的引导页面,详细填写机构的基本信息。
} extra={ hasExistingData && !editing && ( ) } >
{ return ( fileList?.map((file) => { return { url: file.response?.data.url || file.url, uid: file.uid, name: file.name, }; }) || [] ); }} > { const isImage = /\.(png|jpe?g|gif|bmp|webp|svg)(\?.*)?$/i.test( file.name || file.url || "", ); if (isImage) { setPreviewImage(file.url || file.thumbUrl); } else { window.open(file.url || file.thumbUrl); } }} listType="picture-card" action={`${window.process.env.app.API_HOST}/safety-eval/file/upload`} >
{editing && (
{!hasExistingData && ( )}
)} { if (!visible) setPreviewImage(""); }, }} />
); } export default Connect([NS_ORG_INFO], true)(OrgInfoPage);