|
@@ -5,7 +5,8 @@
|
|
|
<div class="status-box">
|
|
|
<span class="color-primary">{{ currentStatusText }}</span>
|
|
|
<el-text tag="b" v-if="currentStatusText === '通话中'">{{ formatDuration(talkTime) }}</el-text>
|
|
|
- <el-text tag="b" v-else-if="['空闲', '外呼中'].includes(currentStatusText)">{{ formatDuration(idleTime) }}</el-text>
|
|
|
+ <el-text tag="b" v-else-if="currentStatusText === '空闲'">{{ formatDuration(idleTime) }}</el-text>
|
|
|
+ <el-text tag="b" v-else-if="currentStatusText === '外呼中'">{{ formatDuration(outboundTime) }}</el-text>
|
|
|
<el-text tag="b" v-else-if="currentStatusText === '小休中'">{{ formatDuration(busyTime) }}</el-text>
|
|
|
<el-text tag="b" v-else-if="currentStatusText === '整理中'">{{ formatDuration(arrangeTime) }}</el-text>
|
|
|
<SvgIcon name="ele-CaretBottom" class="arrow" :class="{ 'is-reverse': showPop }" />
|
|
@@ -25,7 +26,11 @@
|
|
|
<span class="ml10">通话时长</span>
|
|
|
<el-text tag="b">{{ formatDuration(talkTime) }}</el-text>
|
|
|
</div>
|
|
|
- <div class="flex-center-between mt10" v-if="idleTime && !['空闲', '外呼中'].includes(currentStatusText)">
|
|
|
+ <div class="flex-center-between mt10" v-if="outboundTime && currentStatusText !== '外呼中'">
|
|
|
+ <span class="ml10">外呼时长</span>
|
|
|
+ <el-text tag="b">{{ formatDuration(outboundTime) }}</el-text>
|
|
|
+ </div>
|
|
|
+ <div class="flex-center-between mt10" v-if="idleTime && currentStatusText !== '空闲'">
|
|
|
<span class="ml10">空闲时长</span>
|
|
|
<el-text tag="b">{{ formatDuration(idleTime) }}</el-text>
|
|
|
</div>
|
|
@@ -196,7 +201,7 @@
|
|
|
</div>
|
|
|
</template>
|
|
|
|
|
|
-<!-- <!– 三方会议 可用(当前处于通话中)–>
|
|
|
+ <!-- <!– 三方会议 可用(当前处于通话中)–>
|
|
|
<template v-if="telStatusInfo.isDutyOn && activeArr.includes('conference') && onCallArr.length !== 1">
|
|
|
<div class="item active" title="三方会议" @click="onControlClick('conference')">
|
|
|
<SvgIcon name="iconfont icon-conference" class="icon mr3" size="16px" />
|
|
@@ -618,6 +623,7 @@ const startTalkTimer = () => {
|
|
|
}
|
|
|
talkTimer.resume();
|
|
|
stopIdleTime();
|
|
|
+ stopOutboundTime();
|
|
|
};
|
|
|
// 结束通话计时
|
|
|
const stopTalkTimer = () => {
|
|
@@ -671,6 +677,25 @@ const stopIdleTime = () => {
|
|
|
idleTime.value = 0;
|
|
|
idleTimer.pause();
|
|
|
};
|
|
|
+// 外呼时长
|
|
|
+const outboundTime = ref(0);
|
|
|
+const outboundTimer = useIntervalFn(
|
|
|
+ () => {
|
|
|
+ outboundTime.value += 1;
|
|
|
+ },
|
|
|
+ 1000,
|
|
|
+ { immediate: false }
|
|
|
+);
|
|
|
+// 外呼时长开始
|
|
|
+const startOutboundTime = () => {
|
|
|
+ outboundTimer.resume();
|
|
|
+ stopIdleTime();
|
|
|
+};
|
|
|
+// 外呼时长计时结束
|
|
|
+const stopOutboundTime = () => {
|
|
|
+ outboundTime.value = 0;
|
|
|
+ outboundTimer.pause();
|
|
|
+};
|
|
|
// 示忙时长
|
|
|
const busyTime = ref(0);
|
|
|
const busyTimer = useIntervalFn(
|
|
@@ -964,7 +989,7 @@ const onMessage = async (event: any) => {
|
|
|
useTelStatusStore.setCallOut(true);
|
|
|
// 设置话机状态 修改为外呼状态
|
|
|
useTelStatusStore.setPhoneControlState(TelStates.onCallOut);
|
|
|
- startIdleTime();
|
|
|
+ startOutboundTime();
|
|
|
stopTalkTimer();
|
|
|
sendMsg('ready');
|
|
|
} else {
|
|
@@ -2015,6 +2040,8 @@ const seatAssistOff = () => {
|
|
|
// 重置状态和清除定时器
|
|
|
const resetState = () => {
|
|
|
useTelStatusStore.resetState();
|
|
|
+ startIdleTime(); // 移除空闲时长
|
|
|
+ stopOutboundTime(); // 移除外呼时长
|
|
|
stopSignTime(); // 移除签入时长定时器
|
|
|
stopTalkTimer(); // 移除通话计时器
|
|
|
talkDealTimer.value?.stop();
|