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/SPI.vue |  395 +++++++++----------------------------------------------
 1 files changed, 68 insertions(+), 327 deletions(-)

diff --git a/src/views/riskWarningSys/warningBigScreen/components/SPI.vue b/src/views/riskWarningSys/warningBigScreen/components/SPI.vue
index a52fdca..32f95af 100644
--- a/src/views/riskWarningSys/warningBigScreen/components/SPI.vue
+++ b/src/views/riskWarningSys/warningBigScreen/components/SPI.vue
@@ -1,17 +1,5 @@
 <template>
 	<div class="charts-cont">
-		<div :class="spiChart">
-			<el-cascader
-				class="spiSe"
-				:teleported="false"
-				v-model="spiValue"
-				:options="departList"
-				:props="spiProps"
-				:show-all-levels="false"
-				@change="handleChange"
-			/>
-		</div>
-
 		<div class="spi" :id="spi">
 
 		</div>
@@ -32,12 +20,13 @@
 	import '/@/theme/bigScreen.css'
 	import {useScreenTheme} from "/@/stores/screenTheme";
 	import {teamManageApi} from "/@/api/systemManage/basicDateManage/personShiftManage/teamManage";
+	import {riskWarningApi} from "/@/api/riskWarning";
 
 	interface stateType {
-		spiValue: number;
-		departList: Array<any>;
-		spiChart: string;
-		spiProps: object
+		spiData: Array<any>;
+		year: string;
+		monthList: Array<string>;
+		valueList: Array<string>
 	}
 	export default defineComponent({
 		name: 'SPI',
@@ -46,219 +35,83 @@
 			size: Number,
 			theme: Boolean
 		},
-		setup(props) {
+		setup(props,context) {
 			const userInfo = useUserInfo()
 			const { userInfos } = storeToRefs(userInfo);
 			const screenThemes = useScreenTheme()
 			const { screenTheme }  = storeToRefs(screenThemes);
 			const spi = ref("eChartSpi" + Date.now() + Math.random())
 			const state = reactive<stateType>({
-				spiValue: 1,
-				departList: [],
-				spiProps: {
-					expandTrigger: 'hover',
-					checkStrictly: true,
-					value: 'depId',
-					label: 'depName',
-				},
-				spiChart: 'spi-dark'
+				spiData: [],
+				year: '',
+				monthList: [],
+				valueList: [],
 			})
 
-			// 获取部门列表
-			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
-					});
-				}
+			// 获取spi数据
+			const getSpiData = async () => {
+        let res = await riskWarningApi().getSpiPage({
+            pageIndex: 1,
+            pageSize: 12
+        })
+        if (res.data.code === '200') {
+          state.spiData = res.data.data;
+          initSpi(state.spiData.reverse())
+          context.emit('getData',state.spiData.reverse())
+        } else {
+          ElMessage({
+            type: 'warning',
+            message: res.data.msg
+          });
+        }
 			};
-
 			type EChartsOption = echarts.EChartsOption
 			// 隐患整改情况
