From e44ecb571bb2df6390503f4303282e18db5d60ef Mon Sep 17 00:00:00 2001
From: lgq <1015864684@qq.com>
Date: 星期一, 20 四月 2026 13:43:52 +0800
Subject: [PATCH] 1.修复安全入仓联动控制按钮无权限问题 2.增加安全入仓联动控制配置项,默认不启用 3.修改气体浓度验证选项默认不启用 4.增加门禁web页面源码  Changes to be committed: 	new file:   "face_webserver/ 	modified:   vf107/src/config.json 	modified:   vf107/src/service/grainService.js 	modified:   vf107/src/view/config/menu/doorControlView.js 	modified:   vf107/src/view/mainView.js

---
 vf107/src/service/grainService.js |   68 ++++++++++++++++++++++-----------
 1 files changed, 45 insertions(+), 23 deletions(-)

diff --git a/vf107/src/service/grainService.js b/vf107/src/service/grainService.js
index ee4a283..83dc0dc 100644
--- a/vf107/src/service/grainService.js
+++ b/vf107/src/service/grainService.js
@@ -13,21 +13,25 @@
 const grainService = {}
 
 // 浠庨厤缃腑鑾峰彇涓氬姟缂栫爜瀹氫箟
-const functionId = {
-    gasDetection: config.get('functionId.gasDetection') || "1000",
-    safeInputControl: config.get('functionId.safeInputControl') || "2000",
-    lightControl: config.get('functionId.lightControl') || "3000",
-    doorStatus: config.get('functionId.doorStatus') || "4000"
+function getFunctionId() {
+    return {
+        gasDetection: config.get('functionId.gasDetection') || "1000",
+        safeInputControl: config.get('functionId.safeInputControl') || "2000",
+        lightControl: config.get('functionId.lightControl') || "3000",
+        doorStatus: config.get('functionId.doorStatus') || "4000"
+    }
 }
 
 // 浠庨厤缃腑鑾峰彇鎺ュ彛杩斿洖缂栫爜
-const respCode = {
-    success: config.get('respCode.success') || "200",
-    badRequest: config.get('respCode.badRequest') || "400",
-    unauthorized: config.get('respCode.unauthorized') || "401",
-    forbidden: config.get('respCode.forbidden') || "403",
-    notFound: config.get('respCode.notFound') || "404",
-    serverError: config.get('respCode.serverError') || "500"
+function getRespCode() {
+    return {
+        success: config.get('getRespCode().success') || "200",
+        badRequest: config.get('respCode.badRequest') || "400",
+        unauthorized: config.get('respCode.unauthorized') || "401",
+        forbidden: config.get('respCode.forbidden') || "403",
+        notFound: config.get('respCode.notFound') || "404",
+        serverError: config.get('respCode.serverError') || "500"
+    }
 }
 
 // 閿欒鐮佸搴旂殑閿欒淇℃伅
@@ -36,7 +40,7 @@
     "401": "鏈櫥褰曪紝鐢ㄦ埛涓嶅瓨鍦�",
     "403": "鐢ㄦ埛鏃犳潈闄�",
     "404": "璇锋眰鍔熻兘涓嶅瓨鍦�",
-    "500": "璇锋眰鎵ц寮傚父锛岃鑱旂郴绠$悊鍛�"
+    "500": "璇锋眰鎵ц寮傚父锛岃鑱旂郴绉戦暱"
 }
 
 // 鎿嶄綔鎸夐挳瀵瑰簲鐨勮闊虫枃浠�
@@ -120,6 +124,17 @@
  * @returns {boolean} true琛ㄧず姘斾綋娴撳害鍚堟牸锛宖alse琛ㄧず姘斾綋娴撳害涓嶅悎鏍�
  */
 grainService.checkGasConcentration = function(callback) {
+    // 妫�鏌ユ槸鍚﹀紑鍚皵浣撴祿搴﹂獙璇�
+    const isGasDetectionEnabled = config.get('gas.verification') !== 0
+    if (!isGasDetectionEnabled) {
+        logger.info('[grain]: 姘斾綋娴撳害楠岃瘉鏈惎鐢紝鐩存帴杩斿洖')
+        // 璋冪敤鍥炶皟鍑芥暟
+        if (callback) {
+            callback()
+        }
+        return true
+    }
+    
     // 浣跨敤setTimeout灏咹TTP璇锋眰鏀惧叆鍚庡彴鎵ц锛岄伩鍏嶉樆濉炰富绾跨▼
     std.setTimeout(() => {
         try {
@@ -138,7 +153,7 @@
                 sn: config.get("sys.sn") || " ", // 璁惧搴忓垪鍙凤紝浠庨厤缃腑鑾峰彇
                 houseId: "0000", // 浠撳粧缂栫爜锛岄粯璁ゅ~鍏�"0000"
                 outId: "0000", // 鑷畾涔夌紪鐮侊紝榛樿濉厖"0000"
-                functionId: functionId.gasDetection, // 姘斾綋娴撳害妫�娴嬪姛鑳界爜
+                functionId: getFunctionId().gasDetection, // 姘斾綋娴撳害妫�娴嬪姛鑳界爜
                 timestamp: Date.now().toString() // 鏃堕棿鎴�
             }
             
@@ -163,7 +178,7 @@
                     logger.info(`[grain]: 瑙f瀽鍚庣殑姘斾綋娴撳害鏁版嵁: ${JSON.stringify(gasData)}`)
                     
                     // 鏍规嵁鎺ュ彛杩斿洖缂栫爜杩涜鏃ュ織杈撳嚭
-                    if (gasData.respCode === respCode.success) {
+                    if (gasData.respCode === getRespCode().success) {
                         logger.info(`[grain]: 姘斾綋娴撳害妫�娴嬫帴鍙h皟鐢ㄦ垚鍔焋)
                     } else {
                         logger.error(`[grain]: 姘斾綋娴撳害妫�娴嬫帴鍙h皟鐢ㄥけ璐ワ紝杩斿洖缂栫爜: ${gasData.respCode}, 杩斿洖淇℃伅: ${gasData.respMsg}`)
@@ -178,7 +193,7 @@
                         logger.info(`[grain]: 娓呯悊鍚庤В鏋愮殑姘斾綋娴撳害鏁版嵁: ${JSON.stringify(gasData)}`)
                         
                         // 鏍规嵁鎺ュ彛杩斿洖缂栫爜杩涜鏃ュ織杈撳嚭
-                        if (gasData.respCode === respCode.success) {
+                        if (gasData.respCode === getRespCode().success) {
                             logger.info(`[grain]: 姘斾綋娴撳害妫�娴嬫帴鍙h皟鐢ㄦ垚鍔焋)
                         } else {
                             logger.error(`[grain]: 姘斾綋娴撳害妫�娴嬫帴鍙h皟鐢ㄥけ璐ワ紝杩斿洖缂栫爜: ${gasData.respCode}, 杩斿洖淇℃伅: ${gasData.respMsg}`)
@@ -259,6 +274,13 @@
  * @returns {boolean} true琛ㄧず鐘舵�佷俊鎭幏鍙栨垚鍔燂紝false琛ㄧず澶辫触
  */
 grainService.checkDevConcentration = function(params) {
+    // 妫�鏌ユ槸鍚﹀紑鍚畨鍏ㄥ叆浠撹仈鍔ㄦ帶鍒�
+    const isSafeInputControlEnabled = config.get('safeInputControl') === 1
+    if (!isSafeInputControlEnabled) {
+        logger.info('[grain]: 瀹夊叏鍏ヤ粨鑱斿姩鎺у埗鍔熻兘鏈惎鐢�')
+        return false
+    }
+    
     // 浣跨敤setTimeout灏咹TTP璇锋眰鏀惧叆鍚庡彴鎵ц锛岄伩鍏嶉樆濉炰富绾跨▼
     std.setTimeout(() => {
         try {
@@ -277,7 +299,7 @@
                 sn: config.get("sys.sn") || " ", // 璁惧搴忓垪鍙凤紝浠庨厤缃腑鑾峰彇
                 houseId: "0000", // 浠撳粧缂栫爜锛岄粯璁ゅ~鍏�"0000"
                 outId: "0000", // 鑷畾涔夌紪鐮侊紝榛樿濉厖"0000"
-                functionId: params && params.functionId ? params.functionId : functionId.safeInputControl, // 鍔熻兘鐮侊紝榛樿涓哄畨鍏ㄥ叆浠撹仈鍔ㄦ帶鍒�
+                functionId: params && params.functionId ? params.functionId : getFunctionId().safeInputControl, // 鍔熻兘鐮侊紝榛樿涓哄畨鍏ㄥ叆浠撹仈鍔ㄦ帶鍒�
                 timestamp: Date.now().toString(), // 鏃堕棿鎴�
                 data: {}
             }
@@ -311,7 +333,7 @@
                     logger.info(`[grain]: 瑙f瀽鍚庣殑鐘舵�佷俊鎭暟鎹�: ${JSON.stringify(statusData)}`)
                     
                     // 鏍规嵁鎺ュ彛杩斿洖缂栫爜杩涜鏃ュ織杈撳嚭
-                    if (statusData.respCode === respCode.success) {
+                    if (statusData.respCode === getRespCode().success) {
                         logger.info(`[grain]: 鐘舵�佷俊鎭帴鍙h皟鐢ㄦ垚鍔焋)
                         // 妫�鏌ata鏄惁涓虹┖锛屼笉涓虹┖鎵嶈Е鍙戦�氱煡
                         if (Object.keys(postData.data).length > 0) {
@@ -364,7 +386,7 @@
                         logger.info(`[grain]: 娓呯悊鍚庤В鏋愮殑鐘舵�佷俊鎭暟鎹�: ${JSON.stringify(statusData)}`)
                         
                         // 鏍规嵁鎺ュ彛杩斿洖缂栫爜杩涜鏃ュ織杈撳嚭
-                        if (statusData.respCode === respCode.success) {
+                        if (statusData.respCode === getRespCode().success) {
                             logger.info(`[grain]: 鐘舵�佷俊鎭帴鍙h皟鐢ㄦ垚鍔焋)
                             // 妫�鏌ata鏄惁涓虹┖锛屼笉涓虹┖鎵嶈Е鍙戦�氱煡
                             if (Object.keys(postData.data).length > 0) {
@@ -458,7 +480,7 @@
                 sn: config.get("sys.sn") || " ", // 璁惧搴忓垪鍙凤紝浠庨厤缃腑鑾峰彇
                 houseId: "0000", // 浠撳粧缂栫爜锛岄粯璁ゅ~鍏�"0000"
                 outId: "0000", // 鑷畾涔夌紪鐮侊紝榛樿濉厖"0000"
-                functionId: functionId.lightControl, // 浠撳唴鐓ф槑鑱斿姩鎺у埗鍔熻兘鐮�
+                functionId: getFunctionId().lightControl, // 浠撳唴鐓ф槑鑱斿姩鎺у埗鍔熻兘鐮�
                 timestamp: Date.now().toString(), // 鏃堕棿鎴�
                 data: {}
             }
@@ -489,7 +511,7 @@
                     logger.info(`[grain]: 瑙f瀽鍚庣殑浠撳唴鐓ф槑鑱斿姩鎺у埗鍝嶅簲鏁版嵁: ${JSON.stringify(statusData)}`)
                     
                     // 鏍规嵁鎺ュ彛杩斿洖缂栫爜杩涜鏃ュ織杈撳嚭
-                    if (statusData.respCode === respCode.success) {
+                    if (statusData.respCode === getRespCode().success) {
                         logger.info(`[grain]: 浠撳唴鐓ф槑鑱斿姩鎺у埗鎺ュ彛璋冪敤鎴愬姛`)
                         // 瑙﹀彂鎴愬姛寮圭獥
                         bus.fire('showAccessResult', {
@@ -536,7 +558,7 @@
                         logger.info(`[grain]: 娓呯悊鍚庤В鏋愮殑浠撳唴鐓ф槑鑱斿姩鎺у埗鍝嶅簲鏁版嵁: ${JSON.stringify(statusData)}`)
                         
                         // 鏍规嵁鎺ュ彛杩斿洖缂栫爜杩涜鏃ュ織杈撳嚭
-                        if (statusData.respCode === respCode.success) {
+                        if (statusData.respCode === getRespCode().success) {
                             logger.info(`[grain]: 浠撳唴鐓ф槑鑱斿姩鎺у埗鎺ュ彛璋冪敤鎴愬姛`)
                             // 瑙﹀彂鎴愬姛寮圭獥
                             bus.fire('showAccessResult', {
@@ -625,7 +647,7 @@
                     sn: config.get("sys.sn") || " ", // 璁惧搴忓垪鍙凤紝浠庨厤缃腑鑾峰彇
                     houseId: "0000", // 浠撳粧缂栫爜锛岄粯璁ゅ~鍏�"0000"
                     outId: "0000", // 鑷畾涔夌紪鐮侊紝榛樿濉厖"0000"
-                    functionId: functionId.doorStatus, // 闂ㄧ鐘舵�佸姛鑳界爜
+                    functionId: getFunctionId().doorStatus, // 闂ㄧ鐘舵�佸姛鑳界爜
                     timestamp: Date.now().toString(), // 鏃堕棿鎴�
                     data: {
                         doorStatus: doorStatusData.status // 闂ㄧ鐘舵��

--
Gitblit v1.9.3