样式修改

master
LiuJiaNan 2026-04-08 17:08:06 +08:00
parent bcd0d4a2ee
commit f4c8a67d88
12 changed files with 526 additions and 831 deletions

View File

@ -0,0 +1,60 @@
import { Image } from "antd";
import { getFileUrl } from "zy-react-library/utils";
function DisclaimerSign({
colSpan,
firstColSpan,
lastColSpan,
safetyRemarks,
safetySignPath,
safetySignTime,
AcceptRemarks,
AcceptSignPath,
AcceptSignTime,
}) {
const showFirst = safetyRemarks || safetySignPath || safetySignTime;
const showLast = AcceptRemarks || AcceptSignPath || AcceptSignTime;
return (
<tr>
{
showFirst && (
<td colSpan={(firstColSpan || colSpan) + (!showLast ? (lastColSpan || colSpan) : 0)}>
<div className="flex">
<div>
<span>安全交底人</span>
<span>{safetyRemarks}</span>
</div>
<div className="right">
<div>
{safetySignPath && <Image src={getFileUrl() + safetySignPath} width={50} height={50} />}
</div>
<div>{safetySignTime}</div>
</div>
</div>
</td>
)
}
{
showLast && (
<td colSpan={(lastColSpan || colSpan) + (!showFirst ? (firstColSpan || colSpan) : 0)}>
<div className="flex">
<div>
<span>接受交底人</span>
<span>{AcceptRemarks}</span>
</div>
<div className="right">
<div>
{AcceptSignPath && <Image src={getFileUrl() + AcceptSignPath} width={50} height={50} />}
</div>
<div>{AcceptSignTime}</div>
</div>
</div>
</td>
)
}
</tr>
);
}
export default DisclaimerSign;

View File

@ -0,0 +1,46 @@
import { Image } from "antd";
import { Fragment } from "react";
import { getFileUrl } from "zy-react-library/utils";
function OpinionSign({
title,
colSpan,
remarks,
signPath,
signTime,
}) {
const show = signPath || remarks || signTime;
return (
<Fragment>
{
show && (
<tr>
<td colSpan={colSpan}>
<div className="flex">
<div>
<span>
{title}
</span>
<span>{remarks}</span>
</div>
<div className="right">
<div>
<span>签字</span>
<span>
{signPath && <Image src={getFileUrl() + signPath} width={50} height={50} />}
</span>
<span>{signTime}</span>
</div>
</div>
</div>
</td>
</tr>
)
}
</Fragment>
);
}
export default OpinionSign;

View File

@ -0,0 +1,75 @@
import { Connect } from "@cqsjjb/jjb-dva-runtime";
import { Image } from "antd";
import { useEffect, useState } from "react";
import useGetUrlQuery from "zy-react-library/hooks/useGetUrlQuery";
import { getFileUrl } from "zy-react-library/utils";
import { NS_EIGHTWORK } from "~/enumerate/namespace";
function SafetyMeasures(props) {
const query = useGetUrlQuery();
const [safetyMeasures, setSafetyMeasures] = useState([]);
const [otherSafetyMeasures, setOtherSafetyMeasures] = useState([]);
const getData = async () => {
const { data } = await props["eightworkMeasuresLogs"]({ workId: query.workId });
setSafetyMeasures(data.filter(item => item.type === 1));
setOtherSafetyMeasures(data.filter(item => item.type === 2));
};
useEffect(() => {
getData();
}, []);
return (
<tr>
<td colSpan={props.colSpan} style={{ border: "none", padding: 0 }}>
<table>
<tbody>
<tr>
<td className="center title" style={{ width: 80 }}>序号</td>
<td className="center title" style={{ width: "auto" }}>安全措施</td>
<td className="center title" style={{ width: 100 }}>是否涉及</td>
<td className="center title" style={{ width: 100 }}>确认人</td>
</tr>
{safetyMeasures.map((item, index) => (
<tr key={index}>
<td className="center">{index + 1}</td>
<td>{item.content}</td>
<td className="center">符合</td>
<td className="center">
{item.signPath && <Image src={getFileUrl() + item.signPath} width={50} height={50} />}
</td>
</tr>
))}
{
otherSafetyMeasures.length > 0 && (
<tr>
<td className="center">{safetyMeasures.length + 1}</td>
<td colSpan={3}>
{
otherSafetyMeasures.map((item, index) => (
<div key={index} style={{ display: "flex", justifyContent: "space-between" }}>
<div>
<span>其它安全措施</span>
<span>{item.content}</span>
</div>
<div>
<span>编制人</span>
<span>{item.createName}</span>
</div>
</div>
))
}
</td>
</tr>
)
}
</tbody>
</table>
</td>
</tr>
);
}
export default Connect([NS_EIGHTWORK], true)(SafetyMeasures);

View File

@ -7,21 +7,28 @@
th, td {
border: 1px solid #ddd;
padding: 8px;
}
&.title{
font-weight: 600;
color: #333;
background-color: #f2f2f2;
width: 200px;
}
.title{
font-weight: 600;
color: #333;
background-color: #f2f2f2;
width: 200px;
}
&.center {
text-align: center;
}
.center {
text-align: center;
}
&.right {
text-align: right;
}
.right {
text-align: right;
}
.flex {
display: flex;
justify-content: space-between;
align-items: center;
gap: 10px;
}
}
}

View File

