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/components/training.vue | 327 ++++-------------------------------------------------- 1 files changed, 26 insertions(+), 301 deletions(-) diff --git a/src/views/riskWarningSys/warningBigScreen/components/training.vue b/src/views/riskWarningSys/warningBigScreen/components/training.vue index 2410257..4fba1c7 100644 --- a/src/views/riskWarningSys/warningBigScreen/components/training.vue +++ b/src/views/riskWarningSys/warningBigScreen/components/training.vue @@ -1,10 +1,6 @@ <template> <div class="charts-cont"> - <span v-if="lastDays == -1" :class="tip">该部门本年未进行应急演练</span> - <span v-else :class="tip">距本年度上次演练结束{{lastDays}}天</span> - <div v-show="curTab === 1" class="train" :id="train1"></div> - <div v-show="curTab === 2" class="train" :id="train2"></div> - <div v-show="curTab === 3" class="train" :id="train3"></div> + <div class="train" :id="train1"></div> </div> </template> @@ -34,12 +30,8 @@ import '/@/theme/bigScreen.css' interface stateType { - curTab: number, - timeValue: Array<any>, traData: Array<any>, - monthData: Array<any>, - lastDays: number | null, - tip: string, + changeChart: any } export default defineComponent({ name: 'accident', @@ -48,78 +40,35 @@ size: Number, theme: Boolean }, - setup(props) { + setup(props,context) { const userInfo = useUserInfo() const { userInfos } = storeToRefs(userInfo); const screenThemes = useScreenTheme() const { screenTheme } = storeToRefs(screenThemes); const train1 = ref("eChartTrain1" + Date.now() + Math.random()) - const train2 = ref("eChartTrain2" + Date.now() + Math.random()) - const train3 = ref("eChartTrain3" + Date.now() + Math.random()) const state = reactive<stateType>({ - curTab: 1, - timeValue: [], traData: [], - monthData: [], - lastDays: null, - tip: 'tip-dark' + changeChart: null }) - const timeForm = { - hour12: false, - year: 'numeric', - month: 'numeric', - day: '2-digit', - hour: '2-digit', - minute: '2-digit', - second: '2-digit' - }; const getDataById = async () => { - getTime() - const data = { - depId: screenTheme.value.depId || 1, - beginYear: state.timeValue[0], - beginMonth: 1, - endYear: state.timeValue[0], - endMonth: state.timeValue[1] - } - let res = await riskWarningApi().getEmergencyByDep(data); + let res = await riskWarningApi().getSafeCheckTask(); if (res.data.code === '200') { state.traData = res.data.data - const result = [] - let lastTime = '' - for(let index in state.traData){ - if(state.traData[index].detail && state.traData[index].detail.length>0){ - let total = state.traData[index].detail.reduce((pre,cur)=>{ - return pre+cur.practiceCount - },0) - result.push(total) - state.traData[index].totalCount = total - }else{ - result.push(0) - } - for(let i in state.traData[index].detail){ - if(state.traData[index].detail[i].lastPracticeTime != null){ - lastTime = state.traData[index].detail[i].lastPracticeTime - } - } + const chartData = state.traData.reduce((acc, curr, index) => { + if (index % 4 === 0) acc.push([]); + acc[acc.length - 1].push(curr); + return acc; + }, []) + let curIndex = 0 + const renderCharts = () => { + const data = chartData[curIndex] + initTrain1(data) + curIndex = (curIndex + 1) % chartData.length } - if(!lastTime){ - state.lastDays = -1 - }else{ - const date = new Date(lastTime) - const nTime = Date.now() - date.getTime() - state.lastDays = Math.floor(nTime / 86400000) - } - const arrNum = Math.ceil(result.length/4, 10); - let index = 0; // 定义初始索引 - let resIndex = 0; // 用来保存每次拆分的长度 - while(index< arrNum){ - state.monthData[index]= result.slice(resIndex,4+resIndex); - resIndex += 4; - index++; - } - initTrain1() + renderCharts() + state.changeChart = setInterval(renderCharts,5000) + context.emit('getData',state.traData) } else { ElMessage({ type: 'warning', @@ -127,43 +76,14 @@ }); } } - 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 getTheme =()=>{ - if(screenTheme.value.isDark){ - state.tip = 'tip-dark' - }else{ - state.tip = 'tip-light' - } - } - const changeTab = setInterval(()=>{ - if(state.curTab<3){ - state.curTab = state.curTab + 1 - if(state.curTab == 2){ - nextTick(()=>{ - initTrain2() - }) - }else{ - nextTick(()=>{ - initTrain3() - }) - } - }else{ - state.curTab = 1 - nextTick(()=>{ - initTrain1() - }) - } - },5000) + } + type EChartsOption = echarts.EChartsOption // 隐患整改情况 - const initTrain1 =()=>{ + const initTrain1 =(data)=>{ let dom = document.getElementById(train1.value); let myChart = echarts.init(dom); let option: EChartsOption; @@ -200,7 +120,7 @@ }, yAxis: { type: 'category', - data: ['一月', '二月', '三月', '四月'], + data: data.map(i=>i.year+ '.' + i.month), axisLine:{ show: true, lineStyle:{ @@ -208,14 +128,14 @@ } }, axisLabel:{ - color: '#999' + color: '#fff' } }, series: [ { name: '2011', type: 'bar', - data: state.monthData[0], + data: data.map(i=>i.count), itemStyle:{ color: { x: 0, @@ -250,193 +170,6 @@ window.addEventListener("resize",function (){ myChart.resize(); }); - echarts.init(document.getElementById(train2.value)).dispose() - echarts.init(document.getElementById(train3.value)).dispose() - } - - const initTrain2 =()=>{ - let dom = document.getElementById(train2.value); - let myChart = echarts.init(dom); - let option: EChartsOption; - - option = { - tooltip: { - trigger: 'axis', - axisPointer: { - type: 'shadow' - } - }, - grid: { - top: '1%', - left: '2%', - right: '2%', - bottom: '2%', - containLabel: true - }, - xAxis: { - type: 'value', - boundaryGap: [0, 0.01], - axisLine:{ - show: true, - lineStyle:{ - type: 'dotted' - } - }, - axisLabel:{ - color: '#999' - }, - splitLine:{ - show: false - } - }, - yAxis: { - type: 'category', - data: ['五月', '六月','七月', '八月'], - axisLine:{ - show: true, - lineStyle:{ - color: '#999' - } - }, - axisLabel:{ - color: '#999' - } - }, - series: [ - { - name: '2011', - type: 'bar', - // data: [18203, 23489, 29034, 104970, 131744, 630230, 18203, 23489, 29034, 104970, 131744, 630230] - data: state.monthData[1], - barCategoryGap: '50%', - itemStyle:{ - color: { - x: 0, - y: 0, - x2: 1, - y2: 0, - colorStops: [ - { - offset: 0.1, - color: "#2D74C0", // 线处的颜色 - }, - { - offset: 0.9, - color: "#21D9DC", // 坐标轴处的颜色 - }, - ] - }, - borderRadius: [0,99,99,0] - }, - label:{ - show: true, - position: 'outside', - color: '#999', - fontSize: fontSize(11) - } - } - ] - }; - - option && myChart.setOption(option); - window.addEventListener("resize",function (){ - myChart.resize(); - }); - echarts.init(document.getElementById(train1.value)).dispose() - echarts.init(document.getElementById(train3.value)).dispose() - } - - const initTrain3 =()=>{ - let dom = document.getElementById(train3.value); - let myChart = echarts.init(dom); - let option: EChartsOption; - - option = { - tooltip: { - trigger: 'axis', - axisPointer: { - type: 'shadow' - } - }, - grid: { - top: '1%', - left: '2%', - right: '2%', - bottom: '2%', - containLabel: true - }, - xAxis: { - type: 'value', - boundaryGap: [0, 0.01], - axisLine:{ - show: true, - lineStyle:{ - type: 'dotted' - } - }, - axisLabel:{ - color: '#999' - }, - splitLine:{ - show: false - } - }, - yAxis: { - type: 'category', - // data: ['一月', '二月', '三月', '四月', '五月', '六月','七月', '八月', '九月', '十月', '十一月', '十二月'], - data: ['九月', '十月', '十一月', '十二月'], - axisLine:{ - show: true, - lineStyle:{ - color: '#999' - } - }, - axisLabel:{ - color: '#999' - } - }, - series: [ - { - name: '2011', - type: 'bar', - // data: [18203, 23489, 29034, 104970, 131744, 630230, 18203, 23489, 29034, 104970, 131744, 630230] - data: state.monthData[2], - barCategoryGap: '50%', - itemStyle:{ - color: { - x: 0, - y: 0, - x2: 1, - y2: 0, - colorStops: [ - { - offset: 0.1, - color: "#2D74C0", // 线处的颜色 - }, - { - offset: 0.9, - color: "#21D9DC", // 坐标轴处的颜色 - }, - ] - }, - borderRadius: [0,99,99,0] - }, - label:{ - show: true, - position: 'outside', - color: '#999', - fontSize: fontSize(11) - } - } - ] - }; - - option && myChart.setOption(option); - window.addEventListener("resize",function (){ - myChart.resize(); - }); - echarts.init(document.getElementById(train1.value)).dispose() - echarts.init(document.getElementById(train2.value)).dispose() } function fontSize(val){ @@ -446,27 +179,19 @@ watchEffect(() => { - if(props.theme){ - state.tip = 'tip-dark' - }else{ - state.tip = 'tip-light' - } - getDataById() + // getDataById() }) // 页面载入时执行方法 onMounted(() => { - getTime(); getTheme(); getDataById() }); onBeforeUnmount(() =>{ - clearInterval(changeTab) + clearInterval(state.changeChart) }) return { train1, - train2, - train3, Search, fontSize, ...toRefs(state) -- Gitblit v1.9.2