添加看板

master
夜笙歌 11 months ago
parent 9aedce7737
commit f9c98107a0

@ -57,6 +57,7 @@
"vue-cropper": "0.5.5",
"vue-meta": "2.4.0",
"vue-router": "3.4.9",
"vue-seamless-scroll": "^1.1.23",
"vuedraggable": "2.24.3",
"vuex": "3.6.0"
},

@ -1,6 +1,6 @@
<!DOCTYPE html>
<html>
<head>
<head lang="zh-CN">
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
<meta name="renderer" content="webkit">

Binary file not shown.

After

Width:  |  Height:  |  Size: 846 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 778 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 831 KiB

After

Width:  |  Height:  |  Size: 828 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 826 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 790 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1018 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 846 KiB

After

Width:  |  Height:  |  Size: 831 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 752 KiB

@ -0,0 +1,35 @@
<template>
<div style="width: 100%;height: 100%"/>
</template>
<script>
import * as echarts from 'echarts';
export default {
expose: ['setData'],
data() {
return {
chart: null,
}
},
mounted() {
},
beforeDestroy() {
if (!this.chart) {
return
}
this.chart.dispose()
this.chart = null
},
methods: {
setData(option) {
this.initChart(option)
},
initChart(option) {
this.chart = echarts.init(this.$el, 'macarons')
this.chart.setOption(option)
}
}
}
</script>

@ -1,23 +0,0 @@
<template>
<div class="app">
</div>
</template>
<script>
export default {
name: "Liner",
data() {
return {
time:'',
date:'',
}
},
created() {
},
methods: {}
};
</script>
<style scoped>
</style>

