mh-lcmk-sms-web/src/layout/FullScreen.js
2024-08-14 11:16:06 +08:00

1543 lines
50 KiB
JavaScript
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

import React, { useState, useEffect, useMemo, useRef } from "react";
import { connect } from "dva";
import { withRouter, matchPath } from "dva/router";
import { Scrollbars } from "react-custom-scrollbars";
import { Icon, Row, Col, Progress } from "antd";
import EnergyIcon from "../utils/energyIcon";
import { $consts } from "../plugins";
import styles from "./full.less";
import echarts from "echarts";
import realGif from "../assets/layout/mofang.png";
import logo from "../assets/layout/header-logo.png";
import debounce from "lodash.debounce";
import {
FullScreenContainer,
BorderBox8,
BorderBox10,
ScrollBoard,
CapsuleChart,
WaterLevelPond,
} from "@jiaminghi/data-view-react";
import { text } from "@jiaminghi/data-view-react/lib/index-cd27b7f6";
import { Scale } from "canvg";
const stud = (eve) => {
return (
<div
style={{ display: "flex", flexDirection: "row", alignItems: "center" }}
>
<div
style={{
width: "70%",
backgroundColor: "#ec1c24",
height: "30%",
borderRadius: "10px",
position: "relative",
top: "50%",
transform: "translateY(-50%)",
}}
></div>
<div>90</div>
</div>
);
};
const getScale = () => {
const width = 1920,
height = 1080; // 此处可以根据实际设计稿尺寸修改
let ww = window.innerWidth / width;
let wh = window.innerHeight / height;
return ww < wh ? ww : wh;
};
class FullScreen extends React.Component {
constructor(props) {
super(props);
this.state = {
// screenWidh: window.screen.width > 2000 ? true : false,
nowDate: "",
checkData: [
{ name: "公司检查", value: 103 },
{ name: "部门检查", value: 79 },
{ name: "车间检查", value: 86 },
{ name: "班组检查", value: 94 },
],
widthp: "70%",
scrollConfig: {
header: ["检查类型", "检查次数", "完成率"],
data: [
["巡回检查", "322", "99%"],
["例行检查", "255", "99%"],
["日常检查", "253", "99%"],
["专业检查", "123", "99%"],
["巡回检查", "322", "99%"],
["例行检查", "255", "99%"],
["日常检查", "253", "99%"],
["专业检查", "123", "99%"],
],
waitTime: 200000,
},
safescrollConfig: {
header: ["部门", "车间", "活动", "进度"],
data: [
["矿山部", "穿爆车间", "班前会议", "98%"],
["矿山部", "金宇宁化分公司", "班前会议", "98%"],
["选矿部", "破碎车间", "班前会议", "95%"],
["矿山部", "磨重车间", "班前会议", "92%"],
["矿山部", "机电设备管理科", "班前会议", "83%"],
["矿山部", "钨细泥回收车间", "班前会议", "93%"],
["矿山部", "穿爆车间", "班前会议", "90%"],
["矿山部", "穿爆车间", "班前会议", "90%"],
["矿山部", "穿爆车间", "班前会议", "90%"],
],
index: true,
columnWidth: [80, 200, 300, 200, 200],
align: ["center"],
waitTime: 2000,
},
chartConfig: {
data: [
{
name: "电工日常班",
value: 97,
},
{
name: "电工三班",
value: 95,
},
{
name: "破碎一班",
value: 91,
},
{
name: "磨重二班",
value: 86,
},
{
name: "磨重三班",
value: 83,
},
],
showValue: true,
},
WaterLevelPondconfig1: {
data: [75],
shape: "round",
},
WaterLevelPondconfig2: {
data: [85],
shape: "round",
},
WaterLevelPondconfig3: {
data: [95],
shape: "round",
},
completeData: [
{
name: "班组会议完成率",
value: 75,
},
{
name: "岗位交接班完成率",
value: 85,
},
{
name: "岗位当班记录完成率",
value: 95,
},
],
// completeDatatwo: {
// name: "岗位交接班完成率",
// value: 85,
// id: "completetwo",
// },
// completeDatathree: {
// name: "岗位当班记录完成率",
// value: 95,
// id: "completethree",
// },
meetingData: [
{
name: "班前会议",
value: 32,
},
{
name: "班组活动",
value: 132,
},
{
name: "岗位交接班",
value: 32,
},
{
name: "岗位当班",
value: 132,
},
{
name: "班前会议",
value: 32,
},
{
name: "班组活动",
value: 132,
},
{
name: "岗位交接班",
value: 32,
},
{
name: "岗位当班",
value: 132,
},
],
roaData: [
{
name: "总任务数",
value: 1456,
},
{
name: "超时待办数",
value: 132,
},
{
name: "安全检查数",
value: 1456,
},
{
name: "检查完成率",
value: 32,
},
{
name: "职业危害",
value: 132,
},
{
name: "管控措施",
value: 1456,
},
{
name: "安全检查库",
value: 132,
},
{
name: "危险源库",
value: 32,
},
{
name: "培训计划完成率",
value: 132,
},
{
name: "用户活跃度",
value: 1456,
},
{
name: "系统用户数",
value: 132,
},
{
name: "正常已办数",
value: 32,
},
{
name: "未完成数",
value: 132,
},
],
scale: getScale(),
};
// this.scrollConfig = {
// header: ["检查类型", "检查次数", "完成率"],
// data: [
// ["巡回检查", "322", "行1列3"],
// ["例行检查", "255", "行2列3"],
// ["日常检查", "253", "行3列3"],
// ["专业检查", "123", "行4列3"],
// ["巡回检查", "322", "行1列3"],
// ["例行检查", "255", "行2列3"],
// ["日常检查", "253", "行3列3"],
// ["专业检查", "123", "行4列3"],
// ],
// waitTime: 200000,
// };
}
setScale = debounce(() => {
// debounce节流
// 获取到缩放比,设置它
let scale = getScale();
this.setState({ scale });
}, 500);
componentDidMount() {
window.addEventListener("resize", this.setScale); // 得到呈现的屏幕宽高比
this.riskLevel();
this.safedanger();
const eve = () => {
return <div>11111</div>;
};
// setInterval(this.getDate(), 1000);
this.timer = setInterval(() => {
this.setState({
nowDate: this.getDate(),
});
}, 1000);
// setTimeout(()=>{
// this.setState({
// nowDate:this.getDate()
// })
// },1000)
this.completeChart(this.state.completeData);
// this.completeChart(this.state.completeDatatwo);
// this.completeChart(this.state.completeDatathree);
// this.setState({
// scrollConfig: {
// header: ["检查类型", "检查次数", "完成率"],
// data: [
// [
// "巡回检查",
// "322",
// "<div style='width:`{this.state.widthp}`;height:30%;background-color:#ec1c24;border-radius:10px;position:relative;top:50%;transform:translateY(-50%);'></div>",
// ],
// ["例行检查", "255", eve],
// ["日常检查", "253", "99%"],
// ["专业检查", "123", "99%"],
// ["巡回检查", "322", "99%"],
// ["例行检查", "255", "99%"],
// ["日常检查", "253", "99%"],
// ["专业检查", "123", "99%"],
// ],
// waitTime: 2000,
// },
// });
}
componentWillUnmount() {
window.removeEventListener("resize", this.setScale);
clearInterval(this.timer);
}
getDate = () => {
var myDate = new Date();
var year = myDate.getFullYear(); //获取当前年
var mon = myDate.getMonth() + 1; //获取当前月
var date = myDate.getDate(); //获取当前日
// var hours = myDate.getHours(); //获取当前小时
// var minutes = myDate.getMinutes(); //获取当前分钟
if (myDate.getHours() < 10) {
var hours = "0" + myDate.getHours();
} else {
hours = myDate.getHours(); //获取当前小时
}
if (myDate.getMinutes() < 10) {
var minutes = "0" + myDate.getMinutes();
} else {
minutes = myDate.getMinutes(); //获取当前分钟
}
if (myDate.getSeconds() < 10) {
var seconds = "0" + myDate.getSeconds();
} else {
seconds = myDate.getSeconds(); //获取当前秒
}
var now =
year +
" 年 " +
mon +
" 月 " +
date +
" 日 " +
"\t\t\t" +
hours +
" : " +
minutes +
" : " +
seconds;
return now;
};
completeChart = (evt) => {
let seriesArr = [];
let centerArr = [
["17%", "50%"],
["50%", "50%"],
["83%", "50%"],
];
evt.forEach((item, index) => {
seriesArr.push(
{
name: "统计",
type: "gauge",
radius: "75%", //图表尺寸
center: centerArr[index],
axisLine: {
show: true,
lineStyle: {
width: 0,
shadowBlur: 0,
color: [
[0.05, "#a62efb"],
[0.1, "#af23fa"],
[0.15, "#b31ffa"],
[0.2, "#b71afa"],
[0.25, "#b51dfa"],
[0.3, "#b220fa"],
[0.35, "#a42ffb"],
[0.4, "#993dfb"],
[0.45, "#8f47fb"],
[0.5, "#7b5efc"],
[0.55, "#6476fc"],
[0.6, "#4c91fd"],
[0.65, "#35abfe"],
[0.7, "#24befe"],
[0.75, "#12d1ff"],
[0.8, "#06defe"],
[0.85, "#05e0ff"],
[0.9, "#06deff"],
[0.95, "#06deff"],
[1, "#06deff"],
],
},
},
axisTick: {
show: true,
lineStyle: {
color: "auto",
width: 2,
},
length: -5,
splitNumber: 5,
},
splitLine: {
show: true,
length: -10,
lineStyle: {
color: "auto",
width: 2,
},
},
axisLabel: {
show: false,
},
pointer: {
//仪表盘指针
show: false,
},
detail: {
show: false,
},
title: {
show: true,
offsetCenter: [0, "100%"], // x, y单位px
textStyle: {
color: "#fff",
fontSize: 14,
},
},
data: [
{
name: item.name,
},
],
},
{
type: "gauge",
radius: "70%",
center: centerArr[index],
splitNumber: 0, //刻度数量
startAngle: 225,
endAngle: -45,
axisLine: {
show: true,
lineStyle: {
width: 10,
color: [
[
1,
new echarts.graphic.LinearGradient(0, 0, 1, 0, [
{
offset: 0,
color: "#A52EFA",
},
{
offset: 1,
color: "#07DDFD",
},
]),
],
],
},
},
//分隔线样式。
splitLine: {
show: false,
},
axisLabel: {
show: false,
},
axisTick: {
show: false,
},
pointer: {
show: false,
},
title: {
show: false,
offsetCenter: [0, "-20%"], // x, y单位px
textStyle: {
color: "#fff",
fontSize: 12,
},
},
//仪表盘详情,用于显示数据。
detail: {
show: true,
offsetCenter: [0, 0],
color: "#fff",
formatter: function (params) {
return params + "%";
},
textStyle: {
fontSize: 22,
},
},
data: [
{
// name: evt.name,
value: item.value,
},
],
}
);
});
let completeCharts = document.getElementById("completeone");
if (completeCharts) {
let myChart = echarts.init(completeCharts);
myChart.setOption({
// backgroundColor:'#000',
series: seriesArr,
});
}
};
safedanger = () => {
let bgColor = "#000";
let color = [
"#0090FF",
"#36CE9E",
"#e690d1",
// "#FF515A",
// "#8B5CFF",
// "#00CA69",
];
let echartData = [
{
name: "1",
value1: 99,
value2: 93,
value3: 90,
},
{
name: "2",
value1: 95,
value2: 98,
value3: 60,
},
{
name: "3",
value1: 92,
value2: 99,
value3: 90,
},
{
name: "4",
value1: 99,
value2: 96,
value3: 96,
},
{
name: "5",
value1: 80,
value2: 85,
value3: 91,
},
{
name: "6",
value1: 99,
value2: 65,
value3: 80,
},
{
name: "7",
value1: 92,
value2: 97,
value3: 70,
},
{
name: "8",
value1: 75,
value2: 96,
value3: 90,
},
{
name: "9",
value1: 93,
value2: 95,
value3: 90,
},
{
name: "10",
value1: 100,
value2: 97,
value3: 90,
},
{
name: "11",
value1: 99,
value2: 93,
value3: 90,
},
{
name: "12",
value1: 93,
value2: 87,
value3: 90,
},
];
let xAxisData = echartData.map((v) => v.name);
//  ["1", "2", "3", "4", "5", "6", "7", "8"]
let yAxisData1 = echartData.map((v) => v.value1);
// [100, 138, 350, 173, 180, 150, 180, 230]
let yAxisData2 = echartData.map((v) => v.value2);
let yAxisData3 = echartData.map((v) => v.value3);
// [233, 233, 200, 180, 199, 233, 210, 180]
const hexToRgba = (hex, opacity) => {
let rgbaColor = "";
let reg = /^#[\da-f]{6}$/i;
if (reg.test(hex)) {
rgbaColor = `rgba(${parseInt("0x" + hex.slice(1, 3))},${parseInt(
"0x" + hex.slice(3, 5)
)},${parseInt("0x" + hex.slice(5, 7))},${opacity})`;
}
return rgbaColor;
};
let opretionTrends = document.getElementById("opretionTrend");
if (opretionTrends) {
let myChart = echarts.init(opretionTrends);
myChart.setOption({
backgroundColor: "",
color: color,
legend: {
right: 10,
top: 10,
textStyle: {
color: "#fff",
},
},
tooltip: {
trigger: "axis",
formatter: function (params) {
let html = "";
params.forEach((v) => {
html += `<div style="color: #666;font-size: 14px;line-height: 24px">
<span style="display:inline-block;margin-right:5px;border-radius:10px;width:10px;height:10px;background-color:${
color[v.componentIndex]
};"></span>
${v.seriesName}
<span style="color:${
color[v.componentIndex]
};font-weight:700;font-size: 18px">${v.value}</span>
%`;
});
return html;
},
extraCssText:
"background: #fff; border-radius: 0;box-shadow: 0 0 3px rgba(0, 0, 0, 0.2);color: #333;",
axisPointer: {
type: "shadow",
shadowStyle: {
// color: "#ffffff",
shadowColor: "rgba(225,225,225,1)",
shadowBlur: 5,
},
},
},
grid: {
// top: 100,
top: "25%",
bottom: "10%",
containLabel: true,
},
xAxis: [
{
type: "category",
boundaryGap: false,
axisLabel: {
formatter: "{value}月",
textStyle: {
color: "#fff",
},
},
axisLine: {
lineStyle: {
color: "#fff",
},
},
data: xAxisData,
},
],
yAxis: [
{
type: "value",
axisLabel: {
textStyle: {
color: "#fff",
},
},
nameTextStyle: {
color: "#fff",
fontSize: 12,
lineHeight: 40,
},
splitLine: {
lineStyle: {
type: "dashed",
color: "#fff",
},
},
axisLine: {
show: false,
},
axisTick: {
show: false,
},
},
],
series: [
{
name: "选矿",
type: "line",
smooth: true,
// showSymbol: false,/
symbolSize: 8,
zlevel: 3,
lineStyle: {
normal: {
color: color[0],
shadowBlur: 3,
// shadowColor: hexToRgba(color[0], 0.5),
shadowOffsetY: 8,
},
},
// areaStyle: {
// normal: {
// color: new echarts.graphic.LinearGradient(
// 0,
// 0,
// 0,
// 1,
// [
// {
// offset: 0,
// color: hexToRgba(color[0], 0.3),
// },
// {
// offset: 1,
// color: hexToRgba(color[0], 0.1),
// },
// ],
// false
// ),
// shadowColor: hexToRgba(color[0], 0.1),
// shadowBlur: 10,
// },
// },
data: yAxisData1,
},
{
name: "矿山",
type: "line",
smooth: true,
// showSymbol: false,
symbolSize: 8,
zlevel: 3,
lineStyle: {
normal: {
color: color[1],
shadowBlur: 3,
// shadowColor: hexToRgba(color[1], 0.5),
shadowOffsetY: 8,
},
},
// areaStyle: {
// normal: {
// color: new echarts.graphic.LinearGradient(
// 0,
// 0,
// 0,
// 1,
// [
// {
// offset: 0,
// color: hexToRgba(color[1], 0.3),
// },
// {
// offset: 1,
// color: hexToRgba(color[1], 0.1),
// },
// ],
// false
// ),
// shadowColor: hexToRgba(color[1], 0.1),
// shadowBlur: 10,
// },
// },
data: yAxisData2,
},
{
name: "尾矿",
type: "line",
smooth: true,
// showSymbol: false,
symbolSize: 8,
zlevel: 3,
lineStyle: {
normal: {
color: color[2],
shadowBlur: 3,
// shadowColor: hexToRgba(color[1], 0.5),
shadowOffsetY: 8,
},
},
// areaStyle: {
// normal: {
// color: new echarts.graphic.LinearGradient(
// 0,
// 0,
// 0,
// 1,
// [
// {
// offset: 0,
// color: hexToRgba(color[1], 0.3),
// },
// {
// offset: 1,
// color: hexToRgba(color[1], 0.1),
// },
// ],
// false
// ),
// shadowColor: hexToRgba(color[1], 0.1),
// shadowBlur: 10,
// },
// },
data: yAxisData3,
},
],
});
}
};
riskLevel = () => {
let riskLevel = [];
let showData = [
{ value: 2, name: "一级" },
{ value: 5, name: "二级" },
{ value: 15, name: "三级" },
{ value: 30, name: "四级" },
];
let riskLevels = document.getElementById("riskLevelFull");
if (riskLevels) {
let myChart = echarts.init(riskLevels);
myChart.setOption({
color: ["#c92a2a", "#FF6710", "#FFDD1E", "#0091FF", "#fa8a89"],
title: [
{
text: "52",
x: "center",
y: "40%",
textStyle: {
fontSize: 26,
fontWeight: "normal",
color: ["#fff"],
},
},
{
text: "风险总数",
x: "center",
y: "55%",
textStyle: {
color: "#fff",
fontSize: 12,
},
},
],
tooltip: {
trigger: "item",
formatter: "{b}:({d}%)",
},
series: [
{
name: "访问来源",
type: "pie",
minAngle: 20,
radius: ["45%", "70%"],
center: ["50%", "50%"],
clockwise: true,
avoidLabelOverlap: true,
hoverOffset: 15,
label: {
show: true,
position: "outside",
// formatter: '{a|{b}{d}%}\n{hr|}',
formatter: "{a|{b}}{e|{d}%}\n",
rich: {
hr: {
backgroundColor: "t",
borderRadius: 3,
width: 3,
height: 3,
padding: [3, 3, 0, -12],
},
a: {
padding: [-15, 0, 0, 0],
fontSize: 15,
// fontWeight: "bold",
color: "#fff",
// fontFamily:'站酷庆科黄油体',
// letterSpacing: 3,
},
e: {
fontSize: 14,
color: "#fff",
padding: [-15, 0, 0, 5],
},
},
},
labelLine: {
normal: {
length: 20,
length2: 30,
lineStyle: {
width: 1,
type: "dashed",
},
},
},
// itemStyle: {
// //图形样式
// normal: {
// borderColor: "#fff",
// borderWidth: 2,
// padding: "0 20px",
// borderRadius: 50,
// },
// },
// color: color,
data: showData,
},
],
});
}
};
render() {
const width = 1920,
height = 1080;
// 固定好16:9的宽高比计算出最合适的缩放比宽高比可根据需要自行更改
const { scale } = this.state;
return (
<React.Fragment>
<FullScreenContainer>
<div
className={styles.box}
style={{
transform: `scale(${scale}) translate(-50%, -50%)`,
WebkitTransform: `scale(${scale}) translate(-50%, -50%)`,
width,
height,
}}
>
<div className={styles.blackBack}>
<div className={styles.backImage}>
<div className={styles.header}>
<Row style={{ width: "100%", height: "100%" }}>
<Col
span={8}
style={{
display: "flex",
alignItems: "center",
justifyContent: "flex-start",
}}
>
<div
style={{
display: "flex",
alignItems: "center",
justifyContent: "flex-start",
flexDirection: "row",
width: "80%",
}}
>
<img
src={logo}
alt="logo"
style={{
width: "auto",
height: "52px",
margin: "10px 20px 10px 50px",
}}
></img>
<div
className="slide-style"
style={{ color: "#fff", fontSize: "18px" }}
>
<p className="slide-text-style">
安全方针安全第一综合治理控制风险科学发展
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
安全理念一切风险皆可控一切事故皆可防
</p>
</div>
</div>
</Col>
<Col
span={8}
style={{
display: "flex",
alignItems: "center",
justifyContent: "center",
}}
>
<div className={styles.headerText}>
宁化行洛坑安全生产标准化运营平台
</div>
</Col>
<Col
span={8}
style={{
display: "flex",
alignItems: "center",
justifyContent: "flex-end",
}}
>
<div
style={{
color: "#fff",
fontSize: "20px",
margin: "10px 50px 10px 20px",
fontWeight: "bold",
height: "52px",
}}
>
{this.state.nowDate}
</div>
</Col>
</Row>
</div>
<div className={styles.row}>
<Row style={{ width: "100%", height: "100%" }}>
<Col span={8} className={styles.boxleft}>
<div className={styles.risklevel}>
{/* <BorderBox10> */}
<div className={styles.title}>
<div className={styles.circle}></div>
<div className={styles.titlename}>
风险等级基本信息
</div>
</div>
<div
id="riskLevelFull"
style={{
display: "flex",
flexDirection: "row",
alignItems: "center",
justifyContent: "center",
width: "100%",
height: "100%",
}}
></div>
{/* </BorderBox10> */}
</div>
<div style={{ height: "10px" }}></div>
<div className={styles.risklevelOne}>
{/* <BorderBox10> */}
<div className={styles.title}>
<div className={styles.circle}></div>
<div className={styles.titlename}>
隐患检查基本信息
</div>
</div>
<div
style={{
display: "flex",
flexDirection: "column",
alignItems: "center",
justifyContent: "center",
width: "100%",
height: "100%",
}}
>
<div
style={{
display: "flex",
flexDirection: "row",
alignItems: "center",
justifyContent: "space-between",
width: "100%",
height: "30%",
padding: "10px 30px",
}}
>
{this.state.checkData.map((item, index) => {
return (
<div>
<BorderBox8>
<div
style={{
display: "flex",
flexDirection: "column",
alignItems: "center",
justifyContent: "space-between",
color: "#fff",
padding: "10px 25px",
}}
>
<div
style={{
display: "flex",
flexDirection: "row",
alignItems: "center",
}}
>
<div style={{ fontSize: "14px" }}>
{item.name}
</div>
<div
style={{
fontSize: "12px",
display: "flex",
justifyContent: "flex-end",
}}
>
/
</div>
</div>
<div
style={{
fontSize: "22px",
color: "#febc22",
fontWeight: "bold",
}}
>
{item.value}
</div>
</div>
</BorderBox8>
</div>
);
})}
</div>
<div className={styles.scrollboard}>
<ScrollBoard
config={this.state.scrollConfig}
style={{ width: "100%", height: "100%" }}
/>
</div>
</div>
{/* </BorderBox10> */}
</div>
</Col>
<Col span={8} className={styles.boxTwo}>
<div
style={{
display: "flex",
flexDirection: "row",
alignItems: "center",
justifyContent: "center",
width: "100%",
}}
>
<div className={styles.scoreBox}>
<div className={styles.score}>
{/* <div className={styles.scoreLeft}>矿山</div> */}
<div className={styles.scoreRight}>
<div className={styles.scoreText}>
标准化得分
</div>
<div className={styles.scoreText2}>83</div>
</div>
</div>
<div className={styles.score2}>
<div className={styles.scoreRight}>
<div className={styles.scoreText}>
标准化得分
</div>
<div className={styles.scoreText2}>88</div>
</div>
</div>
<div className={styles.score3}>
<div className={styles.scoreRight}>
<div className={styles.scoreText}>
标准化得分
</div>
<div className={styles.scoreText2}>93</div>
</div>
</div>
</div>
{/* {this.state.screenWidh ? (
) : (
<div className={styles.scoreBox1}>
<div className={styles.score4}>
<div className={styles.scoreLeft}>矿山</div>
<div className={styles.scoreText3}>
标准化得分
</div>
<div className={styles.scoreText2}>83</div>
</div>
<div className={styles.score4}>
<div className={styles.scoreLeft}>选矿</div>
<div className={styles.scoreText3}>
标准化得分
</div>
<div className={styles.scoreText2}>88</div>
</div>
<div className={styles.score4}>
<div className={styles.scoreLeft}>尾矿</div>
<div className={styles.scoreText3}>
标准化得分
</div>
<div className={styles.scoreText2}>93</div>
</div>
</div>
)} */}
</div>
<div
style={{
display: "flex",
alignItems: "center",
justifyContent: "center",
// height: "100%",
// width: "100%",
flex: 1,
position: "relative",
}}
>
<div>
<img
src={realGif}
alt="1"
style={{ width: "100%", height: "100%" }}
></img>
<div
style={{
position: "absolute",
fontSize: "14px",
color: "#fff",
top: "0",
left: "0",
width: "100%",
height: "100%",
}}
>
<div
style={{
position: "relative",
width: "100%",
height: "100%",
borderRadius: "50%",
}}
className={styles.ulData}
>
{this.state.roaData.map((item, index) => {
return (
<li>
<div className={styles.roateData}>
<div className={styles.roatBack}>
{item.name}:{item.value}
</div>
</div>
</li>
);
})}
</div>
</div>
</div>
</div>
</Col>
<Col span={8} className={styles.boxTwo}>
<div className={styles.risklevel}>
{/* <BorderBox10> */}
<div className={styles.title}>
<div className={styles.circle}></div>
<div className={styles.titlename}>
基本会议完成情况
</div>
</div>
<div
style={{
display: "flex",
flexDirection: "column",
alignItems: "center",
width: "90%",
height: "100%",
}}
>
<div
style={{
display: "flex",
flexDirection: "row",
alignItems: "center",
width: "100%",
height: "50%",
justifyContent: "space-between",
}}
>
<div
id="completeone"
style={{ width: "100%", height: "100%" }}
></div>
{/* <div
id="completetwo"
style={{ width: "100%", height: "100%" }}
></div>
<div
id="completethree"
style={{ width: "100%", height: "100%" }}
></div> */}
{/* <WaterLevelPond
config={this.state.WaterLevelPondconfig1}
style={{ width: "20%", height: "100%" }}
/>
<WaterLevelPond
config={this.state.WaterLevelPondconfig2}
style={{ width: "20%", height: "100%" }}
/>
<WaterLevelPond
config={this.state.WaterLevelPondconfig3}
style={{ width: "20%", height: "100%" }}
/> */}
</div>
<div
style={{
display: "flex",
flexDirection: "row",
alignItems: "center",
width: "100%",
height: "50%",
justifyContent: "space-between",
marginBottom: "10px",
}}
>
<Row
gutter={[8, 8]}
style={{ padding: "0px 10px" }}
>
{this.state.meetingData.map((item, index) => (
<Col span={6}>
<div className={styles.gradientThree}>
<div className={styles.gradientNext}>
<div className={styles.gradientNextTwo}>
<div className={styles.gradientText}>
{item.value}
</div>
<div className={styles.gradientName}>
{item.name}
</div>
</div>
</div>
</div>
</Col>
))}
</Row>
</div>
</div>
</div>
<div style={{ height: "10px" }}></div>
<div className={styles.risklevelOne}>
{/* <BorderBox10> */}
<div className={styles.title}>
<div className={styles.circle}></div>
<div className={styles.titlename}>
安全任务完成情况
</div>
</div>
<div
style={{
display: "flex",
flexDirection: "column",
alignItems: "center",
justifyContent: "center",
width: "100%",
height: "100%",
}}
>
<div
className={styles.scrollboard}
style={{ marginTop: "20px" }}
>
<ScrollBoard
config={this.state.safescrollConfig}
style={{ width: "100%", height: "100%" }}
/>
</div>
</div>
{/* </BorderBox10> */}
</div>
</Col>
</Row>
</div>
<div className={styles.rowTwo}>
<Row style={{ width: "100%", height: "100%" }}>
<Col span={8} className={styles.boxleft}>
<div className={styles.risklevelTwo}>
{/* <BorderBox10> */}
<div className={styles.title}>
<div className={styles.circle}></div>
<div className={styles.titlename}>隐患整改数据</div>
</div>
<div
style={{
display: "flex",
flexDirection: "row",
alignItems: "center",
justifyContent: "center",
width: "100%",
height: "100%",
}}
>
<div className={styles.riskChange}>
<div className={styles.gradient}>
<div className={styles.gradientNext}>
<div className={styles.gradientNextTwo}>
<div className={styles.gradientText}>83</div>
<div className={styles.gradientName}>
隐患数
</div>
</div>
</div>
</div>
<div className={styles.gradient}>
<div className={styles.gradientNext}>
<div className={styles.gradientNextTwo}>
<div className={styles.gradientText}>23</div>
<div className={styles.gradientName}>
延期整改数
</div>
</div>
</div>
</div>
<div className={styles.gradient}>
<div className={styles.gradientNext}>
<div className={styles.gradientNextTwo}>
<div className={styles.gradientText}>56</div>
<div className={styles.gradientName}>
按期整改数
</div>
</div>
</div>
</div>
</div>
<div className={styles.riskChangeTwo}>
<div className={styles.gradientTwo}>
<div className={styles.gradientNext}>
<div className={styles.gradientNextTwo}>
<div className={styles.gradientTextTwo}>
83%
</div>
<div className={styles.gradientNameTwo}>
整改率
</div>
</div>
</div>
</div>
</div>
</div>
{/* </BorderBox10> */}
</div>
</Col>
<Col span={8} className={styles.boxTwo}>
{/* <BorderBox8> */}
<div
style={{
display: "flex",
flexDirection: "column",
justifyContent: "center",
width: "100%",
height: "100%",
alignItems: "center",
}}
>
<div className={styles.title}>
<div className={styles.circle}></div>
<div className={styles.titlename}>
安全生产标准化运行走势图
</div>
</div>
<div
id="opretionTrend"
style={{
display: "flex",
flexDirection: "row",
alignItems: "center",
justifyContent: "center",
width: "100%",
height: "90%",
}}
></div>
</div>
{/* </BorderBox8> */}
</Col>
<Col span={8} className={styles.boxTwo}>
<div
style={{
display: "flex",
flexDirection: "column",
justifyContent: "center",
width: "100%",
height: "100%",
alignItems: "center",
}}
>
<div
style={{
display: "flex",
flexDirection: "column",
justifyContent: "center",
width: "90%",
height: "100%",
alignItems: "center",
}}
>
<div className={styles.title}>
<div className={styles.circle}></div>
<div className={styles.titlename}>
班组完成率TOP5
</div>
</div>
<div className={styles.capsuleChart}>
<CapsuleChart
config={this.state.chartConfig}
style={{ width: "100%", height: "100%" }}
/>
</div>
</div>
</div>
</Col>
</Row>
</div>
</div>
</div>
</div>
</FullScreenContainer>
</React.Fragment>
);
}
}
export default withRouter(connect(({ login }) => ({ login }))(FullScreen));