From e5e9b84b800f1623f85be45a3565689917898c78 Mon Sep 17 00:00:00 2001
From: 马宇豪 <978517621@qq.com>
Date: 星期五, 10 三月 2023 18:12:12 +0800
Subject: [PATCH] Default Changelist

---
 src/views/riskWarningSys/warningBigScreen/indexs/components/msg.vue        |  183 +
 package-lock.json                                                          |   40 
 src/views/riskWarningSys/warningBigScreen/indexs/components/dan.vue        |  215 +
 src/views/riskWarningSys/warningBigScreen/indexs/index.vue                 |  175 
 src/views/riskWarningSys/warningBigScreen/components/SPI.vue               |  344 +--
 src/views/intellectInspect/inspectIndex/components/sum.vue                 |    0 
 src/views/intellectInspect/inspectIndex/components/unusualList.vue         |  539 ++++
 src/views/riskWarningSys/warningBigScreen/indexs/components/edu.vue        |  210 +
 src/views/riskWarningSys/warningBigScreen/indexs/components/spi.vue        |  172 +
 src/views/riskWarningSys/warningBigScreen/indexs/components/acc.vue        |  233 ++
 src/views/specialWorkSystem/specialIndex/index.vue                         |  962 -------
 src/views/riskWarningSys/warningBigScreen/index.vue                        |  234 +
 src/views/intellectInspect/inspectIndex/components/inspectList.vue         |    0 
 src/views/riskWarningSys/warningBigScreen/components/risk.vue              |  623 +++-
 src/views/riskWarningSys/warningBigScreen/indexs/components/train.vue      |  177 +
 src/views/intellectInspect/inspectIndex/index.vue                          |  260 +
 src/views/riskWarningSys/warningBigScreen/indexs/components/sto.vue        |  211 +
 src/views/riskWarningSys/warningBigScreen/indexs/components/risk.vue       |  201 +
 src/views/riskWarningSys/warningBigScreen/components/danger.vue            |  416 ++-
 src/api/riskWarning/index.ts                                               |   46 
 src/views/riskWarningSys/warningBigScreen/components/training.vue          |  168 +
 src/stores/screenTheme.ts                                                  |    6 
 /dev/null                                                                  |  404 ---
 src/stores/interface/index.ts                                              |    3 
 src/views/riskWarningSys/warningBigScreen/components/accident.vue          |  391 ++-
 src/api/intellectInspectSystem/inspectIndex/index.ts                       |   27 
 src/views/intellectInspect/inspectIndex/components/inspectRecordDialog.vue |    0 
 src/views/riskWarningSys/warningBigScreen/indexs/components/mon.vue        |  175 +
 src/views/riskWarningSys/warningBigScreen/indexs/components/pro.vue        |  183 +
 29 files changed, 4,251 insertions(+), 2,347 deletions(-)

diff --git a/package-lock.json b/package-lock.json
index 5149933..1e0dc6f 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -10,7 +10,7 @@
 			"license": "MIT",
 			"dependencies": {
 				"@element-plus/icons-vue": "^2.0.6",
-				"@kjgl77/datav-vue3": "^1.2.1",
+				"@kjgl77/datav-vue3": "^1.4.1",
 				"@wangeditor/editor": "^5.1.14",
 				"axios": "^0.27.2",
 				"countup.js": "^2.2.0",
@@ -450,12 +450,9 @@
 			}
 		},
 		"node_modules/@jiaminghi/color": {
-			"version": "0.1.1",
-			"resolved": "https://registry.npmmirror.com/@jiaminghi/color/-/color-0.1.1.tgz",
-			"integrity": "sha512-M09+Sb5HGqVim0zo+nG5gU1v+6gXT8ptr0BZR6dMGt83XmCJgnZtO8s7llTW4hLFFFM5co6geZvTekqLpSPAAQ==",
-			"dependencies": {
-				"@babel/runtime": "^7.5.5"
-			}
+			"version": "1.1.3",
+			"resolved": "https://registry.npmmirror.com/@jiaminghi/color/-/color-1.1.3.tgz",
+			"integrity": "sha512-ZY3hdorgODk4OSTbxyXBPxAxHPIVf9rPlKJyK1C1db46a50J0reFKpAvfZG8zMG3lvM60IR7Qawgcu4ZDO3+Hg=="
 		},
 		"node_modules/@jiaminghi/transition": {
 			"version": "1.1.11",
@@ -466,13 +463,15 @@
 			}
 		},
 		"node_modules/@kjgl77/datav-vue3": {
-			"version": "1.2.1",
-			"resolved": "https://registry.npmmirror.com/@kjgl77/datav-vue3/-/datav-vue3-1.2.1.tgz",
-			"integrity": "sha512-hiSodPvXkp6o8nyPPgDFcrb+M4h9dZd2hmuT3WqHY+sInEHCFtypCGrhvxRFT3oGlcIlLKSX9WVb117JksFROA==",
+			"version": "1.4.2",
+			"resolved": "https://registry.npmmirror.com/@kjgl77/datav-vue3/-/datav-vue3-1.4.2.tgz",
+			"integrity": "sha512-2bwQtvPpRNSmWAUS/e81SLZdOabCdiF3wGkvLjkOa/n4grygNk0f8l7AwpaP0bUlc4ougPgFRIAy/wzkyNocoA==",
 			"dependencies": {
 				"@jiaminghi/c-render": "^0.4.3",
 				"@jiaminghi/charts": "^0.2.18",
-				"@vueuse/core": "^9.1.0"
+				"@jiaminghi/color": "^1.1.3",
+				"@vueuse/core": "^9.1.0",
+				"lodash-es": "^4.17.21"
 			}
 		},
 		"node_modules/@kjgl77/datav-vue3/node_modules/@types/web-bluetooth": {
@@ -5089,12 +5088,9 @@
 			}
 		},
 		"@jiaminghi/color": {
-			"version": "0.1.1",
-			"resolved": "https://registry.npmmirror.com/@jiaminghi/color/-/color-0.1.1.tgz",
-			"integrity": "sha512-M09+Sb5HGqVim0zo+nG5gU1v+6gXT8ptr0BZR6dMGt83XmCJgnZtO8s7llTW4hLFFFM5co6geZvTekqLpSPAAQ==",
-			"requires": {
-				"@babel/runtime": "^7.5.5"
-			}
+			"version": "1.1.3",
+			"resolved": "https://registry.npmmirror.com/@jiaminghi/color/-/color-1.1.3.tgz",
+			"integrity": "sha512-ZY3hdorgODk4OSTbxyXBPxAxHPIVf9rPlKJyK1C1db46a50J0reFKpAvfZG8zMG3lvM60IR7Qawgcu4ZDO3+Hg=="
 		},
 		"@jiaminghi/transition": {
 			"version": "1.1.11",
@@ -5105,13 +5101,15 @@
 			}
 		},
 		"@kjgl77/datav-vue3": {
-			"version": "1.2.1",
-			"resolved": "https://registry.npmmirror.com/@kjgl77/datav-vue3/-/datav-vue3-1.2.1.tgz",
-			"integrity": "sha512-hiSodPvXkp6o8nyPPgDFcrb+M4h9dZd2hmuT3WqHY+sInEHCFtypCGrhvxRFT3oGlcIlLKSX9WVb117JksFROA==",
+			"version": "1.4.2",
+			"resolved": "https://registry.npmmirror.com/@kjgl77/datav-vue3/-/datav-vue3-1.4.2.tgz",
+			"integrity": "sha512-2bwQtvPpRNSmWAUS/e81SLZdOabCdiF3wGkvLjkOa/n4grygNk0f8l7AwpaP0bUlc4ougPgFRIAy/wzkyNocoA==",
 			"requires": {
 				"@jiaminghi/c-render": "^0.4.3",
 				"@jiaminghi/charts": "^0.2.18",
-				"@vueuse/core": "^9.1.0"
+				"@jiaminghi/color": "^1.1.3",
+				"@vueuse/core": "^9.1.0",
+				"lodash-es": "^4.17.21"
 			},
 			"dependencies": {
 				"@types/web-bluetooth": {
diff --git a/src/api/intellectInspectSystem/inspectIndex/index.ts b/src/api/intellectInspectSystem/inspectIndex/index.ts
index 5093571..e5eee90 100644
--- a/src/api/intellectInspectSystem/inspectIndex/index.ts
+++ b/src/api/intellectInspectSystem/inspectIndex/index.ts
@@ -10,5 +10,32 @@
                 data: data
             });
         },
+
+        //
+        falseAlarmStatus: (data: object) => {
+            return request({
+                url: import.meta.env.VITE_API_URL + `/SafeCheck/abnormalWorkOrder/update/falseAlarmStatusById`,
+                method: 'post',
+                data: data
+            });
+        },
+
+        //
+        acceptedStatus: (data: object) => {
+            return request({
+                url: import.meta.env.VITE_API_URL + `/SafeCheck/abnormalWorkOrder/update/acceptedStatusById`,
+                method: 'post',
+                data: data
+            });
+        },
+
+        //
+        getListImages: (data: object) => {
+            return request({
+                url: import.meta.env.VITE_API_URL + `/SafeCheck/abnormalWorkOrder/select/listImagesById`,
+                method: 'post',
+                data: data
+            });
+        },
     };
 }
diff --git a/src/api/riskWarning/index.ts b/src/api/riskWarning/index.ts
new file mode 100644
index 0000000..1910bb2
--- /dev/null
+++ b/src/api/riskWarning/index.ts
@@ -0,0 +1,46 @@
+import request from '/@/utils/request';
+
+export function riskWarningApi() {
+    return {
+
+        //spi版本分页列表
+        getSpiData: (data:number) => {
+            return request({
+                url: import.meta.env.VITE_API_URL + `/riskCtrl/spi/report/dep/12month?depId=${data}`,
+                method: 'get',
+            });
+        },
+
+        //获取任意部门事故统计指定月度区间报表
+        getRiskByTimeDep: (data: {depId:number,beginYear:string,beginMonth:string,endYear: string,endMonth:string}) => {
+            return request({
+                url: import.meta.env.VITE_API_URL + `/riskCtrl/risk/report/multipleMonth/incident/department?depId=${data.depId}&beginYear=${data.beginYear}&beginMonth=${data.beginMonth}&endYear=${data.endYear}&endMonth=${data.endMonth}`,
+                method: 'get',
+            });
+        },
+
+        //获取任意部门应急演练指定月度区间报表
+        getEmergencyByDep: (data: {depId:number,beginYear:string,beginMonth:string,endYear: string,endMonth:string}) => {
+            return request({
+                url: import.meta.env.VITE_API_URL + `/riskCtrl/risk/report/multipleMonth/emergency/department?depId=${data.depId}&beginYear=${data.beginYear}&beginMonth=${data.beginMonth}&endYear=${data.endYear}&endMonth=${data.endMonth}`,
+                method: 'get',
+            });
+        },
+
+        //获取任意部门的双重预防隐患指定月份区间报表
+        getSelfPreventByTimeDep: (data: {depId:number,beginYear:string,beginMonth:string,endYear: string,endMonth:string}) => {
+            return request({
+                url: import.meta.env.VITE_API_URL + `/riskCtrl/risk/report/multipleMonth/prevent/department?depId=${data.depId}&beginYear=${data.beginYear}&beginMonth=${data.beginMonth}&endYear=${data.endYear}&endMonth=${data.endMonth}`,
+                method: 'get',
+            });
+        },
+
+        //获取任意部门的直属子部门的双重预防隐患指定月份区间报表
+        getPreventByTimeDep: (data: {depId:number,beginYear:string,beginMonth:string,endYear: string,endMonth:string}) => {
+            return request({
+                url: import.meta.env.VITE_API_URL + `/riskCtrl/risk/report/multipleMonth/prevent/subDepartments?depId=${data.depId}&beginYear=${data.beginYear}&beginMonth=${data.beginMonth}&endYear=${data.endYear}&endMonth=${data.endMonth}`,
+                method: 'get',
+            });
+        }
+    };
+}
diff --git a/src/stores/interface/index.ts b/src/stores/interface/index.ts
index 9ace21a..ef1d52c 100644
--- a/src/stores/interface/index.ts
+++ b/src/stores/interface/index.ts
@@ -54,7 +54,8 @@
 
 export interface screenThemeState {
     screenTheme: {
-        isDark: boolean
+        isDark: boolean,
+        depId: number
     }
 }
 
diff --git a/src/stores/screenTheme.ts b/src/stores/screenTheme.ts
index 13c3592..70f363d 100644
--- a/src/stores/screenTheme.ts
+++ b/src/stores/screenTheme.ts
@@ -10,12 +10,16 @@
 export const useScreenTheme = defineStore('screenTheme', {
     state: (): screenThemeState => ({
         screenTheme:{
-            isDark: true
+            isDark: true,
+            depId: 1
         }
     }),
     actions: {
         async setScreenTheme(value: any) {
             this.screenTheme.isDark = value;
+        },
+        async setDepId(value: any) {
+            this.screenTheme.depId = value;
         }
     },
 });
diff --git a/src/views/intellectInspect/inspectIndex2/components/inspectList.vue b/src/views/intellectInspect/inspectIndex/components/inspectList.vue
similarity index 100%
rename from src/views/intellectInspect/inspectIndex2/components/inspectList.vue
rename to src/views/intellectInspect/inspectIndex/components/inspectList.vue
diff --git a/src/views/intellectInspect/inspectIndex2/components/inspectRecordDialog.vue b/src/views/intellectInspect/inspectIndex/components/inspectRecordDialog.vue
similarity index 100%
rename from src/views/intellectInspect/inspectIndex2/components/inspectRecordDialog.vue
rename to src/views/intellectInspect/inspectIndex/components/inspectRecordDialog.vue
diff --git a/src/views/intellectInspect/inspectIndex2/components/sum.vue b/src/views/intellectInspect/inspectIndex/components/sum.vue
similarity index 100%
rename from src/views/intellectInspect/inspectIndex2/components/sum.vue
rename to src/views/intellectInspect/inspectIndex/components/sum.vue
diff --git a/src/views/intellectInspect/inspectIndex/components/unusualList.vue b/src/views/intellectInspect/inspectIndex/components/unusualList.vue
new file mode 100644
index 0000000..feeee56
--- /dev/null
+++ b/src/views/intellectInspect/inspectIndex/components/unusualList.vue
@@ -0,0 +1,539 @@
+<template>
+    <el-dialog v-model="unusualListDialog" title="巡检异常清单" width="90%" center>
+      <div class="main-card">
+        <el-table :data="unusualData" stripe border :header-cell-style="{ background: '#fafafa' }">
+          <el-table-column prop="workOrderNum" label="工单编号" align="center"/>
+          <el-table-column prop="pointCode" label="异常巡检点" align="center"/>
+          <el-table-column prop="occurrenceTime" label="巡检(发现)时间" align="center"/>
+          <el-table-column prop="taskName" label="所属巡检任务" align="center"/>
+          <el-table-column prop="regionName" label="设备/区域名称" align="center"/>
+          <el-table-column prop="refer" label="正常参考值" align="center">
+            <template #default="scope">
+              <span>{{scope.row.dataReportType==1?(scope.row.firstReferenceValue==0?'正常':'异常'):scope.row.dataReportType==2?((scope.row.secondReferenceSignscope==1?'>':'>=') + scope.row.secondReferenceValue + ',' + (scope.row.thirdReferenceSign==3?'<':'<=') + scope.row.thirdReferenceValue): ((scope.row.firstReferenceValue==0?'正常':'异常') + ',' + ((scope.row.secondReferenceSignscope==1?'>':'>=') + scope.row.secondReferenceValue + ',' + (scope.row.thirdReferenceSign==3?'<':'<=') + scope.row.thirdReferenceValue))}}</span>
+            </template>
+          </el-table-column>
+          <el-table-column label="实际巡检值" align="center">
+            <template #default="scope">
+              <span>{{scope.row.dataReportType==1?(scope.row.firstReferenceResult==0?'正常':'异常'):scope.row.dataReportType==2?scope.row.secondReferenceResult:(scope.row.firstReferenceResult==0?'正常':'异常') + ',' + scope.row.secondReferenceResult}}</span>
+            </template>
+          </el-table-column>
+          <el-table-column prop="hiddenDangerHandlerName" label="隐患处置人" align="center"/>
+          <el-table-column prop="hiddenDangerHandlerPhone" label="电话" align="center"/>
+          <el-table-column prop="handlerStatus" label="处置状态" align="center">
+            <template #default="scope">
+              <el-tag :type="scope.row.handlerStatus == 2?'danger':(scope.row.handlerStatus == 1 || scope.row.handlerStatus == 3)?'':'success'">{{scope.row.handlerStatus == 1?'待响应':scope.row.handlerStatus == 2?'标记误报':scope.row.handlerStatus == 3?'自查处理中':scope.row.handlerStatus == 4?'已移交上报':scope.row.handlerStatus == 5?'待验收':'已完成'}}</el-tag>
+            </template>
+          </el-table-column>
+          <el-table-column prop="handlerDesc" label="处置描述反馈" align="center"/>
+          <el-table-column label="操作" align="center" width="180" fixed="right">
+            <template #default="scope">
+              <el-button v-if="scope.row.handlerStatus == 5" type="text" size="small" class="checkBtn" @click="acceptance(scope.row)">验收</el-button>
+              <el-button v-if="scope.row.handlerStatus !==1 && scope.row.handlerStatus !==2" type="text" size="small" class="reviewBtn" @click="openPhoto(scope.row)">查看现场照片</el-button>
+              <el-button v-if="scope.row.handlerStatus ==1" type="text" size="small" @click="remark(scope.row)">标记误报</el-button>
+              <span v-if="scope.row.handlerStatus == 2" style="color: red">标记误报</span>
+            </template>
+          </el-table-column>
+        </el-table>
+      </div>
+      <template #footer>
+        <span class="dialog-footer" style="display: flex;justify-content: right">
+          <el-pagination v-model:currentPage="pageIndex" v-model:page-size="pageSize" :page-sizes="[10, 15]" small="false" background layout="total, sizes, prev, pager, next, jumper" :total="totalSize" @size-change="handleSizeChange" @current-change="handleCurrentChange" />
+        </span>
+      </template>
+        <inspect-record-dialog ref="inspectRecordDialogRef" @refreshInspectRecord="getInspectRecord"></inspect-record-dialog>
+      <el-dialog
+          v-model="dialogVisible"
+          :title= '"工单编号:" + workNum'
+          width="60%"
+          :before-close="handleClose"
+          center
+      >
+        <div style="margin-bottom: 20px">
+          <div style="margin-bottom: 10px">处置前:</div>
+          <div v-if="beImgs && beImgs.length>0">
+            <el-image v-for="(item,index) in beImgs" :key="index" style="width: 100px; height: 100px" :src="item" fit="fill" />
+          </div>
+          <div v-else>
+            无照片信息
+          </div>
+        </div>
+        <div>
+          <div style="margin-bottom: 10px">处置后</div>
+          <div v-if="afImgs && beImgs.length>0">
+            <el-image v-for="(item,index) in afImgs" :key="index" style="width: 100px; height: 100px" :src="item" fit="fill" />
+          </div>
+          <div v-else>
+            无照片信息
+          </div>
+        </div>
+        <template #footer>
+            <span class="dialog-footer">
+              <el-button type="primary" @click="dialogVisible = false">
+                确认
+              </el-button>
+            </span>
+        </template>
+      </el-dialog>
+    </el-dialog>
+</template>
+
+<script lang="ts">
+import { toRefs, reactive, ref, onMounted } from 'vue';
+import { storeToRefs } from 'pinia';
+import { initBackEndControlRoutes } from '/@/router/backEnd';
+import { useUserInfo } from '/@/stores/userInfo';
+import { Session } from '/@/utils/storage';
+import { Edit, View, Plus, Delete, Refresh, Search, Download } from '@element-plus/icons-vue';
+import { ElTable } from 'element-plus';
+import { FormInstance, FormRules, ElMessage } from 'element-plus';
+import { inspectRecordApi } from '/@/api/intellectInspectSystem/inspectRecord';
+import { useRouter } from 'vue-router';
+import inspectRecordDialog from './inspectRecordDialog.vue';
+import { departmentApi } from '/@/api/systemManage/department';
+import {inspectIndexApi} from "/@/api/intellectInspectSystem/inspectIndex";
+import {ElMessageBox} from "element-plus/es";
+// 定义接口来定义对象的类型
+interface stateType {
+    unusualData: Array<any>;
+    unchecked: null | number;
+    unusual: null | number;
+    uncheckedList: [];
+    abnormalList: [];
+    pageIndex: number;
+    pageSize: number;
+    totalSize: number;
+    workTypeList: Array<type>;
+    classGroupList: Array<classGroup>;
+    quotaList: [];
+    departmentList: [];
+    inspectPointAllList: [];
+    unusualListDialog: boolean;
+    dialogVisible:boolean;
+    workNum: string;
+    beImgs: [];
+    afImgs: []
+}
+interface type {
+    id: number;
+    name: string;
+}
+interface classGroup {
+    id: number;
+    groupName: string;
+}
+export default {
+    name: 'inspectList',
+    components: { inspectRecordDialog },
+    setup(context) {
+        const router = useRouter();
+        const state = reactive<stateType>({
+            unusualListDialog: false,
+          dialogVisible: false,
+          workNum: '',
+          beImgs: [],
+          afImgs: [],
+            pageIndex: 1,
+            pageSize: 10,
+            totalSize: 0,
+            unusualData: [],
+            unchecked: null,
+            unusual: null,
+            departmentList: [],
+            uncheckedList: [],
+            abnormalList: [],
+            workTypeList: [
+                { id: 1, name: '日常任务' },
+                { id: 2, name: '周期任务' }
+            ],
+            classGroupList: [],
+            quotaList: [],
+            inspectPointAllList: []
+        });
+        const inspectRecordDialogRef = ref();
+        interface User {
+            name: string;
+            startTime: string;
+            endTime: string;
+            info: string;
+        }
+
+        // 页面载入时执行方法
+        onMounted(() => {
+
+        });
+
+        const showUnusualList = ()=>{
+          state.unusualListDialog = true
+          getInspectRecord();
+        }
+        // 分页获取工作时段列表
+        const getInspectRecord = async () => {
+            const data = { pageSize: state.pageSize, pageIndex: state.pageIndex };
+            let res = await inspectIndexApi().getListExcepOrderByPage(data);
+            if (res.data.code === '200') {
+              state.unusualData = JSON.parse(JSON.stringify(res.data.data.records))
+              state.totalSize = res.data.data.total;
+            } else {
+                ElMessage({
+                    type: 'warning',
+                    message: res.data.msg
+                });
+            }
+        };
+      const acceptance =(row:object)=>{
+        ElMessageBox.confirm(
+            '确认完成验收并结束工单?',
+            '完成验收',
+            {
+              confirmButtonText: '确认',
+              cancelButtonText: '取消',
+              type: 'warning',
+              center: true
+            }
+        )
+            .then(async() => {
+              const res = await inspectIndexApi().acceptedStatus({id: row.id});
+              if (res.data.code === '200') {
+                getInspectRecord();
+                context.emit('refreshRecord');
+                ElMessage({
+                  type: 'success',
+                  message: '验收成功',
+                })
+              } else {
+                ElMessage({
+                  type: 'warning',
+                  message: '验收失败'
+                });
+              }
+            })
+            .catch(() => {
+              ElMessage({
+                type: 'info',
+                message: '取消验收',
+              })
+            })
+      }
+      const remark =(row:object)=>{
+        ElMessageBox.confirm(
+            '确认是否标记误报?',
+            '标记误报',
+            {
+              confirmButtonText: '确认',
+              cancelButtonText: '取消',
+              type: 'warning',
+              center: true
+            }
+        )
+            .then(async() => {
+              const res = await inspectIndexApi().falseAlarmStatus({id: row.id});
+              if (res.data.code === '200') {
+                getInspectRecord();
+                context.emit('refreshRecord');
+                ElMessage({
+                  type: 'success',
+                  message: '标记误报成功',
+                })
+              } else {
+                ElMessage({
+                  type: 'warning',
+                  message: '标记误报失败'
+                });
+              }
+            })
+            .catch(() => {
+              ElMessage({
+                type: 'info',
+                message: '取消标记',
+              })
+            })
+      }
+        const openPhoto = async(row)=>{
+          state.dialogVisible = true
+          state.workNum = row.workOrderNum
+          const res = await inspectIndexApi().getListImages({id: row.id});
+          if (res.data.code === '200') {
+            state.beImgs = res.data.data.beforeImages
+            state.afImgs = res.data.data.afterImages
+          } else {
+            ElMessage({
+              type: 'warning',
+              message: '图片获取失败'
+            });
+          }
+        }
+        const handleSizeChange = (val: number) => {
+            state.pageSize = val;
+            getInspectRecord();
+        };
+        const handleCurrentChange = (val: number) => {
+            state.pageIndex = val;
+            getInspectRecord();
+        };
+
+        const toLine = (item) => {
+          console.log(item,'item')
+            let id = item.id;
+            console.log(id,'id')
+            router.push({
+                path: 'intelligentLine',
+                query: {
+                    id: id
+                }
+            });
+        };
+
+        const toOverTime = (id) => {
+            console.log(state.uncheckedList, 'list');
+            router.push({
+                path: 'inspectRecord',
+                query: {
+                    id: id,
+                }
+            });
+        };
+        const toDetails = (type: string, item: object) => {
+
+        };
+        return {
+            View,
+            Edit,
+            Delete,
+            Refresh,
+            Plus,
+            router,
+            inspectRecordDialogRef,
+            acceptance,
+          openPhoto,
+            remark,
+            showUnusualList,
+            toLine,
+            toOverTime,
+            toDetails,
+            handleSizeChange,
+            handleCurrentChange,
+            ...toRefs(state)
+        };
+    }
+};
+</script>
+
+<style scoped lang="scss">
+$homeNavLengh: 8;
+@media screen and (min-width: 1366px) {
+    .topCard {
+        display: flex;
+        align-items: center;
+        justify-content: space-between;
+        font-weight: bolder;
+
+        .top-info {
+            display: flex;
+            font-size: 16px;
+            align-items: center;
+            padding: 10px 15px;
+            background: #ffeb87;
+            border-radius: 8px;
+            border: 1px solid #ffae00;
+
+            & > div {
+                vertical-align: middle;
+                white-space: nowrap;
+                span {
+                    font-size: 22px;
+                    color: #f3001e;
+                    margin: 0 4px;
+                    cursor: pointer;
+
+                    &:hover{
+                        text-decoration: underline;
+                    }
+                }
+            }
+        }
+    }
+    .left-info {
+        width: 70%;
+        display: flex;
+        align-items: center;
+        justify-content: left;
+        font-size: 16px;
+        overflow-x: auto;
+        & > span {
+            white-space: nowrap;
+        }
+        p {
+            white-space: nowrap;
+            overflow: hidden;
+            text-overflow: ellipsis;
+            & > span {
+                white-space: nowrap;
+            }
+        }
+    }
+}
+@media screen and (min-width: 1200px) and (max-width: 1366px) {
+    .topCard {
+        display: flex;
+        align-items: center;
+        justify-content: space-between;
+        font-weight: bolder;
+
+        .top-info {
+            display: flex;
+            font-size: 14px;
+            align-items: center;
+            padding: 6px 10px;
+            background: #ffeb87;
+            border-radius: 4px;
+            border: 1px solid #ffae00;
+
+            & > div {
+                vertical-align: middle;
+                white-space: nowrap;
+                span {
+                    font-size: 18px;
+                    color: #f3001e;
+                    margin: 0 2px;
+                    cursor: pointer;
+
+                    &:hover{
+                        text-decoration: underline;
+                    }
+                }
+            }
+        }
+    }
+    .left-info {
+        width: 70%;
+        display: flex;
+        align-items: center;
+        justify-content: left;
+        font-size: 15px;
+        color: #333;
+        overflow-x: auto;
+        & > span {
+            white-space: nowrap;
+        }
+        p {
+            white-space: nowrap;
+            overflow: hidden;
+            text-overflow: ellipsis;
+            & > span {
+                white-space: nowrap;
+            }
+        }
+    }
+}
+@media screen and (max-width: 1200px) {
+    .topCard {
+        display: flex;
+        align-items: center;
+        justify-content: space-between;
+        font-weight: bolder;
+
+        .top-info {
+            display: flex;
+            font-size: 14px;
+            align-items: center;
+            padding: 2px 6px;
+            background: #ffeb87;
+            border-radius: 4px;
+            border: 1px solid #ffae00;
+
+            & > div {
+                vertical-align: middle;
+                white-space: nowrap;
+                span {
+                    font-size: 16px;
+                    color: #f3001e;
+                    margin: 0 1px;
+                    cursor: pointer;
+
+                    &:hover{
+                        text-decoration: underline;
+                    }
+                }
+            }
+        }
+    }
+    .left-info {
+        width: 70%;
+        display: flex;
+        align-items: center;
+        justify-content: left;
+        font-size: 12px;
+        color: #333;
+        overflow-x: auto;
+        & > span {
+            white-space: nowrap;
+        }
+        p {
+            white-space: nowrap;
+            overflow: hidden;
+            text-overflow: ellipsis;
+            & > span {
+                white-space: nowrap;
+            }
+        }
+    }
+}
+
+.home-container {
+    height: calc(100vh - 144px);
+    box-sizing: border-box;
+    overflow: hidden;
+    .homeCard {
+        width: 100%;
+        padding: 20px;
+        box-sizing: border-box;
+        background: #fff;
+        border-radius: 4px;
+
+        .title {
+            font-size: 20px;
+            font-weight: bolder;
+        }
+        .main-card {
+            width: 100%;
+            height: 100%;
+        }
+        &:last-of-type {
+            position: relative;
+            padding-top: 0;
+            height: calc(100% - 60px);
+        }
+    }
+    .el-row {
+        display: flex;
+        align-items: center;
+        margin-bottom: 20px;
+        &:last-child {
+            margin-bottom: 0;
+        }
+        .grid-content {
+            align-items: center;
+            min-height: 36px;
+        }
+    }
+}
+.el-input {
+    width: 100% !important;
+}
+.el-date-editor::v-deep {
+    width: 100%;
+}
+.el-select {
+    width: 100%;
+}
+:deep(.el-textarea.is-disabled .el-textarea__inner) {
+    background-color: var(--el-card-bg-color);
+    color: var(--el-input-text-color, var(--el-text-color-regular));
+}
+:deep(.el-input.is-disabled .el-input__inner) {
+    color: var(--el-input-text-color, var(--el-text-color-regular));
+}
+:deep(.el-input.is-disabled .el-input__wrapper) {
+    background-color: var(--el-card-bg-color);
+}
+</style>
diff --git a/src/views/intellectInspect/inspectIndex2/index.vue b/src/views/intellectInspect/inspectIndex/index.vue
similarity index 79%
rename from src/views/intellectInspect/inspectIndex2/index.vue
rename to src/views/intellectInspect/inspectIndex/index.vue
index 7b43609..7b9a78b 100644
--- a/src/views/intellectInspect/inspectIndex2/index.vue
+++ b/src/views/intellectInspect/inspectIndex/index.vue
@@ -102,33 +102,6 @@
                       </template>
                     </el-table-column>
                   </el-table>