@ -17,8 +17,8 @@ export default {
},
data() {
return {
time: '1',
date: '1'
time: '',
date: ''
}
},
created() {
@ -26,14 +26,15 @@ export default {
let date = new Date()
let YYYY = date.getFullYear()
let MM = (date.getMonth() + 1).toString().length === 1 ? ('0' + (date.getMonth() + 1)) : (date.getMonth() + 1)
let dd = (date.getDate() + 1).toString().length === 1 ? ('0' + (date.getDate() + 1)) : (date.getDate() + 1)
let HH = (date.getHours() + 1).toString().length === 1 ? ('0' + (date.getHours() + 1)) : (date.getHours() + 1)
let mm = (date.getMinutes() + 1).toString().length === 1 ? ('0' + (date.getMinutes() + 1)) : (date.getMinutes() + 1)
let ss = (date.getSeconds() + 1).toString().length === 1 ? ('0' + (date.getSeconds() + 1)) : (date.getSeconds() + 1)
let dd = date.getDate().toString().length === 1 ? ('0' + date.getDate()) : date.getDate()
let HH = date.getHours().toString().length === 1 ? ('0' + date.getHours()) : date.getHours()
let mm = date.getMinutes().toString().length === 1 ? ('0' + date.getMinutes()) : date.getMinutes()
let ss = date.getSeconds().toString().length === 1 ? ('0' + date.getSeconds()) : date.getSeconds()
this.date = `${YYYY} - ${MM} - ${dd}`
this.time = `${HH} : ${mm} : ${ss}`
}
getDateIntervalFun = setInterval(getDate,1000)
getDate()
getDateIntervalFun = setInterval(getDate, 1000)
},
beforeDestroy() {
getDateIntervalFun = null

@ -0,0 +1,922 @@
<template>
<div class="app-container">
<div class="headTitle">箱壳自动成型线数据平台</div>
<div class="topNum team">{{ team }}</div>
<div class="topNum planNum">{{ planNum }}</div>
<div class="topNum practicalNum">{{ practicalNum }}</div>
<div class="topNum differenceValue">{{ differenceValue }}</div>
<div class="title" v-for="(i,k) in title"
:style="'top:'+(titlePosition[k]&&titlePosition[k].top||0)+'%;left:'+(titlePosition[k]&&titlePosition[k].left||0)+'%'">
{{ i }}
</div>
<div class="scrollTable">
<div style="background-color: #094170">
<div class="scrollTableItem" style="font-weight: bold;">
编号
</div>
<div class="scrollTableItem" style="font-weight: bold;">
生产工单
</div>
<div class="scrollTableItem" style="font-weight: bold;">
计划数量
</div>
<div class="scrollTableItem" style="font-weight: bold;">
实际数量
</div>
<div class="scrollTableItem" style="font-weight: bold;">
差异值
</div>
<div class="scrollTableItem" style="font-weight: bold;">
完成率
</div>
</div>
<vue-seamless-scroll
:class-option="scrollTableOption"
:data="scrollTableData"
class="case-item"
style="height: 84%;overflow: hidden;"
>
<div
v-for="(item, index) in scrollTableData"
:key="index"
>
<div :style='"background-color:" + ((index % 2 === 0)? "#053460":"#032d57") '>
<div
class="scrollTableItem">
{{ item.name }}
</div>
<div
class="scrollTableItem">
{{ item.value }}
</div>
<div
class="scrollTableItem">
{{ item.value2 }}
</div>
<div
class="scrollTableItem">
{{ item.value2 }}
</div>
<div
class="scrollTableItem">
{{ item.value2 }}
</div>
<div
class="scrollTableItem">
{{ item.value2 }}
</div>
</div>
</div>
</vue-seamless-scroll>
</div>
<div class="chart1">
<Chart ref="chart1"></Chart>
</div>
<div class="chart2">
<Chart ref="chart2"></Chart>
</div>
<div class="chart3">
<Chart ref="chart3"></Chart>
</div>
</div>
</template>
<script>
import vueSeamlessScroll from "vue-seamless-scroll";
import Chart from "../../../components/board/Chart";
import * as echarts from 'echarts'
export default {
components: {
vueSeamlessScroll,
Chart
},
name: "Liner",
data() {
return {
title: [
'工单计划',
'库存统计',
'箱壳自动成型线统计(按产品型号统计)',
'箱壳自动成型线统计(按小时产量统计)',
],
titlePosition: [
{
top: 19.8,
left: 5.5
},
{
top: 19.8,
left: 53
},
{
top: 70.5,
left: 5.5
},
{
top: 70.5,
left: 53
},
],
team: '白班',
planNum: 1000,
practicalNum: 1000,
differenceValue: 1000,
scrollTableOption: {
step: 0.5, //
limitMoveNum: 5, // this.dataList.length
hoverStop: true, // stop
direction: 1, // 0 1 2 3
openWatch: true, // dom
singleHeight: 0, // (0) direction => 0/1
singleWidth: 0, // (0) direction => 2/3
waitTime: 0,
},
scrollTableData: [
{
value: 1,
value2: 1,
name: '1',
},
{
value: 1,
value2: 1,
name: '1',
},
{
value: 1,
value2: 1,
name: '1',
},
{
value: 1,
value2: 1,
name: '1',
},
{
value: 1,
value2: 1,
name: '1',
},
],
}
},
mounted() {
this.$refs.chart1.setData({
tooltip: {
trigger: "axis",
axisPointer: {
//
type: "shadow", // 线'line' | 'shadow'
},
},
grid: {
left: "0",
right: "4%",
bottom: "0",
top: "5%",
containLabel: true,
},
legend: {
data: ["内胆库", "箱壳库"],
right: 'center',
top: 0,
textStyle: {
color: "#fff",
},
itemWidth: 12,
itemHeight: 10,
// itemGap: 35
},
xAxis: {
type: "category",
data: ["9-1", "9-2", "9-3", "9-4", "9-5", "9-6", "9-7", "9-8"],
axisLine: {
lineStyle: {
color: "white",
},
},
axisLabel: {
// interval: 0,
// rotate: 40,
textStyle: {
fontFamily: "Microsoft YaHei",
},
},
},
yAxis: {
type: "value",
axisLine: {
show: false,
lineStyle: {
color: "white",
},
},
splitLine: {
show: false,
},
axisLabel: {},
},
series: [
{
name: "内胆库",
type: "bar",
barWidth: "15%",
itemStyle: {
normal: {
color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [
{
offset: 0,
color: "#39ffff",
},
{
offset: 1,
color: "#f5804d",
},
]),
},
},
data: [400, 400, 300, 300, 300, 400, 400, 400],
},
{
name: "箱壳库",
type: "bar",
barWidth: "15%",
itemStyle: {
normal: {
color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [
{
offset: 0,
color: "#47cbfd",
},
{
offset: 1,
color: "#3e8aff",
},
]),
},
},
data: [400, 500, 500, 500, 500, 400, 400, 500],
},
],
})
this.$refs.chart2.setData({
grid: {
left: "0",
right: "4%",
bottom: '2%',
top: "10%",
containLabel: true,
},
tooltip: {
trigger: 'axis',
axisPointer: {
type: 'shadow'
}
},
xAxis: {
data: ["A-01", "A-02", "A-03"],
axisTick: {
show: false,
},
axisLine: {
show: false,
},
axisLabel: {
show: true,
margin: 30,
textStyle: {
color: "#f0f0f0",
},
},
},
yAxis: {
splitLine: {
show: false,
},
axisTick: {
show: false,
},
axisLine: {
show: false,
},
axisLabel: {
show: false,
},
},
series: [
{
name: "上底",
type: "pictorialBar",
symbolSize: [30, 16],
symbolOffset: [0, -8],
z: 12,
itemStyle: {
normal: {
color: "#14b1eb",
},
},
tooltip: {
show: false
},
data: [
{
value: 100,
symbolPosition: "end",
},
{
value: 50,
symbolPosition: "end",
},
{
value: 20,
symbolPosition: "end",
},
],
},
{
name: "下底",
type: "pictorialBar",
symbolSize: [30, 16],
symbolOffset: [0, 8],
z: 12,
itemStyle: {
normal: {
color: "#14b1eb",
},
},
tooltip: {
show: false
},
data: [100, 50, 20],
},
{
name: "内环",
type: "pictorialBar",
symbolSize: [40, 20],
symbolOffset: [0, 10],
z: 11,
tooltip: {
show: false
},
itemStyle: {
normal: {
color: "transparent",
borderColor: "#14b1eb",
borderWidth: 5,
},
},
data: [100, 50, 20],
},
{
tooltip: {
show: false
},
name: "外环",
type: "pictorialBar",
symbolSize: [55, 26],
symbolOffset: [0, 13],
z: 10,
itemStyle: {
normal: {
color: "transparent",
borderColor: "#14b1eb",
borderType: "dashed",
borderWidth: 5,
},
},
data: [100, 50, 20],
},
{
name: "数量",
type: "bar",
itemStyle: {
normal: {
color: "#14b1eb",
opacity: 0.7,
},
},
silent: true,
barWidth: 30,
barGap: "-100%", // Make series be overlap
data: [100, 50, 20],
},
],
})
echarts.graphic.registerShape(
"CubeLeft",
echarts.graphic.extendShape({
shape: {
x: 0,
y: 0,
},
buildPath: function (ctx, shape) {
const xAxisPoint = shape.xAxisPoint;
const c0 = [shape.x, shape.y];
const c1 = [shape.x - 9, shape.y - 9];
const c2 = [xAxisPoint[0] - 9, xAxisPoint[1] - 9];
const c3 = [xAxisPoint[0], xAxisPoint[1]];
ctx
.moveTo(c0[0], c0[1])
.lineTo(c1[0], c1[1])
.lineTo(c2[0], c2[1])
.lineTo(c3[0], c3[1])
.closePath();
},
})
);
echarts.graphic.registerShape(
"CubeRight",
echarts.graphic.extendShape({
shape: {
x: 0,
y: 0,
},
buildPath: function (ctx, shape) {
const xAxisPoint = shape.xAxisPoint;
const c1 = [shape.x, shape.y];
const c2 = [xAxisPoint[0], xAxisPoint[1]];
const c3 = [xAxisPoint[0] + 18, xAxisPoint[1] - 9];
const c4 = [shape.x + 18, shape.y - 9];
ctx
.moveTo(c1[0], c1[1])
.lineTo(c2[0], c2[1])
.lineTo(c3[0], c3[1])
.lineTo(c4[0], c4[1])
.closePath();
},
})
);
echarts.graphic.registerShape(
"CubeTop",
echarts.graphic.extendShape({
shape: {
x: 0,
y: 0,
},
buildPath: function (ctx, shape) {
const c1 = [shape.x, shape.y];
const c2 = [shape.x + 18, shape.y - 9];
const c3 = [shape.x + 9, shape.y - 18];
const c4 = [shape.x - 9, shape.y - 9];
ctx
.moveTo(c1[0], c1[1])
.lineTo(c2[0], c2[1])
.lineTo(c3[0], c3[1])
.lineTo(c4[0], c4[1])
.closePath();
},
})
);
let value = [
2012, 1230, 3790, 2349, 1654, 1230, 3790, 2349, 1654, 3790, 2349, 1654,
]
// this.$refs.chart3.setData({
// grid: {
// left: 0,
// right: 0,
// bottom: "5%",
// top: '30%',
// containLabel: true,
// },
// xAxis: {
// type: "category",
// data: [
// "",
// "",
// "",
// "",
// "",
// "",
// "",
// "",
// "",
// "",
// "",
// "",
// ],
// axisLine: {
// show: false,
// lineStyle: {
// color: "white",
// },
// },
// axisTick: {
// show: false,
// length: 9,
// alignWithLabel: true,
// lineStyle: {
// color: "#7DFFFD",
// },
// },
// axisLabel: {
// fontSize: 10,
// },
// },
// yAxis: {
// type: "value",
// show: false,
// },
// series: [
// {
// type: "custom",
// renderItem: function (params, api) {
// const location = api.coord([api.value(0), api.value(1)]);
// return {
// type: "group",
// children: [
// {
// type: "CubeLeft",
// shape: {
// api,
// xValue: api.value(0),
// yValue: api.value(1),
// x: location[0],
// y: location[1],
// xAxisPoint: api.coord([api.value(0), 0]),
// },
// style: {
// fill: "rgba(7,29,97,.6)",
// },
// },
// {
// type: "CubeRight",
// shape: {
// api,
// xValue: api.value(0),
// yValue: api.value(1),
// x: location[0],
// y: location[1],
// xAxisPoint: api.coord([api.value(0), 0]),
// },
// style: {
// fill: "rgba(10,35,108,.7)",
// },
// },
// {
// type: "CubeTop",
// shape: {
// api,
// xValue: api.value(0),
// yValue: api.value(1),
// x: location[0],
// y: location[1],
// xAxisPoint: api.coord([api.value(0), 0]),
// },
// style: {
// fill: "rgba(11,42,106,.8)",
// },
// },
// ],
// };
// },
// data: [
// 6000, 6000, 6000, 6000, 6000, 6000, 6000, 6000, 6000, 6000, 6000, 6000,
// ],
// },
// {
// type: "custom",
// renderItem: (params, api) => {
// const location = api.coord([api.value(0), api.value(1)]);
// return {
// type: "group",
// children: [
// {
// type: "CubeLeft",
// shape: {
// api,
// xValue: api.value(0),
// yValue: api.value(1),
// x: location[0],
// y: location[1],
// xAxisPoint: api.coord([api.value(0), 0]),
// },
// style: {
// fill: new echarts.graphic.LinearGradient(0, 0, 0, 1, [
// {
// offset: 0,
// color: "#3B80E2",
// },
// {
// offset: 1,
// color: "#49BEE5",
// },
// ]),
// },
// },
// {
// type: "CubeRight",
// shape: {
// api,
// xValue: api.value(0),
// yValue: api.value(1),
// x: location[0],
// y: location[1],
// xAxisPoint: api.coord([api.value(0), 0]),
// },
// style: {
// fill: new echarts.graphic.LinearGradient(0, 0, 0, 1, [
// {
// offset: 0,
// color: "#3B80E2",
// },
// {
// offset: 1,
// color: "#49BEE5",
// },
// ]),
// },
// },
// {
// type: "CubeTop",
// shape: {
// api,
// xValue: api.value(0),
// yValue: api.value(1),
// x: location[0],
// y: location[1],
// xAxisPoint: api.coord([api.value(0), 0]),
// },
// style: {
// fill: new echarts.graphic.LinearGradient(0, 0, 0, 1, [
// {
// offset: 0,
// color: "#3B80E2",
// },
// {
// offset: 1,
// color: "#49BEE5",
// },
// ]),
// },
// },
// ],
// };
// },
// data: value,
// },
// {
// type: "bar",
// label: {
// normal: {
// show: true,
// position: "top",
// fontSize: 16,
// color: "#fff",
// offset: [4, -25],
// formatter:(e)=>{
// return value[e.dataIndex]
// }
// },
// },
// itemStyle: {
// color: "transparent",
// },
// data: [
// 6000, 6000, 6000, 6000, 6000, 6000, 6000, 6000, 6000, 6000, 6000, 6000,
// ],
// },
// ],
// })
this.$refs.chart3.setData({
tooltip: {
trigger: "axis",
axisPointer: {
type: "shadow",
},
},
grid: {
top: "10%",
right: "0%",
left: "5%",
bottom: 20,
},
xAxis: [
{
type: "category",
data: [
"1时",
"2时",
"3时",
"4时",
"5时",
"6时",
"7时",
"8时",
"9时",
"10时",
"11时",
"12时",
"13时",
"14时",
"15时",
"16时",
"17时",
"18时",
"19时",
"20时",
"21时",
"22时",
"23时",
"24时",
],
axisLine: {
lineStyle: {
color: "rgba(66, 192, 255, .3)",
},
},
axisLabel: {
interval: 0,
margin: 10,
color: "#05D5FF",
textStyle: {
fontSize: 11,
},
},
axisTick: {
//
show: false,
},
},
],
yAxis: [
{
axisLabel: {
padding: [3, 0, 0, 0],
formatter: "{value}",
color: "rgba(95, 187, 235, 1)",
textStyle: {
fontSize: 11,
},
},
axisTick: {
show: true,
},
axisLine: {
lineStyle: {
color: "rgba(66, 192, 255, .3)",
},
},
splitLine: {
lineStyle: {
color: "rgba(255,255,255,0)",
},
},
},
],
series: [
{
name:'产量',
type: "bar",
data: [
20, 50, 15, 35, 50, 30, 40, 50, 60, 20, 50, 15, 35, 50, 30, 40, 50, 60, 20, 50, 15, 35, 50, 30,
],
barWidth: "10",
itemStyle: {
normal: {
color: new echarts.graphic.LinearGradient(
0,
0,
0,
1,
[
{
offset: 0,
color: "rgba(5, 213, 255, 1)", // 0%
},
{
offset: 0.98,
color: "rgba(5, 213, 255, 0)", // 100%
},
],
false
),
shadowColor: "rgba(5, 213, 255, 1)",
shadowBlur: 4,
},
},
label: {
normal: {
show: true,
lineHeight: 10,
formatter: "{c}",
position: "top",
textStyle: {
color: "#fff",
fontSize: 10,
},
},
},
},
],
})
},
methods: {}
};
</script>
<style scoped>
.app-container {
background-image: url("../../../assets/board/liner.jpg");
background-repeat: no-repeat;
background-size: 100% 100%;
width: 100%;
height: 100%;
position: absolute;
top: 0;
left: 0;
}
.headTitle {
position: absolute;
top: 5%;
left: 50%;
transform: translate(-50%, -100%);
font-size: 1.5vw;
color: #d6eaed;
letter-spacing: 10px;
}
.title {
position: absolute;
transform: translateY(-50%);
color: #5db9e8;
font-size: 0.9vw;
}
.topNum {
position: absolute;
transform: translate(-50%, -50%);
color: #5db9e8;
top: 11.7%;
letter-spacing: 0.5vw;
}
.team {
font-size: 1.5vw;
left: 16.8%;
}
.planNum {
font-size: 1.7vw;
left: 41.2%;
}
.practicalNum {
left: 66.2%;
font-size: 1.7vw;
}
.differenceValue {
font-size: 1.7vw;
left: 90.7%;
}
.scrollTable {
position: absolute;
top: 23%;
left: 4%;
width: 45%;
height: 18%;
}
.scrollTableItem {
color: rgb(185, 186, 192);
margin: auto 0px;
padding: 4px 0;
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
text-align: center;
display: inline-block;
width: 16.6%;
}
.chart1 {
position: absolute;
top: 24%;
left: 51%;
width: 45%;
height: 17%;
}
.chart2 {
position: absolute;
top: 74%;
left: 3.6%;
width: 45.5%;
height: 20.7%;
}
.chart3 {
position: absolute;
top: 74%;
left: 51%;
width: 45.5%;
height: 20.7%;
}
</style>

