on-site confirm

dev_1.2
luotaiqian 2026-07-24 17:09:48 +08:00
parent 4a7d7ce2bd
commit 30d891bae3
2 changed files with 47 additions and 2 deletions

View File

@ -137,6 +137,26 @@ export const CERT_TYPE_MAP = {
evaluator: "评价师", evaluator: "评价师",
}; };
/** 证书等级选项(按证书类型区分标签,后端枚举 SENIOR/MIDDLE/JUNIOR */
export const CERT_LEVEL_OPTIONS_BY_TYPE = {
registered_safety_engineer: [
{ label: "初级", value: "JUNIOR" },
{ label: "中级", value: "MIDDLE" },
{ label: "高级", value: "SENIOR" },
],
evaluator: [
{ label: "一级", value: "SENIOR" },
{ label: "二级", value: "MIDDLE" },
{ label: "三级", value: "JUNIOR" },
],
};
/** 证书等级 value → label 映射(按证书类型区分标签) */
export const CERT_LEVEL_LABEL_BY_TYPE = {
registered_safety_engineer: { SENIOR: "高级", MIDDLE: "中级", JUNIOR: "初级" },
evaluator: { SENIOR: "一级", MIDDLE: "二级", JUNIOR: "三级" },
};
/** 风险预警中心 — 预警大类映射 */ /** 风险预警中心 — 预警大类映射 */
export const RISK_TYPE_MAP = { export const RISK_TYPE_MAP = {
资质预警: { label: "资质预警", color: "error" }, 资质预警: { label: "资质预警", color: "error" },

View File

@ -23,7 +23,12 @@ import { NS_STAFF_CERTIFICATE } from "~/enumerate/namespace";
import CertPreviewImg from "~/components/CertPreviewImg"; import CertPreviewImg from "~/components/CertPreviewImg";
import AttachmentUpload from "~/components/AttachmentUpload"; import AttachmentUpload from "~/components/AttachmentUpload";
import { dateRangeRule } from "~/utils/validators"; import { dateRangeRule } from "~/utils/validators";
import { CERT_TYPE_OPTIONS, CERT_TYPE_MAP } from "~/enumerate/constant"; import {
CERT_TYPE_OPTIONS,
CERT_TYPE_MAP,
CERT_LEVEL_OPTIONS_BY_TYPE,
CERT_LEVEL_LABEL_BY_TYPE,
} from "~/enumerate/constant";
import { QUALIFICATION_INDUSTRY_OPTIONS, QUALIFICATION_INDUSTRY_OPTIONS_MAP } from "~/enumerate/enterpriseOptions"; import { QUALIFICATION_INDUSTRY_OPTIONS, QUALIFICATION_INDUSTRY_OPTIONS_MAP } from "~/enumerate/enterpriseOptions";
const { router } = tools; const { router } = tools;
@ -268,6 +273,8 @@ function CertModal({
const [uploadFileList, setUploadFileList] = useState([]); const [uploadFileList, setUploadFileList] = useState([]);
const [professionalCapabilityOptions, setProfessionalCapabilityOptions] = const [professionalCapabilityOptions, setProfessionalCapabilityOptions] =
useState([]); useState([]);
const certTypeCode = Form.useWatch("certTypeCode", form);
const certLevelOptions = CERT_LEVEL_OPTIONS_BY_TYPE[certTypeCode] || [];
const loadProfessionalCapabilities = async (industryCode) => { const loadProfessionalCapabilities = async (industryCode) => {
if (!industryCode) { if (!industryCode) {
@ -468,7 +475,22 @@ function CertModal({
label="证书类型" label="证书类型"
rules={[{ required: true, message: "请选择证书类型" }]} rules={[{ required: true, message: "请选择证书类型" }]}
> >
<Select placeholder="请选择证书类型" options={CERT_TYPE_OPTIONS} /> <Select
placeholder="请选择证书类型"
options={CERT_TYPE_OPTIONS}
onChange={() => form.setFieldValue("cert_level", undefined)}
/>
</Form.Item>
<Form.Item
name="certLevel"
label="证书等级"
rules={[{ required: true, message: "请选择证书等级" }]}
>
<Select
placeholder={certTypeCode ? "请选择证书等级" : "请先选择证书类型"}
options={certLevelOptions}
disabled={!certTypeCode}
/>
</Form.Item> </Form.Item>
<Form.Item <Form.Item
@ -583,6 +605,9 @@ function ViewModal({ open, currentId, staffCertificateInfo, onCancel }) {
<Descriptions.Item label="证书类型"> <Descriptions.Item label="证书类型">
{CERT_TYPE_MAP[info.certTypeCode] || info.certTypeCode} {CERT_TYPE_MAP[info.certTypeCode] || info.certTypeCode}
</Descriptions.Item> </Descriptions.Item>
<Descriptions.Item label="证书等级">
{CERT_LEVEL_LABEL_BY_TYPE[info.certTypeCode]?.[info.cert_level] || info.cert_level}
</Descriptions.Item>
<Descriptions.Item label="证书类别编码"> <Descriptions.Item label="证书类别编码">
{info.certCategoryCode} {info.certCategoryCode}
</Descriptions.Item> </Descriptions.Item>