-<!--                  <div class="list">-->
-<!--                    <div class="list-tit">-->
-<!--                      <span class="w60">任务信息</span>-->
-<!--                      <span class="w20">任务状态</span>-->
-<!--                      <span class="w20">操作</span>-->
-<!--                    </div>-->
-<!--                    <div class="cardTop" v-for="(item, index) in tableData" :key="index">-->
-<!--                      <div class="l-info">-->
-<!--                        <span class="place">{{ item.taskName }},</span>-->
-<!--                        <p v-if="item.execUserName == null">该任务暂无人认领</p>-->
-<!--                        <p v-else>-->
-<!--                            <span class="time">{{ item.taskStatus == 2 ? item.startTime : item.endTime }}</span>由<span class="name">{{ item.execUserName }}</span-->
-<!--                        >进行的巡检任务-->
-<!--                        </p>-->
-<!--                      </div>-->
-<!--                      <div class="m-info">-->
-<!--                        任务状态:<span :class="item.taskStatus == 1 ? 'grey' : item.taskStatus == 2 ? 'green' : item.taskStatus == 3 ? 'blue' : 'red'">{{ item.taskStatus == 1 ? '待巡检' : item.taskStatus == 2 ? '巡检中' : item.taskStatus == 3 ? '已巡检' : '超期未巡检' }}</span>-->
-<!--                      </div>-->
-<!--                      <div class="r-info">-->
-<!--                        <el-button type="text" v-if="item.taskStatus == 2" @click="toLine(item)" size="small">查看实时巡检</el-button>-->
-<!--                        <el-button type="text" v-else class="reviewBtn" @click="toDetails('查看', item)" size="small">查看巡检记录</el-button>-->
-<!--                      </div>-->
-<!--                    </div>-->
-<!--                  </div>-->
-<!--                  <div class="pageBtn">-->
-<!--                    <el-pagination v-model:currentPage="pageIndex" v-model:page-size="pageSize" :page-sizes="[10, 15]" small="false" background layout="total, sizes, prev, pager, next, jumper" :total="totalSize" @size-change="handleSizeChange" @current-change="handleCurrentChange" />-->
-<!--                  </div>-->
                 </div>
               </div>
             </div>
@@ -142,21 +115,35 @@
               </div>
               <div class="chart">
                 <el-table :data="unusualData" stripe border :header-cell-style="{ background: '#fafafa' }">
-                  <el-table-column prop="num" label="工单编号" align="center"/>
-                  <el-table-column prop="spot" label="异常巡检点" align="center"/>
-                  <el-table-column prop="time" label="巡检(发现)时间" align="center"/>
-                  <el-table-column prop="job" label="所属巡检任务" align="center"/>
-                  <el-table-column prop="area" label="设备/区域名称" align="center"/>
-                  <el-table-column prop="refer" label="正常参考值" align="center"/>
-                  <el-table-column prop="real" label="实际巡检值" align="center"/>
-                  <el-table-column prop="name" label="隐患处置人" align="center"/>
-                  <el-table-column prop="phone" label="电话" align="center"/>
-                  <el-table-column prop="status" label="处置状态" align="center"/>
-                  <el-table-column prop="describe" label="处置描述反馈" align="center"/>
+                  <el-table-column prop="workOrderNum" label="工单编号" align="center"/>
+                  <el-table-column prop="pointCode" label="异常巡检点" align="center"/>
+                  <el-table-column prop="occurrenceTime" label="巡检(发现)时间" align="center"/>
+                  <el-table-column prop="taskName" label="所属巡检任务" align="center"/>
+                  <el-table-column prop="regionName" label="设备/区域名称" align="center"/>
+                  <el-table-column prop="refer" label="正常参考值" align="center">
+                    <template #default="scope">
+                      <span>{{scope.row.dataReportType==1?(scope.row.firstReferenceValue==0?'正常':'异常'):scope.row.dataReportType==2?((scope.row.secondReferenceSignscope==1?'>':'>=') + scope.row.secondReferenceValue + ',' + (scope.row.thirdReferenceSign==3?'<':'<=') + scope.row.thirdReferenceValue): ((scope.row.firstReferenceValue==0?'正常':'异常') + ',' + ((scope.row.secondReferenceSignscope==1?'>':'>=') + scope.row.secondReferenceValue + ',' + (scope.row.thirdReferenceSign==3?'<':'<=') + scope.row.thirdReferenceValue))}}</span>
+                    </template>
+                  </el-table-column>
+                  <el-table-column label="实际巡检值" align="center">
+                    <template #default="scope">
+                      <span>{{scope.row.dataReportType==1?(scope.row.firstReferenceResult==0?'正常':'异常'):scope.row.dataReportType==2?scope.row.secondReferenceResult:(scope.row.firstReferenceResult==0?'正常':'异常') + ',' + scope.row.secondReferenceResult}}</span>
+                    </template>
+                  </el-table-column>
+                  <el-table-column prop="hiddenDangerHandlerName" label="隐患处置人" align="center"/>
+                  <el-table-column prop="hiddenDangerHandlerPhone" label="电话" align="center"/>
+                  <el-table-column prop="handlerStatus" label="处置状态" align="center">
+                    <template #default="scope">
+                      <el-tag :type="scope.row.handlerStatus == 2?'danger':(scope.row.handlerStatus == 1 || scope.row.handlerStatus == 3)?'':'success'">{{scope.row.handlerStatus == 1?'待响应':scope.row.handlerStatus == 2?'标记误报':scope.row.handlerStatus == 3?'自查处理中':scope.row.handlerStatus == 4?'已移交上报':scope.row.handlerStatus == 5?'待验收':'已完成'}}</el-tag>
+                    </template>
+                  </el-table-column>
+                  <el-table-column prop="handlerDesc" label="处置描述反馈" align="center"/>
                   <el-table-column label="操作" align="center" width="180" fixed="right">
                     <template #default="scope">
-                      <el-button type="text" size="small" class="checkBtn">验收</el-button>
-                      <el-button type="text" size="small" class="reviewBtn">查看现场照片</el-button>
+                      <el-button v-if="scope.row.handlerStatus == 5" type="text" size="small" class="checkBtn" @click="acceptance(scope.row)">验收</el-button>
+                      <el-button v-if="scope.row.handlerStatus !==1 && scope.row.handlerStatus !==2" type="text" size="small" class="reviewBtn" @click="openPhoto(scope.row)">查看现场照片</el-button>
+                      <el-button v-if="scope.row.handlerStatus ==1" type="text" size="small" @click="remark(scope.row)">标记误报</el-button>
+                      <span v-if="scope.row.handlerStatus == 2" style="color: red">标记误报</span>
                     </template>
                   </el-table-column>
                 </el-table>
@@ -167,9 +154,42 @@
             </div>
           </div>
         </div>
+        <el-dialog
+            v-model="dialogVisible"
+            :title= '"工单编号:" + workNum'
+            width="60%"
+            :before-close="handleClose"
+            center
+        >
+          <div style="margin-bottom: 20px">
+            <div style="margin-bottom: 10px">处置前:</div>
+            <div v-if="beImgs && beImgs.length>0">
+              <el-image v-for="(item,index) in beImgs" :key="index" style="width: 100px; height: 100px" :src="item" fit="fill" />
+            </div>
+            <div v-else>
+              无照片信息
+            </div>
+          </div>
+          <div>
+            <div style="margin-bottom: 10px">处置后</div>
+            <div v-if="afImgs && beImgs.length>0">
+              <el-image v-for="(item,index) in afImgs" :key="index" style="width: 100px; height: 100px" :src="item" fit="fill" />
+            </div>
+            <div v-else>
+              无照片信息
+            </div>
+          </div>
+          <template #footer>
+            <span class="dialog-footer">
+              <el-button type="primary" @click="dialogVisible = false">
+                确认
+              </el-button>
+            </span>
+          </template>
+        </el-dialog>
         <inspect-record-dialog ref="inspectRecordDialogRef" @refreshInspectRecord="getInspectRecord"></inspect-record-dialog>
         <inspect-list ref="inspectListRef"></inspect-list>
-        <unusual-list ref="unusualListRef"></unusual-list>
+        <unusual-list ref="unusualListRef" @refreshRecord="getListExcepOrder"></unusual-list>
     </div>
 </template>
 
@@ -181,7 +201,7 @@
 import { Session } from '/@/utils/storage';
 import { Edit, View, Plus, Delete, Refresh, Search, Download } from '@element-plus/icons-vue';
 import { ElTable } from 'element-plus';
-import { FormInstance, FormRules, ElMessage } from 'element-plus';
+import { FormInstance, FormRules, ElMessage, ElMessageBox } from 'element-plus';
 import { inspectRecordApi } from '/@/api/intellectInspectSystem/inspectRecord';
 import { inspectIndexApi } from '/@/api/intellectInspectSystem/inspectIndex'
 import { useRouter } from 'vue-router';
@@ -211,7 +231,11 @@
     chartStatus:boolean;
     period: string;
     isFull:boolean;
-    themeColor:string
+    themeColor:string;
+    dialogVisible:boolean;
+    workNum: string;
+    beImgs: [];
+    afImgs: []
 }
 interface type {
     id: number;
@@ -231,64 +255,14 @@
         const state = reactive<stateType>({
             isFull: false,
             themeColor: '#333',
+            workNum: '',
+            beImgs: [],
+            afImgs: [],
             pageIndex: 1,
             pageSize: 5,
             totalSize: 0,
             tableData: [],
-            unusualData: [
-              {
-                num: '202302280001',
-                spot: '70736',
-                time: '2023-03-02 17:44:25',
-                job: '甲醇车间XXX巡检',
-                area: 'xxx设备',
-                refer: '8.9~10Mpa',
-                real: '15.6Mpa',
-                name: '黄公子',
-                phone: '15261806176',
-                status: '待验收',
-                describe: '更换法兰更换法兰更换法兰更换法兰更换法兰更换法兰'
-              },
-              {
-                num: '202302280001',
-                spot: '70736',
-                time: '2023-03-02 17:44:25',
-                job: '甲醇车间XXX巡检',
-                area: 'xxx设备',
-                refer: '8.9~10Mpa',
-                real: '15.6Mpa',
-                name: '黄公子',
-                phone: '15261806176',
-                status: '待验收',
-                describe: '更换法兰更换法兰更换法兰更换法兰更换法兰更换法兰'
-              },
-              {
-                num: '202302280001',
-                spot: '70736',
-                time: '2023-03-02 17:44:25',
-                job: '甲醇车间XXX巡检',
-                area: 'xxx设备',
-                refer: '8.9~10Mpa',
-                real: '15.6Mpa',
-                name: '黄公子',
-                phone: '15261806176',
-                status: '待验收',
-                describe: '更换法兰更换法兰更换法兰更换法兰更换法兰更换法兰'
-              },
-              {
-                num: '202302280001',
-                spot: '70736',
-                time: '2023-03-02 17:44:25',
-                job: '甲醇车间XXX巡检',
-                area: 'xxx设备',
-                refer: '8.9~10Mpa',
-                real: '15.6Mpa',
-                name: '黄公子',
-                phone: '15261806176',
-                status: '待验收',
-                describe: '更换法兰更换法兰更换法兰更换法兰更换法兰更换法兰'
-              }
-            ],
+            unusualData: [],
             unchecked: null,
             unusual: null,
             chartStatus: true,
@@ -309,7 +283,8 @@
             ],
             classGroupList: [],
             quotaList: [],
-            inspectPointAllList: []
+            inspectPointAllList: [],
+            dialogVisible: false
         });
         const inspectRecordDialogRef = ref();
         const inspectListRef = ref();