-			const initSpi =()=>{
+			const initSpi =(data)=>{
 				let dom = document.getElementById(spi.value);
 				let myChart = echarts.init(dom);
 
 				let option: EChartsOption;
 
-				option = {
-					legend: {
-						data: ['注意线', '警告线', '危险线', 'SPI预警指数值'],
-						top: '2%',
-						right: '6%',
-						textStyle:{
-							color: '#999',
-							fontSize: fontSize(14)
-						}
-					},
-					color: ['rgba(216,55,55)','rgba(235,194,80)','rgba(147,208,81)'],
-					tooltip: {
-						trigger: 'axis'
-					},
-					grid: {
-						left: '8%',
-						right: '8%',
-						bottom: '5%',
-					},
-					xAxis: [
-						{
-							type: 'category',
-							boundaryGap: false,
-							data: ['一月', '二月', '三月', '四月', '五月', '六月', '七月', '八月', '九月', '十月', '十一月', '十二月'],
-							axisLine:{
-								show: true,
-								lineStyle:{
-									color: '#999'
-								}
-							},
-							splitLine:{
-								show: true,
-								lineStyle:{
-									type: 'dashed',
-									color: '#999'
-								}
-							},
-							axisLabel:{
-								color: '#999',
-							}
-						}
-					],
-					yAxis: [
-						{
-							type: 'value',
-							axisLine:{
-								show: true,
-								lineStyle:{
-									type: 'dotted'
-								}
-							},
-							axisLabel:{
-								color: '#ccc'
-							},
-							splitLine:{
-								show: true,
-								lineStyle:{
-									type: 'dashed',
-									color: 'rgba(255,255,255,.4)'
-								}
-							}
-						}
-					],
-					series: [
-						{
-							name: '危险线',
-							data: [1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000],
-							type: 'line',
-							lineStyle:{
-								width: 0
-							},
-							areaStyle: {
-								color: {
-									x: 0,
-									y: 0,
-									x2: 0,
-									y2: 1,
-									colorStops: [
-										{
-											offset: 0.1,
-											color: "rgba(216,55,55)", // 线处的颜色
-										},
-										{
-											offset: 0.9,
-											color: "rgba(216,55,55,.1)", // 坐标轴处的颜色
-										},
-									],
-								}
-							},
-							showSymbol: false,
-							// stack: 'Total',
-							smooth: true
-						},
-						{
-							name: '警告线',
-							data: [750, 750, 750, 750, 750, 750, 750, 750, 750, 750, 750, 750],
-							type: 'line',
-							lineStyle:{
-								width: 0
-							},
-							areaStyle: {
-								color: {
-									x: 0,
-									y: 0,
-									x2: 0,
-									y2: 1,
-									colorStops: [
-										{
-											offset: 0.1,
-											color: "rgba(235,194,80)", // 线处的颜色
-										},
-										{
-											offset: 0.9,
-											color: "rgba(235,194,80,.1)", // 坐标轴处的颜色
-										},
-									],
-								}
-							},
-							showSymbol: false,
-							// stack: 'Total',
-							smooth: true
-						},
-						{
-							name: '注意线',
-							data: [500, 500, 500, 500, 500, 500, 500,500, 500, 500, 500, 500],
-							type: 'line',
-							lineStyle:{
-								width: 0
-							},
-							areaStyle: {
-								color: {
-									x: 0,
-									y: 0,
-									x2: 0,
-									y2: 1,
-									colorStops: [
-										{
-											offset: 0.1,
-											color: "rgba(147,208,81)", // 线处的颜色
-										},
-										{
-											offset: 0.9,
-											color: "rgba(147,208,81,.2)", // 坐标轴处的颜色
-										},
-									]
-								},
-							},
-							showSymbol: false,
-							// stack: 'Total',
-							smooth: true
-						},
-						{
-							name: 'SPI预警指数值',
-							data: [450, 632, 501, 434, 390, 530, 520,750, 632, 401, 634, 590],
-							type: 'line',
-							triggerLineEvent: true,
-							label:{
-								show: true,
-								color: '#23E5E5',
-								fontSize: fontSize(12)
-							},
-							lineStyle:{
-								width: 2,
-								color: '#23E5E5'
-							},
-							itemStyle:{
-								color: '#23E5E5',
-								borderColor: '#fff',
-								borderWidth: 4
-							},
-							smooth: true
-						}
-					]
-				};
+        option = {
+          tooltip: {
+            trigger: 'axis',
+            axisPointer: {
+              // Use axis to trigger tooltip
+              type: 'shadow' // 'shadow' as default; can also be 'line' or 'shadow'
+            }
+          },
+          color: ['#91cc75','#ee6666'],
+          grid: [
+            {
+              top: '5%',
+              right: '2%',
+              bottom: '10%'
+            }
+          ],
+          xAxis: {
+            type: 'category',
+            data: data.map(i=>i.time),
+            axisLabel: {
+              color: '#fff'
+            }
+          },
+          yAxis: {
+            type: 'value',
+            splitLine:{
+              lineStyle: {
+                color: 'rgba(255,255,255,.2)'
+              }
+            }
+          },
+          series: [
+            {
+              name: 'spi数值',
+              type: 'line',
+              data: data.map(i=>i.value?i.value:0)
+            }
+          ]
+        }
 
 				option && myChart.setOption(option);
 				window.addEventListener("resize",function (){
@@ -266,20 +119,9 @@
 				});
 			}
 
-			const getTheme =()=>{
-				if(screenTheme.value.isDark){
-					state.spiChart =  'spi-dark'
-				}else{
-					state.spiChart =  'spi-light'
-				}
-			}
 
 			watchEffect(() => {
-				if(props.theme){
-					state.spiChart =  'spi-dark'
-				}else{
-					state.spiChart =  'spi-light'
-				}
+				getSpiData()
 			})
 
 			function fontSize(val){
@@ -289,9 +131,7 @@
 
 			// 页面载入时执行方法
 			onMounted(() => {
-				getAllDepartment();
-				initSpi();
-				getTheme();
+				getSpiData();
 			});
 
 			return {
@@ -311,105 +151,6 @@
 		padding: 2%;
 		position: relative;
 
-		.spi-dark{
-			position: absolute;
-			width: 25% !important;
-			top: 0;
-			left: 2rem;
-			z-index: 99999;
-
-			::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;
-				}
-			}
-		}
-
-		.spi-light{
-			position: absolute;
-			width: 25% !important;
-			top: 0;
-			left: 2rem;
-			z-index: 99999;
-
-			::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;
-				}
-			}
-		}
 		.spi{
 			width: 100%;
 			height: 100%;

--
Gitblit v1.9.2