From 4ef69f1d7bdd01471d207c865a394c618c214452 Mon Sep 17 00:00:00 2001
From: Your Name <123456>
Date: 星期一, 13 三月 2023 09:46:16 +0800
Subject: [PATCH] Merge branch 'master' of https://sinanoaq.cn:8888/r/gtqt

---
 src/views/intellectInspect/inspectIndex/index.vue | 1234 ++++++++++++++++++++++++++++++++++++++++++----------------
 1 files changed, 894 insertions(+), 340 deletions(-)

diff --git a/src/views/intellectInspect/inspectIndex/index.vue b/src/views/intellectInspect/inspectIndex/index.vue
index 2e64240..7be559d 100644
--- a/src/views/intellectInspect/inspectIndex/index.vue
+++ b/src/views/intellectInspect/inspectIndex/index.vue
@@ -1,62 +1,195 @@
 <template>
-    <div class="home-container">
+    <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 style="height: 100%">
-            <div class="homeCard topCard">
-                <div class="title">当前巡检任务</div>
-                <div class="top-info" v-if="unchecked != 0 || unusual != 0">
-                    <el-icon :size="18" color="#F3001E" style="margin-right: 4px"><BellFilled /></el-icon>
-                    预警消息:
-                    <div v-if="unchecked != 0">
+          <div class="topChart">
+            <div class="chart-item">
+              <div class="chart-tit">
+                <span class="tit">年度巡检异常趋势</span>
+              </div>
+              <div class="chart" :id="xjLine"></div>
+            </div>
+            <div class="chart-item">
+              <div class="chart-tit">
+                <span class="tit">异常区域设备统计</span>
+                <div class="filter-part">
+                  <el-switch
+                      v-model="chartStatus"
+                      inline-prompt
+                      style="--el-switch-on-color: #13ce66; --el-switch-off-color: #13ce66"
+                      active-text="区域"
+                      inactive-text="设备"
+                  />
+                </div>
+              </div>
+              <div class="chart" :id="sbtj"></div>
+              <el-radio-group v-model="period" size="small">
+                <el-radio border label="week">近7天</el-radio>
+                <el-radio border label="month">近30天</el-radio>
+                <el-radio border label="season">近90天</el-radio>
+                <el-radio border label="year">近一年</el-radio>
+              </el-radio-group>
+            </div>
+          </div>
+            <div class="midChart">
+              <div class="chart-item">
+                <div class="chart-tit">
+                  <div style="display: flex;align-items: center">
+                    <span class="tit">当前巡检任务</span>
+                    <div class="top-info" v-if="unchecked != 0 || unusual != 0">
+                      <el-icon :size="18" color="#F3001E" style="margin-right: 4px"><BellFilled /></el-icon>
+                      <div>预警消息:</div>
+                      <div v-if="unchecked != 0">
                         当日超期未巡检任务<el-tooltip
-                            class="box-item"
-                            effect="light"
-                            content="查看相关记录"
-                            placement="bottom-start"
-                    ><span @click="toOverTime(4)">{{ unchecked }}</span></el-tooltip>个
-                    </div>
-                    <span v-if="unchecked != 0 && unusual != 0">,</span>
-                    <div v-if="unusual != 0">
+                          class="box-item"
+                          effect="light"
+                          content="查看相关记录"
+                          placement="bottom-start"
+                      ><span @click="toOverTime(4)">{{ unchecked }}</span></el-tooltip>个
+                      </div>
+                      <span v-if="unchecked != 0 && unusual != 0">,</span>
+                      <div v-if="unusual != 0">
                         存在异常任务<el-tooltip
-                            class="box-item"
-                            effect="light"
-                            content="查看相关记录"
-                            placement="bottom-start"
-                    ><span @click="toOverTime(5)">{{ unusual }}</span
-                        ></el-tooltip>个
+                          class="box-item"
+                          effect="light"
+                          content="查看相关记录"
+                          placement="bottom-start"
+                      ><span @click="toOverTime(5)">{{ unusual }}</span
+                      ></el-tooltip>个
+                      </div>
+                      。
                     </div>
-                    。
+                  </div>
+                  <div class="checkAll" @click="checkAllRecord()">
+                    全部记录>>
+                  </div>
                 </div>
