添加对讲功能

main
jinna 2 years ago
parent 98788557ea
commit d7862fcfdc
  1. 4
      src/App.vue
  2. 27
      src/page/index/index.vue
  3. 146
      src/views/dispatch/index.vue

@ -56,8 +56,8 @@ export default {
methods: {
initWebSocket(supplierId) {
// WebSocketwshttpwsshttps
let wsUrl = `ws://192.168.1.34:81/websocket/${supplierId}`;
// let wsUrl = `ws://171.16.8.51:81/websocket/${supplierId}`//
// let wsUrl = `ws://192.168.1.34:81/websocket/${supplierId}`;
let wsUrl = `ws://171.16.8.51:81/websocket/${supplierId}`//
this.websocket = new WebSocket(wsUrl);
this.websocket.onopen = this.websocketonopen;
this.websocket.onerror = this.websocketonerror;

@ -6,7 +6,7 @@
<div class="avue-header">
<!-- 顶部导航栏 -->
<top ref="top"/>
<button @click="getAlarmInfo">点击按钮</button>
<!-- <button @click="getAlarmInfo">点击按钮</button> -->
</div>
<div class="avue-layout">
<div class="avue-left">
@ -152,17 +152,28 @@
console.log('dom ===>',dom)
dom.pause()
if(this.times > 0){
console.log(this.times)
if(dom.readyState == 4){
for(let i = 0;i<=this.times;i++){
setTimeout(() =>{
this.start++;
this.isMuted = false,
for(let i = 0;i<=this.times;i++){
setTimeout(() =>{
this.start++;
this.times--;
this.isMuted = false,
this.isPlay = true
dom.play()
},2500 * i)
}
}
}else{
if(dom.readyState == 4){
this.isMuted = false,
this.isPlay = true
this.start = 0
dom.play()
},2500 * i)
}
}
}
}
if (obj) {
this.$notify({
title: '警告',

@ -56,7 +56,7 @@
<img v-show="activeDevice !== item.id" src="~@/assets/image/device.png" alt="">
<img v-show="activeDevice == item.id" src="~@/assets/image/device_act.png" alt="">
</div>
<div class="device_name" :class="activeDevice == item.id ? 'act_dev_name' : ''">{{item.name}}{{item.isSelect}}</div>
<div class="device_name" :class="activeDevice == item.id ? 'act_dev_name' : ''">{{item.name}}</div>
<div class="dev_btn_box">
<div class="dev_btn" @click="inviteUser(item)" v-show="activeDevice == item.id && !isIntercom && item.online">邀请</div>
<div class="dev_btn del_btn" v-show="activeDevice == item.id" @click="deleteUser(item)">删除</div>
@ -74,12 +74,12 @@
<!-- @node-expand="handleNodeExpand" @node-collapse="handleNodeCollapse" -->
<!-- selectTreeNode.map(item => item == data.groupNum) ? 'select_node_item' : -->
<span class="custom-tree-node" @mouseenter="enterNode(node,data)" @mouseleave="leaveNode"
:class="[activeNode == data.groupNum ? 'active_node_item' : '',node.level == 1 ? 'first_node' : '']"
:class="[activeNode == data.groupNum ? 'active_node_item' : '',node.level == 1 ? 'first_node' : !data.online ? 'outline' : '']"
slot-scope="{ node, data }" >
<i v-if="node.level == 1" class="spread_node"></i>
<i v-if="node.level == 1" class="level_first" />
<i v-else-if="node.level == 2" class="level_second" :class="activeNode == data.groupNum ? 'active_level_second' : ''" />
<span :class="node.level == 1 ? 'first_span' : node.level == 2 ? 'second_span' : ''">{{ data.groupName }}</span>
<span :class="node.level == 1 ? 'first_span' : node.level == 2 ? 'second_span ' : ''">{{ data.groupName }}</span>
<span v-if="node.level == 1 && !isGroup" @click.stop="inviteGroup(data)" class="btn_level">邀请</span>
<!-- <span v-if="activeNode == data.groupNum" class="btn_level">邀请</span> -->
</span>
@ -609,11 +609,11 @@ export default {
mylog("receiveConferenceInvite: ");
_conf = para.conference;
});
setTimeout(() =>{
// setTimeout(() =>{
if(!isRegisted()) {
regist();
}
},2000)
// },2000)
},
//
getGroupData(){
@ -675,33 +675,8 @@ export default {
//
inviteGroup(row){
console.log(row)
this.$confirm('确定要邀请该群组吗?', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
}).then(() => {
this.isGroup = true;
row.children.map(item => {
this.selectTreeNode.push(item.id)
this.inviteList.push({
id:item.id,
name:item.label
})
})
this.$nextTick(() => {
let audio = document.getElementById('video') //
this.$refs.tree.setCheckedKeys(this.selectTreeNode); //keyel-tree
client.startIntercom(row.id, audio).then((conf) => { //
this._intercom = conf;
setListener();
mylog("startintercom success");
}).catch((error) => {
mylog("startIntercom fail: " + JSON.stringify(error));
})
})
})
this.getGroupPeo(row)
},
@ -836,15 +811,21 @@ export default {
this.isIntercom = true;
this.isMetting = false
this.dialogCall = false;
this.callItem.isSelect = 1;
this.deviceData.find(item => item.id == this.callItem.id).isSelect = 1;
this.inviteList.push(this.callItem);
let audio = document.getElementById('video') //
client.startTempIntercom([this.callItem.id],audio,"").then((conf) => { //
// let audio = document.getElementById('video') //
var members = [this.callItem.name]
var mediaControl = video1;
var name = ''
client.startTempIntercom(members,mediaControl,name).then((conf) => { //
console.log('发起对讲======================================================================>')
this.callItem.isSelect = 1;
this.deviceData.find(item => item.id == this.callItem.id).isSelect = 1;
this.inviteList.push(this.callItem);
this._intercom = conf;
setListener();
mylog("startintercom success:" + conf.groupNumber);
}).catch((error)=>{
this.$message.error('对讲失败')
mylog("startIntercomfail:" + JSON.stringify(error));
})
})
@ -860,10 +841,9 @@ export default {
},
//
videoCall(){
this.callItem.isSelect = 1;
// this.callItem.isSelect = 1;
this.isIntercom = false;
this.deviceData.find(item => item.id == this.callItem.id).isSelect = 1;
this.inviteList.push(this.callItem);
this.dialogCall = false;
this.makecall(true,2)
},
@ -1128,27 +1108,90 @@ export default {
// console.log(' ===>',data,node)
// },
loadNode(node,resolve){
let arr = []
console.log('node ===>',node)
getGroupPeo(data){
getGroupUser({
curPage:1,
pageRows:100,
groupNum:node.data.groupNum,
groupName:node.data.groupName
groupNum:data.groupNum,
groupName:data.groupName
}).then(res =>{
let dataList = res.data.page.dataList
getOnline().then(res1 =>{
console.log('res1 ===>',res1)
res1.data.Onlines.map(item1 =>{
res.data.page.dataList.map(item =>{
console.log('item1 ======>',item1)
dataList.map(item =>{
item.online = false
if(item1.employeeID == item.employeeID){
item.online = true
}
arr.push({groupNum:item.id,groupName:item.name,online:item.online})
})
})
let tmp = dataList.find(item => item.online)
console.log('tmp ==================>', tmp)
if(tmp){
this.$confirm('确定要邀请该群组吗?', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
}).then(() => {
this.isGroup = true;
// row.children.map(item => {
// this.selectTreeNode.push(item.id)
// this.inviteList.push({
// id:item.id,
// name:item.label
// })
// })
this.$nextTick(() => {
var groupNumber = data.groupNum;
var mediaControl = video1
console.log('groupNumber===》',groupNumber,'media ===>',mediaControl)
// this.$refs.tree.setCheckedKeys(this.selectTreeNode); //keyel-tree
client.startIntercom(groupNumber,mediaControl).then((conf) => { //
this._intercom = conf;
setListener();
mylog("startintercom success");
}).catch((error) => {
mylog("startIntercom fail: " + JSON.stringify(error));
})
})
})
}else{
this.$message.error('该组下无在线人员,不可邀请')
}
})
})
},
loadNode(node,resolve){
let arr = []
getOnline().then(res =>{
let onlineData = res.data.Onlines
getGroupUser({
curPage:1,
pageRows:100,
groupNum:node.data.groupNum,
groupName:node.data.groupName
}).then(res =>{
let dataList = res.data.page.dataList
dataList.map(item =>{
item.online = false
onlineData.map(item1 =>{
if(item.employeeID == item1.employeeID){
item.online = true
}
})
})
dataList.map(item =>{
arr.push({groupNum:item.id,groupName:item.name,online:item.online})
})
arr.sort((a, b) => b.online-a.online)
return resolve(arr)
})
console.log('arr ===>',arr)
return resolve(arr)
})
}
},
@ -1561,6 +1604,11 @@ export default {
opacity: 0.4;
}
/deep/ .outline{
opacity: 0.4;
}
/deep/ .el-tree-node__content:hover{
background: transparent;
}

Loading…
Cancel
Save