From 38f0a9145a29f570331f11505968f90bd1c08646 Mon Sep 17 00:00:00 2001
From: batman <978517621@qq.com>
Date: 星期一, 06 三月 2023 13:22:33 +0800
Subject: [PATCH] 新修改添加页面

---
 src/views/intellectInspect/inspectIndex2/index.vue | 1003 ++++++++++++++++++++++++++++++++++++++--------------------
 1 files changed, 661 insertions(+), 342 deletions(-)

diff --git a/src/views/intellectInspect/inspectIndex2/index.vue b/src/views/intellectInspect/inspectIndex2/index.vue
index 2e64240..c530dfd 100644
--- a/src/views/intellectInspect/inspectIndex2/index.vue
+++ b/src/views/intellectInspect/inspectIndex2/index.vue
@@ -1,62 +1,174 @@
 <template>
     <div class="home-container">
         <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>
+                <el-switch
+                    v-model="chartStatus"
+                    class="ml-2"
+                    inline-prompt
+                    style="--el-switch-on-color: #13ce66; --el-switch-off-color: #13ce66"
+                    active-text="区域"
+                    inactive-text="设备"
+                />
+              </div>
+              <dv-active-ring-chart :config="conf" class="chart"/>
+              <el-radio-group v-model="period" label="size control" size="small" height="250px" style="display: flex;justify-content: center;margin-top: 10px">
+                <el-radio-button label="week">近7天</el-radio-button>
+                <el-radio-button label="month">近30天</el-radio-button>
+                <el-radio-button label="season">近90天</el-radio-button>
+                <el-radio-button label="year">近一年</el-radio-button>
+              </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>
+                <div class="chart">
+<!--                  <el-table :data="tableData" style="width: 100%" stripe border>-->
+<!--                    <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>-->
+<!--                      </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" v-if="scope.row.taskStatus == 2" @click="toLine(scope.row)" class="checkBtn">查看实时巡检</el-button>-->
+<!--                        <el-button type="text" v-else class="reviewBtn" @click="toDetails('查看', scope.row)">查看巡检记录</el-button>-->
+<!--                      </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="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 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>
+          <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">
+                <div class="list">
+                  <div class="list-tit">
+                    <span class="w10">工单编号</span>
+                    <span class="w10">异常巡检点</span>
+                    <span class="w10">巡检(发现)时间</span>
+                    <span class="w10">所属巡检任务</span>
+                    <span class="w10">设备/区域名称</span>
+                    <span class="w10">正常参考值</span>
+                    <span class="w10">实际巡检值</span>
+                    <span class="w10">隐患处置人</span>
+                    <span class="w10">电话</span>
+                    <span class="w10">处置状态</span>
+                    <span class="w10">处置描述反馈</span>
+                    <span class="w15">操作</span>
+                  </div>
+                  <div class="cardTop" v-for="(item, index) in unusualData" :key="index">
+                    <span class="w10">{{item.num}}</span>
+                    <span class="w10">{{item.spot}}</span>
+                    <span class="w10">{{item.time}}</span>
+                    <span class="w10">{{item.job}}</span>
+                    <span class="w10">{{item.area}}</span>
+                    <span class="w10">{{item.refer}}</span>
+                    <span class="w10">{{item.real}}</span>
+                    <span class="w10">{{item.name}}</span>
+                    <span class="w10">{{item.phone}}</span>
+                    <span class="w10">{{item.status}}</span>
+                    <span class="w10">{{item.describe}}</span>
+                    <span class="w15">
+                      <el-button type="text" @click="toLine(item)" size="small">验收</el-button>
+                      <el-button type="text" @click="toPhotos('查看', item)" size="small">查看现场照片</el-button>
+                    </span>
+                  </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>
         </div>
         <inspect-record-dialog ref="inspectRecordDialogRef" @refreshInspectRecord="getInspectRecord"></inspect-record-dialog>
+        <inspect-list ref="inspectListRef"></inspect-list>
+        <unusual-list ref="unusualListRef"></unusual-list>
     </div>
 </template>
 
