From 77737f4e73f7267170b9b06fc73d1610c29c0661 Mon Sep 17 00:00:00 2001
From: 马宇豪 <978517621@qq.com>
Date: 星期二, 12 十一月 2024 13:18:35 +0800
Subject: [PATCH] 新增

---
 src/views/riskWarningSys/warningBigScreen/indexs/index.vue |  254 ++++++++++++--------------------------------------
 1 files changed, 63 insertions(+), 191 deletions(-)

diff --git a/src/views/riskWarningSys/warningBigScreen/indexs/index.vue b/src/views/riskWarningSys/warningBigScreen/indexs/index.vue
index 87d78cc..771ed21 100644
--- a/src/views/riskWarningSys/warningBigScreen/indexs/index.vue
+++ b/src/views/riskWarningSys/warningBigScreen/indexs/index.vue
@@ -7,225 +7,134 @@
         </div>
       </dv-decoration-11>
     </div>
-
-    <div class="tit">
-      <div class="title">{{curChart===1?'事故等级分布':curChart===2?'应急演练次数':curChart===3?'年度隐患等级数量分布':curChart===4?'SPI数据分析':curChart===5?'教育培训分析':curChart===6?'隐患等级':curChart===7?'人员专业度分布':curChart===8?'预警消息报告':curChart===9?'特殊作业实时监控':'风险应急物资储备'}}</div>
-    </div>
-    <div class="chart-cont">
-      <div class="chart">
-        <div v-show="curChart===2" class="selector-2">距上次演练结束5天</div>
-        <el-select v-show="curChart===3" class="selector-3" v-model="month" placeholder="Select" size="default">
-          <el-option
-                  v-for="item in optionList"
-                  :key="item.value"
-                  :label="item.label"
-                  :value="item.value"
-          />
-        </el-select>
-        <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>
-        <educate v-else-if="curChart===5" :size="2.5"></educate>
-        <danger v-else-if="curChart===6" :size="2.5"></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>
-        <stock v-else class="main-chart" :size="2"></stock>
-      </div>
-      <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 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>
-        </div>
-        <dv-decoration-10 :color="lineColor" style="width:100%;height:5%;" />
-      </div>
-    </div>
+    <acc-desc v-show="curChart===1"></acc-desc>
+    <train-desc v-show="curChart===2"></train-desc>
+    <risk-desc v-show="curChart===3"></risk-desc>
+    <spi-desc v-show="curChart===4"></spi-desc>
+    <edu-desc v-show="curChart===5"></edu-desc>
+    <dan-desc v-show="curChart===6"></dan-desc>
+    <pro-desc v-show="curChart===7"></pro-desc>
+    <msg-desc v-show="curChart===8" ref="msgRef"/>
+    <mon-desc v-show="curChart===9"></mon-desc>
+    <sto-desc v-show="curChart===10"></sto-desc>
   </div>
 </template>
 
 <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';
-  import { useRoute } from 'vue-router';
+  import {useRoute, useRouter} from 'vue-router';
   import {hiddenReportApi} from "/@/api/doublePreventSystem/report";
   import { productionDeviceApi } from '/@/api/doublePreventSystem/productionDevice/index.ts';
   import '/@/theme/bigScreen.css'
   import {useScreenTheme} from "/@/stores/screenTheme"
   import {storeToRefs} from "pinia";