@ -0,0 +1,472 @@
<template>
<div class="app-container">
<div class="headTitle">箱壳后板成型线可视化平台</div>
<div class="topNum team">{{ team }}</div>
<div class="topNum planNum">{{ planNum }}</div>
<div class="topNum practicalNum">{{ practicalNum }}</div>
<div class="topNum differenceValue">{{ differenceValue }}</div>
<div class="title" v-for="(i,k) in title"
:style="'top:'+(titlePosition[k]&&titlePosition[k].top||0)+'%;left:'+(titlePosition[k]&&titlePosition[k].left||0)+'%'">
{{ i }}
</div>
<div class="scrollTable">
<div style="background-color: #094170">
<div class="scrollTableItem" style="font-weight: bold;">
编号
</div>
<div class="scrollTableItem" style="font-weight: bold;">
生产工单
</div>
<div class="scrollTableItem" style="font-weight: bold;">
计划数量
</div>
<div class="scrollTableItem" style="font-weight: bold;">
实际数量
</div>
<div class="scrollTableItem" style="font-weight: bold;">
差异值
</div>
<div class="scrollTableItem" style="font-weight: bold;">
完成率
</div>
</div>
<vue-seamless-scroll
:class-option="scrollTableOption"
:data="scrollTableData"
class="case-item"
style="height: 84%;overflow: hidden;"
>
<div
v-for="(item, index) in scrollTableData"
:key="index"
>
<div :style='"background-color:" + ((index % 2 === 0)? "#053460":"#032d57") '>
<div
class="scrollTableItem">
{{ item.name }}
</div>
<div
class="scrollTableItem">
{{ item.value }}
</div>
<div
class="scrollTableItem">
{{ item.value2 }}
</div>
<div
class="scrollTableItem">
{{ item.value2 }}
</div>
<div
class="scrollTableItem">
{{ item.value2 }}
</div>
<div
class="scrollTableItem">
{{ item.value2 }}
</div>
</div>
</div>
</vue-seamless-scroll>
</div>
<div class="chart1">
<Chart ref="chart1"></Chart>
</div>
<div class="chart2">
<Chart ref="chart2"></Chart>
</div>
<div class="chart3">
<Chart ref="chart3"></Chart>
</div>
</div>
</template>
<script>
import vueSeamlessScroll from "vue-seamless-scroll";
import Chart from "../../../components/board/Chart";
import * as echarts from 'echarts'
export default {
components: {
vueSeamlessScroll,
Chart
},
name: "Liner",
data() {
return {
title: [
'工单计划',
'出入库统计',
'库存统计',
'发泡夹具状态',
],
titlePosition: [
{
top: 19.8,
left: 5.5
},
{
top: 19.8,
left: 53
},
{
top: 60,
left: 5.5
},
{
top: 60,
left: 53
},
],
team: '白班',
planNum: 1000,
practicalNum: 1000,
differenceValue: 1000,
scrollTableOption: {
step: 0.5, //
limitMoveNum: 5, // this.dataList.length
hoverStop: true, // stop
direction: 1, // 0 1 2 3
openWatch: true, // dom
singleHeight: 0, // (0) direction => 0/1
singleWidth: 0, // (0) direction => 2/3
waitTime: 0,
},
scrollTableData: [
{
value: 1,
value2: 1,
name: '1',
},
{
value: 1,
value2: 1,
name: '1',
},
{
value: 1,
value2: 1,
name: '1',
},
{
value: 1,
value2: 1,
name: '1',
},
{
value: 1,
value2: 1,
name: '1',
},
],
}
},
mounted() {
this.$refs.chart1.setData({
tooltip: {
trigger: "axis",
axisPointer: {
//
type: "shadow", // 线'line' | 'shadow'
},
},
grid: {
left: "0",
right: "4%",
bottom: "0",
top: "5%",
containLabel: true,
},
legend: {
data: ["入库", "出库"],
right: 'center',
top: 0,
textStyle: {
color: "#fff",
},
itemWidth: 12,
itemHeight: 10,
// itemGap: 35
},
xAxis: {
type: "category",
data: ["9-1", "9-2", "9-3", "9-4", "9-5", "9-6", "9-7", "9-8"],
axisLine: {
lineStyle: {
color: "white",
},
},
axisLabel: {
// interval: 0,
// rotate: 40,
textStyle: {
fontFamily: "Microsoft YaHei",
},
},
},
yAxis: {
type: "value",
axisLine: {
show: false,
lineStyle: {
color: "white",
},
},
splitLine: {
show: false,
},
axisLabel: {},
},
series: [
{
name: "入库",
type: "bar",
barWidth: "15%",
itemStyle: {
normal: {
color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [
{
offset: 0,
color: "#39ffff",
},
{
offset: 1,
color: "#f5804d",
},
]),
},
},
data: [400, 400, 300, 300, 300, 400, 400, 400],
},
{
name: "出库",
type: "bar",
barWidth: "15%",
itemStyle: {
normal: {
color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [
{
offset: 0,
color: "#47cbfd",
},
{
offset: 1,
color: "#3e8aff",
},
]),
},
},
data: [400, 500, 500, 500, 500, 400, 400, 500],
},
],
})
this.$refs.chart2.setData({
tooltip: {
trigger: "axis",
axisPointer: {
//
type: "shadow", // 线'line' | 'shadow'
},
},
grid: {
left: "0",
right: "4%",
bottom: "0",
top: "5%",
containLabel: true,
},
legend: {
data: ["内胆库", "箱壳库"],
right: 'center',
top: 0,
textStyle: {
color: "#fff",
},
itemWidth: 12,
itemHeight: 10,
// itemGap: 35
},
xAxis: {
type: "category",
data: ["A-01", "A-02", "A-03", "A-04", "A-05", "A-06", "A-07", "A-08"],
axisLine: {
lineStyle: {
color: "white",
},
},
axisLabel: {
// interval: 0,
// rotate: 40,
textStyle: {
fontFamily: "Microsoft YaHei",
},
},
},
yAxis: {
type: "value",
axisLine: {
show: false,
lineStyle: {
color: "white",
},
},
splitLine: {
show: false,
},
axisLabel: {},
},
series: [
{
name: "内胆库",
type: "bar",
barWidth: "15%",
itemStyle: {
normal: {
color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [
{
offset: 0,
color: "#39ffff",
},
{
offset: 1,
color: "#f5804d",
},
]),
},
},
data: [400, 400, 300, 300, 300, 400, 400, 400],
},
{
name: "箱壳库",
type: "bar",
barWidth: "15%",
itemStyle: {
normal: {
color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [
{
offset: 0,
color: "#47cbfd",
},
{
offset: 1,
color: "#3e8aff",
},
]),
},
},
data: [400, 500, 500, 500, 500, 400, 400, 500],
},
],
})
},
methods: {}
};
</script>
<style scoped>
.app-container {
background-image: url("../../../assets/board/caseShell.jpg");
background-repeat: no-repeat;
background-size: 100% 100%;
width: 100%;
height: 100%;
position: absolute;
top: 0;
left: 0;
}
.headTitle {
position: absolute;
top: 5%;
left: 50%;
transform: translate(-50%, -100%);
font-size: 1.5vw;
color: #d6eaed;
letter-spacing: 10px;
}
.title {
position: absolute;
transform: translateY(-50%);
color: #dddddd;
font-size: 1vw;
letter-spacing: 2px;
}
.topNum {
position: absolute;
transform: translate(-50%, -50%);
color: #5db9e8;
top: 11.7%;
letter-spacing: 0.5vw;
}
.team {
font-size: 1.5vw;
left: 16.8%;
}
.planNum {
font-size: 1.7vw;
left: 41.2%;
}
.practicalNum {
left: 66.2%;
font-size: 1.7vw;
}
.differenceValue {
font-size: 1.7vw;
left: 90.7%;
}
.scrollTable {
position: absolute;
top: 23%;
left: 4%;
width: 45%;
height: 31%
}
.scrollTableItem {
color: rgb(185, 186, 192);
margin: auto 0px;
padding: 4px 0;
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
text-align: center;
display: inline-block;
width: 16.6%;
}
.chart1 {
position: absolute;
top: 23.5%;
left: 51%;
width: 45%;
height: 31%;
}
.chart2 {
position: absolute;
top: 64%;
left: 3.6%;
width: 45.5%;
height: 30.7%;
}
.chart3 {
position: absolute;
top: 64%;
left: 51%;
width: 45.5%;
height: 30.7%;
}
</style>

