dev-tmp1
tangjie 2026-08-12 11:07:14 +08:00
parent d2ce6e6b52
commit 64eac8a544
7 changed files with 222 additions and 210 deletions

View File

@ -19,7 +19,7 @@ export const VERIFY_STATUS_MAP = {
/** 审核状态 */
export const REVIEW_STATUS_MAP = {
1: { label: "审核", color: "success" },
1: { label: "审核通过", color: "success" },
2: { label: "审核中", color: "processing" },
3: { label: "打回", color: "error" },
};
@ -39,26 +39,24 @@ export const PUBLICITY_STATUS_MAP = {
/** 备案状态(通用,含变更审核中、暂存) */
export const FILING_STATUS_MAP = {
1: { label: "已备案", color: "success" },
2: { label: "审核中", color: "processing" },
3: { label: "打回", color: "error" },
1: { label: "确认通过", color: "success" },
2: { label: "待确认", color: "processing" },
3: { label: "打回", color: "error" },
4: { label: "变更审核中", color: "processing" },
5: { label: "暂存", color: "default" },
};
export const FILING_STATUS_MAP_CHANGE = {
1: { label: "已备案", color: "success" },
3: { label: "已打回", color: "error" },
4: { label: "变更审核中", color: "processing" },
1: { label: "审核通过", color: "success" },
3: { label: "打回", color: "error" },
4: { label: "待审核", color: "processing" },
};
/** 变更状态 */
export const CHANGE_STATUS_MAP = {
stuck: { label: "停滞中", color: "error" },
pending: { label: "待审核", color: "warning" },
approved: { label: "已审核", color: "success" },
};
export const CHANGE_STATUS_OPTIONS = [
{ label: "审核通过", value: 1 },
{ label: "打回", value: 3 },
{ label: "待审核", value: 4 },
];
/** 资质保持监控状态 */
export const QUAL_MONITOR_STATUS_MAP = {
@ -128,14 +126,38 @@ export const QUAL_MONITOR_STATUS_OPTIONS = [
/** 资质保持监控-业务范围专业能力配备标准 */
export const QUAL_MONITOR_STANDARD_ROWS = [
{ scope: "煤炭开采业", standard: "安全、机械、电气、采矿、通风、地质、矿建各 1 名及以上" },
{ scope: "金属、非金属矿及其他矿采选业", standard: "安全、机械、电气、采矿、通风、地质、水工结构各 1 名及以上" },
{ scope: "陆地石油和天然气开采业", standard: "安全、机械、电气、采油、储运各 1 名及以上" },
{ scope: "陆上油气管道运输业", standard: "油气储运 2 名及以上,设备、仪表、电气、防腐、安全各 1 名及以上" },
{ scope: "石油加工业,化学原料、化学品及医药制造业", standard: "化工工艺、化工机械、仪表自动化、电气、安全各 2 名及以上" },
{ scope: "烟花爆竹制造业和仓储业", standard: "火炸药(爆炸技术)、机械、电气、安全各 1 名及以上" },
{ scope: "金属冶炼", standard: "安全、机械、电气、冶金、有色金属各 1 名及以上" },
{ scope: "民用爆炸物品行业", standard: "火炸药爆炸技术10 名,机械、电气、安全各 2 名及以上" },
{
scope: "煤炭开采业",
standard: "安全、机械、电气、采矿、通风、地质、矿建各 1 名及以上",
},
{
scope: "金属、非金属矿及其他矿采选业",
standard: "安全、机械、电气、采矿、通风、地质、水工结构各 1 名及以上",
},
{
scope: "陆地石油和天然气开采业",
standard: "安全、机械、电气、采油、储运各 1 名及以上",
},
{
scope: "陆上油气管道运输业",
standard: "油气储运 2 名及以上,设备、仪表、电气、防腐、安全各 1 名及以上",
},
{
scope: "石油加工业,化学原料、化学品及医药制造业",
standard: "化工工艺、化工机械、仪表自动化、电气、安全各 2 名及以上",
},
{
scope: "烟花爆竹制造业和仓储业",
standard: "火炸药(爆炸技术)、机械、电气、安全各 1 名及以上",
},
{
scope: "金属冶炼",
standard: "安全、机械、电气、冶金、有色金属各 1 名及以上",
},
{
scope: "民用爆炸物品行业",
standard: "火炸药爆炸技术10 名,机械、电气、安全各 2 名及以上",
},
];
/** 证书类型选项 */
@ -166,7 +188,11 @@ export const CERT_LEVEL_OPTIONS_BY_TYPE = {
/** 证书等级 value → label 映射(按证书类型区分标签) */
export const CERT_LEVEL_LABEL_BY_TYPE = {
registered_safety_engineer: { SENIOR: "高级", MIDDLE: "中级", JUNIOR: "初级" },
registered_safety_engineer: {
SENIOR: "高级",
MIDDLE: "中级",
JUNIOR: "初级",
},
evaluator: { SENIOR: "一级", MIDDLE: "二级", JUNIOR: "三级" },
};
@ -440,24 +466,86 @@ export const PROJECT_TYPE_OPTIONS = [
{ label: "变更项目", value: "CHANGE" },
];
export const PROJECT_TYPE_MAP= PROJECT_TYPE_OPTIONS.reduce((acc, cur) => {
export const PROJECT_TYPE_MAP = PROJECT_TYPE_OPTIONS.reduce((acc, cur) => {
acc[cur.value] = cur.label;
return acc;
}, {});
export const ROLE_DEFINITIONS = [
{ value: "MARKETING_BUSINESS_REP", name: "市场部业务员", unique: false, summary: "获取项目基础信息,形成风险分析记录;风险通过后签订合同并下达任务通知单。" },
{ value: "TECHNICAL_LEAD", name: "技术负责人", unique: false, summary: "评估人员专业匹配与技术可行性,审核检查表并开展评价报告技术审核。" },
{ value: "PROCESS_CONTROL_LEAD", name: "过程控制负责人", unique: true, summary: "核查利益冲突、资质范围和人员配置,负责受控管理、程序合规审核及归档前校验。" },
{ value: "FINANCE_STAFF", name: "财务人员", unique: false, summary: "核算人工、费用、税金和利润等全成本,评估项目经济性及合同金额合理性。" },
{ value: "EVALUATION_AGENCY_HEAD", name: "评价机构负责人", unique: false, summary: "综合多方意见决定是否承接项目,并在全部审核通过后终审签发评价报告。" },
{ value: "EVALUATION_DEPT_MANAGER", name: "评价部经理", unique: false, summary: "签发项目组任命文件,审核组长资格、行业经验及成员专业配置。" },
{ value: "PROJECT_LEAD", name: "项目负责人(项目组组长)", unique: true, summary: "制定实施计划并组织启动、初勘、检查表、现场勘查、整改复查及报告编制。" },
{ value: "PROJECT_TEAM_MEMBERS", name: "项目组各专业组员", unique: false, summary: "按专业分工开展资料收集、检查表编制、现场检查、危险辨识和评价报告专业内容编写。" },
{ value: "INTERNAL_AUDITOR", name: "内审人", unique: false, summary: "审核报告初稿及修改结果,重点核查依据、危险辨识、单元划分、评价方法和结论。" },
{ value: "REPORT_COMPILER", name: "报告编制人", unique: false, summary: "整合各专业内容形成报告初稿,根据各级审核意见修改并整理全过程档案。" },
{ value: "ARCHIVES_ADMIN", name: "档案管理员", unique: false, summary: "办理档案交接、编号、分类、装订和入库,并按规定开展报告信息公开。" },
{
value: "MARKETING_BUSINESS_REP",
name: "市场部业务员",
unique: false,
summary:
"获取项目基础信息,形成风险分析记录;风险通过后签订合同并下达任务通知单。",
},
{
value: "TECHNICAL_LEAD",
name: "技术负责人",
unique: false,
summary: "评估人员专业匹配与技术可行性,审核检查表并开展评价报告技术审核。",
},
{
value: "PROCESS_CONTROL_LEAD",
name: "过程控制负责人",
unique: true,
summary:
"核查利益冲突、资质范围和人员配置,负责受控管理、程序合规审核及归档前校验。",
},
{
value: "FINANCE_STAFF",
name: "财务人员",
unique: false,
summary:
"核算人工、费用、税金和利润等全成本,评估项目经济性及合同金额合理性。",
},
{
value: "EVALUATION_AGENCY_HEAD",
name: "评价机构负责人",
unique: false,
summary:
"综合多方意见决定是否承接项目,并在全部审核通过后终审签发评价报告。",
},
{
value: "EVALUATION_DEPT_MANAGER",
name: "评价部经理",
unique: false,
summary: "签发项目组任命文件,审核组长资格、行业经验及成员专业配置。",
},
{
value: "PROJECT_LEAD",
name: "项目负责人(项目组组长)",
unique: true,
summary:
"制定实施计划并组织启动、初勘、检查表、现场勘查、整改复查及报告编制。",
},
{
value: "PROJECT_TEAM_MEMBERS",
name: "项目组各专业组员",
unique: false,
summary:
"按专业分工开展资料收集、检查表编制、现场检查、危险辨识和评价报告专业内容编写。",
},
{
value: "INTERNAL_AUDITOR",
name: "内审人",
unique: false,
summary:
"审核报告初稿及修改结果,重点核查依据、危险辨识、单元划分、评价方法和结论。",
},
{
value: "REPORT_COMPILER",
name: "报告编制人",
unique: false,
summary:
"整合各专业内容形成报告初稿,根据各级审核意见修改并整理全过程档案。",
},
{
value: "ARCHIVES_ADMIN",
name: "档案管理员",
unique: false,
summary: "办理档案交接、编号、分类、装订和入库,并按规定开展报告信息公开。",
},
];
export const ROLE_DEFINITIONS_MAP = ROLE_DEFINITIONS.reduce((acc, cur) => {
@ -465,11 +553,9 @@ export const ROLE_DEFINITIONS_MAP = ROLE_DEFINITIONS.reduce((acc, cur) => {
return acc;
}, {});
export const NATIONAL_COUNTIES = (() => {
const result = [];
pcaCode.forEach((province) => {
province.children?.forEach((city) => {
city.children?.forEach((county) => {
result.push({
@ -539,5 +625,3 @@ export const PROFESSIONAL_MAJOR_MAP = PROFESSIONAL_MAJOR_OPTIONS.reduce(
(acc, cur) => ({ ...acc, [cur.value]: cur.label }),
{},
);

View File

@ -15,7 +15,6 @@ import {
REVIEW_BUSINESS_SCOPE_OPTIONS,
REVIEW_STATUS_CLASS,
REVIEW_UNIT_TYPE_OPTIONS,
toQualReviewPageQuery,
} from "../reviewPageQuery";
import "../QualReview/index.less";
@ -34,7 +33,7 @@ const ExpertVerification = (props) => {
const loadList = () => {
queryReviewList({
...toQualReviewPageQuery(router.query),
...router.query,
supervision: true,
applyTypeCode: 1,
});
@ -173,16 +172,16 @@ const ExpertVerification = (props) => {
options={REVIEW_BUSINESS_SCOPE_OPTIONS}
/>
</Form.Item>,
<Form.Item key="confirmStatus" name="confirmStatus">
<Form.Item key="filingStatusCode" name="filingStatusCode">
<ControlWrapper.Select
label="确认状态"
placeholder="请选择"
allowClear
style={{ width: "100%" }}
>
<Select.Option value="pending">待确认</Select.Option>
<Select.Option value="passed">确认通过</Select.Option>
<Select.Option value="rejected">打回</Select.Option>
<Select.Option value={2}>待确认</Select.Option>
<Select.Option value={1}>确认通过</Select.Option>
<Select.Option value={3}>打回</Select.Option>
</ControlWrapper.Select>
</Form.Item>,
]}

View File

@ -7,36 +7,15 @@ import ControlWrapper from "@cqsjjb/jjb-react-admin-component/ControlWrapper";
import { AntdTableFuncControl } from "@cqsjjb/jjb-common-decorator/antd";
import { tools } from "@cqsjjb/jjb-common-lib";
import { Connect } from "@cqsjjb/jjb-dva-runtime";
import { FILING_STATUS_MAP_CHANGE, CHANGE_STATUS_OPTIONS } from "~/enumerate/constant";
import { NS_QUAL_REVIEW } from "~/enumerate/namespace";
import { QUALIFICATION_INDUSTRY_OPTIONS_MAP } from "~/enumerate/enterpriseOptions";
import { REVIEW_BUSINESS_SCOPE_OPTIONS, REVIEW_STATUS_CLASS } from "../reviewPageQuery";
import { REVIEW_BUSINESS_SCOPE_OPTIONS } from "../reviewPageQuery";
import "../QualReview/index.less";
const { router } = tools;
/** 变更状态筛选(原型:停滞中/待审核/已审核;对应备案状态码 3 已打回/4 变更审核中/1 已备案) */
const CHANGE_STATUS_OPTIONS = [
{ label: "待审核", value: 4 },
{ label: "停滞中", value: 3 },
{ label: "已审核", value: 1 },
];
/** 变更状态配色(对齐原型 tag-warning/danger/success */
function changeStatusColor(name) {
if (/待审核|审核中|变更审核中/.test(name || "")) return "warning";
if (/已打回|停滞|退回/.test(name || "")) return "error";
if (/已审核|已备案|通过/.test(name || "")) return "success";
return "default";
}
/**
* 备案变更管理原型 mod-qual-change
* - 搜索机构名称 / 备案编号 / 安全评价业务范围 / 变更状态
* - 复选框序号机构名称机构类型备案编号业务范围变更项变更状态操作查看 / 审核
* - 查看/审核与资质初审备案一致查看 FilingDetail?mode=change审核 QualReviewForm?mode=change
* - 变更项后端列表 CO 未聚合明细在 qual_filing_change_detail.change_item_name真实接口暂显示 "-"
* - Mock 演示默认开启所有行展示 查看 + 审核 按钮
*/
const QualChange = (props) => {
const [form] = Form.useForm();
const { qualReview, queryQualChangePage } = props;
@ -105,14 +84,9 @@ const QualChange = (props) => {
title: "变更状态",
dataIndex: "filingStatusCode",
width: 110,
render: (_, record) => {
const name = record.filingStatusName || record.statusName;
const color = changeStatusColor(name);
return name ? (
<Tag className={REVIEW_STATUS_CLASS[color] || "tag_default"}>{name}</Tag>
) : (
"--"
);
render: (code) => {
const config = FILING_STATUS_MAP_CHANGE[code];
return config ? <Tag color={config.color}>{config.label}</Tag> : "--";
},
},
{

View File

@ -8,34 +8,25 @@ import { AntdTableFuncControl } from "@cqsjjb/jjb-common-decorator/antd";
import { tools } from "@cqsjjb/jjb-common-lib";
import { Connect } from "@cqsjjb/jjb-dva-runtime";
import { NS_QUAL_REVIEW } from "~/enumerate/namespace";
import { VERIFY_STATUS_MAP } from "~/enumerate/constant";
import { VERIFY_STATUS_MAP, FILING_STATUS_MAP } from "~/enumerate/constant";
import { QUALIFICATION_INDUSTRY_OPTIONS_MAP } from "~/enumerate/enterpriseOptions";
import {
FILING_CODE_TO_CONFIRM,
REVIEW_BUSINESS_SCOPE_OPTIONS,
REVIEW_STATUS_CLASS,
REVIEW_UNIT_TYPE_OPTIONS,
toQualReviewPageQuery,
} from "../reviewPageQuery";
import "../QualReview/index.less";
const { router } = tools;
/**
* 资质备案确认原型 mod-qual-confirm
* - 搜索机构名称 / 机构类型 / 业务范围 / 确认状态
* - 列表复选框序号机构名称机构类型证书编号业务范围确认状态操作查看 / 确认
* - 查看复用 FilingDetail六项备案内容确认进入 QualConfirmForm复用 FilingTabs
* - Mock 演示默认开启所有行展示 查看 + 确认 按钮便于与原型对比
*/
const QualConfirm = (props) => {
const [form] = Form.useForm();
const { qualReview, queryReviewList } = props;
const { qualReviewList, qualReviewTotal, qualReviewLoading } = qualReview || {};
const { qualReviewList, qualReviewTotal, qualReviewLoading } =
qualReview || {};
const loadList = () => {
queryReviewList({
...toQualReviewPageQuery(router.query),
...router.query,
supervision: true,
applyTypeCode: 3,
});
@ -60,29 +51,6 @@ const QualConfirm = (props) => {
loadList();
}, []);
const renderConfirmStatus = (record) => {
const name = record.filingStatusName || record.statusName;
if (name) {
const color = /待确认|待核验/.test(name)
? "warning"
: /确认通过|已审核|通过/.test(name)
? "success"
: /打回|退回/.test(name)
? "error"
: "default";
return <Tag className={REVIEW_STATUS_CLASS[color] || "tag_default"}>{name}</Tag>;
}
const status = FILING_CODE_TO_CONFIRM[Number(record.filingStatusCode)];
const config = VERIFY_STATUS_MAP[status];
return config ? (
<Tag className={REVIEW_STATUS_CLASS[config.color] || "tag_default"}>
{config.label}
</Tag>
) : (
"--"
);
};
const columns = [
{
title: "序号",
@ -90,7 +58,12 @@ const QualConfirm = (props) => {
fixed: "left",
render: (_, __, index) => index + 1,
},
{ title: "机构名称", dataIndex: "filingUnitName", width: 220, ellipsis: true },
{
title: "机构名称",
dataIndex: "filingUnitName",
width: 220,
ellipsis: true,
},
{ title: "机构类型", dataIndex: "filingUnitTypeName", width: 100 },
{ title: "证书编号", dataIndex: "filingNo", width: 140, ellipsis: true },
{
@ -111,7 +84,10 @@ const QualConfirm = (props) => {
title: "确认状态",
dataIndex: "filingStatusCode",
width: 100,
render: (_, record) => renderConfirmStatus(record),
render: (status) => {
const config = FILING_STATUS_MAP[status];
return config ? <Tag color={config.color}>{config.label}</Tag> : "--";
},
},
{
title: "操作",
@ -131,7 +107,9 @@ const QualConfirm = (props) => {
<Button
type="link"
size="small"
onClick={() => props.history.push(`QualConfirmForm?id=${record.id}`)}
onClick={() =>
props.history.push(`QualConfirmForm?id=${record.id}`)
}
>
确认
</Button>
@ -150,7 +128,11 @@ const QualConfirm = (props) => {
loading={qualReviewLoading}
formLine={[
<Form.Item key="filingUnitName" name="filingUnitName">
<ControlWrapper.Input label="机构名称" placeholder="请输入机构名称" allowClear />
<ControlWrapper.Input
label="机构名称"
placeholder="请输入机构名称"
allowClear
/>
</Form.Item>,
<Form.Item key="filingUnitTypeName" name="filingUnitTypeName">
<ControlWrapper.Select
@ -172,16 +154,16 @@ const QualConfirm = (props) => {
options={REVIEW_BUSINESS_SCOPE_OPTIONS}
/>
</Form.Item>,
<Form.Item key="confirmStatus" name="confirmStatus">
<Form.Item key="filingStatusCode" name="filingStatusCode">
<ControlWrapper.Select
label="确认状态"
placeholder="请选择"
allowClear
style={{ width: "100%" }}
>
<Select.Option value="pending">待确认</Select.Option>
<Select.Option value="passed">确认通过</Select.Option>
<Select.Option value="rejected">打回</Select.Option>
<Select.Option value={1}>确认通过</Select.Option>
<Select.Option value={2}>待确认</Select.Option>
<Select.Option value={3}>打回</Select.Option>
</ControlWrapper.Select>
</Form.Item>,
]}
@ -233,4 +215,7 @@ const QualConfirm = (props) => {
);
};
export default Connect([NS_QUAL_REVIEW], true)(AntdTableFuncControl(QualConfirm));
export default Connect(
[NS_QUAL_REVIEW],
true,
)(AntdTableFuncControl(QualConfirm));

View File

@ -9,24 +9,17 @@ import { tools } from "@cqsjjb/jjb-common-lib";
import { Connect } from "@cqsjjb/jjb-dva-runtime";
import { NS_QUAL_REVIEW } from "~/enumerate/namespace";
import { QUALIFICATION_INDUSTRY_OPTIONS_MAP } from "~/enumerate/enterpriseOptions";
import { EXPERT_STATUS_MAP } from "~/enumerate/constant";
import { EXPERT_STATUS_MAP, REVIEW_STATUS_MAP } from "~/enumerate/constant";
import {
REVIEW_BUSINESS_SCOPE_OPTIONS,
REVIEW_LIST_STATUS_MAP,
REVIEW_STATUS_CLASS,
REVIEW_UNIT_TYPE_OPTIONS,
toQualReviewPageQuery,
} from "../reviewPageQuery";
import "./index.less";
const { router } = tools;
/**
* 资质备案初审原型 mod-qual-review
* - 搜索区机构名称 / 机构类型 / 安全评价业务范围 / 是否专家核验 / 审核状态
* - 表格列复选框序号机构名称机构类型证书编号业务范围专家核验审核状态操作
* - 操作查看详情审核非已审核状态
*/
const QualReview = (props) => {
const [form] = Form.useForm();
const { qualReview, queryReviewList } = props;
@ -37,7 +30,7 @@ const QualReview = (props) => {
*/
const loadList = () => {
queryReviewList({
...toQualReviewPageQuery(router.query),
...router.query,
supervision: true,
applyTypeCode: 1,
});
@ -62,38 +55,11 @@ const QualReview = (props) => {
loadList();
}, []);
/** 审核状态渲染:优先后端文案,缺失时按状态编码推断 */
const renderStatus = (record) => {
const name = record.filingStatusName || record.statusName;
if (name) {
const code = Number(record.filingStatusCode);
const fallback = REVIEW_LIST_STATUS_MAP[code] || {};
const color = /待审核|待核验/.test(name)
? "warning"
: /审核中/.test(name)
? "processing"
: /打回|退回/.test(name)
? "error"
: /已审核|通过|已备案/.test(name)
? "success"
: fallback.color || "default";
return (
<Tag className={REVIEW_STATUS_CLASS[color] || "tag_default"}>{name}</Tag>
);
}
const config = REVIEW_LIST_STATUS_MAP[Number(record.filingStatusCode)];
return config ? (
<Tag className={REVIEW_STATUS_CLASS[config.color] || "tag_default"}>
{config.label}
</Tag>
) : (
"--"
);
};
const renderExpertStatus = (record) => {
if (!record.needExpertCheck) {
return <span className="expertDash"></span>;
return "-";
}
const config = EXPERT_STATUS_MAP[record.expertStatus];
return config ? (
@ -101,7 +67,7 @@ const QualReview = (props) => {
{config.label}
</Tag>
) : (
"--"
"-"
);
};
@ -139,7 +105,10 @@ const QualReview = (props) => {
title: "审核状态",
dataIndex: "filingStatusCode",
width: 100,
render: (_, record) => renderStatus(record),
render: (_, {filingStatusCode}) => {
const config = REVIEW_STATUS_MAP[filingStatusCode];
return config ? <Tag color={config.color}>{config.label}</Tag> : '--';
},
},
{
title: "操作",
@ -154,7 +123,6 @@ const QualReview = (props) => {
>
查看
</Button>
{/* 仅已审核状态不可审核 */}
{Number(record.filingStatusCode) !== 1 && (
<Button
type="link"
@ -218,9 +186,9 @@ const QualReview = (props) => {
allowClear
style={{ width: "100%" }}
>
<Select.Option value="1">已审核</Select.Option>
<Select.Option value="2">待审核</Select.Option>
<Select.Option value="3">打回</Select.Option>
<Select.Option value={1}>审核通过</Select.Option>
<Select.Option value={2}>审核中</Select.Option>
<Select.Option value={3}>打回</Select.Option>
</ControlWrapper.Select>
</Form.Item>,
]}

View File

@ -36,7 +36,13 @@ const ReviewModal = (props) => {
onCancel,
onSuccess,
} = props;
const { qualExpert, qualReview, queryExpertPage, reviewSubmit, changeReviewSubmit } = props;
const {
qualExpert,
qualReview,
queryExpertPage,
reviewSubmit,
changeReviewSubmit,
} = props;
const { qualExpertList } = qualExpert || {};
const { qualReviewSubmitLoading } = qualReview || {};
@ -60,7 +66,9 @@ const ReviewModal = (props) => {
);
const doSubmit = async (values, passQuick) => {
const selected = expertOptions.find((o) => o.value === values.filingExpertId);
const selected = expertOptions.find(
(o) => o.value === values.filingExpertId,
);
const result = passQuick ? 1 : values.reviewResult;
const resultLabel =
REVIEW_RESULT_OPTIONS.find((r) => r.value === result)?.label || "通过";
@ -108,15 +116,15 @@ const ReviewModal = (props) => {
footer={
<div style={{ display: "flex", justifyContent: "flex-end", gap: 8 }}>
<Button onClick={onCancel}>取消</Button>
<Button loading={qualReviewSubmitLoading} onClick={handleSubmit}>
📤 提交
<Button loading={qualReviewSubmitLoading} onClick={handlePass}>
通过
</Button>
<Button
type="primary"
loading={qualReviewSubmitLoading}
onClick={handlePass}
onClick={handleSubmit}
type="primary"
>
通过
提交
</Button>
</div>
}
@ -130,7 +138,13 @@ const ReviewModal = (props) => {
marginBottom: "1rem",
}}
>
<div style={{ fontSize: "0.88rem", fontWeight: 600, marginBottom: "0.5rem" }}>
<div
style={{
fontSize: "0.88rem",
fontWeight: 600,
marginBottom: "0.5rem",
}}
>
📊 评价分析
</div>
<div
@ -142,32 +156,45 @@ const ReviewModal = (props) => {
>
<div style={statStyle}>
<div style={statLabelStyle}>已核验材料</div>
<div style={{ fontSize: "1.1rem", fontWeight: 700, color: "#059669" }}>
<div
style={{ fontSize: "1.1rem", fontWeight: 700, color: "#059669" }}
>
{totalChecked}
</div>
</div>
<div style={statStyle}>
<div style={statLabelStyle}>符合</div>
<div style={{ fontSize: "1.1rem", fontWeight: 700, color: "#059669" }}>
<div
style={{ fontSize: "1.1rem", fontWeight: 700, color: "#059669" }}
>
{legalPassCount}
</div>
</div>
<div style={statStyle}>
<div style={statLabelStyle}>不符合</div>
<div style={{ fontSize: "1.1rem", fontWeight: 700, color: "#dc2626" }}>
<div
style={{ fontSize: "1.1rem", fontWeight: 700, color: "#dc2626" }}
>
{legalFailCount}
</div>
</div>
<div style={statStyle}>
<div style={statLabelStyle}>风险提醒</div>
<div style={{ fontSize: "1.1rem", fontWeight: 700, color: "#d97706" }}>
<div
style={{ fontSize: "1.1rem", fontWeight: 700, color: "#d97706" }}
>
{legalWarnCount}
</div>
</div>
</div>
</div>
<Form form={form} layout="vertical" style={{ marginTop: "0.5rem" }} scrollToFirstError>
<Form
form={form}
layout="vertical"
style={{ marginTop: "0.5rem" }}
scrollToFirstError
>
<Form.Item
label="审核结果"
name="reviewResult"
@ -198,7 +225,11 @@ const ReviewModal = (props) => {
name="reviewOpinion"
rules={[{ required: true, message: "请输入综合审核意见" }]}
>
<TextArea rows={3} placeholder="请输入综合审核意见..." maxLength={200} />
<TextArea
rows={3}
placeholder="请输入综合审核意见..."
maxLength={200}
/>
</Form.Item>
</Form>
</Modal>

View File

@ -1,13 +1,6 @@
import { QUALIFICATION_INDUSTRY_OPTIONS } from "~/enumerate/enterpriseOptions";
import { FILING_UNIT_TYPE_OPTIONS } from "~/enumerate/qualFilingOptions";
/** 确认状态筛选值 -> 备案状态编码 */
const CONFIRM_STATUS_TO_FILING_CODE = {
pending: 2,
passed: 1,
rejected: 3,
};
/** 备案状态编码 -> 确认状态展示 */
export const FILING_CODE_TO_CONFIRM = {
2: "pending",
@ -50,25 +43,3 @@ export const REVIEW_RESULT_OPTIONS = [
{ label: "待定", value: 2 },
{ label: "不通过", value: 3 },
];
/** 资质审核列表查询参数映射 */
export function toQualReviewPageQuery(query = {}) {
const { confirmStatus, orgType, filingUnitTypeName, filingStatusCode, needExpertCheck, ...rest } = query;
const params = { ...rest };
const unitType = filingUnitTypeName || orgType;
if (unitType) {
params.filingUnitTypeName = unitType;
}
if (needExpertCheck) {
params.needExpertCheck = needExpertCheck;
}
const statusKey = confirmStatus || filingStatusCode;
if (statusKey && CONFIRM_STATUS_TO_FILING_CODE[statusKey] != null) {
params.filingStatusCode = CONFIRM_STATUS_TO_FILING_CODE[statusKey];
} else if (filingStatusCode !== undefined && filingStatusCode !== null && filingStatusCode !== "") {
params.filingStatusCode = Number(filingStatusCode);
}
delete params.confirmStatus;
delete params.orgType;
return params;
}