group-rtc-join.vue 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788
  1. <template>
  2. <uni-popup ref="popup" type="center">
  3. <uni-popup-dialog mode="base" :duration="2000" title="是否加入通话?" confirmText="加入" @confirm="onOk">
  4. <div class="group-rtc-join">
  5. <div class="host-info">
  6. <div>发起人</div>
  7. <head-image :name="rtcInfo.host.nickName" :url="rtcInfo.host.headImage" :size="80"></head-image>
  8. </div>
  9. <div class="user-info">
  10. <div>{{ rtcInfo.userInfos.length + '人正在通话中' }}</div>
  11. <scroll-view scroll-x="true" scroll-left="120">
  12. <view class="user-list">
  13. <view v-for="user in rtcInfo.userInfos" class="user-item" :key="user.id">
  14. <head-image :name="user.nickName" :url="user.headImage" :size="80"></head-image>
  15. </view>
  16. </view>
  17. </scroll-view>
  18. </div>
  19. </div>
  20. </uni-popup-dialog>
  21. </uni-popup>
  22. </template>
  23. <script>
  24. export default {
  25. data() {
  26. return {
  27. rtcInfo: {}
  28. }
  29. },
  30. props: {
  31. groupId: {
  32. type: Number
  33. }
  34. },
  35. methods: {
  36. open(rtcInfo) {
  37. this.rtcInfo = rtcInfo;
  38. this.$refs.popup.open();
  39. },
  40. onOk() {
  41. let users = this.rtcInfo.userInfos;
  42. let mine = this.userStore.userInfo;
  43. // 加入自己的信息
  44. if (!users.find((user) => user.id == mine.id)) {
  45. users.push({
  46. id: mine.id,
  47. nickName: mine.nickName,
  48. headImage: mine.headImageThumb,
  49. isCamera: false,
  50. isMicroPhone: true
  51. })
  52. }
  53. const userInfos = encodeURIComponent(JSON.stringify(users));
  54. uni.navigateTo({
  55. url: `/pages/chat/chat-group-video?groupId=${this.groupId}&isHost=false
  56. &inviterId=${mine.id}&userInfos=${userInfos}`
  57. })
  58. }
  59. }
  60. }
  61. </script>
  62. <style lang="scss" scoped>
  63. .group-rtc-join {
  64. width: 100%;
  65. .host-info {
  66. font-size: 16px;
  67. padding: 10px;
  68. }
  69. .user-info {
  70. font-size: 16px;
  71. padding: 10px;
  72. }
  73. .user-list {
  74. display: flex;
  75. align-items: center;
  76. height: 90rpx;
  77. .user-item {
  78. padding: 3rpx;
  79. }
  80. }
  81. }
  82. </style>