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