209 lines
7.1 KiB
Vue
209 lines
7.1 KiB
Vue
<template>
|
|
<div class="case-videoReservation-dialog p-16">
|
|
<div class="flex-row justify-content-between width100 pl-16 pr-16 pt-6 pb-16 bor-E5E6EB">
|
|
<div class="color-000 f-weight600 f16">视频调解预约</div>
|
|
<div class="f16 cursor-pointer" @click="handleClose"><i class="el-icon-close"></i></div>
|
|
</div>
|
|
<div class="pl-16 pr-16">
|
|
<div class="flex-row justify-content-between align-items-center pt-16 pb-16">
|
|
<div class="flex-row justify-content-between">
|
|
<div class="pt-6 pb-6 ml-16 mr-16 cursor-pointer"
|
|
v-for="(item,index) in videoTypeList" :key="index"
|
|
:class="{ 'actionVideo': item.value === queryCondition.type }"
|
|
@click="selectType(item.value)">
|
|
{{item.label}}</div>
|
|
</div>
|
|
<div class="f14 pt-6 pb-6 pl-16 pr-16 cursor-pointer color-fff bag-BC6F60"
|
|
@click="VideoDialog={caseId:visiblePopover.caseId}">新增预约</div>
|
|
</div>
|
|
<div class="p-16 border-radius-8 border-solid-lighter-1">
|
|
<el-scrollbar :style="'height: 130px'">
|
|
<div class="pb-6 pt-6 bor-E5E6EB" v-for="(item, index) in videoTableData" :key="index">
|
|
<div class="flex-row justify-content-between">
|
|
<div class="flex-row">
|
|
<div class="mr-8 color-000 f-weight600 f16">
|
|
{{item.bookingTime}}
|
|
</div>
|
|
|
|
|
|
<el-tag v-if="$util.getTimeContrast(item.bookingEndTime)" size="small" :type="queryCondition.type?'success':''">{{ queryCondition.type ? '已视频' : '待视频' }}</el-tag>
|
|
<el-tag v-else size="small" type="warning">已过期</el-tag>
|
|
</div>
|
|
<div class="flex-row align-items-center">
|
|
|
|
<div v-if="$util.getTimeContrast(item.bookingEndTime)" >
|
|
<div class="f16 mr-8 cursor-pointer"
|
|
v-if="item.roomId && item.sdkAppId && item.userId && item.userSig && (item.status.code === 0 || item.status.code === 1)"
|
|
@click="handleVideoCall(item)">
|
|
<i class="el-icon-video-camera"></i>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="f16 mr-8 cursor-pointer"
|
|
v-if="item.status.code === 0 && timeComparison(item.bookingTime)"
|
|
@click="VideoEditDialog={id:item.id, bookingTime:item.bookingTime}">
|
|
<i class="el-icon-edit-outline"></i>
|
|
</div>
|
|
<div class="f16 mr-8 cursor-pointer"
|
|
v-if="item.status.code === 0 && timeComparison(item.bookingTime)"
|
|
@click="handleBackCase(item)">
|
|
<i class="el-icon-delete"></i>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="flex-row justify-content-between align-items-center">
|
|
<div class="f12">{{item.content}}</div>
|
|
<!-- <div class="flex-row align-items-center">
|
|
<div class="f16 mr-8 cursor-pointer"
|
|
v-if="item.roomId && item.sdkAppId && item.userId && item.userSig && (item.status.code === 0 || item.status.code === 1)"
|
|
@click="handleVideoCall(item)">
|
|
<i class="el-icon-video-camera"></i>
|
|
</div>
|
|
<div class="f16 mr-8 cursor-pointer"
|
|
v-if="item.status.code === 0"
|
|
@click="VideoEditDialog={id:item.id, bookingTime:item.bookingTime}">
|
|
<i class="el-icon-edit-outline"></i>
|
|
</div>
|
|
<div class="f16 mr-8 cursor-pointer"
|
|
v-if="item.status.code === 0"
|
|
@click="handleBackCase(item)">
|
|
<i class="el-icon-delete"></i>
|
|
</div>
|
|
</div> -->
|
|
</div>
|
|
</div>
|
|
</el-scrollbar>
|
|
</div>
|
|
</div>
|
|
|
|
<!-- 视频预约 -->
|
|
<VideoReservationDialog v-if="VideoDialog" :eventDialog.sync="VideoDialog" />
|
|
<!-- 视频预约修改 -->
|
|
<videoReservationEditDialog v-if="VideoEditDialog" :eventDialog.sync="VideoEditDialog" />
|
|
<!-- 视频房间 -->
|
|
<!-- <VideoRoom v-if="VideoCallDialog" :eventDialog.sync="VideoCallDialog" />-->
|
|
</div>
|
|
</template>
|
|
|
|
<script>
|
|
import videoTelephone from "@/services/videoTelephone";
|
|
export default {
|
|
name: "caseVideoReservationDialog",
|
|
components: {
|
|
VideoReservationDialog: () => import('./VideoReservationDialog'),//视频预约
|
|
videoReservationEditDialog: () => import('../../event-tracing/components/videoReservationDialog'),//视频预约修改
|
|
// VideoRoom: () => import('./VideoRoom'),
|
|
},
|
|
props: {
|
|
visiblePopover: {
|
|
type: Object,
|
|
default: () => {
|
|
return {}
|
|
},
|
|
},
|
|
},
|
|
data() {
|
|
return{
|
|
videoTypeList: [
|
|
{label: '待视频', value: 0},
|
|
{label: '已视频', value: 1}
|
|
],
|
|
queryCondition: {
|
|
type: 0,
|
|
size: 99999,
|
|
current: 1,
|
|
},
|
|
videoTableData: [],
|
|
VideoDialog: null,
|
|
VideoEditDialog: null,
|
|
// VideoCallDialog: null
|
|
}
|
|
},
|
|
mounted() {
|
|
this.getList();
|
|
},
|
|
methods: {
|
|
handleClose() {
|
|
this.$emit('update:visiblePopover', null)
|
|
},
|
|
selectType(typeValue) {
|
|
this.queryCondition.type = typeValue;
|
|
this.getList()
|
|
},
|
|
// 列表数据
|
|
getList() {
|
|
let dataJson = {
|
|
...this.queryCondition,
|
|
caseId: this.visiblePopover.caseId
|
|
}
|
|
videoTelephone.getListByCaseId(dataJson).then(res => {
|
|
if (!res.code) {
|
|
this.videoTableData = res;
|
|
}
|
|
})
|
|
},
|
|
handleBackCase(item) {
|
|
this.$confirm("请确定是否取消?", "提示", {
|
|
confirmButtonText: "确定",
|
|
cancelButtonText: "取消",
|
|
type: "warning",
|
|
}).then(() => {
|
|
if(!this.$clickThrottle()) { return }//防止重复点击
|
|
let data = {id:item.id}
|
|
videoTelephone.videoTelephoneCancel(data).then((res) => {
|
|
this.$message.success("取消成功");
|
|
this.getList()
|
|
});
|
|
}).catch(() => {});
|
|
},
|
|
handleVideoCall(item) {
|
|
if(!this.$parent.VideoCallDialog) {
|
|
this.$parent.VideoCallDialog = {
|
|
id: item.id,
|
|
roomId: item.roomId,
|
|
sdkAppId: item.sdkAppId,
|
|
userId: item.userId,
|
|
userSig: item.userSig
|
|
}
|
|
// videoTelephone.getEnterById({id: item.id}).then((res) => {
|
|
//
|
|
// });
|
|
}else {
|
|
this.$message.warning("请先关闭当前视频通话,才能再次点击视频通话!");
|
|
}
|
|
},
|
|
timeComparison(time) {
|
|
let nowTime = new Date().getTime();
|
|
let bookingTime = new Date(time).getTime();
|
|
if (nowTime > bookingTime) {
|
|
return false;
|
|
} else {
|
|
return true;
|
|
}
|
|
},
|
|
}
|
|
}
|
|
</script>
|
|
|
|
<style scoped lang="scss">
|
|
.case-videoReservation-dialog{
|
|
width: 500px;
|
|
background-color: #FFFFFF;
|
|
border: 1px solid #f5f5f5;
|
|
position: absolute;
|
|
bottom: 86px;
|
|
left: calc(50% - 432px);
|
|
}
|
|
|
|
.actionVideo{
|
|
color: #BC6F60;
|
|
border-bottom: 1px solid #BC6F60;
|
|
}
|
|
|
|
.bag-BC6F60{
|
|
background-color: #BC6F60;
|
|
}
|
|
.bor-E5E6EB{
|
|
border-bottom: solid 1px #E5E6EB;
|
|
}
|
|
</style> |