From 6ea650e7eb14b6bf6d10353402a46d0ab50e2198 Mon Sep 17 00:00:00 2001 From: juzi <819872918@qq.com> Date: Thu, 4 Jan 2024 16:37:14 +0800 Subject: [PATCH] 1.4 --- package.json | 1 + public/favicon.ico | Bin 4286 -> 38078 bytes src/layout/components/TagsView/index.vue | 2 +- src/main.js | 2 + src/store/modules/websocket.js | 31 ++- .../databoard/assets/defectStatistics.png | Bin 0 -> 558 bytes src/views/databoard/assets/eqMonitor.png | Bin 0 -> 615 bytes src/views/databoard/assets/goodRate.png | Bin 0 -> 1496 bytes src/views/databoard/assets/order.png | Bin 0 -> 789 bytes src/views/databoard/components/Container.vue | 18 ++ .../databoard/components/DefectChart.vue | 216 ++++++++++++++++++ .../databoard/components/DefectClassChart.vue | 170 ++++++++++++++ .../components/EnergeMonitoringChart.vue | 157 +++++++++++++ src/views/databoard/components/GasChart.vue | 87 ++++--- .../databoard/components/NumRateChart.vue | 204 +++++++++++++++++ .../databoard/deepProcessing/BottomTwo.vue | 32 ++- .../{YieldRate.vue => DefectSum.vue} | 6 +- .../deepProcessing/EnergyMonitoring.vue | 30 +++ .../{OrderStatus.vue => EqAlarm.vue} | 6 +- .../databoard/deepProcessing/NumRate.vue | 30 +++ .../databoard/deepProcessing/TopThree.vue | 42 +++- .../deepProcessing/WorkOrderMonitoring.vue | 14 ++ src/views/databoard/deepProcessing/index.vue | 14 +- src/views/databoard/kiln/EnergeCost.vue | 38 +-- src/views/databoard/kiln/GasHandle.vue | 8 +- .../databoard/wholePlant/DefectClass.vue | 38 +++ .../databoard/wholePlant/DefectStatistics.vue | 12 +- .../databoard/wholePlant/OrderStatus.vue | 4 +- src/views/databoard/wholePlant/RightTwo.vue | 6 +- src/views/databoard/wholePlant/YieldRate.vue | 18 +- src/websocket/websocket.js | 80 +++---- src/websocket/wsInterface.js | 67 ++++++ yarn.lock | 45 ++++ 33 files changed, 1236 insertions(+), 142 deletions(-) create mode 100644 src/views/databoard/assets/defectStatistics.png create mode 100644 src/views/databoard/assets/eqMonitor.png create mode 100644 src/views/databoard/assets/goodRate.png create mode 100644 src/views/databoard/assets/order.png create mode 100644 src/views/databoard/components/DefectChart.vue create mode 100644 src/views/databoard/components/DefectClassChart.vue create mode 100644 src/views/databoard/components/EnergeMonitoringChart.vue create mode 100644 src/views/databoard/components/NumRateChart.vue rename src/views/databoard/deepProcessing/{YieldRate.vue => DefectSum.vue} (65%) create mode 100644 src/views/databoard/deepProcessing/EnergyMonitoring.vue rename src/views/databoard/deepProcessing/{OrderStatus.vue => EqAlarm.vue} (65%) create mode 100644 src/views/databoard/deepProcessing/NumRate.vue create mode 100644 src/views/databoard/deepProcessing/WorkOrderMonitoring.vue create mode 100644 src/views/databoard/wholePlant/DefectClass.vue diff --git a/package.json b/package.json index 556024f1..285e0d8c 100644 --- a/package.json +++ b/package.json @@ -43,6 +43,7 @@ "dependencies": { "@antv/x6": "^2.15.3", "@babel/parser": "7.18.4", + "@jiaminghi/data-view": "^2.10.0", "@riophae/vue-treeselect": "0.4.0", "axios": "0.27.2", "benz-amr-recorder": "^1.1.5", diff --git a/public/favicon.ico b/public/favicon.ico index 47918ab0fa954f932e6aeedef6a18baa5933e5b6..71ea1add8ab1469330dd8e0e963e986745f8c411 100644 GIT binary patch literal 38078 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 K#GJi+@&6BOMmzNY literal 4286 zcmcInO-~d-5Uq)E5q1q8j7QmnCPWYZ029%Z9E3nZBoPx1aDaoq0e+5WFB(tW_>My2 ziNnJ7Oz#5n6%a8J$M>Ew^PwOGZ2Ne&hMEYZdJJ2hxHdoPRF6f}gl*A(tVaT= z0K3`&w&6kD3OMKye_TrLyoAq(SHreB=tJ7{e8I-Czh314`(n7BLwOwWNy#Cr5~^nSvDeYkHDRCwybN^;_W0u(N$RMT7Wni(1Am|KUlb|b zFjoD0>V%7d?5C_P{Uml8eo{NJ$D$#B%tpy*2)UI}AJXud8~PMAGo@BE;$*$=pr+|l zcaFR8SxUUcCnXZIP_?uuu(!Dg@CAO_$4@R=8kf8_!-YR0zG z*||jY{lWh4xc*@O^E|LI z?Qtvo|6hOLn@9bPJE%X@X<2`N7V=s54O9R1ZINmo=So3j1AW@VIm%F$I$8L%T`oO* zbo2~)vf-|i$=S&q+(i3KIg!db?7nVhz;B$ROd`99bw}>G&flaa!{*L|njLiyeAnE$ zLVea^)0j^ca8lF%IH+lUtLYm#_AYGZv|fWgFzrY8fj9Cs>%1_zn_!&dY?xvLxAPi5 zGoRKc=Na}Bv0P7992#w!`$N|K#nwsuUTyZfkw>KnpVs~2!1%giY~ymwm_~@XzT1fA zepmOwVbzaABUb%8?u1zHh=gb!7ayK*&wv;pFEC+^F6!|n7g8>+37uH3weD!FrZufzlD { - if (item.path === '/databoard/kiln' || item.path === '/databoard/whole-plant') { + if (item.path === '/databoard/kiln' || item.path === '/databoard/whole-plant' || item.path === '/databoard/deep-processing') { num++ } }) diff --git a/src/main.js b/src/main.js index 9d15a451..9e38edca 100644 --- a/src/main.js +++ b/src/main.js @@ -9,6 +9,7 @@ import store from './store'; import router from './router'; import directive from './directive'; // directive import plugins from './plugins'; // plugins +// import { borderBox1 } from '@jiaminghi/data-view' import './assets/icons'; // icon import './permission'; // permission control @@ -78,6 +79,7 @@ Vue.use(CodeBrickZj) Vue.use(directive); Vue.use(plugins); Vue.use(VueMeta); +// Vue.use(dataV) // Vue.use(hljs.vuePlugin); // bpmnProcessDesigner 需要引入 diff --git a/src/store/modules/websocket.js b/src/store/modules/websocket.js index 27a0782c..7966e519 100644 --- a/src/store/modules/websocket.js +++ b/src/store/modules/websocket.js @@ -4,7 +4,7 @@ const state = { gasInfo:{},// 天然气流量图 sumGasInfo: {},// 天然气总量 - israKiln:[],// ISRA缺陷检测 + israKiln:[],// ISRA窑炉缺陷检测 material:[],// 原料 energyInfo: { elecQty1: '', @@ -14,11 +14,17 @@ const state = { energyWeekTrend:[], energyMonthTrend:[], energyYearTrend:[],// 能耗图 + energyMonitoring: [], // 能源监控 exhaustGasInfo:{}, // 烟气 gasChartDayTrend:{}, // 烟气 gasChartWeekTrend:{}, // 烟气 gasChartMonthTrend:{}, // 烟气 - gasChartYearTrend:{} // 烟气 + gasChartYearTrend:{}, // 烟气 + israDayStatistic: [],//缺陷统计 + israWeekStatistic: [],//缺陷统计 + israMonthStatistic: [],//缺陷统计 + israYearStatistic: [],//缺陷统计 + productline: [] // 产线产量及良品率 }; const mutations = { SET_FANFREQUENCYINFO: (state, fanFrequencyInfo) => { @@ -60,6 +66,9 @@ const mutations = { state.energyYearTrend = energyTrend.year } }, + SET_ENERGY_MONITORING: (state, energyMonitoring) => { + state.energyMonitoring = energyMonitoring + }, SET_EXHAUSTGASINFO: (state, exhaustGasInfo) => { state.exhaustGasInfo = exhaustGasInfo }, @@ -68,6 +77,15 @@ const mutations = { state.gasChartWeekTrend = exhaustGasChart.gasChartWeekTrend state.gasChartMonthTrend = exhaustGasChart.gasChartMonthTrend state.gasChartYearTrend = exhaustGasChart.gasChartYearTrend + }, + SET_DEFECTCHART: (state, israStatistic) => { + state.israDayStatistic = israStatistic.dayStatistic + state.israWeekStatistic = israStatistic.weekStatistic + state.israMonthStatistic = israStatistic.monthStatistic + state.israYearStatistic = israStatistic.yearStatistic + }, + SET_PRODUCTLINE: (state, productline) => { + state.productline = productline } }; const actions = { @@ -97,12 +115,21 @@ const actions = { setEnergyTrend({ commit }, energyTrend) { commit('SET_ENERGYTREND', energyTrend.payload) }, + setEnergyMonitoring({ commit }, energyMonitoring) { + commit('SET_ENERGY_MONITORING', energyMonitoring.payload) + }, setExhaustGasInfo({ commit }, exhaustGasInfo) { commit('SET_EXHAUSTGASINFO', exhaustGasInfo.payload) }, setExhaustGasChart({ commit }, exhaustGasChart) { commit('SET_EXHAUSTGASCHART', exhaustGasChart.payload) }, + setDefectChart({ commit }, israStatistic) { + commit('SET_DEFECTCHART', israStatistic.payload) + }, + setProductline({ commit }, productline) { + commit('SET_PRODUCTLINE', productline.payload) + }, }; export default { namespaced: true, diff --git a/src/views/databoard/assets/defectStatistics.png b/src/views/databoard/assets/defectStatistics.png new file mode 100644 index 0000000000000000000000000000000000000000..c65bd8496fb9b2ee94e1be8423e193aef364e6e5 GIT binary patch literal 558 zcmV+}0@3}6P)Px$=t)FDRA@u(nLSIxP!xvGiK(cApcIwTR&)_5HC8)K9qV&`$dD7eA z{`=}R)#1O<=w-=^6=MO2x@*@$2#-B-$KGbBuUx(MsgSDa2ShZ}R6NA1kum@18lveW z01=^juIGSYR8WGWbR;v zr}sV^u#Sy4rxyUsq!j;F^|xJ_z=BrXFv(mM4yR2XPlkPGt^`mu{g{Y^2Yd;o*uLUV zxE0`ph$e(jF(fIT8uRZmfDcwV-Y%wmxpV^BcC_54Z`10a~5L8yTZWUjM2b0{{R307*qoM6N<$g2kBkfdBvi literal 0 HcmV?d00001 diff --git a/src/views/databoard/assets/eqMonitor.png b/src/views/databoard/assets/eqMonitor.png new file mode 100644 index 0000000000000000000000000000000000000000..bb63e76244ef89183f325f57470726874fe4eec5 GIT binary patch literal 615 zcmV-t0+{`YP)Px%AxT6*R5(wilRr!oaTLeDuXnUXAr2-6Xi8|%#ssm|g+&(^QX`9TX(`rd;-Co= znz)#{F}Ucgp^3J2adQwx#nC@kH7YR?dr&1nbdaQ_-0y2zCAPh5wQ|$ld++=CecyY( z6Et})77DvI)~s=*5D_3i0R{L7$fKa{dypKGO(&^11!Fn$B+0uVdYYWK2W*atK}nQSTAY?E|*NF z5BslGViU&F35%Sjpc7yxh{5ezucr0S4ExNMKmq20A%7$(q8eSr4D$lXJ1v26WBI5> z>v{DQ!8g&gF{Na^^6lyFT}%a}Sb2}XHTPRvcnPwrEr)fj>)NsOA>Xs=;&My#AV+HR z|I~6FP}4`#!+mq(IrD~6yxus1{{YHqfosLG)DwW(j)4$d7GR1*!0FmJI;>ra!{4w@ za<3Dt5^KBVW}uc^j^+vnMOoRuiJkK94o@UCwC`*6%AJ3|+Fjf%9w%M4VYdSpQI^;3 zeJU}-d`xn*9dWZ-5t)^!k-sF6Nf0}72!TcL_D{ED_k%m`v!Vb1002ovPDHLkV1n>d B8Uz3U literal 0 HcmV?d00001 diff --git a/src/views/databoard/assets/goodRate.png b/src/views/databoard/assets/goodRate.png new file mode 100644 index 0000000000000000000000000000000000000000..847e9c0df11efaf7ede47458a8fc2df755a039c8 GIT binary patch literal 1496 zcmV;}1tPx)l1W5CRA@u(nOSTUbsWdP-`Oo-0f7(^+D@ZHKvLRS6Jrd)g9tuA@})1pfrE-RJXF*A(Xbno2(2J|I9a^7kY$~07(bX50DY^(f?JAHT6!f$szGWair-53ZYDt z$RHUK)ovIt-m44beV+KSM-LQ-n~p+yY8ael!~}uPnU*=Gva4tAJ;?y?5ct^ZbeNGS z2QW(TGdp0u)o%~D4eo3cg(^U-k(778gY3iK4UjwO$Cq}2d1Sybkl0u$8D}Fc^M$Ud zbH$M6`?Ryb7>PraQJpm*XHV7RZ0pZNj}m(0_|PFwrkAV7D|Qb^>sV4WQ>OOgTp7o z!YhKZ`+^~Pm}0ezaXajyiEb}_G$ca6(2%R*inhSG#q_v{o+xtUZ3IpflE4A%~@a9`T}+C_{1>0sgh@u96`4 ziN1~foxavITwJ7B>;pm1q#Ja`0lFO!9Tb+?f&6b0odzRKZ_3f9LkT>tn~@&qks;uw zf3z_@G&}E_`#l)BGF?u`8Lu^-3NqsWU4x6pM%&8!$bDZEZv4;@Hl_;9Yx{ix0QmK` zfVrZp2f~fJB`o(EU@E!$0zmS6+cFp21L%8^OciK8TWrgGy(d7V zWx1T#?*BW0d*MqWP*-F&^Z;;wT&#&S*GdWw2Slc}5+pa+mibBd;U+Oy_mF)n(!7Dd zyOJgk1!VXE7^Z>u?IQC)(&4Fhn3cyh>TI-SnIQMJV9{VsQo{m3Tmi5xOTJJjko$XI z2~GKnsqA!9ZnTYSA(f{yOAQu)gnJLV2V`hwVcwzSORr>zlmLke!ARrta8M3%rKGVb zO6=Qhf&4|TOmThVApi^el_y2uCjcR4XYZ<;G5My~@=XgMZnWZ5>-e_zwp9`;0L|^E zYd6_}{I}h~`wx_^JJ6Wn1yp&HBlIUQev8UtP(xIYKa9lI2W(HZ~f1RdUF yns<|R-C1rk5G5(Ec2mg>s)SM*y`Sw5JitHnGY(!i^mRx80000Px%&q+iL94}3}Vq$R9xyH z1Q&%aii3knOTiOVa8N{WbP`-nDmb*LHHnC*=%S6i{I8_x%}Y=IbBm^&Oo6=L<@ql8 zlm7^s{3T7EKN5h29n6u&$k4lM3hIymD;9o6;D-U@etT!zsho(4s`HU{z#b|erc!sk zk`u!?;&f*2{g(jUZmAdGCGX_qeBLrICjc`Q2sJ`EGClmFe3X=pRewUYo4{Vr5dxl2 zjHlCj;b_OU%$=ObWYCU;0uZ z0_b*2-vPD;4PLX8vAkuj4C+H0pl9U$T8^hu${3#*+?x4Z4cP4#-$2k3H2Aa~QOR4` zP1U!vF=YAFRDb)1k2-$q0vvP89h0ISlh|Bqxjc6)bGwdnzZ$zxdP_1}TX4Ki)7Up? zWrpi~DR_sm3#FSRPt2+s1yF;KTTYjGG9*Cp0f__i0GI&q$!~Ra^n|Pfn3{_vc<6Lx z4@L^0lSot=NdN%Yg6mvw9_1}_zu)9^^md^* zM$Vrrv2*}P02XaVLpmT3R}A#&jD%ke6$c0`i+Kn9rWITt(+&hr$ggDrP_5XKJIDZx z!oXR-LOw;dTN)v_B>`AixIcHG**hS31(CUbXg;UJTdr^$ zU|Y;16luzy&XRLrsh$H3o1s`nsQPP^t*JeMDJrTLROfW;;{phEv1JdHFH)%s3BXJR z>Rv7WevpN|nfvD*fZzjwyv_*xT_d|d?$EK1We0QuN2N&sY6n^A3dz$^Rn?Cl5xMGg znPMn8hp+n`{WWNY@0yO+25L_#Y#Iu%F>7IHII_d%hPogoF2|#1&ym*wK2|L6< Tl#Yqc00000NkvXXu0mjfGR0wT literal 0 HcmV?d00001 diff --git a/src/views/databoard/components/Container.vue b/src/views/databoard/components/Container.vue index 36a8742e..e86c92e5 100644 --- a/src/views/databoard/components/Container.vue +++ b/src/views/databoard/components/Container.vue @@ -55,6 +55,24 @@ export default { return require('../assets/msg.png'); case '烟气处理': return require('../assets/gas.png'); + case '产线缺陷统计': + return require('../assets/defectStatistics.png'); + case '产线当日缺陷分类': + return require('../assets/check.png'); + case '本日生产良品率': + return require('../assets/goodRate.png'); + case '订单完成情况': + return require('../assets/order.png'); + case '设备报警': + return require('../assets/goodRate.png'); + case '各工序缺陷汇总': + return require('../assets/check.png'); + case '能源监控': + return require('../assets/defectStatistics.png'); + case '产线产量及良品率': + return require('../assets/order.png'); + case '工单监控': + return require('../assets/eqMonitor.png'); } }, }, diff --git a/src/views/databoard/components/DefectChart.vue b/src/views/databoard/components/DefectChart.vue new file mode 100644 index 00000000..f10647b4 --- /dev/null +++ b/src/views/databoard/components/DefectChart.vue @@ -0,0 +1,216 @@ + + + + \ No newline at end of file diff --git a/src/views/databoard/components/DefectClassChart.vue b/src/views/databoard/components/DefectClassChart.vue new file mode 100644 index 00000000..a1d4a9a7 --- /dev/null +++ b/src/views/databoard/components/DefectClassChart.vue @@ -0,0 +1,170 @@ + + + + \ No newline at end of file diff --git a/src/views/databoard/components/EnergeMonitoringChart.vue b/src/views/databoard/components/EnergeMonitoringChart.vue new file mode 100644 index 00000000..c845341d --- /dev/null +++ b/src/views/databoard/components/EnergeMonitoringChart.vue @@ -0,0 +1,157 @@ + + + + \ No newline at end of file diff --git a/src/views/databoard/components/GasChart.vue b/src/views/databoard/components/GasChart.vue index 3a7b46f9..87445833 100644 --- a/src/views/databoard/components/GasChart.vue +++ b/src/views/databoard/components/GasChart.vue @@ -51,27 +51,34 @@ export default { } }, watch: { - energyWeekTrend: {// 监听时间变化,更新图 + energyWeekTrend: {// 监听周电能,更新图 handler(newVal, oldVal) { if (this.chartTime === '周' && this.chartType === '电耗能') { this.updateChart() } } }, - energyMonthTrend: {// 监听时间变化,更新图 + energyMonthTrend: {// 监听月电能,更新图 handler(newVal, oldVal) { if (this.chartTime === '月' && this.chartType === '电耗能') { this.updateChart() } } }, - energyYearTrend: {// 监听时间变化,更新图 + energyYearTrend: {// 监听年电能,更新图 handler(newVal, oldVal) { if (this.chartTime === '年' && this.chartType === '电耗能') { this.updateChart() } } }, + gasChartMsg: {// 监听天然气,更新图 + handler(newVal, oldVal) { + if (this.chartType === '天然气I' || this.chartType === '天然气II') { + this.updateChart() + } + } + }, chartTime: {// 监听时间变化,更新图 handler(newVal, oldVal) { this.updateChart() @@ -114,33 +121,27 @@ export default { break; } case '天然气I':{ - yData = this.gasChartMsg.hisSumGas1 || [] + if (this.chartTime === '周') { + yData = this.gasChartMsg.hisSumGas1For7Day || [] + }else if(this.chartTime === '月') { + yData = this.gasChartMsg.sumGas1ForMonth || [] + }else{ + yData = this.gasChartMsg.sumGas1ForYear || [] + } gasName = '天然气I' - xData = Array(7) - .fill(1) - .map((_, index) => { - const today = new Date(); - const dtimestamp = today - (index+1) * 24 * 60 * 60 * 1000; - return `${new Date(dtimestamp).getMonth() + 1}.${new Date( - dtimestamp - ).getDate()}`; - }) - .reverse() + xData = this.getXdata() break; } default: gasName = '天然气II' - yData = this.gasChartMsg.hisSumGas2 || [] - xData = Array(7) - .fill(1) - .map((_, index) => { - const today = new Date(); - const dtimestamp = today - (index+1) * 24 * 60 * 60 * 1000; - return `${new Date(dtimestamp).getMonth() + 1}.${new Date( - dtimestamp - ).getDate()}`; - }) - .reverse() + if (this.chartTime === '周') { + yData = this.gasChartMsg.hisSumGas2For7Day || [] + }else if(this.chartTime === '月') { + yData = this.gasChartMsg.sumGas2ForMonth || [] + }else{ + yData = this.gasChartMsg.sumGas2ForYear || [] + } + xData = this.getXdata() } if (yData.length == 0) { seriesData = [] @@ -177,7 +178,7 @@ export default { this.chart = echarts.init(this.$el); var option = { color: colors, - grid: { top: 32, right: 12, bottom: 20, left: 48 }, + grid: { top: 32, right: 12, bottom: 20, left: 60 }, xAxis: { type: 'category', data: xData, @@ -223,6 +224,40 @@ export default { }, } option && this.chart.setOption(option) + }, + getXdata() { + const today = new Date(); + const currentYear = today.getFullYear(); + const currentMonth = today.getMonth() + 1; + let days = 30; + if (this.chartTime === '周') { + return Array(7) + .fill(1) + .map((_, index) => { + const today = new Date(); + const dtimestamp = today - (index+1) * 24 * 60 * 60 * 1000; + return `${new Date(dtimestamp).getMonth() + 1}.${new Date( + dtimestamp + ).getDate()}`;}).reverse() + }else if (this.chartTime == "月") { + if (currentMonth in [1, 3, 5, 7, 8, 10, 12]) { + days = 31; + } else if (currentMonth == 2) { + days = this.isLeapYear(currentYear) ? 29 : 28; + } + return Array(days) + .fill(1) + .map((_, index) => { + return `${currentMonth}.${days - index}`;}).reverse() + } else { + return Array(12) + .fill(1) + .map((_, index) => { + return `${currentYear}.${12 - index}`;}).reverse() + } + }, + isLeapYear(year) { + return year % 400 == 0 || (year % 4 == 0 && year % 100 != 0); } }, }; diff --git a/src/views/databoard/components/NumRateChart.vue b/src/views/databoard/components/NumRateChart.vue new file mode 100644 index 00000000..f8d4c00c --- /dev/null +++ b/src/views/databoard/components/NumRateChart.vue @@ -0,0 +1,204 @@ + + + + \ No newline at end of file diff --git a/src/views/databoard/deepProcessing/BottomTwo.vue b/src/views/databoard/deepProcessing/BottomTwo.vue index d7dda8dc..8d3f5ccb 100644 --- a/src/views/databoard/deepProcessing/BottomTwo.vue +++ b/src/views/databoard/deepProcessing/BottomTwo.vue @@ -1,22 +1,34 @@ \ No newline at end of file diff --git a/src/views/databoard/deepProcessing/EnergyMonitoring.vue b/src/views/databoard/deepProcessing/EnergyMonitoring.vue new file mode 100644 index 00000000..678250a0 --- /dev/null +++ b/src/views/databoard/deepProcessing/EnergyMonitoring.vue @@ -0,0 +1,30 @@ + + + \ No newline at end of file diff --git a/src/views/databoard/deepProcessing/OrderStatus.vue b/src/views/databoard/deepProcessing/EqAlarm.vue similarity index 65% rename from src/views/databoard/deepProcessing/OrderStatus.vue rename to src/views/databoard/deepProcessing/EqAlarm.vue index 4021eda7..ef7be248 100644 --- a/src/views/databoard/deepProcessing/OrderStatus.vue +++ b/src/views/databoard/deepProcessing/EqAlarm.vue @@ -1,14 +1,14 @@ \ No newline at end of file diff --git a/src/views/databoard/deepProcessing/NumRate.vue b/src/views/databoard/deepProcessing/NumRate.vue new file mode 100644 index 00000000..7718f79b --- /dev/null +++ b/src/views/databoard/deepProcessing/NumRate.vue @@ -0,0 +1,30 @@ + + + \ No newline at end of file diff --git a/src/views/databoard/deepProcessing/TopThree.vue b/src/views/databoard/deepProcessing/TopThree.vue index 8caf0354..e3cfa8d6 100644 --- a/src/views/databoard/deepProcessing/TopThree.vue +++ b/src/views/databoard/deepProcessing/TopThree.vue @@ -1,22 +1,44 @@ \ No newline at end of file diff --git a/src/views/databoard/deepProcessing/index.vue b/src/views/databoard/deepProcessing/index.vue index 2515dd91..f2cdefcf 100644 --- a/src/views/databoard/deepProcessing/index.vue +++ b/src/views/databoard/deepProcessing/index.vue @@ -18,18 +18,18 @@ " :style="{transform:'scale('+scaleNum+')'}"> - + + + -
@@ -38,7 +38,7 @@
-
+
--> diff --git a/src/views/databoard/kiln/EnergeCost.vue b/src/views/databoard/kiln/EnergeCost.vue index c3003b2a..b152d828 100644 --- a/src/views/databoard/kiln/EnergeCost.vue +++ b/src/views/databoard/kiln/EnergeCost.vue @@ -76,28 +76,30 @@ export default { // 切换能源 toggleType(val) { console.log('能源' + val) - if (val === '天然气I' || val === '天然气II') { - if (this.chartTime === '周') { - this.chartType = val - } else { - this.$message.warning('暂无数据') - } - }else { - this.chartType = val - } + this.chartType = val + // if (val === '天然气I' || val === '天然气II') { + // if (this.chartTime === '周') { + // this.chartType = val + // } else { + // this.$message.warning('暂无数据') + // } + // }else { + // this.chartType = val + // } }, // 切换时间 toggleDate(val) { console.log('时间' + val) - if (val === '月' || val === '年') { - if (this.chartType === '电耗能') { - this.chartTime = val - } else { - this.$message.warning('暂无数据') - } - }else{ - this.chartTime = val - } + this.chartTime = val + // if (val === '月' || val === '年') { + // if (this.chartType === '电耗能') { + // this.chartTime = val + // } else { + // this.$message.warning('暂无数据') + // } + // }else{ + // this.chartTime = val + // } } }, }; diff --git a/src/views/databoard/kiln/GasHandle.vue b/src/views/databoard/kiln/GasHandle.vue index 39c47a98..64750686 100644 --- a/src/views/databoard/kiln/GasHandle.vue +++ b/src/views/databoard/kiln/GasHandle.vue @@ -23,7 +23,7 @@ "> 氧气含量 - {{exhaustGasInfo.O2_float}}% + {{exhaustGasInfo?.O2_float ? (exhaustGasInfo?.O2_float).toFixed(2): ''}}%
一氧化氮

排放浓度

- {{exhaustGasInfo.NOX_float}}mg/m³ + {{exhaustGasInfo?.NOX_float ? (exhaustGasInfo?.NOX_float).toFixed(2):''}}mg/m³
@@ -54,7 +54,7 @@

二氧化硫

排放浓度

- {{exhaustGasInfo.SO2_float}}mg/m³ + {{exhaustGasInfo?.SO2_float ? (exhaustGasInfo?.SO2_float).toFixed(2): ''}}mg/m³
@@ -69,7 +69,7 @@ "> 颗粒物浓度 - {{exhaustGasInfo.dust_float}}mg/m³ + {{exhaustGasInfo?.dust_float ? (exhaustGasInfo?.dust_float).toFixed(2) : ''}}mg/m³ diff --git a/src/views/databoard/wholePlant/DefectClass.vue b/src/views/databoard/wholePlant/DefectClass.vue new file mode 100644 index 00000000..28546c7f --- /dev/null +++ b/src/views/databoard/wholePlant/DefectClass.vue @@ -0,0 +1,38 @@ + + + \ No newline at end of file diff --git a/src/views/databoard/wholePlant/DefectStatistics.vue b/src/views/databoard/wholePlant/DefectStatistics.vue index 64e2a161..cc96c75c 100644 --- a/src/views/databoard/wholePlant/DefectStatistics.vue +++ b/src/views/databoard/wholePlant/DefectStatistics.vue @@ -2,16 +2,19 @@
- - +
+ +
+