@ -0,0 +1,702 @@
<template>
<div class="app-container">
<div class="headTitle">门体可视化平台</div>
<div class="topNum team">{{ team }}</div>
<div class="topNum planNum">{{ planNum }}</div>
<div class="topNum practicalNum">{{ practicalNum }}</div>
<div class="topNum differenceValue">{{ differenceValue }}</div>
<div class="title" v-for="(i,k) in title"
:style="'top:'+(titlePosition[k]&&titlePosition[k].top||0)+'%;left:'+(titlePosition[k]&&titlePosition[k].left||0)+'%'">
{{ i }}
</div>
<div class="scrollTable">
<div style="background-color: #094170">
<div class="scrollTableItem" style="font-weight: bold;">
编号
</div>
<div class="scrollTableItem" style="font-weight: bold;">
生产工单
</div>
<div class="scrollTableItem" style="font-weight: bold;">
计划数量
</div>
<div class="scrollTableItem" style="font-weight: bold;">
实际数量
</div>
<div class="scrollTableItem" style="font-weight: bold;">
差异值
</div>
<div class="scrollTableItem" style="font-weight: bold;">
完成率
</div>
</div>
<vue-seamless-scroll
:class-option="scrollTableOption"
:data="scrollTableData"
class="case-item"
style="height: 84%;overflow: hidden;"
>
<div
v-for="(item, index) in scrollTableData"
:key="index"
>
<div :style='"background-color:" + ((index % 2 === 0)? "#053460":"#032d57") '>
<div
class="scrollTableItem">
{{ item.name }}
</div>
<div
class="scrollTableItem">
{{ item.value }}
</div>
<div
class="scrollTableItem">
{{ item.value2 }}
</div>
<div
class="scrollTableItem">
{{ item.value2 }}
</div>
<div
class="scrollTableItem">
{{ item.value2 }}
</div>
<div
class="scrollTableItem">
{{ item.value2 }}
</div>
</div>
</div>
</vue-seamless-scroll>
</div>
<div class="scrollTable2">
<div style="background-color: #094170">
<div class="scrollTableItem" style="font-weight: bold;">
编号
</div>
<div class="scrollTableItem" style="font-weight: bold;">
生产工单
</div>
<div class="scrollTableItem" style="font-weight: bold;">
计划数量
</div>
<div class="scrollTableItem" style="font-weight: bold;">
实际数量
</div>
<div class="scrollTableItem" style="font-weight: bold;">
差异值
</div>
<div class="scrollTableItem" style="font-weight: bold;">
完成率
</div>
</div>
<vue-seamless-scroll
:class-option="scrollTableOption"
:data="scrollTableData"
class="case-item"
style="height: 84%;overflow: hidden;"
>
<div
v-for="(item, index) in scrollTableData"
:key="index"
>
<div :style='"background-color:" + ((index % 2 === 0)? "#053460":"#032d57") '>
<div
class="scrollTableItem">
{{ item.name }}
</div>
<div
class="scrollTableItem">
{{ item.value }}
</div>
<div
class="scrollTableItem">
{{ item.value2 }}
</div>
<div
class="scrollTableItem">
{{ item.value2 }}
</div>
<div
class="scrollTableItem">
{{ item.value2 }}
</div>
<div
class="scrollTableItem">
{{ item.value2 }}
</div>
</div>
</div>
</vue-seamless-scroll>
</div>
<div class="chart1">
<Chart ref="chart1"></Chart>
</div>
<div class="chart2">
<Chart ref="chart2"></Chart>
</div>
<div class="chart3">
<Chart ref="chart3"></Chart>
</div>
</div>
</template>
<script>
import vueSeamlessScroll from "vue-seamless-scroll";
import Chart from "../../../components/board/Chart";
import * as echarts from 'echarts'
export default {
components: {
vueSeamlessScroll,
Chart
},
name: "Liner",
data() {
return {
title: [
'工单计划',
'门体匹配统计',
'小时统计',
'型号统计',
'泡前库统计',
],
titlePosition: [
{
top: 19.8,
left: 5.5
},
{
top: 46.6,
left: 5.5
},
{
top: 73.3,
left: 5.5
},
{
top: 73.3,
left: 37
},
{
top: 73.3,
left: 68.5
},
],
team: '白班',
planNum: 1000,
practicalNum: 1000,
differenceValue: 1000,
scrollTableOption: {
step: 0.5, //
limitMoveNum: 5, // this.dataList.length
hoverStop: true, // stop
direction: 1, // 0 1 2 3
openWatch: true, // dom
singleHeight: 0, // (0) direction => 0/1
singleWidth: 0, // (0) direction => 2/3
waitTime: 0,
},
scrollTableData: [
{
value: 1,
value2: 1,
name: '1',
},
{
value: 1,
value2: 1,
name: '1',
},
{
value: 1,
value2: 1,
name: '1',
},
{
value: 1,
value2: 1,
name: '1',
},
{
value: 1,
value2: 1,
name: '1',
},
],
}
},
mounted() {
this.$refs.chart1.setData({
grid: {
left: "0",
right: "4%",
bottom: '2%',
top: "10%",
containLabel: true,
},
xAxis: {
data: [
"1时",
"2时",
"3时",
"4时",
"5时",
"7时",
"8时",
],
axisLine: {
lineStyle: {
color: "#3d5269",
},
},
axisLabel: {
interval: 0,
color: "#fff",
fontSize: 14,
},
},
yAxis: {
name: "单位:次",
nameTextStyle: {
color: "#fff",
fontSize: 16,
},
axisLine: {
lineStyle: {
color: "#3d5269",
},
},
axisLabel: {
color: "#fff",
fontSize: 10,
},
splitLine: {
show: true,
lineStyle: {
color: "#2d3d53",
},
},
interval: 500,
},
series: [
{
type: "bar",
barWidth: '40%',
itemStyle: {
normal: {
color: new echarts.graphic.LinearGradient(
0,
0,
0,
1,
[
{
offset: 0,
color: "#5ef3ff",
},
{
offset: 1,
color: "#06a4f4",
},
],
false
),
},
},
label: {
normal: {
show: true,
fontSize: 12,
fontWeight: "bold",
color: "#ffffff",
position: "top",
},
},
data: [254, 3254, 1654, 2454, 2757, 2011, 1211],
},
],
})
this.$refs.chart2.setData({
grid: {
left: "0",
right: "4%",
bottom: '2%',
top: "10%",
containLabel: true,
},
tooltip: {
trigger: 'axis',
axisPointer: {
type: 'shadow'
}
},
xAxis: {
data: ["A-01", "A-02", "A-03"],
axisTick: {
show: false,
},
axisLine: {
show: false,
},
axisLabel: {
show: true,
margin: 30,
textStyle: {
color: "#f0f0f0",
},
},
},
yAxis: {
splitLine: {
show: false,
},
axisTick: {
show: false,
},
axisLine: {
show: false,
},
axisLabel: {
show: false,
},
},
series: [
{
name: "上底",
type: "pictorialBar",
symbolSize: [30, 16],
symbolOffset: [0, -8],
z: 12,
itemStyle: {
normal: {
color: "#14b1eb",
},
},
tooltip: {
show: false
},
data: [
{
value: 100,
symbolPosition: "end",
},
{
value: 50,
symbolPosition: "end",
},
{
value: 20,
symbolPosition: "end",
},
],
},
{
name: "下底",
type: "pictorialBar",
symbolSize: [30, 16],
symbolOffset: [0, 8],
z: 12,
itemStyle: {
normal: {
color: "#14b1eb",
},
},
tooltip: {
show: false
},
data: [100, 50, 20],
},
{
name: "内环",
type: "pictorialBar",
symbolSize: [40, 20],
symbolOffset: [0, 10],
z: 11,
tooltip: {
show: false
},
itemStyle: {
normal: {
color: "transparent",
borderColor: "#14b1eb",
borderWidth: 5,
},
},
data: [100, 50, 20],
},
{
tooltip: {
show: false
},
name: "外环",
type: "pictorialBar",
symbolSize: [55, 26],
symbolOffset: [0, 13],
z: 10,
itemStyle: {
normal: {
color: "transparent",
borderColor: "#14b1eb",
borderType: "dashed",
borderWidth: 5,
},
},
data: [100, 50, 20],
},
{
name: "数量",
type: "bar",
itemStyle: {
normal: {
color: "#14b1eb",
opacity: 0.7,
},
},
silent: true,
barWidth: 30,
barGap: "-100%", // Make series be overlap
data: [100, 50, 20],
},
],
})
this.$refs.chart3.setData({
tooltip: {
trigger: "axis",
axisPointer: {
type: "shadow",
},
},
grid: {
top: "10%",
right: "0%",
left: "5%",
bottom: 20,
},
xAxis: [
{
type: "category",
data: [
"A1库",
"A2库",
"A3库",
"A4库",
"A5库",
"A6库",
"A7库",
"A8库",
"A9库",
"A10库",
"A11库",
"A12库",
],
axisLine: {
lineStyle: {
color: "rgba(66, 192, 255, .3)",
},
},
axisLabel: {
interval: 0,
margin: 10,
color: "#05D5FF",
textStyle: {
fontSize: 11,
},
},
axisTick: {
//
show: false,
},
},
],
yAxis: [
{
axisLabel: {
padding: [3, 0, 0, 0],
formatter: "{value}",
color: "rgba(95, 187, 235, 1)",
textStyle: {
fontSize: 11,
},
},
axisTick: {
show: true,
},
axisLine: {
lineStyle: {
color: "rgba(66, 192, 255, .3)",
},
},
splitLine: {
lineStyle: {
color: "rgba(255,255,255,0)",
},
},
},
],
series: [
{
name: '库存',
type: "bar",
data: [
20, 50, 15, 35, 50, 30, 40, 50, 60, 20, 50, 15
],
barWidth: "30%",
itemStyle: {
normal: {
color: new echarts.graphic.LinearGradient(
0,
0,
0,
1,
[
{
offset: 0,
color: "rgba(5, 213, 255, 1)", // 0%
},
{
offset: 0.98,
color: "rgba(5, 213, 255, 0)", // 100%
},
],
false
),
shadowColor: "rgba(5, 213, 255, 1)",
shadowBlur: 4,
},
},
label: {
normal: {
show: true,
lineHeight: 10,
formatter: "{c}",
position: "top",
textStyle: {
color: "#fff",
fontSize: 10,
},
},
},
},
],
})
},
methods: {}
};
</script>
<style scoped>
.app-container {
background-image: url("../../../assets/board/door.jpg");
background-repeat: no-repeat;
background-size: 100% 100%;
width: 100%;
height: 100%;
position: absolute;
top: 0;
left: 0;
}
.headTitle {
position: absolute;
top: 5%;
left: 50%;
transform: translate(-50%, -100%);
font-size: 1.5vw;
color: #d6eaed;
letter-spacing: 10px;
}
.title {
position: absolute;
transform: translateY(-50%);
color: #dddddd;
font-size: 1vw;
letter-spacing: 2px;
}
.topNum {
position: absolute;
transform: translate(-50%, -50%);
color: #5db9e8;
top: 11.7%;
letter-spacing: 0.5vw;
}
.team {
font-size: 1.5vw;
left: 16.8%;
}
.planNum {
font-size: 1.7vw;
left: 41.2%;
}
.practicalNum {
left: 66.2%;
font-size: 1.7vw;
}
.differenceValue {
font-size: 1.7vw;
left: 90.7%;
}
.scrollTable {
position: absolute;
top: 23%;
left: 4%;
width: 45%;
height: 18%;
}
.scrollTable2 {
position: absolute;
top: 49.5%;
left: 4%;
width: 45%;
height: 18%;
}
.scrollTableItem {
color: rgb(185, 186, 192);
margin: auto 0px;
padding: 4px 0;
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
text-align: center;
display: inline-block;
width: 16.6%;
}
.chart1 {
position: absolute;
top: 76%;
left: 3.6%;
width: 29.5%;
height: 19.5%;
}
.chart2 {
position: absolute;
top: 76%;
left: 35%;
width: 30%;
height: 19.5%;
}
.chart3 {
position: absolute;
top: 76%;
left: 66.5%;
width: 30%;
height: 19.5%;
}
</style>

