|
@@ -1,122 +1,13 @@
|
|
|
<script setup>
|
|
|
import { analyseApi } from '@/api/voice/analyse';
|
|
|
-import BaseLayoutViewport from '@/components/BaseLayout';
|
|
|
-const total = ref(0);
|
|
|
-const value1 = ref('');
|
|
|
|
|
|
const callRecordCountInfo = ref({});
|
|
|
const userTableData = ref([]);
|
|
|
const robotTableData = ref([]);
|
|
|
|
|
|
-const queryParams = ref({
|
|
|
- pageNum: 1,
|
|
|
- pageSize: 10
|
|
|
-})
|
|
|
-const options = [
|
|
|
- {
|
|
|
- value: 'Option1',
|
|
|
- label: 'Option1',
|
|
|
- },
|
|
|
- {
|
|
|
- value: 'Option2',
|
|
|
- label: 'Option2',
|
|
|
- },
|
|
|
- {
|
|
|
- value: 'Option3',
|
|
|
- label: 'Option3',
|
|
|
- },
|
|
|
- {
|
|
|
- value: 'Option4',
|
|
|
- label: 'Option4',
|
|
|
- },
|
|
|
- {
|
|
|
- value: 'Option5',
|
|
|
- label: 'Option5',
|
|
|
- },
|
|
|
-]
|
|
|
-
|
|
|
-const tableData = [
|
|
|
- {
|
|
|
- date: '2016-05-03',
|
|
|
- name: 'Tom',
|
|
|
- address: 'No. 189, Grove St, Los Angeles',
|
|
|
- },
|
|
|
- {
|
|
|
- date: '2016-05-02',
|
|
|
- name: 'Tom',
|
|
|
- address: 'No. 189, Grove St, Los Angeles',
|
|
|
- },
|
|
|
- {
|
|
|
- date: '2016-05-04',
|
|
|
- name: 'Tom',
|
|
|
- address: 'No. 189, Grove St, Los Angeles',
|
|
|
- },
|
|
|
- {
|
|
|
- date: '2016-05-01',
|
|
|
- name: 'Tom',
|
|
|
- address: 'No. 189, Grove St, Los Angeles',
|
|
|
- },{
|
|
|
- date: '2016-05-03',
|
|
|
- name: 'Tom',
|
|
|
- address: 'No. 189, Grove St, Los Angeles',
|
|
|
- },
|
|
|
- {
|
|
|
- date: '2016-05-02',
|
|
|
- name: 'Tom',
|
|
|
- address: 'No. 189, Grove St, Los Angeles',
|
|
|
- },
|
|
|
- {
|
|
|
- date: '2016-05-04',
|
|
|
- name: 'Tom',
|
|
|
- address: 'No. 189, Grove St, Los Angeles',
|
|
|
- },
|
|
|
- {
|
|
|
- date: '2016-05-01',
|
|
|
- name: 'Tom',
|
|
|
- address: 'No. 189, Grove St, Los Angeles',
|
|
|
- },{
|
|
|
- date: '2016-05-03',
|
|
|
- name: 'Tom',
|
|
|
- address: 'No. 189, Grove St, Los Angeles',
|
|
|
- },
|
|
|
- {
|
|
|
- date: '2016-05-02',
|
|
|
- name: 'Tom',
|
|
|
- address: 'No. 189, Grove St, Los Angeles',
|
|
|
- },
|
|
|
- {
|
|
|
- date: '2016-05-04',
|
|
|
- name: 'Tom',
|
|
|
- address: 'No. 189, Grove St, Los Angeles',
|
|
|
- },
|
|
|
- {
|
|
|
- date: '2016-05-01',
|
|
|
- name: 'Tom',
|
|
|
- address: 'No. 189, Grove St, Los Angeles',
|
|
|
- },{
|
|
|
- date: '2016-05-03',
|
|
|
- name: 'Tom',
|
|
|
- address: 'No. 189, Grove St, Los Angeles',
|
|
|
- },
|
|
|
- {
|
|
|
- date: '2016-05-02',
|
|
|
- name: 'Tom',
|
|
|
- address: 'No. 189, Grove St, Los Angeles',
|
|
|
- },
|
|
|
- {
|
|
|
- date: '2016-05-04',
|
|
|
- name: 'Tom',
|
|
|
- address: 'No. 189, Grove St, Los Angeles',
|
|
|
- },
|
|
|
- {
|
|
|
- date: '2016-05-01',
|
|
|
- name: 'Tom',
|
|
|
- address: 'No. 189, Grove St, Los Angeles',
|
|
|
- },
|
|
|
-]
|
|
|
-
|
|
|
const formatNum = num => {
|
|
|
- return Number(num === null ? 0 : num.toFixed(2)) + '%';
|
|
|
+ return num + '%';
|
|
|
+ // return (Number(num === null ? 0 : num.toFixed(2))).toFixed() + '%';
|
|
|
}
|
|
|
|
|
|
onMounted(() => {
|
|
@@ -127,7 +18,8 @@ onMounted(() => {
|
|
|
humanPercent: formatNum(humanPercent),
|
|
|
aiPercent: formatNum(aiPercent),
|
|
|
traditionPercent: formatNum(traditionPercent),
|
|
|
- whiteListPercent: formatNum(whiteListPercent)
|
|
|
+ whiteListPercent: formatNum(whiteListPercent),
|
|
|
+
|
|
|
};
|
|
|
})
|
|
|
|
|
@@ -139,7 +31,7 @@ onMounted(() => {
|
|
|
4: '后处理',
|
|
|
5: '拨号中'
|
|
|
}
|
|
|
- userTableData.value = data.map(item => ({
|
|
|
+ userTableData.value = data.filter(Boolean).map(item => ({
|
|
|
...item,
|
|
|
statusText: statusEnum[item.status]
|
|
|
}));
|
|
@@ -148,7 +40,6 @@ onMounted(() => {
|
|
|
analyseApi.getRobotCallCount().then(({ data }) => {
|
|
|
robotTableData.value = data;
|
|
|
})
|
|
|
-
|
|
|
})
|
|
|
</script>
|
|
|
|
|
@@ -185,43 +76,50 @@ onMounted(() => {
|
|
|
<div>
|
|
|
<p class="card-sub-title">白名单直呼</p>
|
|
|
<ul class="flex items-center justify-center pt-[5px]">
|
|
|
- <li>
|
|
|
- <span class="text">电话量</span>
|
|
|
+ <li class="card-label">
|
|
|
+ <span class="text">呼入量</span>
|
|
|
<span class="num">{{ callRecordCountInfo.whiteListTotal }}</span>
|
|
|
</li>
|
|
|
<li class="line"></li>
|
|
|
- <li>
|
|
|
+ <li class="card-label">
|
|
|
<span class="text">总量占比</span>
|
|
|
<span class="num">{{ callRecordCountInfo.whiteListPercent }}</span>
|
|
|
</li>
|
|
|
</ul>
|
|
|
<p class="count-num pt-[8px]">12345转入次数 <span class="text-[#65C734] font-bold">{{ callRecordCountInfo.specialCount }}</span></p>
|
|
|
</div>
|
|
|
+
|
|
|
<div>
|
|
|
<p class="card-sub-title">AI机器人</p>
|
|
|
<ul class="flex items-center justify-center pt-[5px]">
|
|
|
- <li>
|
|
|
+ <li class="card-label">
|
|
|
<span class="text">电话量</span>
|
|
|
<span class="num">{{ callRecordCountInfo.aiTotal }}</span>
|
|
|
</li>
|
|
|
<li class="line"></li>
|
|
|
- <li>
|
|
|
+ <li class="card-label">
|
|
|
<span class="text">总量占比</span>
|
|
|
<span class="num">{{ callRecordCountInfo.aiPercent }}</span>
|
|
|
</li>
|
|
|
</ul>
|
|
|
<p class="count-num pt-[8px]">转人工次数 <span class="text-[#65C734] font-bold">{{ callRecordCountInfo.transferCount }}</span></p>
|
|
|
</div>
|
|
|
+
|
|
|
<div>
|
|
|
<p class="card-sub-title">传统服务</p>
|
|
|
<ul class="flex items-center justify-center pt-[5px]">
|
|
|
- <li>
|
|
|
- <span class="text">电话量</span>
|
|
|
+ <li class="card-label">
|
|
|
+ <span class="text">呼入量</span>
|
|
|
<span class="num">{{ callRecordCountInfo.traditionTotal }}</span>
|
|
|
</li>
|
|
|
<li class="line"></li>
|
|
|
- <li>
|
|
|
- <span class="text">总量占比</span>
|
|
|
+ <li class="card-label">
|
|
|
+ <span class="text">呼出量</span>
|
|
|
+ <span class="num">{{ callRecordCountInfo.traditionTotal }}</span>
|
|
|
+ </li>
|
|
|
+ <li class="line"></li>
|
|
|
+ <li class="card-label">
|
|
|
+ <span class="text">呼出量</span>
|
|
|
<span class="num">{{ callRecordCountInfo.traditionPercent }}</span>
|
|
|
</li>
|
|
|
</ul>
|
|
@@ -232,11 +130,11 @@ onMounted(() => {
|
|
|
</div>
|
|
|
|
|
|
<div class="layout-card">
|
|
|
- <h4 class="title">人工客服状态</h4>
|
|
|
+ <h4 class="title">人工客服当前状态</h4>
|
|
|
<ul class="status-list">
|
|
|
<li class="status-item">
|
|
|
<span class="text">登录总数</span>
|
|
|
- <span class="num">{{ callRecordCountInfo.transferCount }}</span>
|
|
|
+ <span class="num">{{ callRecordCountInfo.totalPerson }}</span>
|
|
|
</li>
|
|
|
<li class="status-item">
|
|
|
<span class="text">置闲</span>
|
|
@@ -258,24 +156,23 @@ onMounted(() => {
|
|
|
<span class="text">累计通话</span>
|
|
|
<span class="num">{{ callRecordCountInfo.personCount }}</span>
|
|
|
</li>
|
|
|
- <li class="status-item">
|
|
|
+ <!-- <li class="status-item">
|
|
|
<span class="text">累计通话时长</span>
|
|
|
<p >
|
|
|
<span class="num">{{ callRecordCountInfo.personTotal }}</span>
|
|
|
<span class="text-[14px]"> h</span>
|
|
|
</p>
|
|
|
-
|
|
|
- </li>
|
|
|
+ </li> -->
|
|
|
</ul>
|
|
|
</div>
|
|
|
|
|
|
<div class="layout-card">
|
|
|
- <h4 class="title">机器人客服状态</h4>
|
|
|
+ <h4 class="title">机器人客服当前状态</h4>
|
|
|
<ul class="status-list robot-list">
|
|
|
<li class="status-item">
|
|
|
<div class="status-item-inner">
|
|
|
<span class="text">在线</span>
|
|
|
- <span class="num">{{ callRecordCountInfo.robotOnLineCount }}</span>
|
|
|
+ <span class="num">{{ 20 || callRecordCountInfo.robotOnLineCount }}</span>
|
|
|
</div>
|
|
|
</li>
|
|
|
<li class="status-item">
|
|
@@ -297,13 +194,13 @@ onMounted(() => {
|
|
|
<span class="num">{{ callRecordCountInfo.robotCount }}</span>
|
|
|
</div>
|
|
|
</li>
|
|
|
- <li class="status-item">
|
|
|
+ <!-- <li class="status-item">
|
|
|
<div class="status-item-inner">
|
|
|
<span class="text">累计通话时长</span>
|
|
|
<span class="num">{{ callRecordCountInfo.robotTotal }}</span>
|
|
|
<span class="text-[14px]"> h</span>
|
|
|
</div>
|
|
|
- </li>
|
|
|
+ </li> -->
|
|
|
</ul>
|
|
|
</div>
|
|
|
|
|
@@ -318,7 +215,7 @@ onMounted(() => {
|
|
|
<el-table-column prop="inAllCount" label="累计呼入" align="center" />
|
|
|
<el-table-column prop="outTodayCount" label="今日呼出" align="center" />
|
|
|
<el-table-column prop="outAllCount" label="累计呼出" align="center" />
|
|
|
- <el-table-column prop="totalTimes" label="累计通话时长" align="center" />
|
|
|
+ <!-- <el-table-column prop="totalTimes" label="累计通话时长" align="center" /> -->
|
|
|
</el-table>
|
|
|
</div>
|
|
|
|
|
@@ -342,6 +239,7 @@ onMounted(() => {
|
|
|
<style lang="scss" scoped>
|
|
|
.analyse-container {
|
|
|
background: #f1f5fd;
|
|
|
+
|
|
|
.layout-card {
|
|
|
width: 100%;
|
|
|
padding: 20px;
|
|
@@ -363,13 +261,20 @@ onMounted(() => {
|
|
|
align-items: center;
|
|
|
|
|
|
.analyse-item-box {
|
|
|
+ .card-label {
|
|
|
+ min-width: 60px;
|
|
|
+ .text,.num {
|
|
|
+ text-align: center;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
&:nth-child(1) {
|
|
|
flex: 1;
|
|
|
}
|
|
|
|
|
|
&:nth-child(2) {
|
|
|
position: relative;
|
|
|
- flex: 2;
|
|
|
+ flex: 1.5;
|
|
|
|
|
|
&::before {
|
|
|
content: ' ';
|
|
@@ -412,6 +317,7 @@ onMounted(() => {
|
|
|
|
|
|
.card-sub-title {
|
|
|
padding-top: 5px;
|
|
|
+ text-align: center;
|
|
|
font-size: 10px;
|
|
|
line-height: 20px;
|
|
|
color: #165DFF;
|