@@ -331,7 +306,7 @@
             initSbtj()
         });
         const toFullscreen =()=>{
-          console.log(state.isFull,'quanp',state.themeColor)
+          // console.log(state.isFull,'quanp',state.themeColor)
           const element = document.getElementById('bigScreen')
           if (!screenfull.isEnabled) {
             ElMessage.warning('暂不不支持全屏');
@@ -353,6 +328,86 @@
         }
         const checkAllList =()=>{
           unusualListRef.value.showUnusualList()
+        }
+        const acceptance =(row:object)=>{
+          ElMessageBox.confirm(
+              '确认完成验收并结束工单?',
+              '完成验收',
+              {
+                confirmButtonText: '确认',
+                cancelButtonText: '取消',
+                type: 'warning',
+                center: true
+              }
+          )
+              .then(async() => {
+                const res = await inspectIndexApi().acceptedStatus({id: row.id});
+                if (res.data.code === '200') {
+                  getListExcepOrder();
+                  ElMessage({
+                    type: 'success',
+                    message: '验收成功',
+                  })
+                } else {
+                  ElMessage({
+                    type: 'warning',
+                    message: '验收失败'
+                  });
+                }
+              })
+              .catch(() => {
+                ElMessage({
+                  type: 'info',
+                  message: '取消验收',
+                })
+              })
+        }
+        const remark =(row:object)=>{
+          ElMessageBox.confirm(
+              '确认是否标记误报?',
+              '标记误报',
+              {
+                confirmButtonText: '确认',
+                cancelButtonText: '取消',
+                type: 'warning',
+                center: true
+              }
+          )
+              .then(async() => {
+                const res = await inspectIndexApi().falseAlarmStatus({id: row.id});
+                if (res.data.code === '200') {
+                  getListExcepOrder();
+                  ElMessage({
+                    type: 'success',
+                    message: '标记误报成功',
+                  })
+                } else {
+                  ElMessage({
+                    type: 'warning',
+                    message: '标记误报失败'
+                  });
+                }
+              })
+              .catch(() => {
+                ElMessage({
+                  type: 'info',
+                  message: '取消标记',
+                })
+              })
+        }
+        const openPhoto = async(row)=>{
+          state.dialogVisible = true
+          state.workNum = row.workOrderNum
+          const res = await inspectIndexApi().getListImages({id: row.id});
+          if (res.data.code === '200') {
+              state.beImgs = res.data.data.beforeImages
+              state.afImgs = res.data.data.afterImages
+          } else {
+            ElMessage({
+              type: 'warning',
+              message: '图片获取失败'
+            });
+          }
         }
         type EChartsOption = echarts.EChartsOption
         const initXjLine =()=>{
@@ -527,10 +582,10 @@
         };
         // 分页获取
         const getListExcepOrder = async () => {
-          const data = { pageSize: state.pageSize, pageIndex: state.pageIndex };
+          const data = { pageSize: 4, pageIndex: state.pageIndex };
           let res = await inspectIndexApi().getListExcepOrderByPage(data);
           if (res.data.code === '200') {
-            console.log(res.data,'res')
+            state.unusualData = JSON.parse(JSON.stringify(res.data.data.records))
           } else {
             ElMessage({
               type: 'warning',
@@ -613,6 +668,9 @@
             toFullscreen,
             checkAllRecord,
             checkAllList,
+            acceptance,
+            remark,
+            openPhoto,
             toLine,
             toOverTime,
             toDetails,
diff --git a/src/views/intellectInspect/inspectIndex2/components/unusualList.vue b/src/views/intellectInspect/inspectIndex2/components/unusualList.vue
deleted file mode 100644
index c9059d3..0000000
--- a/src/views/intellectInspect/inspectIndex2/components/unusualList.vue
+++ /dev/null
@@ -1,404 +0,0 @@
-<template>
-    <el-dialog v-model="unusualListDialog" title="当前巡检任务" width="90%" center>
-      <div class="main-card">
-          <el-table :data="tableData" style="width: 100%" stripe border :header-cell-style="{ background: '#fafafa' }">
-            <el-table-column label="工单编号" align="center"/>
-            <el-table-column label="异常巡检点" align="center"/>
-            <el-table-column label="巡检(发现)时间" align="center"/>
-            <el-table-column label="所属巡检任务" align="center"/>
-            <el-table-column label="设备/区域名称" align="center"/>
-            <el-table-column label="正常参考值" align="center"/>
-            <el-table-column label="实际巡检值" align="center"/>
-            <el-table-column label="隐患处置人" align="center"/>
-            <el-table-column label="电话" align="center"/>
-            <el-table-column prop="taskStatus" label="处置状态" align="center" width="180">
-              <template #default="scope">
-                <span :style="{color: scope.row.taskStatus == 1 ? '#999' : scope.row.taskStatus == 2 ? '#44b100' : scope.row.taskStatus == 3 ? '#409eff' : 'red'}">
-                  {{ scope.row.taskStatus == 1 ? '待巡检' : scope.row.taskStatus == 2 ? '巡检中' : scope.row.taskStatus == 3 ? '已巡检' : '超期未巡检' }}
-                </span>
-              </template>
-            </el-table-column>
-            <el-table-column label="处置描述反馈" align="center"/>
-            <el-table-column label="操作" align="center" width="190" fixed="right">
-              <template #default="scope">
-                <el-button type="text" size="small">验收</el-button>
-                <el-button type="text" size="small">查看现场照片</el-button>
-              </template>
-            </el-table-column>
-          </el-table>
-      </div>
-      <template #footer>
-        <span class="dialog-footer" style="display: flex;justify-content: right">
-          <el-pagination v-model:currentPage="pageIndex" v-model:page-size="pageSize" :page-sizes="[10, 15]" small="false" background layout="total, sizes, prev, pager, next, jumper" :total="totalSize" @size-change="handleSizeChange" @current-change="handleCurrentChange" />
-        </span>
-      </template>
-        <inspect-record-dialog ref="inspectRecordDialogRef" @refreshInspectRecord="getInspectRecord"></inspect-record-dialog>
-    </el-dialog>
-</template>
-
-<script lang="ts">
-import { toRefs, reactive, ref, onMounted } from 'vue';
-import { storeToRefs } from 'pinia';
-import { initBackEndControlRoutes } from '/@/router/backEnd';
-import { useUserInfo } from '/@/stores/userInfo';
-import { Session } from '/@/utils/storage';
-import { Edit, View, Plus, Delete, Refresh, Search, Download } from '@element-plus/icons-vue';
-import { ElTable } from 'element-plus';
-import { FormInstance, FormRules, ElMessage } from 'element-plus';
-import { inspectRecordApi } from '/@/api/intellectInspectSystem/inspectRecord';
-import { useRouter } from 'vue-router';
-import inspectRecordDialog from './inspectRecordDialog.vue';
-import { departmentApi } from '/@/api/systemManage/department';
-// 定义接口来定义对象的类型
-interface stateType {
-    tableData: Array<string>;
-    unchecked: null | number;
-    unusual: null | number;
-    uncheckedList: [];
-    abnormalList: [];
-    pageIndex: number;
-    pageSize: number;
-    totalSize: number;
-    workTypeList: Array<type>;
-    classGroupList: Array<classGroup>;
-    quotaList: [];
-    departmentList: [];
-    inspectPointAllList: [];
-    unusualListDialog: boolean
-}
-interface type {
-    id: number;
-    name: string;
-}
-interface classGroup {
-    id: number;
-    groupName: string;
-}
-export default {
-    name: 'inspectList',
-    components: { inspectRecordDialog },
-    setup() {
-        const router = useRouter();
-        const state = reactive<stateType>({
-            unusualListDialog: false,
-            pageIndex: 1,
-            pageSize: 10,
-            totalSize: 0,
-            tableData: [],
-            unchecked: null,
-            unusual: null,
-            departmentList: [],
-            uncheckedList: [],
-            abnormalList: [],
-            workTypeList: [
-                { id: 1, name: '日常任务' },
-                { id: 2, name: '周期任务' }
-            ],
-            classGroupList: [],
-            quotaList: [],
-            inspectPointAllList: []
-        });
-        const inspectRecordDialogRef = ref();
-        interface User {
-            name: string;
-            startTime: string;
-            endTime: string;
-            info: string;
-        }
-
-        // 页面载入时执行方法
-        onMounted(() => {
-
-        });
-
-        const showUnusualList = ()=>{
-          state.unusualListDialog = true
-          getInspectRecord();
-        }
-        // 分页获取工作时段列表
-        const getInspectRecord = async () => {
-            const data = { pageSize: state.pageSize, pageIndex: state.pageIndex };
-            let res = await inspectRecordApi().getInspectRecordByIndex(data);
-            if (res.data.code === '200') {
-                state.tableData = res.data.data.records;
-                state.totalSize = res.data.data.total;
-            } else {
-                ElMessage({
-                    type: 'warning',
-                    message: res.data.msg
-                });
-            }
-        };
-
-        const handleSizeChange = (val: number) => {
-            state.pageSize = val;
-            getInspectRecord();
-        };
-        const handleCurrentChange = (val: number) => {
-            state.pageIndex = val;
-            getInspectRecord();
-        };
-
-        const toLine = (item) => {
-          console.log(item,'item')
-            let id = item.id;
-            console.log(id,'id')
-            router.push({
-                path: 'intelligentLine',
-                query: {
-                    id: id
-                }
-            });
-        };
-
-        const toOverTime = (id) => {
-            console.log(state.uncheckedList, 'list');
-            router.push({
-                path: 'inspectRecord',
-                query: {
-                    id: id,
-                }
-            });
-        };
-        const toDetails = (type: string, item: object) => {
-
-        };
-        return {
-            View,
-            Edit,
-            Delete,
-            Refresh,
-            Plus,
-            router,
-            inspectRecordDialogRef,
-            showUnusualList,
-            toLine,
-            toOverTime,
-            toDetails,
-            handleSizeChange,
-            handleCurrentChange,
-            ...toRefs(state)
-        };
-    }
-};
-</script>
-
-<style scoped lang="scss">
-$homeNavLengh: 8;
-@media screen and (min-width: 1366px) {
-    .topCard {
-        display: flex;
-        align-items: center;
-        justify-content: space-between;
-        font-weight: bolder;
-
-        .top-info {
-            display: flex;
-            font-size: 16px;
-            align-items: center;
-            padding: 10px 15px;
-            background: #ffeb87;
-            border-radius: 8px;
-            border: 1px solid #ffae00;
-
-            & > div {
-                vertical-align: middle;
-                white-space: nowrap;
-                span {
-                    font-size: 22px;
-                    color: #f3001e;
-                    margin: 0 4px;
-                    cursor: pointer;
-
-                    &:hover{
-                        text-decoration: underline;
-                    }
-                }
-            }
-        }
-    }
-    .left-info {
-        width: 70%;
-        display: flex;
-        align-items: center;
-        justify-content: left;
-        font-size: 16px;
-        overflow-x: auto;
-        & > span {
-            white-space: nowrap;
-        }
-        p {
-            white-space: nowrap;
-            overflow: hidden;
-            text-overflow: ellipsis;
-            & > span {
-                white-space: nowrap;
-            }
-        }
-    }
-}
-@media screen and (min-width: 1200px) and (max-width: 1366px) {
-    .topCard {
-        display: flex;
-        align-items: center;
-        justify-content: space-between;
-        font-weight: bolder;
-
-        .top-info {
-            display: flex;
-            font-size: 14px;
-            align-items: center;
-            padding: 6px 10px;
-            background: #ffeb87;
-            border-radius: 4px;
-            border: 1px solid #ffae00;
-
-            & > div {
-                vertical-align: middle;
-                white-space: nowrap;
-                span {
-                    font-size: 18px;
-                    color: #f3001e;
-                    margin: 0 2px;
-                    cursor: pointer;
-
-                    &:hover{
-                        text-decoration: underline;
-                    }
-                }
-            }
-        }
-    }
-    .left-info {
-        width: 70%;
-        display: flex;
-        align-items: center;
-        justify-content: left;
-        font-size: 15px;
-        color: #333;
-        overflow-x: auto;
-        & > span {
-            white-space: nowrap;
-        }
-        p {
-            white-space: nowrap;
-            overflow: hidden;
-            text-overflow: ellipsis;
-            & > span {
-                white-space: nowrap;
-            }
-        }
-    }
-}
-@media screen and (max-width: 1200px) {
-    .topCard {
-        display: flex;
-        align-items: center;
-        justify-content: space-between;
-        font-weight: bolder;
-
-        .top-info {
-            display: flex;
-            font-size: 14px;
-            align-items: center;
-            padding: 2px 6px;
-            background: #ffeb87;
-            border-radius: 4px;
-            border: 1px solid #ffae00;
-
-            & > div {
-                vertical-align: middle;
-                white-space: nowrap;
-                span {
-                    font-size: 16px;
-                    color: #f3001e;
-                    margin: 0 1px;
-                    cursor: pointer;
-
-                    &:hover{
-                        text-decoration: underline;
-                    }
-                }
-            }
-        }
-    }
-    .left-info {
-        width: 70%;
-        display: flex;
-        align-items: center;
-        justify-content: left;
-        font-size: 12px;
-        color: #333;
-        overflow-x: auto;
-        & > span {
-            white-space: nowrap;
-        }
-        p {
-            white-space: nowrap;
-            overflow: hidden;
-            text-overflow: ellipsis;
-            & > span {
-                white-space: nowrap;
-            }
-        }
-    }
-}
-
-.home-container {
-    height: calc(100vh - 144px);
-    box-sizing: border-box;
-    overflow: hidden;
-    .homeCard {
-        width: 100%;
-        padding: 20px;
-        box-sizing: border-box;
-        background: #fff;
-        border-radius: 4px;
-
-        .title {
-            font-size: 20px;
-            font-weight: bolder;
-        }
-        .main-card {
-            width: 100%;
-            height: 100%;
-        }
-        &:last-of-type {
-            position: relative;
-            padding-top: 0;
-            height: calc(100% - 60px);
-        }
-    }
-    .el-row {
-        display: flex;
-        align-items: center;
-        margin-bottom: 20px;
-        &:last-child {
-            margin-bottom: 0;
-        }
-        .grid-content {
-            align-items: center;
-            min-height: 36px;
-        }
-    }
-}
-.el-input {
-    width: 100% !important;
-}
-.el-date-editor::v-deep {
-    width: 100%;
-}
-.el-select {
-    width: 100%;
-}
-:deep(.el-textarea.is-disabled .el-textarea__inner) {
-    background-color: var(--el-card-bg-color);
-    color: var(--el-input-text-color, var(--el-text-color-regular));
-}
-:deep(.el-input.is-disabled .el-input__inner) {
-    color: var(--el-input-text-color, var(--el-text-color-regular));
-}
-:deep(.el-input.is-disabled .el-input__wrapper) {
-    background-color: var(--el-card-bg-color);
-}
-</style>
diff --git a/src/views/riskWarningSys/warningBigScreen/components/SPI.vue b/src/views/riskWarningSys/warningBigScreen/components/SPI.vue
index a52fdca..392db13 100644
--- a/src/views/riskWarningSys/warningBigScreen/components/SPI.vue
+++ b/src/views/riskWarningSys/warningBigScreen/components/SPI.vue
@@ -1,17 +1,5 @@
 <template>
 	<div class="charts-cont">
-		<div :class="spiChart">
-			<el-cascader
-				class="spiSe"
-				:teleported="false"
-				v-model="spiValue"
-				:options="departList"
-				:props="spiProps"
-				:show-all-levels="false"
-				@change="handleChange"
-			/>
-		</div>
-
 		<div class="spi" :id="spi">
 
 		</div>
@@ -32,12 +20,13 @@
 	import '/@/theme/bigScreen.css'
 	import {useScreenTheme} from "/@/stores/screenTheme";
 	import {teamManageApi} from "/@/api/systemManage/basicDateManage/personShiftManage/teamManage";
+	import {riskWarningApi} from "/@/api/riskWarning";
 
 	interface stateType {
-		spiValue: number;
-		departList: Array<any>;
-		spiChart: string;
-		spiProps: object
+		spiData: Array<any>;
+		year: string;
+		monthList: Array<string>;
+		valueList: Array<string>
 	}
 	export default defineComponent({
 		name: 'SPI',
@@ -53,22 +42,21 @@
 			const { screenTheme }  = storeToRefs(screenThemes);
 			const spi = ref("eChartSpi" + Date.now() + Math.random())
 			const state = reactive<stateType>({
-				spiValue: 1,
-				departList: [],
-				spiProps: {
-					expandTrigger: 'hover',
-					checkStrictly: true,
-					value: 'depId',
-					label: 'depName',
-				},
-				spiChart: 'spi-dark'
+				spiData: [],
+				year: '',
+				monthList: [],
+				valueList: [],
 			})
 
-			// 获取部门列表
-			const getAllDepartment = async () => {
-				let res = await teamManageApi().getAllDepartment();
+			// 获取spi数据
+			const getSpiData = async () => {
+				let res = await riskWarningApi().getSpiData(screenTheme.value.depId);
 				if (res.data.code === '200') {
-					state.departList = JSON.parse(JSON.stringify(res.data.data))
+					state.spiData = JSON.parse(JSON.stringify(res.data.data))
+					state.monthList = Array.from(state.spiData, ({ month }) => month + '月');
+					state.valueList = Array.from(state.spiData, ({ spiVal }) => spiVal);
+					state.year = res.data.data[0].year
+					initSpi()
 				} else {
 					ElMessage({
 						type: 'warning',
@@ -76,7 +64,6 @@
 					});
 				}
 			};
-
 			type EChartsOption = echarts.EChartsOption
 			// 隐患整改情况
 			const initSpi =()=>{
@@ -108,7 +95,7 @@
 						{
 							type: 'category',
 							boundaryGap: false,
-							data: ['一月', '二月', '三月', '四月', '五月', '六月', '七月', '八月', '九月', '十月', '十一月', '十二月'],
+							data: state.monthList,
 							axisLine:{
 								show: true,
 								lineStyle:{
@@ -149,70 +136,106 @@
 						}
 					],
 					series: [
+						// {
+						// 	name: '危险线',
+						// 	data: [1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000],
+						// 	type: 'line',
+						// 	lineStyle:{
+						// 		width: 0
+						// 	},
+						// 	areaStyle: {
+						// 		color: {
+						// 			x: 0,
+						// 			y: 0,
+						// 			x2: 0,
+						// 			y2: 1,
+						// 			colorStops: [
+						// 				{
+						// 					offset: 0.1,
+						// 					color: "rgba(216,55,55)", // 线处的颜色
+						// 				},
+						// 				{
+						// 					offset: 0.9,
+						// 					color: "rgba(216,55,55,.1)", // 坐标轴处的颜色
+						// 				},
+						// 			],
+						// 		}
+						// 	},
+						// 	showSymbol: false,
+						// 	// stack: 'Total',
+						// 	smooth: true
+						// },
+						// {
+						// 	name: '警告线',
+						// 	data: [750, 750, 750, 750, 750, 750, 750, 750, 750, 750, 750, 750],
+						// 	type: 'line',
+						// 	lineStyle:{
+						// 		width: 0
+						// 	},
+						// 	areaStyle: {
+						// 		color: {
+						// 			x: 0,
+						// 			y: 0,
+						// 			x2: 0,
+						// 			y2: 1,
+						// 			colorStops: [
+						// 				{
+						// 					offset: 0.1,
+						// 					color: "rgba(235,194,80)", // 线处的颜色
+						// 				},
+						// 				{
+						// 					offset: 0.9,
+						// 					color: "rgba(235,194,80,.1)", // 坐标轴处的颜色
+						// 				},
+						// 			],
+						// 		}
+						// 	},
+						// 	showSymbol: false,
+						// 	// stack: 'Total',
+						// 	smooth: true
+						// },
+						// {
+						// 	name: '注意线',
+						// 	data: [500, 500, 500, 500, 500, 500, 500,500, 500, 500, 500, 500],
+						// 	type: 'line',
+						// 	lineStyle:{
+						// 		width: 0
+						// 	},
+						// 	areaStyle: {
+						// 		color: {
+						// 			x: 0,
+						// 			y: 0,
+						// 			x2: 0,
+						// 			y2: 1,
+						// 			colorStops: [
+						// 				{
+						// 					offset: 0.1,
+						// 					color: "rgba(147,208,81)", // 线处的颜色
+						// 				},
+						// 				{
+						// 					offset: 0.9,
+						// 					color: "rgba(147,208,81,.2)", // 坐标轴处的颜色
+						// 				},
+						// 			]
+						// 		},
+						// 	},
+						// 	showSymbol: false,
+						// 	// stack: 'Total',
+						// 	smooth: true
+						// },
 						{
-							name: '危险线',
-							data: [1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000],
+							name: 'SPI预警指数值',
+							data: state.valueList,
 							type: 'line',
+							triggerLineEvent: true,
+							label:{
+								show: true,
+								color: '#23E5E5',
+								fontSize: fontSize(12)
+							},
 							lineStyle:{
-								width: 0
-							},
-							areaStyle: {
-								color: {
-									x: 0,
-									y: 0,
-									x2: 0,
-									y2: 1,
-									colorStops: [
-										{
-											offset: 0.1,
-											color: "rgba(216,55,55)", // 线处的颜色
-										},
-										{
-											offset: 0.9,
-											color: "rgba(216,55,55,.1)", // 坐标轴处的颜色
-										},
-									],
-								}
-							},
-							showSymbol: false,
-							// stack: 'Total',
-							smooth: true
-						},
-						{
-							name: '警告线',
-							data: [750, 750, 750, 750, 750, 750, 750, 750, 750, 750, 750, 750],
-							type: 'line',
-							lineStyle:{
-								width: 0
-							},
-							areaStyle: {
-								color: {
-									x: 0,
-									y: 0,
-									x2: 0,
-									y2: 1,
-									colorStops: [
-										{
-											offset: 0.1,
-											color: "rgba(235,194,80)", // 线处的颜色
-										},
-										{
-											offset: 0.9,
-											color: "rgba(235,194,80,.1)", // 坐标轴处的颜色
-										},
-									],
-								}
-							},
-							showSymbol: false,
-							// stack: 'Total',
-							smooth: true
-						},
-						{
-							name: '注意线',
-							data: [500, 500, 500, 500, 500, 500, 500,500, 500, 500, 500, 500],
-							type: 'line',
-							lineStyle:{
-								width: 0
+								width: 2,
+								color: '#23E5E5'
 							},
 							areaStyle: {
 								color: {
@@ -229,26 +252,8 @@
 											offset: 0.9,
 											color: "rgba(147,208,81,.2)", // 坐标轴处的颜色
 										},
-									]
-								},
-							},
-							showSymbol: false,
-							// stack: 'Total',
-							smooth: true
-						},
-						{
-							name: 'SPI预警指数值',
-							data: [450, 632, 501, 434, 390, 530, 520,750, 632, 401, 634, 590],
-							type: 'line',
-							triggerLineEvent: true,
-							label:{
-								show: true,
-								color: '#23E5E5',
-								fontSize: fontSize(12)
-							},
-							lineStyle:{
-								width: 2,
-								color: '#23E5E5'
+									],
+								}
 							},
 							itemStyle:{
 								color: '#23E5E5',
@@ -266,20 +271,9 @@
 				});
 			}
 
-			const getTheme =()=>{
-				if(screenTheme.value.isDark){
-					state.spiChart =  'spi-dark'
-				}else{
-					state.spiChart =  'spi-light'
-				}
-			}
 
 			watchEffect(() => {
-				if(props.theme){
-					state.spiChart =  'spi-dark'
-				}else{
-					state.spiChart =  'spi-light'
-				}
+				getSpiData()
 			})
 
 			function fontSize(val){
@@ -289,9 +283,8 @@
 
 			// 页面载入时执行方法
 			onMounted(() => {
-				getAllDepartment();
+				getSpiData();
 				initSpi();
-				getTheme();
 			});
 
 			return {
@@ -311,105 +304,6 @@
 		padding: 2%;
 		position: relative;
 
-		.spi-dark{
-			position: absolute;
-			width: 25% !important;
-			top: 0;
-			left: 2rem;
-			z-index: 99999;
-
-			::v-deep(.el-cascader){
-				width: 100% !important;
-			}
-			::v-deep(.el-popper){
-				background-color: rgba(10,31,92,1);
-				border: 1px solid rgba(17,254,238,.4);
-				color: #11FEEE;
-				.el-cascader-node__label{
-					color: #11FEEE;
-				}
-				.el-icon{
-					color: #11FEEE;
-				}
-				.el-cascader-node{
-					&:hover{
-						background: #0049af;
-					}
-				}
-			}
-			::v-deep(.el-popper__arrow){
-				&::before{
-					background-color: rgba(10,31,92,.6) !important;
-					border: 1px solid rgba(17,254,238,.4);
-				}
-			}
-			::v-deep(.el-input__wrapper){
-				width: 20%;
-				box-shadow: none;
-				border: 1px solid rgba(17,254,238,.2);
-				background: rgba(10,31,92,.6) !important;
-				height: 2.5rem;
-				color: #11FEEE;
-
-				input{
-					font-size: 1.25rem;
-					color: #11FEEE;
-				}
-				.el-icon{
-					color: #11FEEE;
-				}
-			}
-		}
-
-		.spi-light{
-			position: absolute;
-			width: 25% !important;
-			top: 0;
-			left: 2rem;
-			z-index: 99999;
-
-			::v-deep(.el-cascader){
-				width: 100% !important;
-			}
-			::v-deep(.el-popper){
-				background-color: #fff;
-				border: 1px solid #ccc;
-				color: #000;
-				.el-cascader-node__label{
-					color: #000;
-				}
-				.el-icon{
-					color: #000;
-				}
-				.el-cascader-node{
-					&:hover{
-						background: #ccc;
-					}
-				}
-			}
-			::v-deep(.el-popper__arrow){
-				&::before{
-					background-color: #fff !important;
-					border: 1px solid #ccc;
-				}
-			}
-			::v-deep(.el-input__wrapper){
-				width: 20%;
-				box-shadow: none;
-				border: 1px solid #ccc;
-				background: #fff !important;
-				height: 2.5rem;
-				color: #000;
-
-				input{
-					font-size: 1.25rem;
-					color: #000;
-				}
-				.el-icon{
-					color: #000;
-				}
-			}
-		}
 		.spi{
 			width: 100%;
 			height: 100%;
diff --git a/src/views/riskWarningSys/warningBigScreen/components/accident.vue b/src/views/riskWarningSys/warningBigScreen/components/accident.vue
index 2f15dfe..30f8621 100644
--- a/src/views/riskWarningSys/warningBigScreen/components/accident.vue
+++ b/src/views/riskWarningSys/warningBigScreen/components/accident.vue
@@ -1,11 +1,16 @@
 <template>
 	<div class="charts-cont">
-		<div :class="choose" >
-			<div :class="cur===1?'act':''" @click="changeTab(1)">月度</div>
-			<div :class="cur===2?'act':''" @click="changeTab(2)">年度</div>
+		<div :class="selector">
+			<el-cascader
+					class="timeSe"
+					:teleported="false"
+					v-model="timeValue"
+					:options="optionList"
+					:props="riskProps"
+					@change="changeTime"
+			/>
 		</div>
-		<div v-show="cur===1" class="month" :id="accidentMonth"></div>
-		<div v-show="cur===2" class="month" :id="accidentYear"></div>
+		<div class="month" :id="accidentMonth"></div>
 	</div>
 </template>
 
@@ -22,12 +27,16 @@
 	import * as echarts from "echarts";
 	import '/@/theme/bigScreen.css'
 	import {useScreenTheme} from "/@/stores/screenTheme"
-
+  import { riskWarningApi } from '/@/api/riskWarning';
+  import {teamManageApi} from "/@/api/systemManage/basicDateManage/personShiftManage/teamManage";
 	interface stateType {
-		cur: number,
 		curColor: string,
-		choose: string
-	}
+    accData: Array<any>;
+		timeValue: Array<any>,
+		optionList: Array<any>,
+		selector: string,
+		riskProps: object
+  }
 	export default defineComponent({
 		name: 'accident',
 		components: {},
@@ -41,22 +50,127 @@
 			const screenThemes = useScreenTheme()
 			const { screenTheme }  = storeToRefs(screenThemes);
 			const accidentMonth = ref("eChartFix" + Date.now() + Math.random())
-			const accidentYear = ref("eChartFix" + Date.now() + Math.random())
 			const state = reactive<stateType>({
-				cur: 1,
 				curColor: '#fff',
-				choose: 'choose-dark'
+        accData: [],
+				timeValue: [],
+				optionList: [],
+				riskProps: {
+					expandTrigger: 'hover'
+				},
+				selector: 'select-dark'
 			})
+      const timeForm = {
+        hour12: false,
+        year: 'numeric',
+        month: 'numeric',
+        day: '2-digit',
+        hour: '2-digit',
+        minute: '2-digit',
+        second: '2-digit'
+      };
+      const makeList = () =>{
+        for(let i=0;i<=60;i++){
+          const newObj = {
+            label: 1990 + i + '',
+            value: 1990 + i + '',
+            children: [
+              {
+                label: '年度',
+                value: 0
+              },
+              {
+                label: '一月',
+                value: 1
+              },
+              {
+                label: '二月',
+                value: 2
+              },
+              {
+                label: '三月',
+                value: 3
+              },
+              {
+                label: '四月',
+                value: 4
+              },
+              {
+                label: '五月',
+                value: 5
+              },
+              {
+                label: '六月',
+                value: 6
+              },
+              {
+                label: '七月',
+                value: 7
+              },
+              {
+                label: '八月',
+                value: 8
+              },
+              {
+                label: '九月',
+                value: 9
+              },
+              {
+                label: '十月',
+                value: 10
+              },
+              {
+                label: '十一月',
+                value: 11
+              },
+              {
+                label: '十二月',
+                value: 12
+              }
+            ]
+          }
+          state.optionList.push(newObj)
+        }
+      }
+      const getTime = () =>{
+        const curTime = new Date().toLocaleString('zh', timeForm).replace(/\//g, '-');
+        const temp = curTime.split('-')
+        state.timeValue[0] = temp[0]
+        state.timeValue[1] = Number(temp[1])
+      }
+      const getDataByYearId = async () => {
+        getTime()
+        const data = {
+          depId: screenTheme.value.depId || 1,
+          beginYear: state.timeValue[0],
+          beginMonth: state.timeValue[1],
+          endYear: state.timeValue[0],
+          endMonth: state.timeValue[1]
+        }
+        if(state.timeValue[1] == 0){
+          data.beginMonth = 1
+          data.endMonth = 12
+        }
+        let res = await riskWarningApi().getRiskByTimeDep(data);
+        if (res.data.code === '200') {
+          state.accData = res.data.data[0].detail
+          const oneList = res.data.data[0].detail[0].count
+          const twoList = res.data.data[0].detail[1].count
+          const threeList = res.data.data[0].detail[2].count
+          const fourList = res.data.data[0].detail[3].count
+          const fiveList = res.data.data[0].detail[4].count
+          initAccidentByMonth(oneList,twoList,threeList,fourList,fiveList)
+        } else {
+          ElMessage({
+            type: 'warning',
+            message: res.data.msg
+          });
+        }
+      }
 
-			const changeTab =(i)=>{
-				state.cur = i
-				nextTick(()=>{
-					initAccidentByYear();
-				})
-			}
 			type EChartsOption = echarts.EChartsOption
 			// 隐患整改情况
-			const initAccidentByMonth =()=>{
+			const initAccidentByMonth =(one:number,two:number,three:number,four:number,five:number)=>{
 				let dom = document.getElementById(accidentMonth.value);
 				let myChart = echarts.init(dom);
 
@@ -78,7 +192,7 @@
 					},
 					series: [
 						{
-							name: '月度数据',
+							name: '事故等级数量',
 							type: 'pie',
 							radius: ['50%', '80%'],
 							avoidLabelOverlap: false,
@@ -106,11 +220,11 @@
 								}
 							},
 							data: [
-								{ value: 1, name: '特别重大事故' },
-								{ value: 10, name: '重大事故' },
-								{ value: 20, name: '较大事故' },
-								{ value: 33, name: '一般事故' },
-								{ value: 50, name: '未遂事故' }
+								{ value: one, name: '特别重大事故' },
+								{ value: two, name: '重大事故' },
+								{ value: three, name: '较大事故' },
+								{ value: four, name: '一般事故' },
+								{ value: five, name: '未遂事故' }
 							],
 							center: ['50%','60%']
 						}
@@ -123,74 +237,7 @@
 					myChart.resize();
 				});
 			}
-			// 隐患整改情况
-			const initAccidentByYear =()=>{
-				let dom = document.getElementById(accidentYear.value);
-				let myChart = echarts.init(dom);
 
-				let option: EChartsOption;
-
-				option = {
-					tooltip: {
-						trigger: 'item'
-					},
-					legend: {
-						top: '0',
-						left: 'center',
-						itemWidth: fontSize(10),
-						itemHeight: fontSize(8),
-						textStyle:{
-							color: 'auto',
-							fontSize: fontSize(11)
-						}
-					},
-					series: [
-						{
-							name: '年度数据',
-							type: 'pie',
-							radius: ['50%', '80%'],
-							avoidLabelOverlap: false,
-							itemStyle: {
-								borderRadius: fontSize(2)
-							},
-							label: {
-								show: false,
-								position: 'outer',
-								fontSize: fontSize(10),
-								textBorderWidth: 0,
-								width: fontSize(40),
-								overflow: 'break'
-							},
-							// labelLine: {
-							// 	show: true,
-							// 	length: fontSize(10),
-							// 	length2: fontSize(10)
-							// },
-							emphasis: {
-								label: {
-									show: true,
-									fontSize: fontSize(22),
-									fontWeight: 'bold'
-								}
-							},
-							data: [
-								{ value: 10, name: '特别重大事故' },
-								{ value: 20, name: '重大事故' },
-								{ value: 100, name: '较大事故' },
-								{ value: 130, name: '一般事故' },
-								{ value: 150, name: '未遂事故' }
-							],
-							center: ['50%','60%']
-						}
-					]
-				};
-
-				option && myChart.setOption(option);
-
-				window.addEventListener("resize",function (){
-					myChart.resize();
-				});
-			}
 
 			function fontSize(val){
 				let nowClientWidth = document.documentElement.clientWidth;
@@ -198,25 +245,33 @@
 			}
 			const getTheme =()=>{
 				if(screenTheme.value.isDark){
-					state.choose =  'choose-dark'
+					state.selector =  'select-dark'
 				}else{
-					state.choose =  'choose-light'
+					state.selector =  'select-light'
 				}
 			}
 
 			watchEffect(() => {
 				if(props.theme){
-					state.choose =  'choose-dark'
+					state.selector =  'select-dark'
 				}else{
-					state.choose =  'choose-light'
+					state.selector =  'select-light'
 				}
+        getDataByYearId()
 			})
 
+      const changeTime = (value)=>{
+        state.timeValue[0] = value[0]
+        state.timeValue[1] = value[1]
+        getDataByYearId()
+      }
 
 			// 页面载入时执行方法
 			onMounted(() => {
-				initAccidentByMonth();
-				getTheme()
+				getTheme();
+        getTime();
+        makeList();
+        getDataByYearId();
 				// initAccidentByYear();
 			});
 
@@ -226,9 +281,8 @@
 
 			return {
 				accidentMonth,
-				accidentYear,
 				Search,
-				changeTab,
+        changeTime,
 				fontSize,
 				...toRefs(state)
 			};
@@ -243,58 +297,115 @@
 		padding: 5%;
 		position: relative;
 
-		.choose-dark{
+		.select-dark{
 			position: absolute;
-			right: 4%;
-			bottom: 4%;
-			z-index: 999;
-			display: flex;
-			align-items: center;
-			font-size: 0.75rem;
-			justify-content: space-between;
+			z-index: 99999;
+			top: -20px;
+			right: 3rem;
+			width: 30%;
+			height: 1.5rem;
+			margin-right: 0.8rem;
 
-			div{
-				padding: 2px 6px;
-				box-sizing: border-box;
-				color: rgba(17,254,238,.4);
+			::v-deep(.el-cascader){
+				width: 100% !important;
+				line-height: 100%;
+			}
+			::v-deep(.el-popper){
+				background-color: rgba(10,31,92,1);
 				border: 1px solid rgba(17,254,238,.4);
-				border-radius: 2px;
-				cursor: pointer;
-			}
-			div:hover{
 				color: #11FEEE;
-				border: 1px solid #11FEEE;
+				z-index: 999999 !important;
+				.el-cascader-node__label{
+					color: #11FEEE;
+				}
+				.el-icon{
+					color: #11FEEE;
+				}
+				.el-cascader-node{
+					&:hover{
+						background: #0049af;
+					}
+				}
 			}
-			.act{
+			::v-deep(.el-cascader-menu){
+				min-width: 50px !important;
+			}
+			::v-deep(.el-popper__arrow){
+				&::before{
+					background-color: rgba(10,31,92,.6) !important;
+					border: 1px solid rgba(17,254,238,.4);
+				}
+			}
+			::v-deep(.el-input__wrapper){
+				box-shadow: none;
+				border: 1px solid rgba(17,254,238,.2);
+				background: rgba(10,31,92,.6) !important;
+				height: 1.5rem;
 				color: #11FEEE;
-				border: 1px solid #11FEEE;
+
+				input{
+					font-size: 0.8rem;
+					color: #11FEEE;
+				}
+				.el-icon{
+					color: #11FEEE;
+				}
 			}
 		}
-		.choose-light{
-			position: absolute;
-			right: 4%;
-			bottom: 4%;
-			z-index: 999;
-			display: flex;
-			align-items: center;
-			font-size: 0.75rem;
-			justify-content: space-between;
 
-			div{
-				padding: 2px 6px;
-				box-sizing: border-box;
-				color: #ccc;
+		.select-light{
+			position: absolute;
+			z-index: 99999;
+			top: -20px;
+			right: 3rem;
+			width: 30%;
+			height: 20px;
+			margin-right: 0.8rem;
+
+			::v-deep(.el-cascader){
+				width: 100% !important;
+				line-height: 100%;
+			}
+			::v-deep(.el-popper){
+				background-color: rgba(255,255,255,1);
 				border: 1px solid #ccc;
-				border-radius: 2px;
-				cursor: pointer;
+				color: #fff;
+				z-index: 999999 !important;
+				.el-cascader-node__label{
+					color: #000;
+				}
+				.el-icon{
+					color: #000;
+				}
+				.el-cascader-node{
+					&:hover{
+						background: #ccc;
+					}
+				}
 			}
-			div:hover{
-				color: #333;
-				border: 1px solid #333;
+			::v-deep(.el-cascader-menu){
+				min-width: 80px !important;
 			}
-			.act{
-				color: #333;
-				border: 1px solid #333;
+			::v-deep(.el-popper__arrow){
+				&::before{
+					background-color: rgba(255,255,255,.6) !important;
+					border: 1px solid #ccc;
+				}
+			}
+			::v-deep(.el-input__wrapper){
+				box-shadow: none;
+				border: 1px solid #ccc;
+				background: #fff !important;
+				height: 1.5rem;
+				color: #fff;
+
+				input{
+					font-size: 0.8rem;
+					color: #000;
+				}
+				.el-icon{
+					color: #000;
+				}
 			}
 		}
 		.month{
diff --git a/src/views/riskWarningSys/warningBigScreen/components/danger.vue b/src/views/riskWarningSys/warningBigScreen/components/danger.vue
index ccf8a14..0f140b4 100644
--- a/src/views/riskWarningSys/warningBigScreen/components/danger.vue
+++ b/src/views/riskWarningSys/warningBigScreen/components/danger.vue
@@ -1,15 +1,16 @@
 <template>
 	<div class="charts-cont">
-<!--		<el-select v-model="selected" class="choose" size="small">-->
-<!--			<el-option label="月度" value="1"/>-->
-<!--			<el-option label="年度" value="2"/>-->
-<!--		</el-select>-->
-		<div :class="choose">
-			<div :class="cur===1?'act':''" @click="changeTab(1)">企业</div>
-			<div :class="cur===2?'act':''" @click="changeTab(2)">部门</div>
-		</div>
-		<div v-show="cur===1" class="month" :id="dangerMonth"></div>
-		<div v-show="cur===2" class="year" :id="dangerYear"></div>
+    <div :class="selector">
+      <el-cascader
+          class="timeSe"
+          :teleported="false"
+          v-model="timeValue"
+          :options="optionList"
+          :props="riskProps"
+          @change="changeTime"
+      />
+    </div>
+		<div class="month" :id="dangerMonth"></div>
 	</div>
 </template>
 
@@ -36,11 +37,15 @@
 	import * as echarts from "echarts";
 	import '/@/theme/bigScreen.css'
 	import {useScreenTheme} from "/@/stores/screenTheme";
+  import {riskWarningApi} from "/@/api/riskWarning";
 
 
 	interface stateType {
-		cur: number,
-		choose: string
+    selector: string,
+    timeValue: Array<any>,
+    optionList: Array<any>,
+    riskProps: object,
+    dangerData: Array<any>
 	}
 	export default defineComponent({
 		name: 'danger',
@@ -55,21 +60,131 @@
 			const screenThemes = useScreenTheme()
 			const { screenTheme }  = storeToRefs(screenThemes);
 			const dangerMonth = ref("eChartFix" + Date.now() + Math.random())
-			const dangerYear = ref("eChartFix" + Date.now() + Math.random())
 			const state = reactive<stateType>({
-				cur: 1,
-				choose: 'choose-dark'
+        selector: 'select-dark',
+        timeValue: [],
+        dangerData: [],
+        optionList: [],
+        riskProps: {
+          expandTrigger: 'hover'
+        },
 			})
+      const timeForm = {
+        hour12: false,
+        year: 'numeric',
+        month: 'numeric',
+        day: '2-digit',
+        hour: '2-digit',
+        minute: '2-digit',
+        second: '2-digit'
+      }
+      const makeList = () =>{
+        for(let i=0;i<=60;i++){
+          const newObj = {
+            label: 1990 + i + '',
+            value: 1990 + i + '',
+            children: [
+              {
+                label: '年度',
+                value: 0
+              },
+              {
+                label: '一月',
+                value: 1
+              },
+              {
+                label: '二月',
+                value: 2
+              },
+              {
+                label: '三月',
+                value: 3
+              },
+              {
+                label: '四月',
+                value: 4
+              },
+              {
+                label: '五月',
+                value: 5
+              },
+              {
+                label: '六月',
+                value: 6
+              },
+              {
+                label: '七月',
+                value: 7
+              },
+              {
+                label: '八月',
+                value: 8
+              },
+              {
+                label: '九月',
+                value: 9
+              },
+              {
+                label: '十月',
+                value: 10
+              },
+              {
+                label: '十一月',
+                value: 11
+              },
+              {
+                label: '十二月',
+                value: 12
+              }
+            ]
+          }
+          state.optionList.push(newObj)
+        }
+      }
+      const getTime = () =>{
+        const curTime = new Date().toLocaleString('zh', timeForm).replace(/\//g, '-');
+        const temp = curTime.split('-')
+        state.timeValue[0] = temp[0]
+        state.timeValue[1] = Number(temp[1])
+      }
 
-			const changeTab =(i)=>{
-				state.cur = i
-				nextTick(()=>{
-					initdangerByYear()
-				})
-			}
+      const changeTime = (value)=>{
+        state.timeValue[0] = value[0]
+        state.timeValue[1] = value[1]
+      }
+
+      const getDataByYearId = async () => {
+        getTime()
+        const data = {
+          depId: screenTheme.value.depId || 1,
+          beginYear: state.timeValue[0],
+          beginMonth: state.timeValue[1],
+          endYear: state.timeValue[0],
+          endMonth: state.timeValue[1]
+        }
+        if(state.timeValue[1] == 0){
+          data.beginMonth = 1
+          data.endMonth = 12
+        }
+        let res = await riskWarningApi().getSelfPreventByTimeDep(data);
+        if (res.data.code === '200') {
+          state.dangerData = res.data.data
+          const danger = [
+            {value: state.dangerData[0].detail.lightRiskCount,name: '一般隐患'},
+            {value: state.dangerData[0].detail.heavyRiskCount,name: '重大隐患'}
+          ]
+          initdangerByMonth(danger)
+        } else {
+          ElMessage({
+            type: 'warning',
+            message: res.data.msg
+          });
+        }
+      }
+
 			type EChartsOption = echarts.EChartsOption
 			// 隐患整改情况
-			const initdangerByMonth =()=>{
+			const initdangerByMonth =(danger)=>{
 				let dom = document.getElementById(dangerMonth.value);
 				let myChart = echarts.init(dom);
 
@@ -116,10 +231,7 @@
 									fontWeight: 'bold'
 								}
 							},
-							data: [
-								{ value: 235, name: '一般隐患' },
-								{ value: 1048, name: '重大隐患' }
-							],
+							data: danger,
 							center: ['50%','55%']
 						}
 					]
@@ -131,103 +243,42 @@
 					myChart.resize();
 				});
 			}
-			// 隐患整改情况
-			const initdangerByYear =()=>{
-				let dom = document.getElementById(dangerYear.value);
-				let myChart = echarts.init(dom);
 
-				let option: EChartsOption;
-
-				option = {
-					tooltip: {
-						trigger: 'item'
-					},
-					color: ['#FAC858','#EE6666'],
-					legend: {
-						top: '8%',
-						left: 'center',
-						itemWidth: fontSize(10),
-						itemHeight: fontSize(8),
-						textStyle:{
-							color: 'auto',
-							fontSize: fontSize(11)
-						}
-					},
-					series: [
-						{
-							name: 'Access From',
-							type: 'pie',
-							radius: '65%',
-							avoidLabelOverlap: true,
-							label: {
-								show: true,
-								position: 'inside',
-								fontSize: fontSize(12),
-								color: '#ffffff',
-								textBorderWidth: 0,
-								width: 30,
-								overflow: 'break'
-							},
-							labelLine: {
-								show: true,
-								length: 10,
-								length2: 10
-							},
-							emphasis: {
-								label: {
-									show: true,
-									fontSize: fontSize(22),
-									fontWeight: 'bold'
-								}
-							},
-							data: [
-								{ value: 35, name: '一般隐患' },
-								{ value: 1048, name: '重大隐患' }
-							],
-							center: ['50%','55%']
-						}
-					]
-				};
-
-				option && myChart.setOption(option);
-
-				window.addEventListener("resize",function (){
-					myChart.resize();
-				});
-			}
 			function fontSize(val){
 				let nowClientWidth = document.documentElement.clientWidth;
 				return val * (nowClientWidth/1920) * Number(props.size);
 			}
 
 			const getTheme =()=>{
-				if(screenTheme.value.isDark){
-					state.choose =  'choose-dark'
-				}else{
-					state.choose =  'choose-light'
-				}
+        if(screenTheme.value.isDark){
+          state.selector =  'select-dark'
+        }else{
+          state.selector =  'select-light'
+        }
 			}
 
 			watchEffect(() => {
-				if(props.theme){
-					state.choose =  'choose-dark'
-				}else{
-					state.choose =  'choose-light'
-				}
+        if(props.theme){
+          state.selector =  'select-dark'
+        }else{
+          state.selector =  'select-light'
+        }
+        getDataByYearId()
 			})
 
 			// 页面载入时执行方法
 			onMounted(() => {
-				initdangerByMonth();
+        getTime()
 				getTheme()
+        makeList()
+        getDataByYearId()
 			});
 
 			return {
 				dangerMonth,
-				dangerYear,
 				Search,
+        changeTime,
 				fontSize,
-				changeTab,
 				...toRefs(state)
 			};
 		},
@@ -241,60 +292,117 @@
 		padding: 2% 2% 0;
 		position: relative;
 
-		.choose-dark{
-			position: absolute;
-			right: 4%;
-			bottom: 4%;
-			z-index: 999;
-			display: flex;
-			align-items: center;
-			font-size: 0.75rem;
-			justify-content: space-between;
+    .select-dark{
+      position: absolute;
+      z-index: 99999;
+      bottom: 0;
+      left: 2rem;
+      width: 50%;
+      height: 1.5rem;
+      margin-right: 0.8rem;
 
-			div{
-				padding: 2px 6px;
-				box-sizing: border-box;
-				color: rgba(17,254,238,.4);
-				border: 1px solid rgba(17,254,238,.4);
-				border-radius: 2px;
-				cursor: pointer;
-			}
-			div:hover{
-				color: #11FEEE;
-				border: 1px solid #11FEEE;
-			}
-			.act{
-				color: #11FEEE;
-				border: 1px solid #11FEEE;
-			}
-		}
-		.choose-light{
-			position: absolute;
-			right: 4%;
-			bottom: 4%;
-			z-index: 999;
-			display: flex;
-			align-items: center;
-			font-size: 0.75rem;
-			justify-content: space-between;
+      ::v-deep(.el-cascader){
+        width: 100% !important;
+        line-height: 100%;
+      }
+      ::v-deep(.el-popper){
+        background-color: rgba(10,31,92,1);
+        border: 1px solid rgba(17,254,238,.4);
+        color: #11FEEE;
+        z-index: 999999 !important;
+        .el-cascader-node__label{
+          color: #11FEEE;
+        }
+        .el-icon{
+          color: #11FEEE;
+        }
+        .el-cascader-node{
+          &:hover{
+            background: #0049af;
+          }
+        }
+      }
+      ::v-deep(.el-cascader-menu){
+        min-width: 50px !important;
+      }
+      ::v-deep(.el-popper__arrow){
+        &::before{
+          background-color: rgba(10,31,92,.6) !important;
+          border: 1px solid rgba(17,254,238,.4);
+        }
+      }
+      ::v-deep(.el-input__wrapper){
+        box-shadow: none;
+        border: 1px solid rgba(17,254,238,.2);
+        background: rgba(10,31,92,.6) !important;
+        height: 1.5rem;
+        color: #11FEEE;
 
-			div{
-				padding: 2px 6px;
-				box-sizing: border-box;
-				color: #ccc;
-				border: 1px solid #ccc;
-				border-radius: 2px;
-				cursor: pointer;
-			}
-			div:hover{
-				color: #333;
-				border: 1px solid #333;
-			}
-			.act{
-				color: #333;
-				border: 1px solid #333;
-			}
-		}
+        input{
+          font-size: 0.8rem;
+          color: #11FEEE;
+        }
+        .el-icon{
+          color: #11FEEE;
+        }
+      }
+    }
+
+    .select-light{
+      position: absolute;
+      z-index: 99999;
+      bottom: 0;
+      left: 2rem;
+      width: 50%;
+      height: 20px;
+      margin-right: 0.8rem;
+
+      ::v-deep(.el-cascader){
+        width: 100% !important;
+        line-height: 100%;
+      }
+      ::v-deep(.el-popper){
+        background-color: rgba(255,255,255,1);
+        border: 1px solid #ccc;
+        color: #fff;
+        z-index: 999999 !important;
+        .el-cascader-node__label{
+          color: #000;
+        }
+        .el-icon{
+          color: #000;
+        }
+        .el-cascader-node{
+          &:hover{
+            background: #ccc;
+          }
+        }
+      }
+      ::v-deep(.el-cascader-menu){
+        min-width: 80px !important;
+      }
+      ::v-deep(.el-popper__arrow){
+        &::before{
+          background-color: rgba(255,255,255,.6) !important;
+          border: 1px solid #ccc;
+        }
+      }
+      ::v-deep(.el-input__wrapper){
+        box-shadow: none;
+        border: 1px solid #ccc;
+        background: #fff !important;
+        height: 1.5rem;
+        color: #fff;
+
+        input{
+          font-size: 0.8rem;
+          color: #000;
+        }
+        .el-icon{
+          color: #000;
+        }
+      }
+    }
 		.month{
 			width: 100%;
 			height: 100%;
diff --git a/src/views/riskWarningSys/warningBigScreen/components/risk.vue b/src/views/riskWarningSys/warningBigScreen/components/risk.vue
index 038699b..c689cad 100644
--- a/src/views/riskWarningSys/warningBigScreen/components/risk.vue
+++ b/src/views/riskWarningSys/warningBigScreen/components/risk.vue
@@ -1,15 +1,17 @@
 <template>
 	<div class="charts-cont">
-		<el-select :class="selector" v-model="month" placeholder="Select" :teleported="false" size="default">
-			<el-option
-					v-for="item in optionList"
-					:key="item.value"
-					:label="item.label"
-					:value="item.value"
+		<div :class="selector">
+			<el-cascader
+					class="timeSe"
+					:teleported="false"
+					v-model="timeValue"
+					:options="optionList"
+					:props="riskProps"
+					@change="changeTime"
 			/>
-		</el-select>
-		<div v-show="curValue===true" class="risk" :id="risk1"></div>
-		<div v-show="curValue===false" class="risk" :id="risk2"></div>
+		</div>
+		<div class="risk" :id="risk1"></div>
+<!--		<div v-show="curValue===false" class="risk" :id="risk2"></div>-->
 	</div>
 </template>
 
@@ -25,21 +27,32 @@
 	import { workApplyApi } from '/@/api/specialWorkSystem/workApply';
 	import * as echarts from 'echarts';
 	import '/@/theme/bigScreen.css'
-	import {useScreenTheme} from "/@/stores/screenTheme";
+	import { useScreenTheme } from "/@/stores/screenTheme";
+  import { riskWarningApi } from '/@/api/riskWarning';
+  import {teamManageApi} from "/@/api/systemManage/basicDateManage/personShiftManage/teamManage";
 
 
 	interface stateType {
 		curValue: boolean,
-		month: number,
+		timeValue: Array<any>,
 		optionList: Array<any>,
-		selector: string
+		selector: string,
+		riskData: Array<any>,
+		riskProps: object,
+    departmentList: Array<any>,
+    departmentRecursionList: Array<DepartmentState>;
 	}
+  interface DepartmentState {
+    depId: number;
+    depName: string;
+  }
 	export default defineComponent({
 		name: 'risk',
 		components: {},
 		props:{
 			size: Number,
-			theme: Boolean
+			theme: Boolean,
+      dep: Array
 		},
 		setup(props) {
 			const userInfo = useUserInfo()
@@ -47,76 +60,192 @@
 			const screenThemes = useScreenTheme()
 			const { screenTheme }  = storeToRefs(screenThemes);
 			const risk1 = ref("eChartRisk1" + Date.now() + Math.random())
-			const risk2 = ref("eChartRisk2" + Date.now() + Math.random())
+			// const risk2 = ref("eChartRisk2" + Date.now() + Math.random())
 			const state = reactive<stateType>({
 				curValue: true,
-				month: 0,
-				optionList: [
-					{
-						label: '年度',
-						value: 0
-					},
-					{
-						label: '一月',
-						value: 1
-					},
-					{
-						label: '二月',
-						value: 2
-					},
-					{
-						label: '三月',
-						value: 3
-					},
-					{
-						label: '四月',
-						value: 4
-					},
-					{
-						label: '五月',
-						value: 5
-					},
-					{
-						label: '六月',
-						value: 6
-					},
-					{
-						label: '七月',
-						value: 7
-					},
-					{
-						label: '八月',
-						value: 8
-					},
-					{
-						label: '九月',
-						value: 9
-					},
-					{
-						label: '十月',
-						value: 10
-					}
-				],
-				selector: 'select-dark'
+				timeValue: [],
+				optionList: [],
+				riskProps: {
+					expandTrigger: 'hover'
+				},
+				selector: 'select-dark',
+				riskData: [],
+        departmentList: [],
+        departmentRecursionList: [],
+        myVar: 0
 			})
+      const timeForm = {
+        hour12: false,
+        year: 'numeric',
+        month: 'numeric',
+        day: '2-digit',
+        hour: '2-digit',
+        minute: '2-digit',
+        second: '2-digit'
+      };
+      const makeList = () =>{
+        for(let i=0;i<=60;i++){
+          const newObj = {
+            label: 1990 + i + '',
+            value: 1990 + i + '',
+            children: [
+              {
+                label: '年度',
+                value: 0
+              },
+              {
+                label: '一月',
+                value: 1
+              },
+              {
+                label: '二月',
+                value: 2
+              },
+              {
+                label: '三月',
+                value: 3
+              },
+              {
+                label: '四月',
+                value: 4
+              },
+              {
+                label: '五月',
+                value: 5
+              },
+              {
+                label: '六月',
+                value: 6
+              },
+              {
+                label: '七月',
+                value: 7
+              },
+              {
+                label: '八月',
+                value: 8
+              },
+              {
+                label: '九月',
+                value: 9
+              },
+              {
+                label: '十月',
+                value: 10
+              },
+              {
+                label: '十一月',
+                value: 11
+              },
+              {
+                label: '十二月',
+                value: 12
+              }
+            ]
+          }
+          state.optionList.push(newObj)
+        }
+      }
+			// const swi = setInterval(()=>{
+			// 	state.curValue = !state.curValue
+			// 	if(state.curValue == true){
+			// 		nextTick(()=>{
+			// 			initRisk1()
+			// 		})
+			// 	}else{
+			// 		nextTick(()=>{
+			// 			initRisk2()
+			// 		})
+			// 	}
+      //
+			// },5000)
+      // 获取部门列表
+      const getAllDepartment = async () => {
+        let res = await teamManageApi().getAllDepartment();
+        if (res.data.code === '200') {
+          state.departmentList = JSON.parse(JSON.stringify(res.data.data))
+          recursion(state.departmentList);
+        } else {
+          ElMessage({
+            type: 'warning',
+            message: res.data.msg
+          });
+        }
+      };
 
-			const swi = setInterval(()=>{
-				state.curValue = !state.curValue
-				if(state.curValue == true){
-					nextTick(()=>{
-						initRisk1()
-					})
-				}else{
-					nextTick(()=>{
-						initRisk2()
-					})
-				}
+      const recursion = (value: any) => {
+        for (let i of value) {
+          if (i.children.length !== 0) {
+            state.departmentRecursionList.push(i);
+            recursion(i.children);
+          } else {
+            state.departmentRecursionList.push(i);
+          }
+        }
+      };
+      // const recursion = (value: any) => {
+      //   for (let i of value) {
+      //     if (i.children.length !== 0) {
+      //       state.departmentRecursionList.push(i);
+      //       recursion(i.children);
+      //     } else {
+      //       state.departmentRecursionList.push(i);
+      //     }
+      //   }
+      // };
+      const getDataByYearId = async () => {
+        getTime()
+        const data = {
+          depId: screenTheme.value.depId || 1,
+          beginYear: state.timeValue[0],
+          beginMonth: state.timeValue[1],
+          endYear: state.timeValue[0],
+          endMonth: state.timeValue[1]
+        }
+        if(state.timeValue[1] == 0){
+          data.beginMonth = 1
+          data.endMonth = 12
+        }
+        let res = await riskWarningApi().getPreventByTimeDep(data);
+        if (res.data.code === '200') {
+          state.riskData = res.data.data
+          const depList = []
+          const deathList = []
+          const hardList = []
+          const lightList = []
+          for(let index in state.riskData){
+            state.riskData[index].depId = state.departmentRecursionList.find((i: { depId: number }) => i.depId === Number(state.riskData[index].depId))?.depName;
+            depList.push(state.riskData[index].depId)
+            deathList.push(state.riskData[index].detail.deathCount)
+            hardList.push(state.riskData[index].detail.heavyInjureCount)
+            lightList.push(state.riskData[index].detail.lightInjureCount)
+          }
+          // state.departmentList.find((i: { depId: number }) => i.depId === Number(state.details.workDetail.operationDepId))?.depName;
+          if(depList.length == 0){
+            depList.push('该部门不包含子部门数据')
+            deathList.push(0)
+            hardList.push(0)
+            lightList.push(0)
+          }
+          initRisk1(depList,deathList,hardList,lightList)
+        } else {
+          ElMessage({
+            type: 'warning',
+            message: res.data.msg
+          });
+        }
+      }
 
-			},5000)
+			const changeTime = (value)=>{
+				state.timeValue[0] = value[0]
+				state.timeValue[1] = value[1]
+				getDataByYearId()
+			}
+
 
 			type EChartsOption = echarts.EChartsOption
 			// 隐患整改情况
-			const initRisk1 =()=>{
+			const initRisk1 =(depList,deathList,hardList,lightList)=>{
 				let dom = document.getElementById(risk1.value);
 				let myChart = echarts.init(dom);
 
@@ -130,8 +259,33 @@
 							type: 'shadow' // 'shadow' as default; can also be 'line' or 'shadow'
 						}
 					},
+          // dataZoom: {
+          //   type: 'slider',
+          //   show: true,
+          //   textStyle: {
+          //     color: '#fff'
+          //   },
+          //   realtime: true,
+          //   top: 20,
+          //   left: 10,
+          //   height: 12,
+          //   width: 80,
+          //   start: 0,
+          //   end: 100,
+          //   orient: 'horizontal'
+          // },
+          dataZoom: [
+            //滑动条
+            {
+              xAxisIndex: 0, //这里是从X轴的0刻度开始
+              show: false, //是否显示滑动条,不影响使用
+              type: "slider", // 这个 dataZoom 组件是 slider 型 dataZoom 组件
+              startValue: 0, // 从头开始。
+              endValue: 6, // 一次性展示几个。
+            },
+          ],
 					legend: {
-						top: '1%',
+						top: '0',
 						left: 'center',
 						itemWidth: fontSize(10),
 						itemHeight: fontSize(8),
@@ -148,8 +302,7 @@
 					},
 					xAxis: {
 						type: 'category',
-						// data: ['一月', '二月', '三月', '四月', '五月', '六月', '七月', '八月', '九月', '十月', '十一月', '十二月'],
-						data: ['企业总', 'A部门', 'B部门', 'C部门', 'D部门', 'E部门'],
+						data: depList,
 						axisLine:{
 							show: true,
 							lineStyle:{
@@ -157,7 +310,8 @@
 							}
 						},
 						axisLabel:{
-							color: '#999'
+							color: '#999',
+              fontSize: fontSize(9)
 						}
 					},
 					yAxis: {
@@ -186,8 +340,7 @@
 							emphasis: {
 								focus: 'series'
 							},
-							// data: [320, 302, 301, 334, 390, 330, 320, 301, 334, 390, 330, 320]
-							data: [320, 302, 301, 334, 390, 330],
+							data: deathList,
 							barCategoryGap: '50%'
 						},
 						{
@@ -200,8 +353,7 @@
 							emphasis: {
 								focus: 'series'
 							},
-							// data: [120, 132, 101, 134, 90, 230, 210, 132, 101, 134, 90, 230]
-							data: [120, 132, 101, 134, 90, 230],
+							data: hardList,
 							barCategoryGap: '50%'
 						},
 						{
@@ -214,131 +366,138 @@
 							emphasis: {
 								focus: 'series'
 							},
-							// data: [220, 182, 191, 234, 290, 330, 310, 191, 234, 290, 330, 310]
-							data: [220, 182, 191, 234, 290, 330],
+							data: lightList,
 							barCategoryGap: '50%'
 						}
 					]
 				};
-
-				option && myChart.setOption(option);
+				// option && myChart.setOption(option);
+        if (option && typeof option === 'object') {
+          myChart.setOption(option);
+          state.myVar = setInterval(function(){
+            if (option.dataZoom[0].endValue == depList.length ) {
+              option.dataZoom[0].endValue = 4;
+              option.dataZoom[0].startValue = 0;
+            } else {
+              option.dataZoom[0].endValue = option.dataZoom[0].endValue + 1;
+              option.dataZoom[0].startValue = option.dataZoom[0].startValue + 1;
+            }
+            myChart.setOption(option);
+          }, 6000)
+        }
 				window.addEventListener("resize",function (){
 					myChart.resize();
 				});
-				echarts.init(document.getElementById(risk2.value)).dispose()
+				// echarts.init(document.getElementById(risk2.value)).dispose()
 			}
 
-			const initRisk2 =()=>{
-				let dom = document.getElementById(risk2.value);
-				let myChart = echarts.init(dom);
-
-				let option: EChartsOption;
-
-				option = {
-					tooltip: {
-						trigger: 'axis',
-						axisPointer: {
-							// Use axis to trigger tooltip
-							type: 'shadow' // 'shadow' as default; can also be 'line' or 'shadow'
-						}
-					},
-					legend: {
-						top: '1%',
-						left: 'center',
-						itemWidth: fontSize(10),
-						itemHeight: fontSize(8),
-						textStyle:{
-							color: 'auto',
-							fontSize: fontSize(12)
-						}
-					},
-					grid: {
-						left: '2%',
-						right: '4%',
-						bottom: '0',
-						containLabel: true
-					},
-					xAxis: {
-						type: 'category',
-						// data: ['一月', '二月', '三月', '四月', '五月', '六月', '七月', '八月', '九月', '十月', '十一月', '十二月'],
-						data: ['F部门', 'G部门', 'H部门', 'I部门', 'J部门', 'K部门'],
-						axisLine:{
-							show: true,
-							lineStyle:{
-								color: '#999'
-							}
-						},
-						axisLabel:{
-							color: '#999'
-						}
-					},
-					yAxis: {
-						type: 'value',
-						axisLine:{
-							show: true,
-							lineStyle:{
-								type: 'dotted'
-							}
-						},
-						axisLabel:{
-							color: '#999'
-						},
-						splitLine:{
-							show: false
-						}
-					},
-					series: [
-						{
-							name: '可能造成死亡的',
-							type: 'bar',
-							stack: 'total',
-							label: {
-								show: false
-							},
-							emphasis: {
-								focus: 'series'
-							},
-							// data: [320, 302, 301, 334, 390, 330, 320, 301, 334, 390, 330, 320]
-							data: [320, 301, 334, 390, 330, 320],
-							barCategoryGap: '50%'
-						},
-						{
-							name: '可能造成重伤的',
-							type: 'bar',
-							stack: 'total',
-							label: {
-								show: false
-							},
-							emphasis: {
-								focus: 'series'
-							},
-							// data: [120, 132, 101, 134, 90, 230, 210, 132, 101, 134, 90, 230]
-							data: [90, 230, 210, 132, 101, 134],
-							barCategoryGap: '50%'
-						},
-						{
-							name: '可能造成轻伤的',
-							type: 'bar',
-							stack: 'total',
-							label: {
-								show: false
-							},
-							emphasis: {
-								focus: 'series'
-							},
-							// data: [220, 182, 191, 234, 290, 330, 310, 191, 234, 290, 330, 310]
-							data: [290, 330, 310, 191, 234, 290],
-							barCategoryGap: '50%'
-						}
-					]
-				};
-
-				option && myChart.setOption(option);
-				window.addEventListener("resize",function (){
-					myChart.resize();
-				});
-				echarts.init(document.getElementById(risk1.value)).dispose()
-			}
+			// const initRisk2 =()=>{
+			// 	let dom = document.getElementById(risk2.value);
+			// 	let myChart = echarts.init(dom);
+      //
+			// 	let option: EChartsOption;
+      //
+			// 	option = {
+			// 		tooltip: {
+			// 			trigger: 'axis',
+			// 			axisPointer: {
+			// 				// Use axis to trigger tooltip
+			// 				type: 'shadow' // 'shadow' as default; can also be 'line' or 'shadow'
+			// 			}
+			// 		},
+			// 		legend: {
+			// 			top: '1%',
+			// 			left: 'center',
+			// 			itemWidth: fontSize(10),
+			// 			itemHeight: fontSize(8),
+			// 			textStyle:{
+			// 				color: 'auto',
+			// 				fontSize: fontSize(12)
+			// 			}
+			// 		},
+			// 		grid: {
+			// 			left: '2%',
+			// 			right: '4%',
+			// 			bottom: '0',
+			// 			containLabel: true
+			// 		},
+			// 		xAxis: {
+			// 			type: 'category',
+			// 			data: ['F部门', 'G部门', 'H部门', 'I部门', 'J部门', 'K部门'],
+			// 			axisLine:{
+			// 				show: true,
+			// 				lineStyle:{
+			// 					color: '#999'
+			// 				}
+			// 			},
+			// 			axisLabel:{
+			// 				color: '#999'
+			// 			}
+			// 		},
+			// 		yAxis: {
+			// 			type: 'value',
+			// 			axisLine:{
+			// 				show: true,
+			// 				lineStyle:{
+			// 					type: 'dotted'
+			// 				}
+			// 			},
+			// 			axisLabel:{
+			// 				color: '#999'
+			// 			},
+			// 			splitLine:{
+			// 				show: false
+			// 			}
+			// 		},
+			// 		series: [
+			// 			{
+			// 				name: '可能造成死亡的',
+			// 				type: 'bar',
+			// 				stack: 'total',
+			// 				label: {
+			// 					show: false
+			// 				},
+			// 				emphasis: {
+			// 					focus: 'series'
+			// 				},
+			// 				data: [320, 301, 334, 390, 330, 320],
+			// 				barCategoryGap: '50%'
+			// 			},
+			// 			{
+			// 				name: '可能造成重伤的',
+			// 				type: 'bar',
+			// 				stack: 'total',
+			// 				label: {
+			// 					show: false
+			// 				},
+			// 				emphasis: {
+			// 					focus: 'series'
+			// 				},
+			// 				data: [90, 230, 210, 132, 101, 134],
+			// 				barCategoryGap: '50%'
+			// 			},
+			// 			{
+			// 				name: '可能造成轻伤的',
+			// 				type: 'bar',
+			// 				stack: 'total',
+			// 				label: {
+			// 					show: false
+			// 				},
+			// 				emphasis: {
+			// 					focus: 'series'
+			// 				},
+			// 				data: [290, 330, 310, 191, 234, 290],
+			// 				barCategoryGap: '50%'
+			// 			}
+			// 		]
+			// 	};
+      //
+			// 	option && myChart.setOption(option);
+			// 	window.addEventListener("resize",function (){
+			// 		myChart.resize();
+			// 	});
+			// 	echarts.init(document.getElementById(risk1.value)).dispose()
+			// }
 
 			const getTheme =()=>{
 				if(screenTheme.value.isDark){
@@ -348,12 +507,20 @@
 				}
 			}
 
+      const getTime = () =>{
+        const curTime = new Date().toLocaleString('zh', timeForm).replace(/\//g, '-');
+        const temp = curTime.split('-')
+        state.timeValue[0] = temp[0]
+        state.timeValue[1] = Number(temp[1])
+      }
+
 			watchEffect(() => {
 				if(props.theme){
 					state.selector =  'select-dark'
 				}else{
 					state.selector =  'select-light'
 				}
+        getDataByYearId()
 			})
 
 			function fontSize(val){
@@ -363,19 +530,23 @@
 
 			// 页面载入时执行方法
 			onMounted(() => {
-				initRisk1();
+				// initRisk1();
 				getTheme();
+        getTime();
+        makeList();
+        getAllDepartment();
+        getDataByYearId()
 			});
 
 			onBeforeUnmount(() =>{
-				clearInterval(swi)
+				clearInterval(state.myVar)
 			})
 
 			return {
 				risk1,
-				risk2,
 				Search,
 				fontSize,
+				changeTime,
 				...toRefs(state)
 			};
 		},
@@ -390,23 +561,36 @@
 		position: relative;
 		.select-dark{
 			position: absolute;
-			z-index: 999;
+			z-index: 99999;
 			top: -20px;
-			right: 1.6rem;
+			right: 3rem;
 			width: 30%;
-			height: 20px;
+			height: 1.5rem;
 			margin-right: 0.8rem;
 
+			::v-deep(.el-cascader){
+				width: 100% !important;
+				line-height: 100%;
+			}
 			::v-deep(.el-popper){
 				background-color: rgba(10,31,92,1);
 				border: 1px solid rgba(17,254,238,.4);
 				color: #11FEEE;
-				.el-select-dropdown__item{
+				z-index: 999999 !important;
+				.el-cascader-node__label{
 					color: #11FEEE;
 				}
-				.el-select-dropdown__item.hover{
-					background: #0049af;
+				.el-icon{
+					color: #11FEEE;
 				}
+				.el-cascader-node{
+					&:hover{
+						background: #0049af;
+					}
+				}
+			}
+			::v-deep(.el-cascader-menu){
+				min-width: 50px !important;
 			}
 			::v-deep(.el-popper__arrow){
 				&::before{
@@ -433,23 +617,36 @@
 
 		.select-light{
 			position: absolute;
-			z-index: 999;
+			z-index: 99999;
 			top: -20px;
-			right: 1.6rem;
+			right: 3rem;
 			width: 30%;
 			height: 20px;
 			margin-right: 0.8rem;
 
+			::v-deep(.el-cascader){
+				width: 100% !important;
+				line-height: 100%;
+			}
 			::v-deep(.el-popper){
 				background-color: rgba(255,255,255,1);
 				border: 1px solid #ccc;
 				color: #fff;
-				.el-select-dropdown__item{
+				z-index: 999999 !important;
+				.el-cascader-node__label{
 					color: #000;
 				}
-				.el-select-dropdown__item.hover{
-					background: #ccc;
+				.el-icon{
+					color: #000;
 				}
+				.el-cascader-node{
+					&:hover{
+						background: #ccc;
+					}
+				}
+			}
+			::v-deep(.el-cascader-menu){
+				min-width: 80px !important;
 			}
 			::v-deep(.el-popper__arrow){
 				&::before{
diff --git a/src/views/riskWarningSys/warningBigScreen/components/training.vue b/src/views/riskWarningSys/warningBigScreen/components/training.vue
index 68eab0b..2410257 100644
--- a/src/views/riskWarningSys/warningBigScreen/components/training.vue
+++ b/src/views/riskWarningSys/warningBigScreen/components/training.vue
@@ -1,5 +1,7 @@
 <template>
 	<div class="charts-cont">
+    <span v-if="lastDays == -1" :class="tip">该部门本年未进行应急演练</span>
+    <span v-else :class="tip">距本年度上次演练结束{{lastDays}}天</span>
 		<div v-show="curTab === 1" class="train" :id="train1"></div>
 		<div v-show="curTab === 2" class="train" :id="train2"></div>
 		<div v-show="curTab === 3" class="train" :id="train3"></div>
@@ -7,59 +9,138 @@
 </template>
 
 <script lang="ts">
-	import {toRefs, reactive, defineComponent, ref, defineAsyncComponent, onMounted, nextTick, onBeforeUnmount} from 'vue';
+import {
+  toRefs,
+  reactive,
+  defineComponent,
+  ref,
+  defineAsyncComponent,
+  onMounted,
+  nextTick,
+  onBeforeUnmount,
+  watchEffect
+} from 'vue';
 	import { storeToRefs } from 'pinia';
 	import { initBackEndControlRoutes } from '/@/router/backEnd';
 	import {useUserInfo} from "/@/stores/userInfo";
 	import { Session } from '/@/utils/storage';
 	import { Search } from '@element-plus/icons-vue'
+  import {useScreenTheme} from "/@/stores/screenTheme"
 	import { ElMessage } from 'element-plus'
 	import type { FormInstance, FormRules } from 'element-plus'
 	import { workApplyApi } from '/@/api/specialWorkSystem/workApply';
+  import { riskWarningApi } from '/@/api/riskWarning';
 	import * as echarts from 'echarts';
 	import '/@/theme/bigScreen.css'
 
 	interface stateType {
-		curTab: number
+		curTab: number,
+    timeValue: Array<any>,
+    traData: Array<any>,
+    monthData: Array<any>,
+    lastDays: number | null,
+    tip: string,
 	}
 	export default defineComponent({
 		name: 'accident',
 		components: {},
 		props:{
-			size: Number
+			size: Number,
+      theme: Boolean
 		},
 		setup(props) {
 			const userInfo = useUserInfo()
 			const { userInfos } = storeToRefs(userInfo);
+      const screenThemes = useScreenTheme()
+      const { screenTheme }  = storeToRefs(screenThemes);
 			const train1 = ref("eChartTrain1" + Date.now() + Math.random())
 			const train2 = ref("eChartTrain2" + Date.now() + Math.random())
 			const train3 = ref("eChartTrain3" + Date.now() + Math.random())
 			const state = reactive<stateType>({
-				curTab: 1
+				curTab: 1,
+        timeValue: [],
+        traData: [],
+        monthData: [],
+        lastDays: null,
+        tip: 'tip-dark'
 			})
+      const timeForm = {
+        hour12: false,
+        year: 'numeric',
+        month: 'numeric',
+        day: '2-digit',
+        hour: '2-digit',
+        minute: '2-digit',
+        second: '2-digit'
+      };
 
-			// const changeTab=()=>{
-			// 	setInterval(()=>{
-			// 		if(state.curTab<3){
-			// 			state.curTab = state.curTab + 1
-			// 			if(state.curTab == 2){
-			// 				nextTick(()=>{
-			// 					initTrain2()
-			// 				})
-			// 			}else{
-			// 				nextTick(()=>{
-			// 					initTrain3()
-			// 				})
-			// 			}
-			//
-			// 		}else{
-			// 			state.curTab = 1
-			// 			nextTick(()=>{
-			// 				initTrain1()
-			// 			})
-			// 		}
-			// 	},5000)
-			// }
+      const getDataById = async () => {
+        getTime()
+        const data = {
+          depId: screenTheme.value.depId || 1,
+          beginYear: state.timeValue[0],
+          beginMonth: 1,
+          endYear: state.timeValue[0],
+          endMonth: state.timeValue[1]
+        }
+        let res = await riskWarningApi().getEmergencyByDep(data);
+        if (res.data.code === '200') {
+          state.traData = res.data.data
+          const result = []
+          let lastTime = ''
+          for(let index in state.traData){
+            if(state.traData[index].detail && state.traData[index].detail.length>0){
+              let total = state.traData[index].detail.reduce((pre,cur)=>{
+                return pre+cur.practiceCount
+              },0)
+              result.push(total)
+              state.traData[index].totalCount = total
+            }else{
+              result.push(0)
+            }
+            for(let i in state.traData[index].detail){
+              if(state.traData[index].detail[i].lastPracticeTime != null){
+                lastTime = state.traData[index].detail[i].lastPracticeTime
+              }
+            }
+          }
+          if(!lastTime){
+            state.lastDays = -1
+          }else{
+            const date = new Date(lastTime)
+            const nTime = Date.now() - date.getTime()
+            state.lastDays = Math.floor(nTime / 86400000)
+          }
+          const arrNum = Math.ceil(result.length/4, 10);
+          let index = 0; // 定义初始索引
+          let resIndex = 0; // 用来保存每次拆分的长度
+          while(index< arrNum){
+            state.monthData[index]= result.slice(resIndex,4+resIndex);
+            resIndex += 4;
+            index++;
+          }
+          initTrain1()
+        } else {
+          ElMessage({
+            type: 'warning',
+            message: res.data.msg
+          });
+        }
+      }
+      const getTime = () =>{
+        const curTime = new Date().toLocaleString('zh', timeForm).replace(/\//g, '-');
+        const temp = curTime.split('-')
+        state.timeValue[0] = temp[0]
+        state.timeValue[1] = Number(temp[1])
+      }
+
+      const getTheme =()=>{
+        if(screenTheme.value.isDark){
+          state.tip =  'tip-dark'
+        }else{
+          state.tip =  'tip-light'
+        }
+      }
 			const changeTab = setInterval(()=>{
 				if(state.curTab<3){
 					state.curTab = state.curTab + 1
@@ -119,7 +200,6 @@
 					},
 					yAxis: {
 						type: 'category',
-						// data: ['一月', '二月', '三月', '四月', '五月', '六月','七月', '八月', '九月', '十月', '十一月', '十二月'],
 						data: ['一月', '二月', '三月', '四月'],
 						axisLine:{
 							show: true,
@@ -135,8 +215,7 @@
 						{
 							name: '2011',
 							type: 'bar',
-							// data: [18203, 23489, 29034, 104970, 131744, 630230, 18203, 23489, 29034, 104970, 131744, 630230]
-							data: [18203, 23489, 29034, 104970],
+							data: state.monthData[0],
 							itemStyle:{
 								color: {
 									x: 0,
@@ -212,7 +291,6 @@
 					},
 					yAxis: {
 						type: 'category',
-						// data: ['一月', '二月', '三月', '四月', '五月', '六月','七月', '八月', '九月', '十月', '十一月', '十二月'],
 						data: ['五月', '六月','七月', '八月'],
 						axisLine:{
 							show: true,
@@ -229,7 +307,7 @@
 							name: '2011',
 							type: 'bar',
 							// data: [18203, 23489, 29034, 104970, 131744, 630230, 18203, 23489, 29034, 104970, 131744, 630230]
-							data: [131744, 630230, 18203, 23489],
+							data: state.monthData[1],
 							barCategoryGap: '50%',
 							itemStyle:{
 								color: {
@@ -322,7 +400,7 @@
 							name: '2011',
 							type: 'bar',
 							// data: [18203, 23489, 29034, 104970, 131744, 630230, 18203, 23489, 29034, 104970, 131744, 630230]
-							data: [29034, 104970, 131744, 630230],
+							data: state.monthData[2],
 							barCategoryGap: '50%',
 							itemStyle:{
 								color: {
@@ -366,9 +444,21 @@
 				return val * (nowClientWidth/1920) * Number(props.size);
 			}
 
+
+      watchEffect(() => {
+        if(props.theme){
+          state.tip =  'tip-dark'
+        }else{
+          state.tip =  'tip-light'
+        }
+        getDataById()
+      })
+
 			// 页面载入时执行方法
 			onMounted(() => {
-				initTrain1();
+        getTime();
+        getTheme();
+        getDataById()
 			});
 			onBeforeUnmount(() =>{
 				clearInterval(changeTab)
@@ -397,6 +487,18 @@
 			height: 100%;
 		}
 	}
+  .tip-dark{
+    display: block;
+    font-size: 0.8rem;
+    color: #11feee;
+    height: 1rem;
+  }
+  .tip-light{
+    display: block;
+    font-size: 0.8rem;
+    color: #333;
+    height: 1rem;
+  }
 	.home-container {
 		height: 100%;
 		overflow: hidden;
diff --git a/src/views/riskWarningSys/warningBigScreen/index.vue b/src/views/riskWarningSys/warningBigScreen/index.vue
index 25941cb..53f4a47 100644
--- a/src/views/riskWarningSys/warningBigScreen/index.vue
+++ b/src/views/riskWarningSys/warningBigScreen/index.vue
@@ -69,8 +69,7 @@
                         <Switch style="width: 1.2rem;height: 1.2rem;cursor: pointer" @click="jumpPage(2)"/>
                     </div>
                     <div class="chart-box">
-                        <span class="train-tip">距上次演练结束 5 天</span>
-                        <training class="train-chart" :size="1"></training>
+                        <training :size="1" :theme="screenTheme.isDark"></training>
                     </div>
                 </div>
                 <div class="left-bottom">
@@ -80,15 +79,25 @@
                         <Switch style="width: 1.2rem;height: 1.2rem;cursor: pointer" @click="jumpPage(3)"/>
                     </div>
                     <div class="chart-box">
-                        <risk :size="1" :theme="screenTheme.isDark"></risk>
+                        <risk :size="1" :theme="screenTheme.isDark" :dep="departList"></risk>
                     </div>
                 </div>
             </div>
             <div class="main-middle">
                 <div class="mid-top">
                     <dv-border-box-11 title="SPI数据分析" :backgroundColor="boxBg" :color="boxBigColor" class="box-bg"></dv-border-box-11>
-                    <div class="part-tit" style="position: absolute;top: 8%;padding: 0 4%">
-                        <div></div>
+                    <div class="part-tit" style="position: absolute;top: 10%;padding: 0 4%;align-items: flex-start;z-index: 10001">
+                        <div class="spiChart">
+                            <el-cascader
+                                    class="spiSe"
+                                    :teleported="false"
+                                    v-model="depValue"
+                                    :options="departList"
+                                    :props="depProps"
+                                    :show-all-levels="false"
+                                    @change="depChange"
+                            />
+                        </div>
                         <Switch style="width: 1.2rem;height: 1.2rem;cursor: pointer" @click="jumpPage(4)"/>
                     </div>
                     <div class="chart-box" style="top: 60px;height: calc(100% - 70px)">
@@ -171,7 +180,17 @@
 
 <script lang="ts">
     import screenfull from 'screenfull';
-    import { toRefs, reactive, ref, onMounted, defineComponent, defineAsyncComponent, nextTick, onUnmounted } from 'vue';
+    import {
+        toRefs,
+        reactive,
+        ref,
+        onMounted,
+        defineComponent,
+        defineAsyncComponent,
+        nextTick,
+        onUnmounted,
+        onBeforeUnmount
+    } from 'vue';
     import { ElTable } from 'element-plus';
     import { FormInstance, FormRules, ElMessage } from 'element-plus';
     import { safetyRiskEventApi } from '/@/api/doublePreventSystem/safetyRiskEvent/index.ts';
@@ -181,6 +200,7 @@
     import '/@/theme/bigScreen.css'
     import {useScreenTheme} from "/@/stores/screenTheme"
     import {storeToRefs} from "pinia";
+    import {teamManageApi} from "/@/api/systemManage/basicDateManage/personShiftManage/teamManage";
 
     // 定义接口来定义对象的类型
     interface stateType {
@@ -189,10 +209,12 @@
         boxBigColor: Array<string>;
         isScreenfull: boolean;
         currentTime: string;
-        spiValue: number;
-        spiOptions: Array<any>;
+        depValue: number;
         dialogShow: string;
-        dialogHide: string
+        dialogHide: string;
+        depProps: object;
+        departList: Array<any>;
+        lastTrain: number | null;
     }
     export default defineComponent({
         name: 'warningScreen',
@@ -218,67 +240,54 @@
             }
             const state = reactive<stateType>({
                 boxBg: 'rgba(8, 109, 209, 0.2)',
+                depValue: 1,
                 boxColor: [],
                 boxBigColor: [],
+                lastTrain: null,
                 isScreenfull: false,
                 currentTime: '',
-                spiValue: 0,
                 dialogShow: 'hide',
                 dialogHide: 'showup',
-                spiOptions: [
-                    {
-                        value: 0,
-                        label: '公司级别SPI'
-                    },
-                    {
-                        value: 1,
-                        label: 'A事业部SPI',
-                        children: [
-                            {
-                                value: 11,
-                                label: 'A车间SPI'
-                            },
-                            {
-                                value: 12,
-                                label: 'B车间SPI'
-                            },
-                            {
-                                value: 13,
-                                label: 'C车间SPI'
-                            }
-                        ]
-                    },
-                    {
-                        value: 2,
-                        label: 'B事业部SPI',
-                        children: [
-                            {
-                                value: 21,
-                                label: 'D车间SPI'
-                            },
-                            {
-                                value: 22,
-                                label: 'E车间SPI'
-                            },
-                            {
-                                value: 23,
-                                label: 'F车间SPI'
-                            }
-                        ]
-                    }
-                ]
+                depProps: {
+                    expandTrigger: 'hover',
+                    checkStrictly: true,
+                    value: 'depId',
+                    label: 'depName',
+                    emitPath: false
+                },
+                departList: [],
             });
-
             // 页面载入时执行方法
             onMounted(() => {
-                getTime()
+                state.depValue = screenTheme.value.depId
+                getTime();
+                getAllDepartment();
+                setInterval(()=>{
+                    getTime()
+                },1000)
                 getTheme()
             });
 
             const getTime =()=>{
-                setInterval(() => {
-                    state.currentTime = new Date().toLocaleString();
-                }, 1000);
+                state.currentTime = new Date().toLocaleString();
+            }
+
+            // 获取部门列表
+            const getAllDepartment = async () => {
+                let res = await teamManageApi().getAllDepartment();
+                if (res.data.code === '200') {
+                    state.departList = JSON.parse(JSON.stringify(res.data.data))
+                } else {
+                    ElMessage({
+                        type: 'warning',
+                        message: res.data.msg
+                    });
+                }
+            }
+
+            const depChange = (value)=>{
+                state.depValue = value
+                screenThemes.setDepId(value)
             }
 
             const changeTheme = () =>{
@@ -353,6 +362,9 @@
                 window.history.go(-1);
             };
 
+            onBeforeUnmount(() =>{
+                clearInterval()
+            })
             // 隐患状态列表
             // const getDeviceRecord = async () => {
             //     const data = { pageSize: state.pageSize, pageIndex: state.pageIndex};
@@ -375,6 +387,7 @@
                 closeInfo,
                 changeTheme,
                 onScreenfullClick,
+                depChange,
                 jumpPage,
                 goBack,
                 ...toRefs(state)
@@ -621,6 +634,52 @@
                         align-items: center;
                         z-index: 9999;
 
+                        .spiChart{
+                            width: 25% !important;
+
+                            ::v-deep(.el-cascader){
+                                width: 100% !important;
+                            }
+                            ::v-deep(.el-popper){
+                                background-color: rgba(10,31,92,1);
+                                border: 1px solid rgba(17,254,238,.4);
+                                color: #11FEEE;
+                                .el-cascader-node__label{
+                                    color: #11FEEE;
+                                }
+                                .el-icon{
+                                    color: #11FEEE;
+                                }
+                                .el-cascader-node{
+                                    &:hover{
+                                        background: #0049af;
+                                    }
+                                }
+                            }
+                            ::v-deep(.el-popper__arrow){
+                                &::before{
+                                    background-color: rgba(10,31,92,.6) !important;
+                                    border: 1px solid rgba(17,254,238,.4);
+                                }
+                            }
+                            ::v-deep(.el-input__wrapper){
+                                width: 20%;
+                                box-shadow: none;
+                                border: 1px solid rgba(17,254,238,.2);
+                                background: rgba(10,31,92,.6) !important;
+                                height: 2.5rem;
+                                color: #11FEEE;
+
+                                input{
+                                    font-size: 1.25rem;
+                                    color: #11FEEE;
+                                }
+                                .el-icon{
+                                    color: #11FEEE;
+                                }
+                            }
+                        }
+
                         span{
                             font-size: 1.25rem;
                             font-weight: bolder;
@@ -641,7 +700,7 @@
                         right: 0;
                         width: 100%;
                         height: calc(100% - 50px);
-                        z-index: 99999;
+                        z-index: 10000;
                         .train-tip{
                             display: block;
                             font-size: 0.8rem;
@@ -649,11 +708,6 @@
                             margin-left: 5%;
                             color: #fff;
                             height: 1rem;
-                        }
-
-                        .train-chart{
-                            width: 100%;
-                            height: calc(100% - 1rem);
                         }
                     }
                 }
@@ -931,6 +985,53 @@
                         justify-content: space-between;
                         align-items: center;
                         z-index: 9999;
+
+                        .spiChart{
+                            width: 25% !important;
+
+                            ::v-deep(.el-cascader){
+                                width: 100% !important;
+                            }
+                            ::v-deep(.el-popper){
+                                background-color: #fff;
+                                border: 1px solid #ccc;
+                                color: #000;
+                                .el-cascader-node__label{
+                                    color: #000;
+                                }
+                                .el-icon{
+                                    color: #000;
+                                }
+                                .el-cascader-node{
+                                    &:hover{
+                                        background: #ccc;
+                                    }
+                                }
+                            }
+                            ::v-deep(.el-popper__arrow){
+                                &::before{
+                                    background-color: #fff !important;
+                                    border: 1px solid #ccc;
+                                }
+                            }
+                            ::v-deep(.el-input__wrapper){
+                                width: 20%;
+                                box-shadow: none;
+                                border: 1px solid #ccc;
+                                background: #fff !important;
+                                height: 2.5rem;
+                                color: #000;
+
+                                input{
+                                    font-size: 1.25rem;
+                                    color: #000;
+                                }
+                                .el-icon{
+                                    color: #000;
+                                }
+                            }
+                        }
+
                         span{
                             font-size: 1.25rem;
                             font-weight: bolder;
@@ -951,7 +1052,7 @@
                         right: 0;
                         width: 100%;
                         height: calc(100% - 50px);
-                        z-index: 99999;
+                        z-index: 10000;
                         .train-tip{
                             display: block;
                             font-size: 0.8rem;
@@ -959,11 +1060,6 @@
                             margin-left: 5%;
                             color: #333;
                             height: 1rem;
-                        }
-
-                        .train-chart{
-                            width: 100%;
-                            height: calc(100% - 1rem);
                         }
                     }
                 }
diff --git a/src/views/riskWarningSys/warningBigScreen/indexs/components/acc.vue b/src/views/riskWarningSys/warningBigScreen/indexs/components/acc.vue
new file mode 100644
index 0000000..c350ec4
--- /dev/null
+++ b/src/views/riskWarningSys/warningBigScreen/indexs/components/acc.vue
@@ -0,0 +1,233 @@
+<template>
+    <div id="descCont" class="dark-desc">
+      <div class="des-tit">
+        <div>2022年度事故等级分布与影响一览</div>
+        <dv-decoration8 :color="lineColor" :reverse="true" style="width:100%;" />
+      </div>
+      <div class="des-main">
+        <div v-if="descContent[0]">
+          <h4>特别重大事故共计:{{descContent[0].count}}起</h4>
+          <p>
+            死亡人数:{{descContent[0].causeDeathCount}}人;
+            重伤人数:{{descContent[0].causeHeavyInjureCount}}人;
+            轻伤人数:{{descContent[0].causeLightInjureCount}}人;
+            直接经济损失:{{descContent[0].loss}}元</p>
+        </div>
+        <div v-if="descContent[1]">
+          <h4>重大事故共计:{{descContent[1].count}}起</h4>
+          <p>
+            死亡人数:{{descContent[1].causeDeathCount}}人;
+            重伤人数:{{descContent[1].causeHeavyInjureCount}}人;
+            轻伤人数:{{descContent[1].causeLightInjureCount}}人;
+            直接经济损失:{{descContent[1].loss}}万元</p>
+        </div>
+        <div v-if="descContent[2]">
+          <h4>较大事故共计:{{descContent[2].count}}起</h4>
+          <p>
+            死亡人数:{{descContent[2].causeDeathCount}}人;
+            重伤人数:{{descContent[2].causeHeavyInjureCount}}人;
+            轻伤人数:{{descContent[2].causeLightInjureCount}}人;
+            直接经济损失:{{descContent[2].loss}}元</p>
+        </div>
+        <div v-if="descContent[3]">
+          <h4>一般事故共计:{{descContent[3].count}}起</h4>
+          <p>
+            死亡人数:{{descContent[3].causeDeathCount}}人;
+            重伤人数:{{descContent[3].causeHeavyInjureCount}}人;
+            轻伤人数:{{descContent[3].causeLightInjureCount}}人;
+            直接经济损失:{{descContent[3].loss}}元</p>
+        </div>
+        <div v-if="descContent[4]">
+          <h4>未遂事故共计:{{descContent[4].count}}起</h4>
+          <p>
+            死亡人数:{{descContent[4].causeDeathCount}}人;
+            重伤人数:{{descContent[4].causeHeavyInjureCount}}人;
+            轻伤人数:{{descContent[4].causeLightInjureCount}}人;
+            直接经济损失:{{descContent[4].loss}}元</p>
+        </div>
+      </div>
+    </div>
+</template>
+<script lang="ts">
+  import screenfull from 'screenfull';
+  import {
+    toRefs,
+    reactive,
+    ref,
+    onMounted,
+    defineComponent,
+    defineAsyncComponent,
+    nextTick,
+    onUnmounted,
+    watchEffect
+  } from 'vue';
+  import '/@/theme/bigScreen.css'
+  import {useScreenTheme} from "/@/stores/screenTheme"
+  import {storeToRefs} from "pinia";
+  import {riskWarningApi} from "/@/api/riskWarning";
+  import {ElMessage} from "element-plus/es";
+
+  // 定义接口来定义对象的类型
+  interface stateType {
+    descContent: Array<any>;
+    lineColor: Array<string>;
+  }
+
+  export default defineComponent({
+    name: 'accDesc',
+    components: {},
+    props:{
+      content: Object || null
+    },
+    setup(props) {
+      const screenThemes = useScreenTheme()
+      const { screenTheme } = storeToRefs(screenThemes);
+      const state = reactive<stateType>({
+        descContent: [],
+        lineColor: ['#11FEEE'],
+      });
+      const getDataByYearId = async () => {
+        const data = {
+          depId: screenTheme.value.depId || 1,
+          beginYear: state.timeValue[0],
+          beginMonth: state.timeValue[1],
+          endYear: state.timeValue[0],
+          endMonth: state.timeValue[1]
+        }
+        if(state.timeValue[1] == '0'){
+          data.beginMonth = '1'
+          data.endMonth = '12'
+        }
+        let res = await riskWarningApi().getRiskByTimeDep(data);
+        if (res.data.code === '200') {
+
+        } else {
+          ElMessage({
+            type: 'warning',
+            message: res.data.msg
+          });
+        }
+      }
+      const getTheme =()=>{
+        if(screenTheme.value.isDark){
+          window.document.getElementById('descCont').setAttribute( "class", 'dark-desc' );
+          state.lineColor = ['#11FEEE']
+        }else{
+          window.document.getElementById('descCont').setAttribute( "class", 'light-desc' );
+          state.lineColor = ['#333','#ccc']
+        }
+      }
+
+      watchEffect(() => {
+        if(props.content && props.content.accData && props.content.accData[0] && props.content.accData[1] && props.content.accData[2] && props.content.accData[3] && props.content.accData[4]){
+          state.descContent = props.content.accData
+        }
+      })
+
+      // 页面载入时执行方法
+      onMounted(() => {
+        getTheme();
+      });
+      return {
+        ...toRefs(state)
+      };
+    }
+  });
+</script>
+
+<style scoped lang="scss">
+  .dark-desc{
+    width: 100%;
+    height: 100%;
+
+    .des-tit{
+      width: 100%;
+      &>div{
+        font-size: 1.5rem;
+        height: 2.2rem;
+        line-height: 2.2rem;
+        text-align: center;
+        font-weight: bolder;
+        color: #11FEEE;
+      }
+    }
+    .des-main{
+      width: 100%;
+      height: calc(96% - 2.2rem);
+      padding: 1rem;
+      overflow: auto;
+      color: #11FEEE;
+
+      &::-webkit-scrollbar { width: 0; height: 0; color: transparent; }
+      &::scrollbar { width: 0; height: 0; color: transparent; }
+
+      &>div{
+        margin-bottom: 1rem;
+        &>h4{
+          font-size: 1.25rem;
+          display: flex;
+          align-items: center;
+
+          span{
+            margin-right: 10px;
+          }
+          &:first-of-type{
+            margin-bottom: 10px;
+          }
+        }
+
+        &>p{
+          font-size: 1rem;
+          margin-top: 10px;
+        }
+      }
+    }
+  }
+  .light-desc{
+    width: 100%;
+    height: 100%;
+
+    .des-tit{
+      width: 100%;
+      &>div{
+        font-size: 1.5rem;
+        height: 2.2rem;
+        line-height: 2.2rem;
+        text-align: center;
+        font-weight: bolder;
+        color: #333;
+      }
+    }
+    .des-main{
+      width: 100%;
+      height: calc(96% - 2.2rem);
+      padding: 1rem;
+      overflow: auto;
+      color: #333;
+
+      &::-webkit-scrollbar { width: 0; height: 0; color: transparent; }
+      &::scrollbar { width: 0; height: 0; color: transparent; }
+
+      &>div{
+        margin-bottom: 1rem;
+        &>h4{
+          font-size: 1.25rem;
+          display: flex;
+          align-items: center;
+
+          span{
+            margin-right: 10px;
+          }
+          &:first-of-type{
+            margin-bottom: 10px;
+          }
+        }
+
+        &>p{
+          font-size: 1rem;
+          margin-top: 10px;
+        }
+      }
+    }
+  }
+</style>
\ No newline at end of file
diff --git a/src/views/riskWarningSys/warningBigScreen/indexs/components/dan.vue b/src/views/riskWarningSys/warningBigScreen/indexs/components/dan.vue
new file mode 100644
index 0000000..15e93f2
--- /dev/null
+++ b/src/views/riskWarningSys/warningBigScreen/indexs/components/dan.vue
@@ -0,0 +1,215 @@
+<template>
+    <div id="descCont" class="dark-desc">
+      <div class="des-tit">
+        <div>隐患等级分布与隐患整改率</div>
+        <dv-decoration8 :color="lineColor" :reverse="true" style="width:100%;" />
+      </div>
+      <div class="des-main">
+        <div>
+          <h4 v-if="descContent.detail && descContent.detail.heavyRiskCount">
+            重大隐患数量:{{descContent.detail.heavyRiskCount}}
+          </h4>
+          <h4 v-else>
+            重大隐患数量:0
+          </h4>
+        </div>
+        <div>
+          <h4 v-if="descContent.detail && descContent.detail.heavyRiskCount && descContent.detail.heavyRiskFinishCount">
+            已完成整改:{{descContent.detail.heavyRiskCount == 0 ? 0 + '%' : Math.round(descContent.detail.heavyRiskFinishCount / descContent.detail.heavyRiskCount * 10000) / 100.00 + '%'}}
+          </h4>
+          <h4 v-else>
+            已完成整改:0%
+          </h4>
+        </div>
+<!--        <div>-->
+<!--          <h4>整改中:8%;</h4>-->
+<!--        </div>-->
+<!--        <div>-->
+<!--          <h4>暂未整改:3%;</h4>-->
+<!--        </div>-->
+        <div>
+          <h4 v-if="descContent.detail && descContent.detail.lightRiskCount">
+            一般隐患数量:{{descContent.detail.lightRiskCount}}
+          </h4>
+          <h4 v-else>
+            一般隐患数量:0
+          </h4>
+        </div>
+        <div>
+          <h4 v-if="descContent.detail && descContent.detail.lightRiskCount && descContent.detail.lightRiskFinishCount">
+            已完成整改:{{descContent.detail.lightRiskCount == 0 ? 0 + '%' : Math.round(descContent.detail.lightRiskFinishCount / descContent.detail.lightRiskCount * 10000) / 100.00 + '%'}}
+          </h4>
+          <h4 v-else>
+            已完成整改:0%
+          </h4>
+        </div>
+<!--        <div>-->
+<!--          <h4>整改中:19%;</h4>-->
+<!--        </div>-->
+<!--        <div>-->
+<!--          <h4>暂未整改:6%;</h4>-->
+<!--        </div>-->
+      </div>
+    </div>
+</template>
+<script lang="ts">
+  import screenfull from 'screenfull';
+  import {
+    toRefs,
+    reactive,
+    ref,
+    onMounted,
+    defineComponent,
+    defineAsyncComponent,
+    nextTick,
+    onUnmounted,
+    watchEffect
+  } from 'vue';
+  import '/@/theme/bigScreen.css'
+  import {useScreenTheme} from "/@/stores/screenTheme"
+  import {storeToRefs} from "pinia";
+
+  // 定义接口来定义对象的类型
+  interface stateType {
+    descContent: Object;
+    lineColor: Array<string>;
+  }
+  export default defineComponent({
+    name: 'danDesc',
+    components: {},
+    props:{
+      content: Object || null
+    },
+    setup(props) {
+      const screenThemes = useScreenTheme()
+      const { screenTheme } = storeToRefs(screenThemes);
+      const state = reactive<stateType>({
+        descContent: {
+
+        },
+        lineColor: ['#11FEEE'],
+      });
+
+      const getTheme =()=>{
+        if(screenTheme.value.isDark){
+          window.document.getElementById('descCont').setAttribute( "class", 'dark-desc' );
+          state.lineColor = ['#11FEEE']
+        }else{
+          window.document.getElementById('descCont').setAttribute( "class", 'light-desc' );
+          state.lineColor = ['#333','#ccc']
+        }
+      }
+
+      watchEffect(() => {
+        if(props.content && props.content.dangerData && props.content.dangerData[0]){
+          state.descContent = props.content.dangerData[0]
+        }
+      })
+
+      // 页面载入时执行方法
+      onMounted(() => {
+        getTheme();
+      });
+      return {
+        ...toRefs(state)
+      };
+    }
+  });
+</script>
+
+<style scoped lang="scss">
+  .dark-desc{
+    width: 100%;
+    height: 100%;
+
+    .des-tit{
+      width: 100%;
+      &>div{
+        font-size: 1.5rem;
+        height: 2.2rem;
+        line-height: 2.2rem;
+        text-align: center;
+        font-weight: bolder;
+        color: #11FEEE;
+      }
+    }
+    .des-main{
+      width: 100%;
+      height: calc(96% - 2.2rem);
+      padding: 1rem;
+      overflow: auto;
+      color: #11FEEE;
+
+      &::-webkit-scrollbar { width: 0; height: 0; color: transparent; }
+      &::scrollbar { width: 0; height: 0; color: transparent; }
+
+      &>div{
+        margin-bottom: 1rem;
+        &>h4{
+          font-size: 1.25rem;
+          display: flex;
+          align-items: center;
+
+          span{
+            margin-right: 10px;
+          }
+          &:first-of-type{
+            margin-bottom: 10px;
+          }
+        }
+
+        &>p{
+          font-size: 1rem;
+          margin-top: 10px;
+        }
+      }
+    }
+  }
+  .light-desc{
+    width: 100%;
+    height: 100%;
+
+    .des-tit{
+      width: 100%;
+      &>div{
+        font-size: 1.5rem;
+        height: 2.2rem;
+        line-height: 2.2rem;
+        text-align: center;
+        font-weight: bolder;
+        color: #333;
+      }
+    }
+    .des-main{
+      width: 100%;
+      height: calc(96% - 2.2rem);
+      padding: 1rem;
+      overflow: auto;
+      color: #333;
+
+      &::-webkit-scrollbar { width: 0; height: 0; color: transparent; }
+      &::scrollbar { width: 0; height: 0; color: transparent; }
+
+      &>div{
+        margin-bottom: 1rem;
+        &>h4{
+          font-size: 1.25rem;
+          display: flex;
+          align-items: center;
+
+          span{
+            margin-right: 10px;
+          }
+          &:first-of-type{
+            margin-bottom: 10px;
+          }
+        }
+
+        &>p{
+          font-size: 1rem;
+          margin-top: 10px;
+        }
+      }
+    }
+  }
+</style>
\ No newline at end of file
diff --git a/src/views/riskWarningSys/warningBigScreen/indexs/components/edu.vue b/src/views/riskWarningSys/warningBigScreen/indexs/components/edu.vue
new file mode 100644
index 0000000..7106a5c
--- /dev/null
+++ b/src/views/riskWarningSys/warningBigScreen/indexs/components/edu.vue
@@ -0,0 +1,210 @@
+<template>
+    <div id="descCont" class="dark-desc">
+      <div class="des-tit">
+        <div>教育培训情况汇总</div>
+        <dv-decoration8 :color="lineColor" :reverse="true" style="width:100%;" />
+      </div>
+      <div class="des-main">
+        <div>
+          <h4>公司总计:</h4>
+        </div>
+        <div>
+          <h4>企业总设计培训次数:50次</h4>
+        </div>
+        <div>
+          <h4>企业总设计培训时间:100小时</h4>
+        </div>
+        <div>
+          <h4>企业总完成培训次数:50次</h4>
+        </div>
+        <div>
+          <h4>企业总完成培训时间:100小时</h4>
+        </div>
+        <div>
+          <h4>企业总完成比例:100%</h4>
+        </div>
+        <div>
+          <h4>部门级完成度最低部门前三:</h4>
+        </div>
+        <div>
+          <h4>有机化工事业部</h4>
+        </div>
+        <div>
+          <h4>设计培训次数:--次</h4>
+        </div>
+        <div>
+          <h4>设计培训时间:--小时</h4>
+        </div>
+        <div>
+          <h4>完成培训次数:--次</h4>
+        </div>
+        <div>
+          <h4>完成培训时间:--小时</h4>
+        </div>
+        <div>
+          <h4>完成比例:--%</h4>
+        </div>
+      </div>
+    </div>
+</template>
+<script lang="ts">
+  import screenfull from 'screenfull';
+  import {
+    toRefs,
+    reactive,
+    ref,
+    onMounted,
+    defineComponent,
+    defineAsyncComponent,
+    nextTick,
+    onUnmounted,
+    watchEffect
+  } from 'vue';
+  import '/@/theme/bigScreen.css'
+  import {useScreenTheme} from "/@/stores/screenTheme"
+  import {storeToRefs} from "pinia";
+
+  // 定义接口来定义对象的类型
+  interface stateType {
+    descContent: Object;
+    lineColor: Array<string>;
+  }
+  export default defineComponent({
+    name: 'eduDesc',
+    components: {},
+    props:{
+      content: Object || null
+    },
+    setup(props) {
+      const screenThemes = useScreenTheme()
+      const { screenTheme } = storeToRefs(screenThemes);
+      const state = reactive<stateType>({
+        descContent: {
+
+        },
+        lineColor: ['#11FEEE'],
+      });
+
+      const getTheme =()=>{
+        if(screenTheme.value.isDark){
+          window.document.getElementById('descCont').setAttribute( "class", 'dark-desc' );
+          state.lineColor = ['#11FEEE']
+        }else{
+          window.document.getElementById('descCont').setAttribute( "class", 'light-desc' );
+          state.lineColor = ['#333','#ccc']
+        }
+      }
+
+      watchEffect(() => {
+        // if(props.content){
+        //   state.descContent = props.content
+        // }
+      })
+
+      // 页面载入时执行方法
+      onMounted(() => {
+        getTheme();
+      });
+      return {
+        ...toRefs(state)
+      };
+    }
+  });
+</script>
+
+<style scoped lang="scss">
+  .dark-desc{
+    width: 100%;
+    height: 100%;
+
+    .des-tit{
+      width: 100%;
+      &>div{
+        font-size: 1.5rem;
+        height: 2.2rem;
+        line-height: 2.2rem;
+        text-align: center;
+        font-weight: bolder;
+        color: #11FEEE;
+      }
+    }
+    .des-main{
+      width: 100%;
+      height: calc(96% - 2.2rem);
+      padding: 1rem;
+      overflow: auto;
+      color: #11FEEE;
+
+      &::-webkit-scrollbar { width: 0; height: 0; color: transparent; }
+      &::scrollbar { width: 0; height: 0; color: transparent; }
+
+      &>div{
+        margin-bottom: 1rem;
+        &>h4{
+          font-size: 1.25rem;
+          display: flex;
+          align-items: center;
+
+          span{
+            margin-right: 10px;
+          }
+          &:first-of-type{
+            margin-bottom: 10px;
+          }
+        }
+
+        &>p{
+          font-size: 1rem;
+          margin-top: 10px;
+        }
+      }
+    }
+  }
+  .light-desc{
+    width: 100%;
+    height: 100%;
+
+    .des-tit{
+      width: 100%;
+      &>div{
+        font-size: 1.5rem;
+        height: 2.2rem;
+        line-height: 2.2rem;
+        text-align: center;
+        font-weight: bolder;
+        color: #333;
+      }
+    }
+    .des-main{
+      width: 100%;
+      height: calc(96% - 2.2rem);
+      padding: 1rem;
+      overflow: auto;
+      color: #333;
+
+      &::-webkit-scrollbar { width: 0; height: 0; color: transparent; }
+      &::scrollbar { width: 0; height: 0; color: transparent; }
+
+      &>div{
+        margin-bottom: 1rem;
+        &>h4{
+          font-size: 1.25rem;
+          display: flex;
+          align-items: center;
+
+          span{
+            margin-right: 10px;
+          }
+          &:first-of-type{
+            margin-bottom: 10px;
+          }
+        }
+
+        &>p{
+          font-size: 1rem;
+          margin-top: 10px;
+        }
+      }
+    }
+  }
+</style>
\ No newline at end of file
diff --git a/src/views/riskWarningSys/warningBigScreen/indexs/components/mon.vue b/src/views/riskWarningSys/warningBigScreen/indexs/components/mon.vue
new file mode 100644
index 0000000..d459b10
--- /dev/null
+++ b/src/views/riskWarningSys/warningBigScreen/indexs/components/mon.vue
@@ -0,0 +1,175 @@
+<template>
+    <div id="descCont" class="dark-desc">
+      <div class="des-tit">
+        <div>监控列表</div>
+        <dv-decoration8 :color="lineColor" :reverse="true" style="width:100%;" />
+      </div>
+      <div class="des-main">
+        <div>
+          <h4>请选择所要查看的监控:</h4>
+          <p>监控系统待接入...</p>
+        </div>
+      </div>
+    </div>
+</template>
+<script lang="ts">
+  import screenfull from 'screenfull';
+  import {
+    toRefs,
+    reactive,
+    ref,
+    onMounted,
+    defineComponent,
+    defineAsyncComponent,
+    nextTick,
+    onUnmounted,
+    watchEffect
+  } from 'vue';
+  import '/@/theme/bigScreen.css'
+  import {useScreenTheme} from "/@/stores/screenTheme"
+  import {storeToRefs} from "pinia";
+
+  // 定义接口来定义对象的类型
+  interface stateType {
+    descContent: Object;
+    lineColor: Array<string>;
+  }
+  export default defineComponent({
+    name: 'monDesc',
+    components: {},
+    props:{
+      content: Object || null
+    },
+    setup(props) {
+      const screenThemes = useScreenTheme()
+      const { screenTheme } = storeToRefs(screenThemes);
+      const state = reactive<stateType>({
+        descContent: {
+
+        },
+        lineColor: ['#11FEEE'],
+      });
+
+      const getTheme =()=>{
+        if(screenTheme.value.isDark){
+          window.document.getElementById('descCont').setAttribute( "class", 'dark-desc' );
+          state.lineColor = ['#11FEEE']
+        }else{
+          window.document.getElementById('descCont').setAttribute( "class", 'light-desc' );
+          state.lineColor = ['#333','#ccc']
+        }
+      }
+
+      watchEffect(() => {
+        // if(props.content){
+        //   state.descContent = props.content
+        // }
+      })
+
+      // 页面载入时执行方法
+      onMounted(() => {
+        getTheme();
+      });
+      return {
+        ...toRefs(state)
+      };
+    }
+  });
+</script>
+
+<style scoped lang="scss">
+  .dark-desc{
+    width: 100%;
+    height: 100%;
+
+    .des-tit{
+      width: 100%;
+      &>div{
+        font-size: 1.5rem;
+        height: 2.2rem;
+        line-height: 2.2rem;
+        text-align: center;
+        font-weight: bolder;
+        color: #11FEEE;
+      }
+    }
+    .des-main{
+      width: 100%;
+      height: calc(96% - 2.2rem);
+      padding: 1rem;
+      overflow: auto;
+      color: #11FEEE;
+
+      &::-webkit-scrollbar { width: 0; height: 0; color: transparent; }
+      &::scrollbar { width: 0; height: 0; color: transparent; }
+
+      &>div{
+        margin-bottom: 1rem;
+        &>h4{
+          font-size: 1.25rem;
+          display: flex;
+          align-items: center;
+
+          span{
+            margin-right: 10px;
+          }
+          &:first-of-type{
+            margin-bottom: 10px;
+          }
+        }
+
+        &>p{
+          font-size: 1rem;
+          margin-top: 10px;
+        }
+      }
+    }
+  }
+  .light-desc{
+    width: 100%;
+    height: 100%;
+
+    .des-tit{
+      width: 100%;
+      &>div{
+        font-size: 1.5rem;
+        height: 2.2rem;
+        line-height: 2.2rem;
+        text-align: center;
+        font-weight: bolder;
+        color: #333;
+      }
+    }
+    .des-main{
+      width: 100%;
+      height: calc(96% - 2.2rem);
+      padding: 1rem;
+      overflow: auto;
+      color: #333;
+
+      &::-webkit-scrollbar { width: 0; height: 0; color: transparent; }
+      &::scrollbar { width: 0; height: 0; color: transparent; }
+
+      &>div{
+        margin-bottom: 1rem;
+        &>h4{
+          font-size: 1.25rem;
+          display: flex;
+          align-items: center;
+
+          span{
+            margin-right: 10px;
+          }
+          &:first-of-type{
+            margin-bottom: 10px;
+          }
+        }
+
+        &>p{
+          font-size: 1rem;
+          margin-top: 10px;
+        }
+      }
+    }
+  }
+</style>
\ No newline at end of file
diff --git a/src/views/riskWarningSys/warningBigScreen/indexs/components/msg.vue b/src/views/riskWarningSys/warningBigScreen/indexs/components/msg.vue
new file mode 100644
index 0000000..b955f19
--- /dev/null
+++ b/src/views/riskWarningSys/warningBigScreen/indexs/components/msg.vue
@@ -0,0 +1,183 @@
+<template>
+    <div id="descCont" class="dark-desc">
+      <div class="des-tit">
+        <div>预警消息SPI报告-2022年8月</div>
+        <dv-decoration8 :color="lineColor" :reverse="true" style="width:100%;" />
+      </div>
+      <div class="des-main">
+        <div>
+          <h4>2022年8月整体SPI指数317.65,处于安全范围以内。</h4>
+          <p>8月份spi中教育培训比例不足和一般风险新增较多,对SPI总值影响较大,请注意调整相关因素环节的处理措施。</p>
+        </div>
+        <div>
+          <h4>次月预警消息</h4>
+          <p>未来一个月该地区气候干燥,降水量少,高温天气仍将持续,应注意防范消防风险,注意重点消防区域的消防设置设备的可用性检查</p>
+        </div>
+        <div>
+          <h4>本月SPI基础数据构成:</h4>
+          <p>...</p>
+        </div>
+      </div>
+    </div>
+</template>
+<script lang="ts">
+  import screenfull from 'screenfull';
+  import {
+    toRefs,
+    reactive,
+    ref,
+    onMounted,
+    defineComponent,
+    defineAsyncComponent,
+    nextTick,
+    onUnmounted,
+    watchEffect
+  } from 'vue';
+  import '/@/theme/bigScreen.css'
+  import {useScreenTheme} from "/@/stores/screenTheme"
+  import {storeToRefs} from "pinia";
+
+  // 定义接口来定义对象的类型
+  interface stateType {
+    descContent: Object;
+    lineColor: Array<string>;
+  }
+  export default defineComponent({
+    name: 'msgDesc',
+    components: {},
+    props:{
+      content: Object || null
+    },
+    setup(props) {
+      const screenThemes = useScreenTheme()
+      const { screenTheme } = storeToRefs(screenThemes);
+      const state = reactive<stateType>({
+        descContent: {
+
+        },
+        lineColor: ['#11FEEE'],
+      });
+
+      const getTheme =()=>{
+        if(screenTheme.value.isDark){
+          window.document.getElementById('descCont').setAttribute( "class", 'dark-desc' );
+          state.lineColor = ['#11FEEE']
+        }else{
+          window.document.getElementById('descCont').setAttribute( "class", 'light-desc' );
+          state.lineColor = ['#333','#ccc']
+        }
+      }
+
+      watchEffect(() => {
+        // if(props.content){
+        //   state.descContent = props.content
+        // }
+      })
+
+      // 页面载入时执行方法
+      onMounted(() => {
+        getTheme();
+      });
+      return {
+        ...toRefs(state)
+      };
+    }
+  });
+</script>
+
+<style scoped lang="scss">
+  .dark-desc{
+    width: 100%;
+    height: 100%;
+
+    .des-tit{
+      width: 100%;
+      &>div{
+        font-size: 1.5rem;
+        height: 2.2rem;
+        line-height: 2.2rem;
+        text-align: center;
+        font-weight: bolder;
+        color: #11FEEE;
+      }
+    }
+    .des-main{
+      width: 100%;
+      height: calc(96% - 2.2rem);
+      padding: 1rem;
+      overflow: auto;
+      color: #11FEEE;
+
+      &::-webkit-scrollbar { width: 0; height: 0; color: transparent; }
+      &::scrollbar { width: 0; height: 0; color: transparent; }
+
+      &>div{
+        margin-bottom: 1rem;
+        &>h4{
+          font-size: 1.25rem;
+          display: flex;
+          align-items: center;
+
+          span{
+            margin-right: 10px;
+          }
+          &:first-of-type{
+            margin-bottom: 10px;
+          }
+        }
+
+        &>p{
+          font-size: 1rem;
+          margin-top: 10px;
+        }
+      }
+    }
+  }
+  .light-desc{
+    width: 100%;
+    height: 100%;
+
+    .des-tit{
+      width: 100%;
+      &>div{
+        font-size: 1.5rem;
+        height: 2.2rem;
+        line-height: 2.2rem;
+        text-align: center;
+        font-weight: bolder;
+        color: #333;
+      }
+    }
+    .des-main{
+      width: 100%;
+      height: calc(96% - 2.2rem);
+      padding: 1rem;
+      overflow: auto;
+      color: #333;
+
+      &::-webkit-scrollbar { width: 0; height: 0; color: transparent; }
+      &::scrollbar { width: 0; height: 0; color: transparent; }
+
+      &>div{
+        margin-bottom: 1rem;
+        &>h4{
+          font-size: 1.25rem;
+          display: flex;
+          align-items: center;
+
+          span{
+            margin-right: 10px;
+          }
+          &:first-of-type{
+            margin-bottom: 10px;
+          }
+        }
+
+        &>p{
+          font-size: 1rem;
+          margin-top: 10px;
+        }
+      }
+    }
+  }
+</style>
\ No newline at end of file
diff --git a/src/views/riskWarningSys/warningBigScreen/indexs/components/pro.vue b/src/views/riskWarningSys/warningBigScreen/indexs/components/pro.vue
new file mode 100644
index 0000000..e78d145
--- /dev/null
+++ b/src/views/riskWarningSys/warningBigScreen/indexs/components/pro.vue
@@ -0,0 +1,183 @@
+<template>
+    <div id="descCont" class="dark-desc">
+      <div class="des-tit">
+        <div>人员持证上岗情况</div>
+        <dv-decoration8 :color="lineColor" :reverse="true" style="width:100%;" />
+      </div>
+      <div class="des-main">
+        <div>
+          <h4>该岗位工种持证人员:1048人</h4>
+        </div>
+        <div>
+          <h4>该岗位工种未持证人员:735人</h4>
+        </div>
+        <div>
+          <h4>关键岗位必要持证无证上岗:1人</h4>
+        </div>
+        <div>
+          <p>提醒:本年度存在有1人在管家必要持证岗位未持证上岗情况,该情况已经上报监管系统,请注意控制该风险因素。</p>
+        </div>
+      </div>
+    </div>
+</template>
+<script lang="ts">
+  import screenfull from 'screenfull';
+  import {
+    toRefs,
+    reactive,
+    ref,
+    onMounted,
+    defineComponent,
+    defineAsyncComponent,
+    nextTick,
+    onUnmounted,
+    watchEffect
+  } from 'vue';
+  import '/@/theme/bigScreen.css'
+  import {useScreenTheme} from "/@/stores/screenTheme"
+  import {storeToRefs} from "pinia";
+
+  // 定义接口来定义对象的类型
+  interface stateType {
+    descContent: Object;
+    lineColor: Array<string>;
+  }
+  export default defineComponent({
+    name: 'proDesc',
+    components: {},
+    props:{
+      content: Object || null
+    },
+    setup(props) {
+      const screenThemes = useScreenTheme()
+      const { screenTheme } = storeToRefs(screenThemes);
+      const state = reactive<stateType>({
+        descContent: {
+
+        },
+        lineColor: ['#11FEEE'],
+      });
+
+      const getTheme =()=>{
+        if(screenTheme.value.isDark){
+          window.document.getElementById('descCont').setAttribute( "class", 'dark-desc' );
+          state.lineColor = ['#11FEEE']
+        }else{
+          window.document.getElementById('descCont').setAttribute( "class", 'light-desc' );
+          state.lineColor = ['#333','#ccc']
+        }
+      }
+
+      watchEffect(() => {
+        // if(props.content){
+        //   state.descContent = props.content
+        // }
+      })
+
+      // 页面载入时执行方法
+      onMounted(() => {
+        getTheme();
+      });
+      return {
+        ...toRefs(state)
+      };
+    }
+  });
+</script>
+
+<style scoped lang="scss">
+  .dark-desc{
+    width: 100%;
+    height: 100%;
+
+    .des-tit{
+      width: 100%;
+      &>div{
+        font-size: 1.5rem;
+        height: 2.2rem;
+        line-height: 2.2rem;
+        text-align: center;
+        font-weight: bolder;
+        color: #11FEEE;
+      }
+    }
+    .des-main{
+      width: 100%;
+      height: calc(96% - 2.2rem);
+      padding: 1rem;
+      overflow: auto;
+      color: #11FEEE;
+
+      &::-webkit-scrollbar { width: 0; height: 0; color: transparent; }
+      &::scrollbar { width: 0; height: 0; color: transparent; }
+
+      &>div{
+        margin-bottom: 1rem;
+        &>h4{
+          font-size: 1.25rem;
+          display: flex;
+          align-items: center;
+
+          span{
+            margin-right: 10px;
+          }
+          &:first-of-type{
+            margin-bottom: 10px;
+          }
+        }
+
+        &>p{
+          font-size: 1rem;
+          margin-top: 10px;
+        }
+      }
+    }
+  }
+  .light-desc{
+    width: 100%;
+    height: 100%;
+
+    .des-tit{
+      width: 100%;
+      &>div{
+        font-size: 1.5rem;
+        height: 2.2rem;
+        line-height: 2.2rem;
+        text-align: center;
+        font-weight: bolder;
+        color: #333;
+      }
+    }
+    .des-main{
+      width: 100%;
+      height: calc(96% - 2.2rem);
+      padding: 1rem;
+      overflow: auto;
+      color: #333;
+
+      &::-webkit-scrollbar { width: 0; height: 0; color: transparent; }
+      &::scrollbar { width: 0; height: 0; color: transparent; }
+
+      &>div{
+        margin-bottom: 1rem;
+        &>h4{
+          font-size: 1.25rem;
+          display: flex;
+          align-items: center;
+
+          span{
+            margin-right: 10px;
+          }
+          &:first-of-type{
+            margin-bottom: 10px;
+          }
+        }
+
+        &>p{
+          font-size: 1rem;
+          margin-top: 10px;
+        }
+      }
+    }
+  }
+</style>
\ No newline at end of file
diff --git a/src/views/riskWarningSys/warningBigScreen/indexs/components/risk.vue b/src/views/riskWarningSys/warningBigScreen/indexs/components/risk.vue
new file mode 100644
index 0000000..3faf4a3
--- /dev/null
+++ b/src/views/riskWarningSys/warningBigScreen/indexs/components/risk.vue
@@ -0,0 +1,201 @@
+<template>
+    <div id="descCont" class="dark-desc">
+      <div class="des-tit">
+        <div>隐患影响等级分布详情</div>
+        <dv-decoration8 :color="lineColor" :reverse="true" style="width:100%;" />
+      </div>
+      <div class="des-main">
+        <div v-for="(item,index) in descContent.riskData" :key="index">
+          <div>
+            <h4>{{item.depId}}共上报隐患总数:{{item.detail.riskTotalCount }} 个</h4>
+          </div>
+          <div>
+            <h4>其中:</h4>
+          </div>
+          <div>
+            <h4>一般隐患数量:{{ item.detail.lightRiskCount }} 个</h4>
+          </div>
+          <div>
+            <h4>重大隐患数量:{{ item.detail.heavyRiskCount }} 个</h4>
+          </div>
+          <div>
+            <h4>可能造成死亡的:{{ item.detail.deathCount }} 个</h4>
+          </div>
+          <div>
+            <h4>可能造成重伤的:{{ item.detail.heavyInjureCount}} 个</h4>
+          </div>
+          <div>
+            <h4>可能造成轻伤的:{{ item.detail.lightInjureCount }} 个</h4>
+          </div>
+          <div>
+            <h4>一般隐患整改数量:{{ item.detail.lightRiskFinishCount }} 个</h4>
+          </div>
+          <div>
+            <h4>重大隐患整改数量:{{ item.detail.heavyRiskFinishCount }} 个</h4>
+          </div>
+        </div>
+      </div>
+    </div>
+</template>
+<script lang="ts">
+  import screenfull from 'screenfull';
+  import {
+    toRefs,
+    reactive,
+    ref,
+    onMounted,
+    defineComponent,
+    defineAsyncComponent,
+    nextTick,
+    onUnmounted,
+    watchEffect
+  } from 'vue';
+  import '/@/theme/bigScreen.css'
+  import {useScreenTheme} from "/@/stores/screenTheme"
+  import {storeToRefs} from "pinia";
+
+  // 定义接口来定义对象的类型
+  interface stateType {
+    descContent: Object;
+    lineColor: Array<string>;
+  }
+  export default defineComponent({
+    name: 'riskDesc',
+    components: {},
+    props:{
+      content: Object || null
+    },
+    setup(props) {
+      const screenThemes = useScreenTheme()
+      const { screenTheme } = storeToRefs(screenThemes);
+      const state = reactive<stateType>({
+        descContent: {
+
+        },
+        lineColor: ['#11FEEE'],
+      });
+
+      const getTheme =()=>{
+        if(screenTheme.value.isDark){
+          window.document.getElementById('descCont').setAttribute( "class", 'dark-desc' );
+          state.lineColor = ['#11FEEE']
+        }else{
+          window.document.getElementById('descCont').setAttribute( "class", 'light-desc' );
+          state.lineColor = ['#333','#ccc']
+        }
+      }
+
+      watchEffect(() => {
+        if(props.content){
+          state.descContent = props.content
+        }
+        console.log(state.descContent,'risk')
+      })
+
+      // 页面载入时执行方法
+      onMounted(() => {
+        getTheme();
+      });
+      return {
+        ...toRefs(state)
+      };
+    }
+  });
+</script>
+
+<style scoped lang="scss">
+  .dark-desc{
+    width: 100%;
+    height: 100%;
+
+    .des-tit{
+      width: 100%;
+      &>div{
+        font-size: 1.5rem;
+        height: 2.2rem;
+        line-height: 2.2rem;
+        text-align: center;
+        font-weight: bolder;
+        color: #11FEEE;
+      }
+    }
+    .des-main{
+      width: 100%;
+      height: calc(96% - 2.2rem);
+      padding: 1rem;
+      overflow: auto;
+      color: #11FEEE;
+
+      &::-webkit-scrollbar { width: 0; height: 0; color: transparent; }
+      &::scrollbar { width: 0; height: 0; color: transparent; }
+
+      &>div{
+        margin-bottom: 1rem;
+        &>h4{
+          font-size: 1.25rem;
+          display: flex;
+          align-items: center;
+
+          span{
+            margin-right: 10px;
+          }
+          &:first-of-type{
+            margin-bottom: 10px;
+          }
+        }
+
+        &>p{
+          font-size: 1rem;
+          margin-top: 10px;
+        }
+      }
+    }
+  }
+  .light-desc{
+    width: 100%;
+    height: 100%;
+
+    .des-tit{
+      width: 100%;
+      &>div{
+        font-size: 1.5rem;
+        height: 2.2rem;
+        line-height: 2.2rem;
+        text-align: center;
+        font-weight: bolder;
+        color: #333;
+      }
+    }
+    .des-main{
+      width: 100%;
+      height: calc(96% - 2.2rem);
+      padding: 1rem;
+      overflow: auto;
+      color: #333;
+
+      &::-webkit-scrollbar { width: 0; height: 0; color: transparent; }
+      &::scrollbar { width: 0; height: 0; color: transparent; }
+
+      &>div{
+        margin-bottom: 1rem;
+        &>h4{
+          font-size: 1.25rem;
+          display: flex;
+          align-items: center;
+
+          span{
+            margin-right: 10px;
+          }
+          &:first-of-type{
+            margin-bottom: 10px;
+          }
+        }
+
+        &>p{
+          font-size: 1rem;
+          margin-top: 10px;
+        }
+      }
+    }
+  }
+</style>
\ No newline at end of file
diff --git a/src/views/riskWarningSys/warningBigScreen/indexs/components/spi.vue b/src/views/riskWarningSys/warningBigScreen/indexs/components/spi.vue
new file mode 100644
index 0000000..fd1c076
--- /dev/null
+++ b/src/views/riskWarningSys/warningBigScreen/indexs/components/spi.vue
@@ -0,0 +1,172 @@
+<template>
+    <div id="descCont" class="dark-desc">
+      <div class="des-tit">
+        <div>{{descContent.year}}年度事企业SPI趋势</div>
+        <dv-decoration8 :color="lineColor" :reverse="true" style="width:100%;" />
+      </div>
+      <div class="des-main">
+        <div v-for="(item,index) in descContent.spiData" :key="index">
+          <h4>{{item.month}}月份,安全生产预警指数值:{{item.spiVal}}<span v-if="index < descContent.spiData.length">;</span></h4>
+        </div>
+      </div>
+    </div>
+</template>
+<script lang="ts">
+  import screenfull from 'screenfull';
+  import {
+    toRefs,
+    reactive,
+    ref,
+    onMounted,
+    defineComponent,
+    defineAsyncComponent,
+    nextTick,
+    onUnmounted,
+    watchEffect
+  } from 'vue';
+  import '/@/theme/bigScreen.css'
+  import {useScreenTheme} from "/@/stores/screenTheme"
+  import {storeToRefs} from "pinia";
+
+  // 定义接口来定义对象的类型
+  interface stateType {
+    descContent: Object;
+    lineColor: Array<string>;
+  }
+  export default defineComponent({
+    name: 'spiDesc',
+    components: {},
+    props:{
+      content: Object || null
+    },
+    setup(props) {
+      const screenThemes = useScreenTheme()
+      const { screenTheme } = storeToRefs(screenThemes);
+      const state = reactive<stateType>({
+        descContent: {},
+        lineColor: ['#11FEEE'],
+      });
+
+      const getTheme =()=>{
+        if(screenTheme.value.isDark){
+          window.document.getElementById('descCont').setAttribute( "class", 'dark-desc' );
+          state.lineColor = ['#11FEEE']
+        }else{
+          window.document.getElementById('descCont').setAttribute( "class", 'light-desc' );
+          state.lineColor = ['#333','#ccc']
+        }
+      }
+
+      watchEffect(() => {
+        if(props.content){
+          state.descContent = props.content
+        }
+      })
+
+      // 页面载入时执行方法
+      onMounted(() => {
+        getTheme();
+      });
+      return {
+        ...toRefs(state)
+      };
+    }
+  });
+</script>
+
+<style scoped lang="scss">
+  .dark-desc{
+    width: 100%;
+    height: 100%;
+
+    .des-tit{
+      width: 100%;
+      &>div{
+        font-size: 1.5rem;
+        height: 2.2rem;
+        line-height: 2.2rem;
+        text-align: center;
+        font-weight: bolder;
+        color: #11FEEE;
+      }
+    }
+    .des-main{
+      width: 100%;
+      height: calc(96% - 2.2rem);
+      padding: 1rem;
+      overflow: auto;
+      color: #11FEEE;
+
+      &::-webkit-scrollbar { width: 0; height: 0; color: transparent; }
+      &::scrollbar { width: 0; height: 0; color: transparent; }
+
+      &>div{
+        margin-bottom: 1rem;
+        &>h4{
+          font-size: 1.25rem;
+          display: flex;
+          align-items: center;
+
+          span{
+            margin-right: 10px;
+          }
+          &:first-of-type{
+            margin-bottom: 10px;
+          }
+        }
+
+        &>p{
+          font-size: 1rem;
+          margin-top: 10px;
+        }
+      }
+    }
+  }
+  .light-desc{
+    width: 100%;
+    height: 100%;
+
+    .des-tit{
+      width: 100%;
+      &>div{
+        font-size: 1.5rem;
+        height: 2.2rem;
+        line-height: 2.2rem;
+        text-align: center;
+        font-weight: bolder;
+        color: #333;
+      }
+    }
+    .des-main{
+      width: 100%;
+      height: calc(96% - 2.2rem);
+      padding: 1rem;
+      overflow: auto;
+      color: #333;
+
+      &::-webkit-scrollbar { width: 0; height: 0; color: transparent; }
+      &::scrollbar { width: 0; height: 0; color: transparent; }
+
+      &>div{
+        margin-bottom: 1rem;
+        &>h4{
+          font-size: 1.25rem;
+          display: flex;
+          align-items: center;
+
+          span{
+            margin-right: 10px;
+          }
+          &:first-of-type{
+            margin-bottom: 10px;
+          }
+        }
+
+        &>p{
+          font-size: 1rem;
+          margin-top: 10px;
+        }
+      }
+    }
+  }
+</style>
\ No newline at end of file
diff --git a/src/views/riskWarningSys/warningBigScreen/indexs/components/sto.vue b/src/views/riskWarningSys/warningBigScreen/indexs/components/sto.vue
new file mode 100644
index 0000000..4d77655
--- /dev/null
+++ b/src/views/riskWarningSys/warningBigScreen/indexs/components/sto.vue
@@ -0,0 +1,211 @@
+<template>
+    <div id="descCont" class="dark-desc">
+      <div class="des-tit">
+        <div>当前应急物资储备情况(总)</div>
+        <dv-decoration8 :color="lineColor" :reverse="true" style="width:100%;" />
+      </div>
+      <div class="des-main">
+        <div>
+          <h4>消防耗材:</h4>
+        </div>
+        <div>
+          <h4>入库总数:2310</h4>
+        </div>
+        <div>
+          <h4>剩余总数:2103</h4>
+        </div>
+        <div></div>
+        <div>
+          <h4>安全帽:</h4>
+        </div>
+        <div>
+          <h4>入库总数:34312</h4>
+        </div>
+        <div>
+          <h4>剩余总数:23509</h4>
+        </div>
+        <div></div>
+        <div>
+          <h4>防护服:</h4>
+        </div>
+        <div>
+          <h4>入库总数:22140</h4>
+        </div>
+        <div>
+          <h4>剩余总数:12830</h4>
+        </div>
+        <div></div>
+        <div>
+          <h4>防护服:</h4>
+        </div>
+        <div>
+          <h4>入库总数:22140</h4>
+        </div>
+        <div>
+          <h4>剩余总数:12830</h4>
+        </div>
+        <div></div>
+      </div>
+    </div>
+</template>
+<script lang="ts">
+  import screenfull from 'screenfull';
+  import {
+    toRefs,
+    reactive,
+    ref,
+    onMounted,
+    defineComponent,
+    defineAsyncComponent,
+    nextTick,
+    onUnmounted,
+    watchEffect
+  } from 'vue';
+  import '/@/theme/bigScreen.css'
+  import {useScreenTheme} from "/@/stores/screenTheme"
+  import {storeToRefs} from "pinia";
+
+  // 定义接口来定义对象的类型
+  interface stateType {
+    descContent: Object;
+    lineColor: Array<string>;
+  }
+  export default defineComponent({
+    name: 'stoDesc',
+    components: {},
+    props:{
+      content: Object || null
+    },
+    setup(props) {
+      const screenThemes = useScreenTheme()
+      const { screenTheme } = storeToRefs(screenThemes);
+      const state = reactive<stateType>({
+        descContent: {
+
+        },
+        lineColor: ['#11FEEE'],
+      });
+
+      const getTheme =()=>{
+        if(screenTheme.value.isDark){
+          window.document.getElementById('descCont').setAttribute( "class", 'dark-desc' );
+          state.lineColor = ['#11FEEE']
+        }else{
+          window.document.getElementById('descCont').setAttribute( "class", 'light-desc' );
+          state.lineColor = ['#333','#ccc']
+        }
+      }
+
+      watchEffect(() => {
+        // if(props.content){
+        //   state.descContent = props.content
+        // }
+      })
+
+      // 页面载入时执行方法
+      onMounted(() => {
+        getTheme();
+      });
+      return {
+        ...toRefs(state)
+      };
+    }
+  });
+</script>
+
+<style scoped lang="scss">
+  .dark-desc{
+    width: 100%;
+    height: 100%;
+
+    .des-tit{
+      width: 100%;
+      &>div{
+        font-size: 1.5rem;
+        height: 2.2rem;
+        line-height: 2.2rem;
+        text-align: center;
+        font-weight: bolder;
+        color: #11FEEE;
+      }
+    }
+    .des-main{
+      width: 100%;
+      height: calc(96% - 2.2rem);
+      padding: 1rem;
+      overflow: auto;
+      color: #11FEEE;
+
+      &::-webkit-scrollbar { width: 0; height: 0; color: transparent; }
+      &::scrollbar { width: 0; height: 0; color: transparent; }
+
+      &>div{
+        margin-bottom: 1rem;
+        &>h4{
+          font-size: 1.25rem;
+          display: flex;
+          align-items: center;
+
+          span{
+            margin-right: 10px;
+          }
+          &:first-of-type{
+            margin-bottom: 10px;
+          }
+        }
+
+        &>p{
+          font-size: 1rem;
+          margin-top: 10px;
+        }
+      }
+    }
+  }
+  .light-desc{
+    width: 100%;
+    height: 100%;
+
+    .des-tit{
+      width: 100%;
+      &>div{
+        font-size: 1.5rem;
+        height: 2.2rem;
+        line-height: 2.2rem;
+        text-align: center;
+        font-weight: bolder;
+        color: #333;
+      }
+    }
+    .des-main{
+      width: 100%;
+      height: calc(96% - 2.2rem);
+      padding: 1rem;
+      overflow: auto;
+      color: #333;
+
+      &::-webkit-scrollbar { width: 0; height: 0; color: transparent; }
+      &::scrollbar { width: 0; height: 0; color: transparent; }
+
+      &>div{
+        margin-bottom: 1rem;
+        &>h4{
+          font-size: 1.25rem;
+          display: flex;
+          align-items: center;
+
+          span{
+            margin-right: 10px;
+          }
+          &:first-of-type{
+            margin-bottom: 10px;
+          }
+        }
+
+        &>p{
+          font-size: 1rem;
+          margin-top: 10px;
+        }
+      }
+    }
+  }
+</style>
\ No newline at end of file
diff --git a/src/views/riskWarningSys/warningBigScreen/indexs/components/train.vue b/src/views/riskWarningSys/warningBigScreen/indexs/components/train.vue
new file mode 100644
index 0000000..58fa252
--- /dev/null
+++ b/src/views/riskWarningSys/warningBigScreen/indexs/components/train.vue
@@ -0,0 +1,177 @@
+<template>
+    <div id="descCont" class="dark-desc">
+      <div class="des-tit">
+        <div>应急演练概况</div>
+        <dv-decoration8 :color="lineColor" :reverse="true" style="width:100%;" />
+      </div>
+      <div class="des-main">
+        <div>
+          <h4>应急演练分月情况汇总:</h4>
+        </div>
+        <div v-for="(item,index) in descContent.traData" :key="index">
+          <h4>{{item.month}}月份应急演练次数:{{item.totalCount}}次;</h4>
+        </div>
+      </div>
+    </div>
+</template>
+<script lang="ts">
+  import screenfull from 'screenfull';
+  import {
+    toRefs,
+    reactive,
+    ref,
+    onMounted,
+    defineComponent,
+    defineAsyncComponent,
+    nextTick,
+    onUnmounted,
+    watchEffect
+  } from 'vue';
+  import '/@/theme/bigScreen.css'
+  import {useScreenTheme} from "/@/stores/screenTheme"
+  import {storeToRefs} from "pinia";
+
+  // 定义接口来定义对象的类型
+  interface stateType {
+    descContent: Object;
+    lineColor: Array<string>;
+  }
+  export default defineComponent({
+    name: 'trainDesc',
+    components: {},
+    props:{
+      content: Object || null
+    },
+    setup(props) {
+      const screenThemes = useScreenTheme()
+      const { screenTheme } = storeToRefs(screenThemes);
+      const state = reactive<stateType>({
+        descContent: {
+
+        },
+        lineColor: ['#11FEEE'],
+      });
+
+      const getTheme =()=>{
+        if(screenTheme.value.isDark){
+          window.document.getElementById('descCont').setAttribute( "class", 'dark-desc' );
+          state.lineColor = ['#11FEEE']
+        }else{
+          window.document.getElementById('descCont').setAttribute( "class", 'light-desc' );
+          state.lineColor = ['#333','#ccc']
+        }
+      }
+
+      watchEffect(() => {
+        if(props.content){
+          state.descContent = props.content
+        }
+      })
+
+      // 页面载入时执行方法
+      onMounted(() => {
+        getTheme();
+      });
+      return {
+        ...toRefs(state)
+      };
+    }
+  });
+</script>
+
+<style scoped lang="scss">
+  .dark-desc{
+    width: 100%;
+    height: 100%;
+
+    .des-tit{
+      width: 100%;
+      &>div{
+        font-size: 1.5rem;
+        height: 2.2rem;
+        line-height: 2.2rem;
+        text-align: center;
+        font-weight: bolder;
+        color: #11FEEE;
+      }
+    }
+    .des-main{
+      width: 100%;
+      height: calc(96% - 2.2rem);
+      padding: 1rem;
+      overflow: auto;
+      color: #11FEEE;
+
+      &::-webkit-scrollbar { width: 0; height: 0; color: transparent; }
+      &::scrollbar { width: 0; height: 0; color: transparent; }
+
+      &>div{
+        margin-bottom: 1rem;
+        &>h4{
+          font-size: 1.25rem;
+          display: flex;
+          align-items: center;
+
+          span{
+            margin-right: 10px;
+          }
+          &:first-of-type{
+            margin-bottom: 10px;
+          }
+        }
+
+        &>p{
+          font-size: 1rem;
+          margin-top: 10px;
+        }
+      }
+    }
+  }
+  .light-desc{
+    width: 100%;
+    height: 100%;
+
+    .des-tit{
+      width: 100%;
+      &>div{
+        font-size: 1.5rem;
+        height: 2.2rem;
+        line-height: 2.2rem;
+        text-align: center;
+        font-weight: bolder;
+        color: #333;
+      }
+    }
+    .des-main{
+      width: 100%;
+      height: calc(96% - 2.2rem);
+      padding: 1rem;
+      overflow: auto;
+      color: #333;
+
+      &::-webkit-scrollbar { width: 0; height: 0; color: transparent; }
+      &::scrollbar { width: 0; height: 0; color: transparent; }
+
+      &>div{
+        margin-bottom: 1rem;
+        &>h4{
+          font-size: 1.25rem;
+          display: flex;
+          align-items: center;
+
+          span{
+            margin-right: 10px;
+          }
+          &:first-of-type{
+            margin-bottom: 10px;
+          }
+        }
+
+        &>p{
+          font-size: 1rem;
+          margin-top: 10px;
+        }
+      }
+    }
+  }
+</style>
\ No newline at end of file
diff --git a/src/views/riskWarningSys/warningBigScreen/indexs/index.vue b/src/views/riskWarningSys/warningBigScreen/indexs/index.vue
index c037e1c..81cd90a 100644
--- a/src/views/riskWarningSys/warningBigScreen/indexs/index.vue
+++ b/src/views/riskWarningSys/warningBigScreen/indexs/index.vue
@@ -13,13 +13,12 @@
     </div>
     <div class="chart-cont">
       <div class="chart">
-        <div v-show="curChart===2" class="selector-2">距上次演练结束5天</div>
-        <accident v-if="curChart===1" :size="2.5"></accident>
-        <training v-else-if="curChart===2" :size="2.5"></training>
-        <risk v-else-if="curChart===3" :month="month" :size="2.5"></risk>
-        <spi v-else-if="curChart===4" :size="2"></spi>
+        <accident v-if="curChart===1" :size="2.5" ref="accRef"></accident>
+        <training v-else-if="curChart===2" :size="2.5" ref="trainRef"></training>
+        <risk v-else-if="curChart===3" :size="2.5" ref="riskRef"></risk>
+        <spi v-else-if="curChart===4" :size="2" ref="spiRef"></spi>
         <educate v-else-if="curChart===5" :size="2.5"></educate>
-        <danger v-else-if="curChart===6" :size="2.5"></danger>
+        <danger v-else-if="curChart===6" :size="2.5" ref="danRef"></danger>
         <profession v-else-if="curChart===7" :size="2.5"></profession>
         <message v-else-if="curChart===8" :size="2"></message>
         <monitor v-else-if="curChart===9" :size="2.5"></monitor>
@@ -28,39 +27,18 @@
       <div class="chart-right">
         <dv-decoration-10 :color="lineColor" style="width:100%;height:5%;" />
         <div class="charts-des">
-          <div class="des-tit">
-            <div v-if="curChart===1">2022年度事故等级分布与影响一览</div>
-            <div v-else-if="curChart===2">应急演练概况</div>
-            <div v-else-if="curChart===3">隐患影响等级分布详情</div>
-            <div v-else-if="curChart===4">2022年度事企业SPI趋势</div>
-            <div v-else-if="curChart===5">教育培训情况汇总</div>
-            <div v-else-if="curChart===6">隐患等级分布与隐患整改率</div>
-            <div v-else-if="curChart===7">人员持证上岗情况</div>
-            <div v-else-if="curChart===8">预警消息SPI报告-2022年8月</div>
-            <div v-else-if="curChart===9">监控列表</div>
-            <div v-else>当前应急物资储备情况(总)</div>
-            <dv-decoration8 :color="lineColor" :reverse="true" style="width:100%;" />
-          </div>
-          <div v-if="curChart===2" class="des-main">
-            <div>
-              <h4>距上次【<span>{{trainDesc.title}}</span>】应急演练结束<span>{{trainDesc.total}}</span>天</h4>
-              <h4>
-                应急演练分月情况汇总:
-              </h4>
-              <p v-for="(item,index) in trainDesc.list" :key="index">{{item.month}}应急演练次数:{{item.num}}次</p>
-            </div>
-          </div>
-          <div v-else class="des-main">
-            <div v-for="(item,index) in accidentDesc" :key="index">
-              <h4><span>{{item.title}}</span>共计:<span>{{item.total}}</span>起</h4>
-              <h4>
-                事故影响
-              </h4>
-              <p>{{item.desc}}</p>
-            </div>
-          </div>
+          <acc-desc v-if="curChart===1" :content="accRef"></acc-desc>
+          <train-desc v-else-if="curChart===2" :content="trainRef"></train-desc>
+          <risk-desc v-else-if="curChart===3" :content="riskRef"></risk-desc>
+          <spi-desc v-else-if="curChart===4" :content="spiRef"></spi-desc>
+          <edu-desc v-else-if="curChart===5" :content="eduRef"></edu-desc>
+          <dan-desc v-else-if="curChart===6" :content="danRef"></dan-desc>
+          <pro-desc v-else-if="curChart===7" :content="proRef"></pro-desc>
+          <msg-desc v-else-if="curChart===8" :content="msgRef"></msg-desc>
+          <mon-desc v-else-if="curChart===9" :content="monRef"></mon-desc>
+          <sto-desc v-else :content="stoRef"></sto-desc>
         </div>
-        <dv-decoration-10 :color="lineColor" style="width:100%;height:5%;" />
+        <dv-decoration-10 :color="lineColor" style="width:100%;height:5%;"/>
       </div>
     </div>
   </div>
@@ -68,7 +46,17 @@
 
 <script lang="ts">
   import screenfull from 'screenfull';
-  import { toRefs, reactive, ref, onMounted, defineComponent, defineAsyncComponent, nextTick, onUnmounted } from 'vue';
+  import {
+    toRefs,
+    reactive,
+    ref,
+    onMounted,
+    defineComponent,
+    defineAsyncComponent,
+    nextTick,
+    onUnmounted,
+    watchEffect
+  } from 'vue';
   import { ElTable } from 'element-plus';
   import { FormInstance, FormRules, ElMessage } from 'element-plus';
   import { safetyRiskEventApi } from '/@/api/doublePreventSystem/safetyRiskEvent/index.ts';
@@ -84,22 +72,40 @@
     isScreenfull: boolean;
     curChart: number | null;
     lineColor: Array<string>;
-    accidentDesc: Array<any>;
-    trainDesc: Object;
+    accRef: Object;
+    trainRef: Object;
+    riskRef: Object;
+    spiRef: Object;
+    eduRef: Object;
+    danRef: Object;
+    proRef: Object;
+    msgRef: Object;
+    monRef: Object;
+    stoRef: Object
   }
   export default defineComponent({
     name: 'warningPage',
     components: {
       accident: defineAsyncComponent(() => import('/@/views/riskWarningSys/warningBigScreen/components/accident.vue')),
+      accDesc: defineAsyncComponent(() => import('/@/views/riskWarningSys/warningBigScreen/indexs/components/acc.vue')),
       training: defineAsyncComponent(() => import('/@/views/riskWarningSys/warningBigScreen/components/training.vue')),
+      trainDesc: defineAsyncComponent(() => import('/@/views/riskWarningSys/warningBigScreen/indexs/components/train.vue')),
       spi: defineAsyncComponent(() => import('/@/views/riskWarningSys/warningBigScreen/components/SPI.vue')),
+      spiDesc: defineAsyncComponent(() => import('/@/views/riskWarningSys/warningBigScreen/indexs/components/spi.vue')),
       risk: defineAsyncComponent(() => import('/@/views/riskWarningSys/warningBigScreen/components/risk.vue')),
+      riskDesc: defineAsyncComponent(() => import('/@/views/riskWarningSys/warningBigScreen/indexs/components/risk.vue')),
       educate: defineAsyncComponent(() => import('/@/views/riskWarningSys/warningBigScreen/components/educate.vue')),
+      eduDesc: defineAsyncComponent(() => import('/@/views/riskWarningSys/warningBigScreen/indexs/components/edu.vue')),
       danger: defineAsyncComponent(() => import('/@/views/riskWarningSys/warningBigScreen/components/danger.vue')),
+      danDesc: defineAsyncComponent(() => import('/@/views/riskWarningSys/warningBigScreen/indexs/components/dan.vue')),
       profession: defineAsyncComponent(() => import('/@/views/riskWarningSys/warningBigScreen/components/profession.vue')),
+      proDesc: defineAsyncComponent(() => import('/@/views/riskWarningSys/warningBigScreen/indexs/components/pro.vue')),
       message: defineAsyncComponent(() => import('/@/views/riskWarningSys/warningBigScreen/components/message.vue')),
+      msgDesc: defineAsyncComponent(() => import('/@/views/riskWarningSys/warningBigScreen/indexs/components/msg.vue')),
       monitor: defineAsyncComponent(() => import('/@/views/riskWarningSys/warningBigScreen/components/monitor.vue')),
-      stock: defineAsyncComponent(() => import('/@/views/riskWarningSys/warningBigScreen/components/stock.vue'))
+      monDesc: defineAsyncComponent(() => import('/@/views/riskWarningSys/warningBigScreen/indexs/components/mon.vue')),
+      stock: defineAsyncComponent(() => import('/@/views/riskWarningSys/warningBigScreen/components/stock.vue')),
+      stoDesc: defineAsyncComponent(() => import('/@/views/riskWarningSys/warningBigScreen/indexs/components/sto.vue'))
     },
     setup() {
       const screenThemes = useScreenTheme()
@@ -109,71 +115,16 @@
         isScreenfull: false,
         curChart: null,
         lineColor: ['#11FEEE'],
-        accidentDesc:[
-          {
-            title: '特别重大事故',
-            total: 10,
-            desc: '死亡人数:0人; 重伤人数:2人; 轻伤人数:3人; 直接经济损失:180.61万元'
-          },
-          {
-            title: '重大事故',
-            total: 20,
-            desc: '死亡人数:1人; 重伤人数:6人; 轻伤人数:0人; 直接经济损失:160.61万元'
-          },
-          {
-            title: '较大事故',
-            total: 100,
-            desc: '死亡人数:0人; 重伤人数:0人; 轻伤人数:3人; 直接经济损失:190.61万元'
-          },
-          {
-            title: '一般事故',
-            total: 130,
-            desc: '死亡人数:0人; 重伤人数:0人; 轻伤人数:0人; 直接经济损失:180.61万元'
-          },
-          {
-            title: '未遂事故',
-            total: 150,
-            desc: '死亡人数:0人; 重伤人数:0人; 轻伤人数:0人; 直接经济损失:9万元'
-          }
-        ],
-        trainDesc:{
-          title: '公司级',
-          total: 5,
-          list: [
-            {
-              month: '一月份',
-              num: 23
-            },
-            {
-              month: '二月份',
-              num: 76
-            },
-            {
-              month: '三月份',
-              num: 152
-            },
-            {
-              month: '四月份',
-              num: 200
-            },
-            {
-              month: '五月份',
-              num: 49
-            },
-            {
-              month: '六月份',
-              num: 83
-            },
-            {
-              month: '七月份',
-              num: 102
-            },
-            {
-              month: '八月份',
-              num: 99
-            }
-          ]
-        }
+        accRef: {},
+        trainRef: {},
+        riskRef: {},
+        spiRef: {},
+        eduRef: {},
+        danRef: {},
+        proRef: {},
+        msgRef: {},
+        monRef: {},
+        stoRef: {}
       });
 
       // 页面载入时执行方法
@@ -184,6 +135,9 @@
         getTheme()
       });
 
+      watchEffect(() => {
+
+      })
 
       // 全屏
       const onScreenfullClick = () => {
@@ -209,6 +163,9 @@
           state.lineColor = ['#333','#ccc']
         }
       }
+      watchEffect(() => {
+
+      })
       // 返回上一页
       const goBack = () => {
         window.history.go(-1);
@@ -296,9 +253,9 @@
         height: 100%;
         .charts-des{
           height: 90%;
+          padding: 4%;
           background: url("../../../../assets/warningScreen/pagebg-r.png") no-repeat center;
           background-size: 100% 100%;
-          padding: 4%;
 
           .des-tit{
             width: 100%;
@@ -417,9 +374,9 @@
         height: 100%;
         .charts-des{
           height: 90%;
+          padding: 4%;
           background: url("../../../../assets/warningScreen/pagebg-r-light.png") no-repeat center;
           background-size: 100% 100%;
-          padding: 4%;
 
           .des-tit{
             width: 100%;
diff --git a/src/views/specialWorkSystem/specialIndex/index.vue b/src/views/specialWorkSystem/specialIndex/index.vue
index f18f329..ff31155 100644
--- a/src/views/specialWorkSystem/specialIndex/index.vue
+++ b/src/views/specialWorkSystem/specialIndex/index.vue
@@ -1,161 +1,57 @@
 <template>
-    <div class="home-container" :class="isFull==true?'container':''" id="bigScreen">
-      <div class="full">
-        <el-button v-if="isFull==false" type="text" style="height: 34px" @click="toFullscreen">
-          <el-icon style="vertical-align: middle">
-            <FullScreen />
-          </el-icon>
-          <span style="vertical-align: middle">全屏</span>
-        </el-button>
-        <el-button v-else type="text" style="height: 34px" @click="toFullscreen">
-          <el-icon style="vertical-align: middle">
-            <Close />
-          </el-icon>
-          <span style="vertical-align: middle">退出全屏</span>
-        </el-button>
-      </div>
-        <div class="topChart">
-          <div class="chart-item">
-            <div class="chart-tit">
-              <span class="tit">八大作业各分类分布图</span>
-              <div class="filter-part filter-part2">
-                <el-cascader :teleported="false" v-model="chartSearch1.searchDep" :options="departmentList" :props="casProps" :show-all-levels="false" size="small"/>
-              </div>
-            </div>
-            <div class="chart" :id="zyfb"></div>
-            <el-radio-group v-model="chartSearch1.period" size="small">
-              <el-radio label="week" border>近7天</el-radio>
-              <el-radio label="month" border>近30天</el-radio>
-              <el-radio label="season" border>近90天</el-radio>
-              <el-radio label="year" border>近一年</el-radio>
-            </el-radio-group>
-          </div>
-          <div class="chart-item">
-            <div class="chart-tit">
-              <span class="tit">各事业部关联作业分析</span>
-              <div class="filter-part">
-                <el-cascader :teleported="false" v-model="chartSearch2.searchDep" :options="departmentList" :props="casProps" :show-all-levels="false" size="small"/>
-                <el-select v-model="chartSearch2.type" size="small" :teleported="false">
-                  <el-option
-                      v-for="item in workType1"
-                      :key="item.id"
-                      :label="item.name"
-                      :value="item.id"
-                  />
-                </el-select>
-              </div>
-            </div>
-            <div class="chart" :id="slfx"></div>
-          </div>
-        </div>
-        <div class="topChart">
-          <div class="chart-item">
-            <div class="chart-tit">
-              <span class="tit">关联作业趋势图</span>
-              <div class="filter-part filter-part2">
-                <el-cascader :teleported="false" v-model="chartSearch3.searchDep" :options="departmentList" :props="casProps" :show-all-levels="false" size="small"/>
-              </div>
-            </div>
-            <div class="chart" :id="zyqs"></div>
-          </div>
-          <div class="chart-item">
-            <div class="chart-tit">
-              <span class="tit">异常警报关联人</span>
-              <div class="filter-part">
-                <el-switch
-                    v-model="chartSearch4.type"
-                    inline-prompt
-                    style="--el-switch-on-color: #13ce66; --el-switch-off-color: #13ce66"
-                    active-text="作业人"
-                    inactive-text="监护人"
-                />
-                <el-select :teleported="false" v-model="chartSearch4.period" size="small">
-                  <el-option label="近7天" value="week"/>
-                  <el-option label="近30天" value="month"/>
-                  <el-option label="近90天" value="season"/>
-                  <el-option label="近1年" value="year"/>
-                </el-select>
-                <el-select :teleported="false" v-model="chartSearch4.workType" size="small">
-                  <el-option
-                      v-for="item in workType1"
-                      :key="item.id"
-                      :label="item.name"
-                      :value="item.id"
-                  />
-                </el-select>
-              </div>
-            </div>
-            <div class="chart">
-              <el-table ref="multipleTableRef" :data="warningData" style="width: 100%" stripe border :header-cell-style="{ background: '#fafafa' }">
-                <el-table-column property="name" label="姓名" align="center"/>
-                <el-table-column property="dep" label="所属部门" align="center"/>
-                <el-table-column property="warning" label="异常报警次数" align="center"/>
-                <el-table-column property="role" label="角色" align="center"/>
-                <el-table-column property="isCard" label="是否持证" align="center">
-                  <template #default="scope">
-                    <span>{{scope.row.isCard == 1?'是':'否'}}</span>
-                  </template>
-                </el-table-column>
-              </el-table>
-              <el-button type="text" size="small" style="margin-top: 10px">所有记录>></el-button>
-            </div>
-<!--            <div class="chart" :id="slfx"></div>-->
-          </div>
-        </div>
-        <div>
-            <div class="homeCard">
-                <el-row>
-                  <el-col :span="5" style="display:flex;align-items: center">
+    <div class="home-container">
+        <div style="height: 100%">
+            <el-row class="homeCard">
+                <el-col :span="5" style="display:flex;align-items: center">
                     <span style="white-space: nowrap">作业类型:</span>
                     <div class="grid-content topInfo">
-                      <el-select :teleported="false" v-model="searchWord" size="small">
-                        <el-option
-                            v-for="item in workType"
-                            :key="item.id"
-                            :label="item.name"
-                            :value="item.id"
-                        />
-                      </el-select>
+                        <el-select v-model="searchWord">
+                            <el-option
+                                    v-for="item in workType"
+                                    :key="item.id"
+                                    :label="item.name"
+                                    :value="item.id"
+                            />
+                        </el-select>
                     </div>
-                  </el-col>
-                  <el-col :span="5" style="display:flex;align-items: center">
-                    <span style="white-space: nowrap">作业状态:</span>
-                    <div class="grid-content topInfo">
-                      <el-select :teleported="false" v-model="searchStatus" size="small">
-                        <el-option
-                            v-for="item in workStatus"
-                            :key="item.value"
-                            :label="item.name"
-                            :value="item.value"
-                        />
-                      </el-select>
-                    </div>
-                  </el-col>
-                  <el-col :span="5" style="display:flex;align-items: center">
+                </el-col>
+                <el-col :span="5" style="display:flex;align-items: center">
+                  <span style="white-space: nowrap">作业状态:</span>
+                  <div class="grid-content topInfo">
+                    <el-select v-model="searchStatus">
+                      <el-option
+                          v-for="item in workStatus"
+                          :key="item.value"
+                          :label="item.name"
+                          :value="item.value"
+                      />
+                    </el-select>
+                  </div>
+                </el-col>
+                <el-col :span="5" style="display:flex;align-items: center">
                     <span style="white-space: nowrap">作业部门:</span>
                     <div class="grid-content topInfo">
-                      <el-cascader :teleported="false" size="small" v-model="searchDep" :options="departmentList" :props="casProps" :show-all-levels="false"/>
+                        <el-cascader v-model="searchDep" :options="departmentList" :props="casProps" :show-all-levels="false"/>
                     </div>
-                  </el-col>
-                  <el-col :span="6" style="display:flex;align-items: center;">
+                </el-col>
+                <el-col :span="6" style="display:flex;align-items: center;">
                     <span style="white-space: nowrap;margin-left: 20px">申请时间:</span>
                     <div class="grid-content topInfo">
-                      <el-date-picker
-                          v-model="searchDate"
-                          size="small"
-                          :teleported="false"
-                          type="daterange"
-                          unlink-panels
-                          range-separator="至"
-                          start-placeholder="开始日期"
-                          end-placeholder="结束日期"
-                          format="YYYY-MM-DD" value-format="YYYY-MM-DD HH:mm:ss"
-                      />
+                        <el-date-picker
+                                v-model="searchDate"
+                                type="daterange"
+                                unlink-panels
+                                range-separator="至"
+                                start-placeholder="开始日期"
+                                end-placeholder="结束日期"
+                                format="YYYY-MM-DD" value-format="YYYY-MM-DD HH:mm:ss"
+                        />
                     </div>
-                  </el-col>
-                  <el-button type="primary" style="margin-left: 20px" @click="searchRecord" size="small">查询</el-button>
-                  <el-button plain @click="clearSearch" size="small">重置</el-button>
-                </el-row>
+                </el-col>
+                <el-button type="primary" style="margin-left: 20px" @click="searchRecord">查询</el-button>
+                <el-button plain @click="clearSearch">重置</el-button>
+            </el-row>
+            <div class="homeCard">
                 <div class="main-card">
                     <el-row class="cardTop" style="justify-content: space-between">
                         <el-col :span="2" class="mainCardBtn">
@@ -179,38 +75,31 @@
                           <el-button type="primary" :icon="Refresh" size="default" @click="reLoadData()" />
                         </el-col>
                     </el-row>
-                    <el-table ref="multipleTableRef" stripe border :data="workData" style="width: 100%" :header-cell-style="{ background: '#fafafa' }">
-                        <el-table-column property="num" label="作业证编号" align="center"/>
-                        <el-table-column property="dep" label="部门" align="center"/>
-                        <el-table-column property="applyer" label="申请人" align="center"/>
-                        <el-table-column property="worker" label="作业人" align="center"/>
-                        <el-table-column property="type" label="作业类型" align="center"/>
-                        <el-table-column property="level" label="作业等级" align="center"/>
-                        <el-table-column property="applyTime" label="申请时间" align="center"/>
-                        <el-table-column property="startTime" label="作业开始时间" align="center"/>
-                        <el-table-column property="endTime" label="作业结束时间" align="center"/>
-                        <el-table-column label="作业状态" align="center">
+                    <el-table ref="multipleTableRef" :data="applyData" style="width: 100%" height="calc(100% - 100px)" :header-cell-style="{ background: '#fafafa' }">
+                        <el-table-column property="workPermitNo" label="作业证编号" width="180" align="center"/>
+                      <el-table-column property="depName" label="部门" align="center"/>
+                        <el-table-column property="applyUname" label="申请人" align="center"/>
+                        <el-table-column property="operators" label="作业人" align="center"/>
+                        <el-table-column property="workTypeDesc" label="作业类型" align="center"/>
+                        <el-table-column property="workLevelDesc" label="作业等级" align="center"/>
+                        <el-table-column property="applyTime" label="申请时间" width="180" align="center"/>
+                        <el-table-column property="startTime" label="作业开始时间" width="180" align="center"/>
+                        <el-table-column property="endTime" label="作业结束时间" width="180" align="center"/>
+                        <el-table-column label="作业状态" align="center" width="180">
                             <template #default="scope">
-                                <el-tag>{{ scope.row.status==0?'进行中':scope.row.status==1?'作业中止':scope.row.status==2?'作业结束验收': '作业完成'}}</el-tag>
+                                <el-tag :type="scope.row.status==2?'success':(scope.row.status==8||scope.row.status==9)?'warning':'danger'">{{ scope.row.statusDesc }}</el-tag>
                             </template>
                         </el-table-column>
-                        <el-table-column property="reason" label="中止原因" align="center"/>
-                        <el-table-column label="安全预警" align="center">
+                        <el-table-column property="stopReason" label="中止原因" align="center"/>
+                        <el-table-column label="安全预警" align="center" width="180">
                           <template #default="scope">
-                            <el-tag :type="scope.row.warning==0?'success':(scope.row.warning==1||scope.row.warning==2)?'warning':'danger'">{{ scope.row.warning==0?'正常':'报警' }}</el-tag>
+                            <el-tag :type="scope.row.saftyWarning==0?'success':(scope.row.saftyWarning==1||scope.row.saftyWarning==2)?'warning':'danger'">{{ scope.row.saftyWarning==0?'正常':'报警' }}</el-tag>
                           </template>
                         </el-table-column>
-                      <el-table-column property="message" label="报警信息" align="center">
-                        <template #default="scope">
-                          <el-button type="text" size="small" v-if="scope.row.message == 1">查看</el-button>
-                          <span v-else>无</span>
-                        </template>
-                      </el-table-column>
                         <el-table-column fixed="right" label="操作" align="center" width="250">
                             <template #default="scope">
-                              <el-button link type="primary" size="small" :icon="View" @click="viewRecord(scope.row)">查看作业票</el-button>
-                              <el-button link type="primary" size="small" :icon="FolderChecked" @click="handleReview(scope.row)">验收</el-button>
-                              <el-button link type="primary" size="small" :icon="VideoPlay" @click="openVideo(scope.row)">查看实时监控</el-button>
+                                <el-button link type="primary" size="small" :icon="View" @click="viewRecord(scope.row)">查看</el-button>
+                                <el-button link type="primary" size="small" :icon="FolderChecked" @click="handleReview(scope.row)">验收</el-button>
                             </template>
                         </el-table-column>
                     </el-table>
@@ -254,7 +143,6 @@
               </span>
           </template>
         </el-dialog>
-        <video-detail ref="videoRef"></video-detail>
     </div>
 </template>
 
@@ -265,22 +153,18 @@
 import { useUserInfo } from '/@/stores/userInfo';
 import { Session } from '/@/utils/storage';
 import { useRouter } from 'vue-router';
-import { Edit, View, Plus, Delete, Refresh, Search, Finished, Download, FolderChecked, VideoPlay } from '@element-plus/icons-vue';
+import { Edit, View, Plus, Delete, Refresh, Search, Finished, Download, FolderChecked } from '@element-plus/icons-vue';
 import { ElTable, ElMessage } from 'element-plus';
-import { specialIndexApi } from '/@/api/specialWorkSystem/specialIndex';
 import { workApplyApi } from '/@/api/specialWorkSystem/workApply';
 import type { TabsPaneContext } from 'element-plus';
 import type { FormInstance, FormRules } from 'element-plus'
 import {teamManageApi} from "/@/api/systemManage/basicDateManage/personShiftManage/teamManage";
 import Cookies from 'js-cookie';
 import axios from 'axios';
-import * as echarts from "echarts";
-import screenfull from "screenfull";
-import VideoDetail from "/@/views/specialWorkSystem/specialIndex/components/videoDetail.vue";
 
 // 定义接口来定义对象的类型
 interface stateType {
-    workData: Array<any>;
+    applyData: Array<string>;
     workTimeList: Array<string>;
     multipleSelection: Array<any>;
     casProps: {};
@@ -292,26 +176,16 @@
     chosenIndex: null | number;
     searchWord: number | null;
     searchStatus: number | null;
-    chartSearch1: object;
-    chartSearch2: object;
-    chartSearch3: object;
-    chartSearch4: object;
-    searchDep2: number | null;
     searchDep: number | null;
     searchDate: Array<any>,
     totalSize1: number;
     details: {};
     workType: Array<type>;
-    workType1: Array<type>;
     dialogType: number | null;
     departmentList: Array<any>;
     departmentRecursionList: Array<DepartmentState>;
     workStatus: Array<status>;
-    reviewForm: object;
-    reviewRules: object;
-    warningData: Array<any>;
-    isFull:boolean;
-    themeColor:string
+    reviewForm: object
 }
 interface type {
     id: number;
@@ -333,7 +207,6 @@
 export default defineComponent({
     name: 'specialIndex',
     components: {
-      VideoDetail,
         fire: defineAsyncComponent(() => import('/@/views/specialWorkSystem/workTicket/wdsq/components/fireLog.vue')),
         space: defineAsyncComponent(() => import('/@/views/specialWorkSystem/workTicket/wdsq/components/spaceLog.vue')),
         hoist: defineAsyncComponent(() => import('/@/views/specialWorkSystem/workTicket/wdsq/components/hoistLog.vue')),
@@ -348,10 +221,6 @@
         const { userInfos } = storeToRefs(userInfo);
         const router = useRouter();
         const reviewFormRef = ref<FormInstance>()
-        const zyfb = ref("eChartZyfb" + Date.now() + Math.random())
-        const slfx = ref("eChartSlfx" + Date.now() + Math.random())
-        const zyqs = ref("eChartZyqs" + Date.now() + Math.random())
-        const videoRef = ref();
         const state = reactive<stateType>({
             pageIndex1: 1,
             pageSize1: 10,
@@ -363,104 +232,9 @@
             chosenIndex: null,
             searchWord: null,
             searchStatus: null,
-            chartSearch1: {
-              searchDep: null,
-              startTime: '2023-03-08',
-              endTime: '2023-02-08',
-              period: 'month'
-            },
-            chartSearch2: {
-              searchDep: null,
-              type: 0
-            },
-            chartSearch3: {
-              searchDep: null
-            },
-            chartSearch4: {
-              searchDep: null
-            },
-            searchDep2: null,
             searchDep: null,
             searchDate: [],
-            workData: [
-              {
-                num: '111',
-                dep: '部门1',
-                applyer: '张凤',
-                worker: '李羽飞',
-                type: '动火作业',
-                level: '一级',
-                applyTime: '2023-03-08',
-                startTime: '2023-03-08',
-                endTime: '2023-03-08',
-                status: 0,
-                reason: '分析超时',
-                warning: 0,
-                message: 1
-              },
-              {
-                num: '222',
-                dep: '部门2',
-                applyer: '张凤',
-                worker: '李羽飞',
-                type: '动土作业',
-                level: '一级',
-                applyTime: '2023-03-08',
-                startTime: '2023-03-08',
-                endTime: '2023-03-08',
-                status: 1,
-                reason: '分析超时',
-                warning: 1,
-                message: 0
-              },
-              {
-                num: '333',
-                dep: '部门3',
-                applyer: '张凤',
-                worker: '李羽飞',
-                type: '动火作业',
-                level: '一级',
-                applyTime: '2023-03-08',
-                startTime: '2023-03-08',
-                endTime: '2023-03-08',
-                status: 2,
-                reason: '分析超时',
-                warning: 2,
-                message: 0
-              },
-              {
-                num: '222',
-                dep: '部门2',
-                applyer: '张凤',
-                worker: '李羽飞',
-                type: '动土作业',
-                level: '一级',
-                applyTime: '2023-03-08',
-                startTime: '2023-03-08',
-                endTime: '2023-03-08',
-                status: 1,
-                reason: '分析超时',
-                warning: 1,
-                message: 0
-              },
-              {
-                num: '333',
-                dep: '部门3',
-                applyer: '张凤',
-                worker: '李羽飞',
-                type: '动火作业',
-                level: '一级',
-                applyTime: '2023-03-08',
-                startTime: '2023-03-08',
-                endTime: '2023-03-08',
-                status: 2,
-                reason: '分析超时',
-                warning: 2,
-                message: 0
-              }
-            ],
-            isFull: false,
-            themeColor: '#333',
+            applyData: [],
             workTimeList: [],
             multipleSelection: [],
             approveInfo: {
@@ -476,17 +250,6 @@
             },
             dialogDetails: false,
             details: {},
-            workType1: [
-              { id: 0, name: '所有作业' },
-              { id: 1, name: '动火作业' },
-              { id: 2, name: '受限空间作业' },
-              { id: 3, name: '吊装作业' },
-              { id: 4, name: '动土作业' },
-              { id: 5, name: '断路作业' },
-              { id: 6, name: '高处作业' },
-              { id: 7, name: '临时用电作业' },
-              { id: 8, name: '盲板抽堵作业' }
-            ],
             workType: [
                 { id: 1, name: '动火作业' },
                 { id: 2, name: '受限空间作业' },
@@ -515,219 +278,14 @@
                 value: 3
               }
             ],
-            warningData: [
-              {
-                name: '黄公子',
-                dep: '有机事业部',
-                warning: 69,
-                role: '作业人',
-                isCard: 1
-              },
-              {
-                name: '李飞飞',
-                dep: '有机事业部',
-                warning: 51,
-                role: '监护人',
-                isCard: 0
-              },
-              {
-                name: '黄公子',
-                dep: '有机事业部',
-                warning: 69,
-                role: '作业人',
-                isCard: 1
-              }
-            ],
             reviewForm: {
               advice: ''
-            },
-            reviewRules:{
-              advice: [{ required: true, message: '请填写验收意见', trigger: 'blur' }]
             }
         });
-      // 页面载入时执行方法
-      onMounted(() => {
-        getListByPage();
-        getAllDepartment();
-        initZyfb()
-        initSlfx()
-        initZyqs()
-      });
-      const toFullscreen =()=>{
-        const element = document.getElementById('bigScreen')
-        if (!screenfull.isEnabled) {
-          ElMessage.warning('暂不不支持全屏');
-          return false;
-        }
-        screenfull.toggle(element);
-        state.isFull = !state.isFull
-        if(state.isFull == true){
-          state.themeColor = '#11FEEE'
-        }else{
-          state.themeColor = '#333'
-        }
-        initZyfb()
-        initSlfx()
-        initZyqs()
-      }
-      const getTypePie = async ()=>{
-        let res = await specialIndexApi().analyseType(state.chartSearch1.startTime,state.chartSearch1.endTime,state.chartSearch1.searchDep);
-        if (res.data.code === '200') {
-          console.log(res.data,'666666666')
-        } else {
-          ElMessage({
-            type: 'warning',
-            message: res.data.msg
-          });
-        }
-      }
-      type EChartsOption = echarts.EChartsOption
-      const initZyfb =()=>{
-        let dom = document.getElementById(zyfb.value);
-        let myChart = echarts.init(dom);
-        let option: EChartsOption;
-        option = {
-          tooltip: {
-            trigger: 'item'
-          },
-          legend: {
-            orient: 'vertical',
-            left: 'left',
-            top: 'center',
-            textStyle: {
-              // 设置默认的文字颜色
-              color: state.themeColor,
-              fontSize: 12
-            },
-            itemStyle: {
-              borderWidth: 0 // 设置图例边框宽度为0
-            }
-          },
-          series: [
-            {
-              name: 'Access From',
-              type: 'pie',
-              radius: ['40%', '70%'],
-              avoidLabelOverlap: false,
-              itemStyle: {
-                borderRadius: 1,
-                borderColor: '#fff',
-                borderWidth: 2
-              },
-              label: {
-                show: false,
-                position: 'center'
-              },
-              emphasis: {
-                label: {
-                  show: true,
-                  fontSize: 40,
-                  fontWeight: 'bold'
-                }
-              },
-              labelLine: {
-                show: true
-              },
-              data: [
-                { value: 1048, name: '动火作业' },
-                { value: 735, name: '受限空间作业' },
-                { value: 580, name: '吊装作业' },
-                { value: 484, name: '动土作业' },
-                { value: 735, name: '断路作业' },
-                { value: 580, name: '高处作业' },
-                { value: 484, name: '临时用电作业' },
-                { value: 300, name: '盲板抽堵作业' }
-              ]
-            }
-          ]
-        }
 
-        option && myChart.setOption(option);
-        window.addEventListener("resize",function (){
-          myChart.resize();
-        });
-      }
-      const initSlfx =()=>{
-        let dom = document.getElementById(slfx.value);
-        let myChart = echarts.init(dom);
-        let option: EChartsOption;
-        option = {
-          tooltip: {
-            trigger: 'axis',
-            axisPointer: {
-              type: 'shadow'
-            }
-          },
-          grid: {
-            left: '3%',
-            right: '4%',
-            bottom: '3%',
-            containLabel: true
-          },
-          xAxis: [
-            {
-              type: 'category',
-              data: ['事业部1', '事业部2', '事业部3', '事业部4', '事业部5', '事业部6', '事业部7'],
-              axisTick: {
-                alignWithLabel: true
-              },
-              axisLabel: {
-                color: state.themeColor
-              }
-            }
-          ],
-          yAxis: [
-            {
-              type: 'value'
-            }
-          ],
-          series: [
-            {
-              name: 'Direct',
-              type: 'bar',
-              barWidth: '60%',
-              data: [10, 52, 200, 334, 390, 330, 220]
-            }
-          ]
-        }
-
-        option && myChart.setOption(option);
-        window.addEventListener("resize",function (){
-          myChart.resize();
-        });
-      }
-      const initZyqs =()=>{
-        let dom = document.getElementById(zyqs.value);
-        let myChart = echarts.init(dom);
-        let option: EChartsOption;
-        option = {
-          xAxis: {
-            type: 'category',
-            data: ['四月', '五月', '六月', '七月', '八月', '九月', '十月', '十一月', '十二月', '一月', '二月', '三月'],
-            axisLabel: {
-              color: state.themeColor
-            }
-          },
-          yAxis: {
-            type: 'value'
-          },
-          grid: {
-            top: '8%',
-            bottom: '8%'
-          },
-          series: [
-            {
-              data: [150, 230, 224, 218, 135, 147, 230, 224, 218, 135, 147, 260],
-              type: 'line'
-            }
-          ]
-        }
-
-        option && myChart.setOption(option);
-        window.addEventListener("resize",function (){
-          myChart.resize();
-        });
-      }
+      const reviewRules = reactive<FormRules>({
+        advice: [{ required: true, message: '请填写验收意见', trigger: 'blur' }]
+      })
         // 刷新
         const reLoadData = async () => {
             getListByPage();
@@ -761,8 +319,8 @@
             const data = { pageSize: state.pageSize1, pageIndex: state.pageIndex1, searchParams: { workType: state.searchWord, applyDepId: state.searchDep,applyStartTime: dateRange[0],applyEndTime: dateRange[1]} };
             let res = await workApplyApi().getApplyList(data);
             if (res.data.code === '200') {
-                state.workData = JSON.parse(JSON.stringify(res.data.data));
-                state.workData = state.workData.map((item) => {
+                state.applyData = JSON.parse(JSON.stringify(res.data.data));
+                state.applyData = state.applyData.map((item) => {
                     if (item.operators == null || item.operators == []) {
                         item.operators = [];
                     } else {
@@ -867,9 +425,7 @@
         const handleReview = (row)=>{
           state.dialogReview = true
         }
-        const openVideo = ()=>{
-          videoRef.value.openDialog()
-        }
+
       const submitReview = async (formEl: FormInstance | undefined) => {
         if (!formEl) return
         await formEl.validate((valid, fields) => {
@@ -888,6 +444,12 @@
             await initBackEndControlRoutes();
         };
 
+        // 页面载入时执行方法
+        onMounted(() => {
+            getListByPage();
+            getAllDepartment()
+        });
+
         return {
             View,
             Edit,
@@ -897,15 +459,9 @@
             Finished,
             Download,
             FolderChecked,
-            VideoPlay,
             reviewFormRef,
-            videoRef,
-            zyfb,
-            slfx,
-            zyqs,
-            toFullscreen,
+            reviewRules,
             handleReview,
-            openVideo,
             submitReview,
             reLoadData,
             toApply,
@@ -926,25 +482,8 @@
 $homeNavLengh: 8;
 .home-container {
     height: calc(100vh - 144px);
-    position: relative;
     box-sizing: border-box;
     overflow: hidden;
-    overflow-y: scroll;
-    scrollbar-width: none; /* firefox */
-    -ms-overflow-style: none; /* IE 10+ */
-
-    &::-webkit-scrollbar {
-      display: none; /* Chrome Safari */
-    }
-    .full{
-      position:fixed;
-      height: 34px;
-      line-height: 34px;
-      top: 80px;
-      right: 20px;
-      z-index: 99999;
-    }
-
     .demo-tabs {
         width: 100%;
         height: 100%;
@@ -956,145 +495,6 @@
         .el-tab-pane {
             height: 100%;
         }
-    }
-    .topChart{
-      width: 100%;
-      display: flex;
-      justify-content: space-between;
-      align-items: flex-start;
-      margin-bottom: 20px;
-      height: 40%;
-      &:last-of-type{
-        margin-bottom: 0;
-      }
-
-      .chart-item{
-        width: calc(50% - 10px);
-        height: 100%;
-        margin-right: 10px;
-        position: relative;
-        background: #fff;
-        padding: 20px;
-
-        &:last-of-type{
-          margin-right: 0;
-        }
-
-        .chart-tit{
-          width: 100%;
-          height: 15%;
-          display: flex;
-          align-items: flex-start;
-          justify-content: space-between;
-          .tit{
-            font-size: 1.33rem;
-            font-weight: bolder;
-            white-space: nowrap;
-          }
-          .filter-part{
-            display: flex;
-            align-items: center;
-            justify-content: right;
-            :deep(.el-cascader){
-              width: 35% !important;
-            }
-            .el-select{
-              width: 35% !important;
-              margin-left: 10px;
-            }
-            .el-switch{
-              width: 25% !important;
-
-              :deep(.el-switch__core){
-                width: 100% !important;
-              }
-            }
-          }
-          .filter-part2{
-            :deep(.el-cascader){
-              width: 100% !important;
-            }
-          }
-
-        }
-        .chart{
-          width: 100%;
-          height: 85%;
-          .el-table{
-            height: 90% !important;
-            :deep(.el-table__inner-wrapper){
-              height: 100% !important;
-              .el-table__header-wrapper {
-                height: 20% !important;
-                .el-table__header{
-                  height: 100% !important;
-                  th{
-                    height: 100% !important;
-                    padding: 0 0 !important;
-                    .cell{
-                      white-space: nowrap;
-                      overflow: hidden;
-                      text-overflow: ellipsis;
-                    }
-                  }
-                }
-              }
-              .el-table__body-wrapper {
-                height: 80% !important;
-                .el-scrollbar__view{
-                  height: 100% !important;
-                  .el-table__body{
-                    height: 100% !important;
-                    tbody{
-                      height: 100% !important;
-                      .el-table__row{
-                        height: 25% !important;
-                        td{
-                          height: 25% !important;
-                          padding: 0 0 !important;
-                          .left-info{
-                            display: flex;
-                            align-items: center;
-                          }
-                          .cell{
-                            white-space: nowrap;
-                            overflow: hidden;
-                            text-overflow: ellipsis;
-                          }
-                          .el-button{
-                            padding: 0 !important;
-                          }
-                        }
-                      }
-                    }
-                  }
-                }
-              }
-            }
-          }
-        }
-        .el-radio-group{
-          width: 20%;
-          display: flex;
-          flex-flow: column nowrap;
-          align-items: flex-start;
-          position: absolute;
-          right: 10px;
-          top: 50%;
-          transform: translateY(-30%);
-
-          .el-radio{
-            width: 100%;
-            margin-bottom: 4px;
-          }
-        }
-        :deep(.active-ring-info){
-          .active-ring-name{
-            font-size: 1.5rem !important;
-            text-align: center;
-          }
-        }
-      }
     }
     .homeCard {
         width: 100%;
@@ -1117,12 +517,12 @@
 
               .top-info {
                 display: flex;
-                font-size: 14px;
+                font-size: 16px;
                 font-weight: bolder;
                 align-items: center;
-                padding: 4px 10px;
+                padding: 6px 10px;
                 background: #ffeb87;
-                border-radius: 2px;
+                border-radius: 4px;
                 border: 1px solid #ffae00;
                 margin-right: 20px;
 
@@ -1130,7 +530,7 @@
                   vertical-align: middle;
                   white-space: nowrap;
                   span {
-                    font-size: 18px;
+                    font-size: 22px;
                     color: #f3001e;
                     margin: 0 2px;
                     cursor: pointer;
@@ -1155,6 +555,9 @@
                     margin-bottom: 16px;
                 }
             }
+        }
+        &:last-of-type {
+            height: calc(100% - 100px);
         }
     }
     .stepItem {
@@ -1359,7 +762,7 @@
     .el-row {
         display: flex;
         align-items: center;
-        margin-bottom: 10px;
+        margin-bottom: 20px;
         &:last-child {
             margin-bottom: 0;
         }
@@ -1381,199 +784,6 @@
             }
         }
     }
-}
-
-.container{
-  padding: 20px;
-  background: url('../../../assets/spwbg.png') no-repeat center;
-
-  .full{
-    position:fixed;
-    background: #fff;
-    border-radius: 17px;
-    box-shadow: 3px 3px 12px rgba(0,0,0,.2);
-    height: 34px;
-    line-height: 34px;
-    top: 0;
-    right: 20px;
-    z-index: 99999;
-  }
-  .topChart{
-    .chart-item{
-      border-radius: 4px;
-      background: rgba(8, 109, 209, 0.2);
-      border: 1px solid rgba(54, 252, 252, .6);
-      backdrop-filter: blur(5px);
-      position: relative;
-      z-index: 2;
-      &:last-of-type{
-        position: relative;
-        z-index: 1;
-      }
-      .el-radio.is-bordered.is-checked{
-        border-color: #11FEEE !important;
-        :deep(.el-radio__inner){
-          border-color: #11FEEE !important;
-          background: #11FEEE !important;
-        }
-        :deep(.el-radio__label){
-          color: #11FEEE !important
-        }
-      }
-      .chart-tit{
-        .tit{
-          color: #11FEEE;
-        }
-        ::v-deep(.el-popper){
-          background-color: rgba(10,31,92,1);
-          border: 1px solid rgba(17,254,238,.4);
-          color: #11FEEE;
-          .el-cascader-node{
-            .in-active-path{
-              background: #0049af;
-            }
-            &:hover{
-              background: #0049af;
-            }
-          }
-          .el-cascader-node__label{
-            color: #11FEEE;
-          }
-          .el-icon{
-            color: #11FEEE;
-          }
-          .el-select-dropdown__item{
-            color: #11FEEE;
-          }
-          .el-select-dropdown__item.hover{
-            background: #0049af;
-          }
-        }
-        ::v-deep(.el-popper__arrow){
-          &::before{
-            background-color: rgba(10,31,92,.6) !important;
-            border: 1px solid rgba(17,254,238,.4);
-          }
-        }
-        ::v-deep(.el-input__wrapper){
-          box-shadow: none;
-          border: 1px solid rgba(17,254,238,.2);
-          background: rgba(10,31,92,.6) !important;
-          height: 1.5rem;
-          color: #11FEEE;
-
-          input{
-            font-size: 0.8rem;
-            color: #11FEEE;
-          }
-          .el-icon{
-            color: #11FEEE;
-          }
-        }
-      }
-      .chart{
-        .el-table {
-          color: #11FEEE !important;
-          background-color: rgba(0,0,0,0) !important;
-          :deep(thead){
-            color: #11FEEE !important;
-            background-color: #092846 !important
-          }
-          :deep(tr){
-            background-color: rgba(0,0,0,0) !important;
-            .el-table__cell{
-              background-color: rgba(0,0,0,0) !important;
-            }
-          }
-        }
-        .el-button--text{
-          color: #11FEEE;
-        }
-      }
-    }
-  }
-  .homeCard{
-    border-radius: 4px;
-    background: rgba(8, 109, 209, 0.2);
-    border: 1px solid rgba(54, 252, 252, .6);
-    backdrop-filter: blur(5px);
-    position: relative;
-    z-index: 3;
-    .el-row{
-      &>div{
-        &>span{
-          color: #11FEEE;
-        }
-      }
-    }
-    :deep(.el-range-separator){
-      color: #11FEEE;
-    }
-    .el-table {
-      color: #11FEEE !important;
-      background-color: rgba(0,0,0,0) !important;
-      :deep(thead){
-        color: #11FEEE !important;
-        background-color: #092846 !important
-      }
-      :deep(tr){
-        background-color: rgba(0,0,0,0) !important;
-        .el-table__cell{
-          background-color: rgba(0,0,0,0) !important;
-        }
-        .el-table-fixed-column--right{
-          background-color: #092846 !important
-        }
-      }
-    }
-
-    ::v-deep(.el-popper){
-      background-color: rgba(10,31,92,1);
-      border: 1px solid rgba(17,254,238,.4);
-      color: #11FEEE;
-      .el-cascader-node{
-        .in-active-path{
-          background: #0049af;
-        }
-        &:hover{
-          background: #0049af;
-        }
-      }
-      .el-cascader-node__label{
-        color: #11FEEE;
-      }
-      .el-icon{
-        color: #11FEEE;
-      }
-      .el-select-dropdown__item{
-        color: #11FEEE;
-      }
-      .el-select-dropdown__item.hover{
-        background: #0049af;
-      }
-    }
-    ::v-deep(.el-popper__arrow){
-      &::before{
-        background-color: rgba(10,31,92,.6) !important;
-        border: 1px solid rgba(17,254,238,.4);
-      }
-    }
-    ::v-deep(.el-input__wrapper){
-      box-shadow: none;
-      border: 1px solid rgba(17,254,238,.2);
-      background: rgba(10,31,92,.6) !important;
-      height: 1.5rem;
-      color: #11FEEE;
-
-      input{
-        font-size: 0.8rem;
-        color: #11FEEE;
-      }
-      .el-icon{
-        color: #11FEEE;
-      }
-    }
-  }
 }
 .el-card {
     border: 0;

--
Gitblit v1.9.2