From 20b0ce2db27b64a60de60aee05dedd448099e330 Mon Sep 17 00:00:00 2001 From: 马宇豪 <978517621@qq.com> Date: 星期一, 08 七月 2024 10:12:16 +0800 Subject: [PATCH] xiugai --- src/views/riskWarningSys/warningBigScreen/index.vue | 1074 ++++++++++++++++++++++++++++++++++++++++++++++++++--------- 1 files changed, 910 insertions(+), 164 deletions(-) diff --git a/src/views/riskWarningSys/warningBigScreen/index.vue b/src/views/riskWarningSys/warningBigScreen/index.vue index 14a11d4..ffcb8aa 100644 --- a/src/views/riskWarningSys/warningBigScreen/index.vue +++ b/src/views/riskWarningSys/warningBigScreen/index.vue @@ -1,22 +1,48 @@ <template> - <div class="container"> + <div id="container" class="dark"> + <div class="warn-dialog" :class="dialogShow"> + <div>预警消息</div> + <p>企业8月份总体安全生产预警指数SPI风险值高于预警阈值,可能存在未处理隐患,请注意查阅相关风险因素,采取风险防控措施。</p> + <span @click="dialogShow = 'hide'">关闭</span> + </div> + <div class="info-panel" :class="dialogHide" @click="openDialog"> + <div class="info-tit"> + <div> + <el-icon><Bell /></el-icon> + <div style="margin-left: 10px">消息预警</div> + </div> + <div @click.stop="dialogHide = 'hide'">X</div> + </div> + <div class="info-desc"> + 企业8月份总体安全生产预警指数SPI风险值高于预警阈值。 + </div> + <div class="info-num"> + 1 + </div> + </div> <div class="header-content"> <div class="logo"> - <img src="../../../assets/warningScreen/logo_dark.png" alt="" /> + <img v-if="screenTheme.isDark" src="../../../assets/warningScreen/logo_dark.png" alt="" /> + <img v-else="!screenTheme.isDark" src="../../../assets/warningScreen/logo_light.png" alt="" /> </div> <div class="title">风险预警预报平台</div> <div class="title-right"> <!-- <img src="themeStyle.skinIcon" class="qiehuan" @click="changeTheme" />--> <span class="datetime">{{currentTime}}</span> <div class="btns"> - <div class="fullbtn" @click="onScreenfullClick"> +<!-- <div class="themeBtn" @click="changeTheme()">--> +<!-- <img v-if="screenTheme.isDark" src="../../../assets/warningScreen/skin.png"/>--> +<!-- <img v-else src="../../../assets/warningScreen/skin-light.png"/>--> +<!-- </div>--> + <div class="fullBtn" @click="onScreenfullClick"> <div class="toFull"> <i class="iconfont" :title="isScreenfull ? $t('message.user.title6') : $t('message.user.title5')" :class="!isScreenfull ? 'icon-fullscreen' : 'icon-tuichuquanping'"></i> </div> <div>全屏</div> </div> <div class="backBtn" @click="goBack()"> - <img src="../../../assets/loginPage/back-icon.png"/> +<!-- <img src="../../../assets/loginPage/back-icon.png"/>--> + <el-icon><SwitchButton /></el-icon> <div>退出</div> </div> </div> @@ -25,40 +51,127 @@ <div class="main-content"> <div class="main-left"> <div class="left-top"> - + <dv-border-box-13 :backgroundColor="boxBg" :color="boxColor" class="box-bg"></dv-border-box-13> + <div class="part-tit"> + <span>| 事故等级分布</span> +<!-- <img @click="jumpPage(1)" src="../../../assets/warningScreen/small-full.png">--> + <Switch style="width: 1.2rem;height: 1.2rem;cursor: pointer" @click="jumpPage(1)"/> + </div> + <div class="chart-box"> + <accident :size="1" :theme="screenTheme.isDark"></accident> + </div> </div> <div class="left-mid"> - + <dv-border-box-13 :backgroundColor="boxBg" :color="boxColor" class="box-bg"></dv-border-box-13> + <div class="part-tit"> + <span>| 智能巡检超期未巡检任务</span> +<!-- <img @click="jumpPage(2)" src="../../../assets/warningScreen/small-full.png">--> + <Switch style="width: 1.2rem;height: 1.2rem;cursor: pointer" @click="jumpPage(2)"/> + </div> + <div class="chart-box"> + <training :size="1" :theme="screenTheme.isDark"></training> + </div> </div> <div class="left-bottom"> - + <dv-border-box-13 :backgroundColor="boxBg" :color="boxColor" class="box-bg"></dv-border-box-13> + <div class="part-tit"> + <span>| 隐患趋势</span> + <Switch style="width: 1.2rem;height: 1.2rem;cursor: pointer" @click="jumpPage(3)"/> + </div> + <div class="chart-box"> + <risk :size="1" :theme="screenTheme.isDark" :dep="departList"></risk> + </div> </div> </div> <div class="main-middle"> <div class="mid-top"> - + <dv-border-box-11 title="SPI数据分析" :backgroundColor="boxBg" :color="boxBigColor" class="box-bg"></dv-border-box-11> + <div class="part-tit" style="position: absolute;top: 10%;padding: 0 4%;align-items: flex-start;z-index: 10001"> + <div class="spiChart"> +<!-- <el-cascader--> +<!-- class="spiSe"--> +<!-- :teleported="false"--> +<!-- v-model="depValue"--> +<!-- :options="departList"--> +<!-- :props="depProps"--> +<!-- :show-all-levels="false"--> +<!-- @change="depChange"--> +<!-- />--> + </div> + <Switch style="width: 1.2rem;height: 1.2rem;cursor: pointer" @click="jumpPage(4)"/> + </div> + <div class="chart-box" style="top: 60px;height: calc(100% - 70px)"> + <spi :size="1" :theme="screenTheme.isDark"></spi> + </div> </div> <div class="mid-bottom"> <div class="mid-bot-l"> - + <dv-border-box-13 :backgroundColor="boxBg" :color="boxColor" class="box-bg"></dv-border-box-13> + <div class="part-tit"> + <span>| 教育培训分析</span> +<!-- <img @click="jumpPage(5)" src="../../../assets/warningScreen/small-full.png">--> + <Switch style="width: 1.2rem;height: 1.2rem;cursor: pointer" @click="jumpPage(5)"/> + </div> + <div class="chart-box"> + <educate :size="1"></educate> + </div> </div> <div class="mid-bot-m"> - + <dv-border-box-13 :backgroundColor="boxBg" :color="boxColor" class="box-bg"></dv-border-box-13> + <div class="part-tit"> + <span>| 隐患等级</span> +<!-- <img @click="jumpPage(6)" src="../../../assets/warningScreen/small-full.png">--> + <Switch style="width: 1.2rem;height: 1.2rem;cursor: pointer" @click="jumpPage(6)"/> + </div> + <div class="chart-box"> + <danger :size="1" :theme="screenTheme.isDark"></danger> + </div> </div> <div class="mid-bot-r"> - + <dv-border-box-13 :backgroundColor="boxBg" :color="boxColor" class="box-bg"></dv-border-box-13> + <div class="part-tit"> + <span>| 人员专业度分布</span> +<!-- <img @click="jumpPage(7)" src="../../../assets/warningScreen/small-full.png">--> + <Switch style="width: 1.2rem;height: 1.2rem;cursor: pointer" @click="jumpPage(7)"/> + </div> + <div class="chart-box"> + <profession :size="1"></profession> + </div> </div> </div> </div> <div class="main-right"> <div class="right-top"> - + <dv-border-box-13 :backgroundColor="boxBg" :color="boxColor" class="box-bg"></dv-border-box-13> + <div class="part-tit"> + <span>| 预警消息报告</span> +<!-- <img @click="jumpPage(8)" src="../../../assets/warningScreen/small-full.png">--> + <Switch style="width: 1.2rem;height: 1.2rem;cursor: pointer" @click="jumpPage(8)"/> + </div> + <div class="chart-box"> + <message :size="1" :theme="screenTheme.isDark"></message> + </div> </div> <div class="right-mid"> - + <dv-border-box-13 :backgroundColor="boxBg" :color="boxColor" class="box-bg"></dv-border-box-13> + <div class="part-tit"> + <span>| 特殊作业实时监控</span> +<!-- <img @click="jumpPage(9)" src="../../../assets/warningScreen/small-full.png">--> + <Switch style="width: 1.2rem;height: 1.2rem;cursor: pointer" @click="jumpPage(9)"/> + </div> + <div class="chart-box"> + <monitor :size="1" ref="monRef" :theme="screenTheme.isDark"></monitor> + </div> </div> <div class="right-bottom"> - + <dv-border-box-13 :backgroundColor="boxBg" :color="boxColor" class="box-bg"></dv-border-box-13> + <div class="part-tit"> + <span>| 风险应急物资储备</span> + <Switch style="width: 1.2rem;height: 1.2rem;cursor: pointer" @click="jumpPage(10)"/> + </div> + <div class="chart-box"> + <stock :size="1"></stock> + </div> </div> </div> </div> @@ -67,41 +180,151 @@ <script lang="ts"> import screenfull from 'screenfull'; - import { toRefs, reactive, ref, onMounted } from 'vue'; + import { + toRefs, + reactive, + ref, + onMounted, + defineComponent, + defineAsyncComponent, + nextTick, + onUnmounted, + onBeforeUnmount + } from 'vue'; import { ElTable } from 'element-plus'; import { FormInstance, FormRules, ElMessage } from 'element-plus'; import { safetyRiskEventApi } from '/@/api/doublePreventSystem/safetyRiskEvent/index.ts'; 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]); + import '/@/theme/bigScreen.css' + import {useScreenTheme} from "/@/stores/screenTheme" + import {storeToRefs} from "pinia"; + import {teamManageApi} from "/@/api/systemManage/basicDateManage/personShiftManage/teamManage"; + import {NextLoading} from "/@/utils/loading"; + import {videoApi} from "/@/api/systemManage/video"; + // 定义接口来定义对象的类型 interface stateType { + boxBg: string; + boxColor: Array<string>; + boxBigColor: Array<string>; isScreenfull: boolean; - currentTime: string + currentTime: string; + depValue: number; + dialogShow: string; + dialogHide: string; + depProps: object; + departList: Array<any>; + lastTrain: number | null; + timer: any|null } - export default { + export default defineComponent({ name: 'warningScreen', - components: {}, + components: { + accident: defineAsyncComponent(() => import('/@/views/riskWarningSys/warningBigScreen/components/accident.vue')), + training: defineAsyncComponent(() => import('/@/views/riskWarningSys/warningBigScreen/components/training.vue')), + spi: defineAsyncComponent(() => import('/@/views/riskWarningSys/warningBigScreen/components/SPI.vue')), + risk: defineAsyncComponent(() => import('/@/views/riskWarningSys/warningBigScreen/components/risk.vue')), + educate: defineAsyncComponent(() => import('/@/views/riskWarningSys/warningBigScreen/components/educate.vue')), + danger: defineAsyncComponent(() => import('/@/views/riskWarningSys/warningBigScreen/components/danger.vue')), + profession: defineAsyncComponent(() => import('/@/views/riskWarningSys/warningBigScreen/components/profession.vue')), + message: defineAsyncComponent(() => import('/@/views/riskWarningSys/warningBigScreen/components/message.vue')), + monitor: defineAsyncComponent(() => import('/@/views/riskWarningSys/warningBigScreen/components/monitor.vue')), + stock: defineAsyncComponent(() => import('/@/views/riskWarningSys/warningBigScreen/components/stock.vue')) + }, setup() { + const screenThemes = useScreenTheme() + const { screenTheme } = storeToRefs(screenThemes); const router = useRouter(); + const props = { + expandTrigger: 'hover', + checkStrictly: true + } const state = reactive<stateType>({ + boxBg: 'rgba(8, 109, 209, 0.2)', + depValue: 1, + boxColor: [], + boxBigColor: [], + lastTrain: null, isScreenfull: false, - currentTime: '' + currentTime: '', + dialogShow: 'hide', + dialogHide: 'hide', + depProps: { + expandTrigger: 'hover', + checkStrictly: true, + value: 'depId', + label: 'depName', + emitPath: false + }, + departList: [], + timer: null }); - + const monRef = ref() // 页面载入时执行方法 onMounted(() => { - setInterval(() => { - state.currentTime = new Date().toLocaleString(); - console.log(state.currentTime) - }, 1000); + NextLoading.done(); + state.depValue = screenTheme.value.depId + getTime(); + getAllDepartment(); + state.timer = setInterval(()=>{ + getTime() + },1000) + getTheme() }); + + const getTime =()=>{ + state.currentTime = new Date().toLocaleString(); + } + + // 获取部门列表 + const getAllDepartment = async () => { + let res = await teamManageApi().getAllDepartment(); + if (res.data.code === '200') { + state.departList = JSON.parse(JSON.stringify(res.data.data)) + } else { + ElMessage({ + type: 'warning', + message: res.data.msg + }); + } + } + + const depChange = (value)=>{ + state.depValue = value + screenThemes.setDepId(value) + } + + const changeTheme = () =>{ + screenTheme.value.isDark = !screenTheme.value.isDark + screenThemes.setScreenTheme(screenTheme.value.isDark) + if(screenTheme.value.isDark){ + document.getElementById('container').setAttribute( "class", 'dark' ) + state.boxBg = 'rgba(8, 109, 209, 0.2)' + state.boxColor = [] + state.boxBigColor = [] + }else{ + document.getElementById('container').setAttribute( "class", 'light' ) + state.boxBg = '#fff' + state.boxColor = ['#fff','#ccc'] + state.boxBigColor = ['#999','#fff'] + } + } + + const getTheme =()=>{ + if(screenTheme.value.isDark){ + window.document.getElementById('container').setAttribute( "class", 'dark' ); + state.boxBg = 'rgba(8, 109, 209, 0.2)' + state.boxColor = [] + state.boxBigColor = [] + }else{ + window.document.getElementById('container').setAttribute( "class", 'light' ); + state.boxBg = '#fff' + state.boxColor = ['#fff','#ccc'] + state.boxBigColor = ['#999','#fff'] + } + } // 全屏 const onScreenfullClick = () => { @@ -119,11 +342,38 @@ }); }; - // 返回上一页 - const goBack = () => { - window.history.go(-1); + const openDialog = () => { + if(state.dialogShow == 'hide'){ + state.dialogShow = 'showup' + }else{ + state.dialogShow = 'hide' + } + } + + const closeInfo = ()=>{ + state.dialogHide = 'hide' }; + const jumpPage = (num) =>{ + router.push({ + path: 'screenPage', + query: { + num: num + } + }); + } + + // 返回上一页 + const goBack = () => { + // window.history.go(-1); + router.push({ + path: 'newMenu' + }); + }; + + onBeforeUnmount(() =>{ + clearInterval(state.timer) + }) // 隐患状态列表 // const getDeviceRecord = async () => { // const data = { pageSize: state.pageSize, pageIndex: state.pageIndex}; @@ -138,104 +388,38 @@ // } // }; - // 隐患整改情况 - // 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: '5%', - // left: 'center' - // }, - // series: [ - // { - // name: 'Access From', - // type: 'pie', - // radius: ['35%', '60%'], - // avoidLabelOverlap: false, - // itemStyle: { - // borderRadius: 6, - // borderColor: '#fff', - // borderWidth: 2 - // }, - // label: { - // alignTo: 'labelLine', - // formatter: '{name|{b}}\n{value|{c}}', - // minMargin: 5, - // edgeDistance: 5, - // lineHeight: 15, - // rich: { - // name: { - // fontSize: 14, - // color: '#666' - // } - // } - // }, - // labelLine: { - // length: 15, - // maxSurfaceAngle: 80 - // }, - // emphasis: { - // label: { - // show: true, - // fontSize: '40', - // fontWeight: 'bold' - // } - // }, - // data: [ - // { value: 1048, name: '整改中' }, - // { value: 735, name: '待验收' }, - // { value: 580, name: '延期整改' }, - // { value: 484, name: '超期未整改' }, - // { value: 300, name: '已验收' } - // ], - // center: ['50%','40%'] - // } - // ] - // }; - // - // if (option && typeof option === 'object') { - // myChart.setOption(option); - // } - // - // window.addEventListener('resize', myChart.resize); - // } - return { router, + props, + screenTheme, + monRef, + openDialog, + closeInfo, + changeTheme, onScreenfullClick, + depChange, + jumpPage, goBack, ...toRefs(state) }; } - }; + }); </script> <style scoped lang="scss"> $homeNavLengh: 8; - - @media screen and (min-width: 1366px) { - + .hide{ + display: none; + } + #container{ + width: 100%; + height: 100%; + } + .showup{ + display: block; } - @media screen and (min-width: 1024px) and (max-width: 1366px){ - - } - - @media screen and (max-width: 1024px) { - - } - .container { + .dark { width: 100%; height: 100%; display: flex; @@ -245,11 +429,102 @@ background-size: 100% 100%; color: #11FEEE; + .warn-dialog{ + position: absolute; + z-index: 999999; + top: 25%; + left: 50%; + width: 50%; + height: 50%; + transform: translateX(-50%); + border-radius: 8px; + transition: .3s; + box-shadow: 0 15px 30px rgba(0,0,0,.2); + border: 1px solid rgba(17,254,238,.4); + padding: 1.5rem; + background: rgba(0,16,32,.8); + + div{ + font-size: 1.5rem; + text-align: center; + } + + p{ + margin-top: 20px; + font-size: 1.125rem; + line-height: 28px; + text-align: left + } + + span{ + position: inherit; + right: 20px; + top: 20px; + font-size: 1rem; + cursor: pointer; + } + } + + .info-panel{ + position: absolute; + width: 20%; + right: 50px; + bottom: 50px; + z-index: 9999999; + font-size: 1rem; + padding: 0 10px; + border-radius: 4px; + cursor: pointer; + box-shadow: 0 15px 30px rgba(0,0,0,.2); + border: 1px solid rgba(17,254,238,.4); + background: rgba(0,16,32,.8); + + .info-tit{ + display: flex; + align-items: center; + padding: 10px; + border-bottom: 1px solid rgba(17,254,238,.4); + justify-content: space-between; + + &>div{ + display: flex; + align-items: center; + + img{ + width: 18px; + height: 18px; + margin-right: 10px; + } + } + } + + .info-desc{ + padding: 15px 10px; + white-space: nowrap; + text-overflow: ellipsis; + overflow: hidden; + } + .info-num{ + position: inherit; + width: 24px; + height: 24px; + line-height: 24px; + text-align: center; + left: -12px; + top: -12px; + color: #fff; + z-index: 999999999; + border-radius: 50%; + border: 1px solid #ff0000; + background: #ff0000; + } + } + .header-content { width: 100%; - height: 80px; + height: 7.8%; padding: 0 20px; - font-size: 20px; + font-size: 1.25rem; display: flex; align-items: center; justify-content: space-around; @@ -261,15 +536,15 @@ align-items: center; justify-content: center; img { - height: 35px; - width: 128px; + width: 10rem; + height: auto; } } .title { width: 46%; - font-size: 26px; + font-size: 2rem; font-weight: bolder; - line-height: 80px; + line-height: 7.8%; text-align: center; letter-spacing: 2px; } @@ -280,11 +555,12 @@ display: flex; align-items: center; justify-content: space-around; - font-size: 15px; + font-size: 1rem; padding-left: 30px; .datetime { color: #11FEEE; + font-size: 0.9rem; } .btns{ display: flex; @@ -293,104 +569,574 @@ &>div{ display: flex; align-items: center; - align-items: center; - font-size: 15px; + font-size: 1rem; margin-right: 20px; img{ - width: 16px; - height: auto; + width: 1rem; + height: 1rem; } div{ - margin-left: 6px; + margin-left: 0.4rem; + font-size: 0.9rem; } + } + .themeBtn{ + img{ + width: 1.25rem; + height: 1.25rem; + } + cursor: pointer; + } + .fullBtn{ + cursor: pointer; + } + .backBtn{ + cursor: pointer; } } } } .main-content{ width: 100%; - height: 100%; - padding: 20px; + height: calc(100vh - 7.8%); + padding: 0.4rem 1.5rem 2rem; display: flex; align-items: center; justify-content: space-between; - .main-left{ - width: calc(25% - 10px); + &>div{ height: 100%; display: flex; flex-direction: column; justify-content: space-between; align-items: flex-start; + &>div{ + padding: 20px 15px 10px; + box-sizing: border-box; + position: relative; + .box-bg{ + position: absolute; + width: 100%; + height: 100%; + left: 0; + top: 0; + right: 0; + bottom: 0; + margin: auto; + color: #11feee; + font-weight: bolder; + } - .left-top{ - width: 100%; - height: calc((100%/3) - (40px/3)); + .dv-border-box-11{ + ::v-deep(.dv-border-svg-container){ + .dv-border-box-11-title{ + font-size: 1.5rem; + fill: #11feee !important; + } + } + } + .part-tit{ + position: absolute; + top: 20px; + left: 0; + height: 20px; + width: 100%; + padding: 0 15px; + display: flex; + justify-content: space-between; + align-items: center; + z-index: 9999; + + .spiChart{ + width: 25% !important; + + ::v-deep(.el-cascader){ + width: 100% !important; + } + ::v-deep(.el-popper){ + background-color: rgba(10,31,92,1); + border: 1px solid rgba(17,254,238,.4); + color: #11FEEE; + .el-cascader-node__label{ + color: #11FEEE; + } + .el-icon{ + color: #11FEEE; + } + .el-cascader-node{ + &:hover{ + background: #0049af; + } + } + } + ::v-deep(.el-popper__arrow){ + &::before{ + background-color: rgba(10,31,92,.6) !important; + border: 1px solid rgba(17,254,238,.4); + } + } + ::v-deep(.el-input__wrapper){ + width: 20%; + box-shadow: none; + border: 1px solid rgba(17,254,238,.2); + background: rgba(10,31,92,.6) !important; + height: 2.5rem; + color: #11FEEE; + + input{ + font-size: 1.25rem; + color: #11FEEE; + } + .el-icon{ + color: #11FEEE; + } + } + } + + span{ + font-size: 1.25rem; + font-weight: bolder; + color: #11feee; + } + + img{ + width: 1.2rem; + height: 1.2rem; + cursor: pointer; + } + } + .chart-box{ + position: absolute; + top: 40px; + bottom: 0; + left: 0; + right: 0; + width: 100%; + height: calc(100% - 50px); + z-index: 10000; + .train-tip{ + display: block; + font-size: 0.8rem; + margin-top: 2%; + margin-left: 5%; + color: #fff; + height: 1rem; + } + } } - .left-mid{ + } + + .main-left{ + width: calc(25% - 5px); + &>div{ width: 100%; - height: calc((100%/3) - (40px/3)); - } - .left-bottom{ - width: 100%; - height: calc((100%/3) - (40px/3)); + height: calc((100%/3) - (20px/3)); } } .main-middle{ - width: calc(50% - 20px); - height: 100%; - display: flex; - flex-direction: column; - justify-content: space-between; - align-items: flex-start; + width: calc(50% - 10px); .mid-top{ width: 100%; - height: calc((200%/3) - (80px/3) + 20px); + height: calc((200% - 40px)/3 + 10px); } .mid-bottom{ display: flex; width: 100%; - height: calc(100% - (200%/3) + (80px/3) - 40px); + height: calc((100%/3) - (20px/3)); justify-content: space-between; + padding: 0; + background: none; + border-radius: 0; &>div { position: relative; - width: calc((100% - 40px)/3); + width: calc((100% - 20px)/3); border-radius: 8px; overflow: hidden; - - .chart-tit { - position: absolute; - left: 20px; - top: 20px; - font-weight: 700; - z-index: 3; - } + padding: 10px 15px; + box-sizing: border-box; } } } .main-right{ - width: calc(25% - 10px); + width: calc(25% - 5px); + &>div{ + width: 100%; + height: calc((100%/3) - (20px/3)); + } + } + } + } + .light { + width: 100%; + height: 100%; + display: flex; + flex-direction: column; + align-items: center; + background: url('../../../assets/warningScreen/riskprocast-light.jpg') no-repeat center; + background-size: 100% 100%; + color: #000; + + .warn-dialog{ + position: absolute; + z-index: 999999; + top: 25%; + left: 50%; + width: 50%; + height: 50%; + transform: translateX(-50%); + border-radius: 8px; + transition: .3s; + box-shadow: 0 15px 30px rgba(0,0,0,.2); + border: 1px solid #ccc; + padding: 1.5rem; + background: #fff; + + div{ + font-size: 1.5rem; + text-align: center; + } + + p{ + margin-top: 20px; + font-size: 1.125rem; + line-height: 28px; + text-align: left + } + + span{ + position: inherit; + right: 20px; + top: 20px; + font-size: 1rem; + cursor: pointer; + } + } + + .info-panel{ + position: absolute; + width: 20%; + right: 50px; + bottom: 50px; + z-index: 9999999; + font-size: 1rem; + color: #333; + padding: 0 10px; + border-radius: 4px; + cursor: pointer; + box-shadow: 0 15px 30px rgba(0,0,0,.2); + border: 1px solid #ccc; + background: #fff; + + .info-tit{ + display: flex; + align-items: center; + padding: 10px; + border-bottom: 1px solid #ccc; + justify-content: space-between; + + &>div{ + display: flex; + align-items: center; + + img{ + width: 18px; + height: 18px; + margin-right: 10px; + } + } + } + + .info-desc{ + padding: 15px 10px; + white-space: nowrap; + text-overflow: ellipsis; + overflow: hidden; + } + .info-num{ + position: inherit; + width: 24px; + height: 24px; + line-height: 24px; + text-align: center; + left: -12px; + top: -12px; + color: #fff; + z-index: 999999999; + border-radius: 50%; + border: 1px solid #ff0000; + background: #ff0000; + } + } + + .header-content { + width: 100%; + height: 7.8%; + padding: 0 20px; + font-size: 1.25rem; + display: flex; + align-items: center; + justify-content: space-around; + z-index: 9; + + .logo { + width: 27%; + display: flex; + align-items: center; + justify-content: center; + img { + width: 10rem; + height: auto; + } + } + .title { + width: 46%; + font-size: 2rem; + font-weight: bolder; + line-height: 7.8%; + text-align: center; + letter-spacing: 2px; + } + + .title-right { + width: 27%; + height: 90px; + display: flex; + align-items: center; + justify-content: space-around; + font-size: 1rem; + padding-left: 30px; + + .datetime { + color: #000; + font-size: 0.9rem; + } + .btns{ + display: flex; + align-items: center; + + &>div{ + display: flex; + align-items: center; + font-size: 1rem; + margin-right: 20px; + + img{ + width: 1rem; + height: 1rem; + } + div{ + margin-left: 0.4rem; + font-size: 0.9rem; + } + } + .themeBtn{ + img{ + width: 1.25rem; + height: 1.25rem; + } + cursor: pointer; + } + .fullBtn{ + cursor: pointer; + } + .backBtn{ + cursor: pointer; + } + } + } + } + .main-content{ + width: 100%; + height: calc(100vh - 7.8%); + padding: 0.4rem 1.5rem 2rem; + display: flex; + align-items: center; + justify-content: space-between; + + &>div{ height: 100%; display: flex; flex-direction: column; justify-content: space-between; align-items: flex-start; + &>div{ + padding: 20px 15px 10px; + box-sizing: border-box; + position: relative; + .box-bg{ + position: absolute; + width: 100%; + height: 100%; + left: 0; + top: 0; + right: 0; + bottom: 0; + margin: auto; + color: #000; + font-weight: bolder; + } + + .dv-border-box-11{ + :deep(.dv-border-svg-container){ + .dv-border-box-11-title{ + font-size: 1.5rem; + fill: #000 !important; + } + } + } + .part-tit{ + position: absolute; + top: 20px; + left: 0; + height: 20px; + width: 100%; + padding: 0 15px; + display: flex; + justify-content: space-between; + align-items: center; + z-index: 9999; + + .spiChart{ + width: 25% !important; + + ::v-deep(.el-cascader){ + width: 100% !important; + } + ::v-deep(.el-popper){ + background-color: #fff; + border: 1px solid #ccc; + color: #000; + .el-cascader-node__label{ + color: #000; + } + .el-icon{ + color: #000; + } + .el-cascader-node{ + &:hover{ + background: #ccc; + } + } + } + ::v-deep(.el-popper__arrow){ + &::before{ + background-color: #fff !important; + border: 1px solid #ccc; + } + } + ::v-deep(.el-input__wrapper){ + width: 20%; + box-shadow: none; + border: 1px solid #ccc; + background: #fff !important; + height: 2.5rem; + color: #000; + + input{ + font-size: 1.25rem; + color: #000; + } + .el-icon{ + color: #000; + } + } + } + + span{ + font-size: 1.25rem; + font-weight: bolder; + color: #000; + } + + img{ + width: 1.20rem; + height: 1.20rem; + cursor: pointer; + } + } + .chart-box{ + position: absolute; + top: 40px; + bottom: 0; + left: 0; + right: 0; + width: 100%; + height: calc(100% - 50px); + z-index: 10000; + .train-tip{ + display: block; + font-size: 0.8rem; + margin-top: 2%; + margin-left: 5%; + color: #333; + height: 1rem; + } + } + } + } + + .main-left{ + width: calc(25% - 5px); + + .left-top{ + width: 100%; + height: calc((100%/3) - (20px/3)); + + } + .left-mid{ + width: 100%; + height: calc((100%/3) - (20px/3)); + } + .left-bottom{ + width: 100%; + height: calc((100%/3) - (20px/3)); + } + } + .main-middle{ + width: calc(50% - 10px); + + .mid-top{ + width: 100%; + height: calc((200% - 40px)/3 + 10px); + } + + .mid-bottom{ + display: flex; + width: 100%; + height: calc((100%/3) - (20px/3)); + justify-content: space-between; + padding: 0; + background: none; + border-radius: 0; + + &>div { + position: relative; + width: calc((100% - 20px)/3); + border-radius: 8px; + overflow: hidden; + padding: 10px 15px; + box-sizing: border-box; + } + } + } + .main-right{ + width: calc(25% - 5px); .right-top{ width: 100%; - height: calc((100%/3) - (40px/3)); + height: calc((100%/3) - (20px/3)); } .right-mid{ width: 100%; - height: calc((100%/3) - (40px/3)); + height: calc((100%/3) - (20px/3)); } .right-bottom{ width: 100%; - height: calc((100%/3) - (40px/3)); + height: calc((100%/3) - (20px/3)); } } } -- Gitblit v1.9.2