PIS界面

This commit is contained in:
Yuan 2022-09-14 17:21:32 +08:00
parent 83736869c3
commit bad5568564
3 changed files with 375 additions and 0 deletions

BIN
src/assets/pis/train.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 22 KiB

View File

@ -203,6 +203,8 @@ const VoiceManage = () => import('@/views/fileManage/voiceManage');
const IscsDeviceManage = () => import('@/views/system/iscsDeviceManage');
const IscsResourcesManage = () => import('@/views/system/iscsResourcesManage');
const PisScreen = () => import('@/views/pis/index')
// import { GenerateRouteProjectList } from '@/scripts/ProjectConfig';
// import { getSessionStorage } from '@/utils/auth';
@ -703,6 +705,11 @@ export const publicAsyncRoute = [
path: '/bigTrainRunplanManage',
component: BigTrainRunplanManage,
hidden: true
},
{
path: '/pis',
component: PisScreen,
hidden: true
}
];

368
src/views/pis/index.vue Normal file
View File

@ -0,0 +1,368 @@
<template>
<div class="screen">
<el-button @click="changeView" style="position:fixed; top: 0; right: 0">{{ this.view }}</el-button>
<div v-if="view === 'station'" class="station">
<div class="datetime">
<div class="logo">LOGO</div>
<div>
<span>{{ date }}</span>
<span class="time">{{ time }}</span>
</div>
</div>
<div class="traininfo">
<div class="currentStation">
<div>本站 This Station</div>
<div class="text-center bigger">{{ trainInfo.station.name }}</div>
<div class="text-center">{{ trainInfo.station.nameEN }}</div>
</div>
<div class="devide"></div>
<div class="nextTrain">
<div>第一班列车 1st</div>
<div class="text-center yellow">
<span class="bigger">{{ trainInfo.nextTrain.time }} 分钟</span> <span>min</span>
</div>
<div>开往 {{ trainInfo.nextTrain.to }}</div>
<div>TO {{ trainInfo.nextTrain.toEN }}</div>
</div>
<div class="devide"></div>
<div class="secondTrain">
<div>第二班列车 2nd</div>
<div class="text-center bigger">{{ trainInfo.secondTrain.time }} 分钟 <span>min</span></div>
<div>开往 {{ trainInfo.secondTrain.to }}</div>
<div>TO {{ trainInfo.secondTrain.toEN }}</div>
</div>
</div>
<div class="media">
<div class="mediacontent"></div>
<div class="banner">
<div class="text">{{ bannerText }}</div>
<div class="text">{{ bannerText }}</div>
</div>
</div>
<div class="tempratrue">
<div class="directionIdentifer"></div>
<div class="trainpic">
<div class="pic"></div>
<div class="textarea">
<div v-for="i in 6" :key="i">舒适 Vacant</div>
</div>
</div>
</div>
</div>
<div v-if="view === 'train'" class="train">
<div class="content">
<div class="left">
<div class="logo">LOGO</div>
<div class="info">
<div class="time block">
<div>时间 TIME</div>
<div>{{ time }}</div>
</div>
<div class="date block">
<div>日期 DATE</div>
<div>{{ date }}</div>
</div>
<div class="next block">
<div class="up">
<div>下一站</div>
<div>Next Station</div>
</div>
<div class="down">
<div>{{ currentTrain.nextStationName }}</div>
<div>{{ currentTrain.nextStationNameEN }}</div>
</div>
</div>
</div>
</div>
<div class="right">
<div class="dest">
<div>开往: {{ currentTrain.destination }} / TO: {{ currentTrain.destinationEN }}</div>
</div>
<div class="media"></div>
</div>
</div>
<div class="banner">
<div class="text">{{ bannerText }}</div>
<div class="text">{{ bannerText }}</div>
</div>
</div>
</div>
</template>
<script>
let timer
export default {
name: 'PIS',
components: {},
computed: {
date() {
return `${this.datetime.getFullYear()}${this.datetime.getMonth() + 1}${this.datetime.getDate()}`
},
time() {
return `${this.datetime.getHours()}:${this.datetime.getMinutes() + 1}`
},
},
data() {
return {
view: 'station',
datetime: new Date(),
trainInfo: {
station: {
name: '科技路',
nameEN: 'KEJILU',
},
nextTrain: {
time: 3,
to: '航天东路',
toEN: 'HANGTIANDONGLU',
},
secondTrain: {
time: 7,
to: '航天新城',
toEN: 'HANGTIANXINCHENG',
},
},
bannerText:
'党的十八大提出倡导富强、民主、文明、和谐倡导自由、平等、公正、法治倡导爱国、敬业、诚信、友善积极培育和践行社会主义核心价值观。富强、民主、文明、和谐是国家层面的价值目标自由、平等、公正、法治是社会层面的价值取向爱国、敬业、诚信、友善是公民个人层面的价值准则这24个字是社会主义核心价值观的基本内容。',
currentTrain: {
nextStationName: '丈八一路',
nextStationNameEN: 'ZHANGBA 1 LU',
destination: '西安国际医学中心',
destinationEN: `XI'ANGUOJIYIXUEZHONGXIN`,
},
}
},
mounted() {
clearTimeout(timer)
timer = setInterval(() => {
this.tick()
}, 1000)
},
destroyed() {
clearInterval(timer)
timer = null
},
methods: {
changeView() {
if (this.view === 'station') {
this.view = 'train'
} else {
this.view = 'station'
}
},
tick() {
this.datetime = new Date()
},
},
}
</script>
<style lang="scss" scoped>
.screen {
height: 100vh;
width: 100vw;
font-size: 28px;
color: #fff;
user-select: none;
}
.station {
height: 100%;
display: grid;
gap: 10px;
padding: 10px;
background: linear-gradient(#009eb5, #00b7d7);
grid-template-columns: repeat(4, 1fr);
grid-template-rows: repeat(5, 1fr);
& > div {
display: flex;
justify-content: center;
align-items: center;
overflow: visible;
}
.datetime,
.traininfo {
border: 1px solid rgb(143, 192, 184);
border-radius: 5px;
background: #009ab8;
box-shadow: 2px 2px 3px 1px #69898f;
}
.datetime {
grid-area: 1/1/2/2;
flex-direction: column;
justify-content: space-evenly;
.time {
font-size: 1.2em;
margin-left: 0.5em;
}
}
.traininfo {
grid-area: 2/1/5/2;
flex-direction: column;
justify-content: space-evenly;
font-size: 24px;
& > div {
width: 100%;
padding: 0 30px;
line-height: 1.6em;
}
.devide {
width: 80%;
height: 2px;
background: rgba($color: #fff, $alpha: 0.7);
border-radius: 100%;
}
.text-center {
text-align: center;
}
.bigger {
font-size: 1.5em;
}
.yellow {
color: #cff055;
}
.nextTrain {
font-size: 1.1em;
}
}
.media {
grid-area: 1/2/5/5;
flex-direction: column;
justify-content: space-between;
.mediacontent {
width: 100%;
height: calc(85% - 10px);
background: linear-gradient(#cff055, #009eb5);
}
.banner {
width: 100%;
height: 15%;
border: 1px solid rgb(143, 192, 184);
border-radius: 5px;
background: #009ab8;
box-shadow: 2px 2px 3px 1px #69898f;
overflow: hidden;
padding: 10px;
display: flex;
justify-content: flex-start;
align-items: center;
.text {
white-space: nowrap;
font-size: 60px;
animation: 40s linear infinite scroll;
color: #cff055;
}
}
}
.tempratrue {
grid-area: 5/1/6/5;
justify-content: space-evenly;
.directionIdentifer {
font-size: 72px;
}
.trainpic {
width: 80%;
.pic {
height: 120px;
background-image: url('~@/assets/pis/train.png');
background-size: cover;
background-position: center;
}
.textarea {
display: flex;
justify-content: space-evenly;
}
}
}
}
.train {
height: 100%;
background: linear-gradient(90deg, #44537b, #445567, #44537b);
.content {
height: 88%;
padding: 15px;
display: flex;
.left,
.right {
height: 100%;
}
.left {
width: 30%;
background: linear-gradient(90deg, #3e4e69, #586baa, #3e4e69);
padding: 20px;
.logo {
height: 12%;
}
.info {
height: 88%;
background-color: #7076b0;
border-radius: 15px;
padding: 8px;
overflow: visible;
display: flex;
flex-direction: column;
font-size: 40px;
font-weight: bold;
.time {
height: 25%;
}
.date {
height: 25%;
margin: 8px 0;
}
.next {
height: 50%;
}
.block {
background: linear-gradient(90deg, #445397, #7b7cc2, #445397);
border-radius: 7px;
display: flex;
flex-direction: column;
align-items: center;
justify-content: space-evenly;
.up,
.down {
text-align: center;
}
}
}
}
.right {
width: 70%;
.dest {
height: 15%;
display: flex;
align-items: center;
padding: 20px;
font-size: 40px;
}
.media {
height: 85%;
background: linear-gradient(#7b7cc2, #cff055);
}
}
}
.banner {
height: 12%;
overflow: hidden;
padding: 10px;
display: flex;
justify-content: flex-start;
align-items: center;
.text {
white-space: nowrap;
font-size: 60px;
animation: 40s linear infinite scroll;
color: #cff055;
}
}
}
@keyframes scroll {
from {
transform: translateX(0);
}
to {
transform: translateX(-100%);
}
}
</style>