From d6f23984d45ddab08a7f32fef182c0116ca9bf79 Mon Sep 17 00:00:00 2001
From: longyvfengyun <496960745@qq.com>
Date: 星期二, 05 九月 2023 14:17:48 +0800
Subject: [PATCH] 门禁系统提交

---
 src/views/accessControl/accessControl.vue    |   49 ++++++++++++----
 src/views/accessControl/js/api.js            |   18 ++++++
 src/views/home/js/homeInfoModule.js          |    6 +-
 src/views/accessControl/js/doorInfoModule.js |   73 +++++++++++++++++++++++
 4 files changed, 128 insertions(+), 18 deletions(-)

diff --git a/src/views/accessControl/accessControl.vue b/src/views/accessControl/accessControl.vue
index 7cc918c..e1c17c5 100644
--- a/src/views/accessControl/accessControl.vue
+++ b/src/views/accessControl/accessControl.vue
@@ -2,8 +2,37 @@
 import FlexBox from "@/components/FlexBox.vue";
 import doorInfoModule from "@/views/accessControl/js/doorInfoModule";
 import HdwLight from "@/components/HdwLight.vue";
-const {doorInfos} = doorInfoModule();
+import {ElMessageBox} from "element-plus";
+const {doorInfos, openDoor, closeDoor} = doorInfoModule();
+const openDoorConfirm = async (info)=>{
+	ElMessageBox.confirm(
+		"纭寮�鍚棬绂�",
+		"绯荤粺鎻愮ず",
+		{
+			confirmButtonText: '纭畾',
+			cancelButtonText: '鍙栨秷',
+			type: 'info',
+			draggable: true,
+		}
+	).then(()=>{
+		openDoor(info);
+	}).catch(()=>{});
+}
 
+const closeDoorConfirm = async (info)=>{
+	ElMessageBox.confirm(
+		"纭鍏抽棴闂ㄧ",
+		"绯荤粺鎻愮ず",
+		{
+			confirmButtonText: '纭畾',
+			cancelButtonText: '鍙栨秷',
+			type: 'info',
+			draggable: true,
+		}
+	).then(()=>{
+		closeDoor(info);
+	}).catch(()=>{});
+}
 </script>
 
 <template>
@@ -15,25 +44,16 @@
 						<el-col :span="4" v-for="item in doorInfos" :key="item">
 							<div class="access-control-item">
 								<div class="access-control-tool">
-									<div class="access-control-tool-item" v-if="item.status === 0">
-										<el-button type="primary" size="large">寮�闂�</el-button>
-									</div>
-									<div class="access-control-tool-item" v-else-if="item.status === 1">
-										<el-button type="warning" size="large">鍏抽棬</el-button>
-									</div>
-									<div class="access-control-tool-item" v-else>
-										<hdw-light :type="1"></hdw-light>
+									<div class="access-control-tool-item">
+										<el-button type="warning" size="large" @click="openDoorConfirm(item)">寮�闂�</el-button>
 									</div>
 								</div>
 								<flex-box>
 									<div class="access-control-img">
 										<img src="./images/menJin.png" alt="">
 									</div>
-<!--									<div class="access-control-text update-time">-->
-<!--										2023-06-29 00:00:00-->
-<!--									</div>-->
 									<div class="access-control-text home-number">{{ item.name }}</div>
-									<div class="access-control-text state">闂ㄩ攣鐘舵�侊細{{ item.statusText }}</div>
+									<div class="access-control-text state">闂ㄩ攣鐘舵�侊細<span :class="{'error-text': item.status !==0}">{{ item.statusText }}</span></div>
 								</flex-box>
 							</div>
 						</el-col>
@@ -93,6 +113,9 @@
 		font-weight: bold;
 		font-size: 18px;
 		margin-bottom: 8px;
+		.error-text {
+			color: #FF0000;
+		}
 	}
 }
 </style>
