add 用量统计&风机频率

This commit is contained in:
lb 2023-12-06 09:47:06 +08:00
parent e7263302a7
commit 7cb88fab88
17 changed files with 240 additions and 63 deletions

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.7 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 20 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 54 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 49 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 49 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 41 KiB

View File

@ -6,14 +6,23 @@
--> -->
<template> <template>
<div <div class="kiln-container" :class="['kiln-container__' + size]">
class="kiln-container" <div class="container-hd" style="display: flex; align-items: center">
:style="{ width: width ? width + 'px' : 'initial' }"> <i
<div class="container-hd"> class=""
<i class=""> style="display: inline-block; margin-left: 12px; padding-top: 4px">
<img src="" alt="" /> <img :src="imgSrc" width="18" height="16" alt="" />
</i> </i>
<span>{{ name }}</span> <span
style="
color: #fff;
font-size: 20px;
line-height: 2;
margin-left: 6px;
display: inline-block;
">
{{ name }}
</span>
</div> </div>
<div class="container-body"> <div class="container-body">
<slot> <slot>
@ -27,11 +36,20 @@
export default { export default {
name: 'KilnContainer', name: 'KilnContainer',
components: {}, components: {},
props: ['name', 'width'], props: ['name', 'width', 'size'],
data() { data() {
return {}; return {};
}, },
computed: {}, computed: {
imgSrc() {
switch (this.name) {
case '原料用量统计':
return require('../assets/move.png');
case '风机运行频率':
return require('../assets/flow.png');
}
},
},
methods: {}, methods: {},
}; };
</script> </script>
@ -41,9 +59,27 @@ export default {
display: inline-block; display: inline-block;
width: 100%; width: 100%;
height: 100%; height: 100%;
background: #ccc3; padding: 8px;
display: flex; display: flex;
flex-direction: column; flex-direction: column;
position: relative; position: relative;
&__small {
background: url(../assets/short.png) no-repeat;
background-size: 100% 100%;
background-position: 0 0;
}
&__middle {
background: url(../assets/middle.png) no-repeat;
background-size: 100% 100%;
background-position: 0 0;
}
&__large {
background: url(../assets/high.png) no-repeat;
background-size: 100% 100%;
background-position: 0 0;
}
} }
</style> </style>

View File

@ -63,7 +63,7 @@ export default {
.shadow-rect { .shadow-rect {
padding: 8px; padding: 8px;
border-radius: 2px; border-radius: 2px;
box-shadow: inset 0 0 10px 2px #ccc9; box-shadow: inset 0 0 8px 2px #ccc3;
color: white; color: white;
display: flex; display: flex;
align-items: center; align-items: center;

View File

@ -6,10 +6,10 @@ export default {
<div <div
class="line" class="line"
style={{ style={{
width: this.horizontal ? '100%' : '2px', width: this.horizontal ? '100%' : '4px',
height: this.horizontal ? '2px' : '100%', height: this.horizontal ? '4px' : '100%',
background: background:
'radial-gradient(ellipse at center, #3CE7FF 100%, #3CE7FF 50%, #3CE7FF 0%)', 'radial-gradient(ellipse at center, #3CE7FF, #3CE7FF66, transparent, transparent)',
}}></div> }}></div>
); );
}, },

View File

@ -0,0 +1,54 @@
<!--
filename: FanSequence.vue
author: liubin
date: 2023-12-06 09:40:51
description:
-->
<template>
<Container name="风机运行频率" size="middle" style="">
<div
class="absolute"
style="
padding: 12px;
display: grid;
grid-template-columns: repeat(2, 1fr);
grid-auto-rows: auto;
gap: 8px;
">
<ShadowRect v-for="n in 14" :key="n" :rounded="false">
<span
style="
font-size: 16px;
line-height: 1.24;
flex: 1.2;
text-align: right;
padding-right: 8px;
letter-spacing: 1px;
">
{{ n }}#风机
</span>
<span style="font-size: 16px; line-height: 1.24; flex: 1">
{{ Math.floor(Math.random() * 100) }}Hz
</span>
</ShadowRect>
</div>
</Container>
</template>
<script>
import Container from '../components/Container.vue';
import ShadowRect from '../components/ShadowRect.vue';
export default {
name: 'FanSequence',
components: { Container, ShadowRect },
props: {},
data() {
return {};
},
computed: {},
methods: {},
};
</script>
<style scoped lang="scss"></style>

