2026-07-02 16:58:07 +08:00
|
|
|
import React, { useState, useEffect } from "react";
|
2026-07-02 18:46:33 +08:00
|
|
|
import { Button, Tag, Space, Spin } from "antd";
|
2026-06-30 15:59:15 +08:00
|
|
|
import PageLayout from "@cqsjjb/jjb-react-admin-component/PageLayout";
|
2026-07-02 18:46:33 +08:00
|
|
|
import { REVIEW_STATUS_MAP, LEGAL_STATUS_STYLE } from "~/enumerate/constant";
|
2026-07-02 15:01:19 +08:00
|
|
|
import { tools } from "@cqsjjb/jjb-common-lib";
|
|
|
|
|
import { Connect } from "@cqsjjb/jjb-dva-runtime";
|
|
|
|
|
import { NS_QUAL_REVIEW } from "~/enumerate/namespace";
|
2026-06-30 15:59:15 +08:00
|
|
|
import FilingTabs from "../FilingTabs";
|
2026-07-02 18:46:33 +08:00
|
|
|
import ReviewModal from "./ReviewModal";
|
2026-06-30 15:59:15 +08:00
|
|
|
import "./indes.less";
|
|
|
|
|
|
2026-07-02 18:46:33 +08:00
|
|
|
const { router } = tools;
|
2026-06-30 15:59:15 +08:00
|
|
|
|
|
|
|
|
const QualReviewForm = (props) => {
|
2026-07-03 16:35:01 +08:00
|
|
|
const { queryComplianceCheck, fetchQualFilingDetail, queryChangeComplianceCheck, fetchQualChangeDetail, qualReview } = props;
|
|
|
|
|
const { qualReviewLoading, complianceCheckItems, fetchQualFilingDetailLoading, qualFilingDetail } = qualReview;
|
2026-07-03 10:35:36 +08:00
|
|
|
const { router } = tools;
|
|
|
|
|
const isChange = router.query.mode === "change";
|
2026-06-30 15:59:15 +08:00
|
|
|
const [compliance, setCompliance] = useState({});
|
|
|
|
|
const [reviewVisible, setReviewVisible] = useState(false);
|
2026-07-03 10:35:36 +08:00
|
|
|
|
2026-07-02 16:58:07 +08:00
|
|
|
const statusConfig = REVIEW_STATUS_MAP[qualFilingDetail.filingStatusCode];
|
2026-06-30 15:59:15 +08:00
|
|
|
|
2026-07-02 16:58:07 +08:00
|
|
|
const legalPassCount = complianceCheckItems.filter(
|
|
|
|
|
(i) => i.status === "PASS",
|
2026-07-02 15:01:19 +08:00
|
|
|
).length;
|
2026-07-02 16:58:07 +08:00
|
|
|
const legalFailCount = complianceCheckItems.filter(
|
|
|
|
|
(i) => i.status === "NOT_PASS",
|
2026-07-02 15:01:19 +08:00
|
|
|
).length;
|
2026-06-30 15:59:15 +08:00
|
|
|
|
2026-07-02 15:01:19 +08:00
|
|
|
useEffect(() => {
|
2026-07-03 10:35:36 +08:00
|
|
|
const complianceAction = isChange ? queryChangeComplianceCheck : queryComplianceCheck;
|
|
|
|
|
const detailAction = isChange ? fetchQualChangeDetail : fetchQualFilingDetail;
|
|
|
|
|
complianceAction({ id: router.query.id });
|
|
|
|
|
detailAction({ id: router.query.id });
|
2026-07-02 15:01:19 +08:00
|
|
|
}, []);
|
2026-06-30 15:59:15 +08:00
|
|
|
|
|
|
|
|
return (
|
|
|
|
|
<PageLayout
|
|
|
|
|
title={
|
|
|
|
|
<Space>
|
|
|
|
|
<span>资质备案审核</span>
|
2026-07-02 15:01:19 +08:00
|
|
|
{statusConfig && (
|
|
|
|
|
<Tag color={statusConfig.color}>{statusConfig.label}</Tag>
|
|
|
|
|
)}
|
2026-06-30 15:59:15 +08:00
|
|
|
</Space>
|
|
|
|
|
}
|
|
|
|
|
history={props.history}
|
|
|
|
|
previous
|
2026-07-02 15:01:19 +08:00
|
|
|
footer={
|
|
|
|
|
<Button type="primary" onClick={() => setReviewVisible(true)}>
|
|
|
|
|
审核操作
|
|
|
|
|
</Button>
|
|
|
|
|
}
|
2026-06-30 15:59:15 +08:00
|
|
|
>
|
2026-07-02 16:58:07 +08:00
|
|
|
<Spin spinning={qualReviewLoading || fetchQualFilingDetailLoading}>
|
2026-07-02 15:01:19 +08:00
|
|
|
<div className="qual-review-form">
|
|
|
|
|
<div className="legal-check-bar">
|
|
|
|
|
<div className="legal-check-title">法律规定内容</div>
|
|
|
|
|
<div className="legal-check-grid">
|
|
|
|
|
{complianceCheckItems.map((item) => {
|
2026-07-02 16:58:07 +08:00
|
|
|
const style = LEGAL_STATUS_STYLE[item.status] || {};
|
2026-07-02 15:01:19 +08:00
|
|
|
return (
|
|
|
|
|
<div
|
2026-07-02 16:58:07 +08:00
|
|
|
key={item.title}
|
2026-07-02 15:01:19 +08:00
|
|
|
className="legal-check-item"
|
|
|
|
|
style={{
|
|
|
|
|
borderLeft: `3px solid ${style.borderColor}`,
|
|
|
|
|
background: style.bg,
|
|
|
|
|
}}
|
|
|
|
|
>
|
|
|
|
|
<span>{style.icon}</span>
|
|
|
|
|
<div>
|
|
|
|
|
<div style={{ fontWeight: 500 }}>{item.title}</div>
|
|
|
|
|
<div className="legal-check-item-desc">{item.description}</div>
|
|
|
|
|
</div>
|
2026-06-30 15:59:15 +08:00
|
|
|
</div>
|
2026-07-02 15:01:19 +08:00
|
|
|
);
|
|
|
|
|
})}
|
|
|
|
|
</div>
|
2026-06-30 15:59:15 +08:00
|
|
|
</div>
|
|
|
|
|
|
2026-07-02 15:01:19 +08:00
|
|
|
<FilingTabs
|
2026-07-02 16:58:07 +08:00
|
|
|
detail={qualFilingDetail}
|
2026-07-02 15:01:19 +08:00
|
|
|
isReview
|
|
|
|
|
compliance={compliance}
|
|
|
|
|
onComplianceChange={(id, v) =>
|
|
|
|
|
setCompliance((prev) => ({ ...prev, [id]: v }))
|
|
|
|
|
}
|
|
|
|
|
/>
|
2026-06-30 15:59:15 +08:00
|
|
|
|
2026-07-02 18:46:33 +08:00
|
|
|
<ReviewModal
|
2026-07-02 15:01:19 +08:00
|
|
|
open={reviewVisible}
|
2026-07-02 18:46:33 +08:00
|
|
|
filingId={qualFilingDetail?.id}
|
2026-07-03 10:35:36 +08:00
|
|
|
isChange={isChange}
|
2026-07-02 18:46:33 +08:00
|
|
|
legalPassCount={legalPassCount}
|
|
|
|
|
legalFailCount={legalFailCount}
|
2026-07-08 15:38:45 +08:00
|
|
|
onSuccess={() => props.history.goBack()}
|
2026-07-02 15:01:19 +08:00
|
|
|
onCancel={() => setReviewVisible(false)}
|
2026-07-02 18:46:33 +08:00
|
|
|
/>
|
2026-07-02 15:01:19 +08:00
|
|
|
</div>
|
|
|
|
|
</Spin>
|
2026-06-30 15:59:15 +08:00
|
|
|
</PageLayout>
|
|
|
|
|
);
|
|
|
|
|
};
|
|
|
|
|
|
2026-07-02 15:01:19 +08:00
|
|
|
export default Connect(
|
|
|
|
|
[NS_QUAL_REVIEW],
|
|
|
|
|
true,
|
|
|
|
|
)(QualReviewForm);
|