@ -0,0 +1,694 @@
<template>
<div class="app-container">
<div class="headTitle">安全监控可视化平台</div>
<div class="title" v-for="(i,k) in title"
:style="'top:'+(titlePosition[k]&&titlePosition[k].top||0)+'%;left:'+(titlePosition[k]&&titlePosition[k].left||0)+'%'">
{{ i }}
</div>
<div class="scrollTable">
<div style="background-color: #094170">
<div class="scrollTableItem" style="font-weight: bold;">
编号
</div>
<div class="scrollTableItem" style="font-weight: bold;">
生产工单
</div>
<div class="scrollTableItem" style="font-weight: bold;">
计划数量
</div>
<div class="scrollTableItem" style="font-weight: bold;">
实际数量
</div>
<div class="scrollTableItem" style="font-weight: bold;">
差异值
</div>
<div class="scrollTableItem" style="font-weight: bold;">
完成率
</div>
</div>
<vue-seamless-scroll
:class-option="scrollTableOption"
:data="scrollTableData"
class="case-item"
style="height: 84%;overflow: hidden;"
>
<div
v-for="(item, index) in scrollTableData"
:key="index"
>
<div :style='"background-color:" + ((index % 2 === 0)? "#053460":"#032d57") '>
<div
class="scrollTableItem">
{{ item.name }}
</div>
<div
class="scrollTableItem">
{{ item.value }}
</div>
<div
class="scrollTableItem">
{{ item.value2 }}
</div>
<div
class="scrollTableItem">
{{ item.value2 }}
</div>
<div
class="scrollTableItem">
{{ item.value2 }}
</div>
<div
class="scrollTableItem">
{{ item.value2 }}
</div>
</div>
</div>
</vue-seamless-scroll>
</div>
<div class="scrollTable2">
<div style="background-color: #094170">
<div class="scrollTableItem" style="font-weight: bold;">
编号
</div>
<div class="scrollTableItem" style="font-weight: bold;">
生产工单
</div>
<div class="scrollTableItem" style="font-weight: bold;">
计划数量
</div>
<div class="scrollTableItem" style="font-weight: bold;">
实际数量
</div>
<div class="scrollTableItem" style="font-weight: bold;">
差异值
</div>
<div class="scrollTableItem" style="font-weight: bold;">
完成率
</div>
</div>
<vue-seamless-scroll
:class-option="scrollTableOption"
:data="scrollTableData"
class="case-item"
style="height: 84%;overflow: hidden;"
>
<div
v-for="(item, index) in scrollTableData"
:key="index"
>
<div :style='"background-color:" + ((index % 2 === 0)? "#053460":"#032d57") '>
<div
class="scrollTableItem">
{{ item.name }}
</div>
<div
class="scrollTableItem">
{{ item.value }}
</div>
<div
class="scrollTableItem">
{{ item.value2 }}
</div>
<div
class="scrollTableItem">
{{ item.value2 }}
</div>
<div
class="scrollTableItem">
{{ item.value2 }}
</div>
<div
class="scrollTableItem">
{{ item.value2 }}
</div>
</div>
</div>
</vue-seamless-scroll>
</div>
<div class="chart1">
<Chart ref="chart1"></Chart>
</div>
<div class="chart2">
<Chart ref="chart2"></Chart>
</div>
<div class="chart3">
<Chart ref="chart3"></Chart>
</div>
</div>
</template>
<script>
import vueSeamlessScroll from "vue-seamless-scroll";
import Chart from "../../../components/board/Chart";
import * as echarts from 'echarts'
export default {
components: {
vueSeamlessScroll,
Chart
},
name: "Liner",
data() {
return {
title: [
'工单计划',
'门体匹配统计',
'小时统计',
'型号统计',
'泡前库统计',
],
titlePosition: [
{
top: 19.8,
left: 5.5
},
{
top: 46.6,
left: 5.5
},
{
top: 73.3,
left: 5.5
},
{
top: 73.3,
left: 37
},
{
top: 73.3,
left: 68.5
},
],
scrollTableOption: {
step: 0.5, //
limitMoveNum: 5, // this.dataList.length
hoverStop: true, // stop
direction: 1, // 0 1 2 3
openWatch: true, // dom
singleHeight: 0, // (0) direction => 0/1
singleWidth: 0, // (0) direction => 2/3
waitTime: 0,
},
scrollTableData: [
{
value: 1,
value2: 1,
name: '1',
},
{
value: 1,
value2: 1,
name: '1',
},
{
value: 1,
value2: 1,
name: '1',
},
{
value: 1,
value2: 1,
name: '1',
},
{
value: 1,
value2: 1,
name: '1',
},
],
}
},
mounted() {
this.$refs.chart1.setData({
grid: {
left: "0",
right: "4%",
bottom: '2%',
top: "10%",
containLabel: true,
},
xAxis: {
data: [
"1时",
"2时",
"3时",
"4时",
"5时",
"7时",
"8时",
],
axisLine: {
lineStyle: {
color: "#3d5269",
},
},
axisLabel: {
interval: 0,
color: "#fff",
fontSize: 14,
},
},
yAxis: {
name: "单位:次",
nameTextStyle: {
color: "#fff",
fontSize: 16,
},
axisLine: {
lineStyle: {
color: "#3d5269",
},
},
axisLabel: {
color: "#fff",
fontSize: 10,
},
splitLine: {
show: true,
lineStyle: {
color: "#2d3d53",
},
},
interval: 500,
},
series: [
{
type: "bar",
barWidth: '40%',
itemStyle: {
normal: {
color: new echarts.graphic.LinearGradient(
0,
0,
0,
1,
[
{
offset: 0,
color: "#5ef3ff",
},
{
offset: 1,
color: "#06a4f4",
},
],
false
),
},
},
label: {
normal: {
show: true,
fontSize: 12,
fontWeight: "bold",
color: "#ffffff",
position: "top",
},
},
data: [254, 3254, 1654, 2454, 2757, 2011, 1211],
},
],
})
this.$refs.chart2.setData({
grid: {
left: "0",
right: "4%",
bottom: '2%',
top: "10%",
containLabel: true,
},
tooltip: {
trigger: 'axis',
axisPointer: {
type: 'shadow'
}
},
xAxis: {
data: ["A-01", "A-02", "A-03"],
axisTick: {
show: false,
},
axisLine: {
show: false,
},
axisLabel: {
show: true,
margin: 30,
textStyle: {
color: "#f0f0f0",
},
},
},
yAxis: {
splitLine: {
show: false,
},
axisTick: {
show: false,
},
axisLine: {
show: false,
},
axisLabel: {
show: false,
},
},
series: [
{
name: "上底",
type: "pictorialBar",
symbolSize: [30, 16],
symbolOffset: [0, -8],
z: 12,
itemStyle: {
normal: {
color: "#14b1eb",
},
},
tooltip: {
show: false
},
data: [
{
value: 100,
symbolPosition: "end",
},
{
value: 50,
symbolPosition: "end",
},
{
value: 20,
symbolPosition: "end",
},
],
},
{
name: "下底",
type: "pictorialBar",
symbolSize: [30, 16],
symbolOffset: [0, 8],
z: 12,
itemStyle: {
normal: {
color: "#14b1eb",
},
},
tooltip: {
show: false
},
data: [100, 50, 20],
},
{
name: "内环",
type: "pictorialBar",
symbolSize: [40, 20],
symbolOffset: [0, 10],
z: 11,
tooltip: {
show: false
},
itemStyle: {
normal: {
color: "transparent",
borderColor: "#14b1eb",
borderWidth: 5,
},
},
data: [100, 50, 20],
},
{
tooltip: {
show: false
},
name: "外环",
type: "pictorialBar",
symbolSize: [55, 26],
symbolOffset: [0, 13],
z: 10,
itemStyle: {
normal: {
color: "transparent",
borderColor: "#14b1eb",
borderType: "dashed",
borderWidth: 5,
},
},
data: [100, 50, 20],
},
{
name: "数量",
type: "bar",
itemStyle: {
normal: {
color: "#14b1eb",
opacity: 0.7,
},
},
silent: true,
barWidth: 30,
barGap: "-100%", // Make series be overlap
data: [100, 50, 20],
},
],
})
this.$refs.chart3.setData({
tooltip: {
trigger: "axis",
axisPointer: {
type: "shadow",
},
},
grid: {
top: "10%",
right: "0%",
left: "5%",
bottom: 20,
},
xAxis: [
{
type: "category",
data: [
"A1库",
"A2库",
"A3库",
"A4库",
"A5库",
"A6库",
"A7库",
"A8库",
"A9库",
"A10库",
"A11库",
"A12库",
],
axisLine: {
lineStyle: {
color: "rgba(66, 192, 255, .3)",
},
},
axisLabel: {
interval: 0,
margin: 10,
color: "#05D5FF",
textStyle: {
fontSize: 11,
},
},
axisTick: {
//
show: false,
},
},
],
yAxis: [
{
axisLabel: {
padding: [3, 0, 0, 0],
formatter: "{value}",
color: "rgba(95, 187, 235, 1)",
textStyle: {
fontSize: 11,
},
},
axisTick: {
show: true,
},
axisLine: {
lineStyle: {
color: "rgba(66, 192, 255, .3)",
},
},
splitLine: {
lineStyle: {
color: "rgba(255,255,255,0)",
},
},
},
],
series: [
{
name: '库存',
type: "bar",
data: [
20, 50, 15, 35, 50, 30, 40, 50, 60, 20, 50, 15
],
barWidth: "30%",
itemStyle: {
normal: {
color: new echarts.graphic.LinearGradient(
0,
0,
0,
1,
[
{
offset: 0,
color: "rgba(5, 213, 255, 1)", // 0%
},
{
offset: 0.98,
color: "rgba(5, 213, 255, 0)", // 100%
},
],
false
),
shadowColor: "rgba(5, 213, 255, 1)",
shadowBlur: 4,
},
},
label: {
normal: {
show: true,
lineHeight: 10,
formatter: "{c}",
position: "top",
textStyle: {
color: "#fff",
fontSize: 10,
},
},
},
},
],
})
},
methods: {}
};
</script>
<style scoped>
.app-container {
background-image: url("../../../assets/board/doorSafety.jpg");
background-repeat: no-repeat;
background-size: 100% 100%;
width: 100%;
height: 100%;
position: absolute;
top: 0;
left: 0;
}
.headTitle {
position: absolute;
top: 5%;
left: 50%;
transform: translate(-50%, -100%);
font-size: 1.5vw;
color: #d6eaed;
letter-spacing: 10px;
}
.title {
position: absolute;
transform: translateY(-50%);
color: #dddddd;
font-size: 1vw;
letter-spacing: 2px;
}
.topNum {
position: absolute;
transform: translate(-50%, -50%);
color: #5db9e8;
top: 11.7%;
letter-spacing: 0.5vw;
}
.team {
font-size: 1.5vw;
left: 16.8%;
}
.planNum {
font-size: 1.7vw;
left: 41.2%;
}
.practicalNum {
left: 66.2%;
font-size: 1.7vw;
}
.differenceValue {
font-size: 1.7vw;
left: 90.7%;
}
.scrollTable {
position: absolute;
top: 23%;
left: 4%;
width: 45%;
height: 18%;
}
.scrollTable2 {
position: absolute;
top: 49.5%;
left: 4%;
width: 45%;
height: 18%;
}
.scrollTableItem {
color: rgb(185, 186, 192);
margin: auto 0px;
padding: 4px 0;
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
text-align: center;
display: inline-block;
width: 16.6%;
}
.chart1 {
position: absolute;
top: 76%;
left: 3.6%;
width: 29.5%;
height: 19.5%;
}
.chart2 {
position: absolute;
top: 76%;
left: 35%;
width: 30%;
height: 19.5%;
}
.chart3 {
position: absolute;
top: 76%;
left: 66.5%;
width: 30%;
height: 19.5%;
}
</style>

