余尚辉 2 miesięcy temu
rodzic
commit
8050c9e15a

+ 2 - 2
src/components/ResetPwdDialog/index.vue

@@ -22,7 +22,7 @@ const user = reactive({
 
 const state = reactive({
   user: {},
-  roleGroup: {},
+  roleGroup: '',
   postGroup: {}
 });
 
@@ -76,7 +76,7 @@ const onFileSuccess = (res) => {
 </script>
 
 <template>
-  <el-dialog v-model="modelValue" title="Tips" width="600" :before-close="handleClose" :show-close="false"
+  <el-dialog v-model="modelValue" title="Tips" width="600"  :show-close="false"
     class="custom-pwd-dialog" @open="openDialog">
     <template #header>
       <div class="header">

+ 1 - 1
src/layout/components/HeaderGroup/index.vue

@@ -103,7 +103,7 @@ const logout = () => {
     cancelButtonText: '取消',
     type: 'warning'
   }).then(async () => {
-    localStorage.removeItem('VOICE_STATUS')
+    sessionStorage.removeItem('VOICE_STATUS')
   /**
      * HSCTIERRORCODE :
      * 100001: SDK 状态不可用,CTIStatus 的状态为 Terminated

+ 11 - 31
src/layout/index.vue

@@ -14,18 +14,14 @@ const useVoice = useVoiceStore();
 const useUser = useUserStore();
 
 const intervalTimer = ref(null);
-const outId = ref(null);
 
-onMounted(() => {
-  if ( useVoice.isAuthPane ) {
-    workbenchApi.getSeatsByUser({ userId: useUser.id }).then(async({ data }) => {
+const init = () => {
+  workbenchApi.getSeatsByUser({ userId: useUser.id }).then(async({ data }) => {
       if (!data) return;
-      outId.value = data.outId;
       
-      useVoice.HS_CTI_INSTANCE(data.outId);
-
+      await useVoice.HS_CTI_INSTANCE(data.outId);
       const voiceStatus = sessionStorage.getItem('VOICE_STATUS');
-
+      
       setTimeout(async () => {
         /**
          * 如果用户在有登入的情况下,中途关闭麦克风,获取坐席状态仍是 1( getAgentStatus )
@@ -35,46 +31,30 @@ onMounted(() => {
         // console.log("坐席状态", useVoice.AGENTSTATUS);
         // console.log("系统状态", useVoice.HSCTIERRORCODE);
         // 目前先只考虑 100001 100002 错误码 处理
+        
         if ( [100001, 100002].includes( Number(useVoice.HSCTIERRORCODE) ) ) {
           // 有错误
           useVoice.systemState = false;
         } else {
           // 正常
           await useVoice.getAgentStatus();
-
           if ( voiceStatus && [1, 2].includes( Number(useVoice.AGENTSTATUS) )) {
             voiceStatus === 'busy' ? useVoice.setBusy() : useVoice.setIdle();
           } else {
-            if (!voiceStatus && useVoice.AGENTSTATUS == 0) {
-              return useVoice.setIdle();
-            }
-            useVoice.AGENTSTATUS != 0 && useVoice.setIdle();
+            useVoice.setIdle();
           }
         }
       }, 2000);
-
-      // if ( voiceStatus && [1,2].includes(useVoice.AGENTSTATUS)) {
-      //   if ( voiceStatus === 'busy' ) {
-      //     setTimeout(() => useVoice.setBusy(), 1000);
-      //   } else {
-      //     setTimeout(() => useVoice.setIdle(), 1000);
-      //   }
-      // } else {
-      //   setTimeout(() => {
-      //     try {
-      //       useVoice.AGENTSTATUS!=0 && useVoice.setIdle();
-      //     } catch(error) {
-      //       console.log(error);
-      //     }
-      //   }, 3000);
-      // }
     })
+}
+onMounted(() => {
+  if ( useVoice.isAuthPane ) {
+    init();
     intervalTimer.value = setInterval(async () => {
       const sdkRegister = Cookies.get('sdkRegister')
-      // console.log(useVoice.AGENTSTATUS)
       if (!sdkRegister && !useVoice.noiceBarVisibleState &&useVoice.AGENTSTATUS !=0) {
         await useVoice.unInit()
-        useVoice.HS_CTI_INSTANCE(outId.value);
+        init()
       }
     }, 2000);
   }

+ 58 - 27
src/store/modules/voice.js

@@ -267,36 +267,67 @@ const useVoiceStore = defineStore('voice', () => {
   }
 
   // 初始化 通话实例
-  const HS_CTI_INSTANCE = (agent_id) => {
-    const { Scene, getInstance, LoggerLevels , CTIEvent} = window.HS_CTI;
-    HS_CTI = getInstance({
-      // 业务返回的坐席outId
-      agent_id,
-      // 根据城市可能不一样,
-      saas_id:'mdj',
-      // 业务场景详见 Scene 枚举,
-      scene: Scene.Manual,
-      // SDK 日志等级
-      loggerLevel: LoggerLevels.debug,
-      // 环境变量
-      env: import.meta.env.VITE_APP_ENV,
-      // 新增域名
-      domainName: VITE_HS_CTI_BASE_URL
-    })
+  // const HS_CTI_INSTANCE = (agent_id) => {
+  //   const { Scene, getInstance, LoggerLevels , CTIEvent} = window.HS_CTI;
+  //   HS_CTI = getInstance({
+  //     // 业务返回的坐席outId
+  //     agent_id,
+  //     // 根据城市可能不一样,
+  //     saas_id:'mdj',
+  //     // 业务场景详见 Scene 枚举,
+  //     scene: Scene.Manual,
+  //     // SDK 日志等级
+  //     loggerLevel: LoggerLevels.debug,
+  //     // 环境变量
+  //     env: import.meta.env.VITE_APP_ENV,
+  //     // 新增域名
+  //     domainName: VITE_HS_CTI_BASE_URL
+  //   })
 
     
-    // HS_CTI.domainName = VITE_HS_CTI_BASE_URL
-
-    HS_CTI.init();
-    setCookieWithExpireAt1150('sdkRegister', 'true',24,0)
-    // getAgentStatus()
-   
-    if (!isLoad) {
-      listenScoketEvent(CTIEvent);
-    }
-    isLoad = true
-  }
+  //   // HS_CTI.domainName = VITE_HS_CTI_BASE_URL
 
+  //   HS_CTI.init();
+  //   setCookieWithExpireAt1150('sdkRegister', 'true',24,0)
+  //   listenScoketEvent(CTIEvent);
+  // }
+  const HS_CTI_INSTANCE = (agent_id) => {
+    return new Promise(async (resolve, reject) => {
+      try {
+        const { Scene, getInstance, LoggerLevels, CTIEvent } = window.HS_CTI;
+  
+        HS_CTI = getInstance({
+          // 业务返回的坐席 outId
+          agent_id,
+          // 根据城市可能不一样
+          saas_id: 'mdj',
+          // 业务场景详见 Scene 枚举
+          scene: Scene.Manual,
+          // SDK 日志等级
+          loggerLevel: LoggerLevels.debug,
+          // 环境变量
+          env: import.meta.env.VITE_APP_ENV,
+          // 新增域名
+          domainName: VITE_HS_CTI_BASE_URL,
+        });
+  
+        // 初始化操作
+        await HS_CTI.init();
+  
+        // 设置 cookie,假设没有异步问题
+        setCookieWithExpireAt1150('sdkRegister', 'true', 24, 0);
+  
+        // 监听事件
+        listenScoketEvent(CTIEvent);
+  
+        // 成功完成初始化
+        resolve(HS_CTI);
+      } catch (error) {
+        // 捕获初始化过程中的任何错误
+        reject(error);
+      }
+    });
+  };
   return {
     sessionId,
     isAuthPane,