Browse Source

feat: ai语音客服

sunxiao 4 months ago
parent
commit
ceb311ef1e

File diff suppressed because it is too large
+ 1 - 0
SIP.min.js


+ 4 - 2
index.html

@@ -6,8 +6,10 @@
   <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
   <meta name="renderer" content="webkit">
   <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no">
-  <script src="https://static.fuxicarbon.com/hs-cti/socket.io.min.js"></script>
-  <script src="https://static.fuxicarbon.com/hs-cti/SIP.min.js"></script>
+  <!-- <script src="./public/socket.io.min.js" type="text/javascript"></script>
+  <script src="./public/SIP.min.js" type="text/javascript"></script> -->
+  <!-- <script src="https://static.fuxicarbon.com/hs-cti/socket.io.min.js"></script>
+  <script src="https://static.fuxicarbon.com/hs-cti/SIP.min.js"></script> -->
   <link rel="icon" href="/favicon.ico">
   <title>佳木斯智能语音客服</title>
   <!--[if lt IE 11]><script>window.location.href='/html/ie.html';</script><![endif]-->

File diff suppressed because it is too large
+ 1 - 0
public/SIP.min.js


File diff suppressed because it is too large
+ 1 - 0
public/socket.io.min.js


File diff suppressed because it is too large
+ 1 - 0
socket.io.min.js


BIN
src/assets/images/header/icon-avatar.png


+ 11 - 0
src/assets/images/header/icon-avatar.svg

@@ -0,0 +1,11 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="36" height="36" viewBox="0 0 36 36" fill="none">
+  <g clip-path="url(#clip0_3918_4775)">
+    <rect width="36" height="36" rx="18" fill="#165DFF"/>
+    <path d="M18 0C8.05879 0 0 8.05879 0 18C0 27.9413 8.05879 36 18 36C27.9412 36 36 27.9413 36 18C36 8.05879 27.9412 0 18 0ZM18 2.45456C26.5861 2.45456 33.5455 9.41469 33.5455 18C33.5455 21.0786 32.6505 23.9482 31.1067 26.3628C28.519 23.6274 25.0816 21.7032 21.2168 21.0115C23.6842 19.8218 25.39 17.3049 25.39 14.3829C25.39 10.316 22.0933 7.01932 18.0264 7.01932C13.9594 7.01932 10.6627 10.316 10.6627 14.3829C10.6627 17.3049 12.3686 19.8217 14.836 21.0115C10.9556 21.7059 7.50624 23.643 4.915 26.396C3.35794 23.9744 2.45456 21.0927 2.45456 18C2.45456 9.41469 9.41547 2.45456 18 2.45456Z" fill="white"/>
+  </g>
+  <defs>
+    <clipPath id="clip0_3918_4775">
+      <rect width="36" height="36" rx="18" fill="white"/>
+    </clipPath>
+  </defs>
+</svg>

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

@@ -42,15 +42,15 @@ const handleTransformVoiceToText = async () => {
         if ( props.id === id ) {
           parsedVoiceList.value = JSON.parse(data);
           emit('onParsed', { parsedVoiceContent: data, id });
+          isExpandStatus.value['id' + id] = !isExpandStatus.value['id' + id];
         }
       }
     } catch (error) {}
   } else {
     parsedVoiceList.value = JSON.parse(props.content);
+    isExpandStatus.value['id' + id] = !isExpandStatus.value['id' + id];
   }
 
-  isExpandStatus.value['id' + id] = !isExpandStatus.value['id' + id];
-
   loadingStatus.value['loading' + id] = false;
 }
 </script>

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

@@ -93,7 +93,7 @@ const logout = () => {
 
       <div class="avatar-wrapper flex items-center space-x-[4px]">
         <div class="avatar-img">
-          <img :src="userStore.avatar" alt="" class="img">
+          <img src="@/assets/images/header/icon-avatar.png" alt="" class="img">
         </div>
         <el-dropdown @command="handleCommand" class="right-menu-item hover-effect" trigger="click" size="small" :disabled="callAnswered">
           <div class="h-[36px] flex items-center space-x-[4px]">

+ 14 - 3
src/views/voice/analyse/index.vue

@@ -115,9 +115,20 @@ const tableData = [
   },
 ]
 
+const formatNum = num => {
+  return Number(num === null ? 0 : num.toFixed(2)) + '%';
+}
+
 onMounted(() => {
   analyseApi.getCallRecordCountInfo().then(({ data }) => {
-    callRecordCountInfo.value = data;
+    const {humanPercent, whiteListPercent, traditionPercent, aiPercent} = data;
+    callRecordCountInfo.value = {
+      ...data,
+      humanPercent: formatNum(humanPercent),
+      aiPercent: formatNum(aiPercent),
+      traditionPercent: formatNum(traditionPercent),
+      whiteListPercent: formatNum(whiteListPercent)
+    };
   })
 
   analyseApi.getUserCallCount().then(({ data }) => {
@@ -315,8 +326,8 @@ onMounted(() => {
             <el-table-column prop="userName" label="客服名称" align="center" />
             <el-table-column prop="inTodayCount" label="今日呼入" align="center" />
             <el-table-column prop="inAllCount" label="累计呼入" align="center" />
-            <el-table-column prop="没有" label="今日转人工" align="center" />
-            <el-table-column prop="没有" label="累计转人工" align="center" />
+            <el-table-column prop="todayTransferCount" label="今日转人工" align="center" />
+            <el-table-column prop="totalTransferCount" label="累计转人工" align="center" />
           </el-table>
         </div>
       </div>

+ 1 - 1
src/views/voice/workbench/index.vue

@@ -101,7 +101,7 @@ const loadMoreData = () => {
         </div>
         <div class="search-result-wrapper">
           <el-scrollbar height="100%">
-            <div 
+            <div
               class="search-result-inner space-y-[8px]"
               v-infinite-scroll="loadMoreData"
               :infinite-scroll-disabled="disabled"

Some files were not shown because too many files changed in this diff