-            </div>
-            <div class="homeCard">
-                <div class="main-card">
-                    <div class="list">
-                        <div class="cardTop" v-for="(item, index) in tableData" :key="index">
-                            <div class="left-info">
-                                <span class="num">{{ pageSize * (pageIndex - 1) + index + 1 }}、</span>
-                                <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="mid-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="right-info">
-                                <div v-if="item.taskStatus == 2" @click="toLine(item)" class="checkBtn">查看实时巡检</div>
-                                <div v-else class="reviewBtn" @click="toDetails('查看', item)">[查看巡检记录]</div>
-                            </div>
+                <div class="chart">
+                  <el-table :data="tableData" stripe border :header-cell-style="{ background: '#fafafa' }">
+                    <el-table-column label="任务信息" align="center">
+                      <template #default="scope">
+                        <div class="left-info">
+                          <span>{{ scope.row.taskName }},</span>
+                          <p v-if="scope.row.execUserName == null">该任务暂无人认领</p>
+                          <p v-else>
+                              <span class="time">{{ scope.row.taskStatus == 2 ? scope.row.startTime : scope.row.endTime }}</span>由<span class="name">{{ scope.row.execUserName }}</span>进行的巡检任务
+                          </p>
                         </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>
+                      </template>
+                    </el-table-column>
+                    <el-table-column prop="taskStatus" label="任务状态" align="center" width="180">
+                      <template #default="scope">
+                        <span :class="scope.row.taskStatus == 1 ? 'grey' : scope.row.taskStatus == 2 ? 'green' : scope.row.taskStatus == 3 ? 'blue' : 'red'">{{ scope.row.taskStatus == 1 ? '待巡检' : scope.row.taskStatus == 2 ? '巡检中' : scope.row.taskStatus == 3 ? '已巡检' : '超期未巡检' }}</span>
+                      </template>
+                    </el-table-column>
+                    <el-table-column label="操作" align="center" width="180">
+                      <template #default="scope">
+                        <el-button type="text" size="small" v-if="scope.row.taskStatus == 2" @click="toLine(scope.row)" class="checkBtn">查看实时巡检</el-button>
+                        <el-button type="text" size="small" v-else class="reviewBtn" @click="toDetails('查看', scope.row)">查看巡检记录</el-button>
+                      </template>
+                    </el-table-column>
+                  </el-table>
                 </div>
+              </div>
             </div>
+          <div class="midChart">
+            <div class="chart-item">
+              <div class="chart-tit">
+                  <span class="tit">巡检异常清单</span>
+                  <div class="checkAll" @click="checkAllList()">
+                    全部记录>>
+                  </div>
+              </div>
+              <div class="chart">
+                <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 size="small" :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 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>
         </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" @refreshRecord="getListExcepOrder"></unusual-list>
     </div>
 </template>
 
@@ -68,14 +201,20 @@
 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';
+import * as echarts from 'echarts'
 import inspectRecordDialog from './components/inspectRecordDialog.vue';
+import inspectList from './components/inspectList.vue';
+import unusualList from './components/unusualList.vue';
 import { departmentApi } from '/@/api/systemManage/department';
