From 8ffb54b88e3907ea59c120d34a8cd9f486cc1151 Mon Sep 17 00:00:00 2001 From: he wei <858544502@qq.com> Date: 星期一, 13 一月 2025 16:37:36 +0800 Subject: [PATCH] U 提交 --- src/views/home/index.vue | 151 ++++++++++++++++++++++++++++++++++++++------------ 1 files changed, 115 insertions(+), 36 deletions(-) diff --git a/src/views/home/index.vue b/src/views/home/index.vue index b7c8db7..fd893f5 100644 --- a/src/views/home/index.vue +++ b/src/views/home/index.vue @@ -1,49 +1,128 @@ -<script> -import HdwBox from "@/components/HdwBox.vue"; +<script setup> +// import HdwBox from "@/components/HdwBox.vue"; import StateInfo from "@/views/home/StateInfo.vue"; +import ParamsContent from "@/views/home/paramsContent.vue"; +import { ref, watchEffect, onMounted, computed } from "vue"; +import useWebSocket from "@/hooks/useWebSocket.js"; +import useElement from "@/hooks/useElement.js"; +import { + controllPowerOpen, + controllPowerClose, + controllClearAlm, +} from "@/api/params"; +const { sendData, message } = useWebSocket("powerSocket"); +const { $alert, $loading, $message, $confirm } = useElement(); +const rtData = ref([]); +const paramsVisible = ref(false); +const currentIdx = ref(0); -export default { - name: "HomeView", - components: {StateInfo, HdwBox}, - data() { - return {} - }, - methods: { - - }, - mounted() { - +watchEffect(() => { + let _list = []; + if (message.value) { + const { code, data, data2 } = JSON.parse(message.value); + if (code && data) { + _list = data2; + } } + rtData.value = _list; +}); + +const title = computed(() => { + return `璁剧疆 妯″潡${currentIdx.value + 1} 鍙傛暟`; +}); + +function showParams(idx) { + currentIdx.value = idx; + paramsVisible.value = true; } +function start(idx) { + let loading = $loading(); + controllPowerOpen(rtData.value[idx].state.powerId) + .then((res) => { + let { code, data } = res.data; + loading.close(); + if (code && data) { + $message.success("鎿嶄綔鎴愬姛"); + } else { + $message.error("鎿嶄綔澶辫触"); + } + }) + .catch((err) => { + $message.error("鎿嶄綔澶辫触"); + loading.close(); + console.log(err); + }); +} +function stop(idx) { + let loading = $loading(); + controllPowerClose(rtData.value[idx].state.powerId) + .then((res) => { + let { code, data } = res.data; + loading.close(); + if (code && data) { + $message.success("鎿嶄綔鎴愬姛"); + } else { + $message.error("鎿嶄綔澶辫触"); + } + }) + .catch((err) => { + $message.error("鎿嶄綔澶辫触"); + loading.close(); + console.log(err); + }); +} +function clearAlarm(idx) { + let loading = $loading(); + controllClearAlm(rtData.value[idx].state.powerId) + .then((res) => { + let { code, data } = res.data; + loading.close(); + if (code && data) { + $message.success("鎿嶄綔鎴愬姛"); + } else { + $message.error("鎿嶄綔澶辫触"); + } + }) + .catch((err) => { + $message.error("鎿嶄綔澶辫触"); + loading.close(); + console.log(err); + }); +} + +onMounted(() => { + sendData(""); +}); </script> <template> <div class="home-view-wrapper"> - <div class="home-item"> - <state-info></state-info> - </div> - <div class="home-item"> - <state-info></state-info> - </div> - <div class="home-item"> - <state-info></state-info> - </div> - <div class="home-item"> - <state-info></state-info> - </div> - <div class="home-item"> - <state-info></state-info> - </div> - <div class="home-item"> - <state-info></state-info> - </div> - <div class="home-item"> - <state-info></state-info> - </div> - <div class="home-item"> - <state-info></state-info> + <div class="home-item" v-for="(item, idx) in 8" :key="'item_' + idx"> + <state-info + :info="rtData[idx] || {}" + @clearAlarm="clearAlarm(idx)" + @editParams="showParams(idx)" + @start="start(idx)" + @stop="stop(idx)" + ></state-info> </div> </div> + <!-- 寮圭獥 --> + <el-dialog + :title="title" + v-model="paramsVisible" + :close-on-click-modal="false" + class="dialog-center" + width="360px" + center + > + <params-content + v-model="paramsVisible" + v-if="paramsVisible" + :info="rtData[currentIdx]" + @setOk="sendData('')" + ></params-content> + </el-dialog> </template> <style scoped lang="scss"> -- Gitblit v1.9.1