safety-eval-service-frontend/src/pages/Container/EnterpriseInfo/OrgInfo/index.js

652 lines
21 KiB
JavaScript
Raw Normal View History

2026-06-23 18:07:30 +08:00
import { Connect } from "@cqsjjb/jjb-dva-runtime";
2026-06-29 16:45:58 +08:00
import {
Button,
Col,
DatePicker,
Form,
Input,
InputNumber,
message,
Row,
Select,
Space,
2026-07-14 11:29:29 +08:00
Flex,
2026-06-29 16:45:58 +08:00
} from "antd";
2026-07-02 11:00:31 +08:00
import AttachmentUpload from "~/components/AttachmentUpload";
2026-07-14 10:09:08 +08:00
import BaiduMapPicker from "~/components/BaiduMapPicker";
2026-06-29 16:45:58 +08:00
import dayjs from "dayjs";
2026-06-23 18:07:30 +08:00
import { useEffect, useState } from "react";
2026-06-29 16:45:58 +08:00
import PageLayout from "@cqsjjb/jjb-react-admin-component/PageLayout";
import {
CHONGQING_DISTRICTS,
ENTERPRISE_SCALE_OPTIONS,
ENTERPRISE_STATUS_OPTIONS,
2026-07-09 13:15:13 +08:00
REGISTERED_ORG_FILING_RECORD_STATUS_OPTIONS,
2026-07-08 18:14:50 +08:00
REGISTERED_ORG_FILING_TYPE_SEARCH_OPTIONS,
2026-07-14 11:29:29 +08:00
QUALIFICATION_INDUSTRY_OPTIONS,
ECONOMY_INDUSTRY_OPTIONS,
2026-06-29 16:45:58 +08:00
} from "~/enumerate/enterpriseOptions";
2026-06-23 18:07:30 +08:00
import { NS_ORG_INFO } from "~/enumerate/namespace";
2026-07-09 13:15:13 +08:00
2026-06-29 16:45:58 +08:00
import {
2026-07-09 09:43:00 +08:00
coordinatePairRule,
2026-06-29 16:45:58 +08:00
creditCodeRule,
latitudeRule,
longitudeRule,
nonNegativeIntegerRule,
2026-07-09 09:43:00 +08:00
normalizeUrl,
2026-06-29 16:45:58 +08:00
phoneRule,
positiveNumberRule,
urlRule,
} from "~/utils/validators";
2026-06-24 11:58:57 +08:00
2026-06-23 18:07:30 +08:00
function OrgInfoPage(props) {
const [form] = Form.useForm();
2026-06-29 16:45:58 +08:00
const { orgInfoLoading } = props.orgInfo;
2026-06-23 18:07:30 +08:00
const [editing, setEditing] = useState(true);
const [submitting, setSubmitting] = useState(false);
const [detail, setDetail] = useState({});
2026-07-14 10:09:08 +08:00
const [mapPickerVisible, setMapPickerVisible] = useState(false);
2026-06-24 11:58:57 +08:00
/** 是否已存在机构数据(有 id 视为已入库,只能修改) */
const [hasExistingData, setHasExistingData] = useState(false);
2026-06-23 18:07:30 +08:00
const loadDetail = async () => {
try {
2026-06-29 16:45:58 +08:00
const res = await props.orgInfoGet();
2026-06-24 11:58:57 +08:00
if (res?.data?.id) {
2026-06-23 18:07:30 +08:00
setDetail(res.data);
2026-06-29 16:45:58 +08:00
form.setFieldsValue({
...res.data,
productionDate: res.data.productionDate
? dayjs(res.data.productionDate)
: undefined,
2026-07-09 13:15:13 +08:00
attachmentUrls: res.data.attachmentUrls
? JSON.parse(res.data.attachmentUrls)
: null,
2026-06-29 16:45:58 +08:00
});
2026-06-24 11:58:57 +08:00
setHasExistingData(true);
2026-06-23 18:07:30 +08:00
setEditing(false);
2026-06-29 16:45:58 +08:00
} else {
2026-06-24 11:58:57 +08:00
setDetail({});
setHasExistingData(false);
2026-06-23 18:07:30 +08:00
setEditing(true);
}
2026-06-29 16:45:58 +08:00
} catch (err) {
2026-06-23 18:07:30 +08:00
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 = () => {
2026-07-09 13:15:13 +08:00
setEditing(false);
2026-06-24 11:58:57 +08:00
};
2026-06-23 18:07:30 +08:00
const handleSave = async (submitType) => {
try {
2026-06-29 16:45:58 +08:00
const formValues = await form.validateFields();
const values = {
...formValues,
productionDate: formValues.productionDate
? dayjs(formValues.productionDate).format("YYYY-MM-DD")
: undefined,
2026-07-09 13:15:13 +08:00
attachmentUrls: formValues.attachmentUrls
? JSON.stringify(formValues.attachmentUrls)
: null,
2026-07-09 09:43:00 +08:00
infoDisclosureUrl: formValues.infoDisclosureUrl
? normalizeUrl(formValues.infoDisclosureUrl)
: undefined,
2026-07-06 16:22:51 +08:00
authStatusCode: submitType === "draft" ? 0 : 1,
authStatusName: submitType === "draft" ? "草稿" : "已提交",
2026-06-29 16:45:58 +08:00
};
2026-06-23 18:07:30 +08:00
setSubmitting(true);
2026-06-24 11:58:57 +08:00
let request;
if (hasExistingData) {
2026-07-06 16:22:51 +08:00
request = props.orgInfoModify;
2026-06-24 11:58:57 +08:00
values.id = detail.id;
2026-06-29 16:45:58 +08:00
} else {
request =
submitType === "draft" ? props.orgInfoDraft : props.orgInfoSave;
2026-06-24 11:58:57 +08:00
}
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
? "修改成功"
2026-06-29 16:45:58 +08:00
: submitType === "draft"
? "暂存成功"
: "提交成功",
2026-06-24 11:58:57 +08:00
);
2026-06-23 18:07:30 +08:00
setEditing(false);
loadDetail();
}
2026-07-09 13:15:13 +08:00
} finally {
2026-06-23 18:07:30 +08:00
setSubmitting(false);
}
};
2026-07-14 10:09:08 +08:00
const handleMapConfirm = ({ lng, lat }) => {
form.setFieldsValue({ longitude: lng, latitude: lat });
setMapPickerVisible(false);
};
2026-06-23 18:07:30 +08:00
return (
2026-06-29 16:45:58 +08:00
<PageLayout
2026-06-30 18:30:30 +08:00
title={
<div>
<span>机构信息管理</span>
2026-07-06 16:22:51 +08:00
<div className="pageLayout-extra">
2026-06-30 18:30:30 +08:00
新成立或首次使用系统的安全评价机构可通过系统提供的引导页面详细填写机构的基本信息
</div>
</div>
}
2026-06-29 16:45:58 +08:00
extra={
hasExistingData &&
!editing && (
2026-06-30 17:43:05 +08:00
<Button
type="primary"
loading={orgInfoLoading}
onClick={() => setEditing(true)}
>
2026-06-23 18:07:30 +08:00
修改
</Button>
2026-06-29 16:45:58 +08:00
)
}
>
<Form form={form} labelCol={{ span: 10 }} disabled={!editing}>
<Row gutter={[16, 16]}>
<Col span={12}>
<Form.Item
2026-07-06 16:22:51 +08:00
name="unitName"
2026-06-29 16:45:58 +08:00
label="生产经营单位名称"
rules={[{ required: true, message: "请输入生产经营单位名称" }]}
>
2026-07-14 10:09:08 +08:00
<Input
placeholder="请输入生产经营单位名称"
allowClear
maxLength={200}
/>
2026-06-29 16:45:58 +08:00
</Form.Item>
</Col>
<Col span={12}>
<Form.Item
name="creditCode"
label="统一社会信用代码"
rules={[creditCodeRule(true)]}
>
2026-07-14 10:09:08 +08:00
<Input
placeholder="请输入统一社会信用代码"
allowClear
maxLength={18}
/>
2026-06-29 16:45:58 +08:00
</Form.Item>
</Col>
<Col span={12}>
<Form.Item
2026-07-14 11:29:29 +08:00
name="safetyIndustryCategoryCode"
2026-06-29 16:45:58 +08:00
label="安全生产监管行业类别"
rules={[
2026-07-14 11:29:29 +08:00
{ required: true, message: "请选择安全生产监管行业类别" },
2026-06-29 16:45:58 +08:00
]}
>
2026-07-14 11:29:29 +08:00
<Select
options={QUALIFICATION_INDUSTRY_OPTIONS}
2026-07-14 16:51:18 +08:00
// mode="multiple"
2026-07-14 11:29:29 +08:00
placeholder="请选择安全生产监管行业类别"
2026-07-14 10:09:08 +08:00
allowClear
2026-07-14 11:29:29 +08:00
onChange={(value, option) => {
form.setFieldValue(
"safetyIndustryCategoryName",
2026-07-14 16:51:18 +08:00
option?.label || "",
//option?.map((item) => item.label).join(",") || "",
2026-07-14 11:29:29 +08:00
);
}}
2026-07-14 10:09:08 +08:00
/>
2026-06-29 16:45:58 +08:00
</Form.Item>
2026-07-14 11:29:29 +08:00
<Form.Item name="safetyIndustryCategoryName" noStyle />
2026-06-29 16:45:58 +08:00
</Col>
<Col span={12}>
<Form.Item
2026-07-10 17:11:22 +08:00
name="districtCode"
2026-06-29 16:45:58 +08:00
label="属地"
rules={[{ required: true, message: "请选择属地" }]}
>
2026-06-30 17:43:05 +08:00
<Select
2026-07-06 16:22:51 +08:00
options={CHONGQING_DISTRICTS}
2026-06-30 17:43:05 +08:00
placeholder="请选择属地"
allowClear
2026-07-10 17:11:22 +08:00
onChange={(value, option) => {
form.setFieldValue("districtName", option?.label || "");
}}
2026-06-30 17:43:05 +08:00
/>
2026-06-29 16:45:58 +08:00
</Form.Item>
2026-07-10 17:11:22 +08:00
<Form.Item name="districtName" noStyle />
2026-06-29 16:45:58 +08:00
</Col>
<Col span={12}>
<Form.Item
2026-07-06 16:22:51 +08:00
name="townStreet"
2026-06-29 16:45:58 +08:00
label="所属镇、街道"
rules={[{ required: true, message: "请输入所属镇街道" }]}
>
2026-07-14 10:09:08 +08:00
<Input
placeholder="请输入所属镇街道"
allowClear
maxLength={100}
/>
2026-06-29 16:45:58 +08:00
</Form.Item>
</Col>
<Col span={12}>
2026-07-06 16:22:51 +08:00
<Form.Item name="villageCommunity" label="属村(社区)">
2026-07-14 10:09:08 +08:00
<Input
placeholder="请输入属村(社区)"
allowClear
maxLength={100}
/>
2026-06-29 16:45:58 +08:00
</Form.Item>
</Col>
<Col span={12}>
2026-07-14 10:09:08 +08:00
<Form.Item label="所在地坐标经度">
<Flex>
<Form.Item
name="longitude"
noStyle
dependencies={["latitude"]}
rules={[
{
validator(_, value) {
const latitude = form.getFieldValue("latitude");
if (
value !== undefined &&
value !== null &&
value !== "" &&
(latitude === undefined ||
latitude === null ||
latitude === "")
) {
return Promise.reject(
new Error("填写经度后,纬度必填"),
);
}
return Promise.resolve();
},
},
]}
>
<InputNumber
style={{ width: "100%" }}
min={-180}
max={180}
precision={6}
placeholder="请输入经度"
allowClear
/>
</Form.Item>
<Button onClick={() => setMapPickerVisible(true)}>选择</Button>
</Flex>
2026-06-29 16:45:58 +08:00
</Form.Item>
</Col>
<Col span={12}>
<Form.Item
name="latitude"
label="所在地坐标纬度"
2026-07-09 09:43:00 +08:00
dependencies={["longitude"]}
rules={[
latitudeRule(false),
coordinatePairRule("longitude", "纬度", "经度"),
]}
2026-06-29 16:45:58 +08:00
>
<InputNumber
style={{ width: "100%" }}
min={-90}
max={90}
precision={6}
placeholder="请输入纬度"
/>
</Form.Item>
</Col>
<Col span={12}>
<Form.Item
name="registerAddress"
label="注册地址"
rules={[{ required: true, message: "请输入注册地址" }]}
>
2026-07-14 10:09:08 +08:00
<Input.TextArea
rows={3}
placeholder="请输入注册地址"
maxLength={200}
/>
2026-06-29 16:45:58 +08:00
</Form.Item>
</Col>
<Col span={12}>
<Form.Item
name="businessAddress"
label="经营地址"
rules={[{ required: true, message: "请输入经营地址" }]}
>
2026-07-14 10:09:08 +08:00
<Input.TextArea
rows={3}
placeholder="请输入经营地址"
maxLength={200}
/>
2026-06-29 16:45:58 +08:00
</Form.Item>
</Col>
<Col span={12}>
2026-07-06 16:22:51 +08:00
<Form.Item name="ownershipTypeName" label="归属类型">
2026-07-13 16:07:51 +08:00
<Input placeholder="请输入归属类型" allowClear maxLength={50} />
2026-06-29 16:45:58 +08:00
</Form.Item>
</Col>
<Col span={12}>
<Form.Item
2026-07-06 16:22:51 +08:00
name="economyIndustryCode"
2026-06-29 16:45:58 +08:00
label="国民经济行业分类(GB/T4754-2017)"
>
2026-07-14 11:29:29 +08:00
<Select
options={ECONOMY_INDUSTRY_OPTIONS}
placeholder="请选择国民经济行业分类"
2026-07-14 10:09:08 +08:00
allowClear
2026-07-14 11:29:29 +08:00
onChange={(value, option) => {
form.setFieldValue(
"economyIndustryName",
option?.label || "",
);
}}
2026-07-14 10:09:08 +08:00
/>
2026-06-29 16:45:58 +08:00
</Form.Item>
2026-07-14 11:29:29 +08:00
<Form.Item name="economyIndustryName" noStyle />
2026-06-29 16:45:58 +08:00
</Col>
<Col span={12}>
<Form.Item
name="legalRepresentative"
label="法定代表人"
rules={[{ required: true, message: "请输入法定代表人" }]}
>
2026-07-13 16:07:51 +08:00
<Input placeholder="请输入法定代表人" allowClear maxLength={50} />
2026-06-29 16:45:58 +08:00
</Form.Item>
</Col>
<Col span={12}>
<Form.Item
2026-07-06 16:22:51 +08:00
name="legalRepresentativePhone"
2026-06-29 16:45:58 +08:00
label="法定代表人联系电话"
rules={[phoneRule("法定代表人联系电话", false)]}
2026-07-09 13:15:13 +08:00
normalize={(value) =>
typeof value === "string" ? value.trim() : value
}
2026-06-29 16:45:58 +08:00
>
2026-07-14 10:09:08 +08:00
<Input
placeholder="请输入法定代表人联系电话"
allowClear
maxLength={11}
/>
2026-06-29 16:45:58 +08:00
</Form.Item>
</Col>
<Col span={12}>
<Form.Item
2026-07-06 16:22:51 +08:00
name="principalName"
2026-06-29 16:45:58 +08:00
label="主要负责人"
rules={[{ required: true, message: "请输入主要负责人" }]}
>
2026-07-13 16:07:51 +08:00
<Input placeholder="请输入主要负责人" allowClear maxLength={50} />
2026-06-29 16:45:58 +08:00
</Form.Item>
</Col>
<Col span={12}>
<Form.Item
name="principalPhone"
label="主要负责人联系电话"
rules={[phoneRule("主要负责人联系电话", true)]}
2026-07-09 13:15:13 +08:00
normalize={(value) =>
typeof value === "string" ? value.trim() : value
}
2026-06-29 16:45:58 +08:00
>
2026-07-14 10:09:08 +08:00
<Input
placeholder="请输入主要负责人联系电话"
allowClear
maxLength={11}
/>
2026-06-29 16:45:58 +08:00
</Form.Item>
</Col>
<Col span={12}>
2026-07-06 16:22:51 +08:00
<Form.Item name="safetyDeptManager" label="安全管理部门负责人">
2026-07-14 10:09:08 +08:00
<Input
placeholder="请输入安全管理部门负责人"
allowClear
maxLength={50}
/>
2026-06-29 16:45:58 +08:00
</Form.Item>
</Col>
<Col span={12}>
<Form.Item
2026-07-06 16:22:51 +08:00
name="safetyDeptManagerPhone"
2026-06-29 16:45:58 +08:00
label="安全管理部门负责人联系电话"
rules={[phoneRule("安全管理部门负责人联系电话", false)]}
2026-07-09 13:15:13 +08:00
normalize={(value) =>
typeof value === "string" ? value.trim() : value
}
2026-06-29 16:45:58 +08:00
>
2026-06-30 17:43:05 +08:00
<Input
placeholder="请输入安全管理部门负责人联系电话"
allowClear
2026-07-13 16:07:51 +08:00
maxLength={11}
2026-06-30 17:43:05 +08:00
/>
2026-06-29 16:45:58 +08:00
</Form.Item>
</Col>
2026-07-10 17:11:22 +08:00
2026-06-29 16:45:58 +08:00
<Col span={12}>
<Form.Item
2026-07-06 16:22:51 +08:00
name="safetyDeputyPhone"
2026-06-29 16:45:58 +08:00
label="主管安全副总联系电话"
rules={[phoneRule("主管安全副总联系电话", false)]}
2026-07-09 13:15:13 +08:00
normalize={(value) =>
typeof value === "string" ? value.trim() : value
}
2026-06-29 16:45:58 +08:00
>
2026-07-14 10:09:08 +08:00
<Input
placeholder="请输入主管安全副总联系电话"
allowClear
maxLength={11}
/>
2026-06-29 16:45:58 +08:00
</Form.Item>
</Col>
<Col span={12}>
<Form.Item name="productionDate" label="投产日期">
2026-06-30 17:43:05 +08:00
<DatePicker
style={{ width: "100%" }}
placeholder="请选择投产日期"
/>
2026-06-29 16:45:58 +08:00
</Form.Item>
</Col>
<Col span={12}>
2026-07-06 16:22:51 +08:00
<Form.Item name="businessStatusName" label="企业经营状态">
2026-07-14 10:09:08 +08:00
<Input
placeholder="请输入企业经营状态"
allowClear
maxLength={50}
/>
2026-06-29 16:45:58 +08:00
</Form.Item>
</Col>
<Col span={12}>
<Form.Item
2026-07-06 16:22:51 +08:00
name="infoDisclosureUrl"
2026-06-29 16:45:58 +08:00
label="信息公开网址"
rules={[urlRule("信息公开网址", false)]}
2026-07-09 13:15:13 +08:00
normalize={(value) =>
typeof value === "string" ? value.trim() : value
}
2026-06-29 16:45:58 +08:00
>
2026-07-14 10:09:08 +08:00
<Input
placeholder="请输入信息公开网址"
allowClear
maxLength={200}
/>
2026-06-29 16:45:58 +08:00
</Form.Item>
</Col>
<Col span={12}>
<Form.Item
name="workplaceArea"
label="工作场所建筑面积"
rules={[positiveNumberRule("工作场所建筑面积", false)]}
>
2026-06-30 17:43:05 +08:00
<InputNumber
style={{ width: "100%" }}
min={0}
2026-07-14 10:09:08 +08:00
max={99999}
2026-06-30 17:43:05 +08:00
precision={2}
placeholder="请输入工作场所建筑面积"
/>
2026-06-29 16:45:58 +08:00
</Form.Item>
</Col>
<Col span={12}>
<Form.Item
name="archiveRoomArea"
label="档案室面积"
rules={[positiveNumberRule("档案室面积", false)]}
>
2026-06-30 17:43:05 +08:00
<InputNumber
style={{ width: "100%" }}
min={0}
2026-07-14 10:09:08 +08:00
max={99999}
2026-06-30 17:43:05 +08:00
precision={2}
placeholder="请输入档案室面积"
/>
2026-06-29 16:45:58 +08:00
</Form.Item>
</Col>
<Col span={12}>
<Form.Item
2026-07-06 16:22:51 +08:00
name="fulltimeEvaluatorCount"
2026-06-29 16:45:58 +08:00
label="专职安全评价师数量"
rules={[nonNegativeIntegerRule("专职安全评价师数量", false)]}
>
2026-06-30 17:43:05 +08:00
<InputNumber
style={{ width: "100%" }}
min={0}
2026-07-14 10:09:08 +08:00
max={99999}
2026-06-30 17:43:05 +08:00
precision={0}
placeholder="请输入专职安全评价师数量"
/>
2026-06-29 16:45:58 +08:00
</Form.Item>
</Col>
<Col span={12}>
<Form.Item
2026-07-06 16:22:51 +08:00
name="registeredEngineerCount"
2026-06-29 16:45:58 +08:00
label="注册安全工程师数量"
rules={[nonNegativeIntegerRule("注册安全工程师数量", false)]}
>
2026-06-30 17:43:05 +08:00
<InputNumber
style={{ width: "100%" }}
min={0}
2026-07-14 10:09:08 +08:00
max={99999}
2026-06-30 17:43:05 +08:00
precision={0}
placeholder="请输入注册安全工程师数量"
/>
2026-06-29 16:45:58 +08:00
</Form.Item>
</Col>
<Col span={12}>
2026-07-10 17:11:22 +08:00
<Form.Item name="enterpriseStatusCode" label="企业状态">
2026-06-30 17:43:05 +08:00
<Select
options={ENTERPRISE_STATUS_OPTIONS}
placeholder="请选择企业状态"
allowClear
2026-07-10 17:11:22 +08:00
onChange={(value, option) => {
console.log(value, option);
form.setFieldValue(
"enterpriseStatusName",
option?.label || "",
);
}}
2026-06-30 17:43:05 +08:00
/>
2026-06-29 16:45:58 +08:00
</Form.Item>
2026-07-10 17:11:22 +08:00
<Form.Item name="enterpriseStatusName" noStyle />
2026-06-29 16:45:58 +08:00
</Col>
<Col span={12}>
2026-07-10 17:11:22 +08:00
<Form.Item name="enterpriseScaleCode" label="企业规模">
2026-06-30 17:43:05 +08:00
<Select
options={ENTERPRISE_SCALE_OPTIONS}
placeholder="请选择企业规模"
allowClear
2026-07-10 17:11:22 +08:00
onChange={(value, option) => {
form.setFieldValue(
"enterpriseScaleName",
option?.label || "",
);
}}
2026-06-30 17:43:05 +08:00
/>
2026-06-29 16:45:58 +08:00
</Form.Item>
2026-07-10 17:11:22 +08:00
<Form.Item name="enterpriseScaleName" noStyle />
2026-06-29 16:45:58 +08:00
</Col>
<Col span={12}>
2026-07-09 13:15:13 +08:00
<Form.Item name="filingTypeCode" label="备案类型">
2026-06-30 17:43:05 +08:00
<Select
2026-07-08 18:14:50 +08:00
options={REGISTERED_ORG_FILING_TYPE_SEARCH_OPTIONS}
2026-06-30 17:43:05 +08:00
placeholder="请选择备案类型"
allowClear
2026-07-10 17:11:22 +08:00
onChange={(value, option) => {
2026-07-09 13:15:13 +08:00
form.setFieldValue("filingTypeName", option?.label);
}}
2026-06-30 17:43:05 +08:00
/>
2026-06-29 16:45:58 +08:00
</Form.Item>
2026-07-09 13:15:13 +08:00
<Form.Item name="filingTypeName" noStyle />
2026-06-29 16:45:58 +08:00
</Col>
<Col span={12}>
2026-07-09 13:15:13 +08:00
<Form.Item name="filingRecordStatusCode" label="备案状态">
2026-06-30 17:43:05 +08:00
<Select
2026-07-09 13:15:13 +08:00
options={REGISTERED_ORG_FILING_RECORD_STATUS_OPTIONS}
2026-06-30 17:43:05 +08:00
placeholder="请选择备案状态"
allowClear
2026-07-10 17:11:22 +08:00
onChange={(value, option) => {
form.setFieldValue(
"filingRecordStatusName",
option?.label || "",
);
2026-07-09 13:15:13 +08:00
}}
2026-06-30 17:43:05 +08:00
/>
2026-06-29 16:45:58 +08:00
</Form.Item>
2026-07-10 17:11:22 +08:00
<Form.Item name="filingRecordStatusName" noStyle />
2026-06-29 16:45:58 +08:00
</Col>
<Col span={12}>
2026-07-14 10:09:08 +08:00
<AttachmentUpload
name="attachmentUrls"
label="上传附件"
extra={"最多上传10个PDF、DOC、DOCX格式文件"}
maxCount={10}
accept=".pdf,.doc,.docx"
/>
2026-06-29 16:45:58 +08:00
</Col>
</Row>
</Form>
2026-07-14 10:09:08 +08:00
<BaiduMapPicker
visible={mapPickerVisible}
onCancel={() => setMapPickerVisible(false)}
onConfirm={handleMapConfirm}
/>
2026-06-23 18:07:30 +08:00
{editing && (
<div style={{ marginTop: 24, textAlign: "center" }}>
<Space>
2026-06-29 16:45:58 +08:00
<Button onClick={handleCancelEdit}>取消</Button>
2026-06-24 11:58:57 +08:00
{!hasExistingData && (
<Button loading={submitting} onClick={() => handleSave("draft")}>
暂存
</Button>
)}
2026-06-29 16:45:58 +08:00
<Button
type="primary"
loading={submitting}
onClick={() => handleSave("submit")}
>
2026-06-23 18:07:30 +08:00
提交
</Button>
</Space>
</div>
)}
2026-06-29 16:45:58 +08:00
</PageLayout>
2026-06-23 18:07:30 +08:00
);
}
export default Connect([NS_ORG_INFO], true)(OrgInfoPage);