You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
153 lines
3.6 KiB
153 lines
3.6 KiB
<template>
|
|
<div class="h-[--footerHeight] bg-[--bgColor] footer">
|
|
<div class="footer_ins">
|
|
<img
|
|
class="w-[18px] mx-4"
|
|
:class="statusStr !== '等待指令' ? 'ani' : ''"
|
|
src="@/assets/icon_operation.svg"
|
|
alt="op" />
|
|
<span class="ins_text text_size" @click="testStatus">{{ statusStr }}</span>
|
|
</div>
|
|
|
|
<div class="footer_normal">
|
|
<van-popover v-model:show="showWastePopover" placement="top-end" class="waste_popover">
|
|
<template #reference>
|
|
<div class="footer_container">
|
|
<div class="circle" :class="!!hasLowLiquid ? 'bg-[#EE8223]' : 'bg-[#26d574]'"></div>
|
|
<div
|
|
class="waste_status text_size font-medium underline"
|
|
:class="!!hasLowLiquid ? 'text-[#EE8223]' : 'text-primary'">
|
|
{{ !!hasLowLiquid ? "溶液余量低" : "溶液正常" }}
|
|
</div>
|
|
<div class="waste_detail">
|
|
<button class="text_size"><van-icon name="arrow" /></button>
|
|
</div>
|
|
</div>
|
|
</template>
|
|
<Liquid></Liquid>
|
|
</van-popover>
|
|
</div>
|
|
</div>
|
|
</template>
|
|
<script lang="ts" setup>
|
|
import { ref, onMounted, onUnmounted, computed } from "vue";
|
|
import Liquid from "./Liquid.vue";
|
|
import { onGoingStatusOb, setOnGoingStatus } from "@/stores/status";
|
|
import { createWebSocket, sharedWsUrl } from "@/services/socket";
|
|
import { useSettingStore } from "@/stores/setting";
|
|
|
|
const settingStore = useSettingStore();
|
|
const hasLowLiquid = computed(() => {
|
|
return settingStore.heatContainers.find(
|
|
c => c.capacityTotal - c.capacityUsed < (settingStore.liquidWarningSetting ? +settingStore.liquidWarningSetting.value : 0)
|
|
);
|
|
});
|
|
|
|
const showWastePopover = ref(false);
|
|
|
|
const statusStr = ref<string>("");
|
|
function testStatus() {
|
|
if (statusStr.value === "等待指令") {
|
|
setOnGoingStatus("doorOpening");
|
|
} else {
|
|
setOnGoingStatus("idle");
|
|
}
|
|
}
|
|
onMounted(() => {
|
|
const subscription2 = onGoingStatusOb.subscribe(status => {
|
|
if (status === "idle") {
|
|
statusStr.value = "等待指令";
|
|
} else if (status === "doorOpening") {
|
|
statusStr.value = "正在开门";
|
|
} else if (status === "doorClosing") {
|
|
statusStr.value = "正在关门";
|
|
} else if (status === "shaking") {
|
|
statusStr.value = "正在摇匀";
|
|
} else if (status === "injecting") {
|
|
statusStr.value = "正在加液";
|
|
} else if (status === "movingToAct") {
|
|
statusStr.value = "正在移至加液区";
|
|
} else if (status === "movingToHeat") {
|
|
statusStr.value = "正在移至加热区";
|
|
}
|
|
});
|
|
|
|
onUnmounted(() => {
|
|
subscription2.unsubscribe();
|
|
});
|
|
});
|
|
</script>
|
|
<style lang="scss" scoped>
|
|
@use "@/assets/style/mixin.scss" as *;
|
|
|
|
.footer {
|
|
display: flex;
|
|
align-items: center;
|
|
justify-content: flex-end;
|
|
}
|
|
@keyframes rotateAnimation {
|
|
from {
|
|
transform: rotate(0deg);
|
|
}
|
|
to {
|
|
transform: rotate(360deg);
|
|
}
|
|
}
|
|
.ani {
|
|
animation: rotateAnimation 3s linear infinite;
|
|
}
|
|
.footer_ins {
|
|
flex: 1 1 auto;
|
|
display: flex;
|
|
align-items: center;
|
|
border-radius: 4px;
|
|
background: #ffffff;
|
|
height: 2.5rem;
|
|
width: 39.625rem;
|
|
margin-left: 1.5rem;
|
|
@media (min-width: $lg) {
|
|
margin-left: 11.875rem;
|
|
}
|
|
}
|
|
.footer_waste {
|
|
display: flex;
|
|
align-items: center;
|
|
border-radius: 4px;
|
|
min-width: 13.4375rem;
|
|
height: 2.5rem;
|
|
background: #ffffff;
|
|
margin: 0 1.5rem;
|
|
}
|
|
|
|
.footer_normal {
|
|
margin-left: 3rem;
|
|
margin-right: 1.5rem;
|
|
}
|
|
|
|
.text_size {
|
|
font-size: 1rem;
|
|
padding-right: 0.3125rem;
|
|
}
|
|
.footer_container {
|
|
display: flex;
|
|
align-items: center;
|
|
border-radius: 5px;
|
|
width: 13.75rem;
|
|
height: 2.5rem;
|
|
background: #ffffff;
|
|
.circle {
|
|
width: 1rem;
|
|
height: 1rem;
|
|
border-radius: 50%;
|
|
margin-left: 10px;
|
|
}
|
|
|
|
.waste_status {
|
|
padding: 5px 5px;
|
|
}
|
|
|
|
.waste_detail {
|
|
margin-left: auto;
|
|
}
|
|
}
|
|
</style>
|