烘房看板
parent
f4f51a113d
commit
cc115262e3
@ -0,0 +1,26 @@
|
|||||||
|
import request from '@/utils/request'
|
||||||
|
|
||||||
|
// 获取工厂下拉列表
|
||||||
|
export function getBoardFactory(data) {
|
||||||
|
return request({
|
||||||
|
url: '/mes/wcsInterface/getBoardFactory',
|
||||||
|
method: 'post',
|
||||||
|
data: data
|
||||||
|
});
|
||||||
|
}
|
||||||
|
// 获取烘房监控页面顶部信息
|
||||||
|
export function getDryingRoomList(data) {
|
||||||
|
return request({
|
||||||
|
url: '/mes/wcsInterface/dryRoomDataHeader',
|
||||||
|
method: 'post',
|
||||||
|
data: data
|
||||||
|
});
|
||||||
|
}
|
||||||
|
// 获取烘房监控页面顶部信息
|
||||||
|
export function dryRoomDataCarousel(data) {
|
||||||
|
return request({
|
||||||
|
url: '/mes/wcsInterface/dryRoomDataCarousel',
|
||||||
|
method: 'post',
|
||||||
|
data: data
|
||||||
|
});
|
||||||
|
}
|
@ -0,0 +1,6 @@
|
|||||||
|
html, body {
|
||||||
|
width: 100%;
|
||||||
|
height: 100%;
|
||||||
|
padding: 0px;
|
||||||
|
margin: 0px;
|
||||||
|
}
|
Binary file not shown.
After Width: | Height: | Size: 195 KiB |
@ -0,0 +1,231 @@
|
|||||||
|
<template xmlns:fontSize="http://www.w3.org/1999/xhtml">
|
||||||
|
<div>
|
||||||
|
<div id="cards">
|
||||||
|
<div style="height: 35vh;margin-right: 0.6vw;margin-bottom: 12px;" class="card-item" v-for="(card, i) in dataProp.data1" :key="card.title">
|
||||||
|
<div class="card-header">
|
||||||
|
<div class="card-header-left">{{ card.title }}</div>
|
||||||
|
<div class="card-header-right">{{ card.i }}</div>
|
||||||
|
</div>
|
||||||
|
<div class="card-box">
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="card-footer">
|
||||||
|
<div class="card-footer-item">
|
||||||
|
<div class="footer-title">烘房模式</div>
|
||||||
|
<div class="footer-detail">
|
||||||
|
<span :style="{ fontSize: '25px', fontWeight: 'bold', color: getTextColor(card.model), textAlign: 'right' }">
|
||||||
|
{{ getTagModel(card.model) }}
|
||||||
|
</span>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="card-footer-item">
|
||||||
|
<div class="footer-title">门前数量</div>
|
||||||
|
<div class="footer-detail">
|
||||||
|
<span :style="{ fontSize: '25px', fontWeight: 'bold', color: getTextColor(card.dollyNumber), textAlign: 'right' }">
|
||||||
|
{{ getTagText(card.dollyNumber) }}
|
||||||
|
</span>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="card-footer">
|
||||||
|
<div class="card-footer-item">
|
||||||
|
<div class="footer-title">烘房温度</div>
|
||||||
|
<div class="footer-detail">
|
||||||
|
<span style="font-size: 25px;font-weight: bold; color: #ea6027; textAlign: 'right'">{{ card.temperature }}</span>℃
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="card-footer-item">
|
||||||
|
<div class="footer-title">保持时长</div>
|
||||||
|
<div class="footer-detail">
|
||||||
|
<span style="font-size: 25px;font-weight: bold; color: #26fcd8; textAlign: 'right'">{{ card.waitmin }}</span>min
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
<div id="cardss">
|
||||||
|
<div style="height: 35vh;margin-right: 0.6vw;margin-bottom: 12px;" class="card-item" v-for="(card, i) in dataProp.data2" :key="card.title">
|
||||||
|
<div class="card-header">
|
||||||
|
<div class="card-header-left">{{ card.title }}</div>
|
||||||
|
<div class="card-header-right">{{ (i + 9) }}</div>
|
||||||
|
</div>
|
||||||
|
<div class="card-box">
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="card-footer">
|
||||||
|
<div class="card-footer-item">
|
||||||
|
<div class="footer-title">烘房模式</div>
|
||||||
|
<div class="footer-detail">
|
||||||
|
<span :style="{ fontSize: '25px', fontWeight: 'bold', color: getTextColor(card.model), textAlign: 'right' }">
|
||||||
|
{{ getTagModel(card.model) }}
|
||||||
|
</span>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="card-footer-item">
|
||||||
|
<div class="footer-title">门前数量</div>
|
||||||
|
<div class="footer-detail">
|
||||||
|
<span :style="{ fontSize: '25px', fontWeight: 'bold', color: getTextColor(card.dollyNumber), textAlign: 'right' }">
|
||||||
|
{{ getTagText(card.dollyNumber) }}
|
||||||
|
</span>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="card-footer">
|
||||||
|
<div class="card-footer-item">
|
||||||
|
<div class="footer-title">烘房温度</div>
|
||||||
|
<div class="footer-detail">
|
||||||
|
<span style="font-size: 25px;font-weight: bold; color: #ea6027; textAlign: 'right'">{{ card.temperature }}</span>℃
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="card-footer-item">
|
||||||
|
<div class="footer-title">保持时长</div>
|
||||||
|
<div class="footer-detail">
|
||||||
|
<span style="font-size: 25px;font-weight: bold; color: #26fcd8; textAlign: 'right'">{{ card.waitmin }}</span>min
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
import cards from "./cards";
|
||||||
|
|
||||||
|
export default {
|
||||||
|
name: 'Cards',
|
||||||
|
props: ['dataProp'],
|
||||||
|
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
cards: [],
|
||||||
|
cardss: [],
|
||||||
|
}
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
|
||||||
|
getTagText(value) {
|
||||||
|
// 根据值返回要显示的文字
|
||||||
|
if (value === '0') {
|
||||||
|
return '无车';
|
||||||
|
} else if (value === '1') {
|
||||||
|
return '有车';
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
getTextColor(value){
|
||||||
|
if (value === '0') {
|
||||||
|
return '#26fcd8';
|
||||||
|
} else if (value === '1') {
|
||||||
|
return '#ea6027';
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
getTagModel(value){
|
||||||
|
// 根据值返回要显示的文字
|
||||||
|
if (value === '0') {
|
||||||
|
return '手动';
|
||||||
|
} else if (value === '1') {
|
||||||
|
return '自动';
|
||||||
|
}
|
||||||
|
},
|
||||||
|
createData () {
|
||||||
|
|
||||||
|
// this.cards = new Array(8).fill(0).map((foo, i) => ({
|
||||||
|
// title: '烘房' + (i + 1),
|
||||||
|
//
|
||||||
|
// }));
|
||||||
|
|
||||||
|
this.cardss = new Array(8).fill(0).map((foo, i) => ({
|
||||||
|
title: '烘房' + (i + 9),
|
||||||
|
}));
|
||||||
|
},
|
||||||
|
|
||||||
|
|
||||||
|
},
|
||||||
|
mounted() {
|
||||||
|
|
||||||
|
const { createData } = this
|
||||||
|
createData()
|
||||||
|
// setInterval(this.createData, 3000)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style lang="less">
|
||||||
|
#cards ,#cardss {
|
||||||
|
display: flex;
|
||||||
|
justify-content: space-between;
|
||||||
|
height: 35vh;
|
||||||
|
margin-bottom: 12px;
|
||||||
|
|
||||||
|
.card-item {
|
||||||
|
background-color: rgba(6, 30, 93, 0.5);
|
||||||
|
border: 2px solid rgba(1, 153, 209, .5);
|
||||||
|
width: 19%!important;
|
||||||
|
// display: flex;
|
||||||
|
// flex-direction: column;
|
||||||
|
}
|
||||||
|
|
||||||
|
.card-header {
|
||||||
|
display: flex;
|
||||||
|
height: 20%;
|
||||||
|
align-items: center;
|
||||||
|
justify-content: space-between;
|
||||||
|
|
||||||
|
.card-header-left {
|
||||||
|
font-size: 18px;
|
||||||
|
font-weight: bold;
|
||||||
|
padding-left: 20px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.card-header-right {
|
||||||
|
padding-right: 20px;
|
||||||
|
font-size: 40px;
|
||||||
|
color: #03d3ec;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.ring-charts {
|
||||||
|
height: 55%;
|
||||||
|
}
|
||||||
|
|
||||||
|
.card-footer {
|
||||||
|
height: 25%;
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
justify-content: space-around;
|
||||||
|
margin-top: 20px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.card-footer-item {
|
||||||
|
padding: 5px 10px 0px 10px;
|
||||||
|
box-sizing: border-box;
|
||||||
|
width: 40%;
|
||||||
|
background-color: rgba(6, 30, 93, 0.7);
|
||||||
|
border-radius: 3px;
|
||||||
|
|
||||||
|
.footer-title {
|
||||||
|
font-size: 15px;
|
||||||
|
margin-bottom: 5px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.footer-detail {
|
||||||
|
font-size: 20px;
|
||||||
|
color: #1294fb;
|
||||||
|
display: flex;
|
||||||
|
font-size: 18px;
|
||||||
|
align-items: center;
|
||||||
|
|
||||||
|
.dv-digital-flop {
|
||||||
|
margin-right: 5px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</style>
|
@ -0,0 +1,187 @@
|
|||||||
|
<template>
|
||||||
|
<div>
|
||||||
|
<div id="cards">
|
||||||
|
<div style="height: 35vh;margin-right: 0.6vw;margin-bottom: 12px;" class="card-item" v-for="(card, i) in dataProp" :key="card.title">
|
||||||
|
<div class="card-header">
|
||||||
|
<div class="card-header-left">{{ card.title }}</div>
|
||||||
|
<div class="card-header-right">{{ card.i }}</div>
|
||||||
|
</div>
|
||||||
|
<div class="card-box">
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="card-footer">
|
||||||
|
<div class="card-footer-item">
|
||||||
|
<div class="footer-title">烘房模式</div>
|
||||||
|
<div class="footer-detail">
|
||||||
|
<span :style="{ fontSize: '25px', fontWeight: 'bold', color: getTextColor(card.model), textAlign: 'right' }">
|
||||||
|
{{ getTagModel(card.model) }}
|
||||||
|
</span>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="card-footer-item">
|
||||||
|
<div class="footer-title">门前数量</div>
|
||||||
|
<div class="footer-detail">
|
||||||
|
<span :style="{ fontSize: '25px', fontWeight: 'bold', color: getTextColor(card.dollyNumber), textAlign: 'right' }">
|
||||||
|
{{ getTagText(card.dollyNumber) }}
|
||||||
|
</span>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="card-footer">
|
||||||
|
<div class="card-footer-item">
|
||||||
|
<div class="footer-title">烘房温度</div>
|
||||||
|
<div class="footer-detail">
|
||||||
|
<span style="font-size: 25px;font-weight: bold; color: #ea6027; textAlign: 'right'">{{ card.temperature }}</span>℃
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="card-footer-item">
|
||||||
|
<div class="footer-title">保持时长</div>
|
||||||
|
<div class="footer-detail">
|
||||||
|
<span style="font-size: 25px;font-weight: bold; color: #26fcd8; textAlign: 'right'">{{ card.waitmin }}</span>min
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
import cards from "./cards";
|
||||||
|
|
||||||
|
export default {
|
||||||
|
name: 'Cards2',
|
||||||
|
props: ['dataProp'],
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
cards: [],
|
||||||
|
}
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
getTagText(value) {
|
||||||
|
// 根据值返回要显示的文字
|
||||||
|
if (value === '0') {
|
||||||
|
return '无车';
|
||||||
|
} else if (value === '1') {
|
||||||
|
return '有车';
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
getTextColor(value){
|
||||||
|
if (value === '0') {
|
||||||
|
return '#26fcd8';
|
||||||
|
} else if (value === '1') {
|
||||||
|
return '#ea6027';
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
getTagModel(value){
|
||||||
|
// 根据值返回要显示的文字
|
||||||
|
if (value === '0') {
|
||||||
|
return '手动';
|
||||||
|
} else if (value === '1') {
|
||||||
|
return '自动';
|
||||||
|
}
|
||||||
|
},
|
||||||
|
// createData () {
|
||||||
|
// const { randomExtend } = this
|
||||||
|
// this.cards = new Array(5).fill(0).map((foo, i) => ({
|
||||||
|
// title: '烘房' + (i + 17),
|
||||||
|
// }));
|
||||||
|
//
|
||||||
|
// },
|
||||||
|
// // this.cards=new Array(8)
|
||||||
|
//
|
||||||
|
// randomExtend(minNum, maxNum) {
|
||||||
|
// if (arguments.length === 1) {
|
||||||
|
// return parseInt(Math.random() * minNum + 1, 10)
|
||||||
|
// } else {
|
||||||
|
// return parseInt(Math.random() * (maxNum - minNum + 1) + minNum, 10)
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
},
|
||||||
|
mounted() {
|
||||||
|
// const { createData } = this
|
||||||
|
//
|
||||||
|
// createData()
|
||||||
|
// setInterval(this.createData, 30000)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style lang="less">
|
||||||
|
#cards ,#cardss {
|
||||||
|
display: flex;
|
||||||
|
justify-content: space-between;
|
||||||
|
height: 35vh;
|
||||||
|
margin-bottom: 12px;
|
||||||
|
|
||||||
|
.card-item {
|
||||||
|
background-color: rgba(6, 30, 93, 0.5);
|
||||||
|
border: 2px solid rgba(1, 153, 209, .5);
|
||||||
|
width: 19%!important;
|
||||||
|
// display: flex;
|
||||||
|
// flex-direction: column;
|
||||||
|
}
|
||||||
|
|
||||||
|
.card-header {
|
||||||
|
display: flex;
|
||||||
|
height: 20%;
|
||||||
|
align-items: center;
|
||||||
|
justify-content: space-between;
|
||||||
|
|
||||||
|
.card-header-left {
|
||||||
|
font-size: 18px;
|
||||||
|
font-weight: bold;
|
||||||
|
padding-left: 20px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.card-header-right {
|
||||||
|
padding-right: 20px;
|
||||||
|
font-size: 40px;
|
||||||
|
color: #03d3ec;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.ring-charts {
|
||||||
|
height: 55%;
|
||||||
|
}
|
||||||
|
|
||||||
|
.card-footer {
|
||||||
|
height: 25%;
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
justify-content: space-around;
|
||||||
|
margin-top: 20px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.card-footer-item {
|
||||||
|
padding: 5px 10px 0px 10px;
|
||||||
|
box-sizing: border-box;
|
||||||
|
width: 40%;
|
||||||
|
background-color: rgba(6, 30, 93, 0.7);
|
||||||
|
border-radius: 3px;
|
||||||
|
|
||||||
|
.footer-title {
|
||||||
|
font-size: 15px;
|
||||||
|
margin-bottom: 5px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.footer-detail {
|
||||||
|
font-size: 20px;
|
||||||
|
color: #1294fb;
|
||||||
|
display: flex;
|
||||||
|
font-size: 18px;
|
||||||
|
align-items: center;
|
||||||
|
|
||||||
|
.dv-digital-flop {
|
||||||
|
margin-right: 5px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</style>
|
@ -0,0 +1,151 @@
|
|||||||
|
<template>
|
||||||
|
<el-carousel :interval="3000" :height="dataHeight" indicator-position="outside" @change="handleScroll">
|
||||||
|
<el-carousel-item v-for="(item,k) in 2" :key="item" >
|
||||||
|
<h3 v-if="k===0"><cards :dataProp="cards" /></h3>
|
||||||
|
<h3 v-if="k===1"><cards2 :dataProp="cardss"/></h3>
|
||||||
|
</el-carousel-item>
|
||||||
|
</el-carousel>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
|
||||||
|
import cards2 from './cards2'
|
||||||
|
import cards from './cards'
|
||||||
|
|
||||||
|
import {
|
||||||
|
dryRoomDataCarousel,
|
||||||
|
getMesBoardEquProductionToday,
|
||||||
|
} from "@/api/kanban/dryingroom";
|
||||||
|
import log from "../../monitor/job/log";
|
||||||
|
|
||||||
|
export default {
|
||||||
|
|
||||||
|
// 轮播图组件
|
||||||
|
name: 'carousel',
|
||||||
|
components: {
|
||||||
|
cards2,
|
||||||
|
cards
|
||||||
|
},
|
||||||
|
props: {
|
||||||
|
dataHeight: {
|
||||||
|
type: String,
|
||||||
|
default: '800px'
|
||||||
|
}
|
||||||
|
},
|
||||||
|
data () {
|
||||||
|
return {
|
||||||
|
cards: {
|
||||||
|
data1:[],
|
||||||
|
data2:[],
|
||||||
|
},
|
||||||
|
|
||||||
|
cardss: [],
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
methods: {
|
||||||
|
createData () {
|
||||||
|
|
||||||
|
this.cards.data1 = new Array(8).fill(0).map((foo, i) => ({
|
||||||
|
i:(i+1),
|
||||||
|
|
||||||
|
}));
|
||||||
|
this.cards.data2 = new Array(8).fill(0).map((foo, i) => ({
|
||||||
|
i:(i+9),
|
||||||
|
}));
|
||||||
|
this.cardss = new Array(5).fill(0).map((foo, i) => ({
|
||||||
|
i: (i === 0 ? 17 : i === 1 ? 18 : i === 2 ? 61 : i === 3 ? 62 : 63),
|
||||||
|
}));
|
||||||
|
// console.log(this.cards.data1)
|
||||||
|
dryRoomDataCarousel({ factory: 999 }).then((response) => {
|
||||||
|
if (response.data) {
|
||||||
|
// console.log(response);
|
||||||
|
this.cards.data1 = this.cards.data1.map((card) => {
|
||||||
|
const matchingIndex = response.data.dryingroomList.find((index) => index.i === card.i);
|
||||||
|
if (matchingIndex) {
|
||||||
|
return {
|
||||||
|
...card,
|
||||||
|
title: '烘房' + matchingIndex.i,
|
||||||
|
model: matchingIndex.status,
|
||||||
|
dollyNumber:matchingIndex.dollyNumber,
|
||||||
|
waitmin:matchingIndex.waitmin,
|
||||||
|
temperature:matchingIndex.temperature
|
||||||
|
};
|
||||||
|
} else {
|
||||||
|
return card;
|
||||||
|
}
|
||||||
|
|
||||||
|
});
|
||||||
|
this.cards.data2 = this.cards.data2.map((card) => {
|
||||||
|
const matchingIndex = response.data.dryingroomList.find((index) => index.i === card.i);
|
||||||
|
if (matchingIndex) {
|
||||||
|
return {
|
||||||
|
...card,
|
||||||
|
title: '烘房' + matchingIndex.i,
|
||||||
|
model: matchingIndex.status,
|
||||||
|
dollyNumber:matchingIndex.dollyNumber,
|
||||||
|
waitmin:matchingIndex.waitmin,
|
||||||
|
temperature:matchingIndex.temperature
|
||||||
|
};
|
||||||
|
} else {
|
||||||
|
return card;
|
||||||
|
}
|
||||||
|
|
||||||
|
});
|
||||||
|
|
||||||
|
this.cardss = this.cardss.map((card) => {
|
||||||
|
const matchingIndex = response.data.dryingroomList.find((index) => index.i === card.i);
|
||||||
|
if (matchingIndex) {
|
||||||
|
return {
|
||||||
|
...card,
|
||||||
|
title: '烘房' + matchingIndex.i,
|
||||||
|
model: matchingIndex.status,
|
||||||
|
dollyNumber:matchingIndex.dollyNumber,
|
||||||
|
waitmin:matchingIndex.waitmin,
|
||||||
|
temperature:matchingIndex.temperature
|
||||||
|
};
|
||||||
|
} else {
|
||||||
|
return card;
|
||||||
|
}
|
||||||
|
|
||||||
|
});
|
||||||
|
console.log(this.cardss )
|
||||||
|
}
|
||||||
|
|
||||||
|
});
|
||||||
|
},
|
||||||
|
|
||||||
|
handleScroll(event) {
|
||||||
|
|
||||||
|
//请求烘房数据接口
|
||||||
|
this.createData();
|
||||||
|
// if (event==0){
|
||||||
|
// const that = this;
|
||||||
|
//
|
||||||
|
// }
|
||||||
|
// 获取滚动事件的相关信息
|
||||||
|
|
||||||
|
// console.log(scrollTop);
|
||||||
|
// 根据需要处理滚动事件的逻辑
|
||||||
|
// ...
|
||||||
|
},
|
||||||
|
|
||||||
|
|
||||||
|
},
|
||||||
|
mounted() {
|
||||||
|
const { createData } = this
|
||||||
|
createData()
|
||||||
|
// setInterval(this.createData, 6000)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
|
||||||
|
<style scoped>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
</style>
|
@ -0,0 +1,169 @@
|
|||||||
|
<template>
|
||||||
|
<div id="digital-flop">
|
||||||
|
<div
|
||||||
|
class="digital-flop-item"
|
||||||
|
v-for="item in digitalFlopData"
|
||||||
|
:key="item.title"
|
||||||
|
>
|
||||||
|
<div class="digital-flop-title">{{ item.title }}</div>
|
||||||
|
<div class="digital-flop">
|
||||||
|
<dv-digital-flop
|
||||||
|
:config="item.number"
|
||||||
|
style="width:100px;height:50px;"
|
||||||
|
/>
|
||||||
|
<div class="unit">{{ item.unit }}</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<dv-decoration-10 />
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
import {
|
||||||
|
getDryingRoomList,
|
||||||
|
getMesBoardEquProductionToday,
|
||||||
|
} from "@/api/kanban/dryingroom";
|
||||||
|
export default {
|
||||||
|
name: 'DigitalFlop',
|
||||||
|
data () {
|
||||||
|
return {
|
||||||
|
digitalFlopData: [],
|
||||||
|
dryingRoomList: [],
|
||||||
|
cxjZCNumber:0,
|
||||||
|
|
||||||
|
}
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
createData () {
|
||||||
|
const that = this;
|
||||||
|
getDryingRoomList({
|
||||||
|
factory: 999,
|
||||||
|
}).then((response) => {
|
||||||
|
if (response.data) {
|
||||||
|
// console.log(response)
|
||||||
|
this.cxjZCNumber=response.data.cxzc;
|
||||||
|
this.cxjYCNumber=response.data.cxyc;
|
||||||
|
this.dryingRoomList = response.data.result;
|
||||||
|
this.digitalFlopData = [
|
||||||
|
{
|
||||||
|
title: '成型机运行',
|
||||||
|
number: {
|
||||||
|
number: [this.cxjZCNumber],
|
||||||
|
content: '{nt}',
|
||||||
|
textAlign: 'right',
|
||||||
|
style: {
|
||||||
|
fill: '#4d99fc',
|
||||||
|
fontWeight: 'bold'
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
unit: '台'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: '烘房运行(自动)',
|
||||||
|
number: {
|
||||||
|
number: [response.data.hfauto],
|
||||||
|
content: '{nt}',
|
||||||
|
textAlign: 'right',
|
||||||
|
style: {
|
||||||
|
fill: '#4d99fc',
|
||||||
|
fontWeight: 'bold'
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
unit: '座'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: '收坯机台运行',
|
||||||
|
number: {
|
||||||
|
number: [response.data.spzc],
|
||||||
|
content: '{nt}',
|
||||||
|
textAlign: 'right',
|
||||||
|
style: {
|
||||||
|
fill: '#4d99fc',
|
||||||
|
fontWeight: 'bold'
|
||||||
|
}
|
||||||
|
},
|
||||||
|
unit: '台'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: '成型缓存区数量',
|
||||||
|
number: {
|
||||||
|
number: [response.data.hcnumber],
|
||||||
|
content: '{nt}',
|
||||||
|
textAlign: 'right',
|
||||||
|
style: {
|
||||||
|
fill: '#4d99fc',
|
||||||
|
fontWeight: 'bold'
|
||||||
|
}
|
||||||
|
},
|
||||||
|
unit: '个'
|
||||||
|
},
|
||||||
|
|
||||||
|
]
|
||||||
|
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
},
|
||||||
|
},
|
||||||
|
mounted () {
|
||||||
|
const { createData } = this
|
||||||
|
|
||||||
|
createData()
|
||||||
|
|
||||||
|
setInterval(createData, 5000)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
|
||||||
|
<style lang="less">
|
||||||
|
#digital-flop {
|
||||||
|
position: relative;
|
||||||
|
height: 15%;
|
||||||
|
flex-shrink: 0;
|
||||||
|
display: flex;
|
||||||
|
justify-content: space-between;
|
||||||
|
align-items: center;
|
||||||
|
background-color: rgba(6, 30, 93, 0.5);
|
||||||
|
|
||||||
|
.dv-decoration-10 {
|
||||||
|
position: absolute;
|
||||||
|
width: 95%;
|
||||||
|
left: 2.5%;
|
||||||
|
height: 5px;
|
||||||
|
bottom: 0px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.digital-flop-item {
|
||||||
|
width: 11%;
|
||||||
|
height: 80%;
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
justify-content: center;
|
||||||
|
align-items: center;
|
||||||
|
border-left: 3px solid rgb(6, 30, 93);
|
||||||
|
border-right: 3px solid rgb(6, 30, 93);
|
||||||
|
}
|
||||||
|
|
||||||
|
.digital-flop-title {
|
||||||
|
font-size: 20px;
|
||||||
|
margin-bottom: 20px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.digital-flop {
|
||||||
|
display: flex;
|
||||||
|
width: 200px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.unit {
|
||||||
|
margin-left: 10px;
|
||||||
|
display: flex;
|
||||||
|
align-items: flex-end;
|
||||||
|
box-sizing: border-box;
|
||||||
|
padding-bottom: 13px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</style>
|
@ -0,0 +1,135 @@
|
|||||||
|
<template>
|
||||||
|
<div id="data-view">
|
||||||
|
<div id="dv-full-screen-container" style="width:100vw;height:100vh">
|
||||||
|
<!-- <p class="time">-->
|
||||||
|
<!-- {{ gettimedata }}-->
|
||||||
|
<!-- </p>-->
|
||||||
|
<top-header />
|
||||||
|
|
||||||
|
<div class="main-content">
|
||||||
|
<digital-flop />
|
||||||
|
|
||||||
|
<div class="block-left-right-content">
|
||||||
|
<!-- <ranking-board />-->
|
||||||
|
|
||||||
|
<div class="block-top-bottom-content">
|
||||||
|
<!-- <div class="block-top-content">-->
|
||||||
|
<!-- <rose-chart />-->
|
||||||
|
|
||||||
|
<!-- <water-level-chart />-->
|
||||||
|
|
||||||
|
<!-- <scroll-board />-->
|
||||||
|
<carousel />
|
||||||
|
<!-- </div>-->
|
||||||
|
|
||||||
|
<!-- <cards2 />-->
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
import topHeader from './topHeader'
|
||||||
|
import digitalFlop from './digitalFlop'
|
||||||
|
import rankingBoard from './rankingBoard'
|
||||||
|
import roseChart from './roseChart'
|
||||||
|
import waterLevelChart from './waterLevelChart'
|
||||||
|
import scrollBoard from './scrollBoard'
|
||||||
|
import carousel from './carousel'
|
||||||
|
import cards2 from './cards2'
|
||||||
|
import moment from "moment";
|
||||||
|
|
||||||
|
export default {
|
||||||
|
name: 'DataView',
|
||||||
|
components: {
|
||||||
|
topHeader,
|
||||||
|
digitalFlop,
|
||||||
|
rankingBoard,
|
||||||
|
roseChart,
|
||||||
|
waterLevelChart,
|
||||||
|
scrollBoard,
|
||||||
|
cards2,
|
||||||
|
carousel
|
||||||
|
},
|
||||||
|
data () {
|
||||||
|
return {
|
||||||
|
gettimedata: "",
|
||||||
|
}
|
||||||
|
},
|
||||||
|
mounted() {
|
||||||
|
this.gettime();
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
gettime() {
|
||||||
|
this.gettimedata = moment().format("YYYY-MM-DD HH:mm:ss ");
|
||||||
|
setInterval(() => {
|
||||||
|
this.gettimedata = moment().format("YYYY-MM-DD HH:mm:ss ");
|
||||||
|
}, 1000);
|
||||||
|
},
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style lang="less">
|
||||||
|
#data-view {
|
||||||
|
width: 100%;
|
||||||
|
height: 100%;
|
||||||
|
background-color: #030409;
|
||||||
|
color: #fff;
|
||||||
|
|
||||||
|
#dv-full-screen-container {
|
||||||
|
background-image: url('../../../assets/images/bg-exception.png');
|
||||||
|
background-size: 100% 100%;
|
||||||
|
box-shadow: 0 0 3px blue;
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
overflow: auto;
|
||||||
|
}
|
||||||
|
|
||||||
|
.main-content {
|
||||||
|
flex: 1;
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
}
|
||||||
|
|
||||||
|
.block-left-right-content {
|
||||||
|
flex: 1;
|
||||||
|
display: flex;
|
||||||
|
margin-top: 10px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.block-top-bottom-content {
|
||||||
|
flex: 1;
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
box-sizing: border-box;
|
||||||
|
padding-left: 0px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.block-top-content {
|
||||||
|
height: 55%;
|
||||||
|
display: flex;
|
||||||
|
flex-grow: 0;
|
||||||
|
box-sizing: border-box;
|
||||||
|
padding-bottom: 20px;
|
||||||
|
}
|
||||||
|
.time {
|
||||||
|
font-size: 30px;
|
||||||
|
font-weight: 400;
|
||||||
|
color: #ffffff;
|
||||||
|
line-height: 71px;
|
||||||
|
|
||||||
|
|
||||||
|
position: fixed;
|
||||||
|
top: 0;
|
||||||
|
z-index: 9999;;
|
||||||
|
padding: 10px;
|
||||||
|
width: 100%;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</style>
|
@ -0,0 +1,93 @@
|
|||||||
|
<template>
|
||||||
|
<div id="ranking-board">
|
||||||
|
<div class="ranking-board-title">AGV运行分布</div>
|
||||||
|
<!-- <dv-scroll-ranking-board :config="config" />-->
|
||||||
|
<dv-scroll-ranking-board :config="config">
|
||||||
|
<template #item="{ item }">
|
||||||
|
<li class="name">{{ item.name }}</li>
|
||||||
|
</template>
|
||||||
|
</dv-scroll-ranking-board>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
export default {
|
||||||
|
name: 'RankingBoard',
|
||||||
|
data () {
|
||||||
|
return {
|
||||||
|
config: {
|
||||||
|
data: [
|
||||||
|
{
|
||||||
|
name: '模式:'+'手动',
|
||||||
|
des:'当前是否占位',
|
||||||
|
value: 20
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: '模式:'+'自动',
|
||||||
|
des:'当前是否占位',
|
||||||
|
value: 21
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: '模式:'+'手动',
|
||||||
|
des:'当前是否占位',
|
||||||
|
value: 15
|
||||||
|
},
|
||||||
|
|
||||||
|
// {
|
||||||
|
// name: '计日工',
|
||||||
|
// value: 80
|
||||||
|
// },
|
||||||
|
// {
|
||||||
|
// name: '路基',
|
||||||
|
// value: 45
|
||||||
|
// },
|
||||||
|
// {
|
||||||
|
// name: '交安设施',
|
||||||
|
// value: 29
|
||||||
|
// },
|
||||||
|
// {
|
||||||
|
// name: '除雪',
|
||||||
|
// value: 29
|
||||||
|
// },
|
||||||
|
// {
|
||||||
|
// name: '绿化',
|
||||||
|
// value: 29
|
||||||
|
// }
|
||||||
|
],
|
||||||
|
rowNum: 21
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style lang="less">
|
||||||
|
#ranking-board {
|
||||||
|
width: 20%;
|
||||||
|
box-shadow: 0 0 3px blue;
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
background-color: rgba(6, 30, 93, 0.5);
|
||||||
|
border-top: 2px solid rgba(1, 153, 209, .5);
|
||||||
|
box-sizing: border-box;
|
||||||
|
padding: 0px 30px;
|
||||||
|
|
||||||
|
.ranking-board-title {
|
||||||
|
font-weight: bold;
|
||||||
|
height: 50px;
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
font-size: 20px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.dv-scroll-ranking-board {
|
||||||
|
flex: 1;
|
||||||
|
}
|
||||||
|
.name {
|
||||||
|
line-height: 1.2; /* 设置每行名称的高度 */
|
||||||
|
overflow: hidden; /* 控制溢出内容的处理方式 */
|
||||||
|
text-overflow: ellipsis; /* 当名称溢出时,使用省略号表示 */
|
||||||
|
white-space: nowrap; /* 禁止名称换行 */
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</style>
|
@ -0,0 +1,145 @@
|
|||||||
|
<template>
|
||||||
|
<div id="rose-chart">
|
||||||
|
<div class="rose-chart-title">烘房出香情况</div>
|
||||||
|
|
||||||
|
<div class="water-level-chart-details">
|
||||||
|
本班次出香<span>354</span>车
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<!-- <dv-charts :option="option" />-->
|
||||||
|
<dv-capsule-chart :config="config" style="width:300px;height:200px" />
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
export default {
|
||||||
|
name: 'RoseChart',
|
||||||
|
data () {
|
||||||
|
return {
|
||||||
|
option: {},
|
||||||
|
config: {
|
||||||
|
data: [
|
||||||
|
{
|
||||||
|
name: '合格',
|
||||||
|
value: 362
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: '不合格',
|
||||||
|
value: 10
|
||||||
|
},
|
||||||
|
|
||||||
|
],
|
||||||
|
colors: ['#3dd96a', '#fc0541'],
|
||||||
|
unit: '单位',
|
||||||
|
showValue: true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
createData () {
|
||||||
|
const { randomExtend } = this
|
||||||
|
|
||||||
|
this.option = {
|
||||||
|
// title: {
|
||||||
|
// text: '畅销饮料占比饼状图'
|
||||||
|
// },
|
||||||
|
series: [
|
||||||
|
{
|
||||||
|
type: 'pie',
|
||||||
|
data: [
|
||||||
|
{ name: '可口可乐', value: 93 },
|
||||||
|
{ name: '百事可乐', value: 32 },
|
||||||
|
// { name: '哇哈哈', value: 65 },
|
||||||
|
// { name: '康师傅', value: 44 },
|
||||||
|
// { name: '统一', value: 52 },
|
||||||
|
],
|
||||||
|
insideLabel: {
|
||||||
|
show: true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
// series: [
|
||||||
|
// {
|
||||||
|
// type: 'pie',
|
||||||
|
// radius: '50%',
|
||||||
|
// roseSort: false,
|
||||||
|
// data: [
|
||||||
|
// { name: '合格', value: randomExtend(200, 300) },
|
||||||
|
// { name: '不合格', value: randomExtend(5, 10) },
|
||||||
|
//
|
||||||
|
// ],
|
||||||
|
// insideLabel: {
|
||||||
|
// show: false
|
||||||
|
// },
|
||||||
|
// outsideLabel: {
|
||||||
|
// formatter: '{value}',
|
||||||
|
// labelLineEndLength: 20,
|
||||||
|
// style: {
|
||||||
|
//
|
||||||
|
// fill: '#fff'
|
||||||
|
// },
|
||||||
|
// labelLineStyle: {
|
||||||
|
// stroke: '#fff'
|
||||||
|
// }
|
||||||
|
// },
|
||||||
|
// roseType: true
|
||||||
|
// }
|
||||||
|
// ],
|
||||||
|
// color: ['#5fec4f', '#fa3600']
|
||||||
|
}
|
||||||
|
},
|
||||||
|
randomExtend (minNum, maxNum) {
|
||||||
|
if (arguments.length === 1) {
|
||||||
|
return parseInt(Math.random() * minNum + 1, 10)
|
||||||
|
} else {
|
||||||
|
return parseInt(Math.random() * (maxNum - minNum + 1) + minNum, 10)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
mounted () {
|
||||||
|
const { createData } = this
|
||||||
|
|
||||||
|
createData()
|
||||||
|
|
||||||
|
setInterval(createData, 30000)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style lang="less">
|
||||||
|
#rose-chart {
|
||||||
|
width: 30%;
|
||||||
|
height: 100%;
|
||||||
|
background-color: rgba(6, 30, 93, 0.5);
|
||||||
|
border-top: 2px solid rgba(1, 153, 209, .5);
|
||||||
|
box-sizing: border-box;
|
||||||
|
|
||||||
|
.rose-chart-title {
|
||||||
|
height: 50px;
|
||||||
|
font-weight: bold;
|
||||||
|
text-indent: 20px;
|
||||||
|
font-size: 20px;
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
.dv-charts-container {
|
||||||
|
height: calc(~"100% - 50px");
|
||||||
|
}
|
||||||
|
.water-level-chart-details {
|
||||||
|
height: 15%;
|
||||||
|
display: flex;
|
||||||
|
justify-content: center;
|
||||||
|
font-size: 17px;
|
||||||
|
align-items: flex-end;
|
||||||
|
|
||||||
|
span {
|
||||||
|
font-size: 35px;
|
||||||
|
font-weight: bold;
|
||||||
|
color: #58a1ff;
|
||||||
|
margin: 0 5px;
|
||||||
|
margin-bottom: -5px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</style>
|
@ -0,0 +1,40 @@
|
|||||||
|
<template>
|
||||||
|
<div id="scroll-board">
|
||||||
|
<dv-scroll-board :config="config" />
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
export default {
|
||||||
|
name: 'ScrollBoard',
|
||||||
|
data () {
|
||||||
|
return {
|
||||||
|
config: {
|
||||||
|
header: ['时间','暂存区','托盘', '报警信息'],
|
||||||
|
data: [
|
||||||
|
['2023-11-01 15:25:00','XBuffer 16','S0000451', '超时未转运' ],
|
||||||
|
|
||||||
|
],
|
||||||
|
index: true,
|
||||||
|
columnWidth: [50, 200,200,200],
|
||||||
|
align: ['center'],
|
||||||
|
rowNum: 7,
|
||||||
|
headerBGC: '#1981f6',
|
||||||
|
headerHeight: 45,
|
||||||
|
oddRowBGC: 'rgba(0, 44, 81, 0.8)',
|
||||||
|
evenRowBGC: 'rgba(10, 29, 50, 0.8)'
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style lang="less">
|
||||||
|
#scroll-board {
|
||||||
|
width: 100%;
|
||||||
|
box-sizing: border-box;
|
||||||
|
margin-left: 20px;
|
||||||
|
height: 100%;
|
||||||
|
overflow: hidden;
|
||||||
|
}
|
||||||
|
</style>
|
@ -0,0 +1,61 @@
|
|||||||
|
<template>
|
||||||
|
<div id="top-header">
|
||||||
|
<dv-decoration-8 class="header-left-decoration" />
|
||||||
|
<dv-decoration-5 class="header-center-decoration" />
|
||||||
|
<dv-decoration-8 class="header-right-decoration" :reverse="true" />
|
||||||
|
|
||||||
|
<div class="center-title">烘房监控平台</div>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
import moment from "moment";
|
||||||
|
|
||||||
|
export default {
|
||||||
|
name: 'TopHeader',
|
||||||
|
|
||||||
|
data () {
|
||||||
|
return {
|
||||||
|
gettimedata: "",
|
||||||
|
}
|
||||||
|
},
|
||||||
|
mounted() {
|
||||||
|
// this.gettime();
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style lang="less">
|
||||||
|
#top-header {
|
||||||
|
position: relative;
|
||||||
|
width: 100%;
|
||||||
|
height: 100px;
|
||||||
|
display: flex;
|
||||||
|
justify-content: space-between;
|
||||||
|
flex-shrink: 0;
|
||||||
|
|
||||||
|
.header-center-decoration {
|
||||||
|
width: 40%;
|
||||||
|
height: 60px;
|
||||||
|
margin-top: 30px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.header-left-decoration, .header-right-decoration {
|
||||||
|
width: 25%;
|
||||||
|
height: 60px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.center-title {
|
||||||
|
position: absolute;
|
||||||
|
font-size: 30px;
|
||||||
|
font-weight: bold;
|
||||||
|
left: 50%;
|
||||||
|
top: 15px;
|
||||||
|
transform: translateX(-50%);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
</style>
|
@ -0,0 +1,93 @@
|
|||||||
|
<template>
|
||||||
|
<div id="water-level-chart">
|
||||||
|
<div class="water-level-chart-title">烘房出香情况</div>
|
||||||
|
|
||||||
|
<div class="water-level-chart-details">
|
||||||
|
|
||||||
|
本班次出香<span>354</span>车
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="chart-container">
|
||||||
|
|
||||||
|
<dv-water-level-pond :config="config" />
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
import roseChart from './roseChart'
|
||||||
|
export default {
|
||||||
|
name: 'WaterLevelChart',
|
||||||
|
data () {
|
||||||
|
return {
|
||||||
|
config: {
|
||||||
|
data: [45],
|
||||||
|
shape: 'round',
|
||||||
|
waveHeight: 25,
|
||||||
|
waveNum: 2
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style lang="less">
|
||||||
|
#water-level-chart {
|
||||||
|
width: 20%;
|
||||||
|
box-sizing: border-box;
|
||||||
|
margin-left: 20px;
|
||||||
|
background-color: rgba(6, 30, 93, 0.5);
|
||||||
|
border-top: 2px solid rgba(1, 153, 209, .5);
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
|
||||||
|
.water-level-chart-title {
|
||||||
|
font-weight: bold;
|
||||||
|
height: 50px;
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
font-size: 20px;
|
||||||
|
justify-content: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
.water-level-chart-details {
|
||||||
|
height: 15%;
|
||||||
|
display: flex;
|
||||||
|
justify-content: center;
|
||||||
|
font-size: 17px;
|
||||||
|
align-items: flex-end;
|
||||||
|
|
||||||
|
span {
|
||||||
|
font-size: 35px;
|
||||||
|
font-weight: bold;
|
||||||
|
color: #58a1ff;
|
||||||
|
margin: 0 5px;
|
||||||
|
margin-bottom: -5px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.chart-container {
|
||||||
|
flex: 1;
|
||||||
|
display: flex;
|
||||||
|
justify-content: center;
|
||||||
|
align-items: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
.dv-water-pond-level {
|
||||||
|
max-width: 90%;
|
||||||
|
width: 200px;
|
||||||
|
height: 200px;
|
||||||
|
border: 10px solid #19c3eb;
|
||||||
|
border-radius: 50%;
|
||||||
|
|
||||||
|
ellipse {
|
||||||
|
stroke: transparent !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
text {
|
||||||
|
font-size: 40px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</style>
|
Loading…
Reference in New Issue