This commit is contained in:
hzz 2023-12-21 17:15:46 +08:00
parent 9877f6ca84
commit e65a288533
2 changed files with 96 additions and 17 deletions

View File

@ -2,26 +2,37 @@
<div class="left-box"> <div class="left-box">
<div class="sheng"> <div class="sheng">
<p>升到位</p> <p>升到位</p>
<p><i class="iconfont icon-zhengque"></i></p> <p><i class="iconfont icon-zhengque" :class="{color:leftStatus == 'top'}"></i></p>
</div> </div>
<div class="zhong"> <div class="zhong">
<div class="zhong-left"> <div class="zhong-left">
<div>上升中</div> <div>上升中</div>
<div><i class="iconfont icon-shangshengzhong"></i></div> <div><i class="iconfont icon-shangshengzhong" :class="{color:leftStatus == 'up'}"></i></div>
</div> </div>
<div class="zhong-right"> <div class="zhong-right">
<div><i class="iconfont icon-xiajiangzhong"></i></div> <div><i class="iconfont icon-xiajiangzhong" :class="{color:leftStatus == 'down'}"></i></div>
<div>下降中</div> <div>下降中</div>
</div> </div>
</div> </div>
<div class="jiang"> <div class="jiang">
<p><i class="iconfont icon-zhengque"></i></p> <p><i class="iconfont icon-zhengque" :class="{color:leftStatus == 'bottom'}"></i></p>
<p>降到位</p> <p>降到位</p>
</div> </div>
</div> </div>
</template> </template>
<script setup lang='ts'> <script setup lang='ts'>
import { onMounted, onUnmounted, ref, reactive,watch } from 'vue'
const prop = defineProps({
leftStatusObj: {
type: Object,
default: ''
},
leftStatus: {
type: String,
default: ''
}
})
</script> </script>
<style scoped> <style scoped>
@ -60,4 +71,7 @@
font-size: 50px; font-size: 50px;
color: #ccc; color: #ccc;
} }
.color {
color: #00FFFF;
}
</style> </style>

View File

