余尚辉 2 месяцев назад
Родитель
Сommit
c1d8cc52a3
4 измененных файлов с 49 добавлено и 15 удалено
  1. 1 1
      src/components/AudioPlayer/index.vue
  2. 15 1
      src/layout/index.vue
  3. 14 12
      src/store/modules/voice.js
  4. 19 1
      src/utils/index.js

+ 1 - 1
src/components/AudioPlayer/index.vue

@@ -10,7 +10,7 @@ const props = defineProps({
   },
   id: {
     type: Number,
-    default: ''
+    default: 0
   }
 })
 

+ 15 - 1
src/layout/index.vue

@@ -8,15 +8,19 @@ import useVoiceStore from "@/store/modules/voice";
 import useUserStore from "@/store/modules/user";
 import { workbenchApi } from '@/api/voice/workbench';
 
+import Cookies from 'js-cookie'
+
 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 }) => {
       if (!data) return;
+      outId.value = data.outId;
       useVoice.HS_CTI_INSTANCE(data.outId);
 
       const voiceStatus = sessionStorage.getItem('VOICE_STATUS');
@@ -39,8 +43,18 @@ onMounted(() => {
         }, 3000);
       }
     })
+    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);
+        console.log(12)
+      }
+    }, 2000);
   }
 })
+
 </script>
 
 <template>

+ 14 - 12
src/store/modules/voice.js

@@ -3,6 +3,7 @@ import { ref } from 'vue';
 import { ElMessage, ElNotification } from 'element-plus'
 import usePermissionStore from './permission';
 import useUserStore from './user';
+import { setCookieWithExpireAt1150 } from '@/utils/index'
 
 const VITE_HS_CTI_BASE_URL = import.meta.env.VITE_HS_CTI_BASE_URL;
 
@@ -200,18 +201,18 @@ const useVoiceStore = defineStore('voice', () => {
       // console.log( "-----------------------" );
 
       // 销毁实例调用签出接口成功后 - 坐席签出
-      if ( workStatus === -1 ) {
-        ElMessage({
-          message: '当前坐席以签出',
-          type: 'success',
-          plain: true,
-        })
-        unInit();
-        sessionStorage.removeItem('VOICE_STATUS');
-        userStore.logOut().then(() => {
-          location.href = '/index';
-        })
-      }
+      // if ( workStatus === -1 ) {
+      //   ElMessage({
+      //     message: '当前坐席以签出',
+      //     type: 'success',
+      //     plain: true,
+      //   })
+      //   unInit();
+      //   sessionStorage.removeItem('VOICE_STATUS');
+      //   userStore.logOut().then(() => {
+      //     location.href = '/index';
+      //   })
+      // }
 
       // 登录CTI 成功
       if ( workStatus === 0 ) {
@@ -291,6 +292,7 @@ const useVoiceStore = defineStore('voice', () => {
     // HS_CTI.domainName = VITE_HS_CTI_BASE_URL
 
     HS_CTI.init();
+    setCookieWithExpireAt1150('sdkRegister', 'true',24,0)
     // getAgentStatus()
     listenScoketEvent(CTIEvent);
   }

+ 19 - 1
src/utils/index.js

@@ -1,5 +1,5 @@
 import { parseTime } from './ruoyi'
-
+import Cookies from 'js-cookie'
 /**
  * 表格时间格式化
  */
@@ -389,3 +389,21 @@ export function isNumberStr(str) {
 }
  
 
+
+export function setCookieWithExpireAt1150(name, value,hour,minute) {
+  const now = new Date(); // 当前时间
+  const expireTime = new Date(); // 失效时间为今天的晚上 11:50
+
+  expireTime.setHours(hour, minute, 0, 0); // 设置时间为 23:50:00
+
+  // 如果当前时间已经超过 23:50,设置失效时间为明天的 23:50
+  if (now > expireTime) {
+      expireTime.setDate(expireTime.getDate() + 1);
+  }
+
+  // 将过期时间计算为天数差,并设置到 Cookie
+  const expiresInDays = (expireTime.getTime() - now.getTime()) / (1000 * 60 * 60 * 24);
+
+  // 设置 Cookie
+  Cookies.set(name, value, { expires: expiresInDays });
+}