完善操作mqtt机制,失败后回退按钮

This commit is contained in:
zy 2026-03-31 15:39:54 +08:00
parent d462d55e24
commit 8207396329
1 changed files with 71 additions and 4 deletions

View File

@ -1,5 +1,14 @@
<template>
<a-modal title="球阀控制" :width="width" :body-style="bodystyle" :visible="visible" @ok="handleOk" @cancel="handleCancel" footer="">
<a-modal
title="球阀控制"
:width="width"
:body-style="bodystyle"
:visible="visible"
@ok="handleOk"
@cancel="handleCancel"
footer=""
v-model:open="visibleloading"
>
<a-descriptions
title="运行状态"
layout="vertical"
@ -42,6 +51,10 @@
</a-form>
</a-descriptions-item>
</a-descriptions>
<!-- 全屏遮罩层 -->
<div v-if="loading" class="fullscreen-mask">
<a-spin tip="加载中..." size="large" :spinning="loading" />
</div>
</a-modal>
</template>
@ -51,7 +64,11 @@
import { getValveStatus, sendDeviceCmd, getRelayList } from '../SurvDeviceDeploy.api';
import { message } from 'ant-design-vue';
import { usePageMqtt } from '/@/components/mqtt/usePageMqtt';
import { useMessage } from '/@/hooks/web/useMessage';
const visibleloading = ref(true);
const loading = ref(false);
const { createMessage, createConfirm } = useMessage();
let timer = null;
// MQTT
const mqttOptions = {
brokerUrl: import.meta.env.VITE_MQTT_BROKER_URL || 'ws://localhost:8083/mqtt',
@ -141,6 +158,7 @@
if (source) {
Object.assign(member, {
value: source,
checkValue: source,
});
}
});
@ -228,8 +246,44 @@
});
function switchChange(checked, relay) {
openMessage();
let ops = checked;
loading.value = true;
//
const ops = checked;
timer = setTimeout(() => {
// Switch
if (relay.value == relay.checkValue) {
//
createConfirm({
title: '操作结果',
iconType: 'success',
content: '操作成功',
cancelButtonProps: {
style: { display: 'none' }, //
},
onOk: () => {
loading.value = false;
},
});
} else {
if (ops == '1') {
relay.value = '0';
} else {
relay.value = '1';
}
createConfirm({
title: '操作结果',
iconType: 'error',
content: '操作失败,设备未及时响应',
cancelButtonProps: {
style: { display: 'none' }, //
},
onOk: () => {
loading.value = false;
},
});
}
}, 3000);
// if (checked === true) {
// ops = '1';
// } else if (checked === false) {
@ -399,4 +453,17 @@
height: 100%;
min-height: 180px;
}
.fullscreen-mask {
position: fixed;
top: 0;
left: 0;
width: 100%;
height: 100%;
background-color: rgba(0, 0, 0, 0.45);
display: flex;
align-items: center;
justify-content: center;
z-index: 9999;
}
</style>