diff --git a/yanzhu-bigscreen/src/api/index.js b/yanzhu-bigscreen/src/api/index.js
index 2e81d2d3..6c42d644 100644
--- a/yanzhu-bigscreen/src/api/index.js
+++ b/yanzhu-bigscreen/src/api/index.js
@@ -1,18 +1,19 @@
-
-import {axios,download} from '@/utils/request'
-import project from './project'
-import weather from './weather'
-import detail  from './detail'
-import dict from './dict'
-import greenCarbon from './greenCarbon'
-import videoMonitor from './videoMonitor'
+import { axios, download } from "@/utils/request";
+import project from "./project";
+import weather from "./weather";
+import detail from "./detail";
+import dict from "./dict";
+import greenCarbon from "./greenCarbon";
+import videoMonitor from "./videoMonitor";
+import safety from "./safety";
 export default {
-    http:axios,
-    downFile:download,
-    project,
-    weather,
-    detail,
-    dict,
-    greenCarbon,
-    videoMonitor
-}
\ No newline at end of file
+  http: axios,
+  downFile: download,
+  project,
+  weather,
+  detail,
+  dict,
+  greenCarbon,
+  videoMonitor,
+  safety,
+};
diff --git a/yanzhu-bigscreen/src/api/safety.js b/yanzhu-bigscreen/src/api/safety.js
new file mode 100644
index 00000000..603ddabe
--- /dev/null
+++ b/yanzhu-bigscreen/src/api/safety.js
@@ -0,0 +1,42 @@
+import request from "@/utils/request";
+
+const groupByProblemType = (data) => {
+  return request({
+    url: `/manage/problemmodify/groupByProblemType`,
+    method: "post",
+    data,
+  });
+};
+
+const groupByDangerType = (data) => {
+  return request({
+    url: `/manage/problemmodify/groupByDangerType`,
+    method: "post",
+    data,
+  });
+};
+
+const listCountForBG = (data) => {
+  return request({
+    url: `/manage/problemmodify/listCountForBG`,
+    method: "get",
+    params: data,
+  });
+};
+
+const listForBG = (data) => {
+  data.pageSize = 5;
+  data.pageNum = 1;
+  return request({
+    url: `/manage/problemmodify/listForBG`,
+    method: "get",
+    params: data,
+  });
+};
+
+export default {
+  groupByProblemType,
+  groupByDangerType,
+  listCountForBG,
+  listForBG,
+};
diff --git a/yanzhu-bigscreen/src/assets/icons/svg/notesearch.svg b/yanzhu-bigscreen/src/assets/icons/svg/notesearch.svg
new file mode 100644
index 00000000..9042c1e1
--- /dev/null
+++ b/yanzhu-bigscreen/src/assets/icons/svg/notesearch.svg
@@ -0,0 +1,8 @@
+<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg 
+style="width: 1em;height: 1em;vertical-align: middle;fill: currentColor;overflow: hidden;"
+viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="3395">
+<path
+    d="M90.664027 1023.902729C40.639065 1023.902729 0.048635 980.752543 0.048635 926.193155V91.273615C0.048635 41.980012 41.736104 0 90.664027 0h777.288443c48.927923 0 83.374937 41.980012 83.374937 91.273615V480.502924h-74.01354V72.989637H73.842768v877.630911H512V1023.902729H90.664027zM658.271818 753.299865a95.369226 95.369226 0 0 0 95.076682 95.076682 95.369226 95.369226 0 0 0 95.076682-95.076682A95.369226 95.369226 0 0 0 753.3485 658.223183 95.369226 95.369226 0 0 0 658.271818 753.299865z m353.538986 262.045963a33.78879 33.78879 0 0 1-0.804495 0.804495l-5.850873 2.413485a15.139133 15.139133 0 0 0-4.241883 1.755262c-5.19265 2.632893-7.67927 3.510524-11.701745 3.510523a67.138765 67.138765 0 0 1-11.921153-0.731359 26.840879 26.840879 0 0 1-15.065998-6.947911l-123.014599-122.210104a171.138028 171.138028 0 0 1-89.079538 24.281121c-94.857274 0-167.627504-72.331414-167.627504-166.603601 0-94.272187 72.77023-166.603601 167.627504-166.603601 94.857274 0 167.627504 72.40455 167.627504 166.603601 0 34.958965-10.01962 67.723852-28.59614 95.076682l121.844425 121.03993c13.457007 12.87192 13.822687 34.227606 0.804495 47.538341zM186.545204 475.529682a36.567955 36.567955 0 0 1 36.567955-36.567955h511.951364a36.567955 36.567955 0 0 1 0 73.135909h-511.951364a36.567955 36.567955 0 0 1-36.567955-36.567954z m0-219.407728a36.567955 36.567955 0 0 1 36.567955-36.567954h511.951364a36.567955 36.567955 0 0 1 0 73.135909h-511.951364a36.567955 36.567955 0 0 1-36.567955-36.567955z">
+</path>
+</svg>
\ No newline at end of file
diff --git a/yanzhu-bigscreen/src/components/header.vue b/yanzhu-bigscreen/src/components/header.vue
index bb6c20db..edba6942 100644
--- a/yanzhu-bigscreen/src/components/header.vue
+++ b/yanzhu-bigscreen/src/components/header.vue
@@ -92,7 +92,7 @@
             <el-col :span="8" class="header-center">
                 <img class="prj-logo" :src="selProject.setting.orgLogo"
                     v-if="selProject && selProject.setting && selProject.setting.orgLogo" />
-                数字建安施工管理平台
+                {{ selProject?.setting?.orgName || '数字建安施工管理平台' }}
             </el-col>
             <el-col :span="8">
                 <div class="head-title-tab" style="display: inline-block">
@@ -203,6 +203,9 @@ export default {
                 case 309:
                     this.$router.push("/videoMonitor");
                     break;
+                case 301:
+                    this.$router.push("/safetyCheck");
+                    break;
                 case 4:
                     this.$router.push("/prjQuality");
                     break;
@@ -309,6 +312,7 @@ export default {
             padding: 5px 40px;
             position: relative;
             top: -8px;
+
             .prj-logo {
                 width: 40px;
                 height: 40px;
@@ -362,12 +366,13 @@ export default {
     .header-center {
         font-size: 52px !important;
         margin-top: 10px;
+
         .prj-logo {
-                width: 50px;
-                height: 50px;
-                vertical-align: middle;
-                border-radius: 25px;
-            }
+            width: 50px;
+            height: 50px;
+            vertical-align: middle;
+            border-radius: 25px;
+        }
     }
 
     .header-title-user-info {
diff --git a/yanzhu-bigscreen/src/components/module/module-one-3-1.vue b/yanzhu-bigscreen/src/components/module/module-one-3-1.vue
new file mode 100644
index 00000000..a411c9bb
--- /dev/null
+++ b/yanzhu-bigscreen/src/components/module/module-one-3-1.vue
@@ -0,0 +1,42 @@
+<template>
+    <div class="screen-one-3-1 screen-module">
+        <div class="module-title"><span>{{ label || '' }}</span></div>
+        <div class="module-ctx">
+            <slot></slot>
+        </div>
+    </div>
+
+</template>
+
+<script>
+export default {
+    props: {
+        label: {
+            type: String,
+            default: ""
+        }
+    }
+};
+</script>
+<style lang="less" scoped>
+.screen-one-3-1 {
+    height: calc(33% - 20px);
+    margin: 20px;
+    position: relative;
+
+    &::after {
+        content: " ";
+        display: block;
+        position: absolute;
+        width: 100%;
+        height: 26px;
+        top: 0px;
+        background-repeat: no-repeat;
+    }
+
+    .module-title {
+        position: relative;
+        z-index: 9;
+    }
+}
+</style>
\ No newline at end of file
diff --git a/yanzhu-bigscreen/src/components-old/project-overview-chart.vue b/yanzhu-bigscreen/src/components/project-overview-chart.vue
similarity index 100%
rename from yanzhu-bigscreen/src/components-old/project-overview-chart.vue
rename to yanzhu-bigscreen/src/components/project-overview-chart.vue
diff --git a/yanzhu-bigscreen/src/router/index.js b/yanzhu-bigscreen/src/router/index.js
index efe540f3..58e1450d 100644
--- a/yanzhu-bigscreen/src/router/index.js
+++ b/yanzhu-bigscreen/src/router/index.js
@@ -10,7 +10,7 @@ const routes = [
     meta: { nav: 1 },
     component: () =>
       import(/* webpackChunkName: "index" */ "../views/index.vue"),
-  },  
+  },
   {
     path: "/detail",
     name: "detail",
@@ -38,23 +38,30 @@ const routes = [
     meta: { nav: 23 },
     component: () =>
       import(/* webpackChunkName: "progress" */ "../views/projectProgress.vue"),
-  },  
+  },
   {
     path: "/greenCarbon",
     name: "greenCarbon",
     meta: { nav: 23 },
     component: () =>
       import(/* webpackChunkName: "progress" */ "../views/greenCarbon.vue"),
-  },  
+  },
   {
     path: "/videoMonitor",
     name: "videoMonitor",
-    meta: { nav: 23 },
+    meta: { nav: 309 },
     component: () =>
-      import(/* webpackChunkName: "videoMonitor" */ "../views/videoMonitor.vue"),
-  },  
-
-  
+      import(
+        /* webpackChunkName: "videoMonitor" */ "../views/videoMonitor.vue"
+      ),
+  },
+  {
+    path: "/safetyCheck",
+    name: "safetyCheck",
+    meta: { nav: 301 },
+    component: () =>
+      import(/* webpackChunkName: "safetyCheck" */ "../views/safetyCheck.vue"),
+  },
 ];
 const router = new VueRouter({
   mode: "hash",
diff --git a/yanzhu-bigscreen/src/utils/request.js b/yanzhu-bigscreen/src/utils/request.js
index 812e5c20..ba7eefa3 100644
--- a/yanzhu-bigscreen/src/utils/request.js
+++ b/yanzhu-bigscreen/src/utils/request.js
@@ -1,160 +1,199 @@
-import axios from 'axios'
-import { Notification, MessageBox, Message, Loading } from 'element-ui'
-import { getToken } from '@/utils/auth'
-import errorCode from '@/utils/errorCode'
+import axios from "axios";
+import { Notification, MessageBox, Message, Loading } from "element-ui";
+import { getToken } from "@/utils/auth";
+import errorCode from "@/utils/errorCode";
 import { tansParams, blobValidate } from "@/utils/ruoyi";
-import cache from '@/plugins/cache'
-import { saveAs } from 'file-saver'
-import Cookies from 'js-cookie'
+import cache from "@/plugins/cache";
+import { saveAs } from "file-saver";
+import Cookies from "js-cookie";
 let downloadLoadingInstance;
 // 是否显示重新登录
 export let isRelogin = { show: false };
 
-axios.defaults.headers['Content-Type'] = 'application/json;charset=utf-8'
+axios.defaults.headers["Content-Type"] = "application/json;charset=utf-8";
 // 创建axios实例
 const service = axios.create({
   // axios中请求配置有baseURL选项,表示请求URL公共部分
   baseURL: process.env.VUE_APP_BASE_API,
   // 超时
-  timeout: 200000
-})
+  timeout: 200000,
+});
 
 // request拦截器
