diff --git a/src/api/biMark/index.js b/src/api/biMark/index.js index 96ec99f..c8ce112 100644 --- a/src/api/biMark/index.js +++ b/src/api/biMark/index.js @@ -28,3 +28,7 @@ export const getPumpRoomScreenList = declareRequest( "biFullLoading", "Post > @/fireResource/pumpRoom/screenList", ); +export const getEightWorkInfoScreenWorkList = declareRequest( + "biFullLoading", + "Post > @/eightwork/eightworkInfo/screenWorkPage", +); diff --git a/src/api/biMarkInfo/index.js b/src/api/biMarkInfo/index.js index 313024e..7d10e6e 100644 --- a/src/api/biMarkInfo/index.js +++ b/src/api/biMarkInfo/index.js @@ -24,3 +24,15 @@ export const sensorDeviceInfo = declareRequest( "biFullLoading", `Get > /iotalarm/sensorDevice/{id}`, ); +export const eightWorkInfo = declareRequest( + "biFullLoading", + `Get > /eightwork/eightworkInfo/{id}`, +); +export const eightWorkSupplementaryInfo = declareRequest( + "biFullLoading", + `Post > @/eightwork/eightworkSupplementaryInfo/list`, +); +export const eightWorkMeasuresLogs = declareRequest( + "biFullLoading", + `Get > /eightwork/measuresLogs/listAll/{workId}`, +); diff --git a/src/pages/Container/Map/components/BottomUtils/branchOfficeUtilsList.js b/src/pages/Container/Map/components/BottomUtils/branchOfficeUtilsList.js index 92e8fa6..713ed25 100644 --- a/src/pages/Container/Map/components/BottomUtils/branchOfficeUtilsList.js +++ b/src/pages/Container/Map/components/BottomUtils/branchOfficeUtilsList.js @@ -28,51 +28,67 @@ export const branchOfficeUtilsList = [ list: [ { label: "动火作业", - type: "hotWork", + type: "hot_work", check: false, markIcon: pointIco9, + request: "getEightWorkInfoScreenWorkList", + titleKey: "checkNo", }, { label: "受限空间作业", - type: "confinedSpace", + type: "confinedspace_work", check: false, markIcon: pointIco10, + request: "getEightWorkInfoScreenWorkList", + titleKey: "checkNo", }, { label: "临时用电作业", - type: "electricity", + type: "electricity_work", check: false, markIcon: pointIco11, + request: "getEightWorkInfoScreenWorkList", + titleKey: "checkNo", }, { label: "高处作业", - type: "highWork", + type: "high_work", check: false, markIcon: pointIco12, + request: "getEightWorkInfoScreenWorkList", + titleKey: "checkNo", }, { label: "断路作业", - type: "cutRoad", + type: "cutroad_work", check: false, markIcon: pointIco13, + request: "getEightWorkInfoScreenWorkList", + titleKey: "checkNo", }, { label: "动土作业", - type: "breakGround", + type: "breakground_work", check: false, markIcon: pointIco14, + request: "getEightWorkInfoScreenWorkList", + titleKey: "checkNo", }, { label: "吊装作业", - type: "hoisting", + type: "hoisting_work", check: false, markIcon: pointIco15, + request: "getEightWorkInfoScreenWorkList", + titleKey: "checkNo", }, { label: "盲板抽堵作业", - type: "blindBoard", + type: "blindboard_work", check: false, markIcon: pointIco16, + request: "getEightWorkInfoScreenWorkList", + titleKey: "checkNo", }, { label: "摄像头", diff --git a/src/pages/Container/Map/components/BottomUtils/index.js b/src/pages/Container/Map/components/BottomUtils/index.js index 6ba9b23..2acd1ae 100644 --- a/src/pages/Container/Map/components/BottomUtils/index.js +++ b/src/pages/Container/Map/components/BottomUtils/index.js @@ -13,6 +13,17 @@ import { portUtilsList } from "./portUtilsList"; import { usePortUtilsAnimation } from "./usePortUtilsAnimation"; import "./index.less"; +const dangerWorkTypes = [ + "hot_work", + "confinedspace_work", + "electricity_work", + "high_work", + "cutroad_work", + "breakground_work", + "hoisting_work", + "blindboard_work", +]; + const bottomUtilsAnimation = { initial: { y: 100, opacity: 0 }, animate: { y: 0, opacity: 1, transition: { duration: 0.5, ease: "easeOut" } }, @@ -107,7 +118,17 @@ function BottomUtils(props) { const check = !list[index].list[index1].check; if (check) { if (item1.request) { - const { data = [] } = await props[item1.request]({ portArea, corpinfoId: currentBranchOffice, pageIndex: 1, pageSize: 9999 }); + const requestParams = { portArea, corpinfoId: currentBranchOffice, pageIndex: 1, pageSize: 9999 }; + if (dangerWorkTypes.includes(item1.type)) { + requestParams.workType = item1.type; + } + const { data = [] } = await props[item1.request](requestParams); + if (dangerWorkTypes.includes(item1.type)) { + for (let i = 0; i < data.length; i++) { + data[i].latitude = data[i].info.latitude; + data[i].longitude = data[i].info.longitude; + } + } mapMethods.current.addMarkPoint(data, { markType: item1.type, markIcon: item1.markIcon, diff --git a/src/pages/Container/Map/components/BottomUtils/portUtilsList.js b/src/pages/Container/Map/components/BottomUtils/portUtilsList.js index ba828de..dba6880 100644 --- a/src/pages/Container/Map/components/BottomUtils/portUtilsList.js +++ b/src/pages/Container/Map/components/BottomUtils/portUtilsList.js @@ -216,67 +216,83 @@ export const portUtilsList = [ list: [ { label: "动火作业", - type: "hotWork", + type: "hot_work", check: false, img: ico9, checkImg: ico9On, markIcon: pointIco9, + request: "getEightWorkInfoScreenWorkList", + titleKey: "checkNo", }, { label: "受限空间作业", - type: "confinedSpace", + type: "confinedspace_work", check: false, img: ico10, checkImg: ico10On, markIcon: pointIco10, + request: "getEightWorkInfoScreenWorkList", + titleKey: "checkNo", }, { label: "临时用电作业", - type: "electricity", + type: "electricity_work", check: false, img: ico11, checkImg: ico11On, markIcon: pointIco11, + request: "getEightWorkInfoScreenWorkList", + titleKey: "checkNo", }, { label: "高处作业", - type: "highWork", + type: "high_work", check: false, img: ico12, checkImg: ico12On, markIcon: pointIco12, + request: "getEightWorkInfoScreenWorkList", + titleKey: "checkNo", }, { label: "断路作业", - type: "cutRoad", + type: "cutroad_work", check: false, img: ico13, checkImg: ico13On, markIcon: pointIco13, + request: "getEightWorkInfoScreenWorkList", + titleKey: "checkNo", }, { label: "动土作业", - type: "breakGround", + type: "breakground_work", check: false, img: ico14, checkImg: ico14On, markIcon: pointIco14, + request: "getEightWorkInfoScreenWorkList", + titleKey: "checkNo", }, { label: "吊装作业", - type: "hoisting", + type: "hoisting_work", check: false, img: ico15, checkImg: ico15On, markIcon: pointIco15, + request: "getEightWorkInfoScreenWorkList", + titleKey: "checkNo", }, { label: "盲板抽堵作业", - type: "blindBoard", + type: "blindboard_work", check: false, img: ico16, checkImg: ico16On, markIcon: pointIco16, + request: "getEightWorkInfoScreenWorkList", + titleKey: "checkNo", }, { label: "摄像头", diff --git a/src/pages/Container/Map/components/Content/modal/BlindBoardWork/index.js b/src/pages/Container/Map/components/Content/modal/BlindBoardWork/index.js new file mode 100644 index 0000000..f865034 --- /dev/null +++ b/src/pages/Container/Map/components/Content/modal/BlindBoardWork/index.js @@ -0,0 +1,178 @@ +import { Connect } from "@cqsjjb/jjb-dva-runtime"; +import { Divider, Image } from "antd"; +import { useEffect, useState } from "react"; +import { getFileUrl } from "zy-react-library/utils"; +import { NS_BI_MARK_INFO } from "~/enumerate/namespace"; +import DisclaimerSign from "../eightWordPubilc/DisclaimerSign"; +import OpinionSign from "../eightWordPubilc/OpinionSign"; +import SafetyMeasures from "../eightWordPubilc/SafetyMeasures"; +import "../eightWordPubilc/index.less"; + +function View(props) { + const [info, setInfo] = useState({}); + + const getData = async () => { + const { data: basicInfo } = await props.eightWorkInfo({ id: props.id }); + setInfo(basicInfo); + }; + + useEffect(() => { + getData(); + }, []); + + const blindboardWorkParams = Array.isArray(info?.info?.blindboardWorkParams) + && info.info.blindboardWorkParams.length > 0 + ? info.info.blindboardWorkParams + : [{}]; + + return ( +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + {blindboardWorkParams.map((item, index) => ( + + {index === 0 && ( + <> + + + + + + )} + + + + + ))} + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ 盲板抽堵安全作业票 +
+ 编号: + {info.checkNo} +
申请单位{info?.info?.applyUnit}作业单位{info?.info?.step_21?.actUserDepartmentName}
作业人{info?.info?.workUserName}作业类型{info?.info?.operationTypeName}
设备管道名称管道参数盲板参数
介质温度压力材质规格编号
{info?.info?.devicePipelineName}{info?.info?.mediumName}{info?.info?.temperature}{info?.info?.pressure}{item?.matertal}{item?.specification}{item?.number}
作业类别 + { + { blindboardWorkType001: "抽盲板", blindboardWorkType002: "堵盲板" }[info?.info?.blindboardWorkType] + } +
盲板抽堵位置图 + {info?.info?.workScopeAndMethodImage + && } + 作业单位{info?.info?.step_21?.actUserDepartmentName}
监护人 + {info?.info?.step_20?.signPath + && } + 作业负责人 + {info?.info?.step_21?.signPath + && } +
关联的其他特殊作业及安全作业票编号{info?.info?.linkSpecialWorks}
风险辨识结果{info?.info?.riskResults}
实际作业开始时间{info?.info?.workStartTime}
+
+ ); +} + +export default Connect([NS_BI_MARK_INFO], true)(View); diff --git a/src/pages/Container/Map/components/Content/modal/BreakGroundWork/index.js b/src/pages/Container/Map/components/Content/modal/BreakGroundWork/index.js new file mode 100644 index 0000000..cf296cb --- /dev/null +++ b/src/pages/Container/Map/components/Content/modal/BreakGroundWork/index.js @@ -0,0 +1,147 @@ +import { Connect } from "@cqsjjb/jjb-dva-runtime"; +import { Divider, Image } from "antd"; +import dayjs from "dayjs"; +import { useEffect, useState } from "react"; +import { getFileUrl } from "zy-react-library/utils"; +import { NS_BI_MARK_INFO } from "~/enumerate/namespace"; +import DisclaimerSign from "../eightWordPubilc/DisclaimerSign"; +import OpinionSign from "../eightWordPubilc/OpinionSign"; +import SafetyMeasures from "../eightWordPubilc/SafetyMeasures"; +import "../eightWordPubilc/index.less"; + +function View(props) { + const [info, setInfo] = useState({}); + + const getData = async () => { + const { data: basicInfo } = await props.eightWorkInfo({ id: props.id }); + setInfo(basicInfo); + }; + + useEffect(() => { + getData(); + }, []); + + return ( +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ 动土安全作业票 +
+ 编号: + {info.checkNo} +
申请单位{info?.info?.applyUnit}申请时间{dayjs(info?.info?.applyTime || info?.createTime).format("YYYY-MM-DD HH:mm:ss")}
作业地点{info?.info?.workLocation}作业类型{info?.info?.operationTypeName}
作业内容{info?.info?.workContent}作业级别{info?.info?.workLevelName}
作业内容、范围、方式{info?.info?.workScopeAndMethod}作业内容、范围、方式简图 + {info?.info?.workScopeAndMethodImage + && } +
作业单位{info?.info?.step_21?.actUserDepartmentName}监护人 + {info?.info?.step_20?.signPath + && } +
作业负责人 + {info?.info?.step_21?.signPath + && } +
关联的其他特殊作业及安全作业票编号{info?.info?.linkSpecialWorks}
风险辨识结果{info?.info?.riskResults}
实际作业开始时间{info?.info?.workStartTime}
+
+ ); +} + +export default Connect([NS_BI_MARK_INFO], true)(View); diff --git a/src/pages/Container/Map/components/Content/modal/ConfinedSpaceWork/index.js b/src/pages/Container/Map/components/Content/modal/ConfinedSpaceWork/index.js new file mode 100644 index 0000000..3968c71 --- /dev/null +++ b/src/pages/Container/Map/components/Content/modal/ConfinedSpaceWork/index.js @@ -0,0 +1,209 @@ +import { Connect } from "@cqsjjb/jjb-dva-runtime"; +import { Divider, Image } from "antd"; +import { useEffect, useState } from "react"; +import { getFileUrl } from "zy-react-library/utils"; +import { NS_BI_MARK_INFO } from "~/enumerate/namespace"; +import "../eightWordPubilc/index.less"; + +function View(props) { + const [info, setInfo] = useState({}); + const [safetyMeasures, setSafetyMeasures] = useState([]); + const [otherSafetyMeasures, setOtherSafetyMeasures] = useState([]); + const [gasMonitoringRecord, setGasMonitoringRecord] = useState([]); + + const getData = async () => { + const { data: basicInfo } = await props.eightWorkInfo({ id: props.id }); + setInfo(basicInfo); + const { data: supplementaryInfo } = await props.eightWorkSupplementaryInfo({ + eqWorkId: props.workId, + pageSize: 999, + pageIndex: 1, + }); + setGasMonitoringRecord(supplementaryInfo.filter(item => item.type === "gas")); + const { data: measuresLogs } = await props.eightworkMeasuresLogs({ workId: props.workId }); + setSafetyMeasures(measuresLogs.filter(item => item.type === 1)); + setOtherSafetyMeasures(measuresLogs.filter(item => item.type === 2)); + }; + + useEffect(() => { + getData(); + }, []); + + return ( +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + {gasMonitoringRecord.length > 0 && ( + + + + )} + + + + + + + + + +
+ 有限空间作业许可证 +
+ 编号: + {info.checkNo} +
申请单位{info?.info?.applyUnit}作业单位{info?.info?.workDepartmentName}
有限空间名称及编号{info?.info?.limitedSpaceNameAndCode}作业内容{info?.info?.workContent}
主要介质{info?.info?.chooseLimitedSpace?.mediumInfo}应急装备{info?.info?.emergencyEquipment}
主要危险因素{info?.info?.chooseLimitedSpace?.hazards}
隔绝安全措施{info?.info?.isNeedWork === 1 ? "是" : "否"}
+
+
+ 作业负责人: + {info?.info?.workChargeUserName} +
+
+ 监护人: + {info?.info?.workGuardianUserName} +
+
+ 作业人: + {info?.info?.workUserName} +
+
+
+ + + + + + + + + {safetyMeasures.map((item, index) => ( + + + + + + + ))} + +
序号主要安全措施是否涉及确认人
{index + 1}{item.content}符合 + {item.signPath && } +
+
+ + + + + + + + {otherSafetyMeasures.map((item, index) => ( + + + + + + ))} + +
序号其它安全措施确认人
{index + 1}{item.content} + {item.signPath + ? + : item.createName} +
+
+ + + + + + + + + + + + {gasMonitoringRecord.map((item, index) => ( + + {index === 0 && } + + + + + + + + ))} + +
作业前分析项目有毒有害物质含量可燃气含量氧气量取样时间取样位置取样人
作业前数据{item?.details?.toxicSubstanceContent}{item?.details?.combustibleGasContent}{item?.details?.oxygeAmount}{item?.details?.samplingTime}{item?.details?.samplingLocation} + {item?.details?.signImagePath + && } +
+
作业单位负责人意见 +
+ {info?.info?.step_14?.signPath + && } +
+
{ info?.info?.step_14?.status !== 0 && info?.info?.step_14?.signTime}
+ {/*
{info?.info?.step_14?.remarks}
*/} +
管理单位发包部门意见 +
+ {info?.info?.step_15?.signPath + && } +
+
{info?.info?.step_15?.status !== 0 && info?.info?.step_15?.signTime}
+ {/*
{info?.info?.step_15?.remarks}
*/} +
管理单位安监部门意见 +
+ {info?.info?.step_16?.signPath + && } +
+
{info?.info?.step_16?.status !== 0 && info?.info?.step_16?.signTime}
+ {/*
{info?.info?.step_16?.remarks}
*/} +
+
+ ); +} + +export default Connect([NS_BI_MARK_INFO], true)(View); diff --git a/src/pages/Container/Map/components/Content/modal/CutRoadWork/index.js b/src/pages/Container/Map/components/Content/modal/CutRoadWork/index.js new file mode 100644 index 0000000..68a4995 --- /dev/null +++ b/src/pages/Container/Map/components/Content/modal/CutRoadWork/index.js @@ -0,0 +1,147 @@ +import { Connect } from "@cqsjjb/jjb-dva-runtime"; +import { Divider, Image } from "antd"; +import dayjs from "dayjs"; +import { useEffect, useState } from "react"; +import { getFileUrl } from "zy-react-library/utils"; +import { NS_BI_MARK_INFO } from "~/enumerate/namespace"; +import DisclaimerSign from "../eightWordPubilc/DisclaimerSign"; +import OpinionSign from "../eightWordPubilc/OpinionSign"; +import SafetyMeasures from "../eightWordPubilc/SafetyMeasures"; +import "../eightWordPubilc/index.less"; + +function View(props) { + const [info, setInfo] = useState({}); + + const getData = async () => { + const { data: basicInfo } = await props.eightWorkInfo({ id: props.id }); + setInfo(basicInfo); + }; + + useEffect(() => { + getData(); + }, []); + + return ( +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ 断路安全作业票 +
+ 编号: + {info.checkNo} +
申请单位{info?.info?.applyUnit}申请时间{dayjs(info?.info?.applyTime || info?.createTime).format("YYYY-MM-DD HH:mm:ss")}
作业地点/断路地点{info?.info?.workLocation}作业类型{info?.info?.operationTypeName}
涉及相关单位(部门){info?.info?.relatedUnit}作业级别{info?.info?.workLevelName}
断路原因{info?.info?.breakReason}断路地段示意图 + {info?.info?.workScopeAndMethodImage + && } +
断路地段示意图相关说明{info?.info?.workScopeAndMethod}监护人 + {info?.info?.step_20?.signPath + && } +
作业负责人 + {info?.info?.step_21?.signPath + && } +
关联的其他特殊作业及安全作业票编号{info?.info?.linkSpecialWorks}
风险辨识结果{info?.info?.riskResults}
实际作业开始时间{info?.info?.workStartTime}
+
+ ); +} + +export default Connect([NS_BI_MARK_INFO], true)(View); diff --git a/src/pages/Container/Map/components/Content/modal/ElectricityWork/index.js b/src/pages/Container/Map/components/Content/modal/ElectricityWork/index.js new file mode 100644 index 0000000..22ba37b --- /dev/null +++ b/src/pages/Container/Map/components/Content/modal/ElectricityWork/index.js @@ -0,0 +1,178 @@ +import { Connect } from "@cqsjjb/jjb-dva-runtime"; +import { Divider, Image } from "antd"; +import dayjs from "dayjs"; +import { Fragment, useEffect, useState } from "react"; +import { getFileUrl } from "zy-react-library/utils"; +import { NS_BI_MARK_INFO } from "~/enumerate/namespace"; +import DisclaimerSign from "../eightWordPubilc/DisclaimerSign"; +import OpinionSign from "../eightWordPubilc/OpinionSign"; +import SafetyMeasures from "../eightWordPubilc/SafetyMeasures"; +import "../eightWordPubilc/index.less"; + +function View(props) { + const [info, setInfo] = useState({}); + const [gasMonitoringRecord, setGasMonitoringRecord] = useState([]); + + const getData = async () => { + const { data: basicInfo } = await props.eightWorkInfo({ id: props.id }); + setInfo(basicInfo); + const { data: supplementaryInfo } = await props.eightWorkSupplementaryInfo({ + eqWorkId: props.workId, + pageSize: 999, + pageIndex: 1, + }); + setGasMonitoringRecord(supplementaryInfo.filter(item => item.type === "gas")); + }; + + useEffect(() => { + getData(); + }, []); + + return ( +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + { + gasMonitoringRecord.length > 0 + ? gasMonitoringRecord.map(item => ( + + + + + + + + + + + + + + + )) + : + } + + + + + + + +
+ 临时用电安全作业票 +
+ 编号: + {info.checkNo} +
申请单位{info?.info?.applyUnit}申请时间{dayjs(info?.info?.applyTime || info?.createTime).format("YYYY-MM-DD HH:mm:ss")}
作业地点{info?.info?.workLocation}作业类型{info?.info?.operationTypeName}
作业人电工证号{info?.info?.electricNumber}作业级别{info?.info?.workLevelName}
电源接入点及许可用电功率{info?.info?.pointPower}用电设备名称及额定功率{info?.info?.equipmentNamePower}
工作电压{info?.info?.workVoltage}用电人{info?.info?.electricUser}
负责人电工号{info?.info?.electricUserNo}监护人 + {info?.info?.step_20?.signPath + && } +
作业人{info?.info?.workUserName}作业负责人 + {info?.info?.step_21?.signPath + && } +
关联的其他特殊作业及安全作业票编号{info?.info?.linkSpecialWorks}
风险辨识结果{info?.info?.riskResults}
实际作业开始时间{info?.info?.workStartTime}
可燃气体分析(运行的生产装置、罐区和具有火灾爆炸危险场所)
分析时间{item?.details?.samplingTime}分析点{item?.details?.samplingLocation}
可燃气体检测结果{item?.details?.combustibleGasContent}分析人 + {item?.details?.signImagePath + && } +
暂无数据
+
+ ); +} + +export default Connect([NS_BI_MARK_INFO], true)(View); diff --git a/src/pages/Container/Map/components/Content/modal/HighWork/index.js b/src/pages/Container/Map/components/Content/modal/HighWork/index.js new file mode 100644 index 0000000..b5cc6ae --- /dev/null +++ b/src/pages/Container/Map/components/Content/modal/HighWork/index.js @@ -0,0 +1,144 @@ +import { Connect } from "@cqsjjb/jjb-dva-runtime"; +import { Divider, Image } from "antd"; +import dayjs from "dayjs"; +import { useEffect, useState } from "react"; +import { getFileUrl } from "zy-react-library/utils"; +import { NS_BI_MARK_INFO } from "~/enumerate/namespace"; +import DisclaimerSign from "../eightWordPubilc/DisclaimerSign"; +import OpinionSign from "../eightWordPubilc/OpinionSign"; +import SafetyMeasures from "../eightWordPubilc/SafetyMeasures"; +import "../eightWordPubilc/index.less"; + +function View(props) { + const [info, setInfo] = useState({}); + + const getData = async () => { + const { data: basicInfo } = await props.eightWorkInfo({ id: props.id }); + setInfo(basicInfo); + }; + + useEffect(() => { + getData(); + }, []); + + return ( +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ 高处安全作业票 +
+ 编号: + {info.checkNo} +
申请单位{info?.info?.applyUnit}申请时间{dayjs(info?.info?.applyTime || info?.createTime).format("YYYY-MM-DD HH:mm:ss")}
作业地点{info?.info?.workLocation}作业内容{info?.info?.workContent}
作业高度(米){info?.info?.workHeight}作业类型{info?.info?.operationTypeName}
作业级别{info?.info?.workLevelName}
作业单位{info?.info?.step_21?.actUserDepartmentName}监护人 + {info?.info?.step_20?.signPath + && } +
作业人{info?.info?.workUserName}作业负责人 + {info?.info?.step_21?.signPath + && } +
关联的其他特殊作业及安全作业票编号{info?.info?.linkSpecialWorks}
风险辨识结果{info?.info?.riskResults}
作业实施时间{`${info?.info?.workStartTime} 至 ${info?.info?.workEndTime} 止`}
+
+ ); +} + +export default Connect([NS_BI_MARK_INFO], true)(View); diff --git a/src/pages/Container/Map/components/Content/modal/HoistingWork/index.js b/src/pages/Container/Map/components/Content/modal/HoistingWork/index.js new file mode 100644 index 0000000..2bc6858 --- /dev/null +++ b/src/pages/Container/Map/components/Content/modal/HoistingWork/index.js @@ -0,0 +1,156 @@ +import { Connect } from "@cqsjjb/jjb-dva-runtime"; +import { Divider, Image } from "antd"; +import dayjs from "dayjs"; +import { useEffect, useState } from "react"; +import { getFileUrl } from "zy-react-library/utils"; +import { NS_BI_MARK_INFO } from "~/enumerate/namespace"; +import DisclaimerSign from "../eightWordPubilc/DisclaimerSign"; +import OpinionSign from "../eightWordPubilc/OpinionSign"; +import SafetyMeasures from "../eightWordPubilc/SafetyMeasures"; +import "../eightWordPubilc/index.less"; + +function View(props) { + const [info, setInfo] = useState({}); + + const getData = async () => { + const { data: basicInfo } = await props.eightWorkInfo({ id: props.id }); + setInfo(basicInfo); + }; + + useEffect(() => { + getData(); + }, []); + + return ( +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ 吊装安全作业票 +
+ 编号: + {info.checkNo} +
申请单位{info?.info?.applyUnit}申请时间{dayjs(info?.info?.applyTime || info?.createTime).format("YYYY-MM-DD HH:mm:ss")}
吊装地点{info?.info?.workLocation}作业类型{info?.info?.operationTypeName}
吊具名称{info?.info?.hoistName}作业级别{info?.info?.workLevelName}
吊装作业人{info?.info?.workUserName}司索人{info?.info?.pullUserName}
指挥人{info?.info?.commandUserName}吊物内容{info?.info?.workContent}
吊物质量(吨){info?.info?.hoistWeight}
作业单位{info?.info?.step_21?.actUserDepartmentName}监护人 + {info?.info?.step_20?.signPath + && } +
作业人{info?.info?.workUserName}作业负责人 + {info?.info?.step_21?.signPath + && } +
关联的其他特殊作业及安全作业票编号{info?.info?.linkSpecialWorks}
风险辨识结果{info?.info?.riskResults}
作业实施时间{`${info?.info?.workStartTime} 至 ${info?.info?.workEndTime} 止`}
+
+ ); +} + +export default Connect([NS_BI_MARK_INFO], true)(View); diff --git a/src/pages/Container/Map/components/Content/modal/HotWork/index.js b/src/pages/Container/Map/components/Content/modal/HotWork/index.js new file mode 100644 index 0000000..67be2b9 --- /dev/null +++ b/src/pages/Container/Map/components/Content/modal/HotWork/index.js @@ -0,0 +1,203 @@ +import { Connect } from "@cqsjjb/jjb-dva-runtime"; +import { Divider, Image } from "antd"; +import dayjs from "dayjs"; +import { Fragment, useEffect, useState } from "react"; +import { getFileUrl } from "zy-react-library/utils"; +import { NS_BI_MARK_INFO } from "~/enumerate/namespace"; +import SafetyMeasures from "../eightWordPubilc/SafetyMeasures"; +import "../eightWordPubilc/index.less"; + +function View(props) { + const [info, setInfo] = useState({}); + const [delayedMonitoringRecord, setDelayedMonitoringRecord] = useState([]); + const [gasMonitoringRecord, setGasMonitoringRecord] = useState([]); + + const getData = async () => { + const { data: basicInfo } = await props.eightWorkInfo({ id: props.id }); + setInfo(basicInfo); + const { data: supplementaryInfo } = await props.eightWorkSupplementaryInfo({ + eqWorkId: props.workId, + pageSize: 999, + pageIndex: 1, + }); + setDelayedMonitoringRecord(supplementaryInfo.filter(item => item.type === "delay")); + setGasMonitoringRecord(supplementaryInfo.filter(item => item.type === "gas")); + }; + + useEffect(() => { + getData(); + }, []); + + return ( +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + { + gasMonitoringRecord.length > 0 + ? gasMonitoringRecord.map(item => ( + + + + + + + + + + + + + + + )) + : + } + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ 动火申请审批许可证 +
+ 编号: + {info.checkNo} +
申请单位{info?.info?.applyUnit}申请时间{dayjs(info?.info?.applyTime || info?.createTime).format("YYYY-MM-DD HH:mm:ss")}
动火部位{info?.info?.work_place}动火方法{info?.info?.work_way}
动火等级{info?.info?.workLevelName}作业内容{info?.info?.workContent}
动火时间{`${info?.info?.workStartTime} - ${info?.info?.workEndTime}`}
现场负责人{info?.info?.step_10?.actUserName}动火操作人{info?.info?.hotWorkActUser?.map(item => item.name).join(", ")}
动火监火人{info?.info?.workMonitor}
可燃气体分析(运行的生产装置、罐区和具有火灾爆炸危险场所)
分析时间{item?.details?.analysisTime}分析点{item?.details?.analysisPointName}
可燃气体检测结果{item?.details?.analysisResult}分析人{item?.details?.analysisUserName}
暂无数据
动火要求安全措施安全提示
动火单位(部门)负责人意见 +
+ {info?.info?.step_4?.signPath + && } +
+
{info?.info?.step_4?.status !== 0 && info?.info?.step_4?.signTime}
+
{info?.info?.step_4?.remarks}
+
项目发包单位(部门)人员意见 +
+ {info?.info?.step_5?.signPath + && } +
+
{info?.info?.step_5?.status !== 0 && info?.info?.step_5?.signTime}
+
{info?.info?.step_5?.remarks}
+
现场管辖单位(部门)负责人意见 +
+ {info?.info?.step_6?.signPath + && } +
+
{info?.info?.step_6?.status !== 0 && info?.info?.step_6?.signTime}
+
{info?.info?.step_6?.remarks}
+
动火许可证签发单位意见 +
+ {info?.info?.step_7?.signPath + && } +
+
{info?.info?.step_7?.status !== 0 && info?.info?.step_7?.signTime}
+
{info?.info?.step_7?.remarks}
+
动火前管辖单位现场人员许可 +
+ {info?.info?.step_9?.signPath + && } +
+
{info?.info?.step_9?.status !== 0 && info?.info?.step_9?.signTime}
+
{info?.info?.step_9?.remarks}
+
动火后管辖单位现场人员验收 +
+ {info?.info?.step_11?.signPath + && } +
+
{info?.info?.step_11?.status !== 0 && info?.info?.step_11?.signTime}
+
{info?.info?.step_11?.remarks}
+
延时监火记录
+ + + + + + + + { + delayedMonitoringRecord.length > 0 + ? delayedMonitoringRecord.map((item, index) => ( + + + + + + )) + : + } + +
监火人时间签字照片
{item?.details?.actUserName}{item?.details?.delayHotTime} + {item?.details?.delayHotPhoto + && } +
暂无数据
+
+
+ ); +} + +export default Connect([NS_BI_MARK_INFO], true)(View); diff --git a/src/pages/Container/Map/components/Content/modal/eightWordPubilc/DisclaimerSign/index.js b/src/pages/Container/Map/components/Content/modal/eightWordPubilc/DisclaimerSign/index.js new file mode 100644 index 0000000..c6087c1 --- /dev/null +++ b/src/pages/Container/Map/components/Content/modal/eightWordPubilc/DisclaimerSign/index.js @@ -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 ( + + { + showFirst && ( + +
+
+ 安全交底人: + {safetyRemarks} +
+
+
+ {safetySignPath && } +
+
{safetySignTime}
+
+
+ + ) + } + { + showLast && ( + +
+
+ 接受交底人: + {AcceptRemarks} +
+
+
+ {AcceptSignPath && } +
+
{AcceptSignTime}
+
+
+ + ) + } + + ); +} + +export default DisclaimerSign; diff --git a/src/pages/Container/Map/components/Content/modal/eightWordPubilc/OpinionSign/index.js b/src/pages/Container/Map/components/Content/modal/eightWordPubilc/OpinionSign/index.js new file mode 100644 index 0000000..a18d15c --- /dev/null +++ b/src/pages/Container/Map/components/Content/modal/eightWordPubilc/OpinionSign/index.js @@ -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 ( + + { + show && ( + + +
+
+ + {title} + : + + {remarks} +
+
+
+ 签字: + + {signPath && } + +
{signTime}
+
+
+
+ + + ) + } +
+ ); +} + +export default OpinionSign; diff --git a/src/pages/Container/Map/components/Content/modal/eightWordPubilc/SafetyMeasures/index.js b/src/pages/Container/Map/components/Content/modal/eightWordPubilc/SafetyMeasures/index.js new file mode 100644 index 0000000..a402bb5 --- /dev/null +++ b/src/pages/Container/Map/components/Content/modal/eightWordPubilc/SafetyMeasures/index.js @@ -0,0 +1,72 @@ +import { Connect } from "@cqsjjb/jjb-dva-runtime"; +import { Image } from "antd"; +import { useEffect, useState } from "react"; +import { getFileUrl } from "zy-react-library/utils"; +import { NS_BI_MARK_INFO } from "~/enumerate/namespace"; + +function SafetyMeasures(props) { + const [safetyMeasures, setSafetyMeasures] = useState([]); + const [otherSafetyMeasures, setOtherSafetyMeasures] = useState([]); + + const getData = async () => { + const { data } = await props.eightWorkMeasuresLogs({ workId: props.workId }); + setSafetyMeasures(data.filter(item => item.type === 1)); + setOtherSafetyMeasures(data.filter(item => item.type === 2)); + }; + + useEffect(() => { + getData(); + }, []); + + return ( + + + + + + + + + + + {safetyMeasures.map((item, index) => ( + + + + + + + ))} + { + otherSafetyMeasures.length > 0 && ( + + + + + ) + } + +
序号安全措施是否涉及确认人
{index + 1}{item.content}符合 + {item.signPath && } +
{safetyMeasures.length + 1} + { + otherSafetyMeasures.map((item, index) => ( +
+
+ 其它安全措施: + {item.content} +
+
+ 编制人: + {item.createName} +
+
+ )) + } +
+ + + ); +} + +export default Connect([NS_BI_MARK_INFO], true)(SafetyMeasures); diff --git a/src/pages/Container/Map/components/Content/modal/eightWordPubilc/index.less b/src/pages/Container/Map/components/Content/modal/eightWordPubilc/index.less new file mode 100644 index 0000000..4694440 --- /dev/null +++ b/src/pages/Container/Map/components/Content/modal/eightWordPubilc/index.less @@ -0,0 +1,46 @@ +.work_ticket_details { + table { + width: 100%; + border-collapse: collapse; + border-spacing: 0; + color: #fff; + + th, td { + border: 1px solid #0c1957; + padding: 8px; + } + + .title{ + font-weight: 600; + background-color: #0b1544; + width: 200px; + } + + .center { + text-align: center; + } + + .right { + text-align: right; + max-width: 0; + min-width: 200px; + } + + .remarks { + text-align: left; + word-wrap: break-word; + word-break: break-all; + white-space: pre-wrap; + overflow-wrap: break-word; + display: inline-block; + max-width: 100%; + } + + .flex { + display: flex; + justify-content: space-between; + align-items: center; + gap: 10px; + } + } +} diff --git a/src/pages/Container/Map/components/Content/modal/index.js b/src/pages/Container/Map/components/Content/modal/index.js index e07efa2..87757f4 100644 --- a/src/pages/Container/Map/components/Content/modal/index.js +++ b/src/pages/Container/Map/components/Content/modal/index.js @@ -2,17 +2,26 @@ import { Button, Modal } from "antd"; import { useContext } from "react"; import { Context } from "~/pages/Container/Map/js/context"; import AlarmEquipment from "./AlarmEquipment"; +import BlindBoardWork from "./BlindBoardWork"; +import BreakGroundWork from "./BreakgroundWork"; +import ConfinedSpaceWork from "./ConfinedSpaceWork"; +import CutRoadWork from "./CutRoadWork"; +import ElectricityWork from "./ElectricityWork"; import FireControlRoom from "./FireControlRoom"; import FirePointLocation from "./FirePointLocation"; import FirePumpRoom from "./FirePumpRoom"; import FireRescueTeam from "./FireRescueTeam"; import FireWaterSource from "./FireWaterSource"; +import HighWork from "./HighWork"; +import HoistingWork from "./HoistingWork"; +import HotWork from "./HotWork"; import MeteorologicalMonitoring from "./MeteorologicalMonitoring"; const CustomModal = () => { const { modalVisible, modalData, actions } = useContext(Context); const renderContent = () => { + const markType = modalData.markType?.replace("标记点_", ""); return { meteorologicalMonitoring: , // 气象监测 fireRescueTeam: , // 消防救援队 @@ -21,7 +30,15 @@ const CustomModal = () => { fireWaterSource: , // 消防水源 firePointLocation: , // 消防点位 alarmEquipment: , // 报警设备 - }[modalData.markType?.replace("标记点_", "")]; + hot_work: , // 动火作业 + confinedspace_work: , // 受限空间作业 + electricity_work: , // 临时用电作业 + high_work: , // 高处作业 + cutroad_work: , // 断路作业 + breakground_work: , // 动土作业 + hoisting_work: , // 吊装作业 + blindboard_work: , // 盲板抽堵作业 + }[markType]; }; return ( diff --git a/src/pages/Container/Map/index.js b/src/pages/Container/Map/index.js index b111a09..5a1fbda 100644 --- a/src/pages/Container/Map/index.js +++ b/src/pages/Container/Map/index.js @@ -114,21 +114,23 @@ function Map(props) { return (
- -
-
- {isRenderContent && ( - -
- - - - - - - )} -
- + + +
+
+ {isRenderContent && ( + <> +
+ + + + + + + )} +
+ +