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/indexs/components/msg.vue | 422 ++++++++++++++++++++++++++++++++++++++++------------ 1 files changed, 325 insertions(+), 97 deletions(-) diff --git a/src/views/riskWarningSys/warningBigScreen/indexs/components/msg.vue b/src/views/riskWarningSys/warningBigScreen/indexs/components/msg.vue index b955f19..9321430 100644 --- a/src/views/riskWarningSys/warningBigScreen/indexs/components/msg.vue +++ b/src/views/riskWarningSys/warningBigScreen/indexs/components/msg.vue @@ -1,24 +1,41 @@ <template> - <div id="descCont" class="dark-desc"> - <div class="des-tit"> - <div>预警消息SPI报告-2022年8月</div> - <dv-decoration8 :color="lineColor" :reverse="true" style="width:100%;" /> + <div> + <div class="tit"> + <div class="title">预警消息报告</div> + </div> + <div class="chart-cont"> + <div class="chart"> + <message :size="2" @getData=showDetails></message> </div> - <div class="des-main"> - <div> - <h4>2022年8月整体SPI指数317.65,处于安全范围以内。</h4> - <p>8月份spi中教育培训比例不足和一般风险新增较多,对SPI总值影响较大,请注意调整相关因素环节的处理措施。</p> + <div class="chart-right"> + <dv-decoration-10 :color="lineColor" style="width:100%;height:5%;" /> + <div class="charts-des"> + <div id="descCont" class="dark-desc"> + <div class="des-tit"> + <div>{{descContent.spiName}}</div> + <dv-decoration8 :color="lineColor" :reverse="true" style="width:100%;" /> + </div> + <div class="des-main"> + <div> + <div style="margin-bottom: 10px">生成时间:{{creatTime}}1日 00:00:03</div> + <h4>{{descContent.reportTime}}新疆国泰新华化工有限公司安全风险指数基础数据情况如下</h4> + <p>1、本月共计上报事故{{descContent.accidentTotal}}起,其中一级事故{{descContent.accidentOne}}起,二级事故{{descContent.accidentTwo}}起,三级事故{{descContent.accidentThree}}起,四级事故{{descContent.accidentFour}}起。</p> + <p>2、智能巡检本月总任务数{{descContent.checkTotal}}个,其中{{descContent.checkOverdue }}个超期未巡检,超期未巡检率{{descContent.checkOverRate}}%,上报异常{{descContent.checkException}}个。</p> + <p>3、本月隐患上报数量{{descContent.hdTotal}}个,其中A级隐患{{descContent.hdA}}个,B级隐患{{descContent.hdB}}个,C级隐患{{descContent.hdC}}个,已经完成整改验收{{descContent.hdRf}}个,暂未完成整改{{descContent.hdRnf}}个。</p> + <p>4、截至{{descContent.lastTime}}系统人员用户共计{{descContent.userCount}}个,其中证书绑定(持证人员){{descContent.userCertCount}}个,系统人员总体持证比{{(descContent.userCertCount / descContent.userCount * 100).toFixed(2)}}%。</p> + <p>5、最近一次教育培训上报情况为:课程数量{{descContent.courseNum}},课件数量{{descContent.coursewareNum}},试题数量{{descContent.questionsNum}}。考试参与率{{descContent.examJoinRate}}%,考试合格率{{descContent.examPassRate}}%,缺考总数{{descContent.missExam}},待补课数{{descContent.repairNum}},人均学时{{descContent.studyAverage}},学时达标率{{descContent.studyQualifyRate}}%,培训人数{{descContent.trainPerson}},培训参与率{{descContent.trainJoinRate}}%。</p> + <p>6、截至{{descContent.lastTime}}应急物资储备情况为:</p> + <div style="margin-top: 10px;margin-left: 20px" v-for="(item,index) in descContent.emergencySuppliesList"> + ({{index+1}}) 编号:{{item.number}},物资名称:{{item.name}},负责部分:{{item.departmentName?item.departmentName: '暂无'}},物资分类:{{item.classificationName}},存放位置:{{item.place}},存放数量:{{item.count}} + </div> + </div> + </div> </div> - <div> - <h4>次月预警消息</h4> - <p>未来一个月该地区气候干燥,降水量少,高温天气仍将持续,应注意防范消防风险,注意重点消防区域的消防设置设备的可用性检查</p> </div> - <div> - <h4>本月SPI基础数据构成:</h4> - <p>...</p> - </div> + <dv-decoration-10 :color="lineColor" style="width:100%;height:5%;"/> </div> </div> + </div> </template> <script lang="ts"> import screenfull from 'screenfull'; @@ -36,15 +53,21 @@ import '/@/theme/bigScreen.css' import {useScreenTheme} from "/@/stores/screenTheme" import {storeToRefs} from "pinia"; + import {riskWarningApi} from "/@/api/riskWarning"; + import {ElMessage} from "element-plus/es"; // 定义接口来定义对象的类型 interface stateType { - descContent: Object; - lineColor: Array<string>; + descContent: Object + lineColor: Array<string> + reportData: [] + creatTime: string | null } export default defineComponent({ name: 'msgDesc', - components: {}, + components: { + message: defineAsyncComponent(() => import('/@/views/riskWarningSys/warningBigScreen/components/message.vue')), + }, props:{ content: Object || null }, @@ -52,11 +75,11 @@ const screenThemes = useScreenTheme() const { screenTheme } = storeToRefs(screenThemes); const state = reactive<stateType>({ - descContent: { - - }, + descContent: {}, lineColor: ['#11FEEE'], - }); + reportData: [], + creatTime: '' + }) const getTheme =()=>{ if(screenTheme.value.isDark){ @@ -73,12 +96,58 @@ // state.descContent = props.content // } }) + // const getData = (index)=>{ + // state.descContent = data + // } + + const showDetails = (index)=>{ + riskWarningApi().getAllReport().then((res)=>{ + if (res.data.code === '200') { + state.reportData = res.data.data + riskWarningApi().getReportDetails(state.reportData[index].id).then((re)=>{ + if (re.data.code === '200') { + state.descContent = re.data.data + state.creatTime = getNextMonth(state.descContent.reportTime) + }else{ + ElMessage({ + type: 'warning', + message: re.data.msg + }) + } + }) + } else { + ElMessage({ + type: 'warning', + message: res.data.msg + }) + } + }) + } + + const getNextMonth=(dateString:string)=>{ + // 提取年份和月份 + const year = parseInt(dateString.slice(0, 4)); + const month = parseInt(dateString.slice(5, 7)); + // 计算下一个月的年份和月份 + let nextYear = year; + let nextMonth = month + 1; + if (nextMonth === 13) { + nextYear++; + nextMonth = 1; // 如果下一个月是13月,则重置为1月 + } + // 格式化下一个月的日期字符串 + const formattedNextMonth = `${nextYear}年${nextMonth.toString().padStart(2, '0')}月`; + return formattedNextMonth; + } // 页面载入时执行方法 onMounted(() => { getTheme(); }); return { + // getData, + getNextMonth, + showDetails, ...toRefs(state) }; } @@ -86,98 +155,257 @@ </script> <style scoped lang="scss"> - .dark-desc{ +.dark-page{ + width: 100%; + height: 100%; + border:1px #5a5959 solid; + background: url('../../../../../assets/warningScreen/body-bg.jpg'); + padding: 4%; + .btns{ + position: fixed; + width: 8%; + height: 6%; + right: 5%; + top: 1.25rem; + font-size: 1.125rem; + color: rgb(17, 254, 238); + cursor: pointer; + } + .tit{ width: 100%; - height: 100%; + height: 122px; + background: url("../../../../../assets/warningScreen/pagebg-t.png") no-repeat center; + background-size: 100% 100%; - .des-tit{ + + .title{ width: 100%; - &>div{ - font-size: 1.5rem; - height: 2.2rem; - line-height: 2.2rem; - text-align: center; - font-weight: bolder; - color: #11FEEE; - } - } - .des-main{ - width: 100%; - height: calc(96% - 2.2rem); - padding: 1rem; - overflow: auto; - color: #11FEEE; - - &::-webkit-scrollbar { width: 0; height: 0; color: transparent; } - &::scrollbar { width: 0; height: 0; color: transparent; } - - &>div{ - margin-bottom: 1rem; - &>h4{ - font-size: 1.25rem; - display: flex; - align-items: center; - - span{ - margin-right: 10px; - } - &:first-of-type{ - margin-bottom: 10px; - } - } - - &>p{ - font-size: 1rem; - margin-top: 10px; - } - } + height: 122px; + line-height: 112px; + border-radius: 8px; + margin-bottom: 20px; + font-size: 2.8rem; + color: #11feee; + font-weight: bolder; + text-align: center; + letter-spacing: 5px; } } - .light-desc{ - width: 100%; - height: 100%; - .des-tit{ - width: 100%; - &>div{ - font-size: 1.5rem; - height: 2.2rem; - line-height: 2.2rem; - text-align: center; - font-weight: bolder; - color: #333; + .chart-cont{ + width: 100%; + padding: 20px; + height: calc(92vh - 122px); + display: flex; + align-items: flex-start; + justify-content: space-between; + + .chart{ + width: calc((100% - 20px) * 0.63); + height: 100%; + padding: 3%; + background: url("../../../../../assets/warningScreen/pagebg-l.png") no-repeat center; + background-size: 100% 100%; + position: relative; + .selector-2{ + position: absolute; + top: 5%; + right: 10%; + width: 20%; + font-size: 1.25rem; + color: #fff; + } + .main-chart{ + width: 100%; + height: 100%; } } - .des-main{ + .chart-right{ + width: calc((100% - 20px) * 0.37); + height: 100%; + .charts-des{ + height: 90%; + padding: 4%; + background: url("../../../../../assets/warningScreen/pagebg-r.png") no-repeat center; + background-size: 100% 100%; + + .dark-desc{ + width: 100%; + height: 100%; + + .des-tit{ + width: 100%; + &>div{ + font-size: 1.5rem; + height: 2.2rem; + line-height: 2.2rem; + text-align: center; + font-weight: bolder; + color: #11FEEE; + } + } + .des-main{ + width: 100%; + height: calc(96% - 2.2rem); + padding: 1rem; + overflow: auto; + color: #11FEEE; + + &::-webkit-scrollbar { width: 0; height: 0; color: transparent; } + &::scrollbar { width: 0; height: 0; color: transparent; } + + &>div{ + margin-bottom: 1rem; + &>h4{ + font-size: 1.25rem; + display: flex; + align-items: center; + + span{ + margin-right: 10px; + } + &:first-of-type{ + margin-bottom: 10px; + } + } + + &>p{ + font-size: 1rem; + margin-top: 20px; + } + } + } + } + } + } + + } +} +.light-page{ + width: 100%; + height: 100%; + border:1px #5a5959 solid; + background: #F0F0F0; + padding: 4%; + .btns{ + position: fixed; + width: 8%; + height: 6%; + right: 5%; + top: 1.25rem; + font-size: 1.125rem; + color: #333; + cursor: pointer; + } + .tit{ + width: 100%; + height: 122px; + background: url("../../../../../assets/warningScreen/pagebg-t-light.png") no-repeat center; + background-size: 100% 100%; + + + .title{ width: 100%; - height: calc(96% - 2.2rem); - padding: 1rem; - overflow: auto; + height: 122px; + line-height: 112px; + border-radius: 8px; + margin-bottom: 20px; + font-size: 2.8rem; color: #333; + font-weight: bolder; + text-align: center; + letter-spacing: 5px; + } + } - &::-webkit-scrollbar { width: 0; height: 0; color: transparent; } - &::scrollbar { width: 0; height: 0; color: transparent; } + .chart-cont{ + width: 100%; + padding: 20px; + height: calc(92vh - 122px); + display: flex; + align-items: flex-start; + justify-content: space-between; - &>div{ - margin-bottom: 1rem; - &>h4{ - font-size: 1.25rem; - display: flex; - align-items: center; + .chart{ + width: calc((100% - 20px) * 0.63); + height: 100%; + padding: 3%; + background: url("../../../../../assets/warningScreen/pagebg-l-light.png") no-repeat center; + background-size: 100% 100%; + position: relative; + .selector-2{ + position: absolute; + top: 5%; + right: 10%; + width: 20%; + font-size: 1.25rem; + color: #fff; + } + .main-chart{ + width: 100%; + height: 100%; + } + } + .chart-right{ + width: calc((100% - 20px) * 0.37); + height: 100%; - span{ - margin-right: 10px; + .charts-des{ + height: 90%; + padding: 4%; + background: url("../../../../../assets/warningScreen/pagebg-r-light.png") no-repeat center; + background-size: 100% 100%; + + .light-desc{ + width: 100%; + height: 100%; + + .des-tit{ + width: 100%; + &>div{ + font-size: 1.5rem; + height: 2.2rem; + line-height: 2.2rem; + text-align: center; + font-weight: bolder; + color: #333; + } } - &:first-of-type{ - margin-bottom: 10px; - } - } + .des-main{ + width: 100%; + height: calc(96% - 2.2rem); + padding: 1rem; + overflow: auto; + color: #333; - &>p{ - font-size: 1rem; - margin-top: 10px; + &::-webkit-scrollbar { width: 0; height: 0; color: transparent; } + &::scrollbar { width: 0; height: 0; color: transparent; } + + &>div{ + margin-bottom: 1rem; + &>h4{ + font-size: 1.25rem; + display: flex; + align-items: center; + + span{ + margin-right: 10px; + } + &:first-of-type{ + margin-bottom: 10px; + } + } + + &>p{ + font-size: 1rem; + margin-top: 20px; + } + } + } } } } + } +} </style> \ No newline at end of file -- Gitblit v1.9.2