-service.interceptors.request.use(config => { 
-  // 是否需要设置 token
-  const isToken = (config.headers || {}).isToken === false
-  // 是否需要防止数据重复提交
-  const isRepeatSubmit = (config.headers || {}).repeatSubmit === false
-  if (getToken() && !isToken) {
-    config.headers['Authorization'] = 'Bearer ' + getToken() // 让每个请求携带自定义token 请根据实际情况自行修改
-  }
-  config.headers["proType"]=localStorage.getItem("proType")||"0";
-  // get请求映射params参数
-  if (config.method === 'get' && config.params) {
-    let url = config.url + '?' + tansParams(config.params);
-    url = url.slice(0, -1);
-    config.params = {};
-    config.url = url;
-  }
-  if (!isRepeatSubmit && (config.method === 'post' || config.method === 'put')) {    
-    const requestObj = {
-      url: config.url,
-      data: typeof config.data === 'object' ? JSON.stringify(config.data) : config.data,
-      time: new Date().getTime()
+service.interceptors.request.use(
+  (config) => {
+    // 是否需要设置 token
+    const isToken = (config.headers || {}).isToken === false;
+    // 是否需要防止数据重复提交
+    const isRepeatSubmit = (config.headers || {}).repeatSubmit === false;
+    if (getToken() && !isToken) {
+      config.headers["Authorization"] = "Bearer " + getToken(); // 让每个请求携带自定义token 请根据实际情况自行修改
     }
-    const sessionObj = cache.session.getJSON('sessionObj')
-    if (sessionObj === undefined || sessionObj === null || sessionObj === '') {
-      cache.session.setJSON('sessionObj', requestObj)
-    } else {
-      const s_url = sessionObj.url;                  // 请求地址
-      const s_data = sessionObj.data;                // 请求数据
-      const s_time = sessionObj.time;                // 请求时间
-      const interval = 1000;                         // 间隔时间(ms),小于此时间视为重复提交
-      if (s_data === requestObj.data && requestObj.time - s_time < interval && s_url === requestObj.url) {
-        const message = '数据正在处理,请勿重复提交';
-        console.warn("--->",s_data,requestObj.data,s_url)
-        return Promise.reject(new Error(message))
+    config.headers["proType"] = localStorage.getItem("proType") || "0";
+    // get请求映射params参数
+    if (config.method === "get" && config.params) {
+      let url = config.url + "?" + tansParams(config.params);
+      url = url.slice(0, -1);
+      config.params = {};
+      config.url = url;
+    }
+    if (
+      !isRepeatSubmit &&
+      (config.method === "post" || config.method === "put")
+    ) {
+      const requestObj = {
+        url: config.url,
+        data:
+          typeof config.data === "object"
+            ? JSON.stringify(config.data)
+            : config.data,
+        time: new Date().getTime(),
+      };
+      const sessionObj = cache.session.getJSON("sessionObj");
+      if (
+        sessionObj === undefined ||
+        sessionObj === null ||
+        sessionObj === ""
+      ) {
+        cache.session.setJSON("sessionObj", requestObj);
       } else {
-        cache.session.setJSON('sessionObj', requestObj)
+        const s_url = sessionObj.url; // 请求地址
+        const s_data = sessionObj.data; // 请求数据
+        const s_time = sessionObj.time; // 请求时间
+        const interval = 1000; // 间隔时间(ms),小于此时间视为重复提交
+        if (
+          s_data === requestObj.data &&
+          requestObj.time - s_time < interval &&
+          s_url === requestObj.url
+        ) {
+          const message = "数据正在处理,请勿重复提交";
+          console.warn("--->", s_data, requestObj.data, s_url);
+          return Promise.reject(new Error(message));
+        } else {
+          cache.session.setJSON("sessionObj", requestObj);
+        }
       }
     }
+    return config;
+  },
+  (error) => {
+    console.log(error);
+    Promise.reject(error);
   }
-  return config
-}, error => {
-    console.log(error)
-    Promise.reject(error)
-})
+);
 
 // 响应拦截器
-service.interceptors.response.use(res => {
+service.interceptors.response.use(
+  (res) => {
     // 未设置状态码则默认成功状态
     const code = res.data.code || 200;
     // 获取错误信息
-    const msg = errorCode[code] || res.data.msg || errorCode['default']
+    const msg = errorCode[code] || res.data.msg || errorCode["default"];
     // 二进制数据则直接返回
-    if (res.request.responseType ===  'blob' || res.request.responseType ===  'arraybuffer') {
-      return res.data
+    if (
+      res.request.responseType === "blob" ||
+      res.request.responseType === "arraybuffer"
+    ) {
+      return res.data;
     }
     if (code === 401) {
       if (!isRelogin.show) {
         isRelogin.show = true;
-        MessageBox.confirm('登录状态已过期,您可以继续留在该页面,或者重新登录', '系统提示', { confirmButtonText: '重新登录', cancelButtonText: '取消', type: 'warning' }).then(() => {
-          isRelogin.show = false;          
-          if(location.href.indexOf("localhost")>=0){
-            //location.href = `/#/login?redirect=${encodeURIComponent("/xdbs/")}`;
-            location.href=`http://localhost/#/login?redirect=${encodeURI('http://localhost:3000/xdbs/')}`
-          }else{
-            location.href = window.XDAPP+`#/login?redirect=${encodeURIComponent(window.XDBSAPP)}`;
+        MessageBox.confirm(
+          "登录状态已过期,您可以继续留在该页面,或者重新登录",
+          "系统提示",
+          {
+            confirmButtonText: "重新登录",
+            cancelButtonText: "取消",
+            type: "warning",
           }
-      }).catch(() => {
-        isRelogin.show = false;
-      });
-    }
-      return Promise.reject('error')
+        )
+          .then(() => {
+            isRelogin.show = false;
+            if (location.href.indexOf("localhost") >= 0) {
+              //location.href = `/#/login?redirect=${encodeURIComponent("/xdbs/")}`;
+              location.href = `http://localhost/#/login?redirect=${encodeURI(
+                "http://localhost:3000/xdbs/"
+              )}`;
+            } else {
+              location.href =
+                window.XDAPP +
+                `#/login?redirect=${encodeURIComponent(window.XDBSAPP)}`;
+            }
+          })
+          .catch(() => {
+            isRelogin.show = false;
+          });
+      }
+      return Promise.reject("error");
     } else if (code === 500) {
-      if(msg.indexOf('重复提交')==-1){
-        Message({ message: msg, type: 'error' })
+      if (msg.indexOf("重复提交") == -1) {
+        Message({ message: msg, type: "error" });
       }
-      return Promise.reject(new Error(msg))
+      return Promise.reject(new Error(msg));
     } else if (code === 601) {
-      if(msg.indexOf('重复提交')==-1){
-        Message({ message: msg, type: 'warning' })
+      if (msg.indexOf("重复提交") == -1) {
+        Message({ message: msg, type: "warning" });
       }
-      return Promise.reject('error')
+      return Promise.reject("error");
     } else if (code !== 200) {
-      if(msg.indexOf('重复提交')==-1){
-        Notification.error({ title: msg })
+      if (msg.indexOf("重复提交") == -1) {
+        Notification.error({ title: msg });
       }
-      return Promise.reject('error')
+      return Promise.reject("error");
     } else {
-      return res.data
+      return res.data;
     }
   },
-  error => {
-    console.log('err' + error)
+  (error) => {
+    console.log("err" + error);
     let { message } = error;
     if (message == "Network Error") {
       message = "后端接口连接异常";
-    }  else if (message.includes("Request failed with status code")) {
+    } else if (message.includes("Request failed with status code")) {
       message = "系统接口" + message.substr(message.length - 3) + "异常";
     }
-    if(message.indexOf('重复提交')==-1){
-      Message({ message: message, type: 'error', duration: 5 * 1000 })
+    if (message.indexOf("重复提交") == -1) {
+      Message({ message: message, type: "error", duration: 5 * 1000 });
     }
-    return Promise.reject(error)
+    return Promise.reject(error);
   }
-)
+);
 
 // 通用下载方法
-export function download(url, params, filename, config={}) {
-  downloadLoadingInstance = Loading.service({ text: "正在下载数据,请稍候", spinner: "el-icon-loading", background: "rgba(0, 0, 0, 0.7)", })
+export function download(url, params, filename, config = {}) {
+  downloadLoadingInstance = Loading.service({
+    text: "正在下载数据,请稍候",
+    spinner: "el-icon-loading",
+    background: "rgba(0, 0, 0, 0.7)",
+  });
   return axios({
-    url:url,
-    method:"get",
-    params:params||{},
-    responseType: 'blob',    
-    ...config
-  }).then(async ({data}) => {
-
-    const isBlob = blobValidate(data);
-    if (isBlob) {
-      const blob = new Blob([data])
-      saveAs(blob, filename)
-    } else {
-      const resText = await data.text();
-      const rspObj = JSON.parse(resText);
-      const errMsg = errorCode[rspObj.code] || rspObj.msg || errorCode['default']
-      Message.error(errMsg);
-    }
-    downloadLoadingInstance.close();
-  }).catch((r) => {
-    console.error(r)
-    Message.error('下载文件出现错误,请联系管理员!')
-    downloadLoadingInstance.close();
+    url: url,
+    method: "get",
+    params: params || {},
+    responseType: "blob",
+    ...config,
   })
+    .then(async ({ data }) => {
+      const isBlob = blobValidate(data);
+      if (isBlob) {
+        const blob = new Blob([data]);
+        saveAs(blob, filename);
+      } else {
+        const resText = await data.text();
+        const rspObj = JSON.parse(resText);
+        const errMsg =
+          errorCode[rspObj.code] || rspObj.msg || errorCode["default"];
+        Message.error(errMsg);
+      }
+      downloadLoadingInstance.close();
+    })
+    .catch((r) => {
+      console.error(r);
+      Message.error("下载文件出现错误,请联系管理员!");
+      downloadLoadingInstance.close();
+    });
 }
 
-
-
-export { axios,service}
-export default service
+export { axios, service };
+export default service;
diff --git a/yanzhu-bigscreen/src/views/greenCarbon.vue b/yanzhu-bigscreen/src/views/greenCarbon.vue
index 0b81f845..b1b4fabb 100644
--- a/yanzhu-bigscreen/src/views/greenCarbon.vue
+++ b/yanzhu-bigscreen/src/views/greenCarbon.vue
@@ -51,9 +51,9 @@
                     </el-col>
                     <el-col :span="8">
                         <div class="chart-bg power-chart2">
-                            <div class="chart-proc" :style="'height:'+leftPowerData[3]+'%'"></div>
+                            <div class="chart-proc" :style="'height:' + leftPowerData[3] + '%'"></div>
                             <div class="data-top">
-                                <div class="chart-data led-number">{{ (leftPowerData[1]/1000.0).toFixed(1) }}</div>
+                                <div class="chart-data led-number">{{ (leftPowerData[1] / 1000.0).toFixed(1) }}</div>
                                 <div class="chart-unit">(T CO₂)</div>
                             </div>
                             <div class="data-bottom">
@@ -63,9 +63,9 @@
                     </el-col>
                     <el-col :span="8">
                         <div class="chart-bg power-chart3">
-                            <div class="chart-proc" :style="'height:'+leftPowerData[4]+'%;'"></div>
+                            <div class="chart-proc" :style="'height:' + leftPowerData[4] + '%;'"></div>
                             <div class="data-top">
-                                <div class="chart-data led-number">{{ (leftPowerData[2]/1000.0).toFixed(1) }}</div>
+                                <div class="chart-data led-number">{{ (leftPowerData[2] / 1000.0).toFixed(1) }}</div>
                                 <div class="chart-unit">(T CO₂)</div>
                             </div>
                             <div class="data-bottom">
@@ -87,7 +87,7 @@
                                 碳排放预估总量(T CO₂)
                             </div>
                             <div class="td-number">
-                                <people-number :number="(totalData[0]/1000.0).toFixed(1)" unit=""></people-number>
+                                <people-number :number="(totalData[0] / 1000.0).toFixed(1)" unit=""></people-number>
                             </div>
                         </div>
                     </el-col>
@@ -98,7 +98,7 @@
                                 碳排放监测累计总量(T CO₂)
                             </div>
                             <div class="td-number">
-                                <people-number :number="(totalData[1]/1000.0).toFixed(1)" unit=""></people-number>
+                                <people-number :number="(totalData[1] / 1000.0).toFixed(1)" unit=""></people-number>
                             </div>
                         </div>
                     </el-col>
@@ -109,7 +109,7 @@
                                 当月碳排放监测量(T CO₂)
                             </div>
                             <div class="td-number">
-                                <people-number :number="(totalData[2]/1000.0).toFixed(1)" unit=""></people-number>
+                                <people-number :number="(totalData[2] / 1000.0).toFixed(1)" unit=""></people-number>
                             </div>
                         </div>
                     </el-col>
@@ -167,8 +167,8 @@ export default {
             curMonthData: [],
             yearMonthData: {},
             leftOilData: [0, 0, 0, 0],
-            leftPowerData:[0,0,0,40,60],
-            totalData:[0,0,0],
+            leftPowerData: [0, 0, 0, 40, 60],
+            totalData: [0, 0, 0],
         }
     },
     mounted() {
@@ -232,19 +232,19 @@ export default {
                     (Math.round(tmps[0].sumEstimateValue / 10000) + 1) * 10,
                 ] : [0, 0, 0, 0];
                 tmps = this.allData.filter(it => it.factorType == 3);
-                this.leftPowerData=tmps.length>0?[
+                this.leftPowerData = tmps.length > 0 ? [
                     tmps[0].practicalValue,
                     tmps[0].sumPracticalValue,
                     tmps[0].sumEmissionReduction,
-                    tmps[0].sumEstimateValue==0?0:tmps[0].sumPracticalValue*100/tmps[0].sumEstimateValue,
-                    tmps[0].sumEstimateValue==0?0:tmps[0].sumEmissionReduction*100/tmps[0].sumEstimateValue,
+                    tmps[0].sumEstimateValue == 0 ? 0 : tmps[0].sumPracticalValue * 100 / tmps[0].sumEstimateValue,
+                    tmps[0].sumEstimateValue == 0 ? 0 : tmps[0].sumEmissionReduction * 100 / tmps[0].sumEstimateValue,
 
-                ]:[0,0,0,0,0];
+                ] : [0, 0, 0, 0, 0];
                 tmps = this.allData.filter(it => it.factorType == 0);
-                this.totalData[0]=tmps.length>0?tmps[0].sumEstimateValue:0;
-                this.totalData[1]=tmps.length>0?tmps[0].sumPracticalValue:0;
-                tmps=this.curMonthData.filter(it=>it.factorType==0);
-                this.totalData[2]=tmps.length>0?tmps[0].emissionReduction:0
+                this.totalData[0] = tmps.length > 0 ? tmps[0].sumEstimateValue : 0;
+                this.totalData[1] = tmps.length > 0 ? tmps[0].sumPracticalValue : 0;
+                tmps = this.curMonthData.filter(it => it.factorType == 0);
+                this.totalData[2] = tmps.length > 0 ? tmps[0].emissionReduction : 0
                 this.chartKey++;
             });
         },
@@ -467,19 +467,19 @@ export default {
             return option;
         },
         renderChart4() {
-            let sum=(objs)=>{
-                let res=0;
-                objs.forEach(it=>{
-                    res+=(it||0);
+            let sum = (objs) => {
+                let res = 0;
+                objs.forEach(it => {
+                    res += (it || 0);
                 });
                 return res;
             }
             let is1K = this.$dpi() == "1K";
             let is2K = this.$dpi() == "2K";
-            let datas=[0,0,0];
-            datas[0]=this.yearMonthData.buildData?sum(this.yearMonthData.buildData.emissionReduction.datas):0;
-            datas[1]=this.yearMonthData.oilData?sum(this.yearMonthData.oilData.emissionReduction.datas):0;
-            datas[2]=this.yearMonthData.powerData?sum(this.yearMonthData.powerData.emissionReduction.datas):0;
+            let datas = [0, 0, 0];
+            datas[0] = this.yearMonthData.buildData ? sum(this.yearMonthData.buildData.emissionReduction.datas) : 0;
+            datas[1] = this.yearMonthData.oilData ? sum(this.yearMonthData.oilData.emissionReduction.datas) : 0;
+            datas[2] = this.yearMonthData.powerData ? sum(this.yearMonthData.powerData.emissionReduction.datas) : 0;
             let option = {
                 legend: {
 
@@ -555,7 +555,7 @@ export default {
                 },
                 tooltip: {
                     trigger: "axis",
-                    valueFormatter: (v) => { return v?v:'- ' + 'T CO₂' },
+                    valueFormatter: (v) => { return v ? v : '- ' + 'T CO₂' },
                     textStyle: {
                         fontSize: is1K ? 12 : is2K ? 14 : 24
                     },
@@ -576,7 +576,7 @@ export default {
                     {
                         type: "category",
                         boundaryGap: false,
-                        data: this.yearMonthData?.totalData?.emissionReduction?.titles||[],
+                        data: this.yearMonthData?.totalData?.emissionReduction?.titles || [],
                         axisLabel: {
                             fontSize: is1K ? 12 : is2K ? 14 : 24,
                             color: "#a2c8f9"
@@ -603,7 +603,7 @@ export default {
                         },
                     },
                 ],
-                series: [                   
+                series: [
                     {
                         name: '碳预估',
                         type: "line",
@@ -619,7 +619,7 @@ export default {
                         itemStyle: {
                             normal: { areaStyle: { type: "default", color: "#7ddff2", opacity: 0.1 } },
                         },
-                        data: this.yearMonthData?.totalData?.estimate?.datas||[],
+                        data: this.yearMonthData?.totalData?.estimate?.datas || [],
                     },
                     {
                         name: '碳排放',
@@ -636,7 +636,7 @@ export default {
                         itemStyle: {
                             normal: { areaStyle: { type: "default", color: "#006594", opacity: 0.1 } },
                         },
-                        data: this.yearMonthData?.totalData?.practical?.datas||[],
+                        data: this.yearMonthData?.totalData?.practical?.datas || [],
                     },
                     {
                         name: '碳减排',
@@ -653,7 +653,7 @@ export default {
                         itemStyle: {
                             normal: { areaStyle: { type: "default", color: "#7db800", opacity: 0.1 } },
                         },
-                        data:  this.yearMonthData?.totalData?.emissionReduction?.datas||[],
+                        data: this.yearMonthData?.totalData?.emissionReduction?.datas || [],
                     },
                 ],
             };
@@ -672,7 +672,7 @@ export default {
                 },
                 tooltip: {
                     trigger: "axis",
-                    valueFormatter: (v) => { return v?v:' - ' + 'T CO₂' },
+                    valueFormatter: (v) => { return v ? v : ' - ' + 'T CO₂' },
                     textStyle: {
                         fontSize: is1K ? 12 : is2K ? 14 : 24
                     },
@@ -693,7 +693,7 @@ export default {
                     {
                         type: "category",
                         boundaryGap: false,
-                        data: this.yearMonthData?.buildData?.emissionReduction?.titles||[],
+                        data: this.yearMonthData?.buildData?.emissionReduction?.titles || [],
                         axisLabel: {
                             fontSize: is1K ? 12 : is2K ? 14 : 24,
                             color: "#a2c8f9"
@@ -720,7 +720,7 @@ export default {
                         },
                     },
                 ],
-                series: [                   
+                series: [
                     {
                         name: '碳预估',
                         type: "bar",
@@ -736,7 +736,7 @@ export default {
                         itemStyle: {
                             normal: { areaStyle: { type: "default", color: "#7ddff2", opacity: 0.1 } },
                         },
-                        data:this.yearMonthData?.buildData?.estimate?.datas||[],
+                        data: this.yearMonthData?.buildData?.estimate?.datas || [],
                     },
                     {
                         name: '碳排放',
@@ -753,7 +753,7 @@ export default {
                         itemStyle: {
                             normal: { areaStyle: { type: "default", color: "#006594", opacity: 0.1 } },
                         },
-                        data: this.yearMonthData?.buildData?.practical?.datas||[],
+                        data: this.yearMonthData?.buildData?.practical?.datas || [],
                     },
                     {
                         name: '碳减排',
@@ -770,10 +770,11 @@ export default {
                         itemStyle: {
                             normal: { areaStyle: { type: "default", color: "#7db800", opacity: 0.1 } },
                         },
-                        data: this.yearMonthData?.buildData?.emissionReduction?.datas||[],
+                        data: this.yearMonthData?.buildData?.emissionReduction?.datas || [],
                     },
                 ],
             };
+            console.log(option)
             return option;
         },
         renderChart7() {
@@ -789,7 +790,7 @@ export default {
                 },
                 tooltip: {
                     trigger: "axis",
-                    valueFormatter: (v) => { return v?v:' - ' + 'T CO₂' },
+                    valueFormatter: (v) => { return v ? v : ' - ' + 'T CO₂' },
                     textStyle: {
                         fontSize: is1K ? 12 : is2K ? 14 : 24
                     },
@@ -810,7 +811,7 @@ export default {
                     {
                         type: "category",
                         boundaryGap: false,
-                        data: this.yearMonthData?.oilData?.emissionReduction?.titles||[],
+                        data: this.yearMonthData?.oilData?.emissionReduction?.titles || [],
                         axisLabel: {
                             fontSize: is1K ? 12 : is2K ? 14 : 24,
                             color: "#a2c8f9"
@@ -837,7 +838,7 @@ export default {
                         },
                     },
                 ],
-                series: [                   
+                series: [
                     {
                         name: '碳预估',
                         type: "line",
@@ -853,7 +854,7 @@ export default {
                         itemStyle: {
                             normal: { areaStyle: { type: "default", color: "#7ddff2", opacity: 0.1 } },
                         },
-                        data: this.yearMonthData?.oilData?.estimate?.datas||[],
+                        data: this.yearMonthData?.oilData?.estimate?.datas || [],
                     },
                     {
                         name: '碳排放',
@@ -870,7 +871,7 @@ export default {
                         itemStyle: {
                             normal: { areaStyle: { type: "default", color: "#006594", opacity: 0.1 } },
                         },
-                        data:  this.yearMonthData?.oilData?.practical?.datas||[],
+                        data: this.yearMonthData?.oilData?.practical?.datas || [],
                     },
                     {
                         name: '碳减排',
@@ -887,7 +888,7 @@ export default {
                         itemStyle: {
                             normal: { areaStyle: { type: "default", color: "#7db800", opacity: 0.1 } },
                         },
-                        data: this.yearMonthData?.oilData?.emissionReduction?.datas||[],
+                        data: this.yearMonthData?.oilData?.emissionReduction?.datas || [],
                     },
                 ],
             };
@@ -906,7 +907,7 @@ export default {
                 },
                 tooltip: {
                     trigger: "axis",
-                    valueFormatter: (v) => { return v?v:' - ' + 'T CO₂' },
+                    valueFormatter: (v) => { return v ? v : ' - ' + 'T CO₂' },
                     textStyle: {
                         fontSize: is1K ? 12 : is2K ? 14 : 24
                     },
@@ -927,7 +928,7 @@ export default {
                     {
                         type: "category",
                         boundaryGap: false,
-                        data: this.yearMonthData?.powerData?.emissionReduction?.titles||[],
+                        data: this.yearMonthData?.powerData?.emissionReduction?.titles || [],
                         axisLabel: {
                             fontSize: is1K ? 12 : is2K ? 14 : 24,
                             color: "#a2c8f9"
@@ -954,7 +955,7 @@ export default {
                         },
                     },
                 ],
-                series: [                   
+                series: [
                     {
                         name: '碳预估',
                         type: "bar",
@@ -970,7 +971,7 @@ export default {
                         itemStyle: {
                             normal: { areaStyle: { type: "default", color: "#7ddff2", opacity: 0.1 } },
                         },
-                        data:this.yearMonthData?.powerData?.estimate?.datas||[],
+                        data: this.yearMonthData?.powerData?.estimate?.datas || [],
                     },
                     {
                         name: '碳排放',
@@ -987,7 +988,7 @@ export default {
                         itemStyle: {
                             normal: { areaStyle: { type: "default", color: "#006594", opacity: 0.1 } },
                         },
-                        data: this.yearMonthData?.powerData?.practical?.datas||[],
+                        data: this.yearMonthData?.powerData?.practical?.datas || [],
                     },
                     {
                         name: '碳减排',
@@ -1004,7 +1005,7 @@ export default {
                         itemStyle: {
                             normal: { areaStyle: { type: "default", color: "#7db800", opacity: 0.1 } },
                         },
-                        data: this.yearMonthData?.powerData?.emissionReduction?.datas||[],
+                        data: this.yearMonthData?.powerData?.emissionReduction?.datas || [],
                     },
                 ],
             };
diff --git a/yanzhu-bigscreen/src/views/init.js b/yanzhu-bigscreen/src/views/init.js
index 54ce7f96..b56dd5b4 100644
--- a/yanzhu-bigscreen/src/views/init.js
+++ b/yanzhu-bigscreen/src/views/init.js
@@ -1,88 +1,99 @@
-import Vue from 'vue'
-import Api from '../api/index'
-import dayjs from 'dayjs'
-import './style/index.less'
-import dayfilter  from '@/utils/dayfilter'
-import {tryToJson} from '../utils/tools'
-import { Loading } from 'element-ui';
+import Vue from "vue";
+import Api from "../api/index";
+import dayjs from "dayjs";
+import "./style/index.less";
+import dayfilter from "@/utils/dayfilter";
+import { tryToJson } from "../utils/tools";
+import { Loading } from "element-ui";
 
-import moduleOne11 from '../components/module/module-one-1-1.vue'
-import moduleOne12 from '../components/module/module-one-1-2.vue'
-import moduleOne13 from '../components/module/module-one-1-3.vue'
-import moduleOne21 from '../components/module/module-one-2-1.vue'
-import moduleOne22 from '../components/module/module-one-2-2.vue'
-import moduleOne23 from '../components/module/module-one-2-3.vue'
-import peopleNumber from '@/components/people-number.vue'
-import dictTag from '@/components/DictTag/index.vue'
-import MyDialog from '@/components/MyDialog.vue'
-import MyChart from '@/components/MyChart.vue'
+import moduleOne11 from "../components/module/module-one-1-1.vue";
+import moduleOne12 from "../components/module/module-one-1-2.vue";
+import moduleOne13 from "../components/module/module-one-1-3.vue";
+import moduleOne21 from "../components/module/module-one-2-1.vue";
+import moduleOne22 from "../components/module/module-one-2-2.vue";
+import moduleOne23 from "../components/module/module-one-2-3.vue";
+import moduleOne31 from "../components/module/module-one-3-1.vue";
+import peopleNumber from "@/components/people-number.vue";
+import dictTag from "@/components/DictTag/index.vue";
+import MyDialog from "@/components/MyDialog.vue";
+import MyChart from "@/components/MyChart.vue";
+import projectOverviewChart from "@/components/project-overview-chart.vue";
 //import projectOverviewChart from '../components/project-overview-chart.vue'
 //import peopleNumber from '../components/people-number.vue'
-import header from '../components/header.vue'
+import header from "../components/header.vue";
 Loading.install(Vue);
 //H265Player.install(Vue);
 dayfilter(Vue);
-const vue=new Vue();
-Vue.component("screen-header",header)
-Vue.component("module-one-1-1",moduleOne11)
-Vue.component("module-one-1-2",moduleOne12)
-Vue.component("module-one-1-3",moduleOne13)
-Vue.component("module-one-2-1",moduleOne21)
-Vue.component("module-one-2-2",moduleOne22)
-Vue.component("module-one-2-3",moduleOne23)
-Vue.component("people-number",peopleNumber)
-Vue.component("my-chart",MyChart)
-Vue.component("dict-tag",dictTag)
-Vue.component("MyDialog",MyDialog)
-Vue.prototype.$bus=new Vue();
+const vue = new Vue();
+Vue.component("screen-header", header);
+Vue.component("module-one-1-1", moduleOne11);
+Vue.component("module-one-1-2", moduleOne12);
+Vue.component("module-one-1-3", moduleOne13);
+Vue.component("module-one-2-1", moduleOne21);
+Vue.component("module-one-2-2", moduleOne22);
+Vue.component("module-one-2-3", moduleOne23);
+Vue.component("module-one-3-1", moduleOne31);
+Vue.component("people-number", peopleNumber);
+Vue.component("my-chart", MyChart);
+Vue.component("dict-tag", dictTag);
+Vue.component("MyDialog", MyDialog);
+Vue.component("project-overview-chart", projectOverviewChart);
+Vue.prototype.$bus = new Vue();
 //Vue.component("people-number",peopleNumber)
 //Vue.component("project-overview-chart",projectOverviewChart)
-Vue.prototype.$api=Api;
-Vue.prototype.$bus=vue;
-Vue.prototype.$apiPath=process.env.VUE_APP_BASE_API
-Vue.prototype.$dt=dayjs;
-Vue.prototype.$tryToJson=tryToJson
-Vue.prototype.$toggleFullScreen=(el)=>{
-    if(document.fullscreenElement==el){
-        let screen = document.cancelFullScreen || document.webkitCancelFullScreen || document.mozCancelFullScreen || document.exitFullScreen
-        if (typeof screen != "undefined" && screen) {
-            screen.call(document);
-            return;
-          }
-        
-    }else{
-        let screen = el.requestFullScreen || el.webkitRequestFullScreen || el.mozRequestFullScreen || el.msRequestFullScreen
-        if (typeof screen != "undefined" && screen) {
-            screen.call(el);
-            return;
-          }
+Vue.prototype.$api = Api;
+Vue.prototype.$bus = vue;
+Vue.prototype.$apiPath = process.env.VUE_APP_BASE_API;
+Vue.prototype.$dt = dayjs;
+Vue.prototype.$tryToJson = tryToJson;
+Vue.prototype.$toggleFullScreen = (el) => {
+  if (document.fullscreenElement == el) {
+    let screen =
+      document.cancelFullScreen ||
+      document.webkitCancelFullScreen ||
+      document.mozCancelFullScreen ||
+      document.exitFullScreen;
+    if (typeof screen != "undefined" && screen) {
+      screen.call(document);
+      return;
     }
-}
-Vue.prototype.$dpi=()=>{
-    let w=document.querySelector(".main-app").clientWidth;
-    return w>2561?"4K":w<1920?"1K":"2K";
-}
-Vue.filter('toDate',d=>{
-    return dayjs(d).format("YYYY-MM-DD")
-});
-Vue.filter('toDateTime',d=>{
-    return dayjs(d).format("YYYY-MM-DD HH:mm:ss")
-});
-Vue.filter('toTime',d=>{
-    return dayjs(d).format("HH:mm:ss")
-});
-window.__isfull__=false;
-window.fullscreenInterval=setInterval(()=>{
-    if(document.fullscreenElement){
-        if(!window.__isfull__){
-            vue.$emit("fullscreen",true);
-            window.__isfull__=true;
-        }
-    }else{
-        if(window.__isfull__){
-            vue.$emit("fullscreen",false);
-            window.__isfull__=false;
-        }
+  } else {
+    let screen =
+      el.requestFullScreen ||
+      el.webkitRequestFullScreen ||
+      el.mozRequestFullScreen ||
+      el.msRequestFullScreen;
+    if (typeof screen != "undefined" && screen) {
+      screen.call(el);
+      return;
     }
-},500);
-window.xdcaches={};
+  }
+};
+Vue.prototype.$dpi = () => {
+  let w = document.querySelector(".main-app").clientWidth;
+  return w > 2561 ? "4K" : w < 1920 ? "1K" : "2K";
+};
+Vue.filter("toDate", (d) => {
+  return dayjs(d).format("YYYY-MM-DD");
+});
+Vue.filter("toDateTime", (d) => {
+  return dayjs(d).format("YYYY-MM-DD HH:mm:ss");
+});
+Vue.filter("toTime", (d) => {
+  return dayjs(d).format("HH:mm:ss");
+});
+window.__isfull__ = false;
+window.fullscreenInterval = setInterval(() => {
+  if (document.fullscreenElement) {
+    if (!window.__isfull__) {
+      vue.$emit("fullscreen", true);
+      window.__isfull__ = true;
+    }
+  } else {
+    if (window.__isfull__) {
+      vue.$emit("fullscreen", false);
+      window.__isfull__ = false;
+    }
+  }
+}, 500);
+window.xdcaches = {};
diff --git a/yanzhu-bigscreen/src/views/projectDetail.vue b/yanzhu-bigscreen/src/views/projectDetail.vue
index bc41a961..161a998d 100644
--- a/yanzhu-bigscreen/src/views/projectDetail.vue
+++ b/yanzhu-bigscreen/src/views/projectDetail.vue
@@ -275,7 +275,7 @@
                                             </p>
                                             <div>
                                                 <span class="led-number">{{ selProject.scheduledStartTime | toDate
-                                                    }}</span>
+                                                }}</span>
                                             </div>
                                         </div>
                                     </div>
@@ -291,7 +291,7 @@
                                             </p>
                                             <div>
                                                 <span class="led-number">{{ selProject.plannedCompletionTime | toDate
-                                                    }}</span>
+                                                }}</span>
                                             </div>
                                         </div>
                                     </div>
@@ -306,7 +306,7 @@
                                             </p>
                                             <div>
                                                 <span class="led-number">{{ selProject.actualOperatingTime | toDate
-                                                    }}</span>
+                                                }}</span>
                                             </div>
                                         </div>
                                     </div>
@@ -320,7 +320,8 @@
                                                 合同工期
                                             </p>
                                             <div>
-                                                <span class="led-number">{{ selProject.projectTimeLimit || '' }}</span> 天
+                                                <span class="led-number">{{ selProject.projectTimeLimit || '' }}</span>
+                                                天
                                             </div>
                                         </div>
                                     </div>
@@ -490,7 +491,7 @@
                                     <div class="wi-label">当前风向</div>
                                     <div class="wi-data-unit">
                                         <span class="wi-txt">{{ weatherInfo.windDirection }}{{ weatherInfo.windScale
-                                            }}</span>
+                                        }}</span>
                                     </div>
                                 </div>
                             </el-col>
@@ -854,7 +855,7 @@ export default {
                             }
 
                             .led-number {
-                                font-size: 40px;
+                                font-size: 36px;
                             }
                         }
                     }
@@ -1150,7 +1151,7 @@ export default {
 
 
                                 .led-number {
-                                    font-size: 50px;
+                                    font-size: 48px;
                                 }
                             }
                         }
@@ -1442,7 +1443,7 @@ export default {
                                     font-size: 30px;
 
                                     .led-number {
-                                        font-size: 70px;
+                                        font-size: 60px;
                                     }
                                 }
                             }
@@ -1454,6 +1455,7 @@ export default {
 
         .prj-img-list {
             height: calc(100% - 190px);
+
             .prj-img-nav {
                 .prj-img-nav-item {
                     line-height: 60px;
@@ -1462,6 +1464,7 @@ export default {
                     font-size: 30px;
                 }
             }
+
             .el-carousel {
                 height: 100%;
 
diff --git a/yanzhu-bigscreen/src/views/safetyCheck.vue b/yanzhu-bigscreen/src/views/safetyCheck.vue
new file mode 100644
index 00000000..187685f0
--- /dev/null
+++ b/yanzhu-bigscreen/src/views/safetyCheck.vue
@@ -0,0 +1,505 @@
+<template>
+    <div class="project-safety-check  main-page">
+        <el-col :span="6" class="h100">
+            <module-one-1-1 label="安全隐患排查" class="chart1-module">
+                <el-col :span="12" v-for="(it, idx) in chart1Data" :key="idx">
+                    <div
+                        class="equipment-list-min equipment-list-min_div quality-target-index-min quality-target-index-min_div">
+
+                        <div class="czz-number-img czz-number-img-blue">
+                            <svg-icon icon-class="notesearch"></svg-icon>
+                        </div>
+                        <div>
+                            <div class="equipment-list-data equipment-list-data_div_top">
+                                <span>{{ it.name }}</span>
+                            </div>
+                            <div class="equipment-list-data equipment-list-data_div_bottom">
+                                <span class="sp-data">{{ it.value || 0 }}</span><span class="sp-unit">条</span>
+                            </div>
+                        </div>
+                    </div>
+                </el-col>
+            </module-one-1-1>
+            <module-one-2-1 label="日常巡检">
+                <div class="div-item-chart">
+                    <div class="data-item-chart">
+                        <div class="total-info">{{ item1Data.total }}<br />
+                            <span class="sp-label">问题总数</span>
+                        </div>
+                        <div class="chart-gif chart-overview-gif"></div>
+                        <my-chart :key="itemChartKey1" id="project-safety-check-item1" width="100%" height="100%"
+                            :render="o => renderDataItem1(1)"></my-chart>
+                    </div>
+                    {{ item1Data.infos }}
+                </div>
+            </module-one-2-1>
+        </el-col>
+        <el-col :span="18" class="h100">
+            <module-one-1-3 label="隐患类别统计">
+                <my-chart :key="chartKey2" id="project-safety-check-chart2" width="100%" height="100%"
+                    :render="renderChart2"></my-chart>
+            </module-one-1-3>
+            <el-row class="el-right">
+                <el-col :span="8">
+                    <module-one-2-1 label="周检"></module-one-2-1>
+                </el-col>
+                <el-col :span="8">
+                    <module-one-2-1 label="月检"></module-one-2-1>
+                </el-col>
+                <el-col :span="8">
+                    <module-one-2-1 label="转型检查"></module-one-2-1>
+                </el-col>
+            </el-row>
+        </el-col>
+    </div>
+</template>
+
+<script>
+export default {
+    data() {
+        return {
+            chartKey2: 0,
+            itemChartKey1: 0,
+            dpi: '',
+            selProject: null,
+            legendOpt1: {
+                icon: "rect",
+                textStyle: {
+                    color: "#c3dbfd",
+                    fontSize: 14,
+                    rich: {
+                        name: {
+                            color: "#c3dbfd",
+                            padding: [0, 20, 0, 0],
+                        },
+                        percent: {
+                            color: "#4676FD"
+                        },
+                    },
+                },
+            },
+            overviewText: '问题数',
+            chart1Data: [],
+            chart2Data: [],
+            item1Data: {
+                total: 0,
+                datas: [],
+                infos: [],
+            },
+            item2Data: {
+                total: 0,
+                datas: [],
+                infos: [],
+            },
+            item3Data: {
+                total: 0,
+                datas: [],
+                infos: [],
+            },
+            item4Data: {
+                total: 0,
+                datas: [],
+                infos: [],
+            }
+        }
+    },
+    mounted() {
+        window.safetyApp = this;
+        this.$store.dispatch('ChangeNav', 301);
+        this.$bus.$on('projectChange', prj => {
+            this.selProject = prj;
+            this.init();
+        });
+        this.selProject = this.$store.getters.selProject;
+        this.init();
+        this.dpi = this.$dpi();
+        window.addEventListener("resize", () => {
+            if (this.dpi != this.$dpi()) {
+                this.dpi = this.$dpi();
+                this.chartKey++;
+            }
+        });
+    },
+    methods: {
+        init() {
+            if (!this.selProject) {
+                return;
+            }
+            let postData = {
+                projectId: this.selProject.id,
+                comId: this.selProject.comId
+            };
+            let ajaxs = [
+                this.$api.safety.groupByProblemType(postData),
+                this.$api.safety.groupByDangerType(postData),
+                this.$api.safety.listCountForBG({ ...postData, problemType: 1, infoType: 0 }),
+                this.$api.safety.listForBG({ ...postData, problemType: 1, infoType: 0 }),
+                this.$api.safety.listCountForBG({ ...postData, problemType: 2, infoType: 0 }),
+                this.$api.safety.listForBG({ ...postData, problemType: 2, infoType: 0 }),
+                this.$api.safety.listCountForBG({ ...postData, problemType: 3, infoType: 0 }),
+                this.$api.safety.listForBG({ ...postData, problemType: 3, infoType: 0 }),
+                this.$api.safety.listCountForBG({ ...postData, problemType: 4, infoType: 0 }),
+                this.$api.safety.listForBG({ ...postData, problemType: 4, infoType: 0 }),
+            ];
+            this.$api.http.all(ajaxs).then(res => {
+                this.chart1Data = (res[0].data || []).map(it => {
+                    return {
+                        id: it.nickedInfo,
+                        value: it.id,
+                        name: it.problemType,
+                        data: it
+                    }
+                });
+                this.chart2Data = (res[1].data || []).map(it => {
+                    return {
+                        id: it.nickedInfo,
+                        name: it.dangerType,
+                        value1: it.id,
+                        value2: it.comId,
+                    }
+                });
+                this.showChart1();//安全隐患排查
+                this.showChart2();//隐患类别统计  
+                this.makeItemData(this.item1Data, res[2].data)
+                this.makeItemData(this.item2Data, res[4].data)
+                this.makeItemData(this.item3Data, res[6].data)
+                this.makeItemData(this.item4Data, res[8].data)
+                this.itemChartKey1++;
+            });
+        },
+        showChart1(n) {
+
+        },
+        showChart2() {
+            this.chartKey2++;
+        },
+        makeItemData(item, res) {
+            let labels = ['问题总数', '待整改', '待复检', '复检驳回', '整改完成', '超时整改'];
+            item.total = res[0].id;
+            let total = res[0].id;
+            item.datas = [];
+            for (let i = 1; i < 5; i++) {
+                item.datas.push({
+                    name: labels[i],
+                    value: res[i].id
+                });
+            }
+            item.infos = [];
+            for (let i = 0; i < res.length; i++) {
+                item.infos.push({
+                    name: labels[i],
+                    value: res[i].id,
+                    percent: total == 0 ? 0 : (res[i].id / total * 100.0).toFixed(1)
+                });
+            }
+        },
+        renderDataItem1() {
+            let option = {
+                color: ["#71BCC4", "#EEBE47", "#5EA85D", "#5B84EB", "#E76168"],
+                series: [
+                    {
+                        type: 'pie',
+                        radius: ['40%', '70%'],
+                        padAngle: 1,
+                        itemStyle: {
+                            borderRadius: 5
+                        }, emphasis: {
+                            label: {
+                                show: false,
+                            }
+                        },
+                        label: {
+                            show: false
+                        },
+
+
+                        labelLine: {
+                            show: false
+                        },
+                        data: this.item1Data.datas
+                    }
+                ]
+            };
+            console.log("--->", this.item1Data.datas)
+            return option;
+        },
+        renderChart2(opt) {
+            let is1K = this.$dpi() == "1K";
+            let is2K = this.$dpi() == "2K";
+            let option = {
+                grid: {
+                    left: "5%",
+                    right: "5%",
+                    bottom: "0%",
+                    top: "15%",
+                    containLabel: true,
+                },
+                tooltip: {
+                    trigger: "axis",
+                    valueFormatter: (v) => { return v },
+                    textStyle: {
+                        fontSize: is1K ? 12 : is2K ? 14 : 24
+                    },
+                },
+                legend: {
+                    top: is1K ? '0%' : is2K ? '0%' : '0%',
+                    left: 'center',
+                    itemWidth: is1K ? 25 : is2K ? 30 : 40,
+                    itemHeight: is1K ? 14 : is2K ? 20 : 20,
+                    itemGap: is1K ? 20 : is2K ? 30 : 40,
+                    textStyle: {
+                        color: "#fff",
+                        fontSize: is1K ? 14 : is2K ? 20 : 30,
+                    }
+                },
+                xAxis: [
+                    {
+                        type: "category",
+                        data: this.chart2Data.map(it => it.name.replace(/[“”]/g, "'")),
+                        axisLabel: {
+                            width: 60,
+                            rotate: 15,
+                            fontSize: is1K ? 12 : is2K ? 14 : 24,
+                            overflow: "break",
+                            color: "#a2c8f9"
+                        },
+                        splitLine: {
+                            lineStyle: {
+                                opacity: 0.1
+                            }
+                        }
+                    },
+                ],
+                yAxis: [
+                    {
+                        type: "value",
+                        minInterval: 1,
+                        axisLabel: {
+                            formatter: '{value}',
+                            color: "#2ec2b3",
+                            fontSize: is1K ? 12 : is2K ? 14 : 24
+                        },
+                        splitLine: {
+                            lineStyle: {
+                                opacity: 0.1
+                            }
+                        },
+                    },
+                ],
+                series: [
+                    {
+                        name: '问题数',
+                        type: "bar",
+                        barGap: '0%',
+                        barWidth: '20%',
+                        label: {
+                            show: true,
+                            position: "top",
+                            color: "#4DAAFC",
+                            fontSize: is1K ? 12 : is2K ? 14 : 24
+                        },
+                        lineStyle: {
+                            color: "#7ddff2",
+                        },
+                        itemStyle: {
+                            normal: { areaStyle: { type: "default", color: "#7ddff2", opacity: 0.1 } },
+                        },
+                        data: this.chart2Data.map(it => it.value1),
+                    },
+                    {
+                        name: '待改数',
+                        type: "bar",
+                        barGap: '0%',
+                        barWidth: '20%',
+                        label: {
+                            show: true,
+                            position: "top",
+                            color: "#4DAAFC",
+                            fontSize: is1K ? 12 : is2K ? 14 : 24
+                        },
+                        lineStyle: {
+                            color: "#006594",
+                        },
+                        itemStyle: {
+                            normal: { areaStyle: { type: "default", color: "#006594", opacity: 0.1 } },
+                        },
+                        data: this.chart2Data.map(it => it.value2),
+                    }
+                ],
+            };
+            return option;
+        }
+
+    }
+}
+</script>
+
+<style lang="less">
+.project-safety-check {
+    .screen-one-1-3 {
+        height: calc(33% - 20px) !important;
+    }
+
+    .el-right {
+        height: calc(66% - 20px) !important;
+
+        .el-col-8 {
+            height: 100%;
+
+            .screen-one-2-1 {
+                margin: 0px 20px;
+                height: calc(100% - 0px) !important;
+            }
+        }
+    }
+
+    .chart1-module {
+        .el-col-12 {
+            height: 50%;
+            width: 50%;
+            display: flex;
+
+            .czz-number-img {
+                display: flex;
+                width: 80px;
+                height: 80px;
+                align-items: center;
+                justify-content: center;
+
+                svg {
+                    width: 30px !important;
+                    height: 30px !important;
+                    fill: #00aaff59 !important;
+                }
+            }
+
+            .equipment-list-data_div_top {
+                span {
+                    font-size: 14px;
+                    color: #cbdaff;
+                    font-weight: normal;
+                }
+            }
+
+            .equipment-list-data_div_bottom {
+                margin-top: 10px;
+
+                .sp-data {
+                    font-size: 20px;
+                }
+
+                .sp-unit {
+                    font-size: 14px;
+                    color: #cbdaff;
+                    font-weight: normal;
+                }
+            }
+        }
+    }
+
+    .div-item-chart {
+        position: relative;
+        height: 230px;
+
+        .data-item-chart {
+            height: 230px;
+            width: 230px;
+            display: inline-block;
+            position: relative;
+
+            .total-info {
+                position: absolute;
+                font-size: 20px;
+                top: calc(50% - 20px);
+                left: calc(50% - 50px);
+                display: inline-block;
+                width: 100px;
+                height: 40px;
+                text-align: center;
+
+                .sp-label {
+                    font-size: 14px;
+                }
+            }
+
+            .chart-overview-gif {
+                width: 80px;
+                height: 80px;
+                top: calc(50% - 40px);
+                left: calc(50% - 40px);
+            }
+        }
+
+    }
+
+    @media (min-width: 1921px) and (max-width: 2560px) {
+        .chart1-module {
+            .el-col-12 {
+                .czz-number-img {
+                    display: flex;
+                    width: 100px;
+                    height: 100px;
+
+                    svg {
+                        width: 40px !important;
+                        height: 40px !important;
+                    }
+                }
+
+                .equipment-list-data_div_top {
+                    span {
+                        font-size: 24px;
+                    }
+                }
+
+                .equipment-list-data_div_bottom {
+                    margin-top: 20px;
+
+                    .sp-data {
+                        font-size: 32px;
+                    }
+
+                    .sp-unit {
+                        font-size: 24px;
+                    }
+                }
+            }
+        }
+    }
+
+    @media (min-width: 2561px) {
+        .chart1-module {
+            .el-col-12 {
+                .czz-number-img {
+                    display: flex;
+                    width: 160px;
+                    height: 160px;
+
+                    svg {
+                        width: 60px !important;
+                        height: 60px !important;
+                    }
+                }
+
+                .equipment-list-data_div_top {
+                    span {
+                        font-size: 32px;
+                    }
+                }
+
+                .equipment-list-data_div_bottom {
+                    margin-top: 20px;
+
+                    .sp-data {
+                        font-size: 40px;
+                    }
+
+                    .sp-unit {
+                        font-size: 32px;
+                    }
+                }
+            }
+        }
+    }
+}
+</style>
\ No newline at end of file
diff --git a/yanzhu-common/yanzhu-common-mapper/src/main/java/com/yanzhu/manage/mapper/SmzSspProblemmodifyMapper.java b/yanzhu-common/yanzhu-common-mapper/src/main/java/com/yanzhu/manage/mapper/SmzSspProblemmodifyMapper.java
index 8c92bd4d..fb4d6bc5 100644
--- a/yanzhu-common/yanzhu-common-mapper/src/main/java/com/yanzhu/manage/mapper/SmzSspProblemmodifyMapper.java
+++ b/yanzhu-common/yanzhu-common-mapper/src/main/java/com/yanzhu/manage/mapper/SmzSspProblemmodifyMapper.java
@@ -102,4 +102,11 @@ public interface SmzSspProblemmodifyMapper
      * @return
      */
     public List<SmzSspProblemmodify> groupByDangerType(SmzSspProblemmodify where);
+
+    /**
+     * 分组统计 用户 全部数据、待整改、待复检、整改完成、整改超时的数量 用于大屏
+     * @param where
+     * @return
+     */
+    public List<SmzSspProblemmodify> getListCountBG(SmzSspProblemmodify where);
 }
diff --git a/yanzhu-common/yanzhu-common-mapper/src/main/resources/mapper/trouble/SmzSspProblemmodifyMapper.xml b/yanzhu-common/yanzhu-common-mapper/src/main/resources/mapper/trouble/SmzSspProblemmodifyMapper.xml
index d7422e9f..998ecb40 100644
--- a/yanzhu-common/yanzhu-common-mapper/src/main/resources/mapper/trouble/SmzSspProblemmodifyMapper.xml
+++ b/yanzhu-common/yanzhu-common-mapper/src/main/resources/mapper/trouble/SmzSspProblemmodifyMapper.xml
@@ -300,7 +300,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
     </update>
 
     <sql id="countUserWhere">
-        <if test="problemType != null  and problemType != ''"> and a,problemType = #{problemType}</if>
+        <if test="problemType != null  and problemType != ''"> and a.problemType = #{problemType}</if>
         <if test="dangerType != null  and dangerType != ''"> and a.danger_type = #{dangerType}</if>
         <if test="createTime != null "> and date(a.createTime) &gt;= date(#{createTime})</if>
         <if test="updateTime != null "> and date(a.updateTime) &lt;= date(#{updateTime})</if>
@@ -331,6 +331,25 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         <include refid="countUserWhere"></include>
     </select>
 
+    <select id="getListCountBG" parameterType="SmzSspProblemmodify" resultMap="SmzSspProblemmodifyResult">
+        select 'a' projectName, count(1) id ,'全部' remark from smz_ssp_problemmodify a where a.projectId=#{projectId} and a.comId=#{comId} and a.infoType=#{infoType} and a.isDel=0
+        <include refid="countUserWhere"></include>
+        union
+        select 'b' projectName, count(1) id,'待整改' remark from smz_ssp_problemmodify a where a.projectId=#{projectId} and a.comId=#{comId} and a.infoType=#{infoType} and a.isDel=0 and a.checkState in (0)
+        <include refid="countUserWhere"></include>
+        union
+        select 'c' projectName, count(1) id,'待复检' remark from smz_ssp_problemmodify a where a.projectId=#{projectId} and a.comId=#{comId} and a.infoType=#{infoType} and a.isDel=0 and a.checkState in (1)
+        <include refid="countUserWhere"></include>
+        union
+        select 'd' projectName, count(1) id,'驳回' remark from smz_ssp_problemmodify a where a.projectId=#{projectId} and a.comId=#{comId} and a.infoType=#{infoType} and a.isDel=0 and a.checkState in (3)
+        <include refid="countUserWhere"></include>
+        union
+        select 'e' projectName, count(1) id,'完成' remark from smz_ssp_problemmodify a where a.projectId=#{projectId} and a.comId=#{comId} and a.infoType=#{infoType} and a.isDel=0 and a.checkState in (4)
+        <include refid="countUserWhere"></include>
+        union
+        select 'f' projectName, count(1) id,'整改超时' remark from smz_ssp_problemmodify a where a.projectId=#{projectId} and a.comId=#{comId} and a.infoType=#{infoType} and a.isDel=0 and a.checkState not in (4) and date(a.nickedTime) &lt;= curdate()
+        <include refid="countUserWhere"></include>
+    </select>
     <select id="getWxListCount" parameterType="SmzSspProblemmodify" resultType="Map">
         select ssp.checkState, count(1) as total from smz_ssp_problemmodify ssp
         <where>
diff --git a/yanzhu-modules/yanzhu-manage/src/main/java/com/yanzhu/manage/controller/SmzSspProblemmodifyController.java b/yanzhu-modules/yanzhu-manage/src/main/java/com/yanzhu/manage/controller/SmzSspProblemmodifyController.java
index 271aeb1b..aa571958 100644
--- a/yanzhu-modules/yanzhu-manage/src/main/java/com/yanzhu/manage/controller/SmzSspProblemmodifyController.java
+++ b/yanzhu-modules/yanzhu-manage/src/main/java/com/yanzhu/manage/controller/SmzSspProblemmodifyController.java
@@ -338,7 +338,7 @@ public class SmzSspProblemmodifyController extends BaseController
     @RequiresPermissions("trouble:problemmodify:list")
     @GetMapping("/listCountForBG")
     public AjaxResult listCountForBG(SmzSspProblemmodify where){
-        List<SmzSspProblemmodify> result=smzSspProblemmodifyService.getListCount(where);
+        List<SmzSspProblemmodify> result=smzSspProblemmodifyService.getListCountBG(where);
         return AjaxResult.success(result);
     }
 
diff --git a/yanzhu-modules/yanzhu-manage/src/main/java/com/yanzhu/manage/service/ISmzSspProblemmodifyService.java b/yanzhu-modules/yanzhu-manage/src/main/java/com/yanzhu/manage/service/ISmzSspProblemmodifyService.java
index 70673e59..0b5c79cb 100644
--- a/yanzhu-modules/yanzhu-manage/src/main/java/com/yanzhu/manage/service/ISmzSspProblemmodifyService.java
+++ b/yanzhu-modules/yanzhu-manage/src/main/java/com/yanzhu/manage/service/ISmzSspProblemmodifyService.java
@@ -106,4 +106,10 @@ public interface ISmzSspProblemmodifyService
      */
     public List<SmzSspProblemmodify> groupByDangerType(SmzSspProblemmodify where);
 
+    /**
+     * 分组统计 用户 全部数据、待整改、待复检、整改完成、整改超时的数量 用于大屏
+     * @param where
+     * @return
+     */
+    public List<SmzSspProblemmodify> getListCountBG(SmzSspProblemmodify where);
 }
diff --git a/yanzhu-modules/yanzhu-manage/src/main/java/com/yanzhu/manage/service/impl/SmzSspAuditinfoServiceImpl.java b/yanzhu-modules/yanzhu-manage/src/main/java/com/yanzhu/manage/service/impl/SmzSspAuditinfoServiceImpl.java
index a40f0541..e6117f43 100644
--- a/yanzhu-modules/yanzhu-manage/src/main/java/com/yanzhu/manage/service/impl/SmzSspAuditinfoServiceImpl.java
+++ b/yanzhu-modules/yanzhu-manage/src/main/java/com/yanzhu/manage/service/impl/SmzSspAuditinfoServiceImpl.java
@@ -92,7 +92,7 @@ public class SmzSspAuditinfoServiceImpl implements ISmzSspAuditinfoService
         SmzSspProblemmodify smzSspProblemmodify = new SmzSspProblemmodify();
         smzSspProblemmodify.setId(smzSspAuditinfo.getMainId());
         // (0待审,1通过,2驳回)
-        //(0待整改,1待复检,2复检驳回,3复检通过)
+        //(0待整改,1待复检,3复检驳回,4复检通过)
         if("0".equals(smzSspAuditinfo.getProcessState())){
             smzSspProblemmodify.setCheckState(CheckStateEnums.DFJ.getCode());
         }else if("1".equals(smzSspAuditinfo.getProcessState())){
diff --git a/yanzhu-modules/yanzhu-manage/src/main/java/com/yanzhu/manage/service/impl/SmzSspProblemmodifyServiceImpl.java b/yanzhu-modules/yanzhu-manage/src/main/java/com/yanzhu/manage/service/impl/SmzSspProblemmodifyServiceImpl.java
index 0b1af51e..ae1523d7 100644
--- a/yanzhu-modules/yanzhu-manage/src/main/java/com/yanzhu/manage/service/impl/SmzSspProblemmodifyServiceImpl.java
+++ b/yanzhu-modules/yanzhu-manage/src/main/java/com/yanzhu/manage/service/impl/SmzSspProblemmodifyServiceImpl.java
@@ -188,5 +188,14 @@ public class SmzSspProblemmodifyServiceImpl implements ISmzSspProblemmodifyServi
     public List<SmzSspProblemmodify> groupByDangerType(SmzSspProblemmodify where) {
         return smzSspProblemmodifyMapper.groupByDangerType(where);
     }
+    /**
+     * 分组统计 用户 全部数据、待整改、待复检、整改完成、整改超时的数量 用于大屏
+     * @param where
+     * @return
+     */
+    @Override
+    public List<SmzSspProblemmodify> getListCountBG(SmzSspProblemmodify where) {
+        return smzSspProblemmodifyMapper.getListCountBG(where);
+    }
 
 }