fix
parent
35452ae9a2
commit
3124915a2e
|
|
@ -520,7 +520,7 @@ function EquipFormModal({
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
function EquipViewModal({ open, currentId, equipInfoGet, onCancel }) {
|
export function EquipViewModal({ open, currentId, equipInfoGet, onCancel }) {
|
||||||
const [info, setInfo] = useState({});
|
const [info, setInfo] = useState({});
|
||||||
const [detailLoading, setDetailLoading] = useState(false);
|
const [detailLoading, setDetailLoading] = useState(false);
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -17,10 +17,6 @@ import {
|
||||||
REVIEW_UNIT_TYPE_OPTIONS,
|
REVIEW_UNIT_TYPE_OPTIONS,
|
||||||
toQualReviewPageQuery,
|
toQualReviewPageQuery,
|
||||||
} from "../reviewPageQuery";
|
} from "../reviewPageQuery";
|
||||||
import {
|
|
||||||
getQualReviewMockEnabled,
|
|
||||||
mockQueryExpertList,
|
|
||||||
} from "../mockData";
|
|
||||||
import "../QualReview/index.less";
|
import "../QualReview/index.less";
|
||||||
|
|
||||||
const { router } = tools;
|
const { router } = tools;
|
||||||
|
|
@ -35,19 +31,8 @@ const ExpertVerification = (props) => {
|
||||||
const [form] = Form.useForm();
|
const [form] = Form.useForm();
|
||||||
const { qualReview, queryReviewList } = props;
|
const { qualReview, queryReviewList } = props;
|
||||||
const { qualReviewList, qualReviewTotal, qualReviewLoading } = qualReview || {};
|
const { qualReviewList, qualReviewTotal, qualReviewLoading } = qualReview || {};
|
||||||
// mock 默认关闭(真实接口);?mock=1 可临时开启演示。变更时间:2026-08-10
|
|
||||||
const mockEnabled = getQualReviewMockEnabled();
|
|
||||||
|
|
||||||
const loadList = (useMock = mockEnabled) => {
|
const loadList = () => {
|
||||||
if (useMock) {
|
|
||||||
const res = mockQueryExpertList(router.query);
|
|
||||||
props.resetModelState(NS_QUAL_REVIEW, {
|
|
||||||
qualReviewList: res.data,
|
|
||||||
qualReviewTotal: res.total,
|
|
||||||
qualReviewLoading: false,
|
|
||||||
});
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
queryReviewList({
|
queryReviewList({
|
||||||
...toQualReviewPageQuery(router.query),
|
...toQualReviewPageQuery(router.query),
|
||||||
supervision: true,
|
supervision: true,
|
||||||
|
|
@ -140,8 +125,8 @@ const ExpertVerification = (props) => {
|
||||||
>
|
>
|
||||||
查看
|
查看
|
||||||
</Button>
|
</Button>
|
||||||
{/* mock 演示模式展示全部“核验”按钮便于与原型对比;真实模式仅待确认可操作 */}
|
{/* 仅待确认状态可操作 */}
|
||||||
{(mockEnabled || Number(record.filingStatusCode) === 2) && (
|
{Number(record.filingStatusCode) === 2 && (
|
||||||
<Button
|
<Button
|
||||||
type="link"
|
type="link"
|
||||||
size="small"
|
size="small"
|
||||||
|
|
|
||||||
|
|
@ -6,7 +6,6 @@ import { Connect } from "@cqsjjb/jjb-dva-runtime";
|
||||||
import { NS_QUAL_REVIEW } from "~/enumerate/namespace";
|
import { NS_QUAL_REVIEW } from "~/enumerate/namespace";
|
||||||
import { tools } from "@cqsjjb/jjb-common-lib";
|
import { tools } from "@cqsjjb/jjb-common-lib";
|
||||||
import FilingTabs from "../FilingTabs";
|
import FilingTabs from "../FilingTabs";
|
||||||
import { getQualReviewMockEnabled, mockGetFilingDetail } from "../mockData";
|
|
||||||
|
|
||||||
const { router } = tools;
|
const { router } = tools;
|
||||||
|
|
||||||
|
|
@ -18,19 +17,10 @@ const FilingDetail = (props) => {
|
||||||
const { qualReview, fetchQualFilingDetail, fetchQualChangeDetail } = props;
|
const { qualReview, fetchQualFilingDetail, fetchQualChangeDetail } = props;
|
||||||
const { fetchQualFilingDetailLoading, qualFilingDetail } = qualReview || {};
|
const { fetchQualFilingDetailLoading, qualFilingDetail } = qualReview || {};
|
||||||
const isChange = router.query.mode === "change";
|
const isChange = router.query.mode === "change";
|
||||||
const mockEnabled = getQualReviewMockEnabled();
|
|
||||||
|
|
||||||
const statusConfig = REVIEW_STATUS_MAP[qualFilingDetail?.filingStatusCode];
|
const statusConfig = REVIEW_STATUS_MAP[qualFilingDetail?.filingStatusCode];
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
if (mockEnabled) {
|
|
||||||
// Mock 演示:本地注入详情,不请求后端
|
|
||||||
props.resetModelState(NS_QUAL_REVIEW, {
|
|
||||||
qualFilingDetail: mockGetFilingDetail(router.query.id),
|
|
||||||
fetchQualFilingDetailLoading: false,
|
|
||||||
});
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
const action = isChange ? fetchQualChangeDetail : fetchQualFilingDetail;
|
const action = isChange ? fetchQualChangeDetail : fetchQualFilingDetail;
|
||||||
if (router.query.id) {
|
if (router.query.id) {
|
||||||
action({ id: router.query.id });
|
action({ id: router.query.id });
|
||||||
|
|
@ -45,7 +35,6 @@ const FilingDetail = (props) => {
|
||||||
{statusConfig && (
|
{statusConfig && (
|
||||||
<Tag color={statusConfig.color}>{statusConfig.label}</Tag>
|
<Tag color={statusConfig.color}>{statusConfig.label}</Tag>
|
||||||
)}
|
)}
|
||||||
{mockEnabled && <Tag color="warning">Mock 演示中</Tag>}
|
|
||||||
</Space>
|
</Space>
|
||||||
}
|
}
|
||||||
history={props.history}
|
history={props.history}
|
||||||
|
|
|
||||||
|
|
@ -1,9 +1,10 @@
|
||||||
import React, { useState, useMemo } from "react";
|
import React, { useState, useMemo } from "react";
|
||||||
import { Button, Image, Input, Modal, Select, Table, Tabs, Tag } from "antd";
|
import { Button, Image, Input, Select, Table, Tabs, Tag } from "antd";
|
||||||
import { Connect } from "@cqsjjb/jjb-dva-runtime";
|
import { Connect } from "@cqsjjb/jjb-dva-runtime";
|
||||||
import { NS_QUAL_REVIEW } from "~/enumerate/namespace";
|
import { NS_QUAL_REVIEW, NS_EQUIP_INFO } from "~/enumerate/namespace";
|
||||||
import StaffViewModal from "~/components/StaffViewModal";
|
import StaffViewModal from "~/components/StaffViewModal";
|
||||||
import PreviewUrlButton from "~/components/PreviewUrlButton/index";
|
import PreviewUrlButton from "~/components/PreviewUrlButton/index";
|
||||||
|
import { EquipViewModal } from "~/pages/Container/EnterpriseInfo/EquipInfo";
|
||||||
import {
|
import {
|
||||||
QUALIFICATION_INDUSTRY_OPTIONS,
|
QUALIFICATION_INDUSTRY_OPTIONS,
|
||||||
QUALIFICATION_INDUSTRY_OPTIONS_MAP,
|
QUALIFICATION_INDUSTRY_OPTIONS_MAP,
|
||||||
|
|
@ -100,72 +101,6 @@ function ReadonlyField({ label, value, span }) {
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* 设备详情弹窗(原型 modal-equip-view 缺失,按列表字段补全)
|
|
||||||
*/
|
|
||||||
function EquipViewModal({ record, onCancel }) {
|
|
||||||
const open = !!record;
|
|
||||||
const calibration = record ? getCalibrationTag(record) : null;
|
|
||||||
const rows = record
|
|
||||||
? [
|
|
||||||
{ label: "装备名称", value: record.deviceName },
|
|
||||||
{ label: "规格型号", value: record.deviceModel },
|
|
||||||
{ label: "生产厂家", value: record.manufacturer },
|
|
||||||
{ label: "设备价值(元)", value: record.equipmentValue },
|
|
||||||
{ label: "计量检定情况", value: null },
|
|
||||||
]
|
|
||||||
: [];
|
|
||||||
return (
|
|
||||||
<Modal
|
|
||||||
open={open}
|
|
||||||
title="装备详情"
|
|
||||||
width={560}
|
|
||||||
cancelText="关闭"
|
|
||||||
okText="关闭"
|
|
||||||
onOk={onCancel}
|
|
||||||
onCancel={onCancel}
|
|
||||||
footer={
|
|
||||||
<Button type="primary" onClick={onCancel}>
|
|
||||||
关闭
|
|
||||||
</Button>
|
|
||||||
}
|
|
||||||
>
|
|
||||||
{record && (
|
|
||||||
<div style={gridStyle}>
|
|
||||||
{rows.map((row) =>
|
|
||||||
row.value != null ? (
|
|
||||||
<ReadonlyField key={row.label} label={row.label} value={row.value} />
|
|
||||||
) : (
|
|
||||||
<div key={row.label} style={fieldStyle}>
|
|
||||||
<label style={labelStyle}>{row.label}</label>
|
|
||||||
<div>
|
|
||||||
{calibration && (
|
|
||||||
<Tag
|
|
||||||
color={calibration.status === "success" ? "success" : "warning"}
|
|
||||||
>
|
|
||||||
{calibration.label}
|
|
||||||
</Tag>
|
|
||||||
)}
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
),
|
|
||||||
)}
|
|
||||||
<div style={{ ...fieldStyle, ...fullSpan }}>
|
|
||||||
<label style={labelStyle}>检定报告</label>
|
|
||||||
<div>
|
|
||||||
{record.calibrationReportUrl ? (
|
|
||||||
<PreviewUrlButton url={record.calibrationReportUrl}>预览检定报告</PreviewUrlButton>
|
|
||||||
) : (
|
|
||||||
<span style={{ color: "#64748b", fontSize: "0.8rem" }}>未上传</span>
|
|
||||||
)}
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
)}
|
|
||||||
</Modal>
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
const FilingTabs = ({
|
const FilingTabs = ({
|
||||||
detail = {},
|
detail = {},
|
||||||
isReview = false,
|
isReview = false,
|
||||||
|
|
@ -176,9 +111,11 @@ const FilingTabs = ({
|
||||||
* 不传时保持原 6 Tab,不影响初审/确认/专家核验展示。变更时间:2026-08-10
|
* 不传时保持原 6 Tab,不影响初审/确认/专家核验展示。变更时间:2026-08-10
|
||||||
*/
|
*/
|
||||||
extraTabs,
|
extraTabs,
|
||||||
|
equipInfoGet,
|
||||||
}) => {
|
}) => {
|
||||||
const [viewId, setViewId] = useState("");
|
const [viewId, setViewId] = useState("");
|
||||||
const [equipRecord, setEquipRecord] = useState(null);
|
const [equipViewOpen, setEquipViewOpen] = useState(false);
|
||||||
|
const [equipId, setEquipId] = useState("");
|
||||||
|
|
||||||
const personnelRows = useMemo(
|
const personnelRows = useMemo(
|
||||||
() =>
|
() =>
|
||||||
|
|
@ -520,7 +457,14 @@ const FilingTabs = ({
|
||||||
title: "操作",
|
title: "操作",
|
||||||
width: 80,
|
width: 80,
|
||||||
render: (_, record) => (
|
render: (_, record) => (
|
||||||
<Button type="link" size="small" onClick={() => setEquipRecord(record)}>
|
<Button
|
||||||
|
type="link"
|
||||||
|
size="small"
|
||||||
|
onClick={() => {
|
||||||
|
setEquipId(record.sourceEquipmentId);
|
||||||
|
setEquipViewOpen(true);
|
||||||
|
}}
|
||||||
|
>
|
||||||
查看
|
查看
|
||||||
</Button>
|
</Button>
|
||||||
),
|
),
|
||||||
|
|
@ -592,9 +536,19 @@ const FilingTabs = ({
|
||||||
onCancel={() => setViewId("")}
|
onCancel={() => setViewId("")}
|
||||||
/>
|
/>
|
||||||
|
|
||||||
<EquipViewModal record={equipRecord} onCancel={() => setEquipRecord(null)} />
|
{equipViewOpen && (
|
||||||
|
<EquipViewModal
|
||||||
|
open={equipViewOpen}
|
||||||
|
currentId={equipId}
|
||||||
|
equipInfoGet={equipInfoGet}
|
||||||
|
onCancel={() => {
|
||||||
|
setEquipViewOpen(false);
|
||||||
|
setEquipId("");
|
||||||
|
}}
|
||||||
|
/>
|
||||||
|
)}
|
||||||
</>
|
</>
|
||||||
);
|
);
|
||||||
};
|
};
|
||||||
|
|
||||||
export default Connect([NS_QUAL_REVIEW], true)(FilingTabs);
|
export default Connect([NS_QUAL_REVIEW, NS_EQUIP_INFO], true)(FilingTabs);
|
||||||
|
|
|
||||||
|
|
@ -10,10 +10,6 @@ import { Connect } from "@cqsjjb/jjb-dva-runtime";
|
||||||
import { NS_QUAL_REVIEW } from "~/enumerate/namespace";
|
import { NS_QUAL_REVIEW } from "~/enumerate/namespace";
|
||||||
import { QUALIFICATION_INDUSTRY_OPTIONS_MAP } from "~/enumerate/enterpriseOptions";
|
import { QUALIFICATION_INDUSTRY_OPTIONS_MAP } from "~/enumerate/enterpriseOptions";
|
||||||
import { REVIEW_BUSINESS_SCOPE_OPTIONS, REVIEW_STATUS_CLASS } from "../reviewPageQuery";
|
import { REVIEW_BUSINESS_SCOPE_OPTIONS, REVIEW_STATUS_CLASS } from "../reviewPageQuery";
|
||||||
import {
|
|
||||||
getQualReviewMockEnabled,
|
|
||||||
mockQueryChangeList,
|
|
||||||
} from "../mockData";
|
|
||||||
import "../QualReview/index.less";
|
import "../QualReview/index.less";
|
||||||
|
|
||||||
const { router } = tools;
|
const { router } = tools;
|
||||||
|
|
@ -45,19 +41,8 @@ const QualChange = (props) => {
|
||||||
const [form] = Form.useForm();
|
const [form] = Form.useForm();
|
||||||
const { qualReview, queryQualChangePage } = props;
|
const { qualReview, queryQualChangePage } = props;
|
||||||
const { qualReviewList, qualReviewTotal, qualReviewLoading } = qualReview || {};
|
const { qualReviewList, qualReviewTotal, qualReviewLoading } = qualReview || {};
|
||||||
// mock 默认关闭(真实接口);?mock=1 可临时开启演示。变更时间:2026-08-10
|
|
||||||
const mockEnabled = getQualReviewMockEnabled();
|
|
||||||
|
|
||||||
const loadList = (useMock = mockEnabled) => {
|
const loadList = () => {
|
||||||
if (useMock) {
|
|
||||||
const res = mockQueryChangeList(router.query);
|
|
||||||
props.resetModelState(NS_QUAL_REVIEW, {
|
|
||||||
qualReviewList: res.data,
|
|
||||||
qualReviewTotal: res.total,
|
|
||||||
qualReviewLoading: false,
|
|
||||||
});
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
queryQualChangePage({
|
queryQualChangePage({
|
||||||
...router.query,
|
...router.query,
|
||||||
current: router.query.current || 1,
|
current: router.query.current || 1,
|
||||||
|
|
@ -143,8 +128,8 @@ const QualChange = (props) => {
|
||||||
>
|
>
|
||||||
查看
|
查看
|
||||||
</Button>
|
</Button>
|
||||||
{/* mock 演示模式展示全部“审核”按钮;真实模式仅 审核中/变更审核中 可审核 */}
|
{/* 仅审核中/变更审核中可审核 */}
|
||||||
{(mockEnabled || [2, 4].includes(Number(record.filingStatusCode))) && (
|
{[2, 4].includes(Number(record.filingStatusCode)) && (
|
||||||
<Button
|
<Button
|
||||||
type="link"
|
type="link"
|
||||||
size="small"
|
size="small"
|
||||||
|
|
|
||||||
|
|
@ -17,10 +17,6 @@ import {
|
||||||
REVIEW_UNIT_TYPE_OPTIONS,
|
REVIEW_UNIT_TYPE_OPTIONS,
|
||||||
toQualReviewPageQuery,
|
toQualReviewPageQuery,
|
||||||
} from "../reviewPageQuery";
|
} from "../reviewPageQuery";
|
||||||
import {
|
|
||||||
getQualReviewMockEnabled,
|
|
||||||
mockQueryConfirmList,
|
|
||||||
} from "../mockData";
|
|
||||||
import "../QualReview/index.less";
|
import "../QualReview/index.less";
|
||||||
|
|
||||||
const { router } = tools;
|
const { router } = tools;
|
||||||
|
|
@ -36,19 +32,8 @@ const QualConfirm = (props) => {
|
||||||
const [form] = Form.useForm();
|
const [form] = Form.useForm();
|
||||||
const { qualReview, queryReviewList } = props;
|
const { qualReview, queryReviewList } = props;
|
||||||
const { qualReviewList, qualReviewTotal, qualReviewLoading } = qualReview || {};
|
const { qualReviewList, qualReviewTotal, qualReviewLoading } = qualReview || {};
|
||||||
// mock 默认关闭(真实接口);?mock=1 可临时开启演示。变更时间:2026-08-10
|
|
||||||
const mockEnabled = getQualReviewMockEnabled();
|
|
||||||
|
|
||||||
const loadList = (useMock = mockEnabled) => {
|
const loadList = () => {
|
||||||
if (useMock) {
|
|
||||||
const res = mockQueryConfirmList(router.query);
|
|
||||||
props.resetModelState(NS_QUAL_REVIEW, {
|
|
||||||
qualReviewList: res.data,
|
|
||||||
qualReviewTotal: res.total,
|
|
||||||
qualReviewLoading: false,
|
|
||||||
});
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
queryReviewList({
|
queryReviewList({
|
||||||
...toQualReviewPageQuery(router.query),
|
...toQualReviewPageQuery(router.query),
|
||||||
supervision: true,
|
supervision: true,
|
||||||
|
|
@ -141,8 +126,8 @@ const QualConfirm = (props) => {
|
||||||
>
|
>
|
||||||
查看
|
查看
|
||||||
</Button>
|
</Button>
|
||||||
{/* mock 演示模式展示全部“确认”按钮便于与原型对比;真实模式仅待确认可操作 */}
|
{/* 仅待确认状态可操作 */}
|
||||||
{(mockEnabled || Number(record.filingStatusCode) === 2) && (
|
{Number(record.filingStatusCode) === 2 && (
|
||||||
<Button
|
<Button
|
||||||
type="link"
|
type="link"
|
||||||
size="small"
|
size="small"
|
||||||
|
|
|
||||||
|
|
@ -5,7 +5,6 @@ import { tools } from "@cqsjjb/jjb-common-lib";
|
||||||
import { NS_QUAL_REVIEW } from "~/enumerate/namespace";
|
import { NS_QUAL_REVIEW } from "~/enumerate/namespace";
|
||||||
import PageLayout from "@cqsjjb/jjb-react-admin-component/PageLayout";
|
import PageLayout from "@cqsjjb/jjb-react-admin-component/PageLayout";
|
||||||
import FilingTabs from "../FilingTabs";
|
import FilingTabs from "../FilingTabs";
|
||||||
import { getQualReviewMockEnabled, mockGetFilingDetail } from "../mockData";
|
|
||||||
import "./indes.less";
|
import "./indes.less";
|
||||||
|
|
||||||
const { TextArea } = Input;
|
const { TextArea } = Input;
|
||||||
|
|
@ -43,18 +42,9 @@ const QualConfirmForm = (props) => {
|
||||||
qualFilingDetail = {},
|
qualFilingDetail = {},
|
||||||
} = qualReview || {};
|
} = qualReview || {};
|
||||||
const isChange = router.query.mode === "change";
|
const isChange = router.query.mode === "change";
|
||||||
const mockEnabled = getQualReviewMockEnabled();
|
|
||||||
const [submitting, setSubmitting] = useState(false);
|
const [submitting, setSubmitting] = useState(false);
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
if (mockEnabled) {
|
|
||||||
// Mock 演示:本地注入详情,不请求后端
|
|
||||||
props.resetModelState(NS_QUAL_REVIEW, {
|
|
||||||
qualFilingDetail: mockGetFilingDetail(router.query.id),
|
|
||||||
fetchQualFilingDetailLoading: false,
|
|
||||||
});
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
const action = isChange ? fetchQualChangeDetail : fetchQualFilingDetail;
|
const action = isChange ? fetchQualChangeDetail : fetchQualFilingDetail;
|
||||||
action({ id: router.query.id });
|
action({ id: router.query.id });
|
||||||
}, []);
|
}, []);
|
||||||
|
|
@ -64,15 +54,6 @@ const QualConfirmForm = (props) => {
|
||||||
const option = CONFIRM_RESULT_OPTIONS.find(
|
const option = CONFIRM_RESULT_OPTIONS.find(
|
||||||
(item) => item.value === Number(values.reviewResult),
|
(item) => item.value === Number(values.reviewResult),
|
||||||
);
|
);
|
||||||
if (mockEnabled) {
|
|
||||||
// Mock 演示:模拟提交成功,不调用真实接口
|
|
||||||
setSubmitting(true);
|
|
||||||
await new Promise((resolve) => setTimeout(resolve, 400));
|
|
||||||
setSubmitting(false);
|
|
||||||
message.success("确认意见已提交!");
|
|
||||||
props.history.goBack();
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
const submitAction = isChange ? changeReviewSubmit : reviewSubmit;
|
const submitAction = isChange ? changeReviewSubmit : reviewSubmit;
|
||||||
const params = {
|
const params = {
|
||||||
filingId: router.query.id,
|
filingId: router.query.id,
|
||||||
|
|
@ -97,7 +78,6 @@ const QualConfirmForm = (props) => {
|
||||||
<Space>
|
<Space>
|
||||||
<span>资质备案确认</span>
|
<span>资质备案确认</span>
|
||||||
<Tag color="warning">{qualFilingDetail.filingStatusName || "待确认"}</Tag>
|
<Tag color="warning">{qualFilingDetail.filingStatusName || "待确认"}</Tag>
|
||||||
{mockEnabled && <Tag color="warning">Mock 演示中</Tag>}
|
|
||||||
</Space>
|
</Space>
|
||||||
}
|
}
|
||||||
history={props.history}
|
history={props.history}
|
||||||
|
|
|
||||||
|
|
@ -17,10 +17,6 @@ import {
|
||||||
REVIEW_UNIT_TYPE_OPTIONS,
|
REVIEW_UNIT_TYPE_OPTIONS,
|
||||||
toQualReviewPageQuery,
|
toQualReviewPageQuery,
|
||||||
} from "../reviewPageQuery";
|
} from "../reviewPageQuery";
|
||||||
import {
|
|
||||||
getQualReviewMockEnabled,
|
|
||||||
mockQueryReviewList,
|
|
||||||
} from "../mockData";
|
|
||||||
import "./index.less";
|
import "./index.less";
|
||||||
|
|
||||||
const { router } = tools;
|
const { router } = tools;
|
||||||
|
|
@ -35,23 +31,11 @@ const QualReview = (props) => {
|
||||||
const [form] = Form.useForm();
|
const [form] = Form.useForm();
|
||||||
const { qualReview, queryReviewList } = props;
|
const { qualReview, queryReviewList } = props;
|
||||||
const { qualReviewList, qualReviewTotal, qualReviewLoading } = qualReview || {};
|
const { qualReviewList, qualReviewTotal, qualReviewLoading } = qualReview || {};
|
||||||
// mock 默认关闭(真实接口);?mock=1 可临时开启演示。变更时间:2026-08-10
|
|
||||||
const mockEnabled = getQualReviewMockEnabled();
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 数据加载:mock 模式走本地高内聚数据(不请求后端);
|
* 数据加载:走真实接口。
|
||||||
* 真实模式走原有接口,二者互不影响。
|
|
||||||
*/
|
*/
|
||||||
const loadList = (useMock = mockEnabled) => {
|
const loadList = () => {
|
||||||
if (useMock) {
|
|
||||||
const res = mockQueryReviewList(router.query);
|
|
||||||
props.resetModelState(NS_QUAL_REVIEW, {
|
|
||||||
qualReviewList: res.data,
|
|
||||||
qualReviewTotal: res.total,
|
|
||||||
qualReviewLoading: false,
|
|
||||||
});
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
queryReviewList({
|
queryReviewList({
|
||||||
...toQualReviewPageQuery(router.query),
|
...toQualReviewPageQuery(router.query),
|
||||||
supervision: true,
|
supervision: true,
|
||||||
|
|
@ -171,8 +155,8 @@ const QualReview = (props) => {
|
||||||
>
|
>
|
||||||
查看
|
查看
|
||||||
</Button>
|
</Button>
|
||||||
{/* mock 演示模式展示全部“审核”按钮便于与原型对比;真实模式按状态显示 */}
|
{/* 仅已审核状态不可审核 */}
|
||||||
{(mockEnabled || Number(record.filingStatusCode) !== 1) && (
|
{Number(record.filingStatusCode) !== 1 && (
|
||||||
<Button
|
<Button
|
||||||
type="link"
|
type="link"
|
||||||
size="small"
|
size="small"
|
||||||
|
|
|
||||||
|
|
@ -3,7 +3,6 @@ import { Button, Form, Input, message, Modal, Select } from "antd";
|
||||||
import { Connect } from "@cqsjjb/jjb-dva-runtime";
|
import { Connect } from "@cqsjjb/jjb-dva-runtime";
|
||||||
import { NS_QUAL_EXPERT, NS_QUAL_REVIEW } from "~/enumerate/namespace";
|
import { NS_QUAL_EXPERT, NS_QUAL_REVIEW } from "~/enumerate/namespace";
|
||||||
import { REVIEW_RESULT_OPTIONS } from "../reviewPageQuery";
|
import { REVIEW_RESULT_OPTIONS } from "../reviewPageQuery";
|
||||||
import { getQualReviewMockEnabled, mockGetExpertPage } from "../mockData";
|
|
||||||
|
|
||||||
const { TextArea } = Input;
|
const { TextArea } = Input;
|
||||||
|
|
||||||
|
|
@ -40,22 +39,14 @@ const ReviewModal = (props) => {
|
||||||
const { qualExpert, qualReview, queryExpertPage, reviewSubmit, changeReviewSubmit } = props;
|
const { qualExpert, qualReview, queryExpertPage, reviewSubmit, changeReviewSubmit } = props;
|
||||||
const { qualExpertList } = qualExpert || {};
|
const { qualExpertList } = qualExpert || {};
|
||||||
const { qualReviewSubmitLoading } = qualReview || {};
|
const { qualReviewSubmitLoading } = qualReview || {};
|
||||||
const mockEnabled = getQualReviewMockEnabled();
|
|
||||||
|
|
||||||
const [form] = Form.useForm();
|
const [form] = Form.useForm();
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
if (open) {
|
if (open) {
|
||||||
form.resetFields();
|
form.resetFields();
|
||||||
if (mockEnabled) {
|
|
||||||
// Mock 演示:本地注入专家列表,不请求后端
|
|
||||||
props.resetModelState(NS_QUAL_EXPERT, {
|
|
||||||
qualExpertList: mockGetExpertPage(),
|
|
||||||
});
|
|
||||||
} else {
|
|
||||||
queryExpertPage({ current: 1, size: 100 });
|
queryExpertPage({ current: 1, size: 100 });
|
||||||
}
|
}
|
||||||
}
|
|
||||||
}, [open]);
|
}, [open]);
|
||||||
|
|
||||||
const expertOptions = useMemo(
|
const expertOptions = useMemo(
|
||||||
|
|
@ -69,14 +60,6 @@ const ReviewModal = (props) => {
|
||||||
);
|
);
|
||||||
|
|
||||||
const doSubmit = async (values, passQuick) => {
|
const doSubmit = async (values, passQuick) => {
|
||||||
if (mockEnabled) {
|
|
||||||
// Mock 演示:模拟提交成功,不调用真实接口
|
|
||||||
await new Promise((resolve) => setTimeout(resolve, 400));
|
|
||||||
message.success(passQuick ? "审核通过!" : "审核提交成功");
|
|
||||||
onCancel();
|
|
||||||
onSuccess?.();
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
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 result = passQuick ? 1 : values.reviewResult;
|
||||||
const resultLabel =
|
const resultLabel =
|
||||||
|
|
|
||||||
|
|
@ -7,11 +7,6 @@ import { Connect } from "@cqsjjb/jjb-dva-runtime";
|
||||||
import { NS_QUAL_REVIEW } from "~/enumerate/namespace";
|
import { NS_QUAL_REVIEW } from "~/enumerate/namespace";
|
||||||
import FilingTabs from "../FilingTabs";
|
import FilingTabs from "../FilingTabs";
|
||||||
import ReviewModal from "./ReviewModal";
|
import ReviewModal from "./ReviewModal";
|
||||||
import {
|
|
||||||
getQualReviewMockEnabled,
|
|
||||||
mockGetComplianceItems,
|
|
||||||
mockGetFilingDetail,
|
|
||||||
} from "../mockData";
|
|
||||||
import "./indes.less";
|
import "./indes.less";
|
||||||
|
|
||||||
const { router } = tools;
|
const { router } = tools;
|
||||||
|
|
@ -39,7 +34,6 @@ const QualReviewForm = (props) => {
|
||||||
qualFilingDetail = {},
|
qualFilingDetail = {},
|
||||||
} = qualReview || {};
|
} = qualReview || {};
|
||||||
const isChange = router.query.mode === "change";
|
const isChange = router.query.mode === "change";
|
||||||
const mockEnabled = getQualReviewMockEnabled();
|
|
||||||
const [compliance, setCompliance] = useState({});
|
const [compliance, setCompliance] = useState({});
|
||||||
const [reviewVisible, setReviewVisible] = useState(false);
|
const [reviewVisible, setReviewVisible] = useState(false);
|
||||||
|
|
||||||
|
|
@ -56,16 +50,6 @@ const QualReviewForm = (props) => {
|
||||||
).length;
|
).length;
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
if (mockEnabled) {
|
|
||||||
// Mock 演示:本地注入详情与法律规定内容,不请求后端
|
|
||||||
props.resetModelState(NS_QUAL_REVIEW, {
|
|
||||||
complianceCheckItems: mockGetComplianceItems(),
|
|
||||||
qualFilingDetail: mockGetFilingDetail(router.query.id),
|
|
||||||
qualReviewLoading: false,
|
|
||||||
fetchQualFilingDetailLoading: false,
|
|
||||||
});
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
const complianceAction = isChange
|
const complianceAction = isChange
|
||||||
? queryChangeComplianceCheck
|
? queryChangeComplianceCheck
|
||||||
: queryComplianceCheck;
|
: queryComplianceCheck;
|
||||||
|
|
@ -80,10 +64,6 @@ const QualReviewForm = (props) => {
|
||||||
const handleComplianceChange = (id, v) => {
|
const handleComplianceChange = (id, v) => {
|
||||||
setCompliance((prev) => ({ ...prev, [id]: v }));
|
setCompliance((prev) => ({ ...prev, [id]: v }));
|
||||||
if (v == null) return;
|
if (v == null) return;
|
||||||
if (mockEnabled) {
|
|
||||||
// Mock 演示:仅本地记录,不调用真实接口
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
const hasSatisfy = v === "pass" ? 1 : 2;
|
const hasSatisfy = v === "pass" ? 1 : 2;
|
||||||
const action = isChange ? modifyFilingMaterialChange : modifyFilingMaterial;
|
const action = isChange ? modifyFilingMaterialChange : modifyFilingMaterial;
|
||||||
action({ id, hasSatisfy }).then((res) => {
|
action({ id, hasSatisfy }).then((res) => {
|
||||||
|
|
@ -101,7 +81,6 @@ const QualReviewForm = (props) => {
|
||||||
{statusConfig && (
|
{statusConfig && (
|
||||||
<Tag color={statusConfig.color}>{statusConfig.label}</Tag>
|
<Tag color={statusConfig.color}>{statusConfig.label}</Tag>
|
||||||
)}
|
)}
|
||||||
{mockEnabled && <Tag color="warning">Mock 演示中</Tag>}
|
|
||||||
</Space>
|
</Space>
|
||||||
}
|
}
|
||||||
history={props.history}
|
history={props.history}
|
||||||
|
|
|
||||||
|
|
@ -1,51 +1,12 @@
|
||||||
/**
|
/**
|
||||||
* 资质备案初审(QualificationReview/QualReview)高内聚 Mock 数据模块
|
* 资质备案初审(QualificationReview/QualReview)Mock 数据模块
|
||||||
*
|
*
|
||||||
* 设计目标:
|
* Mock 列表覆盖原型全部状态与按钮:待审核/审核中/已审核/打回/变更审核中/暂存,
|
||||||
* 1. 数据、开关、查询辅助函数全部集中在本文件,页面只消费导出 API,便于维护。
|
|
||||||
* 2. 随时可切换:默认开启 mock 演示;可通过「列表页工具栏开关」「localStorage」或
|
|
||||||
* URL 参数(?mock=0 / ?mock=1)随时切换,关闭后完全走真实后端接口,互不影响。
|
|
||||||
* 3. Mock 列表覆盖原型全部状态与按钮:待审核/审核中/已审核/打回/变更审核中/暂存,
|
|
||||||
* 专家核验 待核验/待安排/已核验/无需,以及 查看/审核 等全部按钮入口,
|
* 专家核验 待核验/待安排/已核验/无需,以及 查看/审核 等全部按钮入口,
|
||||||
* 便于人工与原型 regulator.html 逐项对比。
|
* 便于人工与原型 regulator.html 逐项对比。
|
||||||
*
|
|
||||||
* 开关优先级:URL ?mock= > localStorage(qualReviewMockEnabled) > 默认开启。
|
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/**
|
/** 业务范围编码 -> 原型展示名(与 QUALIFICATION_INDUSTRY_OPTIONS 对齐) */
|
||||||
* 默认是否启用 mock(true=演示模式,false=真实后端)。
|
|
||||||
* 2026-08-10 按用户要求默认切换为真实接口;mock 代码/数据保留,仍可通过 ?mock=1 或 localStorage 临时开启演示。
|
|
||||||
*/
|
|
||||||
export const QUAL_REVIEW_MOCK_DEFAULT_ENABLED = false;
|
|
||||||
|
|
||||||
const MOCK_STORAGE_KEY = "qualReviewMockEnabled";
|
|
||||||
|
|
||||||
export function getQualReviewMockEnabled() {
|
|
||||||
try {
|
|
||||||
const qs = new URLSearchParams(window.location.search);
|
|
||||||
if (qs.has("mock")) {
|
|
||||||
const v = qs.get("mock") === "1";
|
|
||||||
localStorage.setItem(MOCK_STORAGE_KEY, v ? "1" : "0");
|
|
||||||
return v;
|
|
||||||
}
|
|
||||||
const stored = localStorage.getItem(MOCK_STORAGE_KEY);
|
|
||||||
if (stored === "1") return true;
|
|
||||||
if (stored === "0") return false;
|
|
||||||
} catch {
|
|
||||||
// 非浏览器环境(如构建期)忽略
|
|
||||||
}
|
|
||||||
return QUAL_REVIEW_MOCK_DEFAULT_ENABLED;
|
|
||||||
}
|
|
||||||
|
|
||||||
export function setQualReviewMockEnabled(enabled) {
|
|
||||||
try {
|
|
||||||
localStorage.setItem(MOCK_STORAGE_KEY, enabled ? "1" : "0");
|
|
||||||
} catch {
|
|
||||||
// ignore
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/** 业务范围编码 → 原型展示名(与 QUALIFICATION_INDUSTRY_OPTIONS 对齐) */
|
|
||||||
const SCOPE_NAME = {
|
const SCOPE_NAME = {
|
||||||
COAL_MINING: "煤炭开采业",
|
COAL_MINING: "煤炭开采业",
|
||||||
METAL_NONMETAL_MINING: "金属、非金属矿及其他矿采选业",
|
METAL_NONMETAL_MINING: "金属、非金属矿及其他矿采选业",
|
||||||
|
|
@ -264,7 +225,7 @@ export const MOCK_QUAL_FILING_DETAIL = {
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
|
||||||
/** 专家列表 mock(审核操作弹窗“指派专家”选项) */
|
/** 专家列表 mock(审核操作弹窗"指派专家"选项) */
|
||||||
export const MOCK_EXPERT_LIST = [
|
export const MOCK_EXPERT_LIST = [
|
||||||
{ id: 11, userName: "陈教授" },
|
{ id: 11, userName: "陈教授" },
|
||||||
{ id: 12, userName: "李教授" },
|
{ id: 12, userName: "李教授" },
|
||||||
|
|
@ -273,7 +234,7 @@ export const MOCK_EXPERT_LIST = [
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 设备计量检定情况展示(原型 tag-success/tag-warning)。
|
* 设备计量检定情况展示(原型 tag-success/tag-warning)。
|
||||||
* 有检定报告时显示“已检定”,否则“待检定”。
|
* 有检定报告时显示"已检定",否则"待检定"。
|
||||||
*/
|
*/
|
||||||
export function getCalibrationTag(record) {
|
export function getCalibrationTag(record) {
|
||||||
return record?.calibrationReportUrl || record?.inspectionResult === "已检定"
|
return record?.calibrationReportUrl || record?.inspectionResult === "已检定"
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue