From c9ef2687d3460da668d08d58dee6af468ed6693e Mon Sep 17 00:00:00 2001
From: jiangping <jp@doumee.com>
Date: 星期二, 05 十一月 2024 11:48:34 +0800
Subject: [PATCH] 最新版本541200007
---
screen/src/views/LogisticsCenter.vue | 1058 ++++++++++++++++++++++++++++++++++++++++++++--------------
1 files changed, 803 insertions(+), 255 deletions(-)
diff --git a/screen/src/views/LogisticsCenter.vue b/screen/src/views/LogisticsCenter.vue
index 096746a..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>
@@ -140,7 +151,9 @@
<span class="num">80%</span>
</div>
</div>
- <div class="center_box_two"></div>
+ <div class="center_box_two">
+ <div class="echart_map" ref="mapEchart" id="echart_map"></div>
+ </div>
</div>
<div class="right_box">
<div class="com_header">
@@ -159,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>
@@ -169,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>
@@ -180,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>
@@ -194,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">
@@ -223,12 +236,21 @@
</template>
<script setup>
-import { ref, onMounted } from 'vue'
+import { ref, onMounted, nextTick } from 'vue'
import VScaleScreen from 'v-scale-screen'
import Percent from '@/components/percent.vue'
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'))
const week = ref(weekMap[new Date().getDay()])
@@ -240,35 +262,30 @@
}, 1000)
-const colors = ['#0193FE', '#FFB642', '#5fc6d5']
-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 initEchart2 = () => {
const myChart = echarts.init(document.getElementById('echart1'))
const option = {
- tooltip: {
- trigger: 'item'
- },
series: [
{
type: 'pie',
- radius: ['72%', '96%'],
+ radius: ['86%', '100%'],
label: {
show: false,
position: 'center'
+ },
+ padAngle: 5,
+ itemStyle: {
+ borderRadius: 10
},
color: colors,
labelLine: {
show: false
},
- data: StockOutData.value
+ data: [
+ { value: 1048, name: 'Search Engine' },
+ { value: 735, name: 'Direct' },
+ { value: 580, name: 'Email' }
+ ]
}
]
}
@@ -304,6 +321,398 @@
myChart.resize()
})
}
+
+const mapEchart = ref()
+const initMap = () => {
+ var myChart = echarts.init(mapEchart.value)
+ echarts.registerMap('china', chinaJSON)
+ var points = [
+ // 鐐瑰潗鏍�
+ { 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: '鍖椾含', 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' } },
+ { name: '22', coords: [[113.11, 28.40], [116.55, 40.01]], lineStyle: { color: '#3eef1d' } },
+ { name: '33', coords: [[106.44, 29.50], [116.55, 40.01]], lineStyle: { color: '#3eef1d' } },
+ { name: '44', coords: [[112.85, 38.95], [116.55, 40.01]], lineStyle: { color: '#3eef1d' } },
+ { name: '55', coords: [[82.78, 43.27], [116.55, 40.01]], lineStyle: { color: '#3eef1d' } }
+ ]
+ const option = {
+ backgroundColor: 'transparent', // 璁剧疆鑳屾櫙鑹查�忔槑
+ // 蹇呴』璁剧疆
+ tooltip: {
+ show: false
+ },
+ // 鍦板浘闃村奖閰嶇疆
+ geo: {
+ map: 'china',
+ // 杩欓噷蹇呴』瀹氫箟锛屼笉鐒跺悗闈eries閲岄潰涓嶇敓鏁�
+ tooltip: {
+ show: false
+ },
+ label: {
+ show: false
+ },
+ zoom: 1.6,
+ silent: true, // 涓嶅搷搴旈紶鏍囨椂闂�
+ show: true,
+ roam: false, // 鍦板浘缂╂斁鍜屽钩绉�
+ aspectScale: 0.75, // scale 鍦板浘鐨勯暱瀹芥瘮
+ itemStyle: {
+ borderColor: '#2d5f9c',
+ borderWidth: 1,
+ areaColor: '#2d5f9c',
+ shadowColor: 'rgba(1,34,73,0.48)',
+ shadowBlur: 10,
+ shadowOffsetX: -10, //
+ shadowOffsetY: 10
+ },
+ select: {
+ disabled: true
+ },
+ emphasis: {
+ disabled: true,
+ areaColor: '#00F1FF'
+ },
+ // 鍦板浘鍖哄煙鐨勫杈瑰舰 鍥惧舰鏍峰紡 闃村奖鏁堟灉
+ // z鍊煎皬鐨勫浘褰細琚珃鍊煎ぇ鐨勫浘褰㈣鐩�
+ top: '30.2%',
+ left: 'center',
+ // 鍘婚櫎鍗楁捣璇稿矝闃村奖 series map閲岄潰娌℃湁姝ゅ睘鎬�
+ regions: [{
+ name: '鍗楁捣璇稿矝',
+ selected: false,
+ emphasis: {
+ disabled: true
+ },
+ itemStyle: {
+ areaColor: '#00000000',
+ borderColor: '#00000000'
+ }
+ }],
+ z: 1
+ },
+ series: [
+ // 鍦板浘閰嶇疆
+ {
+ type: 'map',
+ map: 'china',
+ zoom: 1.6,
+ tooltip: {
+ show: false
+ },
+ label: {
+ show: true, // 鏄剧ず鐪佷唤鍚嶇О
+ color: '#fff',
+ fontSize: 13,
+ shadowColor: '#fff',
+ shadowBlur: 10,
+ shadowOffsetX: 2,
+ shadowOffsetY: 2,
+ textBorderColor: '#fff',
+ // rotate: 90,
+ align: 'center'
+ },
+ top: '28%',
+ left: 'center',
+ aspectScale: 0.75,
+ roam: false, // 鍦板浘缂╂斁鍜屽钩绉�
+ itemStyle: {
+ borderColor: '#4278a3', // 鐪佸垎鐣岀嚎棰滆壊 闃村奖鏁堟灉鐨�
+ borderWidth: 1,
+ areaColor: '#1d3f71',
+ opacity: 1
+ },
+ // 鍘婚櫎閫変腑鐘舵��
+ select: {
+ disabled: true
+ },
+ emphasis: { // 鑱氱劍鍚庨鑹�
+ disabled: false, // 寮�鍚珮浜�
+ label: {
+ align: 'center',
+ color: '#04CFF5'
+ },
+ itemStyle: {
+ color: '#ffffff',
+ areaColor: '#3c87b2'// 闃村奖鏁堟灉 榧犳爣绉诲姩涓婂幓鐨勯鑹�
+ }
+ },
+ z: 2
+ },
+ // 鐐�
+ {
+ name: 'companyPoint',
+ type: 'effectScatter',
+ coordinateSystem: 'geo',
+ showEffectOn: 'render',
+ // zlevel: 2, // zlevel鐢ㄤ簬 Canvas 鍒嗗眰 鐩稿悓鐨勭粯鍒跺湪鍚屼竴涓猚anvas涓�
+ rippleEffect: {
+ number: 3, // 娉㈢汗鏁伴噺
+ period: 10, // 鍔ㄧ敾鍛ㄦ湡 鏁板�艰秺澶э紝娉㈠姩瓒婃參
+ scale: 3.5, // 鍔ㄧ敾涓尝绾圭殑鏈�澶х缉鏀炬瘮渚�
+ brushType: 'stroke' // 娉㈢汗鐨勭粯鍒舵柟寮� stroke fill
+ },
+ label: {
+ show: false,
+ position: 'right',
+ formatter: '{b}',
+ color: '#97e9e1',
+ fontSize: 14
+ },
+ symbol: 'circle',
+ symbolSize: 8,
+ data: points,
+ tooltip: {
+ show: true,
+ backgroundColor: 'rgba(0,0,0,0)',
+ padding: 0,
+ borderWidth: 0,
+ extraCssText: 'box-shadow: 0 0 0 rgba(0, 0, 0, 0);', // 鍘婚櫎box-shadow闃村奖
+ formatter: (params) => {
+ return `<div class="map-tip-box">
+ <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="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="text">鏈勾鍑哄簱閲�</span>
+ <span class="num">${params.data.yx}涓囨敮</span>
+ </span>
+ </div>
+ </div>`
+ }
+ },
+ 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
+ // }
+ ]
+ }
+ myChart.setOption(option)
+ window.addEventListener('resize', function () {//鎵ц
+ myChart.resize()
+ })
+}
+const initEnergy = (list) => {
+ var myChart = echarts.init(document.querySelector('.energyRef'))
+ // 缁樺埗鍥捐〃
+ myChart.setOption({
+ tooltip: {
+ trigger: 'axis',
+ axisPointer: {
+ // Use axis to trigger tooltip
+ type: 'shadow' // 'shadow' as default; can also be 'line' or 'shadow'
+ }
+ },
+ legend: {
+ itemGap: 24,
+ // icon: 'circle',
+ right: '12px',
+ top: '16px',
+ itemWidth: 28,
+ itemHeight: 14,
+ textStyle: {
+ color: '#fff',
+ borderColor: '#fff'
+ },
+ },
+ grid: {
+ left: '3%',
+ right: '4%',
+ bottom: '3%',
+ top: '15%',
+ containLabel: true
+ },
+ xAxis: {
+ type: 'value',
+ splitLine: {
+ show: true,
+ lineStyle: {
+ //杩欓噷杈撳叆绾挎潯鐨勬牱寮�
+ color: 'rgba(255,255,255,0.14)'
+ },
+ splitNumber: 4
+ }
+ },
+ yAxis: {
+ axisTick: {
+ show: false,
+ },
+ type: 'category',
+ axisLine: {
+ show: false
+ },
+ data: list.map(i => i.dateStr)
+ },
+ series: [
+ {
+ name: '鍦ㄩ��',
+ type: 'bar',
+ stack: 'total',
+ barWidth: 14,
+ label: {
+ show: true
+ },
+ emphasis: {
+ focus: 'series'
+ },
+ data: list.map(i => i.inTransitNum),
+ itemStyle: {
+ normal: {
+ color: {
+ type: 'linear',
+ x: 0,
+ y: 0,
+ x2: 1,
+ y2: 0,
+ colorStops: [{
+ offset: 0,
+ color: '#204d75'
+ }, {
+ offset: 1,
+ color: '#2f6eae'
+ }]
+ }
+ }
+ },
+ },
+ {
+ name: '鍒拌揣',
+ type: 'bar',
+ barWidth: 14,
+ stack: 'total',
+ label: {
+ show: true
+ },
+ itemStyle: {
+ normal: {
+ color: {
+ type: 'linear',
+ x: 0,
+ y: 0,
+ x2: 1,
+ y2: 0,
+ colorStops: [{
+ offset: 0,
+ color: '#3e8593'
+ }, {
+ offset: 1,
+ color: '#5cc2d2'
+ }]
+ }
+ }
+ },
+ emphasis: {
+ focus: 'series'
+ },
+ data: list.map(i => i.arriveNum)
+ }
+ ]
+ })
+ window.addEventListener('resize', function () {//鎵ц
+ 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'))
@@ -311,29 +720,29 @@
myChart.setOption({
tooltip: {
trigger: 'axis',
+ backgroundColor: '#091123',
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>
- `
- }
+ // 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: [1, 2, 3, 4, 5, 5]
+ data: dataList4.value.map(i => i.dateStr)
},
yAxis: {
type: 'value',
@@ -351,6 +760,19 @@
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%',
@@ -358,16 +780,13 @@
bottom: '2%',
containLabel: true
},
- legend: {
- data: ['鎬诲叆搴撻噺', '鎬诲嚭搴撻噺']
- },
series: [
{
name: '鎬诲叆搴撻噺',
- data: [10, 2, 30, 4, 4, 30].map(i => {
+ data: dataList4.value.map(item => {
return {
- name: i,
- value: i,
+ name: item.dateStr,
+ value: item.totalInNum,
}
}),
type: 'line',
@@ -411,20 +830,20 @@
width: 1.5, // 绾挎潯绮楃粏
},
symbol: 'circle',
- symbolSize: 10,
+ symbolSize: 4,
itemStyle: {
- normal: {
- color: '#4191f6', //鎶樼嚎鐐圭殑棰滆壊
- },
+ color: "#4190f4",
+ borderColor: "rgba(255,255,255,.3)",
+ borderWidth: 4,
},
smooth: true
},
{
name: '鎬诲嚭搴撻噺',
- data: [30, 2, 10, 4, 4, 20].map(i => {
+ data: dataList4.value.map(item => {
return {
- name: i,
- value: i,
+ name: item.dateStr,
+ value: item.totalOutNum,
}
}),
type: 'line',
@@ -462,14 +881,65 @@
width: 2, // 绾挎潯绮楃粏
},
symbol: 'circle',
- symbolSize: 10,
+ symbolSize: 4,
itemStyle: {
- normal: {
- color: '#F3BD00', //鎶樼嚎鐐圭殑棰滆壊
- },
+ 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
+ },
]
})
@@ -477,212 +947,243 @@
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({
- tooltip: {
- trigger: 'axis',
- axisPointer: {
- type: 'cross',
- crossStyle: {
- color: '#999'
- }
- }
- },
- toolbox: {
- feature: {
- dataView: { show: true, readOnly: false },
- magicType: { show: true, type: ['line', 'bar'] },
- restore: { show: true },
- saveAsImage: { show: true }
- }
- },
legend: {
- data: ['Evaporation', 'Precipitation', 'Temperature']
+ itemGap: 12,
+ // icon: 'circle',
+ right: '12px',
+ top: '0',
+ data: ['鎬诲簱瀛�', '褰撳墠搴撳瓨', '搴撳瓨鍒╃敤鐜�'],
+ itemWidth: 20,
+ itemHeight: 10,
+ textStyle: {
+ color: '#fff',
+ borderColor: '#fff'
+ },
},
- xAxis: [
- {
- type: 'category',
- data: ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun'],
- axisPointer: {
- type: 'shadow'
- }
- }
- ],
- yAxis: [
- {
- type: 'value',
- name: 'Precipitation',
- min: 0,
- max: 250,
- interval: 50,
- axisLabel: {
- formatter: '{value} ml'
- }
- },
- {
- type: 'value',
- name: 'Temperature',
- min: 0,
- max: 25,
- interval: 5,
- axisLabel: {
- formatter: '{value} 掳C'
- }
- }
- ],
- series: [
- {
- name: 'Evaporation',
- type: 'bar',
- tooltip: {
- valueFormatter: function (value) {
- return value + ' ml'
- }
- },
- data: [
- 2.0, 4.9, 7.0, 23.2, 25.6, 76.7, 135.6, 162.2, 32.6, 20.0, 6.4, 3.3
- ]
- },
- {
- name: 'Precipitation',
- type: 'bar',
- tooltip: {
- valueFormatter: function (value) {
- return value + ' ml'
- }
- },
- data: [
- 2.6, 5.9, 9.0, 26.4, 28.7, 70.7, 175.6, 182.2, 48.7, 18.8, 6.0, 2.3
- ]
- },
- {
- name: 'Temperature',
- type: 'line',
- yAxisIndex: 1,
- tooltip: {
- valueFormatter: function (value) {
- return value + ' 掳C'
- }
- },
- data: [2.0, 2.2, 3.3, 4.5, 6.3, 10.2, 20.3, 23.4, 23.0, 16.5, 12.0, 6.2]
- }
- ]
- })
-
- window.addEventListener('resize', function () {//鎵ц
- myChart.resize()
- })
-}
-
-const arr = ['#68e2e3', '#50afd3', '#377cdb', '#d5ae3a']
-const initEnergy = () => {
- var myChart = echarts.init(document.querySelector('.energyRef'))
- // 缁樺埗鍥捐〃
- const arr = ['#68e2e3', '#50afd3', '#377cdb', '#d5ae3a']
- myChart.setOption({
grid: {
- top: '20%',
- left: '2%',
- right: '2%',
- bottom: '4%',
+ left: '3%',
+ right: '0%',
+ bottom: '3%',
+ top: '24%',
containLabel: true
},
tooltip: {
- trigger: 'axis',
- axisPointer: {
- type: 'line'
- },
+ trigger: 'axis'
},
- xAxis: {
+ xAxis: [{
+ nameGap: 5,
type: 'category',
- data: [1, 2, 3, 4, 4, 5]
- },
- yAxis: {
- type: 'value',
- name: 'kw路h',
- nameTextStyle: {
- padding: [0, 0, 4, -30] // 鍥涗釜鏁板瓧鍒嗗埆涓轰笂鍙充笅宸︿笌鍘熶綅缃窛绂�
- },
- splitLine: {
+ axisLine: {
show: true,
lineStyle: {
- //杩欓噷杈撳叆绾挎潯鐨勬牱寮�
- color: 'rgba(255,255,255,0.14)',
- }
+ 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: [
{
- data: [1, 2, 3, 4, 5],
+ name: '鎬诲簱瀛�',
type: 'bar',
- barWidth: 10,
+ barWidth: 8,
+ barGap: '60%',
+ label: {
+ show: false,
+ position: 'top',
+ color: '#fff',
+ },
itemStyle: {
- normal: {
- color: new echarts.graphic.LinearGradient(
- 0, 0, 0, 1,
- [
- { offset: 0, color: arr[1] },
- { offset: 1, color: '#080807' }
- ]
- ),
- barBorderRadius: [10, 10, 0, 0]
- }
- }
+ 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 initEchart2 = () => {
- const myChart = echarts.init(document.getElementById('echart1'))
- const option = {
- series: [
- {
- type: 'pie',
- radius: ['86%', '100%'],
- label: {
- show: false,
- position: 'center'
- },
- padAngle: 5,
- itemStyle: {
- borderRadius: 10
- },
- color: colors,
- labelLine: {
- show: false
- },
- data: [
- { value: 1048, name: 'Search Engine' },
- { value: 735, name: 'Direct' },
- { value: 580, name: 'Email' }
- ]
- }
- ]
- }
- myChart.setOption(option)
- 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()
- getStockOut()
- initEchart2()
- initEchart3()
- initEchart4()
- initEchart5()
+ initData()
+
+ initMap()
+ // initEchart2()
+ // initEchart3()
+ // initEchart4()
+ // initEchart5()
})
</script>
+<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;
@@ -698,7 +1199,6 @@
.left_box_one {
margin-top: 20px;
padding: 0px 10px 30px 20px;
- border: 1px solid;
.content_wrap {
display: flex;
@@ -786,11 +1286,17 @@
.left_box_two {
margin-bottom: 20px;
- border: 1px solid;
+ position: relative;
+
+ .second_title {
+ position: absolute;
+ top: 14px;
+ left: 20px;
+ }
.energy_wrap {
width: 100%;
- height: 250px;
+ height: 300px;
.energyRef {
width: 100%;
@@ -802,7 +1308,6 @@
.left_box_three {
width: 440px;
padding: 0 15px;
- border: 1px solid;
.second_title {
margin-bottom: 10px;
@@ -821,11 +1326,12 @@
}
.item {
- flex: 1;
+ flex: 4;
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
}
+
}
.header {
@@ -839,13 +1345,15 @@
.center_box {
flex: 1;
padding: 0 20px;
- margin: 0 40px;
+ margin: 0 20px;
+ display: flex;
+ flex-direction: column;
.center_box_one {
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;
@@ -853,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%,
@@ -884,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;
}
}
}
@@ -964,7 +1495,14 @@
.center_box_two {
width: 100%;
- border: 1px solid;
+ flex: 1;
+
+ /* border: 1px solid; */
+ .echart_map {
+ width: 100%;
+ height: 100%;
+ /* transform: scale(.2); */
+ }
}
}
@@ -1251,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;
}
}
@@ -1265,6 +1809,10 @@
font-size: 14px;
color: #d2e0ff;
+ .tab {
+ cursor: pointer;
+ }
+
.separate {
width: 1px;
height: 14px;
--
Gitblit v1.9.3