From 22bf644b3fc85763be3ad0c5e348d2bee38e2444 Mon Sep 17 00:00:00 2001 From: 马宇豪 <978517621@qq.com> Date: 星期三, 22 三月 2023 17:07:48 +0800 Subject: [PATCH] Default Changelist --- src/views/riskWarningSys/warningBigScreen/index.vue | 362 +++++++++++++++++++++++++++++++++++++++------------ 1 files changed, 278 insertions(+), 84 deletions(-) diff --git a/src/views/riskWarningSys/warningBigScreen/index.vue b/src/views/riskWarningSys/warningBigScreen/index.vue index e0bf691..53f4a47 100644 --- a/src/views/riskWarningSys/warningBigScreen/index.vue +++ b/src/views/riskWarningSys/warningBigScreen/index.vue @@ -1,7 +1,8 @@ <template> <div id="container" class="dark"> <div class="warn-dialog" :class="dialogShow"> - <div>预警消息:<p style="margin-top: 20px;font-size: 18px;line-height: 28px;text-align: left">企业8月份总体安全生产预警指数SPI风险值高于预警阈值,可能存在未处理隐患,请注意查阅相关风险因素,采取风险防控措施。</p></div> + <div>预警消息</div> + <p>企业8月份总体安全生产预警指数SPI风险值高于预警阈值,可能存在未处理隐患,请注意查阅相关风险因素,采取风险防控措施。</p> <span @click="dialogShow = 'hide'">关闭</span> </div> <div class="info-panel" :class="dialogHide" @click="openDialog"> @@ -68,8 +69,7 @@ <Switch style="width: 1.2rem;height: 1.2rem;cursor: pointer" @click="jumpPage(2)"/> </div> <div class="chart-box"> - <span class="train-tip">距上次演练结束 5 天</span> - <training class="train-chart" :size="1"></training> + <training :size="1" :theme="screenTheme.isDark"></training> </div> </div> <div class="left-bottom"> @@ -79,15 +79,25 @@ <Switch style="width: 1.2rem;height: 1.2rem;cursor: pointer" @click="jumpPage(3)"/> </div> <div class="chart-box"> - <risk :size="1" :theme="screenTheme.isDark"></risk> + <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: 8%;padding: 0 4%"> - <div></div> + <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)"> @@ -170,7 +180,17 @@ <script lang="ts"> import screenfull from 'screenfull'; - import { toRefs, reactive, ref, onMounted, defineComponent, defineAsyncComponent, nextTick, onUnmounted } from 'vue'; + import { + toRefs, + reactive, + ref, + onMounted, + defineComponent, + defineAsyncComponent, + nextTick, + onUnmounted, + onBeforeUnmount + } from 'vue'; import { ElTable } from 'element-plus'; import { FormInstance, FormRules, ElMessage } from 'element-plus'; import { safetyRiskEventApi } from '/@/api/doublePreventSystem/safetyRiskEvent/index.ts'; @@ -180,6 +200,7 @@ import '/@/theme/bigScreen.css' import {useScreenTheme} from "/@/stores/screenTheme" import {storeToRefs} from "pinia"; + import {teamManageApi} from "/@/api/systemManage/basicDateManage/personShiftManage/teamManage"; // 定义接口来定义对象的类型 interface stateType { @@ -188,10 +209,12 @@ boxBigColor: Array<string>; isScreenfull: boolean; currentTime: string; - spiValue: number; - spiOptions: Array<any>; + depValue: number; dialogShow: string; - dialogHide: string + dialogHide: string; + depProps: object; + departList: Array<any>; + lastTrain: number | null; } export default defineComponent({ name: 'warningScreen', @@ -217,67 +240,54 @@ } const state = reactive<stateType>({ boxBg: 'rgba(8, 109, 209, 0.2)', + depValue: 1, boxColor: [], boxBigColor: [], + lastTrain: null, isScreenfull: false, currentTime: '', - spiValue: 0, dialogShow: 'hide', dialogHide: 'showup', - spiOptions: [ - { - value: 0, - label: '公司级别SPI' - }, - { - value: 1, - label: 'A事业部SPI', - children: [ - { - value: 11, - label: 'A车间SPI' - }, - { - value: 12, - label: 'B车间SPI' - }, - { - value: 13, - label: 'C车间SPI' - } - ] - }, - { - value: 2, - label: 'B事业部SPI', - children: [ - { - value: 21, - label: 'D车间SPI' - }, - { - value: 22, - label: 'E车间SPI' - }, - { - value: 23, - label: 'F车间SPI' - } - ] - } - ] + depProps: { + expandTrigger: 'hover', + checkStrictly: true, + value: 'depId', + label: 'depName', + emitPath: false + }, + departList: [], }); - // 页面载入时执行方法 onMounted(() => { - getTime() + state.depValue = screenTheme.value.depId + getTime(); + getAllDepartment(); + setInterval(()=>{ + getTime() + },1000) getTheme() }); const getTime =()=>{ - setInterval(() => { - state.currentTime = new Date().toLocaleString(); - }, 1000); + 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 = () =>{ @@ -352,6 +362,9 @@ window.history.go(-1); }; + onBeforeUnmount(() =>{ + clearInterval() + }) // 隐患状态列表 // const getDeviceRecord = async () => { // const data = { pageSize: state.pageSize, pageIndex: state.pageIndex}; @@ -374,6 +387,7 @@ closeInfo, changeTheme, onScreenfullClick, + depChange, jumpPage, goBack, ...toRefs(state) @@ -384,7 +398,13 @@ <style scoped lang="scss"> $homeNavLengh: 8; + .hide{ + display: none; + } + .showup{ + display: block; + } .dark { width: 100%; height: 100%; @@ -407,20 +427,27 @@ transition: .3s; box-shadow: 0 15px 30px rgba(0,0,0,.2); border: 1px solid rgba(17,254,238,.4); - padding: 40px; + 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: 15px; + font-size: 1rem; cursor: pointer; - } - - div{ - font-size: 24px; - text-align: center; } } @@ -430,7 +457,7 @@ right: 50px; bottom: 50px; z-index: 9999999; - font-size: 16px; + font-size: 1rem; padding: 0 10px; border-radius: 4px; cursor: pointer; @@ -478,13 +505,7 @@ background: #ff0000; } } - .hide{ - display: none; - } - .showup{ - display: block; - } .header-content { width: 100%; height: 7.8%; @@ -613,6 +634,52 @@ 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; @@ -633,7 +700,7 @@ right: 0; width: 100%; height: calc(100% - 50px); - z-index: 99999; + z-index: 10000; .train-tip{ display: block; font-size: 0.8rem; @@ -641,11 +708,6 @@ margin-left: 5%; color: #fff; height: 1rem; - } - - .train-chart{ - width: 100%; - height: calc(100% - 1rem); } } } @@ -704,7 +766,97 @@ 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%; @@ -833,6 +985,53 @@ 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; @@ -853,7 +1052,7 @@ right: 0; width: 100%; height: calc(100% - 50px); - z-index: 99999; + z-index: 10000; .train-tip{ display: block; font-size: 0.8rem; @@ -861,11 +1060,6 @@ margin-left: 5%; color: #333; height: 1rem; - } - - .train-chart{ - width: 100%; - height: calc(100% - 1rem); } } } -- Gitblit v1.9.2