feat
parent
286cbb496c
commit
a5b7d7302a
|
|
@ -12,8 +12,8 @@ module.exports = {
|
|||
// 可通过环境变量覆盖: SAFETY_EVAL_API_HOST=http://192.168.x.x:8095
|
||||
//API_HOST: "https://gbs-gateway.qhdsafety.com",
|
||||
|
||||
API_HOST: "http://192.168.0.152",
|
||||
//API_HOST: "http://192.168.0.150", //太浅
|
||||
//API_HOST: "http://192.168.0.152",
|
||||
API_HOST: "http://192.168.0.150", //太浅
|
||||
// API_HOST: "http://192.168.0.152",
|
||||
//API_HOST: "http://192.168.0.103", //huwei
|
||||
},
|
||||
|
|
|
|||
|
|
@ -12,7 +12,12 @@ import {
|
|||
Popover,
|
||||
Image,
|
||||
Collapse,
|
||||
Row,
|
||||
Col,
|
||||
DatePicker,
|
||||
Form,
|
||||
} from "antd";
|
||||
import dayjs from "dayjs";
|
||||
import { CheckCircleFilled } from "@ant-design/icons";
|
||||
import { Connect } from "@cqsjjb/jjb-dva-runtime";
|
||||
import { NS_SAFETY_EVAL_BUSINESS } from "~/enumerate/namespace";
|
||||
|
|
@ -23,7 +28,7 @@ const { router } = tools;
|
|||
|
||||
const ControlContent = (props) => {
|
||||
const projectId = router.query?.id;
|
||||
const { processControlDetail, processControlFiles } =
|
||||
const { processControlDetail, processControlFiles, evalProjectDetailData } =
|
||||
props.safetyEvalBusiness || {};
|
||||
const { processControl, controllers, reviewItems } =
|
||||
processControlDetail || {};
|
||||
|
|
@ -38,6 +43,7 @@ const ControlContent = (props) => {
|
|||
|
||||
// 项目归档
|
||||
const [files, setFiles] = useState([]);
|
||||
const [archiveForm] = Form.useForm();
|
||||
|
||||
// 机构负责人签发
|
||||
const [approvalOpinion, setApprovalOpinion] = useState("");
|
||||
|
|
@ -79,6 +85,17 @@ const ControlContent = (props) => {
|
|||
if (processControl?.opinionContent) {
|
||||
setApprovalOpinion(processControl.opinionContent);
|
||||
}
|
||||
|
||||
if (processControl) {
|
||||
archiveForm.setFieldsValue({
|
||||
projectNo: evalProjectDetailData.projectNo,
|
||||
archiveTransferorName: processControlDetail.archiveTransferorName || "",
|
||||
archiveArchivistName: processControlDetail.archiveArchivistName || "",
|
||||
archiveDate: processControlDetail.archiveDate
|
||||
? dayjs(processControlDetail.archiveDate)
|
||||
: null,
|
||||
});
|
||||
}
|
||||
}, [processControlDetail]);
|
||||
|
||||
useEffect(() => {
|
||||
|
|
@ -151,7 +168,8 @@ const ControlContent = (props) => {
|
|||
// 归档项目并入库
|
||||
const handleArchive = async () => {
|
||||
if (!projectId) return;
|
||||
const res = await props.evalProcessControlArchive({ projectId });
|
||||
const values = await archiveForm.validateFields();
|
||||
const res = await props.evalProcessControlArchive({ projectId, ...values });
|
||||
if (res?.success !== false) {
|
||||
message.success("项目已归档入库");
|
||||
fetchDetail();
|
||||
|
|
@ -474,6 +492,31 @@ const ControlContent = (props) => {
|
|||
size="small"
|
||||
/>
|
||||
|
||||
<Form form={archiveForm} layout="vertical">
|
||||
<Row gutter={16} style={{ marginTop: 16, marginBottom: 16 }}>
|
||||
<Col span={6}>
|
||||
<Form.Item label="项目编号" name="projectNo">
|
||||
<Input placeholder="请输入项目编号" disabled />
|
||||
</Form.Item>
|
||||
</Col>
|
||||
<Col span={6}>
|
||||
<Form.Item label="移交人" name="archiveTransferorName" rules={[{ required: true, message: "请输入移交人" }]}>
|
||||
<Input placeholder="请输入移交人" allowClear maxLength={10} />
|
||||
</Form.Item>
|
||||
</Col>
|
||||
<Col span={6}>
|
||||
<Form.Item label="档案管理员" name="archiveArchivistName" rules={[{ required: true, message: "请输入档案管理员" }]}>
|
||||
<Input placeholder="请输入档案管理员" allowClear maxLength={10} />
|
||||
</Form.Item>
|
||||
</Col>
|
||||
<Col span={6}>
|
||||
<Form.Item label="入库日期" name="archiveDate">
|
||||
<DatePicker style={{ width: "100%" }} disabled />
|
||||
</Form.Item>
|
||||
</Col>
|
||||
</Row>
|
||||
</Form>
|
||||
|
||||
<Flex
|
||||
justify="space-between"
|
||||
align="center"
|
||||
|
|
|
|||
|
|
@ -12,6 +12,7 @@ import {
|
|||
Col,
|
||||
message,
|
||||
Tooltip,
|
||||
Collapse,
|
||||
} from "antd";
|
||||
import { Connect } from "@cqsjjb/jjb-dva-runtime";
|
||||
import { NS_SAFETY_EVAL_BUSINESS } from "~/enumerate/namespace";
|
||||
|
|
@ -79,8 +80,8 @@ const InternalReviewContent = (props) => {
|
|||
|
||||
const handleAssign = async () => {
|
||||
if (!projectId) return;
|
||||
const result= await handleConfirm("not_passed");
|
||||
if(!result) return;
|
||||
const result = await handleConfirm("not_passed");
|
||||
if (!result) return;
|
||||
const res = await props.evalInternalReviewAssign({
|
||||
projectId,
|
||||
signTaskPersonCmd: {
|
||||
|
|
@ -92,12 +93,12 @@ const InternalReviewContent = (props) => {
|
|||
});
|
||||
if (res?.success !== false) {
|
||||
message.success("已下发签字任务");
|
||||
fetchDetail()
|
||||
fetchDetail();
|
||||
}
|
||||
};
|
||||
|
||||
const handleConfirm = async (resultCode) => {
|
||||
if(!rows.every((r) => r.reviewConclusion)){
|
||||
if (!rows.every((r) => r.reviewConclusion)) {
|
||||
message.error("请填写审核结论");
|
||||
return;
|
||||
}
|
||||
|
|
@ -125,8 +126,7 @@ const InternalReviewContent = (props) => {
|
|||
if (resultCode === "passed") {
|
||||
props.getDetail?.();
|
||||
}
|
||||
}
|
||||
else{
|
||||
} else {
|
||||
reject();
|
||||
}
|
||||
});
|
||||
|
|
@ -266,14 +266,47 @@ const InternalReviewContent = (props) => {
|
|||
<Button
|
||||
size="small"
|
||||
onClick={handleAssign}
|
||||
loading={internalReviewAssignLoading}
|
||||
loading={internalReviewAssignLoading || props.safetyEvalBusiness?.internalReviewConfirmLoading}
|
||||
disabled={isDispatched || !selectedReviewer}
|
||||
>
|
||||
{isDispatched ? "已下发APP签字" : "下发APP签字"}
|
||||
</Button>
|
||||
</Flex>
|
||||
</Flex>
|
||||
|
||||
<Collapse
|
||||
style={{marginTop: '12px'}}
|
||||
items={[
|
||||
{
|
||||
key: "checklist",
|
||||
label: "内部审核完整核查清单(13项)",
|
||||
children: (
|
||||
<ol
|
||||
style={{
|
||||
margin: 0,
|
||||
paddingLeft: 20,
|
||||
fontSize: 13,
|
||||
color: "#475569",
|
||||
lineHeight: 1.8,
|
||||
}}
|
||||
>
|
||||
<li>评价依据是否充分、有效。</li>
|
||||
<li>危险有害因素识别是否全面。</li>
|
||||
<li>评价单元划分是否合理。</li>
|
||||
<li>评价方法选择是否适当。</li>
|
||||
<li>对策措施与建议是否可行。</li>
|
||||
<li>报告编制格式是否符合要求。</li>
|
||||
<li>报告文字、数据及其他内容是否准确。</li>
|
||||
<li>评价范围是否与项目任务通知书一致。</li>
|
||||
<li>是否保留现场影像记录。</li>
|
||||
<li>评价结论是否正确。</li>
|
||||
<li>评价对象情况描述是否存在重大遗漏或严重失实。</li>
|
||||
<li>生产工艺、设备、参数、危险源、控制点是否阐述清楚。</li>
|
||||
<li>重大危险源、重大隐患辨识是否准确。</li>
|
||||
</ol>
|
||||
),
|
||||
},
|
||||
]}
|
||||
/>
|
||||
<Flex justify="flex-end" gap={8} style={{ marginTop: 16 }}>
|
||||
<Button
|
||||
loading={props.safetyEvalBusiness?.internalReviewConfirmLoading}
|
||||
|
|
|
|||
|
|
@ -12,6 +12,7 @@ import {
|
|||
Typography,
|
||||
message,
|
||||
Tooltip,
|
||||
Collapse,
|
||||
} from "antd";
|
||||
import { Connect } from "@cqsjjb/jjb-dva-runtime";
|
||||
import { NS_SAFETY_EVAL_BUSINESS } from "~/enumerate/namespace";
|
||||
|
|
@ -76,8 +77,8 @@ const TechnicalReviewContent = (props) => {
|
|||
|
||||
const handleAssign = async () => {
|
||||
if (!projectId) return;
|
||||
const result= await handleConfirm("not_passed");
|
||||
if(!result) return;
|
||||
const result = await handleConfirm("not_passed");
|
||||
if (!result) return;
|
||||
const res = await props.evalTechReviewAssign({
|
||||
projectId,
|
||||
signTaskPersonCmd: {
|
||||
|
|
@ -89,7 +90,7 @@ const TechnicalReviewContent = (props) => {
|
|||
});
|
||||
if (res?.success !== false) {
|
||||
message.success("已下发签字任务");
|
||||
fetchDetail()
|
||||
fetchDetail();
|
||||
}
|
||||
};
|
||||
|
||||
|
|
@ -267,14 +268,47 @@ const TechnicalReviewContent = (props) => {
|
|||
<Button
|
||||
size="small"
|
||||
onClick={handleAssign}
|
||||
loading={props.safetyEvalBusiness?.techReviewAssignLoading}
|
||||
loading={props.safetyEvalBusiness?.techReviewAssignLoading || props.safetyEvalBusiness?.techReviewConfirmLoading}
|
||||
disabled={isDispatched || !selectedReviewer}
|
||||
>
|
||||
{isDispatched ? "已下发APP签字" : "下发APP签字"}
|
||||
</Button>
|
||||
</Flex>
|
||||
</Flex>
|
||||
|
||||
<Collapse
|
||||
style={{ marginTop: "12px" }}
|
||||
items={[
|
||||
{
|
||||
key: "checklist",
|
||||
label: "技术审核完整核查清单(13项)",
|
||||
children: (
|
||||
<ol
|
||||
style={{
|
||||
margin: 0,
|
||||
paddingLeft: 20,
|
||||
fontSize: 13,
|
||||
color: "#475569",
|
||||
lineHeight: 1.8,
|
||||
}}
|
||||
>
|
||||
<li>评价依据是否得到引用和验证。</li>
|
||||
<li>现场收集资料是否齐全、有效。</li>
|
||||
<li>危险有害因素识别是否充分。</li>
|
||||
<li>评价单元划分是否合理。</li>
|
||||
<li>评价方法是否适用。</li>
|
||||
<li>对策措施及建议是否具有针对性、可行性。</li>
|
||||
<li>评价结论是否准确。</li>
|
||||
<li>报告是否存在重大遗漏。</li>
|
||||
<li>整改照片是否符合要求。</li>
|
||||
<li>内审修改是否得到验证。</li>
|
||||
<li>报告是否代表机构总体控制水平。</li>
|
||||
<li>报告附件资料是否有效。</li>
|
||||
<li>报告是否符合安全生产监督管理部门最新要求。</li>
|
||||
</ol>
|
||||
),
|
||||
},
|
||||
]}
|
||||
/>
|
||||
<Flex justify="flex-end" gap={8} style={{ marginTop: 16 }}>
|
||||
<Button
|
||||
loading={props.safetyEvalBusiness?.techReviewConfirmLoading}
|
||||
|
|
|
|||
Loading…
Reference in New Issue