@ -10,7 +10,7 @@
<div class="l-content"> <div class="l-content">
<div class="l-content-box"> <div class="l-content-box">
<Border title="实时状态"> <Border title="实时状态">
<LeftStatus></LeftStatus> <LeftStatus :leftStatus="thatstatus"></LeftStatus>
</Border> </Border>
</div> </div>
@ -19,15 +19,15 @@
<div class="center"> <div class="center">
<div class="left-column"></div> <div class="left-column"></div>
<div class="right-column"></div> <div class="right-column"></div>
<div class="sec_floor" :class="{sec_door}"> <div class="sec_floor" :class="{ sec_door }">
<img src="./images/left.png" class="left-door" alt=""> <img src="./images/left.png" class="left-door" alt="">
<img src="./images/right.png" class="right-door" alt=""> <img src="./images/right.png" class="right-door" alt="">
</div> </div>
<div class="fir_floor" :class="{fir_door}"> <div class="fir_floor" :class="{ fir_door }">
<img src="./images/left.png" class="left-door" alt=""> <img src="./images/left.png" class="left-door" alt="">
<img src="./images/right.png" class="right-door" alt=""> <img src="./images/right.png" class="right-door" alt="">
</div> </div>
<div class="elevator"> <div class="elevator" :style="{ transform: 'translateY(' + y_px + 'px)' }">
<img src="./images/elevator.svg" alt=""> <img src="./images/elevator.svg" alt="">
</div> </div>
</div> </div>
@ -47,15 +47,33 @@
</template> </template>
<script setup lang='ts'> <script setup lang='ts'>
import { onMounted, onUnmounted, ref, reactive } from 'vue' import { onMounted, onUnmounted, ref, reactive, watch } from 'vue'
import Border from './components/Border.vue' import Border from './components/Border.vue'
import LeftStatus from './components/LeftStatus.vue' import LeftStatus from './components/LeftStatus.vue'
import Buttons from './components/Buttons.vue' import Buttons from './components/Buttons.vue'
import useNowTime from "@/hook/nowTime"; import useNowTime from "@/hook/nowTime";
let { timeHtml } = useNowTime(); let { timeHtml } = useNowTime();
let timer = null;
let thatstatus = ref(true) let leftStatusObj = {
'up': {
name: '上升中',
status: false
},
'down': {
name: '下降中',
status: false
},
'top': {
name: '升到位',
status: true
},
'bottom': {
name: '降到位',
status: false
}
}
let thatstatus = ref('top')
// //
let sec_door = ref(false) let sec_door = ref(false)
// //
@ -82,6 +100,9 @@ let sec_floor = reactive([
status: false status: false
} }
]) ])
let y_px = ref(0)
let max_px = 680;
let min_px = 0;
let fir_floor = reactive([ let fir_floor = reactive([
{ {
@ -101,6 +122,45 @@ let fir_floor = reactive([
} }
]) ])
watch(() => thatstatus.value, (val) => {
console.log(val)
if (val == 'up') {
elevatorUp('up')
} else if (val == 'down') {
elevatorUp('down')
} else if (val == 'top') {
elevatorUp('top')
} else if (val == 'bottom') {
elevatorUp('bottom')
}
})
/**
* 电梯上升/下降
*/
function elevatorUp(type) {
if (type == 'top') {
y_px.value = min_px
return
} else if (type == 'bottom') {
y_px.value = max_px
return
}
timer = setInterval(() => {
if (type == 'up') {
y_px.value -= 1
if (y_px.value <= min_px) {
clearInterval(timer)
}
} else if (type == 'down') {
y_px.value += 1
if (y_px.value >= max_px) {
clearInterval(timer)
}
}
}, 100)
}
onMounted(() => { onMounted(() => {
document.getElementById('app').style.backgroundColor = '#000928' document.getElementById('app').style.backgroundColor = '#000928'
@ -154,16 +214,18 @@ onUnmounted(() => {
box-sizing: border-box; box-sizing: border-box;
border: 1px solid rgba(0, 255, 255, 1); border: 1px solid rgba(0, 255, 255, 1);
border-radius: 20px; border-radius: 20px;
overflow: hidden;
} }
.elevator { .elevator {
width: 100%; width: 100%;
transition: all 0.5s ease;
} }
.elevator img { .elevator img {
width: 70%; height: 400px;
} }
.left-column { .left-column {
position: absolute; position: absolute;
width: 21px; width: 21px;
@ -197,6 +259,7 @@ onUnmounted(() => {
align-items: center; align-items: center;
justify-content: center; justify-content: center;
perspective: 2000px; perspective: 2000px;
z-index: 1;
} }
.fir_floor { .fir_floor {
@ -208,6 +271,7 @@ onUnmounted(() => {
align-items: center; align-items: center;
justify-content: center; justify-content: center;
perspective: 2000px; perspective: 2000px;
z-index: 1;
} }
.left-door, .left-door,
@ -228,12 +292,14 @@ onUnmounted(() => {
border-left: 1px solid rgb(8, 8, 8); border-left: 1px solid rgb(8, 8, 8);
} }
.sec_door .left-door,.fir_door .left-door { .sec_door .left-door,
.fir_door .left-door {
/* transform: rotateY(-140deg); */ /* transform: rotateY(-140deg); */
transform: translateX(-90%); transform: translateX(-90%);
} }
.sec_door .right-door,.fir_door .right-door { .sec_door .right-door,
.fir_door .right-door {
/* transform: rotateY(140deg); */ /* transform: rotateY(140deg); */
transform: translateX(90%); transform: translateX(90%);
} }
@ -307,5 +373,4 @@ onUnmounted(() => {
.right .r-box { .right .r-box {
width: 482px; width: 482px;
height: 328px; height: 328px;
} }</style>
</style>