|
@@ -1,6 +1,6 @@
|
|
|
<template>
|
|
|
<div class="container">
|
|
|
- <div v-if="detailsData.status === '1'" class="box">
|
|
|
+ <div v-if="detailsData.call_status === 1" class="box">
|
|
|
<div class="box-item1">
|
|
|
<i class="icon"/>
|
|
|
<div class="box-right">
|
|
@@ -24,36 +24,36 @@
|
|
|
<i class="icon"/>
|
|
|
<div class="box-right">
|
|
|
<div class="time2">开始点名时间</div>
|
|
|
- <div class="time2">{{ parseTime(detailsData.time1, '{y}-{m}-{d}') }}</div>
|
|
|
- <div class="time2">{{ parseTime(detailsData.time1, '{h}:{i}:{s}') }}</div>
|
|
|
+ <div class="time2">{{ parseTime(detailsData.begin_time, '{y}-{m}-{d}') }}</div>
|
|
|
+ <div class="time2">{{ parseTime(detailsData.begin_time, '{h}:{i}:{s}') }}</div>
|
|
|
</div>
|
|
|
</div>
|
|
|
<div class="box-item5">
|
|
|
<i class="icon"/>
|
|
|
<div class="box-right">
|
|
|
<div class="time2">结束点名时间</div>
|
|
|
- <div class="time2">{{ parseTime(detailsData.time2, '{y}-{m}-{d}') }}</div>
|
|
|
- <div class="time2">{{ parseTime(detailsData.time2, '{h}:{i}:{s}') }}</div>
|
|
|
+ <div class="time2">{{ parseTime(detailsData.end_time, '{y}-{m}-{d}') }}</div>
|
|
|
+ <div class="time2">{{ parseTime(detailsData.end_time, '{h}:{i}:{s}') }}</div>
|
|
|
</div>
|
|
|
</div>
|
|
|
</div>
|
|
|
- <div v-if="detailsData.status === '1'" class="box2">
|
|
|
+ <div v-if="detailsData.call_status === 1" class="box2">
|
|
|
<div class="card bg1">
|
|
|
<div class="text1">本次点名时间</div>
|
|
|
- <div class="text2">{{ parseTime(detailsData.time1, '{y}-{m}-{d}') }}</div>
|
|
|
- <div class="text2">{{ parseTime(detailsData.time1, '{h}:{i}:{s}') }}</div>
|
|
|
+ <div class="text2">{{ parseTime(detailsData.begin_time, '{y}-{m}-{d}') }}</div>
|
|
|
+ <div class="text2">{{ parseTime(detailsData.begin_time, '{h}:{i}:{s}') }}</div>
|
|
|
</div>
|
|
|
<div class="card bg2">
|
|
|
<div class="text1">已应答镇/街</div>
|
|
|
<div class="line">
|
|
|
- <div class="text3">{{ detailsData.data1 }}</div>
|
|
|
+ <div class="text3">{{ detailsData.ack_count }}</div>
|
|
|
<div class="text1">个</div>
|
|
|
</div>
|
|
|
</div>
|
|
|
<div class="card bg3">
|
|
|
<div class="text1">未应答镇/街</div>
|
|
|
<div class="line">
|
|
|
- <div class="text4">{{ detailsData.data2 }}</div>
|
|
|
+ <div class="text4">{{ detailsData.unack_count }}</div>
|
|
|
<div class="text1">个</div>
|
|
|
</div>
|
|
|
</div>
|
|
@@ -61,39 +61,39 @@
|
|
|
<div v-else class="box2">
|
|
|
<div class="card bg1">
|
|
|
<div class="text1">点名时间时长</div>
|
|
|
- <div class="text5">{{ detailsData.durationTime }}</div>
|
|
|
+ <div class="text5">{{ detailsData.duration_time }}</div>
|
|
|
</div>
|
|
|
<div class="card bg2">
|
|
|
<div class="text1">已应答镇/街</div>
|
|
|
<div class="line">
|
|
|
- <div class="text3">{{ detailsData.data1 }}</div>
|
|
|
+ <div class="text3">{{ detailsData.ack_count }}</div>
|
|
|
<div class="text1">个</div>
|
|
|
</div>
|
|
|
</div>
|
|
|
<div class="card bg3">
|
|
|
<div class="text1">未应答镇/街</div>
|
|
|
<div class="line">
|
|
|
- <div class="text4">{{ detailsData.data2 }}</div>
|
|
|
+ <div class="text4">{{ detailsData.unack_count }}</div>
|
|
|
<div class="text1">个</div>
|
|
|
</div>
|
|
|
</div>
|
|
|
</div>
|
|
|
<div class="custom-list">
|
|
|
- <div v-for="(item, index) in detailsData.dataList" :key="index" class="item">
|
|
|
+ <div v-for="(item, index) in detailsData.items" :key="index" class="item">
|
|
|
<div class="item-header">
|
|
|
- <div class="text1">{{ item.data1 }}</div>
|
|
|
- <div :class="getClass(item.status)">{{ item.status }}</div>
|
|
|
+ <div class="text1">{{ item.dept_name }}</div>
|
|
|
+ <div :class="getClass(item.ack_status_text)">{{ item.ack_status_text }}</div>
|
|
|
</div>
|
|
|
<div class="item-middle">
|
|
|
<i class="icon-phone" />
|
|
|
<div class="item-right">
|
|
|
- <div class="text2">值班领导:{{ item.data2 }}</div>
|
|
|
- <div class="text3">值班员:{{ item.data2 }}</div>
|
|
|
+ <div class="text2">值班领导:{{ item.onduty_leader }}</div>
|
|
|
+ <div class="text3">值班员:{{ item.onduty_user }}</div>
|
|
|
</div>
|
|
|
</div>
|
|
|
<div class="item-bottom">
|
|
|
- <div class="btn">视频</div>
|
|
|
- <div class="btn">电话</div>
|
|
|
+ <div class="btn" @click="handleVideo(item.video_url)">视频</div>
|
|
|
+ <div class="btn" @click="handleCall(item.call_url)">电话</div>
|
|
|
</div>
|
|
|
</div>
|
|
|
</div>
|
|
@@ -104,43 +104,49 @@
|
|
|
import {useRoute} from "vue-router";
|
|
|
import {onMounted, onUnmounted, ref} from "vue";
|
|
|
import {parseTime} from "../../utils/ruoyi";
|
|
|
-import {showConfirmDialog} from "vant";
|
|
|
+import {showConfirmDialog, showToast, showSuccessToast} from "vant";
|
|
|
+import {getCallDetail, endCall} from "@/api/onlineRollCall";
|
|
|
|
|
|
const route = useRoute();
|
|
|
let id = ref();
|
|
|
|
|
|
let detailsData = ref({
|
|
|
- time1: '',
|
|
|
- time2: '',
|
|
|
- durationTime: '',
|
|
|
- data1: '',
|
|
|
- data2: '',
|
|
|
- data3: '',
|
|
|
+ begin_time: '',
|
|
|
+ end_time: '',
|
|
|
+ duration_time: '',
|
|
|
+ ack_count: 0,
|
|
|
+ unack_count: 0,
|
|
|
// 状态 0 结束 1开始
|
|
|
- status: '',
|
|
|
- dataList: []
|
|
|
+ call_status: 0,
|
|
|
+ items: []
|
|
|
});
|
|
|
let durationTime = ref('');
|
|
|
let timer;
|
|
|
const initData = () => {
|
|
|
+ /*
|
|
|
detailsData.value = {
|
|
|
- time1: '2024-10-22 12:36:09',
|
|
|
- time2: '2024-10-23 12:36:09',
|
|
|
- durationTime: '24:00:00',
|
|
|
- data1: '10',
|
|
|
- data2: '10',
|
|
|
- status: '1',
|
|
|
- dataList: [
|
|
|
- {data1: '水东街道1', status: '未应答', data2: '谭景津', data3: '谭大大'},
|
|
|
- {data1: '水东街道2', status: '呼叫中', data2: '谭景津', data3: '谭大大'},
|
|
|
- {data1: '水东街道3', status: '已接通', data2: '谭景津', data3: '谭大大'},
|
|
|
- {data1: '水东街道4', status: '未应答', data2: '谭景津', data3: '谭大大'},
|
|
|
- {data1: '水东街道5', status: '未应答', data2: '谭景津', data3: '谭大大'},
|
|
|
+ begin_time: '2024-10-22 12:36:09',
|
|
|
+ end_time: '2024-10-23 12:36:09',
|
|
|
+ duration_time: '24:00:00',
|
|
|
+ ack_count: 10,
|
|
|
+ unack_count: 10,
|
|
|
+ call_status: 1,
|
|
|
+ items: [
|
|
|
+ {dept_name: '水东街道1', ack_status: 0, onduty_leader: '谭景津', onduty_user: '谭大大'},
|
|
|
+ {dept_name: '水东街道2', ack_status: 2, onduty_leader: '谭景津', onduty_user: '谭大大'},
|
|
|
+ {dept_name: '水东街道3', ack_status: 1, onduty_leader: '谭景津', onduty_user: '谭大大'},
|
|
|
+ {dept_name: '水东街道4', ack_status: 0, onduty_leader: '谭景津', onduty_user: '谭大大'},
|
|
|
+ {dept_name: '水东街道5', ack_status: 0, onduty_leader: '谭景津', onduty_user: '谭大大'},
|
|
|
]
|
|
|
}
|
|
|
- if (!timer && detailsData.value.status !== '0') {
|
|
|
- timer = setInterval(calculateDuration, 1000)
|
|
|
- }
|
|
|
+ */
|
|
|
+ getCallDetail({call_id: id.value}).then((res)=>{
|
|
|
+ detailsData.value = res.data;
|
|
|
+ if (!timer && detailsData.value.call_status === 1) {
|
|
|
+ timer = setInterval(calculateDuration, 1000)
|
|
|
+ }
|
|
|
+ console.log(detailsData.value.begin_time)
|
|
|
+ })
|
|
|
};
|
|
|
const getClass = (value) => {
|
|
|
let res = '';
|
|
@@ -155,7 +161,8 @@ const getClass = (value) => {
|
|
|
};
|
|
|
const calculateDuration = () => {
|
|
|
// 将起始时间字符串转换为日期对象
|
|
|
- const startTime = new Date(detailsData.value.time1);
|
|
|
+ const startTime = new Date(detailsData.value.begin_time);
|
|
|
+
|
|
|
|
|
|
// 获取当前时间作为结束时间
|
|
|
const endTime = new Date();
|
|
@@ -175,7 +182,6 @@ const calculateDuration = () => {
|
|
|
|
|
|
// 格式化时间为 HH:MM:SS
|
|
|
const formattedDuration = `${String(hours).padStart(2, '0')}:${String(minutes).padStart(2, '0')}:${String(seconds).padStart(2, '0')}`;
|
|
|
-
|
|
|
// 返回格式化的持续时间
|
|
|
durationTime.value = formattedDuration;
|
|
|
};
|
|
@@ -183,15 +189,29 @@ const calculateDuration = () => {
|
|
|
const handleEnd = () => {
|
|
|
showConfirmDialog({
|
|
|
title: '提示',
|
|
|
- message: '是否确定结束点名?',
|
|
|
+ message: '是否确定结束点名 ?',
|
|
|
}).then(() => {
|
|
|
- console.log('结束');
|
|
|
+ endCall({call_id: id.value}).then((res)=>{
|
|
|
+ showToast({type: 'success', message: res.msg, onClose:()=>{
|
|
|
+ initData();
|
|
|
+ }});
|
|
|
+ })
|
|
|
});
|
|
|
};
|
|
|
+
|
|
|
+const handleVideo = (url) => {
|
|
|
+ showToast("对接融合通信后发起视频 video:"+url);
|
|
|
+}
|
|
|
+
|
|
|
+const handleCall = (url) => {
|
|
|
+ showToast("对接融合通信后发起电话 tel:"+url);
|
|
|
+}
|
|
|
+
|
|
|
onMounted(() => {
|
|
|
id.value = route.query.id;
|
|
|
initData();
|
|
|
})
|
|
|
+
|
|
|
onUnmounted(() => {
|
|
|
if (!!timer) {
|
|
|
clearInterval(timer)
|