From d6803b83a827a62fa29737c31104c3ee9bc194d8 Mon Sep 17 00:00:00 2001 From: zhuzhuanzhuan Date: 星期一, 08 四月 2024 10:18:41 +0800 Subject: [PATCH] 1、全局菜单栏新增点击父级菜单标题后在导航栏展开父级所有下一级菜单功能 2、登录页面按照新需求调整整体布局及样式 3、优化首页看板页面图表视图 --- src/views/dashboard/WorkshopSectionSignage.vue | 324 +++++++++++++++++++++++++---------------------------- 1 files changed, 154 insertions(+), 170 deletions(-) diff --git a/src/views/dashboard/WorkshopSectionSignage.vue b/src/views/dashboard/WorkshopSectionSignage.vue index 8c9094f..e5bf1e1 100644 --- a/src/views/dashboard/WorkshopSectionSignage.vue +++ b/src/views/dashboard/WorkshopSectionSignage.vue @@ -5,15 +5,16 @@ <div class="back-nav" @click="$emit('backToLastSignage','BranchFactory')" v-if="userType>=3"> <dv-decoration-7>涓婁竴绾�</dv-decoration-7> </div> - <dv-border-box-9 style="padding: 15px"> + + <dv-border-box-9 style="padding: 15px 15px 0"> <div id="tech_condition_chart" style="width:100%;height: 240px;"></div> <div id="warranty_malfunction_chart" style="width:100%;height: 240px;"></div> - <div style="display: flex;"> - - <div style="flex:0.5;display: flex;flex-direction:column;align-items: center"> - <dv-decoration-11 style="width:90%;height:60px;color: #ccc;font-size: 20px">涓変繚璁″垝</dv-decoration-11> + <div> + <div style="display: flex;flex-direction:column;align-items: center"> + <dv-decoration-11 style="width:45%;height:60px;color: #fff;font-size: 20px;align-self: flex-start">涓変繚璁″垝 + </dv-decoration-11> <div class="support-plan-container"> - <div class="support-plan-item" style="background:#67C23A"> + <div class="support-plan-item" style="background:#5FE0AF"> <div>涓変繚鏈湀璁″垝</div> <div class="plan-value-container"> <div class="plan-value">{{thisMonthMaintenancePlanNum}}</div> @@ -27,24 +28,24 @@ <div>鍙�</div> </div> </div> - <div class="support-plan-item" style="background:#E6A23C"> + <div class="support-plan-item" style="background:#FCAA29"> <div>寤舵湡</div> <div class="plan-value-container"> - <div class="plan-value">{{nextMonthMaintenancePlanNum}}</div> + <div class="plan-value">{{maintenanceExtensionNum}}</div> <div>鍙�</div> </div> </div> <div class="support-plan-item" style="background:#F56C6C"> <div>瓒呮湡</div> <div class="plan-value-container"> - <div class="plan-value">{{nextNextMonthMaintenancePlanNum}}</div> + <div class="plan-value">{{maintenanceOverdueNum}}</div> <div>鍙�</div> </div> </div> - <div class="support-plan-item" style="background:#719D8E"> + <div class="support-plan-item" style="background:#D6BC52"> <div>涓嬫湀璁″垝</div> <div class="plan-value-container"> - <div class="plan-value">{{nextNextMonthMaintenancePlanNum}}</div> + <div class="plan-value">{{nextMonthMaintenancePlanNum}}</div> <div>鍙�</div> </div> </div> @@ -58,8 +59,12 @@ </div> </div> - <div style="flex:0.5;display: flex;justify-content: center"> - <dv-decoration-11 style="width:90%;height:60px;color: #ccc;font-size: 20px">浜屼繚璁″垝</dv-decoration-11> + <div style="display: flex;margin-top: 10px;justify-content: space-between;align-items: center;"> + <dv-decoration-11 style="width:45%;height:60px;font-size: 20px;color: #fff">浜屼繚璁″垝</dv-decoration-11> + <div + style="flex:1;text-align:center;font-size: 25px;color: #9BD890;overflow: hidden;text-overflow: ellipsis;white-space: nowrap"> + 2024骞�4鏈�1鏃ュぇ淇� + </div> </div> </div> </dv-border-box-9> @@ -71,11 +76,12 @@ <div id="line_chart" style="width:100%;height: 400px;"></div> </dv-border-box-9> </div> - <div style="width: 30%"> + + <div style="width: 30%" class="right-col"> <dv-border-box-9 style="padding: 15px"> - <a-form layout="inline" @keyup.enter.native="$emit('switchToNextSignage', { signageName: 'Equipment', productionCode: equipmentId })"> + <a-form layout="inline" + @keyup.enter.native="$emit('switchToNextSignage', { signageName: 'Equipment', productionCode: equipmentId })"> <a-form-item label="璁惧缂栧彿"> - <!--<a-input v-model="equipmentId" size="large"></a-input>--> <a-auto-complete v-model="equipmentId" placeholder="鍥炶溅閿煡璇�" @@ -85,10 +91,10 @@ </a-form-item> </a-form> <div style="display: flex;flex-wrap: wrap"> - <div id="gauge_chart1" style="width:50%;height: 200px;"></div> - <div id="gauge_chart2" style="width:50%;height: 200px;"></div> - <div id="gauge_chart3" style="width:50%;height: 200px;"></div> - <div id="gauge_chart4" style="width:50%;height: 200px;"></div> + <div id="gauge_chart1" class="gauge-chart"></div> + <div id="gauge_chart2" class="gauge-chart"></div> + <div id="gauge_chart3" class="gauge-chart"></div> + <div id="gauge_chart4" class="gauge-chart"></div> </div> <div id="bar_chart" style="width:100%;height: 330px;"></div> </dv-border-box-9> @@ -135,10 +141,12 @@ ], thisMonthMaintenancePlanNum: 0, thisMonthMaintenanceRealNum: 0, + maintenanceExtensionNum: 0, + maintenanceOverdueNum: 0, nextMonthMaintenancePlanNum: 0, nextNextMonthMaintenancePlanNum: 0, lineChart: '', - lineChartData: [], + lineChartData: {}, gaugeChart1: '', gaugeChart2: '', gaugeChart3: '', @@ -148,48 +156,7 @@ gaugeChartData3: [], gaugeChartData4: [], barChart: '', - barChartData: [ - { - name: '2640221', - value: 20 - }, - { - name: '2640222', - value: 40 - }, - { - name: '2640223', - value: 70 - }, - { - name: '2640224', - value: 30 - }, - { - name: '2640225', - value: 35 - }, - { - name: '2640226', - value: 80 - }, - { - name: '2640227', - value: 40 - }, - { - name: '12640220', - value: 60 - }, - { - name: '12640221', - value: 40 - }, - { - name: '12640222', - value: 35 - } - ], + barChartData: [], equipmentId: '' } }, @@ -197,11 +164,6 @@ window.addEventListener('resize', this.handleWindowResize) this.drawCharts() this.getChartDataByApi() - }, - activated() { - console.log('瑙﹀彂activated') - this.handleWindowResize() - if (this.barChartCarouselTime) clearInterval(this.barChartCarouselTime) }, beforeDestroy() { window.removeEventListener('resize', this.handleWindowResize) @@ -213,6 +175,8 @@ this.getWarrantyMalfunctionDataByApi() this.getRunningStateDataByApi() this.getMonthMaintenanceNumByApi() + this.getLineChartDataByApi() + this.getBarChartDataByApi() }, /* 璋冪敤鎺ュ彛鑾峰彇鎶�鏈姸鎬� */ @@ -245,15 +209,6 @@ }) }, - /* 璋冪敤鎺ュ彛鑾峰彇璁惧杩愯鐘舵�� */ - getRunningStateDataByApi() { - signageApi.getEquipmentStatusStatisticsApi(this.productionCode) - .then(res => { - if (res.success) this.runningStateData = res.result - this.drawRunningStateChart() - }) - }, - /* 璋冪敤鎺ュ彛鑾峰彇涓変繚璁″垝 */ getMonthMaintenanceNumByApi() { signageApi.getThisMonthMaintenanceListApi(this.productionCode) @@ -274,12 +229,45 @@ }) }, + /* 璋冪敤鎺ュ彛鑾峰彇璁惧杩愯鐘舵�� */ + getRunningStateDataByApi() { + signageApi.getEquipmentStatusStatisticsApi(this.productionCode) + .then(res => { + if (res.success) this.runningStateData = res.result.list + this.drawRunningStateChart(res.result.producitonId) + }) + }, + + /* 璋冪敤鎺ュ彛鑾峰彇鍓�7澶╁埄鐢ㄧ巼 */ + getLineChartDataByApi() { + signageApi.getEquipmentDayUtilizationStatisticsApi(this.productionCode) + .then(res => { + if (res.success) this.lineChartData = res.result + this.drawLineChart() + }) + }, + + getBarChartDataByApi() { + signageApi.getEquipmentOEEMonthStatisticsApi(this.productionCode) + .then(res => { + console.log('res=', res) + if (res.success) { + this.barChartData = res.result.map(item => { + return { + name: item.equipmentId, + value: item.overallEquipmentEfficiency + } + }) + } + this.drawBarChart() + }) + }, + /* 缁樺埗鍥捐〃姹囨�绘柟娉� */ drawCharts() { this.drawRunningStateChart() this.drawTechConditionChart() this.drawWarrantyMalfunctionChart() - this.drawLineChart() this.drawGaugeChart() this.drawBarChart() }, @@ -292,20 +280,19 @@ show: true, // 鏄惁鏄剧ず鏍囬锛岄粯璁や负true text: '鎶�鏈姸鎬�', // 涓绘爣棰樻枃鏈� x: 'left', // 鏍囬姘村钩瀹夋斁浣嶇疆锛屽彲閫夊�间负'left'銆�'center'銆�'right'鎴栧叿浣撶殑姘村钩鍧愭爣鍊� - y: 'top', // 鏍囬鍨傜洿瀹夋斁浣嶇疆锛屽彲閫夊�间负'top'銆�'bottom'銆�'center'鎴栧叿浣撶殑鍨傜洿鍧愭爣鍊� + y: this.userType >= 3 ? '25' : 'top', // 鏍囬鍨傜洿瀹夋斁浣嶇疆锛屽彲閫夊�间负'top'銆�'bottom'銆�'center'鎴栧叿浣撶殑鍨傜洿鍧愭爣鍊� textStyle: { // 涓绘爣棰樻枃鏈牱寮� fontSize: 18, fontWeight: 'normal', - color: '#00A8AC' + color: '#1AD8DE' } }, tooltip: { trigger: 'item', formatter: function(params) { - if (params.name !== '') { - return `${params.name}:${params.value}(${params.percent}%)` - } + return '<span style="font-weight:bolder;">' + params.name + '</span><br/>' + + '<span style="display:inline-block; width:10px; height:10px; border-radius:100px; margin-right:5px; background:' + params.color + '"></span>' + `${params.value}锛�${params.percent}%锛塦 } }, legend: { @@ -334,9 +321,9 @@ radius: ['40%', '60%'], center: ['50%', '50%'], color: [ - '#0AA012', - '#237E48', - '#757160' + '#0FC61A', + '#0DAF15', + '#8B8B8B' ], label: { position: 'outside', @@ -376,15 +363,14 @@ // 涓绘爣棰樻枃鏈牱寮� fontSize: 18, fontWeight: 'normal', - color: '#00A8AC' + color: '#1AD8DE' } }, tooltip: { trigger: 'item', formatter: function(params) { - if (params.name !== '') { - return `${params.name}:${params.value}(${params.percent}%)` - } + return '<span style="font-weight:bolder;">' + params.name + '</span><br/>' + + '<span style="display:inline-block; width:10px; height:10px; border-radius:100px; margin-right:5px; background:' + params.color + '"></span>' + `${params.value}锛�${params.percent}%锛塦 } }, legend: { @@ -413,9 +399,9 @@ radius: ['40%', '60%'], center: ['50%', '50%'], color: [ - '#00CED1', - '#B85B38', - '#A8985D' + '#24F2F5', + '#F56436', + '#FFFF40' ], label: { position: 'outside', @@ -443,7 +429,7 @@ }, /* 缁樺埗璁惧杩愯鐘舵�佺帿鐟伴ゼ鍥� */ - drawRunningStateChart() { + drawRunningStateChart(productionId) { this.runningStateChart = this.$echarts.init(document.getElementById('running_state_chart')) const option = { title: { @@ -455,15 +441,14 @@ // 涓绘爣棰樻枃鏈牱寮� fontSize: 18, fontWeight: 'normal', - color: '#00A8AC' + color: '#1AD8DE' } }, tooltip: { trigger: 'item', formatter: function(params) { - if (params.name !== '') { - return `${params.name}:${params.value}(${params.percent}%)` - } + return '<span style="font-weight:bolder;">' + params.name + '</span><br/>' + + '<span style="display:inline-block; width:10px; height:10px; border-radius:100px; margin-right:5px; background:' + params.color + '"></span>' + `${params.value}锛�${params.percent}%锛塦 } }, legend: { @@ -488,15 +473,15 @@ series: [ { type: 'pie', - // roseType: 'angle', // 鐜懓鍥� + roseType: 'angle', // 鐜懓鍥� // selectedMode: "single", radius: ['35%', '55%'], center: ['50%', '50%'], color: [ - '#686869', - '#AA6349', - '#968A5E', - '#5D975D' + '#8B8B8B', + '#F56436', + '#FFFF40', + '#0FC61A' ], label: { position: 'outside', @@ -521,28 +506,35 @@ ] } this.runningStateChart.setOption(option, true) + + this.runningStateChart.on('click', params => { + this.$router.push({ + name: 'mdc-base-DeviceBaseInfo', + params: { signageData: params.data, productionId } + }) + }) }, /* 缁樺埗鎶樼嚎鍥� */ drawLineChart() { this.lineChart = this.$echarts.init(document.getElementById('line_chart')) const newData = { - xAxis: ['3鏈�19鏃�', '3鏈�20鏃�', '3鏈�21鏃�', '3鏈�22鏃�', '3鏈�23鏃�', '3鏈�24鏃�', '3鏈�25鏃�'], + xAxis: this.lineChartData.dateList, yAxis: [ { name: '鍒╃敤鐜�', - value: [200, 600, 550, 360, 520, 520, 630, 780, 230, 420, 650, 700] + value: this.lineChartData.dataList.map(item => item.utilizationRate) }, { name: '寮�鍔ㄧ巼', - value: [230, 630, 440, 400, 740, 800, 600, 900, 700, 400, 700, 400] + value: this.lineChartData.dataList.map(item => item.startRate) }, { name: '寮�鏈虹巼', - value: [900, 700, 400, 700, 800, 605, 730, 600, 700, 900, 400, 605] + value: this.lineChartData.dataList.map(item => item.openRate) } ], - yAxisName: '鍓�7澶╁埄鐢ㄧ巼' + yAxisName: '鍓�7澶╁埄鐢ㄧ巼(%)' } let legendData = [] let seriesData = [] @@ -576,6 +568,17 @@ trigger: 'axis', axisPointer: { type: 'shadow' + }, + formatter: function(params) { + let result = '' + params.forEach((item, index) => { + let dom = `<span style="display:inline-block;width:10px;height:10px;border-radius:100px;margin-right:5px;background:${item.color}"></span>${item.seriesName}锛�${item.value}%` + if (index === 0) { + result = `<span style="font-weight:bolder;">${item.name}</span>` + } + result += '<br />' + dom + }) + return result } }, legend: { @@ -585,7 +588,7 @@ itemGap: 10, textStyle: { fontSize: 14, - color: '#ccc' + color: '#fff' } }, xAxis: { @@ -595,13 +598,13 @@ interval: 0, show: true, fontSize: 12, - color: '#50729A' + color: '#fff' // rotate: -30, }, axisLine: { show: true, lineStyle: { - color: '#50729A' + color: '#fff' } }, axisTick: { @@ -613,9 +616,9 @@ { name: newData.yAxisName, nameTextStyle: { - color: '#00A8AC', + color: '#1AD8DE', fontSize: 18, - padding: [0, 0, 0, 80] + padding: [0, 0, 0, 110] }, nameGap: 30, type: 'value', @@ -623,7 +626,7 @@ axisLine: { show: true, lineStyle: { - color: '#50729A' + color: '#fff' } }, axisTick: { @@ -632,7 +635,7 @@ splitLine: { show: false, lineStyle: { - color: '#3E4A82' + color: '#fff' } } }, @@ -642,12 +645,12 @@ splitNumber: 5, axisLabel: { show: true, - color: '#50729A' + color: '#fff' }, axisLine: { show: true, lineStyle: { - color: '#50729A' + color: '#fff' } }, axisTick: { @@ -656,12 +659,12 @@ splitLine: { show: false, lineStyle: { - color: '#3E4A82' + color: '#fff' } } } ], - series: seriesData, + series: seriesData // dataZoom: { // show: false, // startValue: 0, // 浠庡ご寮�濮嬨�� @@ -669,15 +672,6 @@ // } } this.lineChart.setOption(option, true) - // if (newData.xAxis.length <= 6) return - // this.lineChartCarouselTime = setInterval(() => { - // this.barChartData.push(this.barChartData.shift()) - // newData.xAxis.push(newData.xAxis.shift()) - // newData.yAxis.forEach(item => item.value.push(item.value.shift())) - // this.$nextTick(() => { - // this.lineChart.setOption(option, true) - // }) - // }, 3000) }, /* 缁樺埗浠〃鐩樺浘琛� */ @@ -692,12 +686,14 @@ // 涓绘爣棰樻枃鏈牱寮� fontSize: 18, fontWeight: 'normal', - color: '#00A8AC', + color: '#1AD8DE', fontWeight: 'bold' } }, tooltip: { - formatter: '{a} <br/>{b} : {c}%' + formatter: params => { + return params.seriesName + '锛�' + params.value + '%' + } }, grid: { left: '1%', @@ -707,7 +703,7 @@ }, series: [ { - name: '鍒╃敤鐜�', + name: '', type: 'gauge', radius: '80%', center: ['50%', '60%'], // 榛樿鍏ㄥ眬灞呬腑 @@ -743,9 +739,9 @@ axisLine: { lineStyle: { // 灞炴�ineStyle鎺у埗绾挎潯鏍峰紡 color: [ //琛ㄧ洏棰滆壊 - [0.3, '#E7781E'],//0-30%澶勭殑棰滆壊 - [0.7, '#C5C039'],//30%-60%澶勭殑棰滆壊 - [1, '#21C77F']//90%-100%澶勭殑棰滆壊 + [0.3, '#F56436'],//0-30%澶勭殑棰滆壊 + [0.7, '#FFFF40'],//30%-60%澶勭殑棰滆壊 + [1, '#0FC61A']//90%-100%澶勭殑棰滆壊 ], width: 15//琛ㄧ洏瀹藉害 } @@ -760,7 +756,7 @@ } } }, - data: [{ value: 100 }] + data: [] } ] } @@ -775,6 +771,8 @@ this.gaugeChart1 = this.$echarts.init(document.getElementById('gauge_chart1')) const option = Object.assign({}, opt) option.title.text = '鍒╃敤鐜�' + option.series[0].name = '鍒╃敤鐜�' + option.series[0].data = [52] this.gaugeChart1.setOption(option, true) }, @@ -783,6 +781,8 @@ this.gaugeChart2 = this.$echarts.init(document.getElementById('gauge_chart2')) const option = Object.assign({}, opt) option.title.text = '寮�鍔ㄧ巼' + option.series[0].name = '寮�鍔ㄧ巼' + option.series[0].data = [21] this.gaugeChart2.setOption(option, true) }, @@ -791,6 +791,8 @@ this.gaugeChart3 = this.$echarts.init(document.getElementById('gauge_chart3')) const option = Object.assign({}, opt) option.title.text = '寮�鏈虹巼' + option.series[0].name = '寮�鏈虹巼' + option.series[0].data = [74] this.gaugeChart3.setOption(option, true) }, @@ -799,6 +801,8 @@ this.gaugeChart4 = this.$echarts.init(document.getElementById('gauge_chart4')) const option = Object.assign({}, opt) option.title.text = 'OEE' + option.series[0].name = 'OEE' + option.series[0].data = [88] this.gaugeChart4.setOption(option, true) }, @@ -810,14 +814,14 @@ height: 260, title: { show: true, // 鏄惁鏄剧ず鏍囬锛岄粯璁や负true - text: '涓婁釜鏈圤EE', // 涓绘爣棰樻枃鏈� + text: '', // 涓绘爣棰樻枃鏈� x: 'center', // 鏍囬姘村钩瀹夋斁浣嶇疆锛屽彲閫夊�间负'left'銆�'center'銆�'right'鎴栧叿浣撶殑姘村钩鍧愭爣鍊� y: 'top', // 鏍囬鍨傜洿瀹夋斁浣嶇疆锛屽彲閫夊�间负'top'銆�'bottom'銆�'center'鎴栧叿浣撶殑鍨傜洿鍧愭爣鍊� textStyle: { // 涓绘爣棰樻枃鏈牱寮� fontSize: 18, fontWeight: 'normal', - color: '#00A8AC', + color: '#1AD8DE', fontWeight: 'bold' } }, @@ -847,7 +851,7 @@ data: xAisData, axisLine: { lineStyle: { - color: '#50729A' + color: '#fff' } }, axisLabel: { @@ -870,15 +874,15 @@ position: 'left', axisLabel: { formatter: '{value}', - color: '#50729A' + color: '#fff' }, axisTick: { - show: false + show: true }, axisLine: { show: true, lineStyle: { - color: '#50729A' + color: '#fff' } }, splitLine: { @@ -893,7 +897,7 @@ axisLine: { show: true, lineStyle: { - color: '#50729A' + color: '#fff' } } } @@ -903,7 +907,7 @@ data: this.barChartData, barWidth: '25%', itemStyle: { - color: '#129FC6', + color: '#17C1F0', barBorderRadius: [10, 10, 10, 10] }, label: { @@ -915,7 +919,7 @@ }, position: 'inside', textStyle: { - color: '#50729A', + color: '#fff', fontSize: 18 } } @@ -966,12 +970,6 @@ color: #fff; margin-bottom: 10px; - .workshop-nav { - width: 120px; - height: 40px; - font-size: 12px; - cursor: pointer; - } } .content-container { @@ -980,28 +978,17 @@ justify-content: space-between; .left-col { - .back-nav { - width: 100px; - height: 30px; - color: #eee; - position: absolute; - top: 50px; - left: 10px; - cursor: pointer; - z-index: 9999 - } - .support-plan-container { width: 100%; display: flex; justify-content: space-around; flex-wrap: wrap; color: #fff; - padding-top: 5px; + padding-top: 20px; .support-plan-item { border-radius: 3px; - width: 45%; + width: 30%; padding: 5px 10px; margin-bottom: 10px; @@ -1020,14 +1007,11 @@ } } - .middle-col { - .first-title { - color: #00A8AC; - font-size: 20px; - text-align: center; - font-weight: bold; + .right-col { + .gauge-chart { + width: 50%; + height: 200px; } - } } } -- Gitblit v1.9.3