From 9a0508f506f05191b6915d5037507af0117853d1 Mon Sep 17 00:00:00 2001
From: Admin <978517621@qq.com>
Date: 星期一, 15 八月 2022 19:47:59 +0800
Subject: [PATCH] Default Changelist

---
 src/views/doublePrevent/dpIndex/index.vue |  484 +++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 484 insertions(+), 0 deletions(-)

diff --git a/src/views/doublePrevent/dpIndex/index.vue b/src/views/doublePrevent/dpIndex/index.vue
new file mode 100644
index 0000000..c25b2c8
--- /dev/null
+++ b/src/views/doublePrevent/dpIndex/index.vue
@@ -0,0 +1,484 @@
+<template>
+    <div class="home-container">
+        <div class="main-cont">
+            <div class="table-item">
+                <div class="item-head">
+                    <span>告警风险事件概括</span>
+                    <div @click="toRiskEve">查看更多>></div>
+                </div>
+                <el-table :data="eventData" style="width: 100%" :header-cell-style="{ background: '#fafafa' }">
+                    <el-table-column prop="riskEventName" label="风险事件名称" show-overflow-tooltip></el-table-column>
+                    <el-table-column prop="riskUnitName" label="风险分析单元名称" show-overflow-tooltip></el-table-column>
+                    <el-table-column prop="createByUserName" label="创建人" show-overflow-tooltip></el-table-column>
+                    <el-table-column prop="gmtCreate" label="创建时间" show-overflow-tooltip></el-table-column>
+                </el-table>
+            </div>
+            <div class="table-item table-item2">
+                <div class="item-head">
+                    <span>隐患状态详情</span>
+                    <div @click="toRiskStatus">查看更多>></div>
+                </div>
+                <el-table :data="riskStatusData" style="width: 100%" :header-cell-style="{ background: '#fafafa' }">
+                    <el-table-column type="index" label="序号" width="60" />
+<!--                    <el-table-column prop="reportTime" label="上报时间" show-overflow-tooltip width="170px"></el-table-column>-->
+                    <el-table-column prop="dangerCode" label="隐患名称" show-overflow-tooltip></el-table-column>
+                    <el-table-column prop="dangerLevel" label="隐患等级" show-overflow-tooltip>
+                        <template #default="scope">
+                            <div :style="{color: scope.row.dangerLevel==1?'#409eff':'#ff0000'}">
+                                {{scope.row.dangerLevel==1?'一般隐患':'重大隐患'}}
+                            </div>
+                        </template>
+                    </el-table-column>
+                    <el-table-column prop="reportTime" label="上报时间" show-overflow-tooltip></el-table-column>
+                    <el-table-column prop="dangerStatus" label="隐患状态" show-overflow-tooltip>
+                        <template #default="scope">
+                            <div :style="{color: scope.row.dangerStatus==0 || scope.row.dangerStatus==1 ?'#67C23A':(scope.row.dangerStatus==2 || scope.row.dangerStatus==3?'#F56C6C':'#409EFF')}">
+                                {{scope.row.dangerStatus==0?'整改中':(scope.row.dangerStatus==1?'待验收':(scope.row.dangerStatus==2?'延期整改':(scope.row.dangerStatus==3?'超期未整改':'已验收')))}}
+                            </div>
+                        </template>
+                    </el-table-column>
+                </el-table>
+            </div>
+            <div class="table-item">
+                <div class="item-head">
+                    <span>隐患整改情况</span>
+                </div>
+                <div id="riskFix"></div>
+            </div>
+            <div class="table-item">
+                <div class="item-head">
+                    <span>风险装置列表</span>
+                    <div @click="toRevice">查看更多>></div>
+                </div>
+                <el-table class="deviceTable" :data="deviceData" style="width: 100%" :header-cell-style="{ background: '#fafafa' }">
+                    <el-table-column prop="produceDeviceName" label="装置名称" show-overflow-tooltip></el-table-column>
+                    <el-table-column prop="riskLevel" label="风险等级" show-overflow-tooltip>
+                        <template #default="scope">
+                            <div :style="{color: scope.row.riskLevel==1?'#409EFF':(scope.row.riskLevel==2?'#67C23A':(scope.row.riskLevel==3?'#E6A23C':'#F56C6C'))}">
+                                {{scope.row.riskLevel==1?'低风险':(scope.row.riskLevel==2?'一般风险':(scope.row.riskLevel==3?'较大风险':'重大风险'))}}
+                            </div>
+                        </template>
+                    </el-table-column>
+                </el-table>
+                <div class="deviceLevel">
+                    <div class="levelItem red">
+                        <span>0</span>
+                        <div>重大风险</div>
+                    </div>
+                    <div class="levelItem orange">
+                        <span>2</span>
+                        <div>较大风险</div>
+                    </div>
+                    <div class="levelItem green">
+                        <span>8</span>
+                        <div>一般风险</div>
+                    </div>
+                    <div class="levelItem blue">
+                        <span>10</span>
+                        <div>低风险</div>
+                    </div>
+                </div>
+            </div>
+            <div class="table-item">
+                <div class="item-head">
+                    <span>隐患等级分布</span>
+                </div>
+                <div id="riskLevel"></div>
+            </div>
+        </div>
+    </div>
+</template>
+
+<script lang="ts">
+    import { toRefs, reactive, ref, onMounted } from 'vue';
+    import { storeToRefs } from 'pinia';
+    import { initBackEndControlRoutes } from '/@/router/backEnd';
+    import { useUserInfo } from '/@/stores/userInfo';
+    import { Session } from '/@/utils/storage';
+    import { Edit, View, Plus, Delete, Refresh, Search, Download } from '@element-plus/icons-vue';
+    import { ElTable } from 'element-plus';
+    import { FormInstance, FormRules, ElMessage } from 'element-plus';
+    import { safetyRiskEventApi } from '/@/api/doublePreventSystem/safetyRiskEvent/index.ts';
+    import { useRouter } from 'vue-router';
+    import {hiddenReportApi} from "/@/api/doublePreventSystem/report";
+    import { productionDeviceApi } from '/@/api/doublePreventSystem/productionDevice/index.ts';
+    import * as echarts from 'echarts/core';
+    import {TooltipComponent, TooltipComponentOption, LegendComponent, LegendComponentOption} from 'echarts/components';
+    import {PieChart, PieSeriesOption} from 'echarts/charts';
+    import {LabelLayout} from 'echarts/features';
+    import {CanvasRenderer} from 'echarts/renderers';
+    echarts.use([TooltipComponent, LegendComponent, PieChart, CanvasRenderer, LabelLayout]);
+    // 定义接口来定义对象的类型
+    interface stateType {
+        eventData: Array<any>;
+        riskStatusData: Array<any>;
+        deviceData: Array<any>;
+        pageIndex: number;
+        pageSize: number;
+        totalSize: number;
+        departmentList: [];
+        classGroupList: Array<classGroup>;
+        inspectPointAllList: [];
+    }
+    interface type {
+        id: number;
+        name: string;
+    }
+    interface classGroup {
+        id: number;
+        groupName: string;
+    }
+    export default {
+        name: 'workingHours',
+        components: {},
+        setup() {
+            const router = useRouter();
+            const state = reactive<stateType>({
+                pageIndex: 1,
+                pageSize: 5,
+                totalSize: 0,
+                eventData: [],
+                riskStatusData: [],
+                deviceData: [],
+                departmentList: [],
+                classGroupList: [],
+                inspectPointAllList: []
+            });
+
+            // 页面载入时执行方法
+            onMounted(() => {
+                getEventRecord();
+                getRiskStatusRecord();
+                getDeviceRecord();
+                initRiskFix();
+                initRiskLevel()
+            });
+
+            // 告警列表
+            const getEventRecord = async () => {
+                const data = { pageSize: state.pageSize, pageIndex: state.pageIndex};
+                let res = await safetyRiskEventApi().getSafetyRiskEventList(data)
+                if (res.data.code === '200'){
+                    state.eventData = res.data.data
+                } else {
+                    ElMessage({
+                        type: 'warning',
+                        message: res.data.msg
+                    });
+                }
+            };
+
+            // 隐患状态列表
+            const getRiskStatusRecord = async () => {
+                const data = { pageSize: state.pageSize, pageIndex: state.pageIndex};
+                let res = await hiddenReportApi().getHiddenReportList(data)
+                if (res.data.code === '200'){
+                    state.riskStatusData = res.data.data
+                } else {
+                    ElMessage({
+                        type: 'warning',
+                        message: res.data.msg
+                    });
+                }
+            };
+
+            // 隐患状态列表
+            const getDeviceRecord = async () => {
+                const data = { pageSize: state.pageSize, pageIndex: state.pageIndex};
+                let res = await productionDeviceApi().getProductionDeviceList(data)
+                if (res.data.code === '200'){
+                    state.deviceData = res.data.data
+                } else {
+                    ElMessage({
+                        type: 'warning',
+                        message: res.data.msg
+                    });
+                }
+            };
+
+            // 隐患整改情况
+            const initRiskFix =()=>{
+                var dom = document.getElementById('riskFix');
+                var myChart = echarts.init(dom, null, {
+                    renderer: 'canvas',
+                    useDirtyRect: false
+                });
+                var app = {};
+
+                var option;
+
+                option = {
+                    tooltip: {
+                        trigger: 'item'
+                    },
+                    legend: {
+                        bottom: '10%',
+                        left: 'center'
+                    },
+                    series: [
+                        {
+                            name: 'Access From',
+                            type: 'pie',
+                            radius: ['35%', '60%'],
+                            avoidLabelOverlap: false,
+                            itemStyle: {
+                                borderRadius: 6,
+                                borderColor: '#fff',
+                                borderWidth: 2
+                            },
+                            label: {
+                                show: false,
+                                position: 'center'
+                            },
+                            emphasis: {
+                                label: {
+                                    show: true,
+                                    fontSize: '40',
+                                    fontWeight: 'bold'
+                                }
+                            },
+                            labelLine: {
+                                show: false
+                            },
+                            data: [
+                                { value: 1048, name: '整改中' },
+                                { value: 735, name: '待验收' },
+                                { value: 580, name: '延期整改' },
+                                { value: 484, name: '超期未整改' },
+                                { value: 300, name: '已验收' }
+                            ],
+                            center: ['50%','35%']
+                        }
+                    ]
+                };
+
+                if (option && typeof option === 'object') {
+                    myChart.setOption(option);
+                }
+
+                window.addEventListener('resize', myChart.resize);
+            }
+
+            // 隐患整改情况
+            const initRiskLevel =()=>{
+                var dom = document.getElementById('riskLevel');
+                var myChart = echarts.init(dom, null, {
+                    renderer: 'canvas',
+                    useDirtyRect: false
+                });
+                var app = {};
+
+                var option;
+
+                option = {
+                    tooltip: {
+                        trigger: 'item'
+                    },
+                    legend: {
+                        bottom: '10%',
+                        left: 'center'
+                    },
+                    series: [
+                        {
+                            name: 'Access From',
+                            type: 'pie',
+                            radius: ['35%', '60%'],
+                            avoidLabelOverlap: false,
+                            itemStyle: {
+                                borderRadius: 6,
+                                borderColor: '#fff',
+                                borderWidth: 2
+                            },
+                            label: {
+                                show: false,
+                                position: 'center'
+                            },
+                            emphasis: {
+                                label: {
+                                    show: true,
+                                    fontSize: '40',
+                                    fontWeight: 'bold'
+                                }
+                            },
+                            labelLine: {
+                                show: false
+                            },
+                            data: [
+                                { value: 1048, name: '一般隐患' },
+                                { value: 235, name: '重大隐患' }
+                            ],
+                            center: ['50%','35%']
+                        }
+                    ]
+                };
+
+                if (option && typeof option === 'object') {
+                    myChart.setOption(option);
+                }
+
+                window.addEventListener('resize', myChart.resize);
+            }
+
+            const toRiskEve = ()=>{
+                router.push({
+                    path: 'event',
+                });
+            }
+
+            const toRiskStatus = ()=>{
+                router.push({
+                    path: 'hiddenReport',
+                });
+            }
+
+            const toRevice = ()=>{
+                router.push({
+                    path: 'device',
+                });
+            }
+
+            return {
+                View,
+                Edit,
+                Delete,
+                Refresh,
+                Plus,
+                router,
+                toRiskEve,
+                toRiskStatus,
+                toRevice,
+                ...toRefs(state)
+            };
+        }
+    };
+</script>
+
+<style scoped lang="scss">
+    $homeNavLengh: 8;
+    .home-container {
+        /*height: calc(100vh - 144px);*/
+        height: 100%;
+        padding: 20px;
+        box-sizing: border-box;
+        overflow: hidden;
+        .main-cont {
+            width: 100%;
+            height: 100%;
+            display: grid;
+            grid-gap: 20px;
+            grid-template-columns: repeat(3, 1fr);
+            grid-template-rows: repeat(2, 1fr);
+            grid-auto-flow: row;
+            justify-content: center;
+            .table-item{
+                border-radius: 8px;
+                background: #fff;
+                padding: 20px;
+
+                .item-head{
+                    display: flex;
+                    align-items: center;
+                    justify-content: space-between;
+                    height: 30px;
+                    margin-bottom: 20px;
+                    span{
+                        font-size: 20px;
+                        color: #333;
+                        font-weight: bolder;
+                    }
+                    div{
+                        cursor: pointer;
+
+                        &:hover{
+                            color: #409eff;
+                        }
+                    }
+                }
+                #riskFix{
+                    height: calc(50vh - 80px);
+                }
+                #riskLevel{
+                    height: calc(50vh - 80px);
+                }
+                .deviceTable{
+                    height: calc((50vh - 100px) / 3 * 2);
+                }
+                .deviceLevel{
+                    height: calc((50vh - 100px) / 3);
+                    display: grid;
+                    grid-gap: 10px;
+                    grid-template-columns: repeat(4, 1fr);
+                    align-items: center;
+                    justify-content: space-between;
+
+                    .levelItem{
+                        display: flex;
+                        margin-top: 20px;
+                        flex-direction: column;
+                        align-items: center;
+                        padding: 15px;
+                        box-sizing: border-box;
+                        border-radius: 8px;
+                        color: #fff;
+                        font-size: 16px;
+
+                        span{
+                            margin-bottom: 10px;
+                            font-size: 24px;
+                            font-weight: bolder;
+                        }
+                    }
+                    .red{
+                        background: #F56C6C;
+                    }
+                    .orange{
+                        background: #E6A23C;
+                    }
+                    .green{
+                        background: #67C23A;
+                    }
+                    .blue{
+                        background: #409EFF;
+                    }
+                }
+            }
+            .table-item2{
+                grid-column-start: 2;
+                grid-column-end: 4;
+            }
+        }
+        .el-row {
+            display: flex;
+            align-items: center;
+            margin-bottom: 20px;
+            &:last-child {
+                margin-bottom: 0;
+            }
+            .grid-content {
+                align-items: center;
+                min-height: 36px;
+            }
+
+            .topInfo {
+                display: flex;
+                align-items: center;
+                font-size: 16px;
+                font-weight: bold;
+
+                & > div {
+                    white-space: nowrap;
+                    margin-right: 20px;
+                }
+            }
+        }
+    }
+    .el-input {
+        width: 100% !important;
+    }
+    .el-date-editor::v-deep {
+        width: 100%;
+    }
+    .el-select {
+        width: 100%;
+    }
+</style>
\ No newline at end of file

--
Gitblit v1.9.2