@@ -71,11 +183,15 @@
 import { FormInstance, FormRules, ElMessage } from 'element-plus';
 import { inspectRecordApi } from '/@/api/intellectInspectSystem/inspectRecord';
 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';
 // 定义接口来定义对象的类型
 interface stateType {
     tableData: Array<string>;
+    unusualData: Array<any>;
     unchecked: null | number;
     unusual: null | number;
     uncheckedList: [];
@@ -89,6 +205,9 @@
     classGroupList: Array<classGroup>;
     quotaList: [];
     inspectPointAllList: [];
+    conf:{};
+    chartStatus:boolean;
+    period: string
 }
 interface type {
     id: number;
@@ -100,16 +219,73 @@
 }
 export default {
     name: 'workingHours',
-    components: { inspectRecordDialog },
+    components: { inspectRecordDialog, inspectList, unusualList },
     setup() {
         const router = useRouter();
+        const xjLine = ref("eChartXjLine" + Date.now() + Math.random())
         const state = reactive<stateType>({
             pageIndex: 1,
-            pageSize: 10,
+            pageSize: 4,
             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: '更换法兰更换法兰更换法兰更换法兰更换法兰更换法兰'
+              }
+            ],
             unchecked: null,
             unusual: null,
+            chartStatus: true,
+            period: 'month',
             uncheckedList: [],
             abnormalList: [],
             workTypeList: [
@@ -126,9 +302,43 @@
             ],
             classGroupList: [],
             quotaList: [],
-            inspectPointAllList: []
+            inspectPointAllList: [],
+            conf:{
+              radius: '75%',
+              activeRadius: '80%',
+              lineWidth: 24,
+              digitalFlopStyle: {
+                fontSize: 25,
+                fill: '#000',
+              },
+              textColor: '#000',
+              data: [
+                {
+                  name: '区域1',
+                  value: 98,
+                },
+                {
+                  name: '区域2',
+                  value: 150,
+                },
+                {
+                  name: '区域3',
+                  value: 62,
+                },
+                {
+                  name: '区域4',
+                  value: 54,
+                },
+                {
+                  name: '区域5',
+                  value: 54,
+                }
+              ]
+          }
         });
         const inspectRecordDialogRef = ref();
+        const inspectListRef = ref();
+        const unusualListRef = ref();
         interface User {
             name: string;
             startTime: string;
@@ -141,7 +351,102 @@
             getInspectRecord();
             getDayData();
             getDepartmentData();
+            initXjLine()
         });
+        const checkAllRecord =()=>{
+          inspectListRef.value.departmentList = state.departmentList
+          inspectListRef.value.showInspectList()
+        }
+        const checkAllList =()=>{
+          unusualListRef.value.showUnusualList()
+        }
+        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]
+            },
+            grid: {
+              top: '15%',
+              left: '3%',
+              right: '3%',
+              bottom: 0,
+              containLabel: true
+            },
+            toolbox: {
+              feature: {
+                // saveAsImage: {}
+              }
+            },
+            xAxis: {
+              type: 'category',
+              boundaryGap: false,
+              data: ['四月', '五月', '六月', '七月', '八月', '九月', '十月', '十一月', '十二月', '一月', '二月', '三月']
+            },
+            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 getInspectRecord = async () => {
@@ -222,9 +527,14 @@
             Edit,
             Delete,
             Refresh,
+            xjLine,
             Plus,
             router,
             inspectRecordDialogRef,
+            inspectListRef,
+            unusualListRef,
+            checkAllRecord,
+            checkAllList,
             toLine,
             toOverTime,
             toDetails,
@@ -239,319 +549,328 @@
 <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;
 
-        .title {
+    .topChart{
+      height: calc((100% - 40px) / 3);
+      width: 100%;
+      background: #fff;
+      display: flex;
+      justify-content: space-between;
+      align-items: flex-start;
+      margin-bottom: 20px;
+      padding: 20px 20px 90px;
+
+      .chart-item{
+        width: 70%;
+        height: 120%;
+        padding-right: 10px;
+
+        &:last-of-type{
+          width: 30%;
+          height: 100%;
+          padding-right: 0;
+          padding-left: 10px;
+          position: relative;
+        }
+
+        .chart-tit{
+          width: 100%;
+          display: flex;
+          align-items: center;
+          justify-content: space-between;
+          .tit{
             font-size: 20px;
             font-weight: bolder;
+          }
+          :deep(.el-switch__core){
+            width: 120px;
+          }
         }
-        .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;
-
-                .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;
-                    }
-
-                    .grey {
-                        color: #999;
-                    }
-                    .green {
-                        color: #44b100;
-                    }
-                    .blue {
-                        color: #409eff;
-                    }
-                    .red {
-                        color: red;
-                    }
-                }
-                .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;
-            }
-            .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;
-                }
-            }
+        .chart{
+          width: 100%;
+          height: 100%;
         }