+import screenfull from "screenfull";
 // 定义接口来定义对象的类型
 interface stateType {
     tableData: Array<string>;
+    unusualData: Array<any>;
     unchecked: null | number;
     unusual: null | number;
     uncheckedList: [];
@@ -89,6 +228,14 @@
     classGroupList: Array<classGroup>;
     quotaList: [];
     inspectPointAllList: [];
+    chartStatus:boolean;
+    period: string;
+    isFull:boolean;
+    themeColor:string;
+    dialogVisible:boolean;
+    workNum: string;
+    beImgs: [];
+    afImgs: []
 }
 interface type {
     id: number;
@@ -99,17 +246,27 @@
     groupName: string;
 }
 export default {
-    name: 'workingHours',
-    components: { inspectRecordDialog },
+    name: 'inspectIndex',
+    components: { inspectRecordDialog, inspectList, unusualList },
     setup() {
         const router = useRouter();
+        const xjLine = ref("eChartXjLine" + Date.now() + Math.random())
+        const sbtj = ref("eChartSbtj" + Date.now() + Math.random())
         const state = reactive<stateType>({
+            isFull: false,
+            themeColor: '#333',
+            workNum: '',
+            beImgs: [],
+            afImgs: [],
             pageIndex: 1,
-            pageSize: 10,
+            pageSize: 5,
             totalSize: 0,
             tableData: [],
+            unusualData: [],
             unchecked: null,
             unusual: null,
+            chartStatus: true,
+            period: 'month',
             uncheckedList: [],
             abnormalList: [],
             workTypeList: [
@@ -126,9 +283,12 @@
             ],
             classGroupList: [],
             quotaList: [],
-            inspectPointAllList: []
+            inspectPointAllList: [],
+            dialogVisible: false
         });
         const inspectRecordDialogRef = ref();
+        const inspectListRef = ref();
+        const unusualListRef = ref();
         interface User {
             name: string;
             startTime: string;
@@ -139,11 +299,274 @@
         // 页面载入时执行方法
         onMounted(() => {
             getInspectRecord();
+            getListExcepOrder();
             getDayData();
             getDepartmentData();
+            initXjLine()
+            initSbtj()
         });
+        const toFullscreen =()=>{
+          // console.log(state.isFull,'quanp',state.themeColor)
+          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'
+          }
+          initXjLine()
+          initSbtj()
+        }
+        const checkAllRecord =()=>{
+          inspectListRef.value.departmentList = state.departmentList
+          inspectListRef.value.showInspectList()
+        }
+        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 =()=>{
+          let dom = document.getElementById(xjLine.value);
+          let myChart = echarts.init(dom);
 
-        // 分页获取工作时段列表
+          let option: EChartsOption;
+
+          option = {
+            tooltip: {
+              trigger: 'axis'
+            },
+            legend: {
+              data: ['总趋势', '事业部'],
+              height: '15%',
+              top: 0,
+              bottom: 0,
+              padding:[1,1,1,0],
+              textStyle: {
+                // 设置默认的文字颜色
+                color: state.themeColor,
+                fontSize: 12
+              },
+            },
+            grid: {
+              top: '15%',
+              left: '3%',
+              right: '3%',
+              bottom: 0,
+              containLabel: true
+            },
+            toolbox: {
+              feature: {
+                // saveAsImage: {}
+              }
+            },
+            xAxis: {
+              type: 'category',
+              boundaryGap: false,
+              data: ['四月', '五月', '六月', '七月', '八月', '九月', '十月', '十一月', '十二月', '一月', '二月', '三月'],
+              axisLabel: {
+                color: state.themeColor
+              }
+            },
+            yAxis: {
+              type: 'value'
+            },
+            series: [
+              {
+                name: '总趋势',
+                type: 'line',
+                stack: 'Total',
+                data: [120, 132, 101, 134, 90, 120, 132, 101, 134, 90, 230, 210],
+                label:{
+                  show: true,
+                  color: '#95d475',
+                  fontSize: 12
+                },
+                lineStyle:{
+                  width: 1,
+                  color: '#95d475'
+                },
+                itemStyle:{
+                  color: '#95d475',
+                  borderColor: '#fff',
+                  borderWidth: 2
+                }
+              },
+              {
+                name: '事业部',
+                type: 'line',
+                stack: 'Total',
+                data: [220, 182, 191, 234, 290, 220, 182, 191, 234, 290, 330, 310],
+                label:{
+                  show: true,
+                  color: '#337ecc',
+                  fontSize: 12
+                },
+                lineStyle:{
+                  width: 1,
+                  color: '#337ecc'
+                },
+                itemStyle:{
+                  color: '#337ecc',
+                  borderColor: '#fff',
+                  borderWidth: 2
+                }
+              }
+            ]
+          }
+
+          option && myChart.setOption(option);
+          window.addEventListener("resize",function (){
+            myChart.resize();
+          });
+        }
+        const initSbtj =()=>{
+          let dom = document.getElementById(sbtj.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: '区域1' },
+                  { value: 735, name: '区域2' },
+                  { value: 580, name: '区域3' },
+                  { value: 484, name: '区域4' },
+                  { value: 735, name: '区域5' }
+                ]
+              }
+            ]
+          }
+
+          option && myChart.setOption(option);
+          window.addEventListener("resize",function (){
+            myChart.resize();
+          });
+        }
+        // 分页获取
         const getInspectRecord = async () => {
             const data = { pageSize: state.pageSize, pageIndex: state.pageIndex };
             let res = await inspectRecordApi().getInspectRecordByIndex(data);
@@ -156,6 +579,19 @@
                     message: res.data.msg
                 });
             }