View File

@ -0,0 +1,39 @@
<!--
filename: LeftFour.vue
author: liubin
date: 2023-12-06 09:35:30
description:
-->
<template>
<div
class="left-four"
style="
display: grid;
gap: 16px;
grid-template-columns: 1fr 1fr;
grid-template-rows: 1fr 1fr;
">
<MaterialCost />
<MaterialCost />
<MaterialCost />
<FanSequence />
</div>
</template>
<script>
import MaterialCost from './MaterialCost.vue';
import FanSequence from './FanSequence.vue';
export default {
name: 'LeftFour',
components: { MaterialCost, FanSequence },
props: {},
data() {
return {};
},
computed: {},
methods: {},
};
</script>
<style scoped lang="scss"></style>

View File

@ -0,0 +1,58 @@
<!--
filename: MaterialCost.vue
author: liubin
date: 2023-12-06 09:09:27
description:
-->
<template>
<Container name="原料用量统计" size="middle" style="">
<div
class="absolute"
style="
padding: 12px;
display: grid;
grid-template-columns: repeat(3, 1fr);
grid-auto-rows: auto;
gap: 8px;
">
<ShadowRect v-for="n in 9" :key="n" :rounded="false">
<div
class="material"
style="
flex: 1;
padding: 6px;
display: flex;
flex-direction: column;
gap: 4px;
align-items: center;
justify-content: center;
">
<span style="color: #0ee8e4; font-weight: 500; font-size: 32px">
234
</span>
<span style="color: #fff; font-size: 14px; letter-spacing: 1px">
- 原料1/ -
</span>
</div>
</ShadowRect>
</div>
</Container>
</template>
<script>
import Container from '../components/Container.vue';
import ShadowRect from '../components/ShadowRect.vue';
export default {
name: 'MaterialCost',
components: { Container, ShadowRect },
props: {},
data() {
return {};
},
computed: {},
methods: {},
};
</script>
<style scoped lang="scss"></style>

View File

