group-rtc-join.vue 1.9 KB

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