+        };
+        // 分页获取
+        const getListExcepOrder = async () => {
+          const data = { pageSize: 4, pageIndex: state.pageIndex };
+          let res = await inspectIndexApi().getListExcepOrderByPage(data);
+          if (res.data.code === '200') {
+            state.unusualData = JSON.parse(JSON.stringify(res.data.data.records))
+          } else {
+            ElMessage({
+              type: 'warning',
+              message: res.data.msg
+            });
+          }
         };
         //获取部门
         const getDepartmentData = async () => {
@@ -222,9 +658,19 @@
             Edit,
             Delete,
             Refresh,
+            xjLine,
+            sbtj,
             Plus,
             router,
             inspectRecordDialogRef,
+            inspectListRef,
+            unusualListRef,
+            toFullscreen,
+            checkAllRecord,
+            checkAllList,
+            acceptance,
+            remark,
+            openPhoto,
             toLine,
             toOverTime,
             toDetails,
@@ -239,319 +685,240 @@
 <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: 18px;
-        color: #333;
-        overflow-x: auto;
-        & > span {
-            white-space: nowrap;
-        }
-        p {
-            white-space: nowrap;
-            overflow: hidden;
-            text-overflow: ellipsis;
-            & > span {
-                white-space: nowrap;
-            }
-        }
-    }
-    .mid-info {
-        width: 20%;
-        font-size: 18px;
-        color: #333;
-    }
-    .right-info {
-        width: 10%;
-        display: flex;
-        justify-content: right;
-        align-items: center;
-        font-size: 16px;
-        color: #fff;
-
-        div {
-            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;
-            }
-        }
-    }
-    .mid-info {
-        width: 20%;
-        font-size: 15px;
-        color: #333;
-    }
-    .right-info {
-        width: 10%;
-        display: flex;
-        justify-content: right;
-        align-items: center;
-        font-size: 13px;
-        color: #fff;
-        div {
-            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;
-            }
-        }
-    }
-    .mid-info {
-        width: 20%;
-        font-size: 12px;
-        color: #333;
-    }
-    .right-info {
-        width: 10%;
-        display: flex;
-        justify-content: right;
-        align-items: center;
-        font-size: 12px;
-        color: #fff;
-        div {
-            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;
+    .full{
+      position:fixed;
+      height: 34px;
+      line-height: 34px;
+      top: 80px;
+      right: 20px;
+      z-index: 99999;
+    }
+    .topChart{
+      width: 100%;
+      height: calc((100% - 40px) / 3);
+      display: flex;
+      justify-content: space-between;
+      align-items: flex-start;
+      margin-bottom: 20px;
+      &:last-of-type{
+        margin-bottom: 0;
+      }
 
-        .title {
+      .chart-item{
+        width: calc(60% - 20px);
+        height: 100%;
+        margin-right: 20px;
+        position: relative;
+        background: #fff;
+        padding: 20px;
+
+        &:last-of-type{
+          width: 40%;
+          margin-right: 0;
+        }
+
+        .chart-tit{
+          width: 100%;
+          display: flex;
+          align-items: flex-start;
+          justify-content: space-between;
+          .tit{
+            font-size: 1.33rem;
+            font-weight: bolder;
+          }
+          .filter-part{
+            display: flex;
+            align-items: center;
+            justify-content: right;
+            width: 20%;
+            .el-switch{
+              width: 100% !important;
+              :deep(.el-switch__core){
+                width: 100% !important;
+              }
+            }
+          }
+        }
+        .chart{
+          width: 100%;
+          height: 88%;
+        }
+        .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;
+          }
+        }
+      }
+    }
+    .midChart{
+      height: calc((100% - 40px) / 3);
+      width: 100%;
+      background: #fff;
+      display: flex;
+      justify-content: space-between;
+      align-items: flex-start;
+      margin-bottom: 20px;
+      padding: 20px;
+
+      .chart-item{
+        width: 100%;
+        height: 100%;
+        padding: 0 0 20px;
+
+        .chart-tit{
+          width: 100%;
+          height: 15%;
+          display: flex;
+          align-items: center;
+          justify-content: space-between;
+          .tit{
             font-size: 20px;
             font-weight: bolder;
-        }
-        .main-card {
-            width: 100%;
-            height: 100%;
-            .cardTop {
-                display: flex;
-                align-items: center;
-                justify-content: space-between;
-                margin-bottom: 10px;
-                background: #daf3ff;
-                padding: 10px 15px;
-                border-radius: 8px;
+          }
+          :deep(.el-switch__core){
+            width: 120px;
 
-                .left-info {
-                    .num {
-                        font-weight: bolder;
-                        margin-right: 10px;
-                    }
-                    .place {
-                        font-weight: bolder;
-                    }
-                    .time {
-                        font-weight: bolder;
-                        margin-right: 5px;
-                    }
-                    .name {
-                        font-weight: bolder;
-                        margin: 0 5px;
-                        font-weight: bolder;
-                    }
-                }
-                .mid-info {
-                    span {
-                        font-weight: bolder;
-                    }
+          }
+          .top-info {
+            display: flex;
+            font-size: 14px;
+            align-items: center;
+            background: #ffeb87;
+            padding: 4px 10px;
+            margin-left: 20px;
+            border-radius: 2px;
+            border: 1px solid #ffae00;
+            & > div {
+              vertical-align: middle;
+              white-space: nowrap;
+              height: 100%;
+              span {
+                color: #f3001e;
+                margin: 0 4px;
+                font-size: 18px;
+                cursor: pointer;
+                font-weight: bolder;
 
-                    .grey {
-                        color: #999;
-                    }
-                    .green {
-                        color: #44b100;
-                    }
-                    .blue {
-                        color: #409eff;
-                    }
-                    .red {
-                        color: red;
-                    }
+                &:hover{
+                  text-decoration: underline;
                 }
-                .right-info {
-                    .checkBtn {
-                        padding: 10px 15px;
-                        background: #409eff;
-                        border-radius: 4px;
-                        cursor: pointer;
-                    }
-
-                    .reviewBtn {
-                        margin: 10px 15px;
-                        cursor: pointer;
-                        color: #44b100;
-                    }
-                }
+              }
             }
-            .list {
-                height: calc(100% - 60px);
-                overflow-y: auto;
+          }
+          .checkAll{
+            cursor: pointer;
+            &:hover{
+              color: #409eff
             }
-            .pageBtn {
-                position: absolute;
-                bottom: 15px;
-                right: 20px;
-                height: 60px;
-                display: flex;
-                align-items: center;
-                justify-content: right;
+          }
+        }
+        .chart{
+          width: 100%;
+          height: 85%;
+          margin-top: 10px;
 
-                .demo-pagination-block + .demo-pagination-block {
-                    margin-top: 10px;
+          .el-table{
+            height: 100% !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;
+                    }
+                  }
                 }
-                .demo-pagination-block .demonstration {
-                    margin-bottom: 16px;
+              }
+              .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;
+                          }
+                        }
+                      }
+                    }
+                  }
                 }
+              }
             }
+          }
+
+          .pageBtn {
+            position: absolute;
+            bottom: 15px;
+            right: 20px;
+            height: 60px;
+            display: flex;
+            align-items: center;
+            justify-content: right;
+
+            .demo-pagination-block + .demo-pagination-block {
+              margin-top: 10px;
+            }
+            .demo-pagination-block .demonstration {
+              margin-bottom: 16px;
+            }
+          }
         }
-        &:last-of-type {
-            position: relative;
-            padding-top: 0;
-            height: calc(100% - 60px);
-        }
+      }
     }
+
     .el-row {
         display: flex;
         align-items: center;
@@ -565,6 +932,193 @@
         }
     }
 }
+.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;
+  }
+  .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;
+          }
+          :deep(tr){
+            background-color: rgba(0,0,0,0) !important;
+            .el-table__cell{
+              background-color: rgba(0,0,0,0) !important;
+            }
+          }
+        }
+      }
+    }
+  }
+  .midChart{
+    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;
+    .tit{
+      color: #11FEEE;
+    }
+    .checkAll{
+      cursor: pointer;
+      color: #11feee;
+      &:hover{
+        color: #409eff
+      }
+    }
+    .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-input {
     width: 100% !important;
 }

--
Gitblit v1.9.2