From 23f1bf22c42a904c05cee63e10c9fd8b60dfe8f5 Mon Sep 17 00:00:00 2001
From: Admin <978517621@qq.com>
Date: 星期二, 20 九月 2022 14:54:56 +0800
Subject: [PATCH] Default Changelist

---
 src/views/riskWarningSys/warningBigScreen/components/SPI.vue |  334 +++++++++++++++++++++++++++++++++++++++++++------------
 1 files changed, 259 insertions(+), 75 deletions(-)

diff --git a/src/views/riskWarningSys/warningBigScreen/components/SPI.vue b/src/views/riskWarningSys/warningBigScreen/components/SPI.vue
index f148306..cb42132 100644
--- a/src/views/riskWarningSys/warningBigScreen/components/SPI.vue
+++ b/src/views/riskWarningSys/warningBigScreen/components/SPI.vue
@@ -1,5 +1,17 @@
 <template>
 	<div class="charts-cont">
+		<div :class="spiChart">
+			<el-cascader
+				class="spiSe"
+				:teleported="false"
+				v-model="spiValue"
+				:options="spiOptions"
+				:props="spiProps"
+				:show-all-levels="false"
+				@change="handleChange"
+			/>
+		</div>
+
 		<div class="spi" :id="spi">
 
 		</div>
@@ -7,7 +19,7 @@
 </template>
 
 <script lang="ts">
-	import {toRefs, reactive, defineComponent, ref, defineAsyncComponent, onMounted} from 'vue';
+	import {toRefs, reactive, defineComponent, ref, defineAsyncComponent, onMounted, watchEffect} from 'vue';
 	import { storeToRefs } from 'pinia';
 	import { initBackEndControlRoutes } from '/@/router/backEnd';
 	import {useUserInfo} from "/@/stores/userInfo";
@@ -18,23 +30,76 @@
 	import { workApplyApi } from '/@/api/specialWorkSystem/workApply';
 	import * as echarts from 'echarts';
 	import '/@/theme/bigScreen.css'
+	import {useScreenTheme} from "/@/stores/screenTheme";
 
 	interface stateType {
+		spiValue: number;
+		spiOptions: Array<any>;
+		spiChart: string
 	}
 	export default defineComponent({
-		name: 'accident',
+		name: 'SPI',
 		components: {},
 		props:{
 			size: Number,
-			dep: Number
+			theme: Boolean
 		},
 		setup(props) {
 			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: 0,
+				spiOptions: [
+					{
+						value: 0,
+						label: '公司级别SPI'
+					},
+					{
+						value: 1,
+						label: 'A事业部SPI',
+						children: [
+							{
+								value: 11,
+								label: 'A车间SPI'
+							},
+							{
+								value: 12,
+								label: 'B车间SPI'
+							},
+							{
+								value: 13,
+								label: 'C车间SPI'
+							}
+						]
+					},
+					{
+						value: 2,
+						label: 'B事业部SPI',
+						children: [
+							{
+								value: 21,
+								label: 'D车间SPI'
+							},
+							{
+								value: 22,
+								label: 'E车间SPI'
+							},
+							{
+								value: 23,
+								label: 'F车间SPI'
+							}
+						]
+					}
+				],
+				spiChart: 'spi-dark'
 			})
+			const spiProps = {
+				expandTrigger: 'hover',
+				checkStrictly: true
+			}
 			type EChartsOption = echarts.EChartsOption
 			// 隐患整改情况
 			const initSpi =()=>{
@@ -46,20 +111,21 @@
 				option = {
 					legend: {
 						data: ['注意线', '警告线', '危险线', 'SPI预警指数值'],
-						top: '0',
-						left: 'center',
+						top: '2%',
+						right: '6%',
 						textStyle:{
-							color: '#fff',
-							fontSize: fontSize(12)
+							color: '#999',
+							fontSize: fontSize(14)
 						}
 					},
+					color: ['rgba(216,55,55)','rgba(235,194,80)','rgba(147,208,81)'],
 					tooltip: {
 						trigger: 'axis'
 					},
 					grid: {
-						left: '4%',
-						right: '4%',
-						bottom: '5%',
+						left: '8%',
+						right: '8%',
+						bottom: '4%',
 					},
 					xAxis: [
 						{
@@ -69,18 +135,18 @@
 							axisLine:{
 								show: true,
 								lineStyle:{
-									color: '#fff'
+									color: '#999'
 								}
 							},
 							splitLine:{
 								show: true,
 								lineStyle:{
 									type: 'dashed',
-									color: 'rgba(255,255,255,.4)'
+									color: '#999'
 								}
 							},
 							axisLabel:{
-								color: '#fff'
+								color: '#999',
 							}
 						}
 					],
@@ -107,6 +173,64 @@
 					],
 					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',
@@ -132,65 +256,7 @@
 								},
 							},
 							showSymbol: false,
-							stack: 'Total',
-							smooth: true
-						},
-						{
-							name: '警告线',
-							data: [250, 250, 250, 250, 250, 250, 250,250, 250, 250, 250, 250],
-							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,.6)", // 坐标轴处的颜色
-										},
-									],
-								}
-							},
-							showSymbol: false,
-							stack: 'Total',
-							smooth: true
-						},
-						{
-							name: '危险线',
-							data: [250, 250, 250, 250, 250, 250, 250,250, 250, 250, 250, 250],
-							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,.6)", // 坐标轴处的颜色
-										},
-									],
-								}
-							},
-							showSymbol: false,
-							stack: 'Total',
+							// stack: 'Total',
 							smooth: true
 						},
 						{
@@ -200,7 +266,7 @@
 							triggerLineEvent: true,
 							label:{
 								show: true,
-								color: '#fff',
+								color: '#23E5E5',
 								fontSize: fontSize(12)
 							},
 							lineStyle:{
@@ -222,6 +288,23 @@
 					myChart.resize();
 				});
 			}
+
+			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'
+				}
+			})
+
 			function fontSize(val){
 				let nowClientWidth = document.documentElement.clientWidth;
 				return val * (nowClientWidth/1920) * Number(props.size);
@@ -230,11 +313,13 @@
 			// 页面载入时执行方法
 			onMounted(() => {
 				initSpi();
+				getTheme();
 			});
 
 			return {
 				spi,
 				Search,
+				spiProps,
 				fontSize,
 				...toRefs(state)
 			};
@@ -246,9 +331,108 @@
 	.charts-cont{
 		width: 100%;
 		height: 100%;
-		padding: 5%;
+		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