Bladeren bron

日常开发

林旭祥 2 weken geleden
bovenliggende
commit
11638676ad
2 gewijzigde bestanden met toevoegingen van 37 en 7 verwijderingen
  1. 34 6
      src/components/OnlineFaceWindow/index.vue
  2. 3 1
      src/utils/faceWs.ts

+ 34 - 6
src/components/OnlineFaceWindow/index.vue

@@ -41,9 +41,11 @@ const data = reactive<any>({
   direction: "",//动画方向
   parameter: {},//参数
   deviceInfo: {},//设备信息
+  again: false,//是否再次启动
+  againNum: 0,//再次启动次数
 });
 
-const { faceCheckStu, faceState, direction, parameter, deviceInfo } = toRefs(data);
+const { faceCheckStu, faceState, direction, parameter, deviceInfo, again, againNum } = toRefs(data);
 
 onBeforeMount(() => {
 })
@@ -79,11 +81,24 @@ const getInit = async () => {
       if (e?.code == 0) {
         //查看人脸识别状态,如果不处于关闭就先关闭再重新启动(可能会APP退出然后工作站还在运行的可能性)
         getFaceState(handcontroller_id);
-      } else if (e.code == 102402) {
-        getCloseFace()
-        proxy?.$modal.msgError(`人脸识别模块被占用,请重试`);
       } else {
-        proxy?.$modal.msgError(`人脸识别模块不可用,code:${e.code}`);
+        let msg = "";
+        if (e.code == 102402) {
+          //msg = `人脸识别模块被占用,即将重新启动`;
+          //proxy?.$modal.msgWarning(msg);
+          //只能重启两次以免循环
+          if (againNum.value <= 2) {
+            again.value = true;
+          } else {
+            proxy?.$modal.msgError(`多次启动失败,请联系管理员`);
+            again.value = false;
+            againNum.value = 0;
+          }
+        } else {
+          msg = `人脸识别模块不可用,code:${e.code}`;
+          proxy?.$modal.msgWarning(msg);
+        }
+        getCloseFace();
       }
     }
     if (e?.cmd == 'get_facecontroller_state') {
@@ -106,7 +121,20 @@ const getInit = async () => {
         let pic = e.data.student_icon;
         let obj = { id, name, pic }
         faceCheckStu.value = obj;
-        router.push({ path: '/score', query: obj });
+        setTimeout(() => {
+          router.push({ path: '/score', query: obj });
+        }, 1000)
+      }
+    }
+    if (e?.cmd == 'terminate_facecontroller') {
+      if (e?.code == 0) {
+        //自动重新启动人脸识别
+        if (again.value) {
+          getInit();
+          againNum.value++;
+        }
+        again.value = false;
+        faceState.value = false;
       }
     }
   });

+ 3 - 1
src/utils/faceWs.ts

@@ -28,6 +28,9 @@ export function useWebSocket() {
       // if (e?.cmd == 'get_facecontroller_state' && [3, 36].includes(e.state)) {
       //   closeWS();
       // }
+      if (e?.cmd == 'terminate_facecontroller' && e?.code == 0) {
+        closeWS();
+      }
       callback(e);
     });
     socketFace.on('facecontroller_result', (e: any) => {
@@ -104,7 +107,6 @@ export function useWebSocket() {
         ctrl_name: `facecontroller_${data}`
       },
       () => {
-        closeWS();
       }
     );
   }