From 079131b6a70ecec89a98fcf80894758847718f96 Mon Sep 17 00:00:00 2001 From: longyvfengyun <496960745@qq.com> Date: 星期四, 24 八月 2023 22:00:02 +0800 Subject: [PATCH] 内容提交 --- src/views/airConditioning/components/setAirParam.vue | 75 ++++++++++++++++++ src/views/airConditioning/js/airControlModule.js | 87 ++++++++++++++++++++- src/views/airConditioning/js/api.js | 18 ++++ src/views/airConditioning/airConditioning.vue | 29 +++++- 4 files changed, 194 insertions(+), 15 deletions(-) diff --git a/src/views/airConditioning/airConditioning.vue b/src/views/airConditioning/airConditioning.vue index ff27e33..66b6fe8 100644 --- a/src/views/airConditioning/airConditioning.vue +++ b/src/views/airConditioning/airConditioning.vue @@ -2,7 +2,7 @@ import FlexBox from "@/components/FlexBox.vue"; import {DArrowRight, CaretTop} from "@element-plus/icons-vue"; import HdwLight from "@/components/HdwLight.vue"; -import {watch} from "vue"; +import {ref, watch} from "vue"; import runMonitorModule from "@/views/airConditioning/js/runMonitorModule"; const {runMonitorData, setRunMonitorData} = runMonitorModule(); @@ -10,12 +10,17 @@ import airMonitorData from "@/views/airConditioning/js/airMonitorData"; const {monitorData, airState} = airMonitorData(); -import airControlModule from "@/views/airConditioning/js/airControlModule"; +import setAirParam from "@/views/airConditioning/components/setAirParam.vue"; -const { - airParam, - getParam, -} = airControlModule(); +const setParamVisible = ref(false); + +const showSetParamDialog = ()=>{ + setParamVisible.value = true; +}; + +const setParamClose = ()=>{ + setParamVisible.value = false; +}; watch(monitorData, (data)=>{ setRunMonitorData(data); @@ -130,7 +135,7 @@ <div class="handle-tools"> <div class="tools-btn-list"> <div class="tools-btn-item"> - <el-button type="primary" @click="getParam">绌鸿皟鍙傛暟璁剧疆</el-button> + <el-button type="primary" @click="showSetParamDialog">绌鸿皟鍙傛暟璁剧疆</el-button> </div> </div> <div class="tools-btn-list"> @@ -200,6 +205,16 @@ </div> </div> </div> + <el-dialog + class="center-dialog" + title="绌鸿皟鍙傛暟璁剧疆" + width="auto" + v-model="setParamVisible" + align-center + :close-on-click-modal="false" + :modal-append-to-body="false"> + <set-air-param v-if="setParamVisible" @close="setParamClose"></set-air-param> + </el-dialog> </template> <style lang="less" scoped> diff --git a/src/views/airConditioning/components/setAirParam.vue b/src/views/airConditioning/components/setAirParam.vue new file mode 100644 index 0000000..6580e58 --- /dev/null +++ b/src/views/airConditioning/components/setAirParam.vue @@ -0,0 +1,75 @@ +<script setup> +import airControlModule from "@/views/airConditioning/js/airControlModule"; +import {onMounted, reactive} from "vue"; +const { + isCanSet, + airParam, + getParam, + setParam, +} = airControlModule(); + +const layout = reactive({ + gutter: 16, + span: 24 +}); + +const emits = defineEmits(['close']); + +const setAirParam = async ()=>{ + const isSuccess = await setParam(); + console.log(isSuccess); + if(isSuccess) { + emits('close', false); + } +} + +// onMounted(()=>{ +// getParam(); +// }); +</script> + +<template> +<div class="el-dialog-container"> + <div class="el-dialog-content"> + <el-form + ref="formRef" + label-position="top" + :model="airParam"> + <el-row :gutter="layout.gutter"> + <el-col :span="layout.span"> + <el-form-item label="绌鸿皟娓╁害锛堚剝锛�"> + <el-input v-model="airParam.stTemp" /> + </el-form-item> + </el-col> + <el-col :span="layout.span"> + <el-form-item label="绌鸿皟婀垮害锛�%RH锛�"> + <el-input v-model="airParam.stHumid" /> + </el-form-item> + </el-col> + </el-row> + </el-form> + </div> + <div class="el-dialog-footer"> + <el-button type="primary" @click="getParam">璇诲彇</el-button> + <el-button type="success" :disabled="!isCanSet" @click="setAirParam">璁剧疆</el-button> + <el-button type="success" @click="setAirParam">璁剧疆</el-button> + </div> +</div> +</template> + +<style lang="less" scoped> +.el-dialog-container { + width: 400px; + box-sizing: border-box; + background-color: #FFFFFF; +} +.el-dialog-content { + box-sizing: border-box; + padding: 8px 16px; +} +.el-dialog-footer { + padding: 8px; + text-align: right; + background-color: #f5f4f4; +} +</style> diff --git a/src/views/airConditioning/js/airControlModule.js b/src/views/airConditioning/js/airControlModule.js index a56c2a3..40d4d32 100644 --- a/src/views/airConditioning/js/airControlModule.js +++ b/src/views/airConditioning/js/airControlModule.js @@ -1,30 +1,105 @@ -import {ref} from "vue"; +import {reactive, ref} from "vue"; import air from "@/assets/js/const/air"; -import {getAirParam} from "@/views/airConditioning/js/api"; +import {getAirParam, setAirParam} from "@/views/airConditioning/js/api"; +import {ElLoading, ElMessage} from "element-plus"; + const airControlModule = ()=>{ const cmd = air.cmd; - const airParam = ref({ - num: 0, - devId: 0, + const isCanSet = ref(false); + const airParam = reactive({ + num: 1, + devId: 210000001, opCmd: 0, stHumid: 0, stTemp: 0, }); - /** * 璇诲彇鏀剧數鍙傛暟 */ const getParam = ()=>{ + const loading = ElLoading.service({ + lock: false, + text: '鏁版嵁鍔犺涓�', + background: 'rgba(0, 0, 0, 0.3)', + }); getAirParam(210000001).then(res=>{ + let rs = res.data; + let data = { + num: 0, + devId: 0, + opCmd: 0, + stHumid: 0, + stTemp: 0, + }; + if(rs.code === 1 && rs.data) { + ElMessage({ + showClose: true, + message: '璇诲彇鎴愬姛', + type: 'success', + }); + data = rs.data2; + isCanSet.value = true; + }else { + ElMessage({ + showClose: true, + message: '璇诲彇澶辫触', + type: 'error', + }); + isCanSet.value = false; + } + // 璁剧疆鍊� + airParam.stTemp = data.stTemp; + airParam.stHumid =data.stHumid; + airParam.devId = data.devId; + airParam.num = data.num; + + loading.close(); console.log(res); }).catch(error=>{ + isCanSet.value = false; + loading.close(); console.log(error); }); } + const setParam = async ()=>{ + const loading = ElLoading.service({ + lock: false, + text: '鏁版嵁鍔犺涓�', + background: 'rgba(0, 0, 0, 0.3)', + }); + airParam.opCmd = cmd.set; + try { + const res = await setAirParam(airParam); + loading.close(); + let rs = res.data; + if(rs.code === 1 && rs.data) { + ElMessage({ + showClose: true, + message: '璁剧疆鎴愬姛', + type: 'success', + }); + return Promise.resolve(true); + }else { + ElMessage({ + showClose: true, + message: '璁剧疆澶辫触', + type: 'error', + }); + return Promise.resolve(false); + } + }catch (error) { + loading.close(); + console.log(error); + return Promise.resolve(false); + } + } + return { + isCanSet, airParam, getParam, + setParam, }; } export default airControlModule; diff --git a/src/views/airConditioning/js/api.js b/src/views/airConditioning/js/api.js index 89ef5bd..2c0f581 100644 --- a/src/views/airConditioning/js/api.js +++ b/src/views/airConditioning/js/api.js @@ -2,7 +2,8 @@ /** * 璇诲彇鍙傛暟 - * @return {*} + * @param devId 璁惧ID + * @return {Promise<axios.AxiosResponse<any>> | *} */ export const getAirParam = (devId)=>{ return axios({ @@ -12,4 +13,17 @@ devId } }); -}; +} + +/** + * 璁剧疆绌鸿皟鍙傛暟 + * @param data + * @return {Promise<axios.AxiosResponse<any>> | *} + */ +export const setAirParam = (data)=>{ + return axios({ + method: "POST", + url: "/envirParam/updateAir", + data, + }); +} -- Gitblit v1.9.1