@ -0,0 +1,809 @@
<template>
<div class="app-container">
<div class="headTitle">箱壳后板成型线可视化平台</div>
<div class="topNum planNum">{{ planNum }}</div>
<div class="topNum practicalNum">{{ practicalNum }}</div>
<div class="topNum differenceValue">{{ differenceValue }}</div>
<div class="scrollTable">
<div style="background-color: #094170">
<div class="scrollTableItem" style="font-weight: bold;">
编号
</div>
<div class="scrollTableItem" style="font-weight: bold;">
生产工单
</div>
<div class="scrollTableItem" style="font-weight: bold;">
计划数量
</div>
<div class="scrollTableItem" style="font-weight: bold;">
实际数量
</div>
<div class="scrollTableItem" style="font-weight: bold;">
差异值
</div>
<div class="scrollTableItem" style="font-weight: bold;">
完成率
</div>
</div>
<vue-seamless-scroll
:class-option="scrollTableOption"
:data="scrollTableData"
class="case-item"
style="height: 84%;overflow: hidden;"
>
<div
v-for="(item, index) in scrollTableData"
:key="index"
>
<div :style='"background-color:" + ((index % 2 === 0)? "#053460":"#032d57") '>
<div
class="scrollTableItem">
{{ item.name }}
</div>
<div
class="scrollTableItem">
{{ item.value }}
</div>
<div
class="scrollTableItem">
{{ item.value2 }}
</div>
<div
class="scrollTableItem">
{{ item.value2 }}
</div>
<div
class="scrollTableItem">
{{ item.value2 }}
</div>
<div
class="scrollTableItem">
{{ item.value2 }}
</div>
</div>
</div>
</vue-seamless-scroll>
</div>
<div class="chart1">
<Chart ref="chart1"></Chart>
</div>
<div class="chart2">
<Chart ref="chart2"></Chart>
</div>
<div class="chart3">
<Chart ref="chart3"></Chart>
</div>
<div class="chart4">
<Chart ref="chart4"></Chart>
</div>
<div class="scrollTable1">
<div style="background-color: #094170">
<div class="scrollTableItem" style="font-weight: bold;">
编号
</div>
<div class="scrollTableItem" style="font-weight: bold;">
生产工单
</div>
<div class="scrollTableItem" style="font-weight: bold;">
计划数量
</div>
<div class="scrollTableItem" style="font-weight: bold;">
实际数量
</div>
<div class="scrollTableItem" style="font-weight: bold;">
差异值
</div>
<div class="scrollTableItem" style="font-weight: bold;">
完成率
</div>
</div>
<vue-seamless-scroll
:class-option="scrollTableOption"
:data="scrollTableData"
class="case-item"
style="height: 84%;overflow: hidden;"
>
<div
v-for="(item, index) in scrollTableData"
:key="index"
>
<div :style='"background-color:" + ((index % 2 === 0)? "#053460":"#032d57") '>
<div
class="scrollTableItem">
{{ item.name }}
</div>
<div
class="scrollTableItem">
{{ item.value }}
</div>
<div
class="scrollTableItem">
{{ item.value2 }}
</div>
<div
class="scrollTableItem">
{{ item.value2 }}
</div>
<div
class="scrollTableItem">
{{ item.value2 }}
</div>
<div
class="scrollTableItem">
{{ item.value2 }}
</div>
</div>
</div>
</vue-seamless-scroll>
</div>
<div class="total">
<div style="background-color: #094170">
<div class="scrollTableItem" style="font-weight: bold;">
合计
</div>
<div class="scrollTableItem" style="font-weight: bold;">
12
</div>
<div class="scrollTableItem" style="font-weight: bold;">
13
</div>
<div class="scrollTableItem" style="font-weight: bold;">
14
</div>
<div class="scrollTableItem" style="font-weight: bold;">
15
</div>
<div class="scrollTableItem" style="font-weight: bold;">
16
</div>
</div>
</div>
</div>
</template>
<script>
import vueSeamlessScroll from "vue-seamless-scroll";
import Chart from "../../../components/board/Chart";
import * as echarts from 'echarts'
export default {
components: {
vueSeamlessScroll,
Chart
},
name: "Liner",
data() {
return {
planNum: 1000,
practicalNum: 1000,
differenceValue: 1000,
scrollTableOption: {
step: 0.5, //
limitMoveNum: 5, // this.dataList.length
hoverStop: true, // stop
direction: 1, // 0 1 2 3
openWatch: true, // dom
singleHeight: 0, // (0) direction => 0/1
singleWidth: 0, // (0) direction => 2/3
waitTime: 0,
},
scrollTableData: [
{
value: 1,
value2: 1,
name: '1',
},
{
value: 1,
value2: 1,
name: '1',
},
{
value: 1,
value2: 1,
name: '1',
},
{
value: 1,
value2: 1,
name: '1',
},
{
value: 1,
value2: 1,
name: '1',
},
],
}
},
mounted() {
this.$refs.chart1.setData({
tooltip: {
trigger: "axis",
axisPointer: {
//
type: "shadow", // 线'line' | 'shadow'
},
},
grid: {
left: "0",
right: "4%",
bottom: "0",
top: 35,
containLabel: true,
},
legend: {
data: ["POL压力", "ISO压力"],
right: 'center',
top: 0,
textStyle: {
color: "#fff",
},
itemWidth: 12,
itemHeight: 10,
// itemGap: 35
},
xAxis: {
type: "category",
data: ["9-1", "9-2", "9-3", "9-4", "9-5", "9-6", "9-7", "9-8"],
axisLine: {
lineStyle: {
color: "white",
},
},
axisLabel: {
// interval: 0,
// rotate: 40,
textStyle: {
fontFamily: "Microsoft YaHei",
},
},
},
yAxis: {
type: "value",
axisLine: {
show: false,
lineStyle: {
color: "white",
},
},
splitLine: {
show: false,
},
axisLabel: {},
},
series: [
{
name: "POL压力",
type: "bar",
barWidth: "33%",
label: {
show: true,
position: "top",
textStyle: {
color: "#49d9ff",
},
},
itemStyle: {
normal: {
color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [
{
offset: 0,
color: "#39ffff",
},
{
offset: 1,
color: "#f5804d",
},
]),
borderRadius: 2,
},
},
data: [400, 400, 300, 300, 300, 400, 400, 400],
},
{
name: "ISO压力",
type: "bar",
barWidth: "33%",
barGap: '50%',
label: {
show: true,
position: "top",
textStyle: {
color: "#49d9ff",
},
},
itemStyle: {
normal: {
color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [
{
offset: 0,
color: "#47cbfd",
},
{
offset: 1,
color: "#3e8aff",
},
]),
borderRadius: 2,
},
},
data: [400, 500, 500, 500, 500, 400, 400, 500],
},
],
})
this.$refs.chart2.setData({
tooltip: {
trigger: "axis",
axisPointer: {
//
type: "shadow", // 线'line' | 'shadow'
},
},
grid: {
left: "0",
right: "4%",
bottom: 0,
top: 20,
containLabel: true,
},
xAxis: {
type: "category",
data: ["A-01", "A-02", "A-03", "A-04", "A-05", "A-06", "A-07", "A-08"],
axisLine: {
lineStyle: {
color: "white",
},
},
axisLabel: {
// interval: 0,
// rotate: 40,
textStyle: {
fontFamily: "Microsoft YaHei",
},
},
},
yAxis: {
type: "value",
axisLine: {
show: false,
lineStyle: {
color: "white",
},
},
splitLine: {
show: false,
},
axisLabel: {},
},
series: [
{
name: "产量",
type: "bar",
barWidth: "40%",
label: {
show: true,
position: "top",
textStyle: {
color: "#49d9ff",
},
},
itemStyle: {
normal: {
color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [
{
offset: 0,
color: "#47cbfd",
},
{
offset: 1,
color: "#3e8aff",
},
]),
borderRadius: 3,
},
},
data: [400, 500, 500, 500, 500, 400, 400, 500],
},
],
})
this.$refs.chart3.setData({
legend: {
data: ["POL温度", "ISO温度"],
right: 'center',
top: 0,
textStyle: {
color: "#fff",
},
itemWidth: 12,
itemHeight: 10,
// itemGap: 35
},
tooltip: {
trigger: "axis",
axisPointer: {
lineStyle: {
color: {
type: "linear",
x: 0,
y: 0,
x2: 0,
y2: 1,
colorStops: [
{
offset: 0,
color: "rgba(0, 255, 233,0)",
},
{
offset: 0.5,
color: "rgba(255, 255, 255,1)",
},
{
offset: 1,
color: "rgba(0, 255, 233,0)",
},
],
global: false,
},
},
},
},
grid: {
top: "15%",
left: 40,
right: "5%",
bottom: "15%",
// containLabel: true
},
xAxis: [
{
type: "category",
axisLine: {
show: true,
},
splitArea: {
// show: true,
color: "#f00",
lineStyle: {
color: "#f00",
},
},
axisLabel: {
color: "#fff",
},
splitLine: {
show: false,
},
boundaryGap: false,
data: ["A", "B", "C", "D", "E", "F"],
},
],
yAxis: [
{
type: "value",
min: 0,
// max: 140,
splitNumber: 4,
splitLine: {
show: true,
lineStyle: {
color: "rgba(255,255,255,0.1)",
},
},
axisLine: {
show: true,
},
axisLabel: {
show: true,
margin: 20,
textStyle: {
color: "#d1e6eb",
},
},
axisTick: {
show: true,
},
},
],
series: [
{
name: "POL温度",
type: "line",
// smooth: true, //
showAllSymbol: true,
// symbol: 'image://./static/images/guang-circle.png',
symbol: "circle",
symbolSize: 5,
lineStyle: {
normal: {
color: "#49d9ff",
},
},
label: {
show: true,
position: "top",
textStyle: {
color: "#49d9ff",
},
},
itemStyle: {
color: "#49d9ff",
},
areaStyle: {
normal: {
color: new echarts.graphic.LinearGradient(
0,
0,
0,
1,
[
{
offset: 0,
color: "rgba(108,80,243,0.3)",
},
{
offset: 1,
color: "rgba(108,80,243,0)",
},
],
false
),
shadowColor: "rgba(108,80,243, 0.9)",
shadowBlur: 20,
},
},
data: [502.84, 205.97, 332.79, 281.55, 398.35, 214.02],
},
{
name: "ISO温度",
type: "line",
// smooth: true, //
showAllSymbol: true,
// symbol: 'image://./static/images/guang-circle.png',
symbol: "circle",
symbolSize: 5,
lineStyle: {
normal: {
color: "#668e84",
},
},
label: {
show: true,
position: "top",
textStyle: {
color: "#668e84",
},
},
itemStyle: {
color: "#00ca95",
},
areaStyle: {
normal: {
color: new echarts.graphic.LinearGradient(
0,
0,
0,
1,
[
{
offset: 0,
color: "rgba(0,202,149,0.3)",
},
{
offset: 1,
color: "rgba(0,202,149,0)",
},
],
false
),
shadowColor: "rgba(0,202,149, 0.9)",
shadowBlur: 20,
},
},
data: [281.55, 398.35, 214.02, 179.55, 289.57, 356.14],
},
],
})
this.$refs.chart4.setData({
tooltip: {
trigger: "axis",
axisPointer: {
//
type: "shadow", // 线'line' | 'shadow'
},
},
grid: {
left: "0",
right: "4%",
bottom: "0",
top: "10%",
containLabel: true,
},
xAxis: {
type: "category",
data: ["9-1", "9-2", "9-3", "9-4", "9-5", "9-6", "9-7", "9-8"],
axisLine: {
lineStyle: {
color: "white",
},
},
axisLabel: {
// interval: 0,
// rotate: 40,
textStyle: {
fontFamily: "Microsoft YaHei",
},
},
},
yAxis: {
type: "value",
axisLine: {
show: false,
lineStyle: {
color: "white",
},
},
splitLine: {
show: false,
},
axisLabel: {},
},
series: [
{
name: "POL压力",
type: "bar",
barWidth: "33%",
label: {
show: true,
position: "top",
textStyle: {
color: "#49d9ff",
},
},
itemStyle: {
normal: {
color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [
{
offset: 0,
color: "#39ffff",
},
{
offset: 1,
color: "#f5804d",
},
]),
borderRadius: 2,
},
},
data: [400, 400, 300, 300, 300, 400, 400, 400],
},
],
})
},
methods: {}
};
</script>
<style scoped>
.app-container {
background-image: url("../../../assets/board/foaming.jpg");
background-repeat: no-repeat;
background-size: 100% 100%;
width: 100%;
height: 100%;
position: absolute;
top: 0;
left: 0;
}
.headTitle {
position: absolute;
top: 5%;
left: 50%;
transform: translate(-50%, -100%);
font-size: 1.5vw;
color: #d6eaed;
letter-spacing: 10px;
}
.topNum {
position: absolute;
transform: translate(-50%, -50%);
color: #5db9e8;
top: 17.1%;
letter-spacing: 2vw;
}
.planNum {
font-size: 1.7vw;
left: 36.5%;
}
.practicalNum {
left: 50.9%;
font-size: 1.7vw;
color: #97febd;
}
.differenceValue {
font-size: 1.7vw;
left: 65.4%;
color: #b15462;
}
.scrollTable {
position: absolute;
top: 15%;
left: 4%;
width: 23%;
height: 20%;
}
.scrollTableItem {
color: rgb(185, 186, 192);
margin: auto 0px;
padding: 4px 0;
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
text-align: center;
display: inline-block;
width: 16.6%;
}
.chart1 {
position: absolute;
top: 14.5%;
left: 73%;
width: 23.5%;
height: 21%;
}
.chart2 {
position: absolute;
top: 43%;
left: 3.6%;
width: 23.3%;
height: 15.5%;
}
.chart3 {
position: absolute;
top: 42%;
left: 73%;
width: 23.5%;
height: 18.5%;
}
.chart4 {
position: absolute;
top: 66.2%;
left: 73%;
width: 23.5%;
height: 28.5%;
}
.scrollTable1 {
position: absolute;
top: 66%;
left: 3.5%;
width: 68%;
height: 25%;
}
.total {
position: absolute;
top: 91%;
left: 3.5%;
width: 68%;
height: 3%;
}
</style>

