diff --git a/src/enumerate/constant/index.js b/src/enumerate/constant/index.js
index c7d783b..132bff7 100644
--- a/src/enumerate/constant/index.js
+++ b/src/enumerate/constant/index.js
@@ -125,6 +125,18 @@ export const QUAL_MONITOR_STATUS_OPTIONS = [
{ value: "person_rate", label: "人员比例预警" },
];
+/** 资质保持监控-业务范围专业能力配备标准 */
+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 名及以上" },
+];
+
/** 证书类型选项 */
export const CERT_TYPE_OPTIONS = [
{ value: "registered_safety_engineer", label: "注册安全工程师" },
diff --git a/src/pages/Container/MonitorManage/QualMonitor/index.js b/src/pages/Container/MonitorManage/QualMonitor/index.js
index 01d81eb..7965d60 100644
--- a/src/pages/Container/MonitorManage/QualMonitor/index.js
+++ b/src/pages/Container/MonitorManage/QualMonitor/index.js
@@ -16,6 +16,7 @@ import {
QUAL_MONITOR_STATUS_MAP,
QUAL_MONITOR_CONDITION_ITEMS,
QUAL_MONITOR_STATUS_OPTIONS,
+ QUAL_MONITOR_STANDARD_ROWS,
} from "~/enumerate/constant";
import "./index.less";
@@ -112,6 +113,7 @@ const QualMonitor = (props) => {
const [form] = Form.useForm();
const [detailVisible, setDetailVisible] = useState(false);
const [detailRecord, setDetailRecord] = useState(null);
+ const [standardVisible, setStandardVisible] = useState(false);
const [data, setData] = useState([]);
const { qualReview, queryQualMonitorPage, queryQualMonitorCondition, queryQualMonitoringPageStatistics } = props;
@@ -326,11 +328,7 @@ const QualMonitor = (props) => {
))}
- {/* 资质条件来源说明 */}
-
- 页面定位:
- 资质保持监控是监管信息看板,展示机构具备哪些资质、资质条件是否保持、每个结论来自哪些字段。系统命中异常后自动生成风险消息,发函、整改、机构反馈、复核闭环等办理流程全部在“风险预警中心”完成。
-
+
{/* 搜索表单 */}
{
onFinish={onFinish}
/>
+
+
+ 机构列表:先看机构具备哪些资质/业务范围,再看各保持条件和来源字段。
+
+
+
+
{/* 数据表格 */}
{
)}
+
+ {/* 检查口径弹窗 */}
+ setStandardVisible(false)}
+ width={760}
+ footer={
+
+ }
+ >
+
+ 资质保持条件:
+ 监管端按独立法人、资产场所、人员数量及比例、负责人、制度、承诺书、网站、失信记录、属地要求和专业能力标准建立检查项。
+
+
+
);
diff --git a/src/pages/Container/MonitorManage/QualMonitor/index.less b/src/pages/Container/MonitorManage/QualMonitor/index.less
index bb7ea76..e8aef5c 100644
--- a/src/pages/Container/MonitorManage/QualMonitor/index.less
+++ b/src/pages/Container/MonitorManage/QualMonitor/index.less
@@ -125,6 +125,19 @@
white-space: nowrap;
}
+ // 工具栏
+ .qm-toolbar {
+ display: flex;
+ align-items: center;
+ justify-content: space-between;
+ margin-bottom: 12px;
+
+ .qm-toolbar-hint {
+ font-size: 0.85rem;
+ color: #64748b;
+ }
+ }
+
// 核查口径说明
.check-note {
margin-bottom: 12px;
diff --git a/src/pages/Container/SafetyEvalBusiness/EvalProject/Create/index.js b/src/pages/Container/SafetyEvalBusiness/EvalProject/Create/index.js
index f1bfb21..f255cff 100644
--- a/src/pages/Container/SafetyEvalBusiness/EvalProject/Create/index.js
+++ b/src/pages/Container/SafetyEvalBusiness/EvalProject/Create/index.js
@@ -323,8 +323,8 @@ const EvalProjectCreate = (props) => {
rules={[{ required: true, message: "请选择是否法定项目" }]}
>
- 是
- 否
+ 是,纳入监管端监管
+ 否,仅机构内部管理
diff --git a/src/pages/Container/SafetyEvalBusiness/ProjectFlow/ControlContent.js b/src/pages/Container/SafetyEvalBusiness/ProjectFlow/ControlContent.js
index 31b2b0c..7f935c2 100644
--- a/src/pages/Container/SafetyEvalBusiness/ProjectFlow/ControlContent.js
+++ b/src/pages/Container/SafetyEvalBusiness/ProjectFlow/ControlContent.js
@@ -1,5 +1,18 @@
import React, { useState, useEffect } from "react";
-import { Tag, Button, Card, Table, Select, Input, Flex, Typography, message, Popover, Image } from "antd";
+import {
+ Tag,
+ Button,
+ Card,
+ Table,
+ Select,
+ Input,
+ Flex,
+ Typography,
+ message,
+ Popover,
+ Image,
+ Collapse,
+} from "antd";
import { CheckCircleFilled } from "@ant-design/icons";
import { Connect } from "@cqsjjb/jjb-dva-runtime";
import { NS_SAFETY_EVAL_BUSINESS } from "~/enumerate/namespace";
@@ -16,17 +29,15 @@ const ControlContent = (props) => {
processControlDetail || {};
const [selectPeople, setSelectPeople] = useState(null);
-
+
// 当前步骤:1-过程控制审核 2-机构负责人签发 3-项目归档
const [step, setStep] = useState(1);
// 过程控制审核
const [rows, setRows] = useState([]);
-
// 项目归档
const [files, setFiles] = useState([]);
-
// 机构负责人签发
const [approvalOpinion, setApprovalOpinion] = useState("");
@@ -34,7 +45,6 @@ const ControlContent = (props) => {
const fetchDetail = () => {
props.evalProcessControlDetail({ projectId }).then((res) => {
if (res?.success) {
-
if (res?.data?.signTaskPersonCo) {
setSelectPeople({
value: res?.data?.signTaskPersonCo?.signerPersonnelId,
@@ -65,10 +75,9 @@ const ControlContent = (props) => {
})),
);
}
-
+
if (processControl?.opinionContent) {
setApprovalOpinion(processControl.opinionContent);
-
}
}, [processControlDetail]);
@@ -89,13 +98,12 @@ const ControlContent = (props) => {
const isSignatureCompleted =
processControl?.reviewerSignatureTaskStatus === "completed";
-
- const canArchive = isSignatureCompleted ;
+ const canArchive = isSignatureCompleted;
// 过程控制签字提交(confirm)
const handleConfirm = async (resultCode) => {
if (!projectId) return;
- if(!rows.every((r) => r.reviewConclusion)){
+ if (!rows.every((r) => r.reviewConclusion)) {
message.error("请填写所有核查项的结果");
return;
}
@@ -119,7 +127,7 @@ const ControlContent = (props) => {
message.success(
resultCode === "passed" ? "已提交通过审核" : "已提交退回修改",
);
- fetchDetail();
+ fetchDetail();
}
};
@@ -194,63 +202,61 @@ const ControlContent = (props) => {
const fileColumns = [
{ title: "流程名称", dataIndex: "processName", ellipsis: true },
{ title: "条目名称", dataIndex: "itemName", ellipsis: true },
-
+
{
title: "文件",
dataIndex: "projectDocUrl",
-
+
render: (val) => {
let files = [];
if (typeof val === "string") {
- try { files = JSON.parse(val); } catch { files = []; }
+ try {
+ files = JSON.parse(val);
+ } catch {
+ files = [];
+ }
} else if (Array.isArray(val)) {
files = val;
}
if (!files.length) return "-";
return (
-
- {files.map((f, i) => {
- const url = f.url || f.response?.url;
- return isImage(f.name) ? (
-
- {(
-
- )}
-
- ) : (
- window.open(url)}
- >
+
+ {files.map((f, i) => {
+ const url = f.url || f.response?.url;
+ return isImage(f.name) ? (
+
+ {}
+
+ ) : (
+ window.open(url)}
+ >
{f.name || "查看文件"}
-
- );
- })}
-
- }
- trigger="hover"
- placement="topLeft"
+
+ );
+ })}
+
+ }
+ trigger="hover"
+ placement="topLeft"
+ >
+ e.preventDefault()}
+ style={{ cursor: "pointer" }}
>
- e.preventDefault()}
- style={{ cursor: "pointer" }}
- >
- {files.length}个附件
-
-
+ {files.length}个附件
+
+
);
},
},
-
];
const STEP_ITEMS = [
@@ -300,7 +306,45 @@ const ControlContent = (props) => {
pagination={false}
size="small"
/>
-
+
+ 合同签订前是否进行项目风险分析。
+ 是否签订技术服务合同。
+ 是否下达项目任务通知单。
+ 是否有项目组成立和项目负责人任命记录。
+ 是否编制项目实施计划。
+ 现场检查记录是否完整、有效。
+ 是否有书面整改通知单并由被评价单位盖章或签字确认。
+
+ 是否进行现场复查,复查单是否双方签名或盖章并注明日期。
+
+ 是否有现场勘查、整改复查影像资料。
+ 是否完成内审、技审并保留审核记录、签字和日期。
+ 委托方提供资料是否齐全并由被评价单位盖章。
+
+ 委托方资料、评价过程资料和评价报告存档是否符合要求。
+
+ 存档资料是否完整且具有可追溯性。
+
+ ),
+ },
+ ]}
+ />