diff --git a/src/views/accessControl/js/api.js b/src/views/accessControl/js/api.js
new file mode 100644
index 0000000..01bf52c
--- /dev/null
+++ b/src/views/accessControl/js/api.js
@@ -0,0 +1,18 @@
+import axios from "@/assets/js/axios";
+
+/**
+ * 璇诲彇鍙傛暟
+ * @param info 璁惧淇℃伅
+ * @return {Promise<axios.AxiosResponse<any>> | *}
+ */
+export const changeDoorState = (info, dwstaic)=>{
+  return axios({
+    method: "POST",
+    url: "/CarCamera/controllCarCamera",
+    data: {
+      ...info,
+      lgatewayIndex: -1,
+      dwstaic
+    }
+  });
+}
diff --git a/src/views/accessControl/js/doorInfoModule.js b/src/views/accessControl/js/doorInfoModule.js
index 884e876..a62ef48 100644
--- a/src/views/accessControl/js/doorInfoModule.js
+++ b/src/views/accessControl/js/doorInfoModule.js
@@ -2,6 +2,8 @@
 import {onMounted, reactive} from "vue";
 import door from "@/assets/js/const/door";
 import getLabelByKey from "@/assets/js/tools/getLabelByKey";
+import {changeDoorState} from "@/views/accessControl/js/api";
+import {ElLoading, ElMessage} from "element-plus";
 const lockStatusList = door.lockStatus;
 const doorInfoModule = ()=>{
   const {
@@ -48,9 +50,72 @@
     doorInfos.map(item=>{
       let doorInfo = data[item.ip];
       item.status = doorInfo.data2.lockStatus;
-      //item.status = 2;
       item.statusText = getLabelByKey(doorInfo.data2.lockStatus, lockStatusList, "鏈煡");
     });
+  }
+  /**
+   * 寮�鍚棬绂�
+   */
+  const openDoor = async (info)=>{
+    const loading = ElLoading.service({
+      lock: false,
+      text: '寮�鍚棬绂佷腑...',
+      background: 'rgba(0, 0, 0, 0.3)',
+    });
+    try {
+      const res = await changeDoorState(info, 1);
+      loading.close();
+      let rs = res.data;
+      if(rs.code === 1 && rs.data) {
+        ElMessage({
+          showClose: true,
+          message: '寮�鍚棬绂佹垚鍔�',
+          type: 'success',
+        });
+      }else {
+        ElMessage({
+          showClose: true,
+          message: '寮�鍚棬绂佸け璐�',
+          type: 'error',
+        });
+      }
+    }catch (error){
+      console.log(error);
+      loading.close();
+    }
+
+  }
+
+  /**
+   * 鍏抽棴闂ㄧ
+   */
+  const closeDoor = async (info)=>{
+    const loading = ElLoading.service({
+      lock: false,
+      text: '鍏抽棴闂ㄧ涓�...',
+      background: 'rgba(0, 0, 0, 0.3)',
+    });
+    try {
+      const res = await changeDoorState(info, 0);
+      loading.close();
+      let rs = res.data;
+      if(rs.code === 1 && rs.data) {
+        ElMessage({
+          showClose: true,
+          message: '鍏抽棴鎴愬姛',
+          type: 'success',
+        });
+      }else {
+        ElMessage({
+          showClose: true,
+          message: '鍏抽棴澶辫触',
+          type: 'error',
+        });
+      }
+    }catch (error){
+      console.log(error);
+      loading.close();
+    }
   }
 
   onMounted(()=>{
@@ -58,7 +123,11 @@
     SOCKET.value.addEventListener("message", handleMessage, false);
   });
 
-  return {doorInfos};
+  return {
+    doorInfos,
+    openDoor,
+    closeDoor
+  };
 }
 
 export default doorInfoModule;
diff --git a/src/views/home/js/homeInfoModule.js b/src/views/home/js/homeInfoModule.js
index 2379443..03a5534 100644
--- a/src/views/home/js/homeInfoModule.js
+++ b/src/views/home/js/homeInfoModule.js
@@ -54,7 +54,7 @@
       pos: {
         visible: true,
         placement: "top",
-        x: 916,
+        x: 900,
         y: 690
       },
       info: {
@@ -72,7 +72,7 @@
       pos: {
         visible: true,
         placement: "left",
-        x: 1212,
+        x: 1230,
         y: 690
       },
       info: {
@@ -270,7 +270,7 @@
       pos: {
         visible: true,
         placement: "left",
-        x: 1200,
+        x: 1240,
         y: 490
       },
       info: {

--
Gitblit v1.9.1