@ -1,18 +1,368 @@
<template>
<div class="app-container">
<div class="headTitle">内胆数据监控平台</div>
<div class="topNum team">{{ team }}</div>
<div class="topNum planNum">{{ planNum }}</div>
<div class="topNum practicalNum">{{ practicalNum }}</div>
<div class="topNum differenceValue">{{ differenceValue }}</div>
<div class="title" v-for="(i,k) in title"
:style="'top:'+(titlePosition[k]&&titlePosition[k].top||0)+'%;left:'+(titlePosition[k]&&titlePosition[k].left||0)+'%'">
{{ i }}
</div>
<div class="scrollTable">
<div style="background-color: #094170">
<div class="scrollTableItem" style="font-weight: bold;">
编号
</div>
<div class="scrollTableItem" style="font-weight: bold;">
生产工单
</div>
<div class="scrollTableItem" style="font-weight: bold;">
计划数量
</div>
<div class="scrollTableItem" style="font-weight: bold;">
实际数量
</div>
<div class="scrollTableItem" style="font-weight: bold;">
差异值
</div>
<div class="scrollTableItem" style="font-weight: bold;">
完成率
</div>
</div>
<vue-seamless-scroll
:class-option="scrollTableOption"
:data="scrollTableData"
class="case-item"
style="height: 84%;overflow: hidden;"
>
<div
v-for="(item, index) in scrollTableData"
:key="index"
>
<div :style='"background-color:" + ((index % 2 === 0)? "#053460":"#032d57") '>
<div
class="scrollTableItem">
{{ item.name }}
</div>
<div
class="scrollTableItem">
{{ item.value }}
</div>
<div
class="scrollTableItem">
{{ item.value2 }}
</div>
<div
class="scrollTableItem">
{{ item.value2 }}
</div>
<div
class="scrollTableItem">
{{ item.value2 }}
</div>
<div
class="scrollTableItem">
{{ item.value2 }}
</div>
</div>
</div>
</vue-seamless-scroll>
</div>
<div class="chart1">
<Chart ref="chart1"></Chart>
</div>
<div class="chart2">
<Chart ref="chart2"></Chart>
</div>
<div class="chart3">
<Chart ref="chart3"></Chart>
</div>
</div>
</template>
<script>
import vueSeamlessScroll from "vue-seamless-scroll";
import Chart from "../../../components/board/Chart";
import * as echarts from 'echarts'
export default {
components: {
vueSeamlessScroll,
Chart
},
name: "Liner",
data() {
return {
title: [
'工单计划',
'出入库统计',
'库存状态',
'发泡夹具状态',
],
titlePosition: [
{
top: 19.8,
left: 5.5
},
{
top: 19.8,
left: 53
},
{
top: 70.5,
left: 5.5
},
{
top: 70.5,
left: 53
},
],
team: '白班',
planNum: 1000,
practicalNum: 1000,
differenceValue: 1000,
scrollTableOption: {
step: 0.5, //
limitMoveNum: 5, // this.dataList.length
hoverStop: true, // stop
direction: 1, // 0 1 2 3
openWatch: true, // dom
singleHeight: 0, // (0) direction => 0/1
singleWidth: 0, // (0) direction => 2/3
waitTime: 0,
},
scrollTableData: [
{
value: 1,
value2: 1,
name: '1',
},
{
value: 1,
value2: 1,
name: '1',
},
{
value: 1,
value2: 1,
name: '1',
},
{
value: 1,
value2: 1,
name: '1',
},
{
value: 1,
value2: 1,
name: '1',
},
],
}
},
created() {
mounted() {
this.$refs.chart1.setData({
tooltip: {
trigger: "axis",
axisPointer: {
//
type: "shadow", // 线'line' | 'shadow'
},
},
grid: {
left: "0",
right: "4%",
bottom: "0",
top: "5%",
containLabel: true,
},
legend: {
data: ["入库", "出库"],
right: 'center',
top: 0,
textStyle: {
color: "#fff",
},
itemWidth: 12,
itemHeight: 10,
// itemGap: 35
},
xAxis: {
type: "category",
data: ["01:00", "02:00", "03:00", "04:00", "05:00", "06:00", "07:00", "08:00"],
axisLine: {
lineStyle: {
color: "white",
},
},
axisLabel: {
// interval: 0,
// rotate: 40,
textStyle: {
fontFamily: "Microsoft YaHei",
},
},
},
yAxis: {
type: "value",
axisLine: {
show: false,
lineStyle: {
color: "white",
},
},
splitLine: {
show: false,
},
axisLabel: {},
},
series: [
{
name: "入库",
type: "bar",
barWidth: "15%",
itemStyle: {
normal: {
color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [
{
offset: 0,
color: "#39ffff",
},
{
offset: 1,
color: "#5affa6",
},
]),
},
},
data: [400, 400, 300, 300, 300, 400, 400, 400],
},
{
name: "出库",
type: "bar",
barWidth: "15%",
itemStyle: {
normal: {
color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [
{
offset: 0,
color: "#4adfff",
},
{
offset: 1,
color: "#3d7aff",
},
]),
},
},
data: [400, 500, 500, 500, 500, 400, 400, 500],
},
],
})
this.$refs.chart2.setData({
tooltip: {
trigger: "axis",
axisPointer: {
//
type: "shadow", // 线'line' | 'shadow'
},
},
grid: {
left: "0",
right: "4%",
bottom: "0",
top: "5%",
containLabel: true,
},
legend: {
data: ["内胆", "箱壳"],
right: 'center',
top: 0,
textStyle: {
color: "#fff",
},
itemWidth: 12,
itemHeight: 10,
// itemGap: 35
},
xAxis: {
type: "category",
data: ["A-01", "A-02", "A-03", "A-04", "A-05", "A-06", "A-07", "A-08"],
axisLine: {
lineStyle: {
color: "white",
},
},
axisLabel: {
// interval: 0,
// rotate: 40,
textStyle: {
fontFamily: "Microsoft YaHei",
},
},
},
yAxis: {
type: "value",
axisLine: {
show: false,
lineStyle: {
color: "white",
},
},
splitLine: {
show: false,
},
axisLabel: {},
},
series: [
{
name: "内胆",
type: "bar",
barWidth: "15%",
itemStyle: {
normal: {
color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [
{
offset: 0,
color: "#39ffff",
},
{
offset: 1,
color: "#5affa6",
},
]),
},
},
data: [400, 400, 300, 300, 300, 400, 400, 400],
},
{
name: "箱壳",
type: "bar",
barWidth: "15%",
itemStyle: {
normal: {
color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [
{
offset: 0,
color: "#4adfff",
},
{
offset: 1,
color: "#3d7aff",
},
]),
},
},
data: [400, 500, 500, 500, 500, 400, 400, 500],
},
],
})
},
methods: {}
};
@ -28,4 +378,94 @@ export default {
top: 0;
left: 0;
}
.headTitle {
position: absolute;
top: 5%;
left: 50%;
transform: translate(-50%, -100%);
font-size: 1.5vw;
color: #d6eaed;
letter-spacing: 10px;
}
.title {
position: absolute;
transform: translateY(-50%);
color: #5db9e8;
font-size: 0.9vw;
}
.topNum {
position: absolute;
transform: translate(-50%, -50%);
color: #5db9e8;
top: 11.7%;
letter-spacing: 0.5vw;
}
.team {
font-size: 1.5vw;
left: 16.8%;
}
.planNum {
font-size: 1.7vw;
left: 41.2%;
}
.practicalNum {
left: 66.2%;
font-size: 1.7vw;
}
.differenceValue {
font-size: 1.7vw;
left: 90.7%;
}
.scrollTable {
position: absolute;
top: 23%;
left: 4%;
width: 45%;
height: 18%;
}
.scrollTableItem {
color: rgb(185, 186, 192);
margin: auto 0px;
padding: 4px 0;
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
text-align: center;
display: inline-block;
width: 16.6%;
}
.chart1 {
position: absolute;
top: 24%;
left: 51%;
width: 45%;
height: 17%;
}
.chart2 {
position: absolute;
top: 74%;
left: 3.6%;
width: 45.5%;
height: 20.7%;
}
.chart3 {
position: absolute;
top: 74%;
left: 51%;
width: 45.5%;
height: 20.7%;
}
</style>

