From 20b0ce2db27b64a60de60aee05dedd448099e330 Mon Sep 17 00:00:00 2001
From: 马宇豪 <978517621@qq.com>
Date: Mon, 08 Jul 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