基质喷涂
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.
 
 
 
 
 

144 lines
5.2 KiB

<template>
<main class="h-full flex justify-center items-center">
<div class="h-[70%] w-[90%] grid grid-cols-3 grid-rows-2 gap-6 text-white">
<div
class="row-span-2 relative bg-[url(@/assets/entry/entry_bg1.svg)] bg-cover bg-center bg-no-repeat rounded-[16px]"
@click="onSprayEntryClick">
<p class="text-[32px] font-semibold absolute left-6 bottom-6">喷涂设置</p>
<img src="@/assets/entry/entry_icon_1.svg" alt="icon" class="w-[90px] absolute right-6 top-6" />
</div>
<div
class="relative bg-[url(@/assets/entry/entry_bg2.svg)] bg-cover bg-center bg-no-repeat rounded-[16px]"
@click="onHistoryEntryClick">
<p class="text-[32px] font-semibold absolute left-6 bottom-6">历史喷涂</p>
<img src="@/assets/entry/entry_icon_2.svg" alt="icon" class="w-[50px] absolute right-6 top-6" />
</div>
<div
class="relative bg-[url(@/assets/entry/entry_bg3.svg)] bg-cover bg-center bg-no-repeat rounded-[16px]"
@click="onCraftEntryClick">
<p class="text-[32px] font-semibold absolute left-6 bottom-6">工艺管理</p>
<img src="@/assets/entry/entry_icon_3.svg" alt="icon" class="w-[55px] absolute right-6 top-6" />
</div>
<div
class="relative bg-[url(@/assets/entry/entry_bg4.svg)] bg-cover bg-center bg-no-repeat rounded-[16px]"
@click="onWashEntryClick">
<p class="text-[32px] font-semibold absolute left-6 bottom-6">清洗管道</p>
<img src="@/assets/entry/entry_icon_4.svg" alt="icon" class="w-[50px] absolute right-6 top-6" />
</div>
<div
class="relative bg-[url(@/assets/entry/entry_bg5.svg)] bg-cover bg-center bg-no-repeat rounded-[16px]"
@click="onInjectorEntryClick">
<p class="text-[32px] font-semibold absolute left-6 bottom-6">基质管理</p>
<img src="@/assets/entry/entry_icon_5.svg" alt="icon" class="w-[80px] absolute right-4 top-4" />
</div>
</div>
<van-overlay v-if="showWashDialog" :show="true">
<div class="flex justify-center items-center h-full">
<div class="min-w-[480px] max-w-[540px] text-primary bg-white rounded-lg">
<h1 class="my-8 text-lg font-medium text-center px-8">提示</h1>
<div class="text-lg px-4 text-center">
{{ statusStore.workStatus === "washing" ? "设备正在清洗中,是否停止清洗" : "请选择清洗类型:" }}
</div>
<footer v-if="statusStore.workStatus === 'washing'" class="flex justify-center items-center gap-6 py-10">
<button class="btn-dark px-8 py-2 text-lg min-w-[120px]" @click="onStopWash">停止清洗</button>
<button class="btn-light px-8 py-2 text-lg min-w-[120px]" @click="showWashDialog = false">取消</button>
</footer>
<footer v-else class="flex flex-col justify-center items-center gap-6 py-10">
<button class="btn-dark px-8 py-2 text-lg min-w-[120px]" @click="onStartWash('injector')">
清洗注射器管路
</button>
<button class="btn-dark px-8 py-2 text-lg min-w-[120px]" @click="onStartWash('nozzle')">
清洗喷涂部分
</button>
<button class="btn-light px-8 py-2 text-lg min-w-[120px]" @click="showWashDialog = false">取消</button>
</footer>
</div>
</div>
</van-overlay>
<van-overlay v-if="showDialog" :show="true">
<div class="flex justify-center items-center h-full">
<Dialog
:title="dialogContent.title"
:desc="dialogContent.desc"
:type="dialogContent.type"
:ok-text="dialogContent.okText"
:cancel-text="dialogContent.cancelText"
@on-ok="onOk"
@on-cancel="showDialog = false"></Dialog>
</div>
</van-overlay>
</main>
</template>
<script setup lang="ts">
import type { DialogParam } from "@/components/Dialog.vue";
import { startWash, stopWash, type WashType } from "@/services/globalCmd/globalCmd";
import { ElMessage } from "element-plus";
import { ref } from "vue";
import { useRouter } from "vue-router";
import Dialog from "@/components/Dialog.vue";
import { useEquipmentStatusStore } from "@/stores/equipmentStatus";
const router = useRouter();
const statusStore = useEquipmentStatusStore();
const dialogContent = ref<DialogParam>({
title: "提示",
desc: "确定清洗管道?",
type: "confirm",
okText: "清洗",
cancelText: "关闭",
_brand: "wash",
});
const showDialog = ref(false);
const showWashDialog = ref(false);
function onEnvironmentEntryClick() {
router.push("/environment");
}
function onHistoryEntryClick() {
router.push("/history");
}
function onSprayEntryClick() {
router.push("/preSpray");
}
function onCraftEntryClick() {
router.push("/matrixCraft");
}
function onInjectorEntryClick() {
router.push("/matrixManage");
}
function onPrintEntryClick() {
router.push("/print");
}
function onWashEntryClick() {
if (statusStore.workStatus === "idle" || statusStore.workStatus === "washing") {
showWashDialog.value = true;
} else {
ElMessage.warning("设备正在工作中,请稍候清洗");
}
}
function onOk() {
showDialog.value = false;
}
function onStartWash(type: WashType) {
showWashDialog.value = false;
startWash({ type }).then(res => {
if (res.success) {
} else {
ElMessage.error(res.msg);
}
});
}
function onStopWash() {
showWashDialog.value = false;
stopWash({}).then(res => {
if (res.success) {
} else {
ElMessage.error(res.msg);
}
});
}
</script>