齐鲁医院物联网系统
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 

191 lines
5.1 KiB

<template>
<div>
<div>{{ type == '1' ? '呼叫' : type == '2' ? '对讲' : '会议' }}</div>
<el-row :gutter="22">
<el-col :span="4">
<div>
<h3>通讯录</h3>
</div>
<el-tree :data="groupData" show-checkbox node-key="id" :default-expanded-keys="[2, 3]" :default-checked-keys="[5]"
:props="defaultProps">
</el-tree>
</el-col>
<el-col :span="16">
<el-row :gutter="12">
<el-col v-for="(item, index) in members" :key="item.number" :span="8">
<el-card shadow="always">
{{ item.number }} - {{ item.name }}
<video :id="'video' + item.number" style="background-color: black;"></video>
<div>
<el-button type="primary" plan size="mini" @click="makeCall(item, false)">音频呼叫</el-button>
<el-button type="primary" plan size="mini" @click="makeCall(item, true)">视频呼叫</el-button>
</div>
</el-card>
</el-col>
</el-row>
</el-col>
<el-col :span="4">
<div>
<h3>呼叫列表</h3>
</div>
<div>
<el-checkbox-group v-model="checkedMember">
<el-checkbox v-for="(item, index) in groupMembers" :label="item.number" :key="item.number + '' + index">{{
item.number }} - {{ item.name }}</el-checkbox>
</el-checkbox-group>
</div>
<!-- 其他操作 -->
<el-row :gutter="12">
<el-col :span="16">
<el-col :span="12">
<el-button>邀请进入</el-button>
</el-col>
<el-col :span="12">
<el-button>静音</el-button>
</el-col>
</el-col>
<el-col :span="8">
<el-col :span="24">
<el-button>移除会议</el-button>
</el-col>
<el-col :span="24">
<el-button>结束会议</el-button>
</el-col>
</el-col>
</el-row>
</el-col>
</el-row>
</div>
</template>
<script>
import { mapGetters } from "vuex";
import { client, isRegisted, mylog } from "../../util/dispatch"
export default {
name: "alarmCenter",
data() {
return {
//分组成员
groupData: [{
id: 1,
label: '一级 1',
children: [{
id: 4,
label: '二级 1-1',
}]
}, {
id: 2,
label: '一级 2',
children: [{
id: 5,
label: '二级 2-1'
}, {
id: 6,
label: '二级 2-2'
}]
}, {
id: 3,
label: '一级 3',
children: [{
id: 7,
label: '二级 3-1'
}, {
id: 8,
label: '二级 3-2'
}]
}],
defaultProps: {
children: 'children',
label: 'label'
},
//对话成员
members: [
{ number: '1001', name: '张三' }
],
groupMembers: [
{ number: '1001', name: '张三' }, { number: '1002', name: '张三2' }, { number: '1003', name: '张三3' }
],
checkedMember: [],
//通讯类型
type: '1',//1呼叫 2对讲 3会议
_conf: null,
};
},
computed: {
...mapGetters(["userInfo"]),
},
mounted() {
console.log(isRegisted)
},
methods: {
/** 呼叫 */
makeCall(obj, isVideo) {
let mediaControl = document.getElementById('video' + obj.number);
client.makeCall(obj.number, mediaControl, isVideo).then((call) => {
this.setCallEventListener(call);
var state = this.convertCallstate(call.state);
mylog("call success callState: " + state);
}).catch((reason) => {
mylog("call fail");
mylog(JSON.stringify(reason));
});
},
//呼叫监听
setCallEventListener(call) {
call.callStateChange.on(this.onCallStateChange);
call.onBecomeConference.on((para) => {
mylog("当前单呼变成会议");
this._conf = para.changeToConference;
this._conf.stateChange.on((para) => {
console.log("_conf.stateChange" + JSON.stringify(para));
})
});
},
//状态change监听
onCallStateChange(param) {
var state = convertCallstate(param.state);
mylog("call callStateChange, number: " + param.sender.number + ", state: " + state + ", isVideo: " + param.sender.isVideo);
},
//监听状态转义
convertCallstate(state) {
var stateStr;
switch (state) {
case 1:
stateStr = "init";
break;
case 2:
stateStr = "normal";
break;
case 3:
stateStr = "callout";
break;
case 4:
stateStr = "incoming";
break;
case 5:
stateStr = "ringing";
break;
case 6:
stateStr = "connected";
break;
case 7:
stateStr = "terminal";
break;
case 8:
stateStr = "hold";
break;
case 9:
stateStr = "unhold";
break;
default:
break;
}
return stateStr;
}
},
};
</script>
<style></style>