@ -0,0 +1,659 @@
<template>
<div class="app-container">
<div class="headTitle">灌注工位看板</div>
<div class="title" v-for="(i,k) in title"
:style="'top:'+(titlePosition[k]&&titlePosition[k].top||0)+'%;left:'+(titlePosition[k]&&titlePosition[k].left||0)+'%'">
{{ i }}
</div>
<div class="scrollTable">
<div style="background-color: #094170">
<div class="scrollTableItem" style="font-weight: bold;">
编号
</div>
<div class="scrollTableItem" style="font-weight: bold;">
生产工单
</div>
<div class="scrollTableItem" style="font-weight: bold;">
计划数量
</div>
<div class="scrollTableItem" style="font-weight: bold;">
实际数量
</div>
<div class="scrollTableItem" style="font-weight: bold;">
差异值
</div>
<div class="scrollTableItem" style="font-weight: bold;">
完成率
</div>
</div>
<vue-seamless-scroll
:class-option="scrollTableOption"
:data="scrollTableData"
class="case-item"
style="height: 84%;overflow: hidden;"
>
<div
v-for="(item, index) in scrollTableData"
:key="index"
>
<div :style='"background-color:" + ((index % 2 === 0)? "#053460":"#032d57") '>
<div
class="scrollTableItem">
{{ item.name }}
</div>
<div
class="scrollTableItem">
{{ item.value }}
</div>
<div
class="scrollTableItem">
{{ item.value2 }}
</div>
<div
class="scrollTableItem">
{{ item.value2 }}
</div>
<div
class="scrollTableItem">
{{ item.value2 }}
</div>
<div
class="scrollTableItem">
{{ item.value2 }}
</div>
</div>
</div>
</vue-seamless-scroll>
</div>
<div class="chart11">
<Chart ref="chart11"></Chart>
</div>
<div class="chart12">
<Chart ref="chart12"></Chart>
</div>
<div class="chart13">
<Chart ref="chart13"></Chart>
</div>
<div class="chart14">
<Chart ref="chart14"></Chart>
</div>
<div class="chart15">
<Chart ref="chart15"></Chart>
</div>
<div class="chart16">
<Chart ref="chart16"></Chart>
</div>
<div class="chart2">
<Chart ref="chart2"></Chart>
</div>
<div class="chart3">
<Chart ref="chart3"></Chart>
</div>
</div>
</template>
<script>
import vueSeamlessScroll from "vue-seamless-scroll";
import Chart from "../../../components/board/Chart";
import * as echarts from 'echarts'
export default {
components: {
vueSeamlessScroll,
Chart
},
name: "Liner",
data() {
return {
title: [
'工单计划',
'小时统计',
'异常TOP',
'合格率统计',
],
titlePosition: [
{
top: 11.6,
left: 5.5
},
{
top: 11.6,
left: 52.7
},
{
top: 55.5,
left: 5.5
},
{
top: 55.5,
left: 52.7
},
],
scrollTableOption: {
step: 0.5, //
limitMoveNum: 5, // this.dataList.length
hoverStop: true, // stop
direction: 1, // 0 1 2 3
openWatch: true, // dom
singleHeight: 0, // (0) direction => 0/1
singleWidth: 0, // (0) direction => 2/3
waitTime: 0,
},
scrollTableData: [
{
value: 1,
value2: 1,
name: '1',
},
{
value: 1,
value2: 1,
name: '1',
},
{
value: 1,
value2: 1,
name: '1',
},
{
value: 1,
value2: 1,
name: '1',
},
{
value: 1,
value2: 1,
name: '1',
},
],
}
},
mounted() {
this.$refs.chart11.setData(this.option('灌注量'))
this.$refs.chart12.setData(this.option('标准灌注量'))
this.$refs.chart13.setData(this.option('灌注压力'))
this.$refs.chart14.setData(this.option('真空检测时间'))
this.$refs.chart15.setData(this.option('真空度衰减压力'))
this.$refs.chart16.setData(this.option('灌注温度'))
this.$refs.chart2.setData({
grid: {
top: "5%",
bottom: "10%", //leftright
},
tooltip: {
trigger: "axis",
axisPointer: {
type: "shadow",
label: {
show: true,
},
},
},
legend: {
data: ["错误次数", "比例"],
top: "0%",
textStyle: {
color: "#ffffff",
},
},
xAxis: {
data: [
"err1",
"err2",
"err3",
"err4",
"err5",
"err6",
"err7",
"其他",
],
axisLine: {
show: true, //X线
lineStyle: {
color: "#01FCE3",
},
},
axisTick: {
show: true, //X
},
axisLabel: {
show: true,
textStyle: {
color: "#ebf8ac", //X
},
},
},
yAxis: [
{
type: "value",
nameTextStyle: {
color: "#ebf8ac",
},
splitLine: {
show: false,
},
axisTick: {
show: true,
},
axisLine: {
show: true,
lineStyle: {
color: "#FFFFFF",
},
},
axisLabel: {
show: true,
textStyle: {
color: "#ebf8ac",
},
},
},
{
type: "value",
nameTextStyle: {
color: "#ebf8ac",
},
position: "right",
splitLine: {
show: false,
},
axisTick: {
show: false,
},
axisLine: {
show: false,
},
axisLabel: {
show: true,
formatter: "{value} %", //Y
textStyle: {
color: "#ebf8ac",
},
},
},
],
series: [
{
name: "错误次数",
type: "bar",
barWidth: '40%',
itemStyle: {
normal: {
color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [
{
offset: 0,
color: "#00FFE3",
},
{
offset: 1,
color: "#4693EC",
},
]),
},
},
data: [4.2, 3.8, 4.8, 3.5, 2.9, 2.8, 3, 5],
},
{
name: "比例",
type: "line",
yAxisIndex: 1, //使 y index y
smooth: true, //线
showAllSymbol: true, //
symbol: "circle", //
symbolSize: 10, //
itemStyle: {
//线
color: "#058cff",
},
lineStyle: {
color: "#058cff",
},
areaStyle: {
color: "rgba(5,140,255, 0.2)",
},
data: [4.2, 3.8, 4.8, 3.5, 2.9, 2.8, 3, 5],
},
],
})
this.$refs.chart3.setData({
grid: {
top: "5%",
bottom: "10%", //leftright
},
tooltip: {
trigger: "axis",
axisPointer: {
type: "shadow",
label: {
show: true,
},
},
},
legend: {
data: ["次数"],
top: "0%",
textStyle: {
color: "#ffffff",
},
},
xAxis: {
data: [
"err1",
"err2",
"err3",
"err4",
"err5",
"err6",
"err7",
"其他",
],
axisLine: {
show: true, //X线
lineStyle: {
color: "#01FCE3",
},
},
axisTick: {
show: true, //X
},
axisLabel: {
show: true,
textStyle: {
color: "#ebf8ac", //X
},
},
},
yAxis: [
{
type: "value",
name: "亿元",
nameTextStyle: {
color: "#ebf8ac",
},
splitLine: {
show: false,
},
axisTick: {
show: true,
},
axisLine: {
show: true,
lineStyle: {
color: "#FFFFFF",
},
},
axisLabel: {
show: true,
textStyle: {
color: "#ebf8ac",
},
},
},
],
series: [
{
name: "次数",
type: "bar",
barWidth: '40%',
itemStyle: {
normal: {
color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [
{
offset: 0,
color: "#00FFE3",
},
{
offset: 1,
color: "#4693EC",
},
]),
},
},
data: [4.2, 3.8, 4.8, 3.5, 2.9, 2.8, 3, 5],
},
],
})
},
methods: {
option(name) {
return {
tooltip: {
formatter: "{a} <br/>{b} : {c}%",
},
series: [
{
name: "进度",
type: "gauge",
center: ['50%', '60%'],
radius: "65%",
splitNumber: 0,
axisLine: {
lineStyle: {
color: [
[44 / 100, "#468EFD"],
[1, "#111F42"],
],
width: 8,
},
},
axisLabel: {
show: false,
},
axisTick: {
show: false,
},
splitLine: {
show: false,
},
itemStyle: {
show: false,
},
detail: {
formatter: function () {
return `22m\n${name}`;
},
offsetCenter: [0, '90%'],
lineHeight: 16,
textStyle: {
padding: [0, 0, 0, 0],
fontSize: 12,
fontWeight: "700",
color: "#fff",
},
},
title: {
//
show: true,
offsetCenter: [0, '100%'], // x, ypx
textStyle: {
color: "#fff",
fontSize: 14, //
fontWeight: 400,
fontFamily: "PingFangSC",
},
},
data: [
{
name: " ",
value: 44,
},
],
pointer: {
show: true,
length: "75%",
radius: "70%",
width: 5, //
},
animationDuration: 4000,
},
{
name: "外部刻度",
type: "gauge",
center: ['50%', '60%'],
radius: "80%",
min: 0, //
max: 100, //
splitNumber: 6, //
startAngle: 225,
endAngle: -45,
axisLine: {
show: true,
lineStyle: {
width: 1,
color: [[1, "rgba(0,0,0,0)"]],
},
}, //线
axisLabel: {
show: true,
color: "#4d5bd1",
distance: -14,
formatter: function (v) {
return v.toFixed(0)
},
}, //
axisTick: {
show: true,
splitNumber: 6,
lineStyle: {
color: "#468EFD", //
width: 1,
},
length: -5,
}, //
splitLine: {
show: true,
length: -10,
lineStyle: {
color: "#468EFD", //
},
}, //线
detail: {
show: false,
},
pointer: {
show: false,
},
},
],
}
}
}
};
</script>
<style scoped>
.app-container {
background-image: url("../../../assets/board/pourInto.jpg");
background-repeat: no-repeat;
background-size: 100% 100%;
width: 100%;
height: 100%;
position: absolute;
top: 0;
left: 0;
}
.headTitle {
position: absolute;
top: 5%;
left: 50%;
transform: translate(-50%, -100%);
font-size: 1.5vw;
color: #d6eaed;
letter-spacing: 10px;
}
.title {
position: absolute;
transform: translateY(-50%);
color: #dddddd;
font-size: 1vw;
letter-spacing: 2px;
}
.scrollTable {
position: absolute;
top: 15%;
left: 50.6%;
width: 46%;
height: 37.5%;
}
.scrollTableItem {
color: rgb(185, 186, 192);
margin: auto 0px;
padding: 4px 0;
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
text-align: center;
display: inline-block;
width: 16.6%;
}
.chart11 {
position: absolute;
top: 15%;
left: 3.6%;
width: 15%;
height: 15%;
}
.chart12 {
position: absolute;
top: 15%;
left: 18.6%;
width: 15%;
height: 15%;
}
.chart13 {
position: absolute;
top: 15%;
left: 33.6%;
width: 15%;
height: 15%;
}
.chart14 {
position: absolute;
top: 30%;
left: 3.6%;
width: 15%;
height: 15%;
}
.chart15 {
position: absolute;
top: 30%;
left: 18.6%;
width: 15%;
height: 15%;
}
.chart16 {
position: absolute;
top: 30%;
left: 33.6%;
width: 15%;
height: 15%;
}
.chart2 {
position: absolute;
top: 58.5%;
left: 3.5%;
width: 46%;
height: 36%;
}
.chart3 {
position: absolute;
top: 58.5%;
left: 50.5%;
width: 46%;
height: 36%;
}
</style>

@ -35,8 +35,8 @@ module.exports = {
proxy: {
// detail: https://cli.vuejs.org/config/#devserver-proxy
[process.env.VUE_APP_BASE_API]: {
target: `http://10.11.43.2:8080`,
// target: `http://localhost:8080`,
// target: `http://10.11.43.2:8080`,
target: `http://localhost:8080`,
changeOrigin: true,
pathRewrite: {
['^' + process.env.VUE_APP_BASE_API]: ''

Loading…
Cancel
Save