You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

1004 lines
23 KiB
Vue

<template>
<div class="app-container">
2 years ago
<div class="headTitle">仓库</div>
<div class="exit" @click="exitFun"></div>
2 years ago
<div class="chart1">
<Chart ref="chart1"></Chart>
</div>
2 years ago
<div class="chart2">
<Chart ref="chart2"></Chart>
</div>
2 years ago
<div class="chart3">
<Chart ref="chart3"></Chart>
</div>
2 years ago
<div class="chart4">
<div class="title">
<div class="titleSpan1">排行</div>
<div class="titleSpan2">商品名</div>
<div class="titleSpan3">库存量</div>
</div>
2 years ago
<div class="chart4Info">
<div class="info" v-for="i in 100">
<div class="infoSpan1">
<div class="num">{{ i }}</div>
</div>
2 years ago
<div class="infoSpan2">SC-500Y,YZ怡宝24YP,C</div>
<div class="infoSpan3">666666</div>
</div>
</div>
</div>
2 years ago
<div class="chart5">
<Chart ref="chart5"></Chart>
</div>
2 years ago
<div class="chart6">
<Chart ref="chart6"></Chart>
</div>
</div>
</template>
<script>
import vueSeamlessScroll from "vue-seamless-scroll";
import Chart from "@/components/board/Chart";
import {getData} from "@/api/board/getData";
import * as echarts from 'echarts'
2 years ago
import chinaMap from "@/views/model/china2.json";
2 years ago
const vw = (document.documentElement.clientWidth || document.body.clientWidth) / 100
export default {
name: "Liner",
components: {
Chart,
vueSeamlessScroll,
},
props: {
exit: {
type: Function,
default: null
}
},
data() {
return {}
},
mounted() {
2 years ago
echarts.registerMap('china', chinaMap);
let points = [
{value: [118.8062, 31.9208], itemStyle: {color: "#4ab2e5"}},
{value: [127.9688, 45.368], itemStyle: {color: "#4fb6d2"}},
{value: [110.3467, 41.4899], itemStyle: {color: "#52b9c7"}},
{value: [125.8154, 44.2584], itemStyle: {color: "#5abead"}},
{value: [116.4551, 40.2539], itemStyle: {color: "#f34e2b"}},
{value: [123.1238, 42.1216], itemStyle: {color: "#f56321"}},
{value: [114.4995, 38.1006], itemStyle: {color: "#f56f1c"}},
{value: [117.4219, 39.4189], itemStyle: {color: "#f58414"}},
{value: [112.3352, 37.9413], itemStyle: {color: "#f58f0e"}},
{value: [109.1162, 34.2004], itemStyle: {color: "#f5a305"}},
{value: [103.5901, 36.3043], itemStyle: {color: "#e7ab0b"}},
{value: [106.3586, 38.1775], itemStyle: {color: "#dfae10"}},
{value: [101.4038, 36.8207], itemStyle: {color: "#d5b314"}},
{value: [103.9526, 30.7617], itemStyle: {color: "#c1bb1f"}},
{value: [108.384366, 30.439702], itemStyle: {color: "#b9be23"}},
{value: [113.0823, 28.2568], itemStyle: {color: "#a6c62c"}},
{value: [102.9199, 25.46639], itemStyle: {color: "#96cc34"}},
{value: [115.179594, 34.647758]},
];
this.$refs.chart1.setData({
2 years ago
tooltip: {
trigger: "item",
formatter: "{b} : {c} ({d}%)",
},
polar: {},
angleAxis: {
interval: 1,
type: "category",
data: [],
z: 10,
axisLine: {
show: false,
lineStyle: {
color: "#0B4A6B",
width: 1,
type: "solid",
},
},
axisLabel: {
interval: 0,
show: true,
color: "#0B4A6B00",
margin: 8,
fontSize: 16,
},
},
radiusAxis: {
min: 40,
max: 120,
interval: 20,
axisLine: {
show: false,
lineStyle: {
color: "#0B3E5E",
width: 1,
type: "solid",
},
},
axisLabel: {
formatter: "{value} %",
show: false,
padding: [0, 0, 20, 0],
color: "#0B3E5E",
fontSize: 16,
},
splitLine: {
lineStyle: {
color: "#0B3E5E00",
width: 2,
type: "solid",
},
},
},
calculable: true,
series: [
{
stack: "a",
type: "pie",
radius: ["0%", "80%"],
roseType: "area",
zlevel: 10,
label: {
normal: {
show: true,
formatter: "{b}\n{c}",
textStyle: {
fontSize: 12,
color: '#fff'
},
position: "outside",
},
emphasis: {
show: true,
},
},
labelLine: {
normal: {
show: true,
length: 20,
length2: 55,
},
emphasis: {
show: false,
},
},
data: [
{
value: 10,
name: "问题1",
},
{
value: 5,
name: "问题2",
},
{
value: 15,
name: "问题3",
},
{
value: 25,
name: "问题4",
},
{
value: 20,
name: "问题5",
},
{
value: 35,
name: "问题6",
},
],
},
],
})
this.$refs.chart3 && this.$refs.chart3.setData(this.chart1Option());
this.$refs.chart2.setData({
geo: {
map: "china",
aspectScale: 0.75, //长宽比
zoom: 1.1,
roam: false,
label: {
normal: {
show: false,
},
},
itemStyle: {
normal: {
areaColor: {
type: "radial",
x: 0.5,
y: 0.5,
r: 0.8,
colorStops: [
{
offset: 0,
color: "#09132c", // 0% 处的颜色
},
{
offset: 1,
color: "#274d68", // 100% 处的颜色
},
],
globalCoord: true, // 缺省为 false
},
shadowColor: "rgb(58,115,192)",
shadowOffsetX: 2,
shadowOffsetY: 2.3,
},
emphasis: {
areaColor: "#2AB8FF",
borderWidth: 0,
color: "green",
label: {
show: false,
},
},
},
regions: [
{
name: "南海诸岛",
itemStyle: {
areaColor: "rgba(0, 10, 52, 1)",
borderColor: "rgba(0, 10, 52, 1)",
normal: {
opacity: 0,
label: {
show: false,
color: "#009cc9",
},
},
},
},
],
},
series: [
{
type: "map",
roam: false,
label: {
normal: {
show: false,
},
},
itemStyle: {
normal: {
borderColor: "rgb(147, 235, 248)",
borderWidth: 1,
areaColor: {
type: "radial",
x: 0.5,
y: 0.5,
r: 0.8,
colorStops: [
{
offset: 0,
color: "#09132c", // 0% 处的颜色
},
{
offset: 1,
color: "#274d68", // 100% 处的颜色
},
],
globalCoord: true, // 缺省为 false
},
},
emphasis: {
areaColor: "rgb(46,229,206)",
// shadowColor: 'rgb(12,25,50)',
borderWidth: 0.1,
},
},
zoom: 1.1,
// roam: false,
map: "china", //使用
// data: this.difficultData //热力图数据 不同区域 不同的底色
},
{
type: "effectScatter",
coordinateSystem: "geo",
showEffectOn: "render",
zlevel: 1,
rippleEffect: {
period: 15,
scale: 4,
brushType: "fill",
},
hoverAnimation: true,
label: {
normal: {
formatter: "{b}",
position: "right",
offset: [15, 0],
color: "#1DE9B6",
show: true,
},
},
itemStyle: {
normal: {
color: "#1DE9B6",
shadowBlur: 10,
shadowColor: "#333",
},
},
symbolSize: 2,
data: points,
},
{
type: "lines",
zlevel: 2,
effect: {
show: true,
period: 2, //箭头指向速度,值越小速度越快
trailLength: 0.4, //特效尾迹长度[0,1]值越大,尾迹越长重
symbol: "arrow", //箭头图标
symbolSize: 5, //图标大小
},
lineStyle: {
normal: {
color: "#1DE9B6",
width: 1, //线条宽度
opacity: 0.1, //尾迹线条透明度
curveness: 0.3, //尾迹线条曲直度
},
},
data: [
{
coords: [
[115.179594, 34.647758],
[118.8062, 31.9208],
],
lineStyle: {color: "#4ab2e5"},
},
{
coords: [
[115.179594, 34.647758],
[127.9688, 45.368],
],
lineStyle: {color: "#4fb6d2"},
},
{
coords: [
[115.179594, 34.647758],
[110.3467, 41.4899],
],
lineStyle: {color: "#52b9c7"},
},
{
coords: [
[115.179594, 34.647758],
[125.8154, 44.2584],
],
lineStyle: {color: "#5abead"},
},
{
coords: [
[115.179594, 34.647758],
[116.4551, 40.2539],
],
lineStyle: {color: "#f34e2b"},
},
{
coords: [
[115.179594, 34.647758],
[123.1238, 42.1216],
],
lineStyle: {color: "#f56321"},
},
{
coords: [
[115.179594, 34.647758],
[114.4995, 38.1006],
],
lineStyle: {color: "#f56f1c"},
},
{
coords: [
[115.179594, 34.647758],
[117.4219, 39.4189],
],
lineStyle: {color: "#f58414"},
},
{
coords: [
[115.179594, 34.647758],
[112.3352, 37.9413],
],
lineStyle: {color: "#f58f0e"},
},
{
coords: [
[115.179594, 34.647758],
[109.1162, 34.2004],
],
lineStyle: {color: "#f5a305"},
},
{
coords: [
[115.179594, 34.647758],
[103.5901, 36.3043],
],
lineStyle: {color: "#e7ab0b"},
},
{
coords: [
[115.179594, 34.647758],
[106.3586, 38.1775],
],
lineStyle: {color: "#dfae10"},
},
{
coords: [
[115.179594, 34.647758],
[101.4038, 36.8207],
],
lineStyle: {color: "#d5b314"},
},
{
coords: [
[115.179594, 34.647758],
[103.9526, 30.7617],
],
lineStyle: {color: "#c1bb1f"},
},
{
coords: [
[115.179594, 34.647758],
[108.384366, 30.439702],
],
lineStyle: {color: "#b9be23"},
},
{
coords: [
[115.179594, 34.647758],
[113.0823, 28.2568],
],
lineStyle: {color: "#a6c62c"},
},
{
coords: [
[115.179594, 34.647758],
[102.9199, 25.46639],
],
lineStyle: {color: "#96cc34"},
},
],
},
],
})
this.$refs.chart5.setData({
tooltip: {
trigger: "axis",
axisPointer: {
type: "shadow",
textStyle: {
color: "#fff",
},
},
},
grid: {
borderWidth: 0,
top: 2 * vw,
bottom: 1.5 * vw,
left: 2.5 * vw,
right: 2.5 * vw,
textStyle: {
color: "#fff",
},
},
legend: {
x: "center",
top: "0",
textStyle: {
fontSize: 0.6 * vw,
color: "#90979c",
},
},
xAxis: [
{
type: "category",
axisLine: {
lineStyle: {
color: "#90979c",
},
},
splitLine: {
show: false,
},
axisTick: {
show: false,
},
splitArea: {
show: false,
},
axisLabel: {
interval: 0,
fontSize: 0.5 * vw,
},
data: [1, 2, 3, 4, 5, 6, 7, 8, 9],
},
],
yAxis: [
{
2 years ago
name: '库存数',
type: "value",
splitLine: {
show: false,
},
axisLine: {
lineStyle: {
color: "#90979c",
},
},
axisTick: {
show: false,
},
axisLabel: {
interval: 0,
fontSize: 0.5 * vw,
},
splitArea: {
show: false,
},
},
],
series: [
{
2 years ago
name: "库存数",
type: "bar",
borderWidth: '15%',
itemStyle: {
normal: {
2 years ago
color: "#62aafe",
},
},
data: [
709, 1917, 2455, 2610, 1719, 1433, 1544, 3285, 5208
],
},
],
})
2 years ago
this.$refs.chart6.setData({
tooltip: {
trigger: "axis",
axisPointer: {
type: "shadow",
textStyle: {
color: "#fff",
},
},
},
grid: {
borderWidth: 0,
top: 2 * vw,
bottom: 1.5 * vw,
left: 2.5 * vw,
right: 2.5 * vw,
textStyle: {
color: "#fff",
},
},
legend: {
x: "center",
top: "0",
textStyle: {
fontSize: 0.6 * vw,
color: "#90979c",
},
},
xAxis: [
{
type: "category",
axisLine: {
lineStyle: {
color: "#90979c",
},
},
splitLine: {
show: false,
},
axisTick: {
show: false,
},
splitArea: {
show: false,
},
axisLabel: {
interval: 0,
fontSize: 0.5 * vw,
},
data: [1, 2, 3, 4, 5, 6, 7, 8, 9],
},
],
yAxis: [
{
2 years ago
name: '库存数',
type: "value",
splitLine: {
show: false,
},
axisLine: {
lineStyle: {
color: "#90979c",
},
},
axisTick: {
show: false,
},
axisLabel: {
interval: 0,
fontSize: 0.5 * vw,
},
splitArea: {
show: false,
},
},
{
type: "value",
2 years ago
name: "周转率",
nameTextStyle: {
color: "#ffffff66",
},
position: "right",
splitLine: {
show: false,
},
axisTick: {
show: false,
},
2 years ago
axisLine: {
show: false,
},
2 years ago
axisLabel: {
show: true,
textStyle: {
color: "#ffffff66",
},
},
},
],
series: [
{
2 years ago
name: "库存数",
type: "bar",
borderWidth: '15%',
itemStyle: {
normal: {
2 years ago
color: "#62aafe",
},
},
data: [
709, 1917, 2455, 2610, 1719, 1433, 1544, 3285, 5208
],
},
{
2 years ago
name: "周转率",
type: "line",
2 years ago
yAxisIndex:1,
label: {
normal: {
2 years ago
show: true,
position: "bottom",
textStyle: {
color: "#a8aab0",
fontStyle: "normal",
fontFamily: "微软雅黑",
fontSize: 0.75 * vw,
},
},
},
2 years ago
showAllSymbol: true, //显示所有图形。
symbol: "circle", //标记的图形为实心圆
symbolSize: 5, //标记的大小
itemStyle: {
//折线拐点标志的样式
color: "#ffffff",
},
lineStyle: {
color: "#ffffff",
},
data: [94.7, 93.2, 94.7, 93.4, 94.4, 99.4, 92.4,96.2,97.2],
},
],
})
2 years ago
},
methods: {
exitFun() {
this.exit()
},
chart1Option(data, id) {
if (!data) {
data = {
yNameOne: ["订单00001", "订单00001", "订单00001", "订单00001", "订单00001", "订单00001", "订单00001", "订单00001", "订单00001", "订单00001", "订单00001"],
yData: [41, 99, 41, 99, 32, 41, 24, 4, 16, 64, 18],
xDataName: "达成率",
status: [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]
}
}
let myColor = ["green", "red", "yellow", "blue", "#8B78F6"];
let bgBar = []
data.yData.forEach(() => {
bgBar.push(100)
})
let option = {
grid: {
// left: "-10%",
left: "0%",
right: "8%",
bottom: "0%",
top: "0%",
containLabel: true,
},
dataZoom: [],
xAxis: {
show: false,
},
yAxis: [
{
show: true,
data: data.yNameOne,
inverse: true,
axisLine: {
show: false,
},
2 years ago
splitLine: {
show: false,
},
2 years ago
axisTick: {
show: false,
},
2 years ago
axisLabel: {
color: "#fff",
// margin:150,
fontSize: 0.75 * vw,
textStyle: {
2 years ago
textAlign: 'center'
},
},
},
2 years ago
],
series: [
{
name: "条",
type: "bar",
yAxisIndex: 0,
data: data.yData,
barWidth: '80%',
itemStyle: {
normal: {
barBorderRadius: 30,
color: function (params) {
return myColor[data.status[params.dataIndex]];
},
},
},
},
2 years ago
{
name: "框",
type: "bar",
yAxisIndex: 0,
barGap: "-100%",
data: bgBar,
barWidth: '80%',
label: {
show: true,
2 years ago
position: "right",
textStyle: {
color: "#fff",
2 years ago
fontSize: 0.75 * vw
},
2 years ago
formatter: function (val, index, e) {
return data.yData[val.dataIndex] + '%'
}
},
2 years ago
itemStyle: {
normal: {
color: "none",
borderColor: "#00c1de",
borderWidth: 1,
barBorderRadius: 15,
},
},
},
2 years ago
],
};
return option
}
}
}
</script>
<style lang="less" scoped>
.app-container {
2 years ago
background-image: url("~@/assets/model/equipment/bg.jpg");
background-repeat: no-repeat;
background-size: 100% 100%;
background-color: #021e31;
width: 100%;
height: 100%;
position: absolute;
top: 0;
left: 0;
}
.exit {
background-image: url("~@/assets/model/factoryIntroduction/exit.png");
background-repeat: no-repeat;
background-size: 100% 100%;
position: absolute;
top: 1%;
right: 1%;
font-weight: bold;
width: 2vw;
height: 2vw;
color: #e7b219;
}
.headTitle {
position: absolute;
top: 5%;
left: 50%;
transform: translate(-50%, -100%);
font-size: 1.5vw;
color: #d6eaed;
letter-spacing: 10px;
}
2 years ago
.chart1 {
position: absolute;
2 years ago
top: 14.5%;
left: 3.5%;
width: 23.5%;
height: 20%;
}
2 years ago
.chart2 {
position: absolute;
2 years ago
top: 9%;
left: 39%;
width: 32.5%;
height: 48.5%;
}
2 years ago
.chart3 {
position: absolute;
2 years ago
top: 14.5%;
left: 73%;
width: 23.5%;
height: 43%;
}
2 years ago
.chart4 {
position: absolute;
2 years ago
top: 42.5%;
left: 3.5%;
width: 23.5%;
height: 52%;
}
2 years ago
.chart5 {
position: absolute;
2 years ago
top: 66%;
left: 28.5%;
width: 43%;
height: 29%;
}
2 years ago
.chart6 {
position: absolute;
2 years ago
top: 66%;
left: 73%;
width: 23.5%;
height: 29%;
}
2 years ago
.title{
position: absolute;
2 years ago
top: 0;
left: 2.5%;
width: 95%;
height: 2vw;
border-bottom: 3px solid #efd108;
.titleSpan1{
position: absolute;
2 years ago
top: 0;
width: 2.5vw;
white-space: nowrap;
2 years ago
left: 0;
height: 2vw;
line-height: 2vw;
text-align: center;
2 years ago
color: #efd108;
font-size: 1vw;
}
2 years ago
.titleSpan2{
position: absolute;
2 years ago
top: 0;
width: calc(100% - 2.5vw - 5vw);
text-align: center;
2 years ago
white-space: nowrap;
left: 2.5vw;
height: 2vw;
line-height: 2vw;
color: #efd108;
font-size: 1vw;
}
2 years ago
.titleSpan3{
position: absolute;
2 years ago
text-align: center;
top: 0;
width: 5vw;
white-space: nowrap;
right: 0;
height: 2vw;
line-height: 2vw;
color: #efd108;
font-size: 1vw;
}
2 years ago
}
.chart4Info{
position: absolute;
top: calc(2vw + 3px);
left: 2.5%;
width: 95%;
height: calc(100% - 2vw - 3px);
overflow: hidden;
.info{
width: 100%;
height: 2vw;
border-bottom: 1px solid #ffffff7F;
margin-bottom: 2px;
position: relative;
.infoSpan1{
position: absolute;
top: 0;
width: 2.5vw;
white-space: nowrap;
left: 0;
height: 2vw;
line-height: 2vw;
text-align: center;
color: #FFFFFFDD;
font-size: 1vw;
2 years ago
}
.infoSpan2{
position: absolute;
top: 0;
width: calc(100% - 2.5vw - 5vw);
text-align: center;
white-space: nowrap;
left: 2.5vw;
height: 2vw;
line-height: 2vw;
color: #FFFFFFDD;
font-size: 1vw;
}
.infoSpan3{
position: absolute;
text-align: center;
top: 0;
width: 5vw;
white-space: nowrap;
right: 0;
height: 2vw;
line-height: 2vw;
color: #FFFFFFDD;
font-size: 1vw;
}
}
}
</style>