|
|
|
@ -22,12 +22,7 @@ |
|
|
|
<div v-else class="user-state"> |
|
|
|
<div v-else class="user-state"> |
|
|
|
<div class="cell-top-bar"> |
|
|
|
<div class="cell-top-bar"> |
|
|
|
<div class="signal-icon"> |
|
|
|
<div class="signal-icon"> |
|
|
|
<i |
|
|
|
<i v-for="n in 5" :key="n" class="bar" :class="{ active: n <= item.signalLevel }" /> |
|
|
|
v-for="n in 5" |
|
|
|
|
|
|
|
:key="n" |
|
|
|
|
|
|
|
class="bar" |
|
|
|
|
|
|
|
:class="{ active: n <= item.signalLevel }" |
|
|
|
|
|
|
|
/> |
|
|
|
|
|
|
|
</div> |
|
|
|
</div> |
|
|
|
<div class="grid-top-name">{{ item.user.name }}</div> |
|
|
|
<div class="grid-top-name">{{ item.user.name }}</div> |
|
|
|
<div class="cancel-qc" @click="handleDelete(item, index, form)"> |
|
|
|
<div class="cancel-qc" @click="handleDelete(item, index, form)"> |
|
|
|
@ -36,23 +31,17 @@ |
|
|
|
</div> |
|
|
|
</div> |
|
|
|
<div class="video-area"> |
|
|
|
<div class="video-area"> |
|
|
|
<div class="video-placeholder"> |
|
|
|
<div class="video-placeholder"> |
|
|
|
<img |
|
|
|
<img v-if="item.user.avatar" :src="getAvatarUrl(item.user.avatar)" class="user-avatar" /> |
|
|
|
v-if="item.user.avatar" |
|
|
|
|
|
|
|
:src="getAvatarUrl(item.user.avatar)" |
|
|
|
|
|
|
|
class="user-avatar" |
|
|
|
|
|
|
|
/> |
|
|
|
|
|
|
|
<div v-else class="default-avatar"> |
|
|
|
<div v-else class="default-avatar"> |
|
|
|
{{ item.user.name.charAt(0) || "?" }} |
|
|
|
{{ item.user.name.charAt(0) || "?" }} |
|
|
|
</div> |
|
|
|
</div> |
|
|
|
</div> |
|
|
|
</div> |
|
|
|
<div class="user-info-overlay"> |
|
|
|
<div class="user-info-overlay"> |
|
|
|
<span class="user-name">{{ item.user.name }}</span> |
|
|
|
<span class="user-name">{{ item.user.name }}</span> |
|
|
|
<span |
|
|
|
<span :class="[ |
|
|
|
:class="[ |
|
|
|
|
|
|
|
'status-tag', |
|
|
|
'status-tag', |
|
|
|
item.user.online === 1 ? 'online' : 'offline', |
|
|
|
item.user.online === 1 ? 'online' : 'offline', |
|
|
|
]" |
|
|
|
]"> |
|
|
|
> |
|
|
|
|
|
|
|
{{ item.user.online === 1 ? "在线" : "离线" }} |
|
|
|
{{ item.user.online === 1 ? "在线" : "离线" }} |
|
|
|
</span> |
|
|
|
</span> |
|
|
|
</div> |
|
|
|
</div> |
|
|
|
@ -87,12 +76,7 @@ |
|
|
|
</div> |
|
|
|
</div> |
|
|
|
</footer> --> |
|
|
|
</footer> --> |
|
|
|
<!-- 添加或邀请修改邀请公告对话框 --> |
|
|
|
<!-- 添加或邀请修改邀请公告对话框 --> |
|
|
|
<CreateGroupDialog |
|
|
|
<CreateGroupDialog ref="createGroupDialogRef" title="选择人员" :min-select-count="1" @confirm="submitForm" /> |
|
|
|
ref="createGroupDialogRef" |
|
|
|
|
|
|
|
title="选择人员" |
|
|
|
|
|
|
|
:min-select-count="1" |
|
|
|
|
|
|
|
@confirm="submitForm" |
|
|
|
|
|
|
|
/> |
|
|
|
|
|
|
|
</div> |
|
|
|
</div> |
|
|
|
</template> |
|
|
|
</template> |
|
|
|
|
|
|
|
|
|
|
|
@ -104,6 +88,9 @@ import { |
|
|
|
postUserInfo, |
|
|
|
postUserInfo, |
|
|
|
postQualityQuit, |
|
|
|
postQualityQuit, |
|
|
|
postQualityStop, |
|
|
|
postQualityStop, |
|
|
|
|
|
|
|
postConsultationCreate, |
|
|
|
|
|
|
|
postConsultationInfo, |
|
|
|
|
|
|
|
postConsultationStop |
|
|
|
} from "@/api/videoCommunication"; |
|
|
|
} from "@/api/videoCommunication"; |
|
|
|
|
|
|
|
|
|
|
|
export default { |
|
|
|
export default { |
|
|
|
@ -127,6 +114,7 @@ export default { |
|
|
|
}, |
|
|
|
}, |
|
|
|
index: 0, |
|
|
|
index: 0, |
|
|
|
form: {}, |
|
|
|
form: {}, |
|
|
|
|
|
|
|
consultation_id: null, |
|
|
|
// 语音会议相关状态 |
|
|
|
// 语音会议相关状态 |
|
|
|
// isJoined: false, |
|
|
|
// isJoined: false, |
|
|
|
// isMuted: false, |
|
|
|
// isMuted: false, |
|
|
|
@ -152,6 +140,7 @@ export default { |
|
|
|
value: false, |
|
|
|
value: false, |
|
|
|
}); |
|
|
|
}); |
|
|
|
this.getList(); |
|
|
|
this.getList(); |
|
|
|
|
|
|
|
this.creatRoom() |
|
|
|
// this.initRTC(); |
|
|
|
// this.initRTC(); |
|
|
|
}, |
|
|
|
}, |
|
|
|
beforeDestroy() { |
|
|
|
beforeDestroy() { |
|
|
|
@ -170,6 +159,26 @@ export default { |
|
|
|
// this.unbindEvent(); |
|
|
|
// this.unbindEvent(); |
|
|
|
// }, |
|
|
|
// }, |
|
|
|
methods: { |
|
|
|
methods: { |
|
|
|
|
|
|
|
async creatRoom() { |
|
|
|
|
|
|
|
try { |
|
|
|
|
|
|
|
const res = await postConsultationCreate({ |
|
|
|
|
|
|
|
avatar: '', |
|
|
|
|
|
|
|
init_users: [], |
|
|
|
|
|
|
|
invite_code: '1234', |
|
|
|
|
|
|
|
name: '', |
|
|
|
|
|
|
|
room_id: this.$route.query.roomId_id |
|
|
|
|
|
|
|
}) |
|
|
|
|
|
|
|
console.log(res) |
|
|
|
|
|
|
|
this.consultation_id = res.data.consultation_id |
|
|
|
|
|
|
|
await postConsultationInfo({ |
|
|
|
|
|
|
|
consultation_id: res.data.consultation_id, |
|
|
|
|
|
|
|
from_history: 0, |
|
|
|
|
|
|
|
room_id: '' |
|
|
|
|
|
|
|
}) |
|
|
|
|
|
|
|
} catch (error) { |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
}, |
|
|
|
// 初始化RTC SDK |
|
|
|
// 初始化RTC SDK |
|
|
|
// initRTC() { |
|
|
|
// initRTC() { |
|
|
|
// let localData = window.localStorage.getItem(this.storageKey); |
|
|
|
// let localData = window.localStorage.getItem(this.storageKey); |
|
|
|
@ -349,9 +358,10 @@ export default { |
|
|
|
key: "tagsView", |
|
|
|
key: "tagsView", |
|
|
|
value: true, |
|
|
|
value: true, |
|
|
|
}); |
|
|
|
}); |
|
|
|
|
|
|
|
postConsultationStop({ consultation_id: this.consultation_id }); |
|
|
|
this.$router.push("/"); |
|
|
|
this.$router.push("/"); |
|
|
|
}) |
|
|
|
}) |
|
|
|
.catch(() => {}); |
|
|
|
.catch(() => { }); |
|
|
|
}, |
|
|
|
}, |
|
|
|
getList() { |
|
|
|
getList() { |
|
|
|
this.loading = true; |
|
|
|
this.loading = true; |
|
|
|
@ -405,7 +415,7 @@ export default { |
|
|
|
that.list[index].user = {}; |
|
|
|
that.list[index].user = {}; |
|
|
|
that.$modal.msgSuccess("取消质控成功"); |
|
|
|
that.$modal.msgSuccess("取消质控成功"); |
|
|
|
}) |
|
|
|
}) |
|
|
|
.catch(() => {}); |
|
|
|
.catch(() => { }); |
|
|
|
}, |
|
|
|
}, |
|
|
|
}, |
|
|
|
}, |
|
|
|
}; |
|
|
|
}; |
|
|
|
@ -431,6 +441,7 @@ export default { |
|
|
|
display: flex; |
|
|
|
display: flex; |
|
|
|
align-items: center; |
|
|
|
align-items: center; |
|
|
|
font-weight: 600; |
|
|
|
font-weight: 600; |
|
|
|
|
|
|
|
|
|
|
|
img { |
|
|
|
img { |
|
|
|
width: 28px; |
|
|
|
width: 28px; |
|
|
|
margin-right: 8px; |
|
|
|
margin-right: 8px; |
|
|
|
@ -449,6 +460,7 @@ export default { |
|
|
|
.window-controls { |
|
|
|
.window-controls { |
|
|
|
display: flex; |
|
|
|
display: flex; |
|
|
|
align-items: center; |
|
|
|
align-items: center; |
|
|
|
|
|
|
|
|
|
|
|
i { |
|
|
|
i { |
|
|
|
margin-left: 15px; |
|
|
|
margin-left: 15px; |
|
|
|
cursor: pointer; |
|
|
|
cursor: pointer; |
|
|
|
@ -492,6 +504,7 @@ export default { |
|
|
|
display: flex; |
|
|
|
display: flex; |
|
|
|
align-items: center; |
|
|
|
align-items: center; |
|
|
|
justify-content: center; |
|
|
|
justify-content: center; |
|
|
|
|
|
|
|
|
|
|
|
i { |
|
|
|
i { |
|
|
|
font-size: 42px; |
|
|
|
font-size: 42px; |
|
|
|
color: #ffffff; |
|
|
|
color: #ffffff; |
|
|
|
@ -517,25 +530,32 @@ export default { |
|
|
|
gap: 2px; |
|
|
|
gap: 2px; |
|
|
|
height: 14px; |
|
|
|
height: 14px; |
|
|
|
z-index: 10; |
|
|
|
z-index: 10; |
|
|
|
|
|
|
|
|
|
|
|
.bar { |
|
|
|
.bar { |
|
|
|
width: 3px; |
|
|
|
width: 3px; |
|
|
|
background: #666; |
|
|
|
background: #666; |
|
|
|
border-radius: 1px; |
|
|
|
border-radius: 1px; |
|
|
|
|
|
|
|
|
|
|
|
&:nth-child(1) { |
|
|
|
&:nth-child(1) { |
|
|
|
height: 4px; |
|
|
|
height: 4px; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
&:nth-child(2) { |
|
|
|
&:nth-child(2) { |
|
|
|
height: 7px; |
|
|
|
height: 7px; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
&:nth-child(3) { |
|
|
|
&:nth-child(3) { |
|
|
|
height: 10px; |
|
|
|
height: 10px; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
&:nth-child(4) { |
|
|
|
&:nth-child(4) { |
|
|
|
height: 13px; |
|
|
|
height: 13px; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
&:nth-child(5) { |
|
|
|
&:nth-child(5) { |
|
|
|
height: 16px; |
|
|
|
height: 16px; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
&.active { |
|
|
|
&.active { |
|
|
|
background: #4cd964; |
|
|
|
background: #4cd964; |
|
|
|
} |
|
|
|
} |
|
|
|
|