From a3bc1499023bfcca59d823aefae8c546e36e7a45 Mon Sep 17 00:00:00 2001 From: zhangchunxia <746626068@qq.com> Date: 星期一, 06 五月 2024 10:04:00 +0800 Subject: [PATCH] 大屏改版代码提交 --- src/views/largeScreen/component/leftTop.vue | 4 src/views/largeScreen/component/rightTophubiao.vue | 191 ++++++++ src/components/echarts/echarsBar.vue | 7 src/api/largeScreen.js | 8 src/views/largeScreen/indexijmunai.vue | 248 ++++++++++ src/views/largeScreen/component/leftBottom.vue | 24 src/views/largeScreen/component/middleAreaBottom.vue | 98 ++++ src/utils/request.js | 2 src/views/largeScreen/component/rightMiddle.vue | 8 src/views/largeScreen/component/middleArea.vue | 390 ++++++++-------- src/views/largeScreen/component/rightBottom.vue | 4 src/views/largeScreen/component/middleAreajimunai.vue | 343 ++++++++++++++ config.js | 1 src/views/largeScreen/component/leftMiddle.vue | 14 src/views/largeScreen/index.vue | 28 15 files changed, 1,134 insertions(+), 236 deletions(-) diff --git a/config.js b/config.js index b4dbc6a..5e1bd1d 100644 --- a/config.js +++ b/config.js @@ -10,3 +10,4 @@ baseUrl = "http://xxxxt" } export default baseUrl; + \ No newline at end of file diff --git a/src/api/largeScreen.js b/src/api/largeScreen.js index de55c4f..d17d0e5 100644 --- a/src/api/largeScreen.js +++ b/src/api/largeScreen.js @@ -18,7 +18,7 @@ } // 鑾峰彇杩戜竴骞寸敤姘撮噺 export function getEchartData (data){ - return request({ + return request({ url: '/waterScreen/ScYearAmount!get.action', method: 'POST', data @@ -26,14 +26,14 @@ } // 鑾峰緱绱姘撮噺锛屾湰骞寸疮璁℃按閲忥紝鏄ㄦ棩姘撮噺 export function getScAmount (data){ - return request({ + return request({ url: '/waterScreen/ScAmount!get.action', - method: 'POST', + method: 'POST', data }) } // 鑾峰緱鎶ヨ淇℃伅 -export function getScAlarm (data){ +export function getScAlarm (data){ return request({ url: '/waterScreen/ScAlarm!get.action', method: 'POST', diff --git a/src/components/echarts/echarsBar.vue b/src/components/echarts/echarsBar.vue index e8f3138..417197e 100644 --- a/src/components/echarts/echarsBar.vue +++ b/src/components/echarts/echarsBar.vue @@ -50,7 +50,7 @@ } }, grid: { - left: '5%', + left: '5%', top: '10%', right: '10%', bottom: '3%', @@ -93,8 +93,7 @@ for (let i = 1; i < this.param.seriesCount; i++) { this.data.series[i] = { stack: this.param.seriesStack[i], - name: this.param.seriesName[i], - type: this.param.seriesType[i], + name: this.param.seriesName[i], data: this.param.seriesData[i], color: this.param.seriesColorData[i], yAxisIndex: this.param.yAxisIndexData[i] @@ -107,7 +106,7 @@ immediate: true, deep: true, handler(newVal, oldVal) { - if (this.chart) { + if (this.chart) { if (newVal) { if (newVal.chartType === 'transverse') { this.transverse() diff --git a/src/utils/request.js b/src/utils/request.js index ae3d1ed..b8feea3 100644 --- a/src/utils/request.js +++ b/src/utils/request.js @@ -25,7 +25,7 @@ // request.headers.common['X-HTY-Token'] = token // } return request -},(error) =>{ +},(error) =>{ console.error('request.js request error锛�--------------:', error) return Promise.reject(error); }) diff --git a/src/views/largeScreen/component/leftBottom.vue b/src/views/largeScreen/component/leftBottom.vue index 9a740f1..5bd8497 100644 --- a/src/views/largeScreen/component/leftBottom.vue +++ b/src/views/largeScreen/component/leftBottom.vue @@ -1,7 +1,7 @@ <template> <!-- 姹℃煋鐗╂秷鍑忛噺 --> <div class="panel"> - <div class="panel-header">鍦板尯姘寸鐞嗗憳</div> + <div class="panel-header">杩愯鐘舵��</div> <!-- <div> <line-chart :chart-data="chartData" :width="'100%'" :height="'22vh'"></line-chart> </div> --> @@ -23,18 +23,18 @@ data() { return { config: { - header: ['鍦板尯', '姘寸鍛樺鍚�', '鑱旂郴鏂瑰紡'], + header: ['鐢ㄦ按鎴�', '闃�闂ㄧ姸鎬�', '涓婃姤鏃堕棿'], data: [ - ['鎭板嫆浠�娴蜂埂', '寮犱笁', '13821200000'], - ['鎭板嫆浠�娴蜂埂', '鐜嬪ぇ娴�', '琛�2鍒�3'], - ['鎭板嫆浠�娴蜂埂', '鏉�', '琛�3鍒�3'], - ['鎭板嫆浠�娴蜂埂', '琛�4鍒�2', '13821200000'], - ['鎭板嫆浠�娴蜂埂', '琛�5鍒�2', '琛�5鍒�3'], - ['鎭板嫆浠�娴蜂埂', '琛�6鍒�2', '琛�6鍒�3'], - ['鎭板嫆浠�娴蜂埂', '琛�7鍒�2', '13821200000'], - ['鎭板嫆浠�娴蜂埂', '琛�8鍒�2', '琛�8鍒�3'], - ['鎭板嫆浠�娴蜂埂', '琛�9鍒�2', '琛�9鍒�3'], - ['鎭板嫆浠�娴蜂埂', '琛�10鍒�2', '琛�10鍒�3'] + ['浜屽彿浜曞甫闃�', '闃�鍏�', '2024-04-29 00:08:50'], + ['浜屽彿浜曞甫闃�', '闃�鍏�', '2024-04-29 00:07:54'], + ['浜屽彿浜曞甫闃�', '闃�鍏�', '2024-04-26 00:07:23'], + ['浜屽彿浜曞甫闃�', '闃�鍏�', '2024-04-29 00:05:47'], + ['涓�鍙蜂簳甯﹂榾', '闃�鍏�', '2024-04-29 00:04:48'], + ['涓�鍙蜂簳甯﹂榾', '闃�鍏�', '2024-04-29 00:03:47'], + ['涓�鍙蜂簳甯﹂榾', '闃�鍏�', '2024-04-29 00:02:47'], + ['涓�鍙蜂簳甯﹂榾', '闃�鍏�', '2024-04-29 00:01:49'], + ['涓�鍙蜂簳甯﹂榾', '闃�鍏�', '2024-04-29 00:02:05'], + ['浜屽彿浜曞甫闃�', '闃�鍏�', '2024-04-29 00:00:44'] ], headerBGC: '', oddRowBGC: '#0b283e', diff --git a/src/views/largeScreen/component/leftMiddle.vue b/src/views/largeScreen/component/leftMiddle.vue index 0a2eed8..ec3eb0f 100644 --- a/src/views/largeScreen/component/leftMiddle.vue +++ b/src/views/largeScreen/component/leftMiddle.vue @@ -1,7 +1,7 @@ <template> <!-- 姹℃煋鐗╂秷鍑忛噺 --> <div class="panel"> - <div class="panel-header">杩戜竴骞寸敤姘撮噺缁熻</div> + <div class="panel-header">杩戜竴骞村厖鍊奸噾棰�</div> <div> <line-chart :chart-data="chartData" :width="'100%'" :height="'22vh'"></line-chart> </div> @@ -13,18 +13,20 @@ export default { components: { // mainEcharts, - lineChart + lineChart, }, data() { return { datetiems: [], chartData: { + chartType:'portrait', time: [], + // time: ['2024-05','2024-04','2024-03','2024-02','2024-01','2023-12'], Data: [ { - // data: ['20','40','50','40','60','79','30','38','46','99','88','99'], - data: [], - type: 'line', + data: ['20','40','50','40','60','79','30','38','46','99','88','99'], + // data: [], + type: 'bar', // name: 'BOD', connectNulls: true, smooth: true, @@ -44,7 +46,7 @@ }, mounted() { this.getEchartData() - // this.chartData.time = this.getlastYearMonth().reverse() + this.chartData.time = this.getlastYearMonth().reverse() }, methods: { getEchartData() { diff --git a/src/views/largeScreen/component/leftTop.vue b/src/views/largeScreen/component/leftTop.vue index 1793ec3..b923df0 100644 --- a/src/views/largeScreen/component/leftTop.vue +++ b/src/views/largeScreen/component/leftTop.vue @@ -10,7 +10,7 @@ <div class="item-value"><span class="item-num">{{ item.count }}</span> {{ item.unit }}</div> </div> </div> --> - <div class="info-items flex-item"> + <!-- <div class="info-items flex-item"> <div> <div class="item-label" style="white-space: nowrap">鐢ㄦ按鎴锋暟</div> <div class="item-value bg-b"><span class="item-num">{{ infos.clientTotal }}</span></div> @@ -27,7 +27,7 @@ <div class="item-label" style="white-space: nowrap">浠婃棩鍏呭��</div> <div class="item-value bg-b"><span class="item-num">{{ infos.chargeTotal }}</span></div> </div> - </div> + </div> --> <div class="info-items flex-item"> <div> <div class="item-label" style="white-space: nowrap">鏄ㄦ棩涓婃姤</div> diff --git a/src/views/largeScreen/component/middleArea.vue b/src/views/largeScreen/component/middleArea.vue index 051fefb..ce9a353 100644 --- a/src/views/largeScreen/component/middleArea.vue +++ b/src/views/largeScreen/component/middleArea.vue @@ -28,72 +28,63 @@ <!-- <span class="unit-text">涓噈鲁</span> --> </div> </div> - <!-- <div v-for="(item,index) in processData" :key="index"> - <div class="num-title"> - <div><span class="high-text">{{ item.firstEle }}</span>{{ item.endEle }}</div> - - </div> - <div class="num-item"> - <span class="num-style color0" :class="[{ 'num-bg0': s !== '.' && index==0 },{ 'num-bg2': s !== '.' && index==1 },{'color2':index==1}]" v-for="(s, i) in item.count" :key="i">{{ s }}</span> - <span class="unit-text">{{ item.unit }}</span> - </div> - </div> --> </div> - <div> - <!-- <div id="echartMap" style="width: 500px; height: 500px"></div> --> - <!--鍦板浘--> - <div id="mapcontainer" ref="mapcontainer" style="width: 9rem; height: 80vh"></div> - <div class="map-infos"> - <dv-border-box-13> - <div class="map-title">鍚夋湪涔冨幙</div> - <div class="map-item"> - <div class="item-title">瀹夎姘磋〃鏁伴噺:</div> <div class="item-num">328涓�</div> - </div> - <div class="map-item"> - <div class="item-title">绱鐢ㄦ按閲�:</div> <div class="item-num">2943.8 m鲁</div> - </div> - <div class="map-item"> - <div class="item-title">褰撳墠娆犺垂鏁伴噺:</div><div class="item-num">3 鎴�</div> - </div> - </dv-border-box-13> - </div> + <div class="item-block height35"> + <dv-border-box-10> + <div class="echart-title">姘磋〃鐘舵��</div> + <div id="yibiaoEchart" :chart-data="chartData" style="height:90%; width:100%"></div> + </dv-border-box-10> + </div> + <div class="item-block"> + <dv-border-box-10> + <div class="echart-title">杩戜竴骞寸敤姘撮噺</div> + <left-middle-bottom style="height: 29vh"></left-middle-bottom> + </dv-border-box-10> </div> </div> </template> <script> import * as echarts from 'echarts' import echartsGL from 'echarts-gl' -import datajson from './jimunai' import { getScAmount } from '@/api/largeScreen' // import { getLargeScreenProcessInfo } from '@/cpx_sewage/api/largeScreen/largeScreen' +import leftMiddleBottom from './middleAreaBottom' + export default { + components: { + leftMiddleBottom + }, data() { return { amountTotal: [], // 浠婃棩绱澶勭悊閲� amountCurYearTotal: [], // 鏈勾绱澶勭悊閲� amountYesterdayTotal: [], // 鎬荤疮璁″鐞嗛噺 - myChart: null, stationData: [], processData: [], - data:[ - { name: '鎵樻櫘閾佺儹鍏嬩埂', centroid: [87.047533,47.875751],value: 100 }, - { name: '鎵樻櫘閾佺儹鍏嬮晣', centroid: [85.885448,47.439013],value: 100 }, - { name: '鍚夋湪涔冮晣', centroid: [85.882013,47.44893],value: 100 }, - { name: '鍠�灏斾氦涔�', centroid: [86.410528,47.201893],value: 200 }, - { name: '涔屾媺鏂壒闀�',centroid: [85.782084,47.669236],value: 100 }, - { name: '鎵樻柉鐗逛埂', centroid: [86.13412,47.285077],value: 100}, - { name: '鎭板嫆浠�娴蜂埂', centroid: [86.153288,47.535675],value: 100 }, - { name: '鍒柉閾佺儹鍏嬩埂',centroid: [85.88913,47.309702],value: 100 }, - { name: '鍏靛洟涓�鍏叚鍥�', centroid: [85.678458,47.556221],value: 100 } - // 鎵樻櫘閾佺儹鍏嬮晣銆佸悏鏈ㄤ箖闀囥�佸杸灏斾氦涔°�佹墭鏂壒涔°�佸叺鍥竴鍏叚鍥€�佸埆鏂搧鐑厠涔°�佹伆鍕掍粈娴蜂埂銆佹墭鏅搧鐑厠涔� - ] + chart:null, + chartData:{ + data: [80, 15, 5, 10], + nameList: ['鍦ㄧ嚎', '绂荤嚎', '寮傚父', '鏈笂鎶�'], + newData:[] + }, + // newData: chartData.data.map((item, idx) => { + // return { + // value: item, + // name: '甯堣祫鍔涢噺', + // unit: 'm虏', + // } + // }) } }, created() { this.getScAmount() - // setTimeout(this.initChart, 5000) - // this.initChart() - // this.totalNum = (+this.baseInfos.totalProcess / 10000).toFixed(2) + this.chartData.newData = this.chartData.data.map(item => { + return { + value: item, + // name: '姘磋〃鐘舵��', + unit:'%', + } + }) }, props: { baseInfos: { @@ -102,13 +93,9 @@ } }, watch: { - - }, mounted() { - // this.getData() this.$nextTick(() => { - // this.getStationList() this.initCharts() }) }, @@ -128,129 +115,151 @@ } }) }, - initCharts() { - const charts = echarts.init(this.$refs['mapcontainer']) + setOptions({ newData, nameList } = {}) { const option = { - geo: { // 2D鍦板浘鍧愭爣绯� - show: false, // 涓嶆樉绀哄湴鍥撅紝鐢ㄤ簬涓哄姩鏁堟暎鐐规彁渚�2D鍦板浘鍧愭爣绯� - map: 'centerMap', - roam: false, // 绂佺敤缂╂斁銆佹嫋鎷� - layoutCenter: ['50%', '47%'], // 鍦板浘涓績浣嶇疆 - layoutSize: '90%', // 鎺у埗鍦板浘灏哄锛堝湴鍥剧殑瀹藉害鍜岄珮搴﹂兘浼氭敼鍙橈級 - aspectScale: 0.85, // 鎺у埗鍦板浘闀垮姣旓紙姝ゅ�艰秺灏忓湴鍥捐秺绐勶紝瓒婂ぇ鍦板浘瓒婂锛� - zlevel: 1, - }, - geo3D: { // 3D鍦板浘鍧愭爣绯� - show: true, // 鏄剧ず3D鍦板浘鐗堝潡 - map: "centerMap", - top: "-20", - regionHeight: 16, // 鍦板浘鐗堝潡鍘氬害 - label: { - show: true, - borderRadius: 0, - distanca: 0, - textStyle: { - fontSize: 14, - color: "#C23531", // 鍦板浘鍒濆鍖栧尯鍩熷瓧浣撻鑹� - borderWidth: 1, - borderColor: '#FFFF10', - } - }, - itemStyle: { - // 涓夌淮鍦扮悊鍧愭爣绯荤粍浠� 涓笁缁村浘褰㈢殑瑙嗚灞炴�э紝鍖呮嫭棰滆壊锛岄�忔槑搴︼紝鎻忚竟绛夈�� - color: "rgba(11,59,121,0.5)", // 鍦板浘鏉垮潡鐨勯鑹� - opacity: 1, // 鍥惧舰鐨勪笉閫忔槑搴� [ default: 1 ] - borderWidth: 2, // (鍦板浘鏉垮潡闂寸殑鍒嗛殧绾�)鍥惧舰鎻忚竟鐨勫搴︺�傚姞涓婃弿杈瑰悗鍙互鏇存竻鏅扮殑鍖哄垎姣忎釜鍖哄煙 [ default: 0 ] - borderColor: "#2FB5FA", // 鍥惧舰鎻忚竟鐨勯鑹层�俒 default: #333 ] - }, - emphasis: { - label: { - show: true, - color: "#fff000", - }, - itemStyle: { - color: "#146fd7", - opacity: 0.5, - }, - }, - light: { - // 鍏夌収闃村奖 - main: { - color: "#FFFFFF", // 鍏夌収棰滆壊 - intensity: 2, // 鍏夌収寮哄害 - shadowQuality: "light", // 闃村奖浜害 - shadow: true, // 鏄惁鏄剧ず闃村奖 - alpha: 50, - beta: 10, - }, - }, - viewControl: { - "projection": "perspective", - "autoRotate": false, - "distance": 208, // 鎺у埗鍦板浘鐗堝潡鐨勫ぇ灏� - "alpha": 72, // 鍦板浘鐗堝潡鍨傜洿鏂瑰悜鐨勮搴� - "beta": 2, // 鍦板浘鐗堝潡姘村钩鏂瑰悜鐨勮搴� - rotateSensitivity: 0, // 绂佺敤鏃嬭浆 - panSensitivity: 0, // 绂佺敤骞崇Щ - zoomSensitivity: 0, // 绂佺敤缂╂斁 - }, - zlevel: 2, - }, - series: [ - { // 鍔ㄦ晥鏁g偣鍥惧眰锛屼娇鐢�2D鍦板浘鍧愭爣绯� - type: 'effectScatter', - coordinateSystem: 'geo', - zlevel: 3, - rippleEffect: { //娑熸吉鐗规晥 - period: 4, //鍔ㄧ敾鏃堕棿锛屽�艰秺灏忛�熷害瓒婂揩 - brushType: 'stroke', //娉㈢汗缁樺埗鏂瑰紡 stroke, fill - scale: 10 //娉㈢汗鍦嗙幆鏈�澶ч檺鍒讹紝鍊艰秺澶ф尝绾硅秺澶� - }, - symbol: 'circle', - symbolSize: function (val) { - return (5 + val[2] * 5) / 150; //鍦嗙幆澶у皬 - }, - itemStyle: { - normal: { + grid: {}, + series: newData.map((item, idx) => { + if (idx === 0) { + return { + name: '', + type: 'gauge', + radius: '40%', // 琛ㄧ洏澶у皬 + splitNumber: 5, // 鍒诲害鏁伴噺 + data: [item], + center: [`${20 + idx * 20}%`, '40%'], + splitLine: { + show: false, + }, + progress: { show: true, - color: '#2FB5FA' - } - }, - data: [], - }, - ] - + }, + itemStyle: { + color: '#FF8C00', + }, + axisTick: { + show: false, + }, + axisLine: { + show: true, + lineStyle: { + width: 10, + color: [ + [item.value ? item.value / 100 : 0, '#FF8C00'], + [1, '#01A0FE'], + ], + }, + }, + axisLabel: { + show: true, + distance: -45, // 鍧愭爣杞存暟瀛椾綅缃� + color: '#888888', + }, + detail: { + offsetCenter: [0, '120%'], + fontWeight: 'bold', + formatter: function (value) { + return `{a|${value + item.unit}}\n{b|${nameList[idx]}}`; + }, + rich: { + a: { + color: '#01a0fe', + fontSize: 12, + }, + b: { + fontSize: 14, + color: '#888888', + }, + }, + }, + title: { + // 鍏朵綑灞炴�ч粯璁や娇鐢ㄥ叏灞�鏂囨湰鏍峰紡锛岃瑙乀EXTSTYLE + // fontWeight: 'bolder', + fontSize: 14, + color: '#1170b7', + padding: [0, 10, 0, 10], + offsetCenter: ['400%', '200%'], + // fontStyle: 'italic' + borderColor: 'red', + lineHeight: 30, + borderRadius: 16, + backgroundColor: 'rgba(17,112,183,0.3)', + }, + }; + }else{ + return { + name: '', + type: 'gauge', + radius: '40%', + splitNumber: 5, + data: [item], + center: [`${20 + idx * 20}%`, '40%'], + splitLine: { + show: false, + }, + progress: { + show: true, + }, + itemStyle: { + color: '#FF8C00', + }, + axisTick: { + show: false, + }, + axisLine: { + show: true, + lineStyle: { + width: 10, + color: [ + [item.value ? item.value / 100 : 0, '#FF8C00'], + [1, '#01A0FE'], + ], + }, + }, + axisLabel: { + show: true, + distance: -45, + color: '#888888', + }, + detail: { + offsetCenter: [0, '120%'], + fontWeight: 'bold', + formatter: function (value) { + return `{a|${value + item.unit}}\n{b|${nameList[idx]}}`; + }, + rich: { + a: { + color: '#01a0fe', + fontSize: 12, + }, + b: { + fontSize: 14, + color: '#888888', + }, + }, + }, + title: { + // 鍏朵綑灞炴�ч粯璁や娇鐢ㄥ叏灞�鏂囨湰鏍峰紡锛岃瑙乀EXTSTYLE + // fontWeight: 'bolder', + show:false, + fontSize: 14, + color: '#1170b7', + padding: [0, 10, 0, 10], + offsetCenter: ['0', '0%'], + // fontStyle: 'italic' + borderColor: 'red', + lineHeight: 30, + borderRadius: 16, + backgroundColor: 'rgba(17,112,183,0.3)', + }, + }; + } + }), } - var mapFeatures = this.data - console.log('mapFeatures',mapFeatures) - var geoCoordMap = {}; - mapFeatures.forEach(function (v) { - // 鍦板尯鍚嶇О - var name = v.name; - // 鍦板尯缁忕含搴� - geoCoordMap[name] = v.centroid; - }); - - var convertData = function (data) { - var res = []; - for (var i = 0; i < data.length; i++) { - var geoCoord = geoCoordMap[data[i].name]; - if (geoCoord) { - res.push({ - name: data[i].name, - value: geoCoord.concat(data[i].value) - }); - } - } - console.log(res) - return res; - }; - // alert(JSON.stringify(convertData(areaMapData))); - option.series[0].data = convertData(this.data); // 璁剧疆鍔ㄦ晥鏁g偣鏁版嵁 - // 鍦板浘娉ㄥ唽锛岀涓�涓弬鏁扮殑鍚嶅瓧蹇呴』鍜宱ption.geo.map涓�鑷� - echarts.registerMap('centerMap', datajson) - charts.setOption(option) - + this.chart.setOption(option) + }, + initCharts() { + this.chart = echarts.init(document.getElementById('yibiaoEchart')) + this.setOptions(this.chartData) } } } @@ -309,35 +318,32 @@ } } -.map-infos { - // border: 1px dashed #ddd; - width: 4.0rem; - position: absolute; - top: 1rem; - right: 0.5rem; - // margin-top: 0.5rem; - font-size: .2rem; - color: #d0cbcb; - } + .map-title { padding: 0.15rem; text-align: center; } -.map-item { - display: flex; - padding: 0.15rem; - font-size: .2rem; - align-items: center; - .item-title { - width: 50%; - font-size: 0.1rem; - letter-spacing: 2px; +.item-block { + width: 90%; + text-align: center; + height: 38vh; + margin: 0.35rem auto 0.5rem; + .panel .panel-header { + background-image: none !important; } - .item-num { - font-family: 'screen-font'; + .echart-title { + color: white; + font-size: 0.18rem; + text-align: left; + padding: 0.1rem; } } -.dv-border-box-13 { - padding: .2rem; +.height35 { + height: 31vh; } </style> +<style> +.dv-border-box-10 .dv-border-svg-container { + display: none +} +</style> \ No newline at end of file diff --git a/src/views/largeScreen/component/middleAreaBottom.vue b/src/views/largeScreen/component/middleAreaBottom.vue new file mode 100644 index 0000000..0e06908 --- /dev/null +++ b/src/views/largeScreen/component/middleAreaBottom.vue @@ -0,0 +1,98 @@ +<template> + <!-- 姹℃煋鐗╂秷鍑忛噺 --> + <div class="panel"> + <!-- <div class="panel-header">杩戜竴骞寸敤姘撮噺缁熻</div> --> + <div> + <line-chart :chart-data="chartData" :width="'100%'" :height="'29vh'"></line-chart> + </div> + </div> +</template> +<script> +import lineChart from '@/components/echarts/lineChart' +import { getEchartData } from '@/api/largeScreen' +export default { + components: { + // mainEcharts, + lineChart + }, + data() { + return { + datetiems: [], + chartData: { + time: [], + // time: ['2024-05','2024-04','2024-03','2024-02','2024-01','2023-12'], + Data: [ + { + data: ['20','40','50','40','60','79','30','38','46','99','88','99'], + // data: [], + type: 'line', + // name: 'BOD', + connectNulls: true, + smooth: true, + areaStyle: {} + } + ], + config: { + // name: ['BOD', 'TP', 'TN', 'NH3-N'], + color: ['#5470c6'], + textStyleColor: '#fff', + XlineColor: '#022C5A', + YlineColor: '#022C5A', + xRotate: 30 + } + } + } + }, + mounted() { + this.getEchartData() + this.chartData.time = this.getlastYearMonth().reverse() + }, + methods: { + getEchartData() { + getEchartData({orgTag: 'dy'}).then((res) => { + if (res.succ == 1) { + res.amounts.forEach(ele=>{ + this.chartData.time.push(ele.yyyyMm) + this.chartData.Data[0].data.push(ele.amount) + }) + } else { + this.$message({ + type: 'error', + message: res.message + }) + } + }) + }, + getlastYearMonth() { + // 1銆佸皝瑁呮柟娉� + var result = []; + for (var i = 0; i < 12; i++) { + var d = new Date(); + d.setDate(1); + d.setMonth(d.getMonth() - i-1); // 鑾峰彇涓婁釜鏈堝線鍓�12涓湀锛屾墍浠�-1 + var m = d.getMonth() + 1; + m = m < 10 ? "0" + m : m; //鍦ㄨ繖閲屽彲浠ヨ嚜瀹氫箟杈撳嚭鐨勬棩鏈熸牸寮� + result.push(d.getFullYear() + "-" + m); //result.push(d.getFullYear() + "骞�" + m + '鏈�'); + } + return result; // return 鍒涘缓濂界殑鏃ユ湡鏁扮粍 + } + } +} +</script> + +<style lang="scss" scoped> +// 鏍囬 +.info-title { + height: 4.4vh; + background: url('../../../image/screen/bg_title.png') no-repeat; + display: flex; + align-items: center; + color: #fff; + font-family: 'screen-font'; + margin-bottom: 2%; + .info-title-text { + padding-left: 2vw; + font-size: 1rem; + } +} +</style> diff --git a/src/views/largeScreen/component/middleAreajimunai.vue b/src/views/largeScreen/component/middleAreajimunai.vue new file mode 100644 index 0000000..051fefb --- /dev/null +++ b/src/views/largeScreen/component/middleAreajimunai.vue @@ -0,0 +1,343 @@ +<template> + <div style="position:relative"> + <div style="display: flex; justify-content: space-around; margin-bottom: 1vh"> + <div> + <div class="num-title"> + <div><span class="high-text">鎬�</span>绱鐢ㄦ按閲�</div> + </div> + <div class="num-item"> + <span class="num-style color0" :class="{ 'num-bg0': s !== '.' }" v-for="(s, i) in amountTotal" :key="i">{{ s }}</span> + <!-- <span class="unit-text">m鲁</span> --> + </div> + </div> + <div> + <div class="num-title"> + <div><span class="high-text">鏈�</span>骞村害绱鐢ㄦ按閲�</div> + </div> + <div class="num-item"> + <span v-for="(s, i) in amountCurYearTotal" :key="i" class="num-style color2" :class="{ 'num-bg2': s !== '.' }">{{ s }}</span> + <!-- <span class="unit-text">涓噈鲁</span> --> + </div> + </div> + <div> + <div class="num-title"> + <div><span class="high-text">鏄�</span>鏃ョ疮璁$敤姘撮噺</div> + </div> + <div class="num-item"> + <span v-for="(s, i) in amountYesterdayTotal" :key="i" class="num-style color2" :class="{ 'num-bg2': s !== '.' }">{{ s }}</span> + <!-- <span class="unit-text">涓噈鲁</span> --> + </div> + </div> + <!-- <div v-for="(item,index) in processData" :key="index"> + <div class="num-title"> + <div><span class="high-text">{{ item.firstEle }}</span>{{ item.endEle }}</div> + + </div> + <div class="num-item"> + <span class="num-style color0" :class="[{ 'num-bg0': s !== '.' && index==0 },{ 'num-bg2': s !== '.' && index==1 },{'color2':index==1}]" v-for="(s, i) in item.count" :key="i">{{ s }}</span> + <span class="unit-text">{{ item.unit }}</span> + </div> + </div> --> + </div> + <div> + <!-- <div id="echartMap" style="width: 500px; height: 500px"></div> --> + <!--鍦板浘--> + <div id="mapcontainer" ref="mapcontainer" style="width: 9rem; height: 80vh"></div> + <div class="map-infos"> + <dv-border-box-13> + <div class="map-title">鍚夋湪涔冨幙</div> + <div class="map-item"> + <div class="item-title">瀹夎姘磋〃鏁伴噺:</div> <div class="item-num">328涓�</div> + </div> + <div class="map-item"> + <div class="item-title">绱鐢ㄦ按閲�:</div> <div class="item-num">2943.8 m鲁</div> + </div> + <div class="map-item"> + <div class="item-title">褰撳墠娆犺垂鏁伴噺:</div><div class="item-num">3 鎴�</div> + </div> + </dv-border-box-13> + </div> + </div> + </div> +</template> +<script> +import * as echarts from 'echarts' +import echartsGL from 'echarts-gl' +import datajson from './jimunai' +import { getScAmount } from '@/api/largeScreen' +// import { getLargeScreenProcessInfo } from '@/cpx_sewage/api/largeScreen/largeScreen' +export default { + data() { + return { + amountTotal: [], // 浠婃棩绱澶勭悊閲� + amountCurYearTotal: [], // 鏈勾绱澶勭悊閲� + amountYesterdayTotal: [], // 鎬荤疮璁″鐞嗛噺 + myChart: null, + stationData: [], + processData: [], + data:[ + { name: '鎵樻櫘閾佺儹鍏嬩埂', centroid: [87.047533,47.875751],value: 100 }, + { name: '鎵樻櫘閾佺儹鍏嬮晣', centroid: [85.885448,47.439013],value: 100 }, + { name: '鍚夋湪涔冮晣', centroid: [85.882013,47.44893],value: 100 }, + { name: '鍠�灏斾氦涔�', centroid: [86.410528,47.201893],value: 200 }, + { name: '涔屾媺鏂壒闀�',centroid: [85.782084,47.669236],value: 100 }, + { name: '鎵樻柉鐗逛埂', centroid: [86.13412,47.285077],value: 100}, + { name: '鎭板嫆浠�娴蜂埂', centroid: [86.153288,47.535675],value: 100 }, + { name: '鍒柉閾佺儹鍏嬩埂',centroid: [85.88913,47.309702],value: 100 }, + { name: '鍏靛洟涓�鍏叚鍥�', centroid: [85.678458,47.556221],value: 100 } + // 鎵樻櫘閾佺儹鍏嬮晣銆佸悏鏈ㄤ箖闀囥�佸杸灏斾氦涔°�佹墭鏂壒涔°�佸叺鍥竴鍏叚鍥€�佸埆鏂搧鐑厠涔°�佹伆鍕掍粈娴蜂埂銆佹墭鏅搧鐑厠涔� + ] + } + }, + created() { + this.getScAmount() + // setTimeout(this.initChart, 5000) + // this.initChart() + // this.totalNum = (+this.baseInfos.totalProcess / 10000).toFixed(2) + }, + props: { + baseInfos: { + type: Object, + default: () => {} + } + }, + watch: { + + + }, + mounted() { + // this.getData() + this.$nextTick(() => { + // this.getStationList() + this.initCharts() + }) + }, + methods: { + getScAmount() { + const param = {"orgTag":"dy"} + getScAmount(param).then(res=>{ + if (res.succ == 1) { + this.amountTotal = res.amountTotal.toString().split("") + this.amountCurYearTotal = res.amountCurYearTotal.toString().split("") + this.amountYesterdayTotal = res.amountYesterdayTotal.toString().split("") + } else { + this.$message({ + type: 'error', + message: res.message + }) + } + }) + }, + initCharts() { + const charts = echarts.init(this.$refs['mapcontainer']) + const option = { + geo: { // 2D鍦板浘鍧愭爣绯� + show: false, // 涓嶆樉绀哄湴鍥撅紝鐢ㄤ簬涓哄姩鏁堟暎鐐规彁渚�2D鍦板浘鍧愭爣绯� + map: 'centerMap', + roam: false, // 绂佺敤缂╂斁銆佹嫋鎷� + layoutCenter: ['50%', '47%'], // 鍦板浘涓績浣嶇疆 + layoutSize: '90%', // 鎺у埗鍦板浘灏哄锛堝湴鍥剧殑瀹藉害鍜岄珮搴﹂兘浼氭敼鍙橈級 + aspectScale: 0.85, // 鎺у埗鍦板浘闀垮姣旓紙姝ゅ�艰秺灏忓湴鍥捐秺绐勶紝瓒婂ぇ鍦板浘瓒婂锛� + zlevel: 1, + }, + geo3D: { // 3D鍦板浘鍧愭爣绯� + show: true, // 鏄剧ず3D鍦板浘鐗堝潡 + map: "centerMap", + top: "-20", + regionHeight: 16, // 鍦板浘鐗堝潡鍘氬害 + label: { + show: true, + borderRadius: 0, + distanca: 0, + textStyle: { + fontSize: 14, + color: "#C23531", // 鍦板浘鍒濆鍖栧尯鍩熷瓧浣撻鑹� + borderWidth: 1, + borderColor: '#FFFF10', + } + }, + itemStyle: { + // 涓夌淮鍦扮悊鍧愭爣绯荤粍浠� 涓笁缁村浘褰㈢殑瑙嗚灞炴�э紝鍖呮嫭棰滆壊锛岄�忔槑搴︼紝鎻忚竟绛夈�� + color: "rgba(11,59,121,0.5)", // 鍦板浘鏉垮潡鐨勯鑹� + opacity: 1, // 鍥惧舰鐨勪笉閫忔槑搴� [ default: 1 ] + borderWidth: 2, // (鍦板浘鏉垮潡闂寸殑鍒嗛殧绾�)鍥惧舰鎻忚竟鐨勫搴︺�傚姞涓婃弿杈瑰悗鍙互鏇存竻鏅扮殑鍖哄垎姣忎釜鍖哄煙 [ default: 0 ] + borderColor: "#2FB5FA", // 鍥惧舰鎻忚竟鐨勯鑹层�俒 default: #333 ] + }, + emphasis: { + label: { + show: true, + color: "#fff000", + }, + itemStyle: { + color: "#146fd7", + opacity: 0.5, + }, + }, + light: { + // 鍏夌収闃村奖 + main: { + color: "#FFFFFF", // 鍏夌収棰滆壊 + intensity: 2, // 鍏夌収寮哄害 + shadowQuality: "light", // 闃村奖浜害 + shadow: true, // 鏄惁鏄剧ず闃村奖 + alpha: 50, + beta: 10, + }, + }, + viewControl: { + "projection": "perspective", + "autoRotate": false, + "distance": 208, // 鎺у埗鍦板浘鐗堝潡鐨勫ぇ灏� + "alpha": 72, // 鍦板浘鐗堝潡鍨傜洿鏂瑰悜鐨勮搴� + "beta": 2, // 鍦板浘鐗堝潡姘村钩鏂瑰悜鐨勮搴� + rotateSensitivity: 0, // 绂佺敤鏃嬭浆 + panSensitivity: 0, // 绂佺敤骞崇Щ + zoomSensitivity: 0, // 绂佺敤缂╂斁 + }, + zlevel: 2, + }, + series: [ + { // 鍔ㄦ晥鏁g偣鍥惧眰锛屼娇鐢�2D鍦板浘鍧愭爣绯� + type: 'effectScatter', + coordinateSystem: 'geo', + zlevel: 3, + rippleEffect: { //娑熸吉鐗规晥 + period: 4, //鍔ㄧ敾鏃堕棿锛屽�艰秺灏忛�熷害瓒婂揩 + brushType: 'stroke', //娉㈢汗缁樺埗鏂瑰紡 stroke, fill + scale: 10 //娉㈢汗鍦嗙幆鏈�澶ч檺鍒讹紝鍊艰秺澶ф尝绾硅秺澶� + }, + symbol: 'circle', + symbolSize: function (val) { + return (5 + val[2] * 5) / 150; //鍦嗙幆澶у皬 + }, + itemStyle: { + normal: { + show: true, + color: '#2FB5FA' + } + }, + data: [], + }, + ] + + } + var mapFeatures = this.data + console.log('mapFeatures',mapFeatures) + var geoCoordMap = {}; + mapFeatures.forEach(function (v) { + // 鍦板尯鍚嶇О + var name = v.name; + // 鍦板尯缁忕含搴� + geoCoordMap[name] = v.centroid; + }); + + var convertData = function (data) { + var res = []; + for (var i = 0; i < data.length; i++) { + var geoCoord = geoCoordMap[data[i].name]; + if (geoCoord) { + res.push({ + name: data[i].name, + value: geoCoord.concat(data[i].value) + }); + } + } + console.log(res) + return res; + }; + // alert(JSON.stringify(convertData(areaMapData))); + option.series[0].data = convertData(this.data); // 璁剧疆鍔ㄦ晥鏁g偣鏁版嵁 + // 鍦板浘娉ㄥ唽锛岀涓�涓弬鏁扮殑鍚嶅瓧蹇呴』鍜宱ption.geo.map涓�鑷� + echarts.registerMap('centerMap', datajson) + charts.setOption(option) + + } + } +} +</script> +<style lang="scss" scoped> +.num-title { + color: #fff; + font-family: 'screen-font'; + display: flex; + justify-content: space-between; + align-items: center; + font-size: 0.14rem; + .high-text { + font-size: 0.24rem; + margin-right: 0.05rem; + } + .unit-text { + font-size: 0.12rem; + font-family: 'element-icons'; + } +} + +.num-item { + display: flex; + // justify-content: space-between; + overflow: hidden; + align-items: flex-end; + .num-style { + font-size: 0.36rem; + font-family: 'screen-font'; + padding: 0.05rem; + background-size: 100% 100% !important; + } + .num-bg0 { + background: url('../../../image/screen/bg_num_blue.png') no-repeat; + + } + .num-bg1 { + background: url('../../../image/screen/bg_num_green.png') no-repeat; + } + .num-bg2 { + background: url('../../../image/screen/bg_num_cyan.png') no-repeat; + } + .color0 { + color: #36a8ff; + } + .color1 { + color: #00f170; + } + .color2 { + color: #04ddff; + } + .unit-text { + color: #fff; + margin-left: 5px; + } + +} +.map-infos { + // border: 1px dashed #ddd; + width: 4.0rem; + position: absolute; + top: 1rem; + right: 0.5rem; + // margin-top: 0.5rem; + font-size: .2rem; + color: #d0cbcb; + } +.map-title { + padding: 0.15rem; + text-align: center; +} +.map-item { + display: flex; + padding: 0.15rem; + font-size: .2rem; + align-items: center; + .item-title { + width: 50%; + font-size: 0.1rem; + letter-spacing: 2px; + } + .item-num { + font-family: 'screen-font'; + } +} +.dv-border-box-13 { + padding: .2rem; +} +</style> diff --git a/src/views/largeScreen/component/rightBottom.vue b/src/views/largeScreen/component/rightBottom.vue index 560d176..51daf69 100644 --- a/src/views/largeScreen/component/rightBottom.vue +++ b/src/views/largeScreen/component/rightBottom.vue @@ -5,8 +5,8 @@ 灏忕▼搴忎俊鎭� </div> <div class="img-container"> - <!-- <img class="img-items" src="../../../image/screen/xiaochengxuma.jpg" alt=""> --> - <img class="img-items" :src="wxMiniQrClientUrl" alt=""> + <img class="img-items" src="../../../image/screen/xiaochengxuma.jpg" alt=""> + <!-- <img class="img-items" :src="wxMiniQrClientUrl" alt=""> --> </div> </div> </template> diff --git a/src/views/largeScreen/component/rightMiddle.vue b/src/views/largeScreen/component/rightMiddle.vue index 7586d7b..a3b3839 100644 --- a/src/views/largeScreen/component/rightMiddle.vue +++ b/src/views/largeScreen/component/rightMiddle.vue @@ -6,20 +6,20 @@ </div> <!-- <line-chart :chart-data="chartData" :width="'100%'" :height="'22vh'"></line-chart> --> <div class="flex panel-body" style="flex-wrap: wrap;"> - <div class="info-items flex-item"> + <!-- <div class="info-items flex-item"> <div class="info-img"><img src="../../../image/screen/image_鍘曟墍.png" alt=""></div> <div> <div class="item-label" style="white-space: nowrap">48灏忔椂鏈敤姘�</div> <div class="item-value"><span class="item-num">{{ alarmInfo.no48AmountTotal }}</span></div> </div> - </div> - <div class="info-items flex-item"> + </div> --> + <!-- <div class="info-items flex-item"> <div class="info-img"><img src="../../../image/screen/image_姘磋川.png" alt=""></div> <div> <div class="item-label" style="white-space: nowrap">闃�闂ㄥ叧闂姤璀�</div> <div class="item-value"><span class="item-num">{{ alarmInfo.valveTotal }}</span></div> </div> - </div> + </div> --> <div class="info-items flex-item"> <div class="info-img"><img src="../../../image/screen/image_宸℃.png" alt=""></div> <div> diff --git a/src/views/largeScreen/component/rightTophubiao.vue b/src/views/largeScreen/component/rightTophubiao.vue new file mode 100644 index 0000000..92cb377 --- /dev/null +++ b/src/views/largeScreen/component/rightTophubiao.vue @@ -0,0 +1,191 @@ +<template> + <!-- 杩愯惀姒傚喌 --> + <div class="panel"> + <div class="panel-header">杩愮淮鏁版嵁</div> + <div> + <div> + <div class="num-title"> + <div><span class="high-text">鎬�</span>绱鐢ㄦ按閲�</div> + </div> + <div class="num-item"> + <span class="num-style color0" :class="{ 'num-bg0': s !== '.' }" v-for="(s, i) in amountTotal" :key="i">{{ s }}</span> + <!-- <span class="unit-text">m鲁</span> --> + </div> + </div> + <div> + <div class="num-title"> + <div><span class="high-text">鏈�</span>骞村害绱鐢ㄦ按閲�</div> + </div> + <div class="num-item"> + <span v-for="(s, i) in amountCurYearTotal" :key="i" class="num-style color2" :class="{ 'num-bg2': s !== '.' }">{{ s }}</span> + <!-- <span class="unit-text">涓噈鲁</span> --> + </div> + </div> + <div> + <div class="num-title"> + <div><span class="high-text">鏄�</span>鏃ョ疮璁$敤姘撮噺</div> + </div> + <div class="num-item"> + <span v-for="(s, i) in amountYesterdayTotal" :key="i" class="num-style color2" :class="{ 'num-bg2': s !== '.' }">{{ s }}</span> + <!-- <span class="unit-text">涓噈鲁</span> --> + </div> + </div> + </div> + </div> +</template> +<script> +import { getScAmount } from '@/api/largeScreen' +export default { + name: 'RightTop', + props: { + baseInfos: { + type: Object, + default: () => {} + } + }, + data() { + return { + devopsData: [] + } + }, + watch: { + baseInfos: { + handler(newValue) { + this.baseInfos = newValue + }, + immediate: true + } + }, + created() { + this.getScAmount() + }, + mounted() { + // this.getData() + }, + methods: { + getScAmount() { + const param = {"orgTag":"dy"} + getScAmount(param).then(res=>{ + if (res.succ == 1) { + this.amountTotal = res.amountTotal.toString().split("") + this.amountCurYearTotal = res.amountCurYearTotal.toString().split("") + this.amountYesterdayTotal = res.amountYesterdayTotal.toString().split("") + } else { + this.$message({ + type: 'error', + message: res.message + }) + } + }) + } + } +} +</script> +<style lang="scss" scoped> +.num-title { + color: #fff; + font-family: 'screen-font'; + display: flex; + justify-content: space-between; + align-items: center; + font-size: 0.14rem; + .high-text { + font-size: 0.24rem; + margin-right: 0.05rem; + } + .unit-text { + font-size: 0.12rem; + font-family: 'element-icons'; + } +} + +.num-item { + display: flex; + // justify-content: space-between; + overflow: hidden; + align-items: flex-end; + .num-style { + font-size: 0.36rem; + font-family: 'screen-font'; + padding: 0.05rem; + background-size: 100% 100% !important; + } + .num-bg0 { + background: url('../../../image/screen/bg_num_blue.png') no-repeat; + + } + .num-bg1 { + background: url('../../../image/screen/bg_num_green.png') no-repeat; + } + .num-bg2 { + background: url('../../../image/screen/bg_num_cyan.png') no-repeat; + } + .color0 { + color: #36a8ff; + } + .color1 { + color: #00f170; + } + .color2 { + color: #04ddff; + } + .unit-text { + color: #fff; + margin-left: 5px; + } + +} + .panel-body{ + justify-content: space-around; + } + .info-items-top { + width: 3.4rem; + margin-bottom: .3rem; + font-size: .14rem; + text-align: center; + .item-text { + margin-top: 0.2rem; + color: #fff; + } + } + + .info-items{ + width: 1.36rem; + margin-bottom: .1rem; + // display: flex; + // justify-content: space-between; + // align-items: center; + text-align: center; + font-size: .14rem; + .item-text { + margin-top: 0.3rem; + color: #fff; + } + .info-img { + width: .6rem; + height: .6rem; + img{ + width: 100%; + } + } + .item-label { + width: .64rem; + font-size: .14rem; + color: #fff; + } + .item-value { + font-size: .1rem; + color: #fff; + } + .item-num { + font-family: 'screen-font'; + font-size: .20rem; + } + } + .dv-decoration-9 { + color: #fff; + width: 1.36rem; + height: 0.26rem; + } + +</style> diff --git a/src/views/largeScreen/index.vue b/src/views/largeScreen/index.vue index 4c23435..80247b4 100644 --- a/src/views/largeScreen/index.vue +++ b/src/views/largeScreen/index.vue @@ -3,7 +3,8 @@ <div class="content-head"> <div class="content-titles"> <div class="img-container"> - <img :src="titleUrl" alt="鍚夋湪涔冨幙浜洪ギ椤圭洰鐩戞祴骞冲彴"> + <!-- <img :src="titleUrl" :alt="titleAlt"> --> + {{titleAlt}} </div> <!-- <img style="width: 100%" src="../../image/screen/image_head.png" alt="" /> --> @@ -22,9 +23,10 @@ <div class="content-body flex" style="padding: 0 0.1rem"> <!-- 宸︿晶鍐呭 --> <div class="flex-item" style="width: 4.8rem"> - <left-top :baseInfos="baseInfos" class="item-area" style="height: 24vh"></left-top> + <left-top :baseInfos="baseInfos" class="item-area" style="height: 29vh"></left-top> <left-middle class="item-area" style="height: 29vh"></left-middle> - <left-bottom class="item-area" style="height: 29vh"></left-bottom> + <!-- <left-bottom class="item-area" style="height: 29vh"></left-bottom> --> + <right-top :baseInfos="baseInfos" class="item-area" style="height: 24vh"></right-top> </div> <!-- 涓棿閮ㄥ垎 --> <div class="flex-main" style="width: 9.2rem"> @@ -32,9 +34,11 @@ </div> <!-- 鍙充晶鍐呭 --> <div class="flex-item" style="width: 4.8rem"> - <right-top :baseInfos="baseInfos" class="item-area" style="height: 24vh"></right-top> + <!-- <right-top :baseInfos="baseInfos" class="item-area" style="height: 24vh"></right-top> --> + <!-- <right-tophubiao :baseInfos="baseInfos" class="item-area" style="height: 24vh"></right-tophubiao> --> <right-middle class="item-area" style="height: 29vh"></right-middle> - <right-bottom :wxMiniQrClientUrl="wxMiniQrClientUrl" class="item-area" style="height: 29vh"></right-bottom> + <left-bottom class="item-area" style="height: 29vh"></left-bottom> + <right-bottom :wxMiniQrClientUrl="wxMiniQrClientUrl" class="item-area" style="height: 24vh"></right-bottom> </div> </div> </div> @@ -42,11 +46,13 @@ <script> import leftTop from './component/leftTop' import leftMiddle from './component/leftMiddle' -import leftBottom from './component/leftBottom' -import middleArea from './component/middleArea' +import leftBottom from './component/leftBottom.vue' import rightTop from './component/rightTop' +import middleArea from './component/middleArea' +import rightTophubiao from './component/rightTophubiao' import rightMiddle from './component/rightMiddle' import rightBottom from './component/rightBottom' + import './index.scss' import { getProjectInfo } from '@/api/largeScreen' @@ -59,8 +65,9 @@ leftTop, leftMiddle, leftBottom, - middleArea, rightTop, + middleArea, + rightTophubiao, rightMiddle, rightBottom }, @@ -90,6 +97,7 @@ fullScreen: false, baseInfos: {}, // 椤圭洰鍩烘湰淇℃伅&杩愯惀姒傚喌 titleUrl: '', + titleAlt: '', wxMiniQrClientUrl: '' // 灏忕▼搴忎俊鎭� } }, @@ -109,7 +117,6 @@ }, // 鍏ㄥ睆 toggleFullScreen() { - console.log(document.fullscreenElement) if (!document.fullscreenElement) { document.documentElement.requestFullscreen() } else { @@ -127,6 +134,9 @@ getProjectInfo() { getProjectInfo({orgTag: 'dy'}).then((res) => { if(res.succ==1){ + console.log('........', res) + + this.titleAlt = res.title this.titleUrl = res.wxMiniQrManageUrl || '' this.wxMiniQrClientUrl = res.wxMiniQrClientUrl || '' }else{ diff --git a/src/views/largeScreen/indexijmunai.vue b/src/views/largeScreen/indexijmunai.vue new file mode 100644 index 0000000..96dbcaa --- /dev/null +++ b/src/views/largeScreen/indexijmunai.vue @@ -0,0 +1,248 @@ +<template> + <div class="container"> + <div class="content-head"> + <div class="content-titles"> + <div class="img-container"> + <!-- <img :src="titleUrl" alt="鍚夋湪涔冨幙浜洪ギ椤圭洰鐩戞祴骞冲彴"> --> + 鍚夋湪涔冨幙浜洪ギ椤圭洰鐩戞祴骞冲彴 + </div> + + <!-- <img style="width: 100%" src="../../image/screen/image_head.png" alt="" /> --> + </div> + <div class="time-head"> + <div class="time-head-content"> + <span>{{ this.time }}</span> {{ this.date }} {{ this.week }} + </div> + </div> + <div class="icon-items"> + <div @click="toggleFullScreen" class="fullscreen"></div> + <!-- <div class="logout" @click="goBack"></div> --> + </div> + </div> + <!-- <div class="content-body flex" style="padding: 0 0.1rem; height: 100%"> --> + <div class="content-body flex" style="padding: 0 0.1rem"> + <!-- 宸︿晶鍐呭 --> + <div class="flex-item" style="width: 4.8rem"> + <left-top :baseInfos="baseInfos" class="item-area" style="height: 24vh"></left-top> + <left-middle class="item-area" style="height: 29vh"></left-middle> + <left-bottom class="item-area" style="height: 29vh"></left-bottom> + </div> + <!-- 涓棿閮ㄥ垎 --> + <div class="flex-main" style="width: 9.2rem"> + <middle-area :baseInfos="baseInfos"></middle-area> + </div> + <!-- 鍙充晶鍐呭 --> + <div class="flex-item" style="width: 4.8rem"> + <right-top :baseInfos="baseInfos" class="item-area" style="height: 24vh"></right-top> + <right-middle class="item-area" style="height: 29vh"></right-middle> + <right-bottom :wxMiniQrClientUrl="wxMiniQrClientUrl" class="item-area" style="height: 29vh"></right-bottom> + </div> + </div> + </div> +</template> +<script> +import leftTop from './component/leftTop' +import leftMiddle from './component/leftMiddle' +import leftBottom from './component/leftBottom' +import middleArea from './component/middleArea' +import rightTop from './component/rightTop' +import rightMiddle from './component/rightMiddle' +import rightBottom from './component/rightBottom' +import './index.scss' + +import { getProjectInfo } from '@/api/largeScreen' + +document.documentElement.style.fontSize = '20px' + +export default { + name: 'LargeScreen', + components: { + leftTop, + leftMiddle, + leftBottom, + middleArea, + rightTop, + rightMiddle, + rightBottom + }, + created() { + document.documentElement.style.fontSize = (window.innerWidth / 1920) * 100 + 'px' + // 12px => 0.12rem + // 200px => 2rem + // this.dateFormat() + this.timer = setInterval(() => { + this.dateFormat() + }, 1000) + this.getProjectInfo() + }, + beforeDestroy() { + document.documentElement.style.fontSize = this.originalFontSize + if (this.timer) { + clearInterval(this.timer) // 鍦╒ue瀹炰緥閿�姣佸墠锛屾竻闄ゆ垜浠殑瀹氭椂鍣� + } + }, + data() { + return { + originalFontSize: document.documentElement.style.fontSize, + timer: null, + time: '', + date: '', + week: '', + fullScreen: false, + baseInfos: {}, // 椤圭洰鍩烘湰淇℃伅&杩愯惀姒傚喌 + titleUrl: '', + wxMiniQrClientUrl: '' // 灏忕▼搴忎俊鎭� + } + }, + methods: { + dateFormat() { + let date = new Date() + let year = date.getFullYear() + let month = date.getMonth() + 1 < 10 ? '0' + (date.getMonth() + 1) : date.getMonth() + 1 + let day = date.getDate() < 10 ? '0' + date.getDate() : date.getDate() + let hours = date.getHours() < 10 ? '0' + date.getHours() : date.getHours() + let minutes = date.getMinutes() < 10 ? '0' + date.getMinutes() : date.getMinutes() + let seconds = date.getSeconds() < 10 ? '0' + date.getSeconds() : date.getSeconds() + + this.date = year + '-' + month + '-' + day + ' ' + this.time = hours + ':' + minutes + ':' + seconds + this.week = '鏄熸湡' + '鏃ヤ竴浜屼笁鍥涗簲鍏�'.charAt(date.getDay()) + }, + // 鍏ㄥ睆 + toggleFullScreen() { + console.log(document.fullscreenElement) + if (!document.fullscreenElement) { + document.documentElement.requestFullscreen() + } else { + if (document.exitFullscreen) { + document.exitFullscreen() + } + } + this.fullScreen = !this.fullScreen + }, + // 閫�鍑� + goBack() { + this.$router.go(-1) + }, + // 鑾峰彇椤圭洰淇℃伅 + getProjectInfo() { + getProjectInfo({orgTag: 'dy'}).then((res) => { + if(res.succ==1){ + this.titleUrl = res.wxMiniQrManageUrl || '' + this.wxMiniQrClientUrl = res.wxMiniQrClientUrl || '' + }else{ + this.$message({ + type: 'error', + message: res.message + }) + } + + }) + } + } +} +</script> + +<style lang="scss" scoped> +// @import '../../font/font.css'; +.container { + // width: 100vw; + height: 100vh; + width: 100%; + // height: 100%; + background: url('../../image/screen/image_background.png') no-repeat fixed center; + background-size: 100% 100%; + // 鏍囬 + .content-head { + height: 10vh; + // border-bottom: 1px dashed #707070; + // margin-bottom: 15px; + position: relative; + // line-height: 10vh; + } + .content-titles { + text-align: center; + font-family: 'LED-FONT'; + font-size: .6rem; + color: #fff; + // padding-top: 10px; + .img-container { + width: 60%; + height: 10vh; + margin: 0 auto; + overflow: hidden; + img { + width: 100%; + height: 100%; + } + } + } + .time-head { + color: #fff; + position: absolute; + left: 0.2rem; + top: 0; + width: 20rem; + padding: 0.13rem 0; + font-size: 0.12rem; + .time-head-content { + width: 2.8rem; + height: 0.5rem; + background: url('../../image/screen/bg_time.png') no-repeat; + background-position: center center; + background-size: contain; + font-family: Microsoft YaHei-Regular, Microsoft YaHei; + & span { + display: inline-block; + width: 1.2rem; + font-size: 20px; + font-family: Impact-Regular, Impact; + font-weight: 400; + letter-spacing: 0.04rem; + } + } + .time-item { + font-size: 1rem !important; + padding-right: 5px; + } + } + .icon-items { + position: absolute; + top: 13px; + right: 0.12rem; + .fullscreen { + float: left; + width: 0.4rem; + height: 0.4rem; + margin-right: 0.11rem; + cursor: pointer; + background: url('../../image/screen/bg_button@2x.png') no-repeat; + background-position: center center; + background-size: 255% 255%; + } + .fullscreen:hover { + background: url('../../image/screen/bg_button_hover@2x.png') no-repeat; + background-position: center center; + background-size: 255% 255%; + } + .logout { + float: left; + width: 0.4rem; + height: 0.4rem; + margin-right: 0.11rem; + background: url('../../image/screen/bg_button_exit@2x.png') no-repeat; + background-position: center center; + background-size: 100% 100%; + } + .logout:hover { + background: url('../../image/screen/bg_button_exit_hover@2x.png') no-repeat; + background-position: center center; + background-size: 100% 100%; + } + } + // 鍐呭 + .item-area { + margin-bottom: 15px; + } +} +</style> -- Gitblit v1.8.0