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