2026-06-23 18:07:30 +08:00
|
|
|
import { Connect } from "@cqsjjb/jjb-dva-runtime";
|
|
|
|
|
import { Button, Form, message, Space } from "antd";
|
|
|
|
|
import { useEffect, useState } from "react";
|
|
|
|
|
import FormBuilder from "zy-react-library/components/FormBuilder";
|
|
|
|
|
import Page from "zy-react-library/components/Page";
|
2026-06-26 14:27:49 +08:00
|
|
|
import { getOrgInfoDetail } from "~/api/enterpriseInfo/orgBootstrap";
|
2026-06-23 18:07:30 +08:00
|
|
|
import PageHeader from "../components/PageHeader";
|
|
|
|
|
import { NS_ORG_INFO } from "~/enumerate/namespace";
|
2026-06-26 14:27:49 +08:00
|
|
|
import { mockUploadFileList } from "~/utils/mockUpload";
|
2026-06-26 17:28:06 +08:00
|
|
|
import { buildOrgInfoFormOptions } from "./formOptions";
|
2026-06-24 11:58:57 +08:00
|
|
|
|
2026-06-23 18:07:30 +08:00
|
|
|
function OrgInfoPage(props) {
|
|
|
|
|
const [form] = Form.useForm();
|
|
|
|
|
const [editing, setEditing] = useState(true);
|
|
|
|
|
const [submitting, setSubmitting] = useState(false);
|
|
|
|
|
const [detail, setDetail] = useState({});
|
2026-06-24 11:58:57 +08:00
|
|
|
/** 是否已存在机构数据(有 id 视为已入库,只能修改) */
|
|
|
|
|
const [hasExistingData, setHasExistingData] = useState(false);
|
2026-06-23 18:07:30 +08:00
|
|
|
|
2026-06-26 17:28:06 +08:00
|
|
|
const formOptions = buildOrgInfoFormOptions();
|
|
|
|
|
|
2026-06-23 18:07:30 +08:00
|
|
|
const loadDetail = async () => {
|
|
|
|
|
try {
|
2026-06-26 14:27:49 +08:00
|
|
|
const res = getOrgInfoDetail();
|
2026-06-24 11:58:57 +08:00
|
|
|
if (res?.data?.id) {
|
2026-06-23 18:07:30 +08:00
|
|
|
setDetail(res.data);
|
|
|
|
|
form.setFieldsValue(res.data);
|
2026-06-24 11:58:57 +08:00
|
|
|
setHasExistingData(true);
|
2026-06-23 18:07:30 +08:00
|
|
|
setEditing(false);
|
|
|
|
|
}
|
|
|
|
|
else {
|
2026-06-24 11:58:57 +08:00
|
|
|
setDetail({});
|
|
|
|
|
setHasExistingData(false);
|
2026-06-23 18:07:30 +08:00
|
|
|
setEditing(true);
|
2026-06-26 14:27:49 +08:00
|
|
|
form.setFieldsValue({
|
|
|
|
|
filingType: "确认备案",
|
|
|
|
|
filingRecordStatus: "未备案",
|
|
|
|
|
attachments: mockUploadFileList("资质申请书.pdf"),
|
|
|
|
|
});
|
2026-06-23 18:07:30 +08:00
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
catch (err) {
|
|
|
|
|
console.warn("[OrgInfo] loadDetail failed:", err);
|
2026-06-24 11:58:57 +08:00
|
|
|
setDetail({});
|
|
|
|
|
setHasExistingData(false);
|
2026-06-23 18:07:30 +08:00
|
|
|
setEditing(true);
|
|
|
|
|
}
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
useEffect(() => {
|
|
|
|
|
loadDetail();
|
|
|
|
|
}, []);
|
|
|
|
|
|
2026-06-24 11:58:57 +08:00
|
|
|
const handleCancelEdit = () => {
|
|
|
|
|
if (hasExistingData) {
|
|
|
|
|
form.setFieldsValue(detail);
|
|
|
|
|
setEditing(false);
|
|
|
|
|
}
|
|
|
|
|
else {
|
|
|
|
|
form.resetFields();
|
|
|
|
|
}
|
|
|
|
|
};
|
|
|
|
|
|
2026-06-23 18:07:30 +08:00
|
|
|
const handleSave = async (submitType) => {
|
|
|
|
|
try {
|
|
|
|
|
const values = await form.validateFields();
|
|
|
|
|
setSubmitting(true);
|
2026-06-24 11:58:57 +08:00
|
|
|
|
|
|
|
|
let request;
|
|
|
|
|
if (hasExistingData) {
|
|
|
|
|
// 已有数据:仅走修改接口
|
|
|
|
|
request = props.orgInfoSave;
|
|
|
|
|
values.id = detail.id;
|
|
|
|
|
}
|
|
|
|
|
else {
|
|
|
|
|
// 无数据:暂存、提交均走保存接口(草稿/已提交由 authStatusCode 区分)
|
|
|
|
|
request = submitType === "draft" ? props.orgInfoDraft : props.orgInfoSave;
|
|
|
|
|
}
|
|
|
|
|
|
2026-06-23 18:07:30 +08:00
|
|
|
const res = await request(values);
|
|
|
|
|
if (res?.success !== false) {
|
2026-06-24 11:58:57 +08:00
|
|
|
message.success(
|
|
|
|
|
hasExistingData
|
|
|
|
|
? "修改成功"
|
|
|
|
|
: (submitType === "draft" ? "暂存成功" : "提交成功"),
|
|
|
|
|
);
|
2026-06-23 18:07:30 +08:00
|
|
|
setEditing(false);
|
|
|
|
|
loadDetail();
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
catch (err) {
|
|
|
|
|
if (err?.errorFields) {
|
|
|
|
|
return;
|
|
|
|
|
}
|
2026-06-24 11:58:57 +08:00
|
|
|
message.error(hasExistingData ? "修改失败,请稍后重试" : "保存失败,请稍后重试");
|
2026-06-23 18:07:30 +08:00
|
|
|
}
|
|
|
|
|
finally {
|
|
|
|
|
setSubmitting(false);
|
|
|
|
|
}
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
return (
|
|
|
|
|
<Page isShowAllAction={false}>
|
|
|
|
|
<PageHeader
|
|
|
|
|
title="机构信息管理"
|
|
|
|
|
subTitle="新成立或首次使用系统的安全评价机构,可通过系统提供的引导页面,详细填写机构的基本信息。"
|
2026-06-24 11:58:57 +08:00
|
|
|
extra={hasExistingData && !editing && (
|
2026-06-23 18:07:30 +08:00
|
|
|
<Button type="primary" onClick={() => setEditing(true)}>
|
|
|
|
|
修改
|
|
|
|
|
</Button>
|
|
|
|
|
)}
|
|
|
|
|
/>
|
|
|
|
|
<FormBuilder
|
|
|
|
|
form={form}
|
|
|
|
|
span={12}
|
|
|
|
|
disabled={!editing}
|
2026-06-24 11:58:57 +08:00
|
|
|
useAutoGenerateRequired={false}
|
2026-06-23 18:07:30 +08:00
|
|
|
options={formOptions}
|
|
|
|
|
labelCol={{ span: 10 }}
|
|
|
|
|
showActionButtons={false}
|
|
|
|
|
/>
|
|
|
|
|
{editing && (
|
|
|
|
|
<div style={{ marginTop: 24, textAlign: "center" }}>
|
|
|
|
|
<Space>
|
2026-06-24 11:58:57 +08:00
|
|
|
<Button onClick={handleCancelEdit}>
|
2026-06-23 18:07:30 +08:00
|
|
|
取消
|
|
|
|
|
</Button>
|
2026-06-24 11:58:57 +08:00
|
|
|
{!hasExistingData && (
|
|
|
|
|
<Button loading={submitting} onClick={() => handleSave("draft")}>
|
|
|
|
|
暂存
|
|
|
|
|
</Button>
|
|
|
|
|
)}
|
2026-06-23 18:07:30 +08:00
|
|
|
<Button type="primary" loading={submitting} onClick={() => handleSave("submit")}>
|
|
|
|
|
提交
|
|
|
|
|
</Button>
|
|
|
|
|
</Space>
|
|
|
|
|
</div>
|
|
|
|
|
)}
|
|
|
|
|
</Page>
|
|
|
|
|
);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
export default Connect([NS_ORG_INFO], true)(OrgInfoPage);
|