From 0bda79a1d5f0de3a1885f13763c516650bc19007 Mon Sep 17 00:00:00 2001 From: liukangdong <898885815@qq.com> Date: 星期二, 29 十月 2024 16:00:38 +0800 Subject: [PATCH] ll --- screen/src/views/LogisticsCenter.vue | 1132 ++++++++++++++++++++++++++++++++++------------------------- 1 files changed, 648 insertions(+), 484 deletions(-) diff --git a/screen/src/views/LogisticsCenter.vue b/screen/src/views/LogisticsCenter.vue index a1c768e..101762b 100644 --- a/screen/src/views/LogisticsCenter.vue +++ b/screen/src/views/LogisticsCenter.vue @@ -29,8 +29,8 @@ </div> <div class="content_wrap"> <div class="num_wrap"> - <div class="num_list"> - <div class="num" v-for="i in '200000'"> + <div class="num_list" v-if="cneterData.yearOutTotal"> + <div class="num" v-for="i in cneterData.yearOutTotal + ''"> {{ i }} <img class="bg" src="@/assets/images/LogisticsCenter/bg_number@2x.png" alt=""> </div> @@ -39,9 +39,10 @@ <div class="unit_wrap"> <span class="la">鍚屾瘮</span> <img src="@/assets/images/ic_up.png" class="icon" alt=""> - <span>10.2%</span> + <span v-if="cneterData.yearOutTotalOnYear || cneterData.yearOutTotalOnYear == 0">{{ + cneterData.yearOutTotalOnYear }} %</span> <span class="la" style="margin-left: 30px;margin-right: 10px;">绱鍑哄簱杞︽</span> - <span>3900</span> + <span>{{ cneterData.yearOutTimes || '' }}</span> </div> </div> @@ -77,7 +78,8 @@ </div> <div class="search_wrap"> <img src="@/assets/images/LogisticsCenter/ic_search@2x.png" alt=""> - <span>璁㈠崟鏌ヨ</span> + <input class="input" type="text" @blur="getData2" v-model="taskCode"> + <!-- <span>璁㈠崟鏌ヨ</span> --> </div> </div> <div class="list_wrap"> @@ -87,11 +89,11 @@ <span class="item">浣嶇疆</span> <span class="item">浠诲姟涓嬭揪鏃堕棿</span> </div> - <div class="line" v-for="i in 5"> - <span class="item">鐨朅23bbb</span> - <span class="item">11</span> - <span class="item">11</span> - <span class="item">11</span> + <div class="line" v-for="(item, i) in transportTask" :key="i"> + <span class="item">{{ item.carNo }}</span> + <span class="item">{{ item.statusStr }}</span> + <span class="item">{{ item.address }}</span> + <span class="item">{{ item.taskDate }}</span> </div> </div> </div> @@ -108,30 +110,39 @@ <span>鍏ㄧ渷</span> <img src="@/assets/images/LogisticsCenter/bottom.png" class="icon" alt=""> </div> + <div class="select_op"> + <div class="line">鍚堣偉浠�</div> + <div class="line">鍚堣偉浠�</div> + <div class="line">鍚堣偉浠�</div> + <div class="line">鍚堣偉浠�</div> + </div> </div> <div class="static_wrap"> <div class="item"> <img src="@/assets/images/LogisticsCenter/ic_jinrijihua@2x.png" alt=""> <div class="content"> <div class="name">浠婃棩璁″垝閲�</div> - <div class="num"><span>1000</span>涓囨敮</div> - <div class="unit">杞︽锛�10</div> + <div class="num"><span>{{ cneterData.outPlanTotal }}</span>涓囨敮</div> + <div class="unit">杞︽锛歿{ cneterData.outPlanTimes }}</div> </div> </div> <div class="item"> <img src="@/assets/images/LogisticsCenter/ic_jinrichuku@2x.png" alt=""> <div class="content"> <div class="name">浠婃棩鍑哄簱閲�</div> - <div class="num"><span class="today">1000</span>涓囨敮</div> - <div class="unit">杞︽锛�10</div> + <div class="num"><span class="today">{{ cneterData.outTotal }}</span>涓囨敮</div> + <div class="unit">杞︽锛歿{ cneterData.outTimes }}</div> </div> </div> <div class="item"> <img src="@/assets/images/LogisticsCenter/ic_jinriweichu@2x.png" alt=""> <div class="content"> <div class="name">浠婃棩鏈嚭搴撻噺</div> - <div class="num"><span class="finish">1000</span>涓囨敮</div> - <div class="unit">杞︽锛�10</div> + <div class="num" v-if="cneterData.outPlanTotal && cneterData.outTotal"><span class="finish">{{ + cneterData.outPlanTotal - cneterData.outTotal }}</span>涓囨敮</div> + <div class="unit" v-if="cneterData.outPlanTotal && cneterData.outTotal">杞︽锛歿{ cneterData.outPlanTimes + - + cneterData.outTimes }}</div> </div> </div> </div> @@ -161,8 +172,8 @@ </div> <div class="content_wrap"> <div class="num_wrap"> - <div class="num_list"> - <div class="num" v-for="i in '200000'"> + <div class="num_list" v-if="cneterData.yearInTotal"> + <div class="num" v-for="i in cneterData.yearInTotal + ''"> {{ i }} <img class="bg" src="@/assets/images/LogisticsCenter/bg_number@2x.png" alt=""> </div> @@ -171,9 +182,9 @@ <div class="unit_wrap"> <span class="la">鍚屾瘮</span> <img src="@/assets/images/ic_up.png" class="icon" alt=""> - <span>10.2%</span> + <span>{{ cneterData.yearInTotalOnYear }}%</span> <span class="la" style="margin-left: 30px;margin-right: 10px;">绱鍑哄簱杞︽</span> - <span>3900</span> + <span>{{ cneterData.yearInTimes }}</span> </div> </div> @@ -182,7 +193,7 @@ <div class="echart_wrap"> <div class="echart3" id="echart3"></div> <div class="pie_text"> - <div class="fs30">30%</div> + <!-- <div class="fs30">{{ cneterData.PlanTotal }}%</div> --> </div> </div> <div class="text">璁″垝瀹屾垚閲�</div> @@ -196,11 +207,11 @@ <div>杩涢攢瀛樿繍钀�</div> </div> <div class="tabs"> - <div class="tab active">7澶�</div> + <div :class="{ active: activeTabs == 0 }" class="tab" @click="tabsClick4(0)">7澶�</div> <div class="separate"></div> - <div class="tab">30澶�</div> + <div :class="{ active: activeTabs == 1 }" class="tab" @click="tabsClick4(1)">30澶�</div> <div class="separate"></div> - <div class="tab">1骞�</div> + <div :class="{ active: activeTabs == 2 }" class="tab" @click="tabsClick4(2)">1骞�</div> </div> </div> <div class="echart4_wrap"> @@ -231,6 +242,14 @@ import dayjs from 'dayjs' import * as echarts from 'echarts' import chinaJSON from '@/assets/china.json' +import { + getStoreOperationList, + getStorearriveGoodsList, + getStorecenterData, + getStoreenergyDataList, + getStorelastMonthOil, + getStoreTaskList, +} from '@/api' const weekMap = ['鏄熸湡鏃�', '鏄熸湡涓�', '鏄熸湡浜�', '鏄熸湡涓�', '鏄熸湡鍥�', '鏄熸湡浜�', '鏄熸湡鍏�',] const date = ref(dayjs().format('YYYY.MM.DD')) @@ -243,44 +262,6 @@ }, 1000) -const colors = ['#0193FE', '#FFB642'] -const StockOutData = ref([]) -const getStockOut = () => { - let arr = [] - arr.push({ name: '鐪佸唴', value: 20 }) - arr.push({ name: '鐪佸', value: 30 }) - arr.sort((a, b) => b.value - a.value) - StockOutData.value = arr - - initEchart1() -} -const initEchart1 = () => { - const myChart = echarts.init(document.getElementById('echart1')) - const option = { - tooltip: { - trigger: 'item' - }, - series: [ - { - type: 'pie', - radius: ['72%', '96%'], - label: { - show: false, - position: 'center' - }, - color: colors, - labelLine: { - show: false - }, - data: StockOutData.value - } - ] - } - myChart.setOption(option) - window.addEventListener('resize', function () { // 鎵ц - myChart.resize() - }) -} const initEchart2 = () => { const myChart = echarts.init(document.getElementById('echart1')) const option = { @@ -340,352 +321,6 @@ myChart.resize() }) } -const initEchart4 = () => { - // 鍩轰簬鍑嗗濂界殑dom锛屽垵濮嬪寲echarts瀹炰緥 - const myChart = echarts.init(document.getElementById('echart4')) - // 缁樺埗鍥捐〃 - myChart.setOption({ - tooltip: { - trigger: 'axis', - axisPointer: { - type: 'line' - }, - formatter: function (params) { - setTimeout(() => { - console.log('params', params) - }) - return ` - <div style="background-color: #091123;margin: -12px;padding: 14px;border: 2px solid rgba(1,217,254,0.5);color: #fff;"> - <div>${params[0].name}鎬婚攢鍞(涓囧厓)</div> - <div style="display: flex;align-items: center;"> - <div style="width: 10px;height: 10px;border-radius: 50%;background-color: #ebbf40;"></div> - <div style="margin: 0 4px 0 6px;">鎬婚攢鍞�</div> - <span style="color: #ebbf40;">${params[0].value}</span> - </div> - </div> - ` - } - }, - xAxis: { - type: 'category', - boundaryGap: false, - data: [1, 2, 3, 4, 5, 5] - }, - yAxis: { - type: 'value', - name: '涓囨敮', - nameTextStyle: { - padding: [0, 0, 0, -16] // 鍥涗釜鏁板瓧鍒嗗埆涓轰笂鍙充笅宸︿笌鍘熶綅缃窛绂� - }, - splitLine: { - show: true, - lineStyle: { - //杩欓噷杈撳叆绾挎潯鐨勬牱寮� - color: 'rgba(255,255,255,0.14)', - type: 'dashed', - }, - splitNumber: 4 - } - }, - legend: { - itemGap: 24, - icon: 'rect', - right: '12px', - top: '0', - itemWidth: 16, - itemHeight: 2, - textStyle: { - color: '#fff', - borderColor: '#fff' - }, - data: ['鎬诲叆搴撻噺', '鎬诲嚭搴撻噺'] - }, - grid: { - top: '18%', - left: '0%', - right: '2%', - bottom: '2%', - containLabel: true - }, - series: [ - { - name: '鎬诲叆搴撻噺', - data: [10, 2, 30, 4, 4, 30].map(i => { - return { - name: i, - value: i, - } - }), - type: 'line', - areaStyle: { - normal: { - color: { - x: 0, - y: 0, - x2: 0, - y2: 1, - colorStops: [ - { - offset: 0, - color: "#4191f6" // 0% 澶勭殑棰滆壊 - }, - { - offset: .4, - color: "#203d79" // 0% 澶勭殑棰滆壊 - }, - { - offset: 1, - color: "#1b1b12" // 100% 澶勭殑棰滆壊 - }], - globalCoord: false // 缂虹渷涓� false - } - } - }, - lineStyle: { // 绾挎潯鏍峰紡 - color: { - type: 'linear', - x: 0, - y: 0, - x2: 0, - y2: 1, - colorStops: [{ - offset: 0, color: '#4191f6' // 0% 澶勭殑棰滆壊 - }, { - offset: 1, color: '#4191f6' // 100% 澶勭殑棰滆壊 - }], - }, - width: 1.5, // 绾挎潯绮楃粏 - }, - symbol: 'circle', - symbolSize: 6, - itemStyle: { - color: "#4190f4", - borderColor: "rgba(255,255,255,.3)", - borderWidth: 6, - }, - smooth: true - }, - { - name: '鎬诲嚭搴撻噺', - data: [30, 2, 10, 4, 4, 20].map(i => { - return { - name: i, - value: i, - } - }), - type: 'line', - areaStyle: { - normal: { - color: { - x: 0, - y: 0, - x2: 0, - y2: 1, - colorStops: [{ - offset: 0, - color: "rgba(192, 156, 53,.7)" // 0% 澶勭殑棰滆壊 - }, { - offset: 1, - color: "#1b1b12" // 100% 澶勭殑棰滆壊 - }], - globalCoord: false // 缂虹渷涓� false - } - } - }, - lineStyle: { // 绾挎潯鏍峰紡 - color: { - type: 'linear', - x: 0, - y: 0, - x2: 0, - y2: 1, - colorStops: [{ - offset: 0, color: '#F3BD00' // 0% 澶勭殑棰滆壊 - }, { - offset: 1, color: '#F3BD00' // 100% 澶勭殑棰滆壊 - }], - }, - width: 2, // 绾挎潯绮楃粏 - }, - symbol: 'circle', - symbolSize: 6, - itemStyle: { - color: "#F3BD00", - borderColor: "rgba(255,255,255,.3)", - borderWidth: 6, - }, - smooth: true - } - ] - }) - - window.addEventListener('resize', function () {//鎵ц - myChart.resize() - }) -} -const initEchart5 = () => { - // 鍩轰簬鍑嗗濂界殑dom锛屽垵濮嬪寲echarts瀹炰緥 - const myChart = echarts.init(document.getElementById('echart5')) - // 缁樺埗鍥捐〃 - myChart.setOption({ - legend: { - itemGap: 12, - // icon: 'circle', - right: '12px', - top: '0', - data: ['鎬诲簱瀛�', '褰撳墠搴撳瓨', '搴撳瓨鍒╃敤鐜�'], - itemWidth: 20, - itemHeight: 10, - textStyle: { - color: '#fff', - borderColor: '#fff' - }, - }, - grid: { - left: '3%', - right: '4%', - bottom: '3%', - top: '16%', - containLabel: true - }, - tooltip: { - trigger: 'axis' - }, - xAxis: [{ - nameGap: 5, - type: 'category', - axisLine: { - show: true, - lineStyle: { - color: '#999' - }, - }, - axisLabel: { - color: '#869CC9' - // fontSize: 24, - }, - axisTick: { - show: false, - }, - data: ['鍚堣偉', '婊佸窞', '鑺滄箹', '铓屽煚', '闃滈槼'], - }], - yAxis: [ - { - nameTextStyle: { - color: '#869CC9', - }, - offset: 0, - name: '涓囨敮', - type: 'value', - axisLabel: { - show: true, - color: "#869CC9", - }, - axisLine: { - show: true, - }, - splitLine: { - show: true, - lineStyle: { - width: 1, - color: "rgba(49,105,129,0.4)", - type: 'dashed' - } - }, - }, - { - type: 'value', - name: '%', - min: 0, - max: 100, - // interval: 5, - axisLabel: { - formatter: '{value}%' - }, - splitLine: false - } - ], - series: [ - { - name: '鎬诲簱瀛�', - type: 'bar', - barWidth: 8, - barGap: '60%', - label: { - show: false, - position: 'top', - color: '#fff', - }, - itemStyle: { - color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [ - { - offset: 0, - color: '#5bc7d5' - }, - { - offset: 1, - color: '#1a3f55' - } - ], false), - lineStyle: { - width: 1, - type: 'solid' - }, - barBorderRadius: [30, 30, 0, 0], - }, - data: [900, 438, 485, 631, 689] - }, - { - name: '褰撳墠搴撳瓨', - type: 'bar', - barWidth: 8, - label: { - show: false, - position: 'top', - color: '#fff', - }, - itemStyle: { - color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [ - { - offset: 0, - color: '#edaf3d' - }, - { - offset: 1, - color: '#323522' - } - ], false), - lineStyle: { - width: 1, - type: 'solid' - }, - barBorderRadius: [30, 30, 0, 0], - }, - data: [438, 485, 631, 689, 900] - }, - { - name: '搴撳瓨鍒╃敤鐜�', - type: 'line', - smooth: true, - showAllSymbol: true, - symbol: 'none', - lineStyle: { - color: "#3d87e5" - }, - label: { - show: false, - position: 'top', - color: '#fff', - }, - data: [485, 631, 389, 224, 287] - } - ] - }) - - window.addEventListener('resize', function () {//鎵ц - myChart.resize() - }) -} const mapEchart = ref() const initMap = () => { @@ -693,12 +328,12 @@ echarts.registerMap('china', chinaJSON) var points = [ // 鐐瑰潗鏍� - { value: [110.81, 33.40], itemStyle: { color: '#c1bb1f' }, name: '11', total: 0, bj: 0, yj: 0, yx: 0, tj: 0, dw: 0 }, + { value: [110.81, 33.40], itemStyle: { color: '#c1bb1f' }, name: '鍖椾含', total: 0, bj: 0, yj: 0, yx: 0, tj: 0, dw: 0 }, { value: [116.55, 40.01], itemStyle: { color: '#3eef1d' }, name: '鍖椾含', total: 0, bj: 0, yj: 0, yx: 0, tj: 0, dw: 0 }, - { value: [113.11, 28.40], itemStyle: { color: '#3eef1d' }, name: '22', total: 5, bj: 0, yj: 0, yx: 5, tj: 0, dw: 0 }, - { value: [106.44, 29.50], itemStyle: { color: '#3eef1d' }, name: '33', total: 10, bj: 0, yj: 0, yx: 10, tj: 0, dw: 0 }, - { value: [112.85, 38.95], itemStyle: { color: '#3eef1d' }, name: '44', total: 8, bj: 0, yj: 0, yx: 8, tj: 0, dw: 0 }, - { value: [82.78, 43.27], itemStyle: { color: '#3eef1d' }, name: '55', total: 18, bj: 0, yj: 0, yx: 18, tj: 0, dw: 0 } + { value: [113.11, 28.40], itemStyle: { color: '#3eef1d' }, name: '鍖椾含', total: 5, bj: 0, yj: 0, yx: 5, tj: 0, dw: 0 }, + { value: [106.44, 29.50], itemStyle: { color: '#3eef1d' }, name: '鍖椾含', total: 10, bj: 0, yj: 0, yx: 10, tj: 0, dw: 0 }, + { value: [112.85, 38.95], itemStyle: { color: '#3eef1d' }, name: '鍖椾含', total: 8, bj: 0, yj: 0, yx: 8, tj: 0, dw: 0 }, + { value: [82.78, 43.27], itemStyle: { color: '#3eef1d' }, name: '鍖椾含', total: 18, bj: 0, yj: 0, yx: 18, tj: 0, dw: 0 } ] var lineToLf = [ { name: '11', coords: [[110.81, 33.40], [116.55, 40.01]], lineStyle: { color: '#c1bb1f' } }, @@ -723,7 +358,7 @@ label: { show: false }, - zoom: 1.5, + zoom: 1.6, silent: true, // 涓嶅搷搴旈紶鏍囨椂闂� show: true, roam: false, // 鍦板浘缂╂斁鍜屽钩绉� @@ -767,7 +402,7 @@ { type: 'map', map: 'china', - zoom: 1.5, + zoom: 1.6, tooltip: { show: false }, @@ -818,8 +453,8 @@ showEffectOn: 'render', // zlevel: 2, // zlevel鐢ㄤ簬 Canvas 鍒嗗眰 鐩稿悓鐨勭粯鍒跺湪鍚屼竴涓猚anvas涓� rippleEffect: { - number: 5, // 娉㈢汗鏁伴噺 - period: 4, // 鍔ㄧ敾鍛ㄦ湡 鏁板�艰秺澶э紝娉㈠姩瓒婃參 + number: 3, // 娉㈢汗鏁伴噺 + period: 10, // 鍔ㄧ敾鍛ㄦ湡 鏁板�艰秺澶э紝娉㈠姩瓒婃參 scale: 3.5, // 鍔ㄧ敾涓尝绾圭殑鏈�澶х缉鏀炬瘮渚� brushType: 'stroke' // 娉㈢汗鐨勭粯鍒舵柟寮� stroke fill }, @@ -841,41 +476,22 @@ extraCssText: 'box-shadow: 0 0 0 rgba(0, 0, 0, 0);', // 鍘婚櫎box-shadow闃村奖 formatter: (params) => { return `<div class="map-tip-box"> - <div class="company-name">${params.name}</div> - <div class="monitor-total">鐩戞祴鎬绘暟锛�${params.data.total}鍙�</div> + <div class="item-state-con title"> + <div class="icon"></div> + <span>${params.data.name}</span> + </div> <div class="item-state-con"> <span class="dot bj"></span> <span class="item-state-num"> - <span class="num">${params.data.bj}鍙�</span> - <span class="text">鎶ヨ</span> + <span class="text">鏈湀鍑哄簱閲忥細</span> + <span class="num">${params.data.total}涓囨敮</span> </span> </div> <div class="item-state-con"> <span class="dot yj"></span> <span class="item-state-num"> - <span class="num">${params.data.yj}鍙�</span> - <span class="text">棰勮</span> - </span> - </div> - <div class="item-state-con"> - <span class="dot yx"></span> - <span class="item-state-num"> - <span class="num">${params.data.yx}鍙�</span> - <span class="text">杩愯</span> - </span> - </div> - <div class="item-state-con"> - <span class="dot tj"></span> - <span class="item-state-num"> - <span class="num">${params.data.tj}鍙�</span> - <span class="text">鍋滄満</span> - </span> - </div> - <div class="item-state-con"> - <span class="dot dw"></span> - <span class="item-state-num"> - <span class="num">${params.data.dw}鍙�</span> - <span class="text">鏂綉</span> + <span class="text">鏈勾鍑哄簱閲�</span> + <span class="num">${params.data.yx}涓囨敮</span> </span> </div> </div>` @@ -884,26 +500,26 @@ z: 4 }, // 鍦板浘绾跨殑鍔ㄧ敾鏁堟灉 - { - name: 'arrowline', - type: 'lines', - // zlevel: 1, - effect: { - show: true, - period: 3, // 绠ご鎸囧悜閫熷害锛屽�艰秺灏忛�熷害瓒婂揩 - trailLength: 0.1, // 鐗规晥灏捐抗闀垮害[0,1]鍊艰秺澶э紝灏捐抗瓒婇暱閲� - symbol: 'arrow', // 绠ご鍥炬爣 - symbolSize: 6 // 鍥炬爣澶у皬 - }, - lineStyle: { - color: '#1DE9B6', - width: 2, // 绾挎潯瀹藉害 - opacity: 0.1, // 灏捐抗绾挎潯閫忔槑搴� - curveness: 0.2 // 灏捐抗绾挎潯鏇茬洿搴� - }, - data: lineToLf, - z: 3 - } + // { + // name: 'arrowline', + // type: 'lines', + // // zlevel: 1, + // effect: { + // show: true, + // period: 3, // 绠ご鎸囧悜閫熷害锛屽�艰秺灏忛�熷害瓒婂揩 + // trailLength: 0.1, // 鐗规晥灏捐抗闀垮害[0,1]鍊艰秺澶э紝灏捐抗瓒婇暱閲� + // symbol: 'arrow', // 绠ご鍥炬爣 + // symbolSize: 6 // 鍥炬爣澶у皬 + // }, + // lineStyle: { + // color: '#1DE9B6', + // width: 2, // 绾挎潯瀹藉害 + // opacity: 0.1, // 灏捐抗绾挎潯閫忔槑搴� + // curveness: 0.2 // 灏捐抗绾挎潯鏇茬洿搴� + // }, + // data: lineToLf, + // z: 3 + // } ] } myChart.setOption(option) @@ -911,7 +527,7 @@ myChart.resize() }) } -const initEnergy = () => { +const initEnergy = (list) => { var myChart = echarts.init(document.querySelector('.energyRef')) // 缁樺埗鍥捐〃 myChart.setOption({ @@ -960,7 +576,7 @@ axisLine: { show: false }, - data: ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun'] + data: list.map(i => i.dateStr) }, series: [ { @@ -974,7 +590,7 @@ emphasis: { focus: 'series' }, - data: [320, 302, 301, 334, 390, 330, 320], + data: list.map(i => i.inTransitNum), itemStyle: { normal: { color: { @@ -1023,7 +639,7 @@ emphasis: { focus: 'series' }, - data: [120, 132, 101, 134, 90, 230, 210] + data: list.map(i => i.arriveNum) } ] }) @@ -1031,31 +647,548 @@ myChart.resize() }) } +const getData1 = () => { + getStorearriveGoodsList().then(res => { + initEnergy(res.data || []) + }) +} +const transportTask = ref([]) +const taskCode = ref('') +const getData2 = () => { + getStoreTaskList({ code: taskCode.value }).then(res => { + let temp = res.data || [] + temp = temp.splice(0, 5) + transportTask.value = temp.map(item => { + item.taskDate = item.taskDate.slice(5, 16) + return item + }) + }) +} + +const cneterData = ref({}) +const colors = ['#0193FE', '#FFB642'] +const StockOutData = ref([]) +const initEchart1 = () => { + const myChart = echarts.init(document.getElementById('echart1')) + const option = { + tooltip: { + trigger: 'item' + }, + series: [ + { + type: 'pie', + radius: ['72%', '96%'], + label: { + show: false, + position: 'center' + }, + color: colors, + labelLine: { + show: false + }, + data: StockOutData.value + } + ] + } + myChart.setOption(option) + window.addEventListener('resize', function () { // 鎵ц + myChart.resize() + }) +} +const getStockOut = () => { + let arr = [] + arr.push({ name: '鐪佸唴', value: (cneterData.value.yearProvinceRata * 100).toFixed(0) + '%' }) + arr.push({ name: '鐪佸', value: ((1 - cneterData.value.yearProvinceRata) * 100).toFixed(0) + '%' }) + arr.sort((a, b) => b.value - a.value) + StockOutData.value = arr + initEchart1() +} +const getData3 = () => { + getStorecenterData().then(res => { + cneterData.value = res.data || {} + getStockOut() + }) +} + +const activeTabs = ref(0) +const dataList4 = ref([]) +const initEchart4 = () => { + // 鍩轰簬鍑嗗濂界殑dom锛屽垵濮嬪寲echarts瀹炰緥 + const myChart = echarts.init(document.getElementById('echart4')) + // 缁樺埗鍥捐〃 + myChart.setOption({ + tooltip: { + trigger: 'axis', + backgroundColor: '#091123', + axisPointer: { + type: 'line' + }, + // formatter: function (params) { + // setTimeout(() => { + // }) + // return ` + // <div style="background-color: #091123;margin: -12px;padding: 14px;border: 2px solid rgba(1,217,254,0.5);color: #fff;"> + // <div>${params[0].name}鎬婚攢鍞(涓囧厓)</div> + // <div style="display: flex;align-items: center;"> + // <div style="width: 10px;height: 10px;border-radius: 50%;background-color: #ebbf40;"></div> + // <div style="margin: 0 4px 0 6px;">鎬婚攢鍞�</div> + // <span style="color: #ebbf40;">${params[0].value}</span> + // </div> + // </div> + // ` + // } + }, + xAxis: { + type: 'category', + boundaryGap: false, + data: dataList4.value.map(i => i.dateStr) + }, + yAxis: { + type: 'value', + name: '涓囨敮', + nameTextStyle: { + padding: [0, 0, 0, -16] // 鍥涗釜鏁板瓧鍒嗗埆涓轰笂鍙充笅宸︿笌鍘熶綅缃窛绂� + }, + splitLine: { + show: true, + lineStyle: { + //杩欓噷杈撳叆绾挎潯鐨勬牱寮� + color: 'rgba(255,255,255,0.14)', + type: 'dashed', + }, + splitNumber: 4 + } + }, + legend: { + itemGap: 24, + icon: 'rect', + right: '12px', + top: '0', + itemWidth: 16, + itemHeight: 2, + textStyle: { + color: '#fff', + borderColor: '#fff' + }, + data: ['鎬诲叆搴撻噺', '鎬诲嚭搴撻噺', '搴撳瓨閲�'] + }, + grid: { + top: '18%', + left: '0%', + right: '2%', + bottom: '2%', + containLabel: true + }, + series: [ + { + name: '鎬诲叆搴撻噺', + data: dataList4.value.map(item => { + return { + name: item.dateStr, + value: item.totalInNum, + } + }), + type: 'line', + areaStyle: { + normal: { + color: { + x: 0, + y: 0, + x2: 0, + y2: 1, + colorStops: [ + { + offset: 0, + color: "#4191f6" // 0% 澶勭殑棰滆壊 + }, + { + offset: .4, + color: "#203d79" // 0% 澶勭殑棰滆壊 + }, + { + offset: 1, + color: "#1b1b12" // 100% 澶勭殑棰滆壊 + }], + globalCoord: false // 缂虹渷涓� false + } + } + }, + lineStyle: { // 绾挎潯鏍峰紡 + color: { + type: 'linear', + x: 0, + y: 0, + x2: 0, + y2: 1, + colorStops: [{ + offset: 0, color: '#4191f6' // 0% 澶勭殑棰滆壊 + }, { + offset: 1, color: '#4191f6' // 100% 澶勭殑棰滆壊 + }], + }, + width: 1.5, // 绾挎潯绮楃粏 + }, + symbol: 'circle', + symbolSize: 4, + itemStyle: { + color: "#4190f4", + borderColor: "rgba(255,255,255,.3)", + borderWidth: 4, + }, + smooth: true + }, + { + name: '鎬诲嚭搴撻噺', + data: dataList4.value.map(item => { + return { + name: item.dateStr, + value: item.totalOutNum, + } + }), + type: 'line', + areaStyle: { + normal: { + color: { + x: 0, + y: 0, + x2: 0, + y2: 1, + colorStops: [{ + offset: 0, + color: "rgba(192, 156, 53,.7)" // 0% 澶勭殑棰滆壊 + }, { + offset: 1, + color: "#1b1b12" // 100% 澶勭殑棰滆壊 + }], + globalCoord: false // 缂虹渷涓� false + } + } + }, + lineStyle: { // 绾挎潯鏍峰紡 + color: { + type: 'linear', + x: 0, + y: 0, + x2: 0, + y2: 1, + colorStops: [{ + offset: 0, color: '#F3BD00' // 0% 澶勭殑棰滆壊 + }, { + offset: 1, color: '#F3BD00' // 100% 澶勭殑棰滆壊 + }], + }, + width: 2, // 绾挎潯绮楃粏 + }, + symbol: 'circle', + symbolSize: 4, + itemStyle: { + color: "#F3BD00", + borderColor: "rgba(255,255,255,.3)", + borderWidth: 4, + }, + smooth: true + }, + { + name: '搴撳瓨閲�', + data: dataList4.value.map(item => { + return { + name: item.dateStr, + value: item.stockNum, + } + }), + type: 'line', + areaStyle: { + normal: { + color: { + x: 0, + y: 0, + x2: 0, + y2: 1, + colorStops: [{ + offset: 0, + color: "rgba(218, 233, 250)" // 0% 澶勭殑棰滆壊 + }, { + offset: 1, + color: "#1b1b12" // 100% 澶勭殑棰滆壊 + }], + globalCoord: false // 缂虹渷涓� false + } + } + }, + lineStyle: { // 绾挎潯鏍峰紡 + color: { + type: 'linear', + x: 0, + y: 0, + x2: 0, + y2: 1, + colorStops: [{ + offset: 0, color: '#fff' // 0% 澶勭殑棰滆壊 + }, { + offset: 1, color: '#fff' // 100% 澶勭殑棰滆壊 + }], + }, + width: 2, // 绾挎潯绮楃粏 + }, + symbol: 'circle', + symbolSize: 4, + itemStyle: { + color: "#fff", + borderColor: "rgba(255,255,255,.3)", + borderWidth: 4, + }, + smooth: true + }, + ] + }) + + window.addEventListener('resize', function () {//鎵ц + myChart.resize() + }) +} +const tabsClick4 = (tab) => { + activeTabs.value = tab + getData4() +} +const getData4 = () => { // 杩涢攢瀛樿繍钀� + getStoreOperationList({ queryType: activeTabs.value }).then(res => { + console.log('res', res) + dataList4.value = res.data || [] + initEchart4() + }) +} + +const dataList5 = ref([]) +const initEchart5 = () => { + // 鍩轰簬鍑嗗濂界殑dom锛屽垵濮嬪寲echarts瀹炰緥 + const myChart = echarts.init(document.getElementById('echart5')) + // 缁樺埗鍥捐〃 + myChart.setOption({ + legend: { + itemGap: 12, + // icon: 'circle', + right: '12px', + top: '0', + data: ['鎬诲簱瀛�', '褰撳墠搴撳瓨', '搴撳瓨鍒╃敤鐜�'], + itemWidth: 20, + itemHeight: 10, + textStyle: { + color: '#fff', + borderColor: '#fff' + }, + }, + grid: { + left: '3%', + right: '0%', + bottom: '3%', + top: '24%', + containLabel: true + }, + tooltip: { + trigger: 'axis' + }, + xAxis: [{ + nameGap: 5, + type: 'category', + axisLine: { + show: true, + lineStyle: { + color: '#999' + }, + }, + axisLabel: { + color: '#869CC9' + // fontSize: 24, + }, + axisTick: { + show: false, + }, + data: dataList5.value.map(i => i.placeName), + }], + yAxis: [ + { + nameTextStyle: { + color: '#869CC9', + }, + offset: 0, + name: '涓囨敮', + type: 'value', + axisLabel: { + show: true, + color: "#869CC9", + }, + axisLine: { + show: true, + }, + splitLine: { + show: true, + lineStyle: { + width: 1, + color: "rgba(49,105,129,0.4)", + type: 'dashed' + } + }, + }, + { + type: 'value', + name: '%', + min: 0, + max: 100, + // interval: 5, + axisLabel: { + formatter: '{value}' + }, + splitLine: false + } + ], + series: [ + { + name: '鎬诲簱瀛�', + type: 'bar', + barWidth: 8, + barGap: '60%', + label: { + show: false, + position: 'top', + color: '#fff', + }, + itemStyle: { + color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [ + { + offset: 0, + color: '#5bc7d5' + }, + { + offset: 1, + color: '#1a3f55' + } + ], false), + lineStyle: { + width: 1, + type: 'solid' + }, + barBorderRadius: [30, 30, 0, 0], + }, + data: dataList5.value.map(i => i.totalStockNum) + }, + { + name: '褰撳墠搴撳瓨', + type: 'bar', + barWidth: 8, + label: { + show: false, + position: 'top', + color: '#fff', + }, + itemStyle: { + color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [ + { + offset: 0, + color: '#edaf3d' + }, + { + offset: 1, + color: '#323522' + } + ], false), + lineStyle: { + width: 1, + type: 'solid' + }, + barBorderRadius: [30, 30, 0, 0], + }, + data: dataList5.value.map(i => i.nowStockNum) + }, + { + name: '搴撳瓨鍒╃敤鐜�', + type: 'line', + smooth: true, + showAllSymbol: true, + symbol: 'none', + lineStyle: { + color: "#3d87e5" + }, + label: { + show: false, + position: 'top', + color: '#fff', + }, + data: dataList5.value.map(i => i.stockRataNum) + } + ] + }) + + window.addEventListener('resize', function () {//鎵ц + myChart.resize() + }) +} +const getData5 = () => { + getStoreenergyDataList({ queryType: activeTabs.value }).then(res => { + console.log('res', res) + dataList5.value = res.data || [] + initEchart5() + }) +} + +const initData = () => { + getData1() + getData2() + getData3() + getData4() + getData5() +} onMounted(() => { - initEnergy() + initData() + initMap() - getStockOut() - initEchart2() - initEchart3() - initEchart4() - initEchart5() + // initEchart2() + // initEchart3() + // initEchart4() + // initEchart5() }) </script> -<style> -.map-tip-box{ - background-color: #1f3b57; - color: #fff; +<style lang="scss"> +.map-tip-box { + background-color: rgba(6, 25, 48, .8); + padding: 10px 30px; + padding-left: 20px; + border-radius: 4px; + backdrop-filter: blur(10px); + color: #D2E0FF; + font-size: 12px; + border: 1px solid #D2E0FF; + .icon { + width: 12px; + height: 14px; + background-image: url('@/assets/images/FireFighting/ic_location@2x.png'); + background-repeat: no-repeat; + background-position: center; + background-size: cover; + margin-right: 6px; + } + + .title { + font-size: 14px; + font-weight: 600; + display: flex; + align-items: center + } + + .item-state-con { + margin-bottom: 6px; + } } </style> <style lang="scss" scoped> div { box-sizing: border-box; } + .main_content { display: flex; padding: 20px 25px 0; @@ -1066,7 +1199,6 @@ .left_box_one { margin-top: 20px; padding: 0px 10px 30px 20px; - border: 1px solid; .content_wrap { display: flex; @@ -1176,7 +1308,6 @@ .left_box_three { width: 440px; padding: 0 15px; - border: 1px solid; .second_title { margin-bottom: 10px; @@ -1195,11 +1326,12 @@ } .item { - flex: 1; + flex: 4; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; } + } .header { @@ -1213,7 +1345,7 @@ .center_box { flex: 1; padding: 0 20px; - margin: 0 40px; + margin: 0 20px; display: flex; flex-direction: column; @@ -1221,7 +1353,7 @@ background: rgba(255, 255, 255, 0.02); height: 230px; border-top: 2px solid #306ba1; - padding-top: 20px; + padding: 20px 20px 0; .header_wrap { display: flex; @@ -1229,6 +1361,12 @@ margin-bottom: 28px; font-weight: bold; font-size: 18px; + position: relative; + &:hover{ + .select_op{ + display: block; + } + } background-image: -webkit-linear-gradient(top, #ffffff 0%, #c8ddff 66%, @@ -1260,6 +1398,23 @@ .icon { width: 14px; margin-left: 2px; + } + } + .select_op{ + position: absolute; + top: 26px; + right: 0px; + width: 90px; + z-index: 11; + display: none; + background: radial-gradient( 64% 83% at 50% 50%, rgba(19,88,173,0.8) 0%, rgba(5,18,32,0.86) 100%); + .line{ + display: flex; + justify-content: center; + align-items: center; + height: 36px; + cursor: pointer; + color: #fff; } } } @@ -1346,7 +1501,6 @@ .echart_map { width: 100%; height: 100%; - border: 1px solid; /* transform: scale(.2); */ } } @@ -1635,11 +1789,17 @@ height: 28px; border-radius: 14px; border: 1px solid #869CC9; + padding-left: 8px; + margin-right: 12px; img { width: 14px; height: 14px; margin-right: 3px; + } + + .input { + flex: 1; } } @@ -1649,6 +1809,10 @@ font-size: 14px; color: #d2e0ff; + .tab { + cursor: pointer; + } + .separate { width: 1px; height: 14px; -- Gitblit v1.9.3