@ -6,6 +6,9 @@ import { useReactToPrint } from "react-to-print";
import Page from "zy-react-library/components/Page";
import useGetUrlQuery from "zy-react-library/hooks/useGetUrlQuery";
import { getFileUrl } from "zy-react-library/utils";
import DisclaimerSign from "~/components/DisclaimerSign";
import OpinionSign from "~/components/OpinionSign";
import SafetyMeasures from "~/components/SafetyMeasures";
import { NS_EIGHTWORK } from "~/enumerate/namespace";
import "~/css/index.less";
@ -29,15 +32,10 @@ function View(props) {
});
const [info, setInfo] = useState({});
const [safetyMeasures, setSafetyMeasures] = useState([]);
const [otherSafetyMeasures, setOtherSafetyMeasures] = useState([]);
const getData = async () => {
const { data: basicInfo } = await props["eightworkInfo"]({ id: query.id });
setInfo(basicInfo);
const { data: measuresLogs } = await props["eightworkMeasuresLogs"]({ workId: query.workId });
setSafetyMeasures(measuresLogs.filter(item => item.type === 1));
setOtherSafetyMeasures(measuresLogs.filter(item => item.type === 2));
};
useEffect(() => {
@ -157,124 +155,52 @@ function View(props) {
<td className="title">实际作业开始时间</td>
<td colSpan={6}>{info?.info?.workStartTime}</td>
</tr>
<tr>
<td colSpan={7} style={{ border: "none", padding: 0 }}>
<table>
<tbody>
<tr>
<td className="center title" style={{ width: 80 }}>序号</td>
<td className="center title" style={{ width: "auto" }}>安全措施</td>
<td className="center title" style={{ width: 100 }}>是否涉及</td>
<td className="center title" style={{ width: 100 }}>确认人</td>
</tr>
{safetyMeasures.map((item, index) => (
<tr key={index}>
<td className="center">{index + 1}</td>
<td>{item.content}</td>
<td className="center">符合</td>
<td className="center">
{item.signPath && <Image src={getFileUrl() + item.signPath} width={50} height={50} />}
</td>
</tr>
))}
<tr>
<td className="center">{safetyMeasures.length + 1}</td>
<td colSpan={3}>
{
otherSafetyMeasures.map((item, index) => (
<div key={index} style={{ display: "flex", justifyContent: "space-between" }}>
<div>
<span>其它安全措施</span>
<span>{item.content}</span>
</div>
<div>
<span>编制人</span>
<span>{item.createName}</span>
</div>
</div>
))
}
</td>
</tr>
</tbody>
</table>
</td>
</tr>
<tr>
<td className="title">安全交底人</td>
<td className="right" colSpan={3}>
<div>
{info?.info?.step_18?.signPath
&& <Image src={getFileUrl() + info?.info?.step_18?.signPath} width={50} height={50} />}
</div>
<div>{info?.info?.step_18?.signTime}</div>
<div>{info?.info?.step_18?.remarks}</div>
</td>
<td className="title">接受交底人</td>
<td className="right" colSpan={2}>
<div>
{info?.info?.step_19?.signPath
&& <Image src={getFileUrl() + info?.info?.step_19?.signPath} width={50} height={50} />}
</div>
<div>{info?.info?.step_19?.signTime}</div>
<div>{info?.info?.step_19?.remarks}</div>
</td>
</tr>
<tr>
<td className="title">作业负责人意见</td>
<td className="right" colSpan={6}>
<div>
{info?.info?.step_21?.signPath
&& <Image src={getFileUrl() + info?.info?.step_21?.signPath} width={50} height={50} />}
</div>
<div>{info?.info?.step_21?.signTime}</div>
<div>{info?.info?.step_21?.remarks}</div>
</td>
</tr>
<tr>
<td className="title">所在单位意见</td>
<td className="right" colSpan={6}>
<div>
{info?.info?.step_22?.signPath
&& <Image src={getFileUrl() + info?.info?.step_22?.signPath} width={50} height={50} />}
</div>
<div>{info?.info?.step_22?.signTime}</div>
<div>{info?.info?.step_22?.remarks}</div>
</td>
</tr>
<tr>
<td className="title">审核部门意见</td>
<td className="right" colSpan={6}>
<div>
{info?.info?.step_23?.signPath
&& <Image src={getFileUrl() + info?.info?.step_23?.signPath} width={50} height={50} />}
</div>
<div>{info?.info?.step_23?.signTime}</div>
<div>{info?.info?.step_23?.remarks}</div>
</td>
</tr>
<tr>
<td className="title">审批部门意见</td>
<td className="right" colSpan={6}>
<div>
{info?.info?.step_24?.signPath
&& <Image src={getFileUrl() + info?.info?.step_24?.signPath} width={50} height={50} />}
</div>
<div>{info?.info?.step_24?.signTime}</div>
<div>{info?.info?.step_24?.remarks}</div>
</td>
</tr>
<tr>
<td className="title">完工验收</td>
<td className="right" colSpan={6}>
<div>
{info?.info?.step_25?.signPath
&& <Image src={getFileUrl() + info?.info?.step_25?.signPath} width={50} height={50} />}
</div>
<div>{info?.info?.step_25?.signTime}</div>
<div>{info?.info?.step_25?.remarks}</div>
</td>
</tr>
<SafetyMeasures colSpan={7} />
<DisclaimerSign
firstColSpan={4}
lastColSpan={3}
safetyRemarks={info?.info?.step_18?.remarks}
safetySignPath={info?.info?.step_18?.signPath}
safetySignTime={info?.info?.step_18?.signTime}
AcceptRemarks={info?.info?.step_19?.remarks}
AcceptSignPath={info?.info?.step_19?.signPath}
AcceptSignTime={info?.info?.step_19?.signTime}
/>
<OpinionSign
title="作业负责人意见"
colSpan={7}
remarks={info?.info?.step_21?.remarks}
signPath={info?.info?.step_21?.signPath}
signTime={info?.info?.step_21?.signTime}
/>
<OpinionSign
title="所在单位意见"
colSpan={7}
remarks={info?.info?.step_22?.remarks}
signPath={info?.info?.step_22?.signPath}
signTime={info?.info?.step_22?.signTime}
/>
<OpinionSign
title="审核部门意见"
colSpan={7}
remarks={info?.info?.step_23?.remarks}
signPath={info?.info?.step_23?.signPath}
signTime={info?.info?.step_23?.signTime}
/>
<OpinionSign
title="审批部门意见"
colSpan={7}
remarks={info?.info?.step_24?.remarks}
signPath={info?.info?.step_24?.signPath}
signTime={info?.info?.step_24?.signTime}
/>
<OpinionSign
title="完工验收"
colSpan={7}
remarks={info?.info?.step_25?.remarks}
signPath={info?.info?.step_25?.signPath}
signTime={info?.info?.step_25?.signTime}
/>
</tbody>
</table>
</div>

View File

@ -30,7 +30,6 @@ function View(props) {
const [info, setInfo] = useState({});
const [safetyMeasures, setSafetyMeasures] = useState([]);
const [otherSafetyMeasures, setOtherSafetyMeasures] = useState([]);
// const [delayedMonitoringRecord, setDelayedMonitoringRecord] = useState([]);
const [gasMonitoringRecord, setGasMonitoringRecord] = useState([]);
const getData = async () => {
@ -41,7 +40,6 @@ function View(props) {
pageSize: 999,
pageIndex: 1,
});
// setDelayedMonitoringRecord(supplementaryInfo.filter(item => item.type === "delay"));
setGasMonitoringRecord(supplementaryInfo.filter(item => item.type === "gas"));
const { data: measuresLogs } = await props["eightworkMeasuresLogs"]({ workId: query.workId });
setSafetyMeasures(measuresLogs.filter(item => item.type === 1));

View File

@ -6,6 +6,9 @@ import { useReactToPrint } from "react-to-print";
import Page from "zy-react-library/components/Page";
import useGetUrlQuery from "zy-react-library/hooks/useGetUrlQuery";
import { getFileUrl } from "zy-react-library/utils";
import DisclaimerSign from "~/components/DisclaimerSign";
import OpinionSign from "~/components/OpinionSign";
import SafetyMeasures from "~/components/SafetyMeasures";
import { NS_EIGHTWORK } from "~/enumerate/namespace";
import "~/css/index.less";
@ -29,15 +32,10 @@ function View(props) {
});
const [info, setInfo] = useState({});
const [safetyMeasures, setSafetyMeasures] = useState([]);
const [otherSafetyMeasures, setOtherSafetyMeasures] = useState([]);
const getData = async () => {
const { data: basicInfo } = await props["eightworkInfo"]({ id: query.id });
setInfo(basicInfo);
const { data: measuresLogs } = await props["eightworkMeasuresLogs"]({ workId: query.workId });
setSafetyMeasures(measuresLogs.filter(item => item.type === 1));
setOtherSafetyMeasures(measuresLogs.filter(item => item.type === 2));
};
useEffect(() => {
@ -141,124 +139,51 @@ function View(props) {
<td className="title">实际作业开始时间</td>
<td colSpan={3}>{info?.info?.workStartTime}</td>
</tr>
<tr>
<td colSpan={4} style={{ border: "none", padding: 0 }}>
<table>
<tbody>
<tr>
<td className="center title" style={{ width: 80 }}>序号</td>
<td className="center title" style={{ width: "auto" }}>安全措施</td>
<td className="center title" style={{ width: 100 }}>是否涉及</td>
<td className="center title" style={{ width: 100 }}>确认人</td>
</tr>
{safetyMeasures.map((item, index) => (
<tr key={index}>
<td className="center">{index + 1}</td>
<td>{item.content}</td>
<td className="center">符合</td>
<td className="center">
{item.signPath && <Image src={getFileUrl() + item.signPath} width={50} height={50} />}
</td>
</tr>
))}
<tr>
<td className="center">{safetyMeasures.length + 1}</td>
<td colSpan={3}>
{
otherSafetyMeasures.map((item, index) => (
<div key={index} style={{ display: "flex", justifyContent: "space-between" }}>
<div>
<span>其它安全措施</span>
<span>{item.content}</span>
</div>
<div>
<span>编制人</span>
<span>{item.createName}</span>
</div>
</div>
))
}
</td>
</tr>
</tbody>
</table>
</td>
</tr>
<tr>
<td className="title">安全交底人</td>
<td className="right">
<div>
{info?.info?.step_18?.signPath
&& <Image src={getFileUrl() + info?.info?.step_18?.signPath} width={50} height={50} />}
</div>
<div>{info?.info?.step_18?.signTime}</div>
<div>{info?.info?.step_18?.remarks}</div>
</td>
<td className="title">接受交底人</td>
<td className="right">
<div>
{info?.info?.step_19?.signPath
&& <Image src={getFileUrl() + info?.info?.step_19?.signPath} width={50} height={50} />}
</div>
<div>{info?.info?.step_19?.signTime}</div>
<div>{info?.info?.step_19?.remarks}</div>
</td>
</tr>
<tr>
<td className="title">作业负责人意见</td>
<td className="right" colSpan={3}>
<div>
{info?.info?.step_21?.signPath
&& <Image src={getFileUrl() + info?.info?.step_21?.signPath} width={50} height={50} />}
</div>
<div>{info?.info?.step_21?.signTime}</div>
<div>{info?.info?.step_21?.remarks}</div>
</td>
</tr>
<tr>
<td className="title">所在单位意见</td>
<td className="right" colSpan={3}>
<div>
{info?.info?.step_22?.signPath
&& <Image src={getFileUrl() + info?.info?.step_22?.signPath} width={50} height={50} />}
</div>
<div>{info?.info?.step_22?.signTime}</div>
<div>{info?.info?.step_22?.remarks}</div>
</td>
</tr>
<tr>
<td className="title">审核部门意见</td>
<td className="right" colSpan={3}>
<div>
{info?.info?.step_23?.signPath
&& <Image src={getFileUrl() + info?.info?.step_23?.signPath} width={50} height={50} />}
</div>
<div>{info?.info?.step_23?.signTime}</div>
<div>{info?.info?.step_23?.remarks}</div>
</td>
</tr>
<tr>
<td className="title">审批部门意见</td>
<td className="right" colSpan={3}>
<div>
{info?.info?.step_24?.signPath
&& <Image src={getFileUrl() + info?.info?.step_24?.signPath} width={50} height={50} />}
</div>
<div>{info?.info?.step_24?.signTime}</div>
<div>{info?.info?.step_24?.remarks}</div>
</td>
</tr>
<tr>
<td className="title">完工验收</td>
<td className="right" colSpan={3}>
<div>
{info?.info?.step_25?.signPath
&& <Image src={getFileUrl() + info?.info?.step_25?.signPath} width={50} height={50} />}
</div>
<div>{info?.info?.step_25?.signTime}</div>
<div>{info?.info?.step_25?.remarks}</div>
</td>
</tr>
<SafetyMeasures colSpan={4} />
<DisclaimerSign
colSpan={2}
safetyRemarks={info?.info?.step_18?.remarks}
safetySignPath={info?.info?.step_18?.signPath}
safetySignTime={info?.info?.step_18?.signTime}
AcceptRemarks={info?.info?.step_19?.remarks}
AcceptSignPath={info?.info?.step_19?.signPath}
AcceptSignTime={info?.info?.step_19?.signTime}
/>
<OpinionSign
title="作业负责人意见"
colSpan={4}
remarks={info?.info?.step_21?.remarks}
signPath={info?.info?.step_21?.signPath}
signTime={info?.info?.step_21?.signTime}
/>
<OpinionSign
title="所在单位意见"
colSpan={4}
remarks={info?.info?.step_22?.remarks}
signPath={info?.info?.step_22?.signPath}
signTime={info?.info?.step_22?.signTime}
/>
<OpinionSign
title="审核部门意见"
colSpan={4}
remarks={info?.info?.step_23?.remarks}
signPath={info?.info?.step_23?.signPath}
signTime={info?.info?.step_23?.signTime}
/>
<OpinionSign
title="审批部门意见"
colSpan={4}
remarks={info?.info?.step_24?.remarks}
signPath={info?.info?.step_24?.signPath}
signTime={info?.info?.step_24?.signTime}
/>
<OpinionSign
title="完工验收"
colSpan={4}
remarks={info?.info?.step_25?.remarks}
signPath={info?.info?.step_25?.signPath}
signTime={info?.info?.step_25?.signTime}
/>
</tbody>
</table>
</div>

View File

@ -6,6 +6,9 @@ import { useReactToPrint } from "react-to-print";
import Page from "zy-react-library/components/Page";
import useGetUrlQuery from "zy-react-library/hooks/useGetUrlQuery";
import { getFileUrl } from "zy-react-library/utils";
import DisclaimerSign from "~/components/DisclaimerSign";
import OpinionSign from "~/components/OpinionSign";
import SafetyMeasures from "~/components/SafetyMeasures";
import { NS_EIGHTWORK } from "~/enumerate/namespace";
import "~/css/index.less";
@ -29,15 +32,10 @@ function View(props) {
});
const [info, setInfo] = useState({});
const [safetyMeasures, setSafetyMeasures] = useState([]);
const [otherSafetyMeasures, setOtherSafetyMeasures] = useState([]);
const getData = async () => {
const { data: basicInfo } = await props["eightworkInfo"]({ id: query.id });
setInfo(basicInfo);
const { data: measuresLogs } = await props["eightworkMeasuresLogs"]({ workId: query.workId });
setSafetyMeasures(measuresLogs.filter(item => item.type === 1));
setOtherSafetyMeasures(measuresLogs.filter(item => item.type === 2));
};
useEffect(() => {
@ -141,124 +139,51 @@ function View(props) {
<td className="title">实际作业开始时间</td>
<td colSpan={3}>{info?.info?.workStartTime}</td>
</tr>
<tr>
<td colSpan={4} style={{ border: "none", padding: 0 }}>
<table>
<tbody>
<tr>
<td className="center title" style={{ width: 80 }}>序号</td>
<td className="center title" style={{ width: "auto" }}>安全措施</td>
<td className="center title" style={{ width: 100 }}>是否涉及</td>
<td className="center title" style={{ width: 100 }}>确认人</td>
</tr>
{safetyMeasures.map((item, index) => (
<tr key={index}>
<td className="center">{index + 1}</td>
<td>{item.content}</td>
<td className="center">符合</td>
<td className="center">
{item.signPath && <Image src={getFileUrl() + item.signPath} width={50} height={50} />}
</td>
</tr>
))}
<tr>
<td className="center">{safetyMeasures.length + 1}</td>
<td colSpan={3}>
{
otherSafetyMeasures.map((item, index) => (
<div key={index} style={{ display: "flex", justifyContent: "space-between" }}>
<div>
<span>其它安全措施</span>
<span>{item.content}</span>
</div>
<div>
<span>编制人</span>
<span>{item.createName}</span>
</div>
</div>
))
}
</td>
</tr>
</tbody>
</table>
</td>
</tr>
<tr>
<td className="title">安全交底人</td>
<td className="right">
<div>
{info?.info?.step_18?.signPath
&& <Image src={getFileUrl() + info?.info?.step_18?.signPath} width={50} height={50} />}
</div>
<div>{info?.info?.step_18?.signTime}</div>
<div>{info?.info?.step_18?.remarks}</div>
</td>
<td className="title">接受交底人</td>
<td className="right">
<div>
{info?.info?.step_19?.signPath
&& <Image src={getFileUrl() + info?.info?.step_19?.signPath} width={50} height={50} />}
</div>
<div>{info?.info?.step_19?.signTime}</div>
<div>{info?.info?.step_19?.remarks}</div>
</td>
</tr>
<tr>
<td className="title">作业负责人意见</td>
<td className="right" colSpan={3}>
<div>
{info?.info?.step_21?.signPath
&& <Image src={getFileUrl() + info?.info?.step_21?.signPath} width={50} height={50} />}
</div>
<div>{info?.info?.step_21?.signTime}</div>
<div>{info?.info?.step_21?.remarks}</div>
</td>
</tr>
<tr>
<td className="title">所在单位意见</td>
<td className="right" colSpan={3}>
<div>
{info?.info?.step_22?.signPath
&& <Image src={getFileUrl() + info?.info?.step_22?.signPath} width={50} height={50} />}
</div>
<div>{info?.info?.step_22?.signTime}</div>
<div>{info?.info?.step_22?.remarks}</div>
</td>
</tr>
<tr>
<td className="title">审核部门意见</td>
<td className="right" colSpan={3}>
<div>
{info?.info?.step_23?.signPath
&& <Image src={getFileUrl() + info?.info?.step_23?.signPath} width={50} height={50} />}
</div>
<div>{info?.info?.step_23?.signTime}</div>
<div>{info?.info?.step_23?.remarks}</div>
</td>
</tr>
<tr>
<td className="title">审批部门意见</td>
<td className="right" colSpan={3}>
<div>
{info?.info?.step_24?.signPath
&& <Image src={getFileUrl() + info?.info?.step_24?.signPath} width={50} height={50} />}
</div>
<div>{info?.info?.step_24?.signTime}</div>
<div>{info?.info?.step_24?.remarks}</div>
</td>
</tr>
<tr>
<td className="title">完工验收</td>
<td className="right" colSpan={3}>
<div>
{info?.info?.step_25?.signPath
&& <Image src={getFileUrl() + info?.info?.step_25?.signPath} width={50} height={50} />}
</div>
<div>{info?.info?.step_25?.signTime}</div>
<div>{info?.info?.step_25?.remarks}</div>
</td>
</tr>
<SafetyMeasures colSpan={4} />
<DisclaimerSign
colSpan={2}
safetyRemarks={info?.info?.step_18?.remarks}
safetySignPath={info?.info?.step_18?.signPath}
safetySignTime={info?.info?.step_18?.signTime}
AcceptRemarks={info?.info?.step_19?.remarks}
AcceptSignPath={info?.info?.step_19?.signPath}
AcceptSignTime={info?.info?.step_19?.signTime}
/>
<OpinionSign
title="作业负责人意见"
colSpan={4}
remarks={info?.info?.step_21?.remarks}
signPath={info?.info?.step_21?.signPath}
signTime={info?.info?.step_21?.signTime}
/>
<OpinionSign
title="所在单位意见"
colSpan={4}
remarks={info?.info?.step_22?.remarks}
signPath={info?.info?.step_22?.signPath}
signTime={info?.info?.step_22?.signTime}
/>
<OpinionSign
title="审核部门意见"
colSpan={4}
remarks={info?.info?.step_23?.remarks}
signPath={info?.info?.step_23?.signPath}
signTime={info?.info?.step_23?.signTime}
/>
<OpinionSign
title="审批部门意见"
colSpan={4}
remarks={info?.info?.step_24?.remarks}
signPath={info?.info?.step_24?.signPath}
signTime={info?.info?.step_24?.signTime}
/>
<OpinionSign
title="完工验收"
colSpan={4}
remarks={info?.info?.step_25?.remarks}
signPath={info?.info?.step_25?.signPath}
signTime={info?.info?.step_25?.signTime}
/>
</tbody>
</table>
</div>

View File

@ -6,6 +6,9 @@ import { useReactToPrint } from "react-to-print";
import Page from "zy-react-library/components/Page";
import useGetUrlQuery from "zy-react-library/hooks/useGetUrlQuery";
import { getFileUrl } from "zy-react-library/utils";
import DisclaimerSign from "~/components/DisclaimerSign";
import OpinionSign from "~/components/OpinionSign";
import SafetyMeasures from "~/components/SafetyMeasures";
import { NS_EIGHTWORK } from "~/enumerate/namespace";
import "~/css/index.less";
@ -29,15 +32,10 @@ function View(props) {
});
const [info, setInfo] = useState({});
const [safetyMeasures, setSafetyMeasures] = useState([]);
const [otherSafetyMeasures, setOtherSafetyMeasures] = useState([]);
const getData = async () => {
const { data: basicInfo } = await props["eightworkInfo"]({ id: query.id });
setInfo(basicInfo);
const { data: measuresLogs } = await props["eightworkMeasuresLogs"]({ workId: query.workId });
setSafetyMeasures(measuresLogs.filter(item => item.type === 1));
setOtherSafetyMeasures(measuresLogs.filter(item => item.type === 2));
};
useEffect(() => {
@ -146,124 +144,51 @@ function View(props) {
<td className="title">实际作业开始时间</td>
<td colSpan={3}>{info?.info?.workStartTime}</td>
</tr>
<tr>
<td colSpan={4} style={{ border: "none", padding: 0 }}>
<table>
<tbody>
<tr>
<td className="center title" style={{ width: 80 }}>序号</td>
<td className="center title" style={{ width: "auto" }}>安全措施</td>
<td className="center title" style={{ width: 100 }}>是否涉及</td>
<td className="center title" style={{ width: 100 }}>确认人</td>
</tr>
{safetyMeasures.map((item, index) => (
<tr key={index}>
<td className="center">{index + 1}</td>
<td>{item.content}</td>
<td className="center">符合</td>
<td className="center">
{item.signPath && <Image src={getFileUrl() + item.signPath} width={50} height={50} />}
</td>
</tr>
))}
<tr>
<td className="center">{safetyMeasures.length + 1}</td>
<td colSpan={3}>
{
otherSafetyMeasures.map((item, index) => (
<div key={index} style={{ display: "flex", justifyContent: "space-between" }}>
<div>
<span>其它安全措施</span>
<span>{item.content}</span>
</div>
<div>
<span>编制人</span>
<span>{item.createName}</span>
</div>
</div>
))
}
</td>
</tr>
</tbody>
</table>
</td>
</tr>
<tr>
<td className="title">安全交底人</td>
<td className="right">
<div>
{info?.info?.step_18?.signPath
&& <Image src={getFileUrl() + info?.info?.step_18?.signPath} width={50} height={50} />}
</div>
<div>{info?.info?.step_18?.signTime}</div>
<div>{info?.info?.step_18?.remarks}</div>
</td>
<td className="title">接受交底人</td>
<td className="right">
<div>
{info?.info?.step_19?.signPath
&& <Image src={getFileUrl() + info?.info?.step_19?.signPath} width={50} height={50} />}
</div>
<div>{info?.info?.step_19?.signTime}</div>
<div>{info?.info?.step_19?.remarks}</div>
</td>
</tr>
<tr>
<td className="title">作业负责人意见</td>
<td className="right" colSpan={3}>
<div>
{info?.info?.step_21?.signPath
&& <Image src={getFileUrl() + info?.info?.step_21?.signPath} width={50} height={50} />}
</div>
<div>{info?.info?.step_21?.signTime}</div>
<div>{info?.info?.step_21?.remarks}</div>
</td>
</tr>
<tr>
<td className="title">所在单位意见</td>
<td className="right" colSpan={3}>
<div>
{info?.info?.step_22?.signPath
&& <Image src={getFileUrl() + info?.info?.step_22?.signPath} width={50} height={50} />}
</div>
<div>{info?.info?.step_22?.signTime}</div>
<div>{info?.info?.step_22?.remarks}</div>
</td>
</tr>
<tr>
<td className="title">审核部门意见</td>
<td className="right" colSpan={3}>
<div>
{info?.info?.step_23?.signPath
&& <Image src={getFileUrl() + info?.info?.step_23?.signPath} width={50} height={50} />}
</div>
<div>{info?.info?.step_23?.signTime}</div>
<div>{info?.info?.step_23?.remarks}</div>
</td>
</tr>
<tr>
<td className="title">审批部门意见</td>
<td className="right" colSpan={3}>
<div>
{info?.info?.step_24?.signPath
&& <Image src={getFileUrl() + info?.info?.step_24?.signPath} width={50} height={50} />}
</div>
<div>{info?.info?.step_24?.signTime}</div>
<div>{info?.info?.step_24?.remarks}</div>
</td>
</tr>
<tr>
<td className="title">完工验收</td>
<td className="right" colSpan={3}>
<div>
{info?.info?.step_25?.signPath
&& <Image src={getFileUrl() + info?.info?.step_25?.signPath} width={50} height={50} />}
</div>
<div>{info?.info?.step_25?.signTime}</div>
<div>{info?.info?.step_25?.remarks}</div>
</td>
</tr>
<SafetyMeasures colSpan={4} />
<DisclaimerSign
colSpan={2}
safetyRemarks={info?.info?.step_18?.remarks}
safetySignPath={info?.info?.step_18?.signPath}
safetySignTime={info?.info?.step_18?.signTime}
AcceptRemarks={info?.info?.step_19?.remarks}
AcceptSignPath={info?.info?.step_19?.signPath}
AcceptSignTime={info?.info?.step_19?.signTime}
/>
<OpinionSign
title="作业负责人意见"
colSpan={4}
remarks={info?.info?.step_21?.remarks}
signPath={info?.info?.step_21?.signPath}
signTime={info?.info?.step_21?.signTime}
/>
<OpinionSign
title="所在单位意见"
colSpan={4}
remarks={info?.info?.step_22?.remarks}
signPath={info?.info?.step_22?.signPath}
signTime={info?.info?.step_22?.signTime}
/>
<OpinionSign
title="审核部门意见"
colSpan={4}
remarks={info?.info?.step_23?.remarks}
signPath={info?.info?.step_23?.signPath}
signTime={info?.info?.step_23?.signTime}
/>
<OpinionSign
title="审批部门意见"
colSpan={4}
remarks={info?.info?.step_24?.remarks}
signPath={info?.info?.step_24?.signPath}
signTime={info?.info?.step_24?.signTime}
/>
<OpinionSign
title="完工验收"
colSpan={4}
remarks={info?.info?.step_25?.remarks}
signPath={info?.info?.step_25?.signPath}
signTime={info?.info?.step_25?.signTime}
/>
</tbody>
</table>
</div>

View File

@ -6,6 +6,9 @@ import { useReactToPrint } from "react-to-print";
import Page from "zy-react-library/components/Page";
import useGetUrlQuery from "zy-react-library/hooks/useGetUrlQuery";
import { getFileUrl } from "zy-react-library/utils";
import DisclaimerSign from "~/components/DisclaimerSign";
import OpinionSign from "~/components/OpinionSign";
import SafetyMeasures from "~/components/SafetyMeasures";
import { NS_EIGHTWORK } from "~/enumerate/namespace";
import "~/css/index.less";
@ -29,15 +32,10 @@ function View(props) {
});
const [info, setInfo] = useState({});
const [safetyMeasures, setSafetyMeasures] = useState([]);
const [otherSafetyMeasures, setOtherSafetyMeasures] = useState([]);
const getData = async () => {
const { data: basicInfo } = await props["eightworkInfo"]({ id: query.id });
setInfo(basicInfo);
const { data: measuresLogs } = await props["eightworkMeasuresLogs"]({ workId: query.workId });
setSafetyMeasures(measuresLogs.filter(item => item.type === 1));
setOtherSafetyMeasures(measuresLogs.filter(item => item.type === 2));
};
useEffect(() => {
@ -138,124 +136,51 @@ function View(props) {
<td className="title">作业实施时间</td>
<td colSpan={3}>{`${info?.info?.workStartTime}${info?.info?.workEndTime}`}</td>
</tr>
<tr>
<td colSpan={4} style={{ border: "none", padding: 0 }}>
<table>
<tbody>
<tr>
<td className="center title" style={{ width: 80 }}>序号</td>
<td className="center title" style={{ width: "auto" }}>安全措施</td>
<td className="center title" style={{ width: 100 }}>是否涉及</td>
<td className="center title" style={{ width: 100 }}>确认人</td>
</tr>
{safetyMeasures.map((item, index) => (
<tr key={index}>
<td className="center">{index + 1}</td>
<td>{item.content}</td>
<td className="center">符合</td>
<td className="center">
{item.signPath && <Image src={getFileUrl() + item.signPath} width={50} height={50} />}
</td>
</tr>
))}
<tr>
<td className="center">{safetyMeasures.length + 1}</td>
<td colSpan={3}>
{
otherSafetyMeasures.map((item, index) => (
<div key={index} style={{ display: "flex", justifyContent: "space-between" }}>
<div>
<span>其它安全措施</span>
<span>{item.content}</span>
</div>
<div>
<span>编制人</span>
<span>{item.createName}</span>
</div>
</div>
))
}
</td>
</tr>
</tbody>
</table>
</td>
</tr>
<tr>
<td className="title">安全交底人</td>
<td className="right">
<div>
{info?.info?.step_18?.signPath
&& <Image src={getFileUrl() + info?.info?.step_18?.signPath} width={50} height={50} />}
</div>
<div>{info?.info?.step_18?.signTime}</div>
<div>{info?.info?.step_18?.remarks}</div>
</td>
<td className="title">接受交底人</td>
<td className="right">
<div>
{info?.info?.step_19?.signPath
&& <Image src={getFileUrl() + info?.info?.step_19?.signPath} width={50} height={50} />}
</div>
<div>{info?.info?.step_19?.signTime}</div>
<div>{info?.info?.step_19?.remarks}</div>
</td>
</tr>
<tr>
<td className="title">作业负责人意见</td>
<td className="right" colSpan={3}>
<div>
{info?.info?.step_21?.signPath
&& <Image src={getFileUrl() + info?.info?.step_21?.signPath} width={50} height={50} />}
</div>
<div>{info?.info?.step_21?.signTime}</div>
<div>{info?.info?.step_21?.remarks}</div>
</td>
</tr>
<tr>
<td className="title">所在单位意见</td>
<td className="right" colSpan={3}>
<div>
{info?.info?.step_22?.signPath
&& <Image src={getFileUrl() + info?.info?.step_22?.signPath} width={50} height={50} />}
</div>
<div>{info?.info?.step_22?.signTime}</div>
<div>{info?.info?.step_22?.remarks}</div>
</td>
</tr>
<tr>
<td className="title">审核部门意见</td>
<td className="right" colSpan={3}>
<div>
{info?.info?.step_23?.signPath
&& <Image src={getFileUrl() + info?.info?.step_23?.signPath} width={50} height={50} />}
</div>
<div>{info?.info?.step_23?.signTime}</div>
<div>{info?.info?.step_23?.remarks}</div>
</td>
</tr>
<tr>
<td className="title">审批部门意见</td>
<td className="right" colSpan={3}>
<div>
{info?.info?.step_24?.signPath
&& <Image src={getFileUrl() + info?.info?.step_24?.signPath} width={50} height={50} />}
</div>
<div>{info?.info?.step_24?.signTime}</div>
<div>{info?.info?.step_24?.remarks}</div>
</td>
</tr>
<tr>
<td className="title">完工验收</td>
<td className="right" colSpan={3}>
<div>
{info?.info?.step_25?.signPath
&& <Image src={getFileUrl() + info?.info?.step_25?.signPath} width={50} height={50} />}
</div>
<div>{info?.info?.step_25?.signTime}</div>
<div>{info?.info?.step_25?.remarks}</div>
</td>
</tr>
<SafetyMeasures colSpan={4} />
<DisclaimerSign
colSpan={2}
safetyRemarks={info?.info?.step_18?.remarks}
safetySignPath={info?.info?.step_18?.signPath}
safetySignTime={info?.info?.step_18?.signTime}
AcceptRemarks={info?.info?.step_19?.remarks}
AcceptSignPath={info?.info?.step_19?.signPath}
AcceptSignTime={info?.info?.step_19?.signTime}
/>
<OpinionSign
title="作业负责人意见"
colSpan={4}
remarks={info?.info?.step_21?.remarks}
signPath={info?.info?.step_21?.signPath}
signTime={info?.info?.step_21?.signTime}
/>
<OpinionSign
title="所在单位意见"
colSpan={4}
remarks={info?.info?.step_22?.remarks}
signPath={info?.info?.step_22?.signPath}
signTime={info?.info?.step_22?.signTime}
/>
<OpinionSign
title="审核部门意见"
colSpan={4}
remarks={info?.info?.step_23?.remarks}
signPath={info?.info?.step_23?.signPath}
signTime={info?.info?.step_23?.signTime}
/>
<OpinionSign
title="审批部门意见"
colSpan={4}
remarks={info?.info?.step_24?.remarks}
signPath={info?.info?.step_24?.signPath}
signTime={info?.info?.step_24?.signTime}
/>
<OpinionSign
title="完工验收"
colSpan={4}
remarks={info?.info?.step_25?.remarks}
signPath={info?.info?.step_25?.signPath}
signTime={info?.info?.step_25?.signTime}
/>
</tbody>
</table>
</div>

View File

@ -6,6 +6,7 @@ import { useReactToPrint } from "react-to-print";
import Page from "zy-react-library/components/Page";
import useGetUrlQuery from "zy-react-library/hooks/useGetUrlQuery";
import { getFileUrl } from "zy-react-library/utils";
import SafetyMeasures from "~/components/SafetyMeasures";
import { NS_EIGHTWORK } from "~/enumerate/namespace";
import "~/css/index.less";
@ -29,8 +30,6 @@ function View(props) {
});
const [info, setInfo] = useState({});
const [safetyMeasures, setSafetyMeasures] = useState([]);
const [otherSafetyMeasures, setOtherSafetyMeasures] = useState([]);
const [delayedMonitoringRecord, setDelayedMonitoringRecord] = useState([]);
const [gasMonitoringRecord, setGasMonitoringRecord] = useState([]);
@ -44,9 +43,6 @@ function View(props) {
});
setDelayedMonitoringRecord(supplementaryInfo.filter(item => item.type === "delay"));
setGasMonitoringRecord(supplementaryInfo.filter(item => item.type === "gas"));
const { data: measuresLogs } = await props["eightworkMeasuresLogs"]({ workId: query.workId });
setSafetyMeasures(measuresLogs.filter(item => item.type === 1));
setOtherSafetyMeasures(measuresLogs.filter(item => item.type === 2));
};
useEffect(() => {
@ -115,75 +111,33 @@ function View(props) {
<td className="title">动火监火人</td>
<td colSpan={3}>{info?.info?.workMonitor}</td>
</tr>
{gasMonitoringRecord.length > 0 && (
<tr>
<td className="title center" colSpan={4}>可燃气体分析运行的生产装置罐区和具有火灾爆炸危险场所</td>
</tr>
)}
<tr>
<td className="title center" colSpan={4}>可燃气体分析运行的生产装置罐区和具有火灾爆炸危险场所</td>
</tr>
{
gasMonitoringRecord.map(item => (
<Fragment key={item.id}>
<tr>
<td className="title">分析时间</td>
<td>{item?.details?.analysisTime}</td>
<td className="title">分析点</td>
<td>{item?.details?.analysisPointName}</td>
</tr>
<tr>
<td className="title">可燃气体检测结果</td>
<td>{item?.details?.analysisResult}</td>
<td className="title">分析人</td>
<td>{item?.details?.analysisUserName}</td>
</tr>
</Fragment>
))
gasMonitoringRecord.length > 0
? gasMonitoringRecord.map(item => (
<Fragment key={item.id}>
<tr>
<td className="title">分析时间</td>
<td>{item?.details?.analysisTime}</td>
<td className="title">分析点</td>
<td>{item?.details?.analysisPointName}</td>
</tr>
<tr>
<td className="title">可燃气体检测结果</td>
<td>{item?.details?.analysisResult}</td>
<td className="title">分析人</td>
<td>{item?.details?.analysisUserName}</td>
</tr>
</Fragment>
))
: <tr><td colSpan={4} className="center">暂无数据</td></tr>
}
<tr>
<td className="title center" colSpan={4}>动火要求安全措施安全提示</td>
</tr>
<tr>
<td colSpan={4} style={{ border: "none", padding: 0 }}>
<table>
<tbody>
<tr>
<td className="center title" style={{ width: 80 }}>序号</td>
<td className="center title" style={{ width: "auto" }}>安全措施</td>
<td className="center title" style={{ width: 100 }}>是否涉及</td>
<td className="center title" style={{ width: 100 }}>确认人</td>
</tr>
{safetyMeasures.map((item, index) => (
<tr key={index}>
<td className="center">{index + 1}</td>
<td>{item.content}</td>
<td className="center">符合</td>
<td className="center">
{item.signPath && <Image src={getFileUrl() + item.signPath} width={50} height={50} />}
</td>
</tr>
))}
<tr>
<td className="center">{safetyMeasures.length + 1}</td>
<td colSpan={3}>
{
otherSafetyMeasures.map((item, index) => (
<div key={index} style={{ display: "flex", justifyContent: "space-between" }}>
<div>
<span>其它安全措施</span>
<span>{item.content}</span>
</div>
<div>
<span>编制人</span>
<span>{item.createName}</span>
</div>
</div>
))
}
</td>
</tr>
</tbody>
</table>
</td>
</tr>
<SafetyMeasures colSpan={4} />
<tr>
<td className="title">动火单位(部门)负责人意见</td>
<td className="right">
@ -256,16 +210,20 @@ function View(props) {
<td className="title center">时间</td>
<td className="title center">签字照片</td>
</tr>
{delayedMonitoringRecord.map((item, index) => (
<tr key={index}>
<td className="center">{item?.details?.actUserName}</td>
<td className="center">{item?.details?.delayHotTime}</td>
<td className="center">
{item?.details?.delayHotPhoto
&& <Image src={getFileUrl() + item?.details?.delayHotPhoto} width={50} height={50} />}
</td>
</tr>
))}
{
delayedMonitoringRecord.length > 0
? delayedMonitoringRecord.map((item, index) => (
<tr key={index}>
<td className="center">{item?.details?.actUserName}</td>
<td className="center">{item?.details?.delayHotTime}</td>
<td className="center">
{item?.details?.delayHotPhoto
&& <Image src={getFileUrl() + item?.details?.delayHotPhoto} width={50} height={50} />}
</td>
</tr>
))
: <tr><td colSpan={3} className="center">暂无数据</td></tr>
}
</tbody>
</table>
</td>

View File

@ -6,6 +6,9 @@ import { useReactToPrint } from "react-to-print";
import Page from "zy-react-library/components/Page";
import useGetUrlQuery from "zy-react-library/hooks/useGetUrlQuery";
import { getFileUrl } from "zy-react-library/utils";
import DisclaimerSign from "~/components/DisclaimerSign";
import OpinionSign from "~/components/OpinionSign";
import SafetyMeasures from "~/components/SafetyMeasures";
import { NS_EIGHTWORK } from "~/enumerate/namespace";
import "~/css/index.less";
@ -29,15 +32,10 @@ function View(props) {
});
const [info, setInfo] = useState({});
const [safetyMeasures, setSafetyMeasures] = useState([]);
const [otherSafetyMeasures, setOtherSafetyMeasures] = useState([]);
const getData = async () => {
const { data: basicInfo } = await props["eightworkInfo"]({ id: query.id });
setInfo(basicInfo);
const { data: measuresLogs } = await props["eightworkMeasuresLogs"]({ workId: query.workId });
setSafetyMeasures(measuresLogs.filter(item => item.type === 1));
setOtherSafetyMeasures(measuresLogs.filter(item => item.type === 2));
};
useEffect(() => {
@ -150,124 +148,51 @@ function View(props) {
<td className="title">作业实施时间</td>
<td colSpan={3}>{`${info?.info?.workStartTime}${info?.info?.workEndTime}`}</td>
</tr>
<tr>
<td colSpan={4} style={{ border: "none", padding: 0 }}>
<table>
<tbody>
<tr>
<td className="center title" style={{ width: 80 }}>序号</td>
<td className="center title" style={{ width: "auto" }}>安全措施</td>
<td className="center title" style={{ width: 100 }}>是否涉及</td>
<td className="center title" style={{ width: 100 }}>确认人</td>
</tr>
{safetyMeasures.map((item, index) => (
<tr key={index}>
<td className="center">{index + 1}</td>
<td>{item.content}</td>
<td className="center">符合</td>
<td className="center">
{item.signPath && <Image src={getFileUrl() + item.signPath} width={50} height={50} />}
</td>
</tr>
))}
<tr>
<td className="center">{safetyMeasures.length + 1}</td>
<td colSpan={3}>
{
otherSafetyMeasures.map((item, index) => (
<div key={index} style={{ display: "flex", justifyContent: "space-between" }}>
<div>
<span>其它安全措施</span>
<span>{item.content}</span>
</div>
<div>
<span>编制人</span>
<span>{item.createName}</span>
</div>
</div>
))
}
</td>
</tr>
</tbody>
</table>
</td>
</tr>
<tr>
<td className="title">安全交底人</td>
<td className="right">
<div>
{info?.info?.step_18?.signPath
&& <Image src={getFileUrl() + info?.info?.step_18?.signPath} width={50} height={50} />}
</div>
<div>{info?.info?.step_18?.signTime}</div>
<div>{info?.info?.step_18?.remarks}</div>
</td>
<td className="title">接受交底人</td>
<td className="right">
<div>
{info?.info?.step_19?.signPath
&& <Image src={getFileUrl() + info?.info?.step_19?.signPath} width={50} height={50} />}
</div>
<div>{info?.info?.step_19?.signTime}</div>
<div>{info?.info?.step_19?.remarks}</div>
</td>
</tr>
<tr>
<td className="title">作业指挥负责人意见</td>
<td className="right" colSpan={3}>
<div>
{info?.info?.step_21?.signPath
&& <Image src={getFileUrl() + info?.info?.step_21?.signPath} width={50} height={50} />}
</div>
<div>{info?.info?.step_21?.signTime}</div>
<div>{info?.info?.step_21?.remarks}</div>
</td>
</tr>
<tr>
<td className="title">所在单位意见</td>
<td className="right" colSpan={3}>
<div>
{info?.info?.step_22?.signPath
&& <Image src={getFileUrl() + info?.info?.step_22?.signPath} width={50} height={50} />}
</div>
<div>{info?.info?.step_22?.signTime}</div>
<div>{info?.info?.step_22?.remarks}</div>
</td>
</tr>
<tr>
<td className="title">审核部门意见</td>
<td className="right" colSpan={3}>
<div>
{info?.info?.step_23?.signPath
&& <Image src={getFileUrl() + info?.info?.step_23?.signPath} width={50} height={50} />}
</div>
<div>{info?.info?.step_23?.signTime}</div>
<div>{info?.info?.step_23?.remarks}</div>
</td>
</tr>
<tr>
<td className="title">审批部门意见</td>
<td className="right" colSpan={3}>
<div>
{info?.info?.step_24?.signPath
&& <Image src={getFileUrl() + info?.info?.step_24?.signPath} width={50} height={50} />}
</div>
<div>{info?.info?.step_24?.signTime}</div>
<div>{info?.info?.step_24?.remarks}</div>
</td>
</tr>
<tr>
<td className="title">完工验收</td>
<td className="right" colSpan={3}>
<div>
{info?.info?.step_25?.signPath
&& <Image src={getFileUrl() + info?.info?.step_25?.signPath} width={50} height={50} />}
</div>
<div>{info?.info?.step_25?.signTime}</div>
<div>{info?.info?.step_25?.remarks}</div>
</td>
</tr>
<SafetyMeasures colSpan={4} />
<DisclaimerSign
colSpan={2}
safetyRemarks={info?.info?.step_18?.remarks}
safetySignPath={info?.info?.step_18?.signPath}
safetySignTime={info?.info?.step_18?.signTime}
AcceptRemarks={info?.info?.step_19?.remarks}
AcceptSignPath={info?.info?.step_19?.signPath}
AcceptSignTime={info?.info?.step_19?.signTime}
/>
<OpinionSign
title="作业指挥负责人意见"
colSpan={4}
remarks={info?.info?.step_21?.remarks}
signPath={info?.info?.step_21?.signPath}
signTime={info?.info?.step_21?.signTime}
/>
<OpinionSign
title="所在单位意见"
colSpan={4}
remarks={info?.info?.step_22?.remarks}
signPath={info?.info?.step_22?.signPath}
signTime={info?.info?.step_22?.signTime}
/>
<OpinionSign
title="审核部门意见"
colSpan={4}
remarks={info?.info?.step_23?.remarks}
signPath={info?.info?.step_23?.signPath}
signTime={info?.info?.step_23?.signTime}
/>
<OpinionSign
title="审批部门意见"
colSpan={4}
remarks={info?.info?.step_24?.remarks}
signPath={info?.info?.step_24?.signPath}
signTime={info?.info?.step_24?.signTime}
/>
<OpinionSign
title="完工验收"
colSpan={4}
remarks={info?.info?.step_25?.remarks}
signPath={info?.info?.step_25?.signPath}
signTime={info?.info?.step_25?.signTime}
/>
</tbody>
</table>
</div>