@ -14,16 +14,15 @@
left: -16px; left: -16px;
width: calc(100% + 28px); width: calc(100% + 28px);
height: calc(100% + 38px); height: calc(100% + 38px);
background: #073f4a;
display: flex; display: flex;
flex-direction: column; flex-direction: column;
gap: 16px; gap: 16px;
"> ">
<!-- test area --> <!-- test area -->
<DateBtnGroup /> <!-- <DateBtnGroup /> -->
<!-- 风机频率 --> <!-- 风机频率 -->
<div <!-- <div
class="absolute" class="absolute"
style=" style="
position: absolute; position: absolute;
@ -53,9 +52,9 @@
{{ Math.floor(Math.random() * 100) }}Hz {{ Math.floor(Math.random() * 100) }}Hz
</span> </span>
</ShadowRect> </ShadowRect>
</div> </div> -->
<!-- 窑炉信息 --> <!-- 窑炉信息 -->
<div <!-- <div
class="absolute" class="absolute"
style=" style="
position: absolute; position: absolute;
@ -69,50 +68,24 @@
grid-auto-rows: 56px; grid-auto-rows: 56px;
gap: 8px; gap: 8px;
"> ">
<ShadowRect v-for="n in 8" :key="n"> <ShadowRect v-for="n in 8" :key="n">
<!-- without slot -->
</ShadowRect> </ShadowRect>
</div> </div> -->
<!-- 原料用量统计 --> <!-- 原料用量统计 -->
<div <!-- <div
class="absolute"
style=" style="
position: absolute; position: absolute;
top: 120px; top: 10px;
left: 60px; left: 10px;
padding: 12px; margin: 10px;
background: #0003; width: 400px;
border: 1px solid #ccc;
display: grid;
grid-template-columns: repeat(3, 144px);
grid-auto-rows: auto;
gap: 8px;
"> ">
<ShadowRect v-for="n in 9" :key="n" :rounded="true"> <MaterialCost />
<div </div> -->
class="material"
style="
flex: 1;
padding: 6px;
display: flex;
flex-direction: column;
gap: 4px;
align-items: center;
justify-content: center;
">
<span style="color: #0ee8e4; font-weight: 500; font-size: 32px">
234
</span>
<span style="color: #fff; font-size: 14px; letter-spacing: 1px">
- 原料1/ -
</span>
</div>
</ShadowRect>
</div>
<!-- btn group --> <!-- btn group -->
<div <!-- <div
class="absolute" class="absolute"
style=" style="
position: absolute; position: absolute;
@ -136,10 +109,10 @@
"> ">
<SelectorBtnGroup <SelectorBtnGroup
:options="['氧气含量', '二氧化硫', '一氧化氢', '二氧化氢']" /> :options="['氧气含量', '二氧化硫', '一氧化氢', '二氧化氢']" />
</div> </div> -->
<!-- switcher --> <!-- switcher -->
<div <!-- <div
class="absolute" class="absolute"
style=" style="
position: absolute; position: absolute;
@ -150,10 +123,10 @@
border: 1px solid #ccc; border: 1px solid #ccc;
"> ">
<Switcher /> <Switcher />
</div> </div> -->
<!-- container --> <!-- container -->
<Container name="能耗" :width="300"> <!-- <Container name="能耗" :width="300">
<div <div
class="v" class="v"
style="height: 100px; background: #ccc; width: 300px"></div> style="height: 100px; background: #ccc; width: 300px"></div>
@ -161,10 +134,10 @@
<div <div
class="v" class="v"
style="height: 100px; background: #caf; width: 300px"></div> style="height: 100px; background: #caf; width: 300px"></div>
</Container> </Container> -->
<!-- null --> <!-- null -->
<section class="header" style="height: 80px">窑炉生产运行驾驶舱</section> <!-- <section class="header" style="height: 80px">窑炉生产运行驾驶舱</section>
<section <section
class="main-body" class="main-body"
style=" style="
@ -176,7 +149,14 @@
<div class="main-left" style="background: #f001"></div> <div class="main-left" style="background: #f001"></div>
<div class="main-middle" style="background: #0f01"></div> <div class="main-middle" style="background: #0f01"></div>
<div class="main-right" style="background: #00f1"></div> <div class="main-right" style="background: #00f1"></div>
</section> </section> -->
<KHeader />
<div class="main-body" style="flex: 1; display: flex; gap: 16px">
<div class="left-side" style="flex: 2">
<LeftFour />
</div>
<div class="right-side" style="flex: 1;"></div>
</div>
</div> </div>
</template> </template>
@ -187,18 +167,25 @@ import SelectorBtnGroup from '../components/SelectorBtnGroup.vue';
import Switcher from '../components/Switcher.vue'; import Switcher from '../components/Switcher.vue';
import KilnLine from '../components/line'; import KilnLine from '../components/line';
import Container from '../components/Container.vue'; import Container from '../components/Container.vue';
import KHeader from '../components/Header.vue';
console.log('Line', KilnLine) import MaterialCost from './MaterialCost.vue';
import LeftFour from './LeftFour.vue';
console.log('Line', KilnLine);
export default { export default {
name: 'KilnDataBoard', name: 'KilnDataBoard',
components: { components: {
DateBtnGroup, DateBtnGroup,
KilnLine, KilnLine,
KHeader,
LeftFour,
Container, Container,
ShadowRect, ShadowRect,
SelectorBtnGroup, SelectorBtnGroup,
Switcher, Switcher,
MaterialCost,
}, },
props: {}, props: {},
data() { data() {
@ -211,5 +198,8 @@ export default {
<style scoped lang="scss"> <style scoped lang="scss">
.KilnDataBoard { .KilnDataBoard {
background: url(../assets/bg.png) no-repeat;
background-size: cover;
background-position: 0 0;
} }
</style> </style>