-        &:last-of-type {
-            position: relative;
-            padding-top: 0;
-            height: calc(100% - 60px);
+        .el-radio-group{
+          width: 100%;
+          flex-wrap: nowrap;
+          position: absolute;
+          left: 50%;
+          transform: translateX(-50%);
         }
+        :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;
+          }
+          :deep(.el-switch__core){
+            width: 120px;
+
+          }
+          .top-info {
+            display: flex;
+            font-size: 14px;
+            align-items: center;
+            background: #ffeb87;
+            padding: 4px 15px;
+            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;
+
+                &:hover{
+                  text-decoration: underline;
+                }
+              }
+            }
+          }
+          .checkAll{
+            cursor: pointer;
+            &:hover{
+              color: #409eff
+            }
+          }
+        }
+        .chart{
+          width: 100%;
+          height: 85%;
+          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__body-wrapper{
+                height: 80% !important;
+                .el-scrollbar__view{
+                  height: 100% !important;
+                  .el-table__body{
+                    height: 100% !important;
+
+                    .el-table__row{
+                      height: 20% !important;
+                    }
+                  }
+                }
+              }
+            }
+          }
+          .list {
+            height: 100%;
+            margin-top: 10px;
+            border: 1px solid #ebeef5;
+
+            .list-tit{
+              width: 100%;
+              height: 20%;
+              display: flex;
+              align-items: center;
+              border-bottom: 1px solid #ebeef5;
+
+              span{
+                text-align: center;
+                padding: 10px 0;
+              }
+
+              .w60{
+                width: 60%;
+                border-right: 1px solid #ebeef5;
+              }
+              .w20{
+                width: 20%;
+                border-right: 1px solid #ebeef5;
+
+                &:last-of-type{
+                  border-right: none;
+                }
+              }
+              .w15{
+                width: 15%;
+                border-right: 1px solid #ebeef5;
+                text-align: center;
+                white-space: nowrap;
+                overflow: hidden;
+                text-overflow: ellipsis;
+              }
+              .w10{
+                width: 10%;
+                border-right: 1px solid #ebeef5;
+                text-align: center;
+                white-space: nowrap;
+                overflow: hidden;
+                text-overflow: ellipsis;
+              }
+            }
+
+            .cardTop {
+              display: flex;
+              width: 100%;
+              height: 20%;
+              align-items: center;
+              border-bottom: 1px solid #ebeef5;
+
+              &:last-of-type{
+                border-bottom: none;
+              }
+              span{
+                text-align: center;
+                padding: 10px 0;
+              }
+              .l-info{
+                width: 60%;
+                height: 100%;
+                border-right: 1px solid #ebeef5;
+                display: flex;
+                align-items: center;
+                padding: 0 20px;
+
+                .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;
+                }
+              }
+              .m-info{
+                height: 100%;
+                width: 20%;
+                display: flex;
+                align-items: center;
+                border-right: 1px solid #ebeef5;
+                justify-content: center;
+
+                span {
+                  font-weight: bolder;
+                }
+
+                .grey {
+                  color: #999;
+                }
+                .green {
+                  color: #44b100;
+                }
+                .blue {
+                  color: #409eff;
+                }
+                .red {
+                  color: red;
+                }
+              }
+              .r-info{
+                width: 20%;
+                text-align: center;
+
+                .reviewBtn {
+                  color: #44b100;
+                }
+              }
+              .w10{
+                width: 10%;
+                border-right: 1px solid #ebeef5;
+                text-align: center;
+                white-space: nowrap;
+                overflow: hidden;
+                text-overflow: ellipsis;
+              }
+              .w15{
+                width: 15%;
+                border-right: 1px solid #ebeef5;
+                text-align: center;
+                white-space: nowrap;
+                overflow: hidden;
+                text-overflow: ellipsis;
+                .el-button{
+                  margin-left: 0 !important;
+                  padding: 12px 0;
+                  &:last-of-type{
+                    margin-left: 12px !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;
+            }
+          }
+        }
+      }
+    }
+
     .el-row {
         display: flex;
         align-items: center;

--
Gitblit v1.9.2