From 1b9fea7d4af68d8f933b2dc42bf6084b9646f64c Mon Sep 17 00:00:00 2001 From: 马宇豪 <978517621@qq.com> Date: 星期二, 04 三月 2025 08:39:55 +0800 Subject: [PATCH] 修改作业等级名称 --- src/views/riskWarningSys/warningBigScreen/components/accident.vue | 401 +++++++++++++++++++++++++++++++++++++++----------------- 1 files changed, 277 insertions(+), 124 deletions(-) diff --git a/src/views/riskWarningSys/warningBigScreen/components/accident.vue b/src/views/riskWarningSys/warningBigScreen/components/accident.vue index 041134b..ce83fb9 100644 --- a/src/views/riskWarningSys/warningBigScreen/components/accident.vue +++ b/src/views/riskWarningSys/warningBigScreen/components/accident.vue @@ -1,16 +1,21 @@ <template> <div class="charts-cont"> - <div class="choose"> - <div :class="cur===1?'act':''" @click="changeTab(1)">月度</div> - <div :class="cur===2?'act':''" @click="changeTab(2)">年度</div> + <div :class="selector"> + <el-cascader + class="timeSe" + :teleported="false" + v-model="timeValue" + :options="optionList" + :props="riskProps" + @change="changeTime" + /> </div> - <div v-show="cur===1" class="month" :id="accidentMonth"></div> - <div v-show="cur===2" class="month" :id="accidentYear"></div> + <div class="month" :id="accidentMonth"></div> </div> </template> <script lang="ts"> - import {toRefs, reactive, defineComponent, ref, defineAsyncComponent, onMounted, nextTick, onUnmounted} from 'vue'; + import {toRefs, reactive, defineComponent, ref, defineAsyncComponent, onMounted, nextTick, onUnmounted, watchEffect} from 'vue'; import { storeToRefs } from 'pinia'; import { initBackEndControlRoutes } from '/@/router/backEnd'; import {useUserInfo} from "/@/stores/userInfo"; @@ -21,35 +26,142 @@ import { workApplyApi } from '/@/api/specialWorkSystem/workApply'; import * as echarts from "echarts"; import '/@/theme/bigScreen.css' - - + import {useScreenTheme} from "/@/stores/screenTheme" + import { riskWarningApi } from '/@/api/riskWarning'; + import {teamManageApi} from "/@/api/systemManage/basicDateManage/personShiftManage/teamManage"; interface stateType { - cur: number - } + curColor: string, + accData: Array<any>; + timeValue: Array<any>, + optionList: Array<any>, + selector: string, + riskProps: object + } export default defineComponent({ name: 'accident', components: {}, props:{ - size: Number + size: Number, + theme: Boolean }, - setup(props) { + setup(props,context) { const userInfo = useUserInfo() const { userInfos } = storeToRefs(userInfo); + const screenThemes = useScreenTheme() + const { screenTheme } = storeToRefs(screenThemes); const accidentMonth = ref("eChartFix" + Date.now() + Math.random()) - const accidentYear = ref("eChartFix" + Date.now() + Math.random()) const state = reactive<stateType>({ - cur: 1 + curColor: '#fff', + accData: [], + timeValue: [], + optionList: [], + riskProps: { + expandTrigger: 'hover' + }, + selector: 'select-dark' }) + const timeForm = { + hour12: false, + year: 'numeric', + month: 'numeric', + day: '2-digit', + hour: '2-digit', + minute: '2-digit', + second: '2-digit' + }; + const makeList = () =>{ + for(let i=0;i<=60;i++){ + const newObj = { + label: 1990 + i + '', + value: 1990 + i + '', + children: [ + { + label: '年度', + value: 0 + }, + { + label: '一月', + value: 1 + }, + { + label: '二月', + value: 2 + }, + { + label: '三月', + value: 3 + }, + { + label: '四月', + value: 4 + }, + { + label: '五月', + value: 5 + }, + { + label: '六月', + value: 6 + }, + { + label: '七月', + value: 7 + }, + { + label: '八月', + value: 8 + }, + { + label: '九月', + value: 9 + }, + { + label: '十月', + value: 10 + }, + { + label: '十一月', + value: 11 + }, + { + label: '十二月', + value: 12 + } + ] + } + state.optionList.push(newObj) + } + } + const getTime = () =>{ + const curTime = new Date().toLocaleString('zh', timeForm).replace(/\//g, '-'); + const temp = curTime.split('-') + state.timeValue[0] = temp[0] + state.timeValue[1] = Number(temp[1]) + } + const getDataByYearId = async () => { + const data = { + year: state.timeValue[0], + month: state.timeValue[1], + } + if(state.timeValue[1] == 0){ + data.month = '' + } + let res = await riskWarningApi().getRiskByTimeDep(data); + if (res.data.code === '200') { + state.accData = res.data.data + initAccidentByMonth(state.accData) + context.emit('getData',state.accData) + } else { + ElMessage({ + type: 'warning', + message: res.data.msg + }); + } + } - const changeTab =(i)=>{ - state.cur = i - nextTick(()=>{ - initAccidentByYear(); - }) - } type EChartsOption = echarts.EChartsOption // 隐患整改情况 - const initAccidentByMonth =()=>{ + const initAccidentByMonth =(data)=>{ let dom = document.getElementById(accidentMonth.value); let myChart = echarts.init(dom); @@ -62,25 +174,26 @@ legend: { top: '0', left: 'center', + itemWidth: fontSize(10), + itemHeight: fontSize(8), textStyle:{ - color: '#fff', + color: 'auto', fontSize: fontSize(11) } }, series: [ { - name: '月度数据', + name: '事故等级数量', type: 'pie', - radius: ['45%', '70%'], + radius: ['50%', '80%'], avoidLabelOverlap: false, itemStyle: { - borderRadius: fontSize(4) + borderRadius: fontSize(2) }, label: { show: false, position: 'outer', fontSize: fontSize(10), - color: '#ffffff', textBorderWidth: 0, width: fontSize(40), overflow: 'break' @@ -97,81 +210,13 @@ fontWeight: 'bold' } }, - data: [ - { value: 1048, name: '特别重大事故' }, - { value: 735, name: '重大事故' }, - { value: 580, name: '较大事故' }, - { value: 484, name: '一般事故' }, - { value: 300, name: '未遂事故' } - ], - center: ['50%','65%'] - } - ] - }; - - option && myChart.setOption(option); - - window.addEventListener("resize",function (){ - myChart.resize(); - }); - } - // 隐患整改情况 - const initAccidentByYear =()=>{ - let dom = document.getElementById(accidentYear.value); - let myChart = echarts.init(dom); - - let option: EChartsOption; - - option = { - tooltip: { - trigger: 'item' - }, - legend: { - top: '0', - left: 'center', - textStyle:{ - color: '#fff', - fontSize: fontSize(11) - } - }, - series: [ - { - name: '年度数据', - type: 'pie', - radius: ['45%', '70%'], - avoidLabelOverlap: false, - itemStyle: { - borderRadius: fontSize(4) - }, - label: { - show: false, - position: 'outer', - fontSize: fontSize(10), - color: '#ffffff', - textBorderWidth: 0, - width: fontSize(40), - overflow: 'break' - }, - // labelLine: { - // show: true, - // length: fontSize(10), - // length2: fontSize(10) - // }, - emphasis: { - label: { - show: true, - fontSize: fontSize(22), - fontWeight: 'bold' - } - }, - data: [ - { value: 1048, name: '特别重大事故' }, - { value: 735, name: '重大事故' }, - { value: 580, name: '较大事故' }, - { value: 484, name: '一般事故' }, - { value: 300, name: '未遂事故' } - ], - center: ['50%','65%'] + data: data.map(i=>{ + return { + name: i.accidentGrade, + value: i.count + } + }), + center: ['50%','60%'] } ] }; @@ -188,21 +233,45 @@ let nowClientWidth = document.documentElement.clientWidth; return val * (nowClientWidth/1920) * Number(props.size); } + const getTheme =()=>{ + if(screenTheme.value.isDark){ + state.selector = 'select-dark' + }else{ + state.selector = 'select-light' + } + } + + watchEffect(() => { + if(props.theme){ + state.selector = 'select-dark' + }else{ + state.selector = 'select-light' + } + // getDataByYearId() + }) + + const changeTime = (value)=>{ + state.timeValue[0] = value[0] + state.timeValue[1] = value[1] + getDataByYearId() + } // 页面载入时执行方法 onMounted(() => { - initAccidentByMonth(); - // initAccidentByYear(); + getTheme(); + getTime(); + makeList(); + getDataByYearId(); }); onUnmounted(() =>{ + }) return { accidentMonth, - accidentYear, Search, - changeTab, + changeTime, fontSize, ...toRefs(state) }; @@ -217,31 +286,115 @@ padding: 5%; position: relative; - .choose{ + .select-dark{ position: absolute; - right: 5%; - bottom: 20px; - z-index: 999; - display: flex; - align-items: center; - font-size: 0.75rem; - justify-content: space-between; + z-index: 99999; + top: -20px; + right: 3rem; + width: 30%; + height: 1.5rem; + margin-right: 0.8rem; - div{ - padding: 2px 6px; - box-sizing: border-box; - color: rgba(17,254,238,.4); + ::v-deep(.el-cascader){ + width: 100% !important; + line-height: 100%; + } + ::v-deep(.el-popper){ + background-color: rgba(10,31,92,1); border: 1px solid rgba(17,254,238,.4); - border-radius: 2px; - cursor: pointer; - } - div:hover{ color: #11FEEE; - border: 1px solid #11FEEE; + z-index: 999999 !important; + .el-cascader-node__label{ + color: #11FEEE; + } + .el-icon{ + color: #11FEEE; + } + .el-cascader-node{ + &:hover{ + background: #0049af; + } + } } - .act{ + ::v-deep(.el-cascader-menu){ + min-width: 50px !important; + } + ::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){ + box-shadow: none; + border: 1px solid rgba(17,254,238,.2); + background: rgba(10,31,92,.6) !important; + height: 1.5rem; color: #11FEEE; - border: 1px solid #11FEEE; + + input{ + font-size: 0.8rem; + color: #11FEEE; + } + .el-icon{ + color: #11FEEE; + } + } + } + + .select-light{ + position: absolute; + z-index: 99999; + top: -20px; + right: 3rem; + width: 30%; + height: 20px; + margin-right: 0.8rem; + + ::v-deep(.el-cascader){ + width: 100% !important; + line-height: 100%; + } + ::v-deep(.el-popper){ + background-color: rgba(255,255,255,1); + border: 1px solid #ccc; + color: #fff; + z-index: 999999 !important; + .el-cascader-node__label{ + color: #000; + } + .el-icon{ + color: #000; + } + .el-cascader-node{ + &:hover{ + background: #ccc; + } + } + } + ::v-deep(.el-cascader-menu){ + min-width: 80px !important; + } + ::v-deep(.el-popper__arrow){ + &::before{ + background-color: rgba(255,255,255,.6) !important; + border: 1px solid #ccc; + } + } + ::v-deep(.el-input__wrapper){ + box-shadow: none; + border: 1px solid #ccc; + background: #fff !important; + height: 1.5rem; + color: #fff; + + input{ + font-size: 0.8rem; + color: #000; + } + .el-icon{ + color: #000; + } } } .month{ -- Gitblit v1.9.2