feat
parent
107c89aaca
commit
b2465721bb
|
|
@ -80,7 +80,12 @@ export const queryQualMonitorCondition = declareRequest(
|
|||
export const queryQualMonitoringPageStatistics = declareRequest(
|
||||
"qualReviewLoading",
|
||||
"Get > /safetyEval/qual-filing/qualificationMonitoringPageStatistics",
|
||||
"monitorStats: {} | res.data || {}",
|
||||
'monitorStats: {} | res.data || {}',
|
||||
);
|
||||
|
||||
export const queryQualFilingCheckItem = declareRequest(
|
||||
"qualFilingCheckItemLoading",
|
||||
"Get > /safetyEval/qual-filing/check-item",
|
||||
);
|
||||
|
||||
// ─── 资质现场核查 ───
|
||||
|
|
|
|||
|
|
@ -19,6 +19,7 @@ import { NS_SAFETY_EVAL_BUSINESS } from "~/enumerate/namespace";
|
|||
import { tools } from "@cqsjjb/jjb-common-lib";
|
||||
import { EVAL_TYPE_MAP, ROLE_DEFINITIONS_MAP } from "~/enumerate/constant";
|
||||
import { PROJECT_TYPE_MAP } from "~/enumerate/constant";
|
||||
import WpsEditor from "~/pages/Container/WpsEditor";
|
||||
import "./index.less";
|
||||
|
||||
const { router } = tools;
|
||||
|
|
@ -351,6 +352,7 @@ const EvalProjectMonitorDetail = (props) => {
|
|||
evalSurveyList,
|
||||
evalSurveyPage,
|
||||
evalProjectDetail,
|
||||
queryMyOrCreateDoc,
|
||||
} = props;
|
||||
const {
|
||||
contractLoading,
|
||||
|
|
@ -358,6 +360,7 @@ const EvalProjectMonitorDetail = (props) => {
|
|||
evalSurveyListLoading,
|
||||
evalSurveyPageLoading,
|
||||
evalProjectDetailData,
|
||||
wpsDoc,
|
||||
} = safetyEvalBusiness || {};
|
||||
|
||||
const [contractData, setContractData] = useState(null);
|
||||
|
|
@ -365,6 +368,7 @@ const EvalProjectMonitorDetail = (props) => {
|
|||
const [surveyPersonnel, setSurveyPersonnel] = useState([]);
|
||||
const [surveyAttachments, setSurveyAttachments] = useState({});
|
||||
const [activeKey, setActiveKey] = useState("BUSINESS_CONTRACT");
|
||||
const [wpsVisible, setWpsVisible] = useState(false);
|
||||
|
||||
const fetchContract = async () => {
|
||||
if (!projectId) return;
|
||||
|
|
@ -403,6 +407,7 @@ const EvalProjectMonitorDetail = (props) => {
|
|||
useEffect(() => {
|
||||
if (projectId) {
|
||||
evalProjectDetail({ id: projectId });
|
||||
queryMyOrCreateDoc({ docxUrl: "", projectId });
|
||||
}
|
||||
fetchContract();
|
||||
fetchTeam();
|
||||
|
|
@ -463,7 +468,13 @@ const EvalProjectMonitorDetail = (props) => {
|
|||
{projectInfo}
|
||||
<Tabs
|
||||
activeKey={activeKey}
|
||||
onChange={setActiveKey}
|
||||
onChange={(key) => {
|
||||
if (key === "REPORT_PREPARATION") {
|
||||
setWpsVisible(true);
|
||||
return;
|
||||
}
|
||||
setActiveKey(key);
|
||||
}}
|
||||
items={[
|
||||
{
|
||||
key: "BUSINESS_CONTRACT",
|
||||
|
|
@ -489,8 +500,20 @@ const EvalProjectMonitorDetail = (props) => {
|
|||
/>
|
||||
),
|
||||
},
|
||||
{
|
||||
key: "REPORT_PREPARATION",
|
||||
label: renderTabLabel("报告编制", "REPORT_PREPARATION"),
|
||||
children: null,
|
||||
},
|
||||
]}
|
||||
/>
|
||||
{wpsVisible && (
|
||||
<WpsEditor
|
||||
onCancel={() => setWpsVisible(false)}
|
||||
fileId={wpsDoc?.fileId}
|
||||
readOnly
|
||||
/>
|
||||
)}
|
||||
</PageLayout>
|
||||
);
|
||||
};
|
||||
|
|
|
|||
|
|
@ -14,7 +14,6 @@ import {
|
|||
} from "~/enumerate/enterpriseOptions";
|
||||
import {
|
||||
QUAL_MONITOR_STATUS_MAP,
|
||||
QUAL_MONITOR_CONDITION_ITEMS,
|
||||
QUAL_MONITOR_STATUS_OPTIONS,
|
||||
QUAL_MONITOR_STANDARD_ROWS,
|
||||
} from "~/enumerate/constant";
|
||||
|
|
@ -113,11 +112,12 @@ const QualMonitor = (props) => {
|
|||
const [form] = Form.useForm();
|
||||
const [detailVisible, setDetailVisible] = useState(false);
|
||||
const [detailRecord, setDetailRecord] = useState(null);
|
||||
const [checkItems, setCheckItems] = useState([]);
|
||||
const [standardVisible, setStandardVisible] = useState(false);
|
||||
const [data, setData] = useState([]);
|
||||
|
||||
const { qualReview, queryQualMonitorPage, queryQualMonitorCondition, queryQualMonitoringPageStatistics } = props;
|
||||
const { qualMonitorList, qualMonitorTotal, qualReviewLoading, monitorStats = {} } =
|
||||
const { qualReview, queryQualMonitorPage, queryQualMonitorCondition, queryQualMonitoringPageStatistics, queryQualFilingCheckItem } = props;
|
||||
const { qualMonitorList, qualMonitorTotal, qualReviewLoading, qualFilingCheckItemLoading, monitorStats = {} } =
|
||||
qualReview || {};
|
||||
|
||||
const stats = {
|
||||
|
|
@ -157,21 +157,21 @@ const QualMonitor = (props) => {
|
|||
queryQualMonitoringPageStatistics();
|
||||
}, []);
|
||||
|
||||
const openDetail = (record) => {
|
||||
setDetailRecord({
|
||||
...record,
|
||||
conditionDetails: buildConditionDetails(record),
|
||||
});
|
||||
const openDetail = async (record) => {
|
||||
setDetailRecord(record);
|
||||
setDetailVisible(true);
|
||||
setCheckItems([]);
|
||||
const res = await queryQualFilingCheckItem({ id: record.id });
|
||||
if (res?.success !== false) {
|
||||
setCheckItems(res?.data || []);
|
||||
}
|
||||
};
|
||||
|
||||
const resultTag = (result) => {
|
||||
if (result === "通过") return <Tag color="success">通过</Tag>;
|
||||
if (result === "预警" || result === "需核验")
|
||||
return <Tag color="warning">{result}</Tag>;
|
||||
if (result === "不通过" || result === "部分异常")
|
||||
return <Tag color="error">{result}</Tag>;
|
||||
return <Tag>{result}</Tag>;
|
||||
const resultTag = (status) => {
|
||||
if (status === "PASS") return <Tag color="success">通过</Tag>;
|
||||
if (status === "WARN") return <Tag color="warning">预警</Tag>;
|
||||
if (status === "NOT_PASS") return <Tag color="error">不通过</Tag>;
|
||||
return <Tag>{status}</Tag>;
|
||||
};
|
||||
|
||||
const columns = [
|
||||
|
|
@ -423,33 +423,29 @@ const QualMonitor = (props) => {
|
|||
每项展示监管字段、当前值、结论和来源。
|
||||
</div>
|
||||
<Table
|
||||
rowKey="key"
|
||||
rowKey="title"
|
||||
size="small"
|
||||
pagination={false}
|
||||
loading={qualFilingCheckItemLoading}
|
||||
columns={[
|
||||
{ title: "检查项", dataIndex: "label", width: 120 },
|
||||
{ title: "资质要求", dataIndex: "require", width: 280 },
|
||||
{ title: "当前值", dataIndex: "value", width: 260 },
|
||||
{ title: "检查项", dataIndex: "title", width: 120 },
|
||||
{ title: "资质要求", dataIndex: "description", width: 280 },
|
||||
{ title: "当前值", dataIndex: "currentValue", width: 260 },
|
||||
{
|
||||
title: "结论",
|
||||
dataIndex: "result",
|
||||
dataIndex: "status",
|
||||
width: 80,
|
||||
render: resultTag,
|
||||
},
|
||||
{
|
||||
title: "来源字段",
|
||||
dataIndex: "source",
|
||||
dataIndex: "sourceColumn",
|
||||
render: (text) => (
|
||||
<span className="cell-source">{text}</span>
|
||||
),
|
||||
},
|
||||
]}
|
||||
dataSource={QUAL_MONITOR_CONDITION_ITEMS.map((item) => {
|
||||
const detail = detailRecord.conditionDetails[item.key];
|
||||
return detail
|
||||
? { key: item.key, label: item.label, ...detail }
|
||||
: null;
|
||||
}).filter(Boolean)}
|
||||
dataSource={checkItems}
|
||||
/>
|
||||
</div>
|
||||
)}
|
||||
|
|
|
|||
|
|
@ -21,7 +21,7 @@ import "./index.less";
|
|||
const { router } = tools;
|
||||
|
||||
const App = (props) => {
|
||||
const { onCancel, safetyEvalBusiness } = props;
|
||||
const { onCancel, safetyEvalBusiness, readOnly } = props;
|
||||
const { createDocLoading } = safetyEvalBusiness;
|
||||
const [expandedMap, setExpandedMap] = useState({});
|
||||
const [fileId, setFileId] = useState(props.fileId);
|
||||
|
|
@ -90,7 +90,7 @@ const App = (props) => {
|
|||
mount: document.getElementById("app-sbsb"),
|
||||
fileId: fileId,
|
||||
token: sessionStorage.getItem("token"),
|
||||
|
||||
...(readOnly ? { commonOptions: { isBrowserViewMode: true } } : {}),
|
||||
});
|
||||
await instance.ready();
|
||||
sdkRef.current = instance;
|
||||
|
|
@ -116,7 +116,7 @@ const App = (props) => {
|
|||
}
|
||||
extra={
|
||||
<Flex gap={12}>
|
||||
<Button onClick={handleSave}>保存</Button>
|
||||
{!readOnly && <Button onClick={handleSave}>保存</Button>}
|
||||
<Button onClick={handleDownload}>下载报告</Button>
|
||||
|
||||
</Flex>
|
||||
|
|
|
|||
Loading…
Reference in New Issue