+  import msgDesc from '/@/views/riskWarningSys/warningBigScreen/indexs/components/msg.vue'
 
   // 定义接口来定义对象的类型
   interface stateType {
     isScreenfull: boolean;
     curChart: number | null;
-    month: number;
-    optionList: Array<any>;
-    lineColor: Array<string>;
-    accidentDesc: Array<any>;
+    lineColor: Array<string>
   }
   export default defineComponent({
     name: 'warningPage',
     components: {
-      accident: defineAsyncComponent(() => import('/@/views/riskWarningSys/warningBigScreen/components/accident.vue')),
-      training: defineAsyncComponent(() => import('/@/views/riskWarningSys/warningBigScreen/components/training.vue')),
-      spi: defineAsyncComponent(() => import('/@/views/riskWarningSys/warningBigScreen/components/SPI.vue')),
-      risk: defineAsyncComponent(() => import('/@/views/riskWarningSys/warningBigScreen/components/risk.vue')),
-      educate: defineAsyncComponent(() => import('/@/views/riskWarningSys/warningBigScreen/components/educate.vue')),
-      danger: defineAsyncComponent(() => import('/@/views/riskWarningSys/warningBigScreen/components/danger.vue')),
-      profession: defineAsyncComponent(() => import('/@/views/riskWarningSys/warningBigScreen/components/profession.vue')),
-      message: defineAsyncComponent(() => import('/@/views/riskWarningSys/warningBigScreen/components/message.vue')),
-      monitor: defineAsyncComponent(() => import('/@/views/riskWarningSys/warningBigScreen/components/monitor.vue')),
-      stock: defineAsyncComponent(() => import('/@/views/riskWarningSys/warningBigScreen/components/stock.vue'))
+      accDesc: defineAsyncComponent(() => import('/@/views/riskWarningSys/warningBigScreen/indexs/components/acc.vue')),
+      trainDesc: defineAsyncComponent(() => import('/@/views/riskWarningSys/warningBigScreen/indexs/components/train.vue')),
+      spiDesc: defineAsyncComponent(() => import('/@/views/riskWarningSys/warningBigScreen/indexs/components/spi.vue')),
+      riskDesc: defineAsyncComponent(() => import('/@/views/riskWarningSys/warningBigScreen/indexs/components/risk.vue')),
+      eduDesc: defineAsyncComponent(() => import('/@/views/riskWarningSys/warningBigScreen/indexs/components/edu.vue')),
+      danDesc: defineAsyncComponent(() => import('/@/views/riskWarningSys/warningBigScreen/indexs/components/dan.vue')),
+      proDesc: defineAsyncComponent(() => import('/@/views/riskWarningSys/warningBigScreen/indexs/components/pro.vue')),
+      msgDesc,
+      monDesc: defineAsyncComponent(() => import('/@/views/riskWarningSys/warningBigScreen/indexs/components/mon.vue')),
+      stoDesc: defineAsyncComponent(() => import('/@/views/riskWarningSys/warningBigScreen/indexs/components/sto.vue'))
     },
     setup() {
+      const msgRef = ref()
       const screenThemes = useScreenTheme()
       const { screenTheme } = storeToRefs(screenThemes);
       const route = useRoute();
+      const router = useRouter();
       const state = reactive<stateType>({
         isScreenfull: false,
         curChart: null,
-        month: 0,
         lineColor: ['#11FEEE'],
-        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
-          }
-        ],
-        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万元'
-          }
-        ]
       });
 
       // 页面载入时执行方法
       onMounted(() => {
+        console.log(msgRef.value,'val')
         if (route.query.num) {
           state.curChart = Number(route.query.num)
+
+          if(route.query.num == '8'){
+            if(route.query.rowIndex){
+              msgRef.value.showDetails(route.query.rowIndex)
+            }else{
+              msgRef.value.showDetails(0)
+            }
+          }
         }
         getTheme()
       });
 
+      watchEffect(() => {
+
+      })
 
       // 全屏
       const onScreenfullClick = () => {
         if (!screenfull.isEnabled) {
           ElMessage.warning('暂不不支持全屏');
-          return false;
+          return false
         }
         screenfull.toggle();
         screenfull.on('change', () => {
           if (screenfull.isFullscreen) {
-            state.isScreenfull = true;
+            state.isScreenfull = true
           } else {
-            state.isScreenfull = false;
+            state.isScreenfull = false
           }
         });
       };
       const getTheme =()=>{
         if(screenTheme.value.isDark){
-          window.document.getElementById('pageCont').setAttribute( "class", 'dark-page' );
+          window.document.getElementById('pageCont').setAttribute( "class", 'dark-page' )
           state.lineColor = ['#11FEEE']
         }else{
-          window.document.getElementById('pageCont').setAttribute( "class", 'light-page' );
+          window.document.getElementById('pageCont').setAttribute( "class", 'light-page' )
           state.lineColor = ['#333','#ccc']
         }
       }
+      watchEffect(() => {
+
+      })
       // 返回上一页
       const goBack = () => {
-        window.history.go(-1);
+        router.push({
+            name: "warningScreen"
+        });
       };
 
 
       return {
         route,
+        msgRef,
         onScreenfullClick,
         goBack,
         ...toRefs(state)
@@ -295,25 +204,6 @@
           font-size: 1.25rem;
           color: #fff;
         }
-        .selector-3{
-          position: absolute;
-          top: 5%;
-          right: 10%;
-          width: 20%;
-
-          ::v-deep(.el-input__wrapper){
-            background: none !important;
-            box-shadow: none;
-            color: #11FEEE;
-
-            input{
-              color: #11FEEE;
-            }
-            .el-icon{
-              color: #11FEEE;
-            }
-          }
-        }
         .main-chart{
           width: 100%;
           height: 100%;
@@ -324,9 +214,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%;
@@ -347,6 +237,7 @@
             color: #11FEEE;
 
             &::-webkit-scrollbar { width: 0; height: 0; color: transparent; }
+            &::scrollbar { width: 0; height: 0; color: transparent; }
 
             &>div{
               margin-bottom: 2rem;
@@ -434,25 +325,6 @@
           font-size: 1.25rem;
           color: #fff;
         }
-        .selector-3{
-          position: absolute;
-          top: 5%;
-          right: 10%;
-          width: 20%;
-
-          ::v-deep(.el-input__wrapper){
-            background: none !important;
-            box-shadow: none;
-            color: #11FEEE;
-
-            input{
-              color: #11FEEE;
-            }
-            .el-icon{
-              color: #11FEEE;
-            }
-          }
-        }
         .main-chart{
           width: 100%;
           height: 100%;
@@ -463,9 +335,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%;

--
Gitblit v1.9.2