受限空间
parent
779091006f
commit
a8537e42d1
|
|
@ -32,7 +32,7 @@
|
||||||
"react": "^18.2.0",
|
"react": "^18.2.0",
|
||||||
"react-dom": "^18.2.0",
|
"react-dom": "^18.2.0",
|
||||||
"react-to-print": "^3.3.0",
|
"react-to-print": "^3.3.0",
|
||||||
"zy-react-library": "1.2.6"
|
"zy-react-library": "^1.2.13"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@antfu/eslint-config": "^5.4.1",
|
"@antfu/eslint-config": "^5.4.1",
|
||||||
|
|
|
||||||
14
router.md
14
router.md
|
|
@ -5,6 +5,14 @@
|
||||||
`/eightwork/container/enterprise/hotWork/archive/list`
|
`/eightwork/container/enterprise/hotWork/archive/list`
|
||||||
- 动火作业/关闭管理
|
- 动火作业/关闭管理
|
||||||
`/eightwork/container/enterprise/hotWork/forceClose/list`
|
`/eightwork/container/enterprise/hotWork/forceClose/list`
|
||||||
|
- 有限空间作业/台账管理
|
||||||
|
`/eightwork/container/enterprise/confinedSpaceWork/ledger/list`
|
||||||
|
- 有限空间作业/作业管理
|
||||||
|
`/eightwork/container/enterprise/confinedSpaceWork/homework/list`
|
||||||
|
- 有限空间作业/归档管理
|
||||||
|
`/eightwork/container/enterprise/confinedSpaceWork/archive/list`
|
||||||
|
- 有限空间作业/关闭管理
|
||||||
|
`/eightwork/container/enterprise/confinedSpaceWork/forceClose/list`
|
||||||
|
|
||||||
|
|
||||||
### 相关方端
|
### 相关方端
|
||||||
|
|
@ -12,8 +20,14 @@
|
||||||
`/eightwork/container/stakeholder/hotWork/homework/list`
|
`/eightwork/container/stakeholder/hotWork/homework/list`
|
||||||
- 动火作业/归档管理
|
- 动火作业/归档管理
|
||||||
`/eightwork/container/stakeholder/hotWork/archive/list`
|
`/eightwork/container/stakeholder/hotWork/archive/list`
|
||||||
|
- 有限空间作业/作业管理
|
||||||
|
`/eightwork/container/stakeholder/confinedSpaceWork/homework/list`
|
||||||
|
- 有限空间作业/归档管理
|
||||||
|
`/eightwork/container/stakeholder/confinedSpaceWork/archive/list`
|
||||||
|
|
||||||
|
|
||||||
### 监管端
|
### 监管端
|
||||||
- 动火作业
|
- 动火作业
|
||||||
`/eightwork/container/supervision/hotWork/list`
|
`/eightwork/container/supervision/hotWork/list`
|
||||||
|
- 有限空间作业
|
||||||
|
`/eightwork/container/supervision/confinedSpaceWork/list`
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,22 @@
|
||||||
|
import { declareRequest } from "@cqsjjb/jjb-dva-runtime";
|
||||||
|
|
||||||
|
export const confinedSpaceWorkLedgerList = declareRequest(
|
||||||
|
"confinedSpaceWorkLedgerLoading",
|
||||||
|
`Post > @/eightwork/confinedSpace/list`,
|
||||||
|
);
|
||||||
|
export const confinedSpaceWorkLedgerAdd = declareRequest(
|
||||||
|
"confinedSpaceWorkLedgerLoading",
|
||||||
|
`Post > @/eightwork/confinedSpace/save`,
|
||||||
|
);
|
||||||
|
export const confinedSpaceWorkLedgerUpdate = declareRequest(
|
||||||
|
"confinedSpaceWorkLedgerLoading",
|
||||||
|
`Put > @/eightwork/confinedSpace/edit`,
|
||||||
|
);
|
||||||
|
export const confinedSpaceWorkLedgerInfo = declareRequest(
|
||||||
|
"confinedSpaceWorkLedgerLoading",
|
||||||
|
`Get > /eightwork/confinedSpace/{id}`,
|
||||||
|
);
|
||||||
|
export const confinedSpaceWorkLedgerDelete = declareRequest(
|
||||||
|
"confinedSpaceWorkLedgerLoading",
|
||||||
|
`Delete > @/eightwork/confinedSpace/{id}`,
|
||||||
|
);
|
||||||
|
|
@ -21,6 +21,6 @@ export const STATUS_ENUM = [
|
||||||
{ name: "归档", bianma: "999" },
|
{ name: "归档", bianma: "999" },
|
||||||
];
|
];
|
||||||
export const WORK_TYPE_ENUM = [
|
export const WORK_TYPE_ENUM = [
|
||||||
{ name: "相关方", bianma: "1" },
|
{ name: "相关方作业", bianma: "1" },
|
||||||
{ name: "内部", bianma: "2" },
|
{ name: "内部作业", bianma: "2" },
|
||||||
];
|
];
|
||||||
|
|
|
||||||
|
|
@ -6,3 +6,4 @@ import { defineNamespace } from "@cqsjjb/jjb-dva-runtime";
|
||||||
|
|
||||||
export const NS_GLOBAL = defineNamespace("global");
|
export const NS_GLOBAL = defineNamespace("global");
|
||||||
export const NS_EIGHTWORK = defineNamespace("eightwork");
|
export const NS_EIGHTWORK = defineNamespace("eightwork");
|
||||||
|
export const NS_CONFINED_SPACE_WORK_LEDGER = defineNamespace("confinedSpaceWorkLedger");
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,7 @@
|
||||||
|
import ListPage from "../../Homework/List";
|
||||||
|
|
||||||
|
function List(props) {
|
||||||
|
return (<ListPage status="999" {...props} />);
|
||||||
|
}
|
||||||
|
|
||||||
|
export default List;
|
||||||
|
|
@ -0,0 +1,7 @@
|
||||||
|
import ViewPage from "../../Homework/View";
|
||||||
|
|
||||||
|
function View(props) {
|
||||||
|
return (<ViewPage {...props} />);
|
||||||
|
}
|
||||||
|
|
||||||
|
export default View;
|
||||||
|
|
@ -0,0 +1,5 @@
|
||||||
|
function Archive(props) {
|
||||||
|
return props.children;
|
||||||
|
}
|
||||||
|
|
||||||
|
export default Archive;
|
||||||
|
|
@ -0,0 +1,7 @@
|
||||||
|
import ListPage from "../../Homework/List";
|
||||||
|
|
||||||
|
function List(props) {
|
||||||
|
return (<ListPage status="998" {...props} />);
|
||||||
|
}
|
||||||
|
|
||||||
|
export default List;
|
||||||
|
|
@ -0,0 +1,7 @@
|
||||||
|
import ViewPage from "../../Homework/View";
|
||||||
|
|
||||||
|
function View(props) {
|
||||||
|
return (<ViewPage {...props} />);
|
||||||
|
}
|
||||||
|
|
||||||
|
export default View;
|
||||||
|
|
@ -0,0 +1,5 @@
|
||||||
|
function ForceClose(props) {
|
||||||
|
return props.children;
|
||||||
|
}
|
||||||
|
|
||||||
|
export default ForceClose;
|
||||||
|
|
@ -0,0 +1,161 @@
|
||||||
|
import { Connect } from "@cqsjjb/jjb-dva-runtime";
|
||||||
|
import { Button, Space } from "antd";
|
||||||
|
import { useState } from "react";
|
||||||
|
import Page from "zy-react-library/components/Page";
|
||||||
|
import Search from "zy-react-library/components/Search";
|
||||||
|
import DepartmentSelectTree from "zy-react-library/components/SelectTree/Department/Gwj";
|
||||||
|
import Table from "zy-react-library/components/Table";
|
||||||
|
import { FORM_ITEM_RENDER_ENUM } from "zy-react-library/enum/formItemRender";
|
||||||
|
import useGetUrlQuery from "zy-react-library/hooks/useGetUrlQuery";
|
||||||
|
import useTable from "zy-react-library/hooks/useTable";
|
||||||
|
import { getLabelName } from "zy-react-library/utils";
|
||||||
|
import FlowModal from "~/components/FlowModal";
|
||||||
|
import ForceTerminationModal from "~/components/ForceTerminationModal";
|
||||||
|
import { STATUS_ENUM, WORK_TYPE_ENUM } from "~/enumerate/constant";
|
||||||
|
import { NS_EIGHTWORK } from "~/enumerate/namespace";
|
||||||
|
import "@xyflow/react/dist/style.css";
|
||||||
|
|
||||||
|
function List(props) {
|
||||||
|
// status 默认不传是作业管理,999 是归档管理,998 是强制关闭管理
|
||||||
|
// entrance 默认不传是企业端,stakeholder 是相关方端,supervision 是监督端
|
||||||
|
|
||||||
|
const [form] = Search.useForm();
|
||||||
|
const query = useGetUrlQuery();
|
||||||
|
|
||||||
|
const [forceTerminationModalOpen, setForceTerminationModalOpen] = useState(false);
|
||||||
|
const [flowModalOpen, setFlowModalOpen] = useState(false);
|
||||||
|
const [currentId, setCurrentId] = useState("");
|
||||||
|
|
||||||
|
const { tableProps, getData } = useTable(props["eightworkList"], {
|
||||||
|
form,
|
||||||
|
params: { eqWorkType: "confinedspace_work", corpinfoId: query.corpinfoId },
|
||||||
|
transform: formData => ({
|
||||||
|
geCreateTime: formData.createTime?.[0],
|
||||||
|
leCreateTime: formData.createTime?.[1],
|
||||||
|
eqStatus: props.status || formData.eqStatus,
|
||||||
|
}),
|
||||||
|
});
|
||||||
|
|
||||||
|
return (
|
||||||
|
<Page isShowAllAction={false}>
|
||||||
|
<Search
|
||||||
|
options={[
|
||||||
|
{ name: "eqCheckNo", label: "编号" },
|
||||||
|
{ name: "likeCreateName", label: "申请人" },
|
||||||
|
{ name: "createTime", label: "申请时间", render: FORM_ITEM_RENDER_ENUM.DATE_RANGE },
|
||||||
|
{
|
||||||
|
name: "eqStatus",
|
||||||
|
label: "审核状态",
|
||||||
|
render: FORM_ITEM_RENDER_ENUM.SELECT,
|
||||||
|
items: STATUS_ENUM,
|
||||||
|
hidden: props.status,
|
||||||
|
},
|
||||||
|
{ name: "eqXgfFlag", label: "作业类型", render: FORM_ITEM_RENDER_ENUM.SELECT, items: WORK_TYPE_ENUM },
|
||||||
|
{ name: "todo", label: "有限空间名称" },
|
||||||
|
{ name: "inDepartmentId", label: "申请单位", render: <DepartmentSelectTree multiple /> },
|
||||||
|
{
|
||||||
|
name: "todo",
|
||||||
|
label: "服务单位",
|
||||||
|
render: <DepartmentSelectTree searchType="inType" params={{ enterpriseType: [1, 2] }} />,
|
||||||
|
hidden: !(props.entrance === "stakeholder"),
|
||||||
|
},
|
||||||
|
]}
|
||||||
|
form={form}
|
||||||
|
onFinish={getData}
|
||||||
|
/>
|
||||||
|
<Table
|
||||||
|
columns={[
|
||||||
|
{ title: "服务单位", dataIndex: "todo", hidden: !(props.entrance === "stakeholder") },
|
||||||
|
{ title: "编号", dataIndex: "checkNo" },
|
||||||
|
{
|
||||||
|
title: "作业类型",
|
||||||
|
dataIndex: "xgfFlag",
|
||||||
|
render: (_, record) => getLabelName({ list: WORK_TYPE_ENUM, status: record.xgfFlag }),
|
||||||
|
},
|
||||||
|
{ title: "申请人", dataIndex: ["info", "applyUser"] },
|
||||||
|
{ title: "申请单位", dataIndex: ["info", "applyUnit"] },
|
||||||
|
{ title: "申请时间", dataIndex: ["info", "applyTime"] },
|
||||||
|
// { title: "作业人", dataIndex: ["info", "step_1", "actUserName"] },
|
||||||
|
// { title: "作业单位", dataIndex: ["info", "step_1", "actUserDepartmentName"] },
|
||||||
|
{
|
||||||
|
title: "作业时间",
|
||||||
|
dataIndex: ["info", "workStartTime"],
|
||||||
|
render: (_, record) => `${record.info.workStartTime || ""}-${record.info.workEndTime || ""}`,
|
||||||
|
},
|
||||||
|
{ title: "作业内容", dataIndex: ["info", "workContent"] },
|
||||||
|
{ title: "有限空间名称", dataIndex: ["info", "limitedSpaceNameAndCode"] },
|
||||||
|
{
|
||||||
|
title: "审核状态",
|
||||||
|
dataIndex: "status",
|
||||||
|
render: (_, record) => getLabelName({ list: STATUS_ENUM, status: record.status }),
|
||||||
|
},
|
||||||
|
{ title: "强制关闭原因", dataIndex: "todo", hidden: !(props.status === 998) },
|
||||||
|
{
|
||||||
|
title: "操作",
|
||||||
|
fixed: "right",
|
||||||
|
width: 250,
|
||||||
|
render: (_, record) => (
|
||||||
|
<Space>
|
||||||
|
<Button
|
||||||
|
type="link"
|
||||||
|
onClick={() => {
|
||||||
|
setCurrentId(record.workId);
|
||||||
|
setFlowModalOpen(true);
|
||||||
|
}}
|
||||||
|
>
|
||||||
|
流程图
|
||||||
|
</Button>
|
||||||
|
<Button
|
||||||
|
type="link"
|
||||||
|
onClick={() => {
|
||||||
|
props.history.push(`./view?id=${record.id}&workId=${record.workId}`);
|
||||||
|
}}
|
||||||
|
>
|
||||||
|
审批表详情
|
||||||
|
</Button>
|
||||||
|
{(!props.status && !props.entrance && ![998, 999].includes(record.status)) && (
|
||||||
|
<Button
|
||||||
|
type="link"
|
||||||
|
danger
|
||||||
|
onClick={() => {
|
||||||
|
setCurrentId(record.id);
|
||||||
|
setForceTerminationModalOpen(true);
|
||||||
|
}}
|
||||||
|
>
|
||||||
|
强制结束
|
||||||
|
</Button>
|
||||||
|
)}
|
||||||
|
</Space>
|
||||||
|
),
|
||||||
|
},
|
||||||
|
]}
|
||||||
|
{...tableProps}
|
||||||
|
/>
|
||||||
|
{
|
||||||
|
forceTerminationModalOpen && (
|
||||||
|
<ForceTerminationModal
|
||||||
|
id={currentId}
|
||||||
|
onCancel={() => {
|
||||||
|
setForceTerminationModalOpen(false);
|
||||||
|
setCurrentId("");
|
||||||
|
}}
|
||||||
|
getData={getData}
|
||||||
|
/>
|
||||||
|
)
|
||||||
|
}
|
||||||
|
{
|
||||||
|
flowModalOpen && (
|
||||||
|
<FlowModal
|
||||||
|
id={currentId}
|
||||||
|
onCancel={() => {
|
||||||
|
setFlowModalOpen(false);
|
||||||
|
setCurrentId("");
|
||||||
|
}}
|
||||||
|
/>
|
||||||
|
)
|
||||||
|
}
|
||||||
|
</Page>
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
export default Connect([NS_EIGHTWORK], true)(List);
|
||||||
|
|
@ -0,0 +1,237 @@
|
||||||
|
import { Connect } from "@cqsjjb/jjb-dva-runtime";
|
||||||
|
import { Button, Divider, Image } from "antd";
|
||||||
|
import { useEffect, useRef, useState } from "react";
|
||||||
|
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 { NS_EIGHTWORK } from "~/enumerate/namespace";
|
||||||
|
import "~/css/index.less";
|
||||||
|
|
||||||
|
function View(props) {
|
||||||
|
const query = useGetUrlQuery();
|
||||||
|
const contentRef = useRef(null);
|
||||||
|
const handlePrint = useReactToPrint({
|
||||||
|
contentRef,
|
||||||
|
pageStyle: `@page {
|
||||||
|
size: landscape;
|
||||||
|
margin: 0mm;
|
||||||
|
}
|
||||||
|
@media print {
|
||||||
|
body {
|
||||||
|
margin: 10px;
|
||||||
|
padding: 10px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
`,
|
||||||
|
documentTitle: "",
|
||||||
|
});
|
||||||
|
|
||||||
|
const [info, setInfo] = useState({});
|
||||||
|
const [safetyMeasures, setSafetyMeasures] = useState([]);
|
||||||
|
const [otherSafetyMeasures, setOtherSafetyMeasures] = useState([]);
|
||||||
|
// const [delayedMonitoringRecord, setDelayedMonitoringRecord] = useState([]);
|
||||||
|
const [gasMonitoringRecord, setGasMonitoringRecord] = useState([]);
|
||||||
|
|
||||||
|
const getData = async () => {
|
||||||
|
const { data: basicInfo } = await props["eightworkInfo"]({ id: query.id });
|
||||||
|
setInfo(basicInfo);
|
||||||
|
const { data: supplementaryInfo } = await props["eightworkSupplementaryInfo"]({ eqWorkId: query.workId, 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));
|
||||||
|
setOtherSafetyMeasures(measuresLogs.filter(item => item.type === 2));
|
||||||
|
};
|
||||||
|
|
||||||
|
useEffect(() => {
|
||||||
|
getData();
|
||||||
|
}, []);
|
||||||
|
|
||||||
|
return (
|
||||||
|
<Page
|
||||||
|
headerTitle="审批表详情"
|
||||||
|
contentPadding="0 20px 20px 20px"
|
||||||
|
extraActionButtons={(
|
||||||
|
<Button type="primary" onClick={handlePrint}>打印</Button>
|
||||||
|
)}
|
||||||
|
>
|
||||||
|
<div className="work_ticket_details" ref={contentRef}>
|
||||||
|
<table>
|
||||||
|
<thead>
|
||||||
|
<tr>
|
||||||
|
<td colSpan={6} style={{ border: "none" }}>
|
||||||
|
<Divider orientation="left">有限空间作业许可证</Divider>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td colSpan={6} style={{ border: "none" }} className="right">
|
||||||
|
<span>编号:</span>
|
||||||
|
<span>{info.checkNo}</span>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</thead>
|
||||||
|
<tbody>
|
||||||
|
{props.entrance === "stakeholder" && (
|
||||||
|
<tr>
|
||||||
|
<td className="title">服务单位</td>
|
||||||
|
<td colSpan={5}>{info.xx}</td>
|
||||||
|
</tr>
|
||||||
|
)}
|
||||||
|
<tr>
|
||||||
|
<td className="title">申请单位</td>
|
||||||
|
<td colSpan={2}>{info?.info?.applyUnit}</td>
|
||||||
|
<td className="title">作业单位</td>
|
||||||
|
<td colSpan={2}>{info?.info?.workUserDepartmentName}</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td className="title">有限空间名称及编号</td>
|
||||||
|
<td colSpan={2}>{info?.info?.limitedSpaceNameAndCode}</td>
|
||||||
|
<td className="title">作业内容</td>
|
||||||
|
<td colSpan={2}>{info?.info?.workContent}</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td className="title">主要介质</td>
|
||||||
|
<td colSpan={2}>{info?.info?.chooseLimitedSpace?.mediumInfo}</td>
|
||||||
|
<td className="title" rowSpan={2}>应急装备</td>
|
||||||
|
<td rowSpan={2} colSpan={2}>{info?.info?.emergencyEquipment}</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td className="title">主要危险因素</td>
|
||||||
|
<td colSpan={2}>{info?.info?.chooseLimitedSpace?.hazards}</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td className="title">隔绝安全措施</td>
|
||||||
|
<td colSpan={5}>{info?.info?.isNeedWork === 1 ? "是" : "否"}</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td colSpan={6}>
|
||||||
|
<div style={{ display: "flex", justifyContent: "space-between", alignItems: "center", padding: "0 50px" }}>
|
||||||
|
<div>
|
||||||
|
<span style={{ padding: "0 10px" }}>作业负责人:</span>
|
||||||
|
<span>{info?.info?.workChargeUserName}</span>
|
||||||
|
</div>
|
||||||
|
<div>
|
||||||
|
<span style={{ padding: "0 10px" }}>监护人:</span>
|
||||||
|
<span>{info?.info?.workGuardianUserName}</span>
|
||||||
|
</div>
|
||||||
|
<div>
|
||||||
|
<span style={{ padding: "0 10px" }}>作业人:</span>
|
||||||
|
<span>{info?.info?.workUserName}</span>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
{/* <tr> */}
|
||||||
|
{/* <td className="title">预计作业时间</td> */}
|
||||||
|
{/* <td colSpan={5}>{info?.info?.xx}</td> */}
|
||||||
|
{/* </tr> */}
|
||||||
|
<tr>
|
||||||
|
<td colSpan={6} 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>
|
||||||
|
))}
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td colSpan={6} 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>
|
||||||
|
</tr>
|
||||||
|
{otherSafetyMeasures.map((item, index) => (
|
||||||
|
<tr key={index}>
|
||||||
|
<td className="center">{index + 1}</td>
|
||||||
|
<td>{item.content}</td>
|
||||||
|
<td className="center">
|
||||||
|
{item.signPath ? <Image src={getFileUrl() + item.signPath} width={50} height={50} /> : item.createName}
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
))}
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
{gasMonitoringRecord.length > 0 && (
|
||||||
|
<tr>
|
||||||
|
<td colSpan={6} style={{ border: "none", padding: 0 }}>
|
||||||
|
<table>
|
||||||
|
<tbody>
|
||||||
|
<tr>
|
||||||
|
<td className="center title">作业前分析项目</td>
|
||||||
|
<td className="center title">有毒有害物质含量</td>
|
||||||
|
<td className="center title">可燃气含量</td>
|
||||||
|
<td className="center title">氧气量</td>
|
||||||
|
<td className="center title">取样时间</td>
|
||||||
|
<td className="center title">取样位置</td>
|
||||||
|
<td className="center title">取样人</td>
|
||||||
|
</tr>
|
||||||
|
{gasMonitoringRecord.map((item, index) => (
|
||||||
|
<tr key={index}>
|
||||||
|
{index === 0 && <td className="center title" rowSpan={gasMonitoringRecord.length}>作业前数据</td>}
|
||||||
|
<td className="center">{item?.details?.toxicSubstanceContent}</td>
|
||||||
|
<td className="center">{item?.details?.combustibleGasContent}</td>
|
||||||
|
<td className="center">{item?.details?.oxygeAmount}</td>
|
||||||
|
<td className="center">{item?.details?.samplingTime}</td>
|
||||||
|
<td className="center">{item?.details?.samplingLocation}</td>
|
||||||
|
<td className="center">
|
||||||
|
{item?.details?.signImagePath && <Image src={getFileUrl() + item?.details?.signImagePath} width={50} height={50} />}
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
))}
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
)}
|
||||||
|
<tr>
|
||||||
|
<td className="title">作业单位负责人意见</td>
|
||||||
|
<td className="right" style={{ width: 200 }}>
|
||||||
|
<div>
|
||||||
|
{info?.info?.step_14?.signPath && <Image src={getFileUrl() + info?.info?.step_14?.signPath} width={50} height={50} />}
|
||||||
|
</div>
|
||||||
|
<div>{info?.info?.step_14?.signTime}</div>
|
||||||
|
</td>
|
||||||
|
<td className="title">管理单位发包部门意见</td>
|
||||||
|
<td className="right" style={{ width: 200 }}>
|
||||||
|
<div>
|
||||||
|
{info?.info?.step_15?.signPath && <Image src={getFileUrl() + info?.info?.step_15?.signPath} width={50} height={50} />}
|
||||||
|
</div>
|
||||||
|
<div>{info?.info?.step_15?.signTime}</div>
|
||||||
|
</td>
|
||||||
|
<td className="title">管理单位安监部门意见</td>
|
||||||
|
<td className="right" style={{ width: 200 }}>
|
||||||
|
<div>
|
||||||
|
{info?.info?.step_16?.signPath && <Image src={getFileUrl() + info?.info?.step_16?.signPath} width={50} height={50} />}
|
||||||
|
</div>
|
||||||
|
<div>{info?.info?.step_16?.signTime}</div>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
</div>
|
||||||
|
</Page>
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
export default Connect([NS_EIGHTWORK], true)(View);
|
||||||
|
|
@ -0,0 +1,5 @@
|
||||||
|
function Homework(props) {
|
||||||
|
return props.children;
|
||||||
|
}
|
||||||
|
|
||||||
|
export default Homework;
|
||||||
|
|
@ -0,0 +1,320 @@
|
||||||
|
import { Connect } from "@cqsjjb/jjb-dva-runtime";
|
||||||
|
import { Button, Descriptions, message, Modal, Space } from "antd";
|
||||||
|
import { useEffect, useRef, useState } from "react";
|
||||||
|
import FormBuilder from "zy-react-library/components/FormBuilder";
|
||||||
|
import AddIcon from "zy-react-library/components/Icon/AddIcon";
|
||||||
|
import Page from "zy-react-library/components/Page";
|
||||||
|
import PreviewPdf from "zy-react-library/components/PreviewPdf";
|
||||||
|
import Search from "zy-react-library/components/Search";
|
||||||
|
import DictionarySelect from "zy-react-library/components/Select/Dictionary";
|
||||||
|
import Table from "zy-react-library/components/Table";
|
||||||
|
import Upload from "zy-react-library/components/Upload";
|
||||||
|
import { FORM_ITEM_RENDER_ENUM } from "zy-react-library/enum/formItemRender";
|
||||||
|
import { UPLOAD_FILE_TYPE_ENUM } from "zy-react-library/enum/uploadFile/gwj";
|
||||||
|
import useDeleteFile from "zy-react-library/hooks/useDeleteFile";
|
||||||
|
import useDownloadFile from "zy-react-library/hooks/useDownloadFile";
|
||||||
|
import useTable from "zy-react-library/hooks/useTable";
|
||||||
|
import useUploadFile from "zy-react-library/hooks/useUploadFile";
|
||||||
|
import { addingPrefixToFile, getFileName, getFileSuffix } from "zy-react-library/utils";
|
||||||
|
import { NS_CONFINED_SPACE_WORK_LEDGER } from "~/enumerate/namespace";
|
||||||
|
|
||||||
|
function List(props) {
|
||||||
|
const [currentId, setCurrentId] = useState("");
|
||||||
|
const [viewModalVisible, setViewModalVisible] = useState(false);
|
||||||
|
const [addModalVisible, setAddModalVisible] = useState(false);
|
||||||
|
|
||||||
|
const [form] = Search.useForm();
|
||||||
|
|
||||||
|
const { tableProps, getData } = useTable(props["confinedSpaceWorkLedgerList"], {
|
||||||
|
form,
|
||||||
|
});
|
||||||
|
|
||||||
|
const onDelete = (id) => {
|
||||||
|
Modal.confirm({
|
||||||
|
title: "删除确认",
|
||||||
|
content: "确定要删除吗?",
|
||||||
|
onOk: async () => {
|
||||||
|
const { success } = await props["confinedSpaceWorkLedgerDelete"]({ id });
|
||||||
|
if (success) {
|
||||||
|
message.success("删除成功");
|
||||||
|
getData();
|
||||||
|
}
|
||||||
|
},
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
||||||
|
return (
|
||||||
|
<Page isShowAllAction={false}>
|
||||||
|
<Search
|
||||||
|
options={[
|
||||||
|
{ name: "likeName", label: "有限空间名称" },
|
||||||
|
{ name: "likeCode", label: "有限空间编号" },
|
||||||
|
{ name: "eqType", label: "类型", render: (<DictionarySelect dictValue="finiteSpaceType" />) },
|
||||||
|
{ name: "eqRiskLevel", label: "风险等级", render: (<DictionarySelect dictValue="riskGrade" />) },
|
||||||
|
]}
|
||||||
|
form={form}
|
||||||
|
onFinish={getData}
|
||||||
|
/>
|
||||||
|
<Table
|
||||||
|
toolBarRender={() => (
|
||||||
|
<Space>
|
||||||
|
<Button
|
||||||
|
type="primary"
|
||||||
|
icon={(<AddIcon />)}
|
||||||
|
onClick={() => {
|
||||||
|
setAddModalVisible(true);
|
||||||
|
}}
|
||||||
|
>
|
||||||
|
新增
|
||||||
|
</Button>
|
||||||
|
</Space>
|
||||||
|
)}
|
||||||
|
columns={[
|
||||||
|
{ title: "有限空间名称", dataIndex: "name" },
|
||||||
|
{ title: "有限空间编号", dataIndex: "code" },
|
||||||
|
{ title: "类型", dataIndex: "typeName" },
|
||||||
|
{ title: "位置及范围", dataIndex: "positionAndRange" },
|
||||||
|
{ title: "主要介质", dataIndex: "mediumInfo" },
|
||||||
|
{ title: "主要危险及有害因素", dataIndex: "hazards" },
|
||||||
|
{ title: "风险等级", dataIndex: "riskLevelName" },
|
||||||
|
{ title: "最大作业人数", dataIndex: "maximumNumber" },
|
||||||
|
{
|
||||||
|
title: "操作",
|
||||||
|
width: 200,
|
||||||
|
fixed: "right",
|
||||||
|
render: (_, record) => (
|
||||||
|
<Space>
|
||||||
|
<Button
|
||||||
|
type="link"
|
||||||
|
onClick={() => {
|
||||||
|
setCurrentId(record.id);
|
||||||
|
setViewModalVisible(true);
|
||||||
|
}}
|
||||||
|
>
|
||||||
|
查看
|
||||||
|
</Button>
|
||||||
|
<Button
|
||||||
|
type="link"
|
||||||
|
onClick={() => {
|
||||||
|
setAddModalVisible(true);
|
||||||
|
setCurrentId(record.id);
|
||||||
|
}}
|
||||||
|
>
|
||||||
|
编辑
|
||||||
|
</Button>
|
||||||
|
<Button
|
||||||
|
type="link"
|
||||||
|
danger
|
||||||
|
onClick={() => {
|
||||||
|
onDelete(record.id);
|
||||||
|
}}
|
||||||
|
>
|
||||||
|
删除
|
||||||
|
</Button>
|
||||||
|
</Space>
|
||||||
|
),
|
||||||
|
},
|
||||||
|
]}
|
||||||
|
{...tableProps}
|
||||||
|
/>
|
||||||
|
{viewModalVisible && (
|
||||||
|
<ViewModal
|
||||||
|
id={currentId}
|
||||||
|
onCancel={() => {
|
||||||
|
setViewModalVisible(false);
|
||||||
|
setCurrentId("");
|
||||||
|
}}
|
||||||
|
/>
|
||||||
|
)}
|
||||||
|
{addModalVisible && (
|
||||||
|
<AddModal
|
||||||
|
id={currentId}
|
||||||
|
getData={getData}
|
||||||
|
onCancel={() => {
|
||||||
|
setAddModalVisible(false);
|
||||||
|
setCurrentId("");
|
||||||
|
}}
|
||||||
|
/>
|
||||||
|
)}
|
||||||
|
</Page>
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
const ViewModalComponent = (props) => {
|
||||||
|
const [info, setInfo] = useState({});
|
||||||
|
const { downloadFile } = useDownloadFile();
|
||||||
|
|
||||||
|
const getData = async () => {
|
||||||
|
const { data } = await props["confinedSpaceWorkLedgerInfo"]({ id: props.id });
|
||||||
|
setInfo(data);
|
||||||
|
};
|
||||||
|
|
||||||
|
useEffect(() => {
|
||||||
|
getData();
|
||||||
|
}, []);
|
||||||
|
|
||||||
|
return (
|
||||||
|
<Modal
|
||||||
|
open
|
||||||
|
title="查看"
|
||||||
|
onCancel={props.onCancel}
|
||||||
|
maskClosable={false}
|
||||||
|
width={600}
|
||||||
|
footer={[
|
||||||
|
<Button key="cancel" onClick={props.onCancel}>关闭</Button>,
|
||||||
|
]}
|
||||||
|
loading={props.confinedSpaceWorkLedger.confinedSpaceWorkLedgerLoading}
|
||||||
|
>
|
||||||
|
<Descriptions
|
||||||
|
column={1}
|
||||||
|
bordered
|
||||||
|
styles={{ label: { width: 200 } }}
|
||||||
|
items={[
|
||||||
|
{ label: "有限空间名称及编号", children: `${info.name} ${info.code}` },
|
||||||
|
{ label: "有限空间类型", children: info.typeName },
|
||||||
|
{ label: "位置及范围", children: info.positionAndRange },
|
||||||
|
{ label: "主要介质", children: info.mediumInfo },
|
||||||
|
{ label: "主要危险及有害因素", children: info.hazards },
|
||||||
|
{ label: "风险等级", children: info.riskLevelName },
|
||||||
|
{ label: "防护要求", children: info.protectionRequirements },
|
||||||
|
{ label: "隔绝安全措施", children: info.separateSafetyMeasures },
|
||||||
|
{ label: "最大作业人数", children: info.maximumNumber },
|
||||||
|
{
|
||||||
|
label: "是否有应急指导书",
|
||||||
|
children: info.isEmergencyBook === 1
|
||||||
|
? getFileSuffix(info.emergencyBookFile) === "pdf"
|
||||||
|
? <PreviewPdf name={getFileName(info.emergencyBookFile)} url={info.emergencyBookFile} />
|
||||||
|
: (
|
||||||
|
<Space>
|
||||||
|
<span>{getFileName(info.emergencyBookFile)}</span>
|
||||||
|
<Button
|
||||||
|
type="primary"
|
||||||
|
size="small"
|
||||||
|
onClick={() => downloadFile({ url: info.emergencyBookFile })}
|
||||||
|
>
|
||||||
|
下载
|
||||||
|
</Button>
|
||||||
|
</Space>
|
||||||
|
)
|
||||||
|
: "否",
|
||||||
|
},
|
||||||
|
]}
|
||||||
|
/>
|
||||||
|
</Modal>
|
||||||
|
);
|
||||||
|
};
|
||||||
|
|
||||||
|
const AddModalComponent = (props) => {
|
||||||
|
const [form] = FormBuilder.useForm();
|
||||||
|
|
||||||
|
const { loading: uploadFileLoading, uploadFile } = useUploadFile();
|
||||||
|
const { loading: deleteFileLoading, deleteFile } = useDeleteFile();
|
||||||
|
|
||||||
|
const infoRef = useRef({});
|
||||||
|
|
||||||
|
const getData = async () => {
|
||||||
|
const { data } = await props["confinedSpaceWorkLedgerInfo"]({ id: props.id });
|
||||||
|
form.setFieldsValue({
|
||||||
|
...data,
|
||||||
|
emergencyBookFile: addingPrefixToFile([{ filePath: data.emergencyBookFile }]),
|
||||||
|
});
|
||||||
|
infoRef.current = data;
|
||||||
|
};
|
||||||
|
|
||||||
|
useEffect(() => {
|
||||||
|
props.id && getData();
|
||||||
|
}, []);
|
||||||
|
|
||||||
|
const onSubmit = async (values) => {
|
||||||
|
await deleteFile({ files: values.deleteEmergencyBookFile });
|
||||||
|
const { filePath } = await uploadFile({ files: values.emergencyBookFile, params: { type: UPLOAD_FILE_TYPE_ENUM[407] } });
|
||||||
|
const { success } = await props[props.id ? "confinedSpaceWorkLedgerUpdate" : "confinedSpaceWorkLedgerAdd"]({
|
||||||
|
...infoRef.current,
|
||||||
|
...values,
|
||||||
|
emergencyBookFile: filePath,
|
||||||
|
});
|
||||||
|
if (success) {
|
||||||
|
message.success(`${props.id ? "编辑" : "新增"}成功`);
|
||||||
|
props.onCancel();
|
||||||
|
props.getData();
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
return (
|
||||||
|
<Modal
|
||||||
|
open
|
||||||
|
title={props.id ? "编辑" : "新增"}
|
||||||
|
onCancel={props.onCancel}
|
||||||
|
onOk={form.submit}
|
||||||
|
maskClosable={false}
|
||||||
|
width={800}
|
||||||
|
confirmLoading={props.confinedSpaceWorkLedger.confinedSpaceWorkLedgerLoading || uploadFileLoading || deleteFileLoading}
|
||||||
|
>
|
||||||
|
<FormBuilder
|
||||||
|
loading={props.confinedSpaceWorkLedger.confinedSpaceWorkLedgerLoading || uploadFileLoading || deleteFileLoading}
|
||||||
|
options={[
|
||||||
|
{ name: "name", label: "有限空间名称" },
|
||||||
|
{ name: "code", label: "有限空间编号" },
|
||||||
|
{
|
||||||
|
name: "type",
|
||||||
|
label: "有限空间类型",
|
||||||
|
render: (
|
||||||
|
<DictionarySelect
|
||||||
|
dictValue="finiteSpaceType"
|
||||||
|
onGetLabel={label => form.setFieldValue("typeName", label)}
|
||||||
|
/>
|
||||||
|
),
|
||||||
|
},
|
||||||
|
{ name: "typeName", label: "有限空间类型名称", onlyForLabel: true },
|
||||||
|
{ name: "positionAndRange", label: "位置及范围" },
|
||||||
|
{ name: "mediumInfo", label: "主要介质" },
|
||||||
|
{ name: "hazards", label: "主要危险及有害因素" },
|
||||||
|
{
|
||||||
|
name: "riskLevel",
|
||||||
|
label: "风险等级",
|
||||||
|
render: (
|
||||||
|
<DictionarySelect
|
||||||
|
dictValue="riskGrade"
|
||||||
|
onGetLabel={label => form.setFieldValue("riskLevelName", label)}
|
||||||
|
/>
|
||||||
|
),
|
||||||
|
},
|
||||||
|
{ name: "riskLevelName", label: "风险等级名称", onlyForLabel: true },
|
||||||
|
{ name: "protectionRequirements", label: "防护要求" },
|
||||||
|
{ name: "separateSafetyMeasures", label: "隔绝安全措施" },
|
||||||
|
{ name: "maximumNumber", label: "最大作业人数", render: FORM_ITEM_RENDER_ENUM.NUMBER },
|
||||||
|
{
|
||||||
|
name: "isEmergencyBook",
|
||||||
|
label: "是否有应急指导书",
|
||||||
|
render: FORM_ITEM_RENDER_ENUM.SELECT,
|
||||||
|
items: [{ bianma: 1, name: "是" }, { bianma: 2, name: "否" }],
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: "emergencyBookFile",
|
||||||
|
label: "应急指导书",
|
||||||
|
render: (
|
||||||
|
<Upload
|
||||||
|
maxCount={1}
|
||||||
|
fileType="document"
|
||||||
|
accept=".pdf,.doc,.docx"
|
||||||
|
onGetRemoveFile={file => form.setFieldValue("deleteEmergencyBookFile", [...(form.getFieldValue("deleteEmergencyBookFile") || []), file])}
|
||||||
|
/>
|
||||||
|
),
|
||||||
|
dependencies: ["isEmergencyBook"],
|
||||||
|
hidden: formValues => !(formValues.isEmergencyBook === 1),
|
||||||
|
},
|
||||||
|
{ name: "deleteEmergencyBookFile", label: "删除的应急指导书", onlyForLabel: true },
|
||||||
|
]}
|
||||||
|
form={form}
|
||||||
|
span={24}
|
||||||
|
labelCol={{ span: 10 }}
|
||||||
|
showActionButtons={false}
|
||||||
|
onFinish={onSubmit}
|
||||||
|
/>
|
||||||
|
</Modal>
|
||||||
|
);
|
||||||
|
};
|
||||||
|
|
||||||
|
const ViewModal = Connect([NS_CONFINED_SPACE_WORK_LEDGER], true)(ViewModalComponent);
|
||||||
|
const AddModal = Connect([NS_CONFINED_SPACE_WORK_LEDGER], true)(AddModalComponent);
|
||||||
|
export default Connect([NS_CONFINED_SPACE_WORK_LEDGER], true)(List);
|
||||||
|
|
@ -0,0 +1,5 @@
|
||||||
|
function Ledger(props) {
|
||||||
|
return props.children;
|
||||||
|
}
|
||||||
|
|
||||||
|
export default Ledger;
|
||||||
|
|
@ -0,0 +1,5 @@
|
||||||
|
function ConfinedSpaceWork(props) {
|
||||||
|
return props.children;
|
||||||
|
}
|
||||||
|
|
||||||
|
export default ConfinedSpaceWork;
|
||||||
|
|
@ -101,7 +101,7 @@ function List(props) {
|
||||||
{
|
{
|
||||||
title: "作业时间",
|
title: "作业时间",
|
||||||
dataIndex: ["info", "workStartTime"],
|
dataIndex: ["info", "workStartTime"],
|
||||||
render: (_, record) => `${record.info.workStartTime}至${record.info.workEndTime}`,
|
render: (_, record) => `${record.info.workStartTime || ""}-${record.info.workEndTime || ""}`,
|
||||||
},
|
},
|
||||||
{ title: "作业内容", dataIndex: ["info", "workContent"] },
|
{ title: "作业内容", dataIndex: ["info", "workContent"] },
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -6,7 +6,7 @@ import Page from "zy-react-library/components/Page";
|
||||||
import useGetUrlQuery from "zy-react-library/hooks/useGetUrlQuery";
|
import useGetUrlQuery from "zy-react-library/hooks/useGetUrlQuery";
|
||||||
import { getFileUrl } from "zy-react-library/utils";
|
import { getFileUrl } from "zy-react-library/utils";
|
||||||
import { NS_EIGHTWORK } from "~/enumerate/namespace";
|
import { NS_EIGHTWORK } from "~/enumerate/namespace";
|
||||||
import "./index.less";
|
import "~/css/index.less";
|
||||||
|
|
||||||
function View(props) {
|
function View(props) {
|
||||||
const query = useGetUrlQuery();
|
const query = useGetUrlQuery();
|
||||||
|
|
@ -30,17 +30,16 @@ function View(props) {
|
||||||
const [info, setInfo] = useState({});
|
const [info, setInfo] = useState({});
|
||||||
const [safetyMeasures, setSafetyMeasures] = useState([]);
|
const [safetyMeasures, setSafetyMeasures] = useState([]);
|
||||||
const [otherSafetyMeasures, setOtherSafetyMeasures] = useState([]);
|
const [otherSafetyMeasures, setOtherSafetyMeasures] = useState([]);
|
||||||
const [delayedFireMonitoringRecord, setDelayedFireMonitoringRecord] = useState([]);
|
const [delayedMonitoringRecord, setDelayedMonitoringRecord] = useState([]);
|
||||||
const [gasFireMonitoringRecord, setGasFireMonitoringRecord] = useState([]);
|
const [gasMonitoringRecord, setGasMonitoringRecord] = useState([]);
|
||||||
|
|
||||||
const getData = async () => {
|
const getData = async () => {
|
||||||
const { data: basicInfo } = await props["eightworkInfo"]({ id: query.id });
|
const { data: basicInfo } = await props["eightworkInfo"]({ id: query.id });
|
||||||
setInfo(basicInfo);
|
setInfo(basicInfo);
|
||||||
const { data: supplementaryInfo } = await props["eightworkSupplementaryInfo"]({ eqWorkId: query.workId, pageSize: 999, pageIndex: 1 });
|
const { data: supplementaryInfo } = await props["eightworkSupplementaryInfo"]({ eqWorkId: query.workId, pageSize: 999, pageIndex: 1 });
|
||||||
setDelayedFireMonitoringRecord(supplementaryInfo.filter(item => item.type === "delay"));
|
setDelayedMonitoringRecord(supplementaryInfo.filter(item => item.type === "delay"));
|
||||||
setGasFireMonitoringRecord(supplementaryInfo.filter(item => item.type === "gas"));
|
setGasMonitoringRecord(supplementaryInfo.filter(item => item.type === "gas"));
|
||||||
const { data: measuresLogs } = await props["eightworkMeasuresLogs"]({ workId: query.workId });
|
const { data: measuresLogs } = await props["eightworkMeasuresLogs"]({ workId: query.workId });
|
||||||
console.log(measuresLogs);
|
|
||||||
setSafetyMeasures(measuresLogs.filter(item => item.type === 1));
|
setSafetyMeasures(measuresLogs.filter(item => item.type === 1));
|
||||||
setOtherSafetyMeasures(measuresLogs.filter(item => item.type === 2));
|
setOtherSafetyMeasures(measuresLogs.filter(item => item.type === 2));
|
||||||
};
|
};
|
||||||
|
|
@ -111,13 +110,13 @@ function View(props) {
|
||||||
<td className="title">动火监火人</td>
|
<td className="title">动火监火人</td>
|
||||||
<td colSpan={3}>{info?.info?.workMonitor}</td>
|
<td colSpan={3}>{info?.info?.workMonitor}</td>
|
||||||
</tr>
|
</tr>
|
||||||
{gasFireMonitoringRecord.length > 0 && (
|
{gasMonitoringRecord.length > 0 && (
|
||||||
<tr>
|
<tr>
|
||||||
<td className="title center" colSpan={4}>可燃气体分析(运行的生产装置、罐区和具有火灾爆炸危险场所)</td>
|
<td className="title center" colSpan={4}>可燃气体分析(运行的生产装置、罐区和具有火灾爆炸危险场所)</td>
|
||||||
</tr>
|
</tr>
|
||||||
)}
|
)}
|
||||||
{
|
{
|
||||||
gasFireMonitoringRecord.map(item => (
|
gasMonitoringRecord.map(item => (
|
||||||
<Fragment key={item.id}>
|
<Fragment key={item.id}>
|
||||||
<tr>
|
<tr>
|
||||||
<td className="title">分析时间</td>
|
<td className="title">分析时间</td>
|
||||||
|
|
@ -142,10 +141,10 @@ function View(props) {
|
||||||
<table>
|
<table>
|
||||||
<tbody>
|
<tbody>
|
||||||
<tr>
|
<tr>
|
||||||
<td className="center" width={80}>序号</td>
|
<td className="center title" style={{ width: 80 }}>序号</td>
|
||||||
<td className="center">安全措施</td>
|
<td className="center title" style={{ width: "auto" }}>安全措施</td>
|
||||||
<td className="center" width={100}>是否涉及</td>
|
<td className="center title" style={{ width: 100 }}>是否涉及</td>
|
||||||
<td className="center" width={100}>确认人</td>
|
<td className="center title" style={{ width: 100 }}>确认人</td>
|
||||||
</tr>
|
</tr>
|
||||||
{safetyMeasures.map((item, index) => (
|
{safetyMeasures.map((item, index) => (
|
||||||
<tr key={index}>
|
<tr key={index}>
|
||||||
|
|
@ -164,7 +163,7 @@ function View(props) {
|
||||||
otherSafetyMeasures.map((item, index) => (
|
otherSafetyMeasures.map((item, index) => (
|
||||||
<div key={index} style={{ display: "flex", justifyContent: "space-between" }}>
|
<div key={index} style={{ display: "flex", justifyContent: "space-between" }}>
|
||||||
<div>
|
<div>
|
||||||
<span>其他安全措施:</span>
|
<span>其它安全措施:</span>
|
||||||
<span>{item.content}</span>
|
<span>{item.content}</span>
|
||||||
</div>
|
</div>
|
||||||
<div>
|
<div>
|
||||||
|
|
@ -240,7 +239,7 @@ function View(props) {
|
||||||
<td className="title center">时间</td>
|
<td className="title center">时间</td>
|
||||||
<td className="title center">签字照片</td>
|
<td className="title center">签字照片</td>
|
||||||
</tr>
|
</tr>
|
||||||
{delayedFireMonitoringRecord.map((item, index) => (
|
{delayedMonitoringRecord.map((item, index) => (
|
||||||
<tr key={index}>
|
<tr key={index}>
|
||||||
<td className="center">{item?.details?.actUserName}</td>
|
<td className="center">{item?.details?.actUserName}</td>
|
||||||
<td className="center">{item?.details?.delayHotTime}</td>
|
<td className="center">{item?.details?.delayHotTime}</td>
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,7 @@
|
||||||
|
import ListPage from "~/pages/Container/Enterprise/ConfinedSpaceWork/Homework/List";
|
||||||
|
|
||||||
|
function List(props) {
|
||||||
|
return (<ListPage status="999" entrance="stakeholder" {...props} />);
|
||||||
|
}
|
||||||
|
|
||||||
|
export default List;
|
||||||
|
|
@ -0,0 +1,7 @@
|
||||||
|
import ViewPage from "~/pages/Container/Enterprise/ConfinedSpaceWork/Homework/View";
|
||||||
|
|
||||||
|
function View(props) {
|
||||||
|
return (<ViewPage entrance="stakeholder" {...props} />);
|
||||||
|
}
|
||||||
|
|
||||||
|
export default View;
|
||||||
|
|
@ -0,0 +1,5 @@
|
||||||
|
function Archive(props) {
|
||||||
|
return props.children;
|
||||||
|
}
|
||||||
|
|
||||||
|
export default Archive;
|
||||||
|
|
@ -0,0 +1,7 @@
|
||||||
|
import ListPage from "~/pages/Container/Enterprise/ConfinedSpaceWork/Homework/List";
|
||||||
|
|
||||||
|
function List(props) {
|
||||||
|
return (<ListPage entrance="stakeholder" {...props} />);
|
||||||
|
}
|
||||||
|
|
||||||
|
export default List;
|
||||||
|
|
@ -0,0 +1,7 @@
|
||||||
|
import ViewPage from "~/pages/Container/Enterprise/ConfinedSpaceWork/Homework/View";
|
||||||
|
|
||||||
|
function View(props) {
|
||||||
|
return (<ViewPage entrance="stakeholder" {...props} />);
|
||||||
|
}
|
||||||
|
|
||||||
|
export default View;
|
||||||
|
|
@ -0,0 +1,5 @@
|
||||||
|
function Homework(props) {
|
||||||
|
return props.children;
|
||||||
|
}
|
||||||
|
|
||||||
|
export default Homework;
|
||||||
|
|
@ -0,0 +1,5 @@
|
||||||
|
function ConfinedSpaceWork(props) {
|
||||||
|
return props.children;
|
||||||
|
}
|
||||||
|
|
||||||
|
export default ConfinedSpaceWork;
|
||||||
|
|
@ -0,0 +1,9 @@
|
||||||
|
import ListPage from "~/pages/Container/Supervision/HotWork/List";
|
||||||
|
|
||||||
|
function List(props) {
|
||||||
|
return (
|
||||||
|
<ListPage eqWorkType="confinedspace_work" {...props} />
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
export default List;
|
||||||
|
|
@ -0,0 +1,10 @@
|
||||||
|
import useGetUrlQuery from "zy-react-library/hooks/useGetUrlQuery";
|
||||||
|
import ListPage from "~/pages/Container/Enterprise/ConfinedSpaceWork/Homework/List";
|
||||||
|
|
||||||
|
function RecordsList(props) {
|
||||||
|
const query = useGetUrlQuery();
|
||||||
|
|
||||||
|
return (<ListPage status={query.status} entrance="supervision" {...props} />);
|
||||||
|
}
|
||||||
|
|
||||||
|
export default RecordsList;
|
||||||
|
|
@ -0,0 +1,5 @@
|
||||||
|
function ConfinedSpaceWork(props) {
|
||||||
|
return props.children;
|
||||||
|
}
|
||||||
|
|
||||||
|
export default ConfinedSpaceWork;
|
||||||
|
|
@ -11,7 +11,7 @@ function List(props) {
|
||||||
|
|
||||||
const { tableProps, getData } = useTable(props["eightworkRecordsList"], {
|
const { tableProps, getData } = useTable(props["eightworkRecordsList"], {
|
||||||
form,
|
form,
|
||||||
params: { eqWorkType: "hot_work" },
|
params: { eqWorkType: props.eqWorkType || "hot_work" },
|
||||||
});
|
});
|
||||||
|
|
||||||
return (
|
return (
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue