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