mdm-client 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (262) hide show
  1. package/README.md +92 -0
  2. package/index.js +35 -0
  3. package/package.json +41 -0
  4. package/src/App.vue +246 -0
  5. package/src/assets/audio/moon_light.ogg +0 -0
  6. package/src/assets/font/DINPro-Medium.otf +0 -0
  7. package/src/assets/font/FZZhengHeiS-B-GB.ttf +0 -0
  8. package/src/assets/font/PingFang Regular.otf +0 -0
  9. package/src/assets/font/SourceHanSansCN-Regular.otf +0 -0
  10. package/src/assets/image/common/add_other_icon.png +0 -0
  11. package/src/assets/image/common/bottomFrame.png +0 -0
  12. package/src/assets/image/common/broadcastOn.png +0 -0
  13. package/src/assets/image/common/broadcastTask.png +0 -0
  14. package/src/assets/image/common/call.png +0 -0
  15. package/src/assets/image/common/call_user_mic_off_icon.png +0 -0
  16. package/src/assets/image/common/call_user_mic_on_icon.png +0 -0
  17. package/src/assets/image/common/cam-off.png +0 -0
  18. package/src/assets/image/common/cam-on.png +0 -0
  19. package/src/assets/image/common/cam_off_small.png +0 -0
  20. package/src/assets/image/common/camera.png +0 -0
  21. package/src/assets/image/common/cameraBtn1.png +0 -0
  22. package/src/assets/image/common/cameraBtn2.png +0 -0
  23. package/src/assets/image/common/cameraBtn3.png +0 -0
  24. package/src/assets/image/common/cameraBtn4.png +0 -0
  25. package/src/assets/image/common/cameraBtn5.png +0 -0
  26. package/src/assets/image/common/cameraBtn6.png +0 -0
  27. package/src/assets/image/common/cameraBtn7.png +0 -0
  28. package/src/assets/image/common/cameraClose.png +0 -0
  29. package/src/assets/image/common/cameraFull.png +0 -0
  30. package/src/assets/image/common/cameraOff.png +0 -0
  31. package/src/assets/image/common/cancel_icon.png +0 -0
  32. package/src/assets/image/common/card_blue.png +0 -0
  33. package/src/assets/image/common/card_grey.png +0 -0
  34. package/src/assets/image/common/chosen_icon.png +0 -0
  35. package/src/assets/image/common/chosen_icon_slided.png +0 -0
  36. package/src/assets/image/common/custom_layout_equipment_avatar.png +0 -0
  37. package/src/assets/image/common/custom_layout_user_avatar.png +0 -0
  38. package/src/assets/image/common/default_avatar.png +0 -0
  39. package/src/assets/image/common/default_avatar_mini.png +0 -0
  40. package/src/assets/image/common/delete-number.svg +3 -0
  41. package/src/assets/image/common/deviceIcon.png +0 -0
  42. package/src/assets/image/common/fourOff.png +0 -0
  43. package/src/assets/image/common/fourOn.png +0 -0
  44. package/src/assets/image/common/group.png +0 -0
  45. package/src/assets/image/common/groupManage.png +0 -0
  46. package/src/assets/image/common/histroy_meeting_icon.png +0 -0
  47. package/src/assets/image/common/icon-device.svg +12 -0
  48. package/src/assets/image/common/icon-monitor.svg +12 -0
  49. package/src/assets/image/common/icon-/345/260/217/347/250/213/345/272/217.svg +5 -0
  50. package/src/assets/image/common/icon-/345/272/224/347/255/224.svg +5 -0
  51. package/src/assets/image/common/icon-/350/247/206/351/242/221.svg +7 -0
  52. package/src/assets/image/common/input_search_icon.png +0 -0
  53. package/src/assets/image/common/launch_icon.png +0 -0
  54. package/src/assets/image/common/layout-active1.png +0 -0
  55. package/src/assets/image/common/layout-active2.png +0 -0
  56. package/src/assets/image/common/layout1.png +0 -0
  57. package/src/assets/image/common/layout2.png +0 -0
  58. package/src/assets/image/common/loading.png +0 -0
  59. package/src/assets/image/common/login/checked_icon.png +0 -0
  60. package/src/assets/image/common/login/login_bg.png +0 -0
  61. package/src/assets/image/common/login/login_form_left_icon.png +0 -0
  62. package/src/assets/image/common/login/pwd_icon.png +0 -0
  63. package/src/assets/image/common/login/user_icon.png +0 -0
  64. package/src/assets/image/common/login/verify_icon.png +0 -0
  65. package/src/assets/image/common/logo.png +0 -0
  66. package/src/assets/image/common/ltypeOff.png +0 -0
  67. package/src/assets/image/common/ltypeOn.png +0 -0
  68. package/src/assets/image/common/manager_cam_off_icon.png +0 -0
  69. package/src/assets/image/common/manager_mic_off_icon.png +0 -0
  70. package/src/assets/image/common/map-cicle-icon.svg +6 -0
  71. package/src/assets/image/common/map-icon-search-info.svg +11 -0
  72. package/src/assets/image/common/map-location.svg +37 -0
  73. package/src/assets/image/common/map.png +0 -0
  74. package/src/assets/image/common/mic-off.png +0 -0
  75. package/src/assets/image/common/mic-on.png +0 -0
  76. package/src/assets/image/common/mic_off_small.png +0 -0
  77. package/src/assets/image/common/minum_cam_off_icon.png +0 -0
  78. package/src/assets/image/common/minum_cam_on_icon.png +0 -0
  79. package/src/assets/image/common/minum_expand_icon.png +0 -0
  80. package/src/assets/image/common/minum_mic_off_icon.png +0 -0
  81. package/src/assets/image/common/minum_mic_on_icon.png +0 -0
  82. package/src/assets/image/common/minum_reset_icon.png +0 -0
  83. package/src/assets/image/common/minum_slide_icon.png +0 -0
  84. package/src/assets/image/common/more_icon.png +0 -0
  85. package/src/assets/image/common/mute.png +0 -0
  86. package/src/assets/image/common/newFolder.png +0 -0
  87. package/src/assets/image/common/newTask.png +0 -0
  88. package/src/assets/image/common/nineOff.png +0 -0
  89. package/src/assets/image/common/nineOn.png +0 -0
  90. package/src/assets/image/common/none.png +0 -0
  91. package/src/assets/image/common/offline.png +0 -0
  92. package/src/assets/image/common/oneOff.png +0 -0
  93. package/src/assets/image/common/oneOn.png +0 -0
  94. package/src/assets/image/common/online.png +0 -0
  95. package/src/assets/image/common/output_off_small.png +0 -0
  96. package/src/assets/image/common/playOff.png +0 -0
  97. package/src/assets/image/common/playOn.png +0 -0
  98. package/src/assets/image/common/playStop.png +0 -0
  99. package/src/assets/image/common/preview_icon.png +0 -0
  100. package/src/assets/image/common/preview_meet_icon.png +0 -0
  101. package/src/assets/image/common/scan-map.png +0 -0
  102. package/src/assets/image/common/screen_blue.png +0 -0
  103. package/src/assets/image/common/screen_gray.png +0 -0
  104. package/src/assets/image/common/screen_white.png +0 -0
  105. package/src/assets/image/common/select_item_check.png +0 -0
  106. package/src/assets/image/common/select_item_checked.png +0 -0
  107. package/src/assets/image/common/selector.png +0 -0
  108. package/src/assets/image/common/selectorOn.png +0 -0
  109. package/src/assets/image/common/share_icon.png +0 -0
  110. package/src/assets/image/common/signal_good.png +0 -0
  111. package/src/assets/image/common/signal_poor.png +0 -0
  112. package/src/assets/image/common/sixteenOff.png +0 -0
  113. package/src/assets/image/common/sixteenOn.png +0 -0
  114. package/src/assets/image/common/slide-bth-expand.png +0 -0
  115. package/src/assets/image/common/slide_btn.png +0 -0
  116. package/src/assets/image/common/speak.png +0 -0
  117. package/src/assets/image/common/speakOn.png +0 -0
  118. package/src/assets/image/common/speaker-off.png +0 -0
  119. package/src/assets/image/common/speaker-on.png +0 -0
  120. package/src/assets/image/common/speaking.png +0 -0
  121. package/src/assets/image/common/speed-left.svg +5 -0
  122. package/src/assets/image/common/speed-right.svg +5 -0
  123. package/src/assets/image/common/tree_checked_icon.png +0 -0
  124. package/src/assets/image/common/tree_expand_icon.png +0 -0
  125. package/src/assets/image/common/tree_slide_icon.png +0 -0
  126. package/src/assets/image/common/tree_uncheck_icon.png +0 -0
  127. package/src/assets/image/common/unchosen_icon.png +0 -0
  128. package/src/assets/image/common/up.png +0 -0
  129. package/src/assets/image/common/volume.png +0 -0
  130. package/src/assets/image/common/warning.png +0 -0
  131. package/src/assets/image/screenBlue/a1.png +0 -0
  132. package/src/assets/image/screenBlue/a2.png +0 -0
  133. package/src/assets/image/screenBlue/a3.png +0 -0
  134. package/src/assets/image/screenBlue/a4.png +0 -0
  135. package/src/assets/image/screenBlue/a5.png +0 -0
  136. package/src/assets/image/screenBlue/a6.png +0 -0
  137. package/src/assets/image/screenBlue/add.png +0 -0
  138. package/src/assets/image/screenBlue/add_group_icon.png +0 -0
  139. package/src/assets/image/screenBlue/add_to_group_icon.png +0 -0
  140. package/src/assets/image/screenBlue/arrow_icon.png +0 -0
  141. package/src/assets/image/screenBlue/audio_level_icon.png +0 -0
  142. package/src/assets/image/screenBlue/b1.png +0 -0
  143. package/src/assets/image/screenBlue/b2.png +0 -0
  144. package/src/assets/image/screenBlue/b3.png +0 -0
  145. package/src/assets/image/screenBlue/b4.png +0 -0
  146. package/src/assets/image/screenBlue/b5.png +0 -0
  147. package/src/assets/image/screenBlue/b6.png +0 -0
  148. package/src/assets/image/screenBlue/bottom_footer_bg.png +0 -0
  149. package/src/assets/image/screenBlue/call_clear_icon.png +0 -0
  150. package/src/assets/image/screenBlue/call_duration_icon.png +0 -0
  151. package/src/assets/image/screenBlue/call_fullscreen_icon.png +0 -0
  152. package/src/assets/image/screenBlue/call_mini_icon.png +0 -0
  153. package/src/assets/image/screenBlue/call_video_icon.png +0 -0
  154. package/src/assets/image/screenBlue/call_voice_icon.png +0 -0
  155. package/src/assets/image/screenBlue/cam_on_small.png +0 -0
  156. package/src/assets/image/screenBlue/close_icon.png +0 -0
  157. package/src/assets/image/screenBlue/copy-icon.png +0 -0
  158. package/src/assets/image/screenBlue/custom_layout_drag_icon.png +0 -0
  159. package/src/assets/image/screenBlue/custom_layout_grid16_active_icon.png +0 -0
  160. package/src/assets/image/screenBlue/custom_layout_grid16_icon.png +0 -0
  161. package/src/assets/image/screenBlue/custom_layout_grid4_active_icon.png +0 -0
  162. package/src/assets/image/screenBlue/custom_layout_grid4_icon.png +0 -0
  163. package/src/assets/image/screenBlue/custom_layout_grid9_active_icon.png +0 -0
  164. package/src/assets/image/screenBlue/custom_layout_grid9_icon.png +0 -0
  165. package/src/assets/image/screenBlue/custom_layout_header_icon.png +0 -0
  166. package/src/assets/image/screenBlue/custom_layout_placeholder_bg.png +0 -0
  167. package/src/assets/image/screenBlue/custom_layout_refresh_icon.png +0 -0
  168. package/src/assets/image/screenBlue/custom_layout_rightside_active_icon.png +0 -0
  169. package/src/assets/image/screenBlue/custom_layout_rightside_icon.png +0 -0
  170. package/src/assets/image/screenBlue/custom_layout_ring_active_icon.png +0 -0
  171. package/src/assets/image/screenBlue/custom_layout_ring_icon.png +0 -0
  172. package/src/assets/image/screenBlue/custom_layout_topside_active_icon.png +0 -0
  173. package/src/assets/image/screenBlue/custom_layout_topside_icon.png +0 -0
  174. package/src/assets/image/screenBlue/date_picker_icon.png +0 -0
  175. package/src/assets/image/screenBlue/dialog_check_icon.png +0 -0
  176. package/src/assets/image/screenBlue/emoji-logo.png +0 -0
  177. package/src/assets/image/screenBlue/header_alert_icon.png +0 -0
  178. package/src/assets/image/screenBlue/manager_cam_on_icon.png +0 -0
  179. package/src/assets/image/screenBlue/manager_mic_on_icon.png +0 -0
  180. package/src/assets/image/screenBlue/manager_more_icon.png +0 -0
  181. package/src/assets/image/screenBlue/meeting_board_bg.png +0 -0
  182. package/src/assets/image/screenBlue/meeting_chat_emoji_icon.png +0 -0
  183. package/src/assets/image/screenBlue/meeting_chat_icon.png +0 -0
  184. package/src/assets/image/screenBlue/meeting_chat_image_icon.png +0 -0
  185. package/src/assets/image/screenBlue/meeting_chat_logo.png +0 -0
  186. package/src/assets/image/screenBlue/meeting_copy_icon.png +0 -0
  187. package/src/assets/image/screenBlue/meeting_invite_icon.png +0 -0
  188. package/src/assets/image/screenBlue/meeting_layout_icon.png +0 -0
  189. package/src/assets/image/screenBlue/meeting_member_icon.png +0 -0
  190. package/src/assets/image/screenBlue/meeting_mode_icon.png +0 -0
  191. package/src/assets/image/screenBlue/meeting_record_icon.png +0 -0
  192. package/src/assets/image/screenBlue/meeting_setting_icon.png +0 -0
  193. package/src/assets/image/screenBlue/meeting_share_icon.png +0 -0
  194. package/src/assets/image/screenBlue/meeting_slide_small_icon.png +0 -0
  195. package/src/assets/image/screenBlue/mic_on_small.png +0 -0
  196. package/src/assets/image/screenBlue/module_bg1.png +0 -0
  197. package/src/assets/image/screenBlue/module_bg2.png +0 -0
  198. package/src/assets/image/screenBlue/monitor/circle data.png +0 -0
  199. package/src/assets/image/screenBlue/monitor/circle.png +0 -0
  200. package/src/assets/image/screenBlue/output_on_small.png +0 -0
  201. package/src/assets/image/screenBlue/page_bg.png +0 -0
  202. package/src/assets/image/screenBlue/pic-logo.png +0 -0
  203. package/src/assets/image/screenBlue/preview_date_icon.png +0 -0
  204. package/src/assets/image/screenBlue/preview_empty_icon.png +0 -0
  205. package/src/assets/image/screenBlue/preview_more_icon.png +0 -0
  206. package/src/assets/image/screenBlue/receive_hang_off_icon.png +0 -0
  207. package/src/assets/image/screenBlue/receive_hang_on_icon.png +0 -0
  208. package/src/assets/image/screenBlue/receive_video_icon.png +0 -0
  209. package/src/assets/image/screenBlue/receive_voice_icon.png +0 -0
  210. package/src/assets/image/screenBlue/send-logo.png +0 -0
  211. package/src/assets/image/screenBlue/slide_menu_bg.png +0 -0
  212. package/src/assets/image/screenBlue/top_header_bg.png +0 -0
  213. package/src/assets/image/screenBlue/yq.png +0 -0
  214. package/src/assets/json/emoji.json +222 -0
  215. package/src/assets/style/base.scss +217 -0
  216. package/src/assets/style/elForm.scss +80 -0
  217. package/src/assets/style/font.scss +16 -0
  218. package/src/assets/style/index.scss +5 -0
  219. package/src/assets/style/math.scss +11 -0
  220. package/src/assets/style/mixin.scss +69 -0
  221. package/src/components/LiveCallBoard/LiveCallBoard.vue +237 -0
  222. package/src/components/LiveInviteReceive/LiveInviteReceive.vue +150 -0
  223. package/src/components/LiveMulti/LiveMulti.vue +303 -0
  224. package/src/components/LiveMultipleMeeting/LiveMultipleMeeting.vue +4469 -0
  225. package/src/components/LiveMultipleMeeting/style/index.scss +337 -0
  226. package/src/components/LivePoint/LivePoint.vue +372 -0
  227. package/src/components/LivePointMeeting/LivePointMeeting.vue +1134 -0
  228. package/src/components/LivePointMeeting/style/index.scss +202 -0
  229. package/src/components/MeetingReadyDialog/MeetingReadyDialog.vue +583 -0
  230. package/src/components/MiniumVideoDialog/MiniumVideoDialog.vue +449 -0
  231. package/src/components/other/LayoutPlaceholder.vue +184 -0
  232. package/src/components/other/addressBook.vue +1121 -0
  233. package/src/components/other/appointDialog.vue +208 -0
  234. package/src/components/other/callBoard.vue +191 -0
  235. package/src/components/other/chatArea.vue +727 -0
  236. package/src/components/other/customGroupDialog.vue +180 -0
  237. package/src/components/other/customLayout.vue +1112 -0
  238. package/src/components/other/editGroupDialog.vue +290 -0
  239. package/src/components/other/inviteNonContactDialog.vue +160 -0
  240. package/src/components/other/layoutSwitch.vue +183 -0
  241. package/src/components/other/leaveOptionDialog.vue +90 -0
  242. package/src/components/other/memberManage.vue +502 -0
  243. package/src/components/other/moreOptionDialog.vue +291 -0
  244. package/src/components/other/screenShareBoard.vue +121 -0
  245. package/src/components/other/selectDialog.vue +279 -0
  246. package/src/components/other/selectSpecialDialog.vue +234 -0
  247. package/src/components/other/settingDialog.vue +756 -0
  248. package/src/components/other/themeDialog.vue +180 -0
  249. package/src/components/other/updateNameDialog.vue +162 -0
  250. package/src/directive/clickOutside.js +58 -0
  251. package/src/directive/drag.js +165 -0
  252. package/src/directive/scale.js +22 -0
  253. package/src/directive/throttle.js +77 -0
  254. package/src/main.js +21 -0
  255. package/src/request/index.js +27 -0
  256. package/src/utils/api.js +82 -0
  257. package/src/utils/index.js +4 -0
  258. package/src/utils/livekit/live-client-esm-old.js +1 -0
  259. package/src/utils/livekit/live-client-esm.js +1 -0
  260. package/src/utils/message.js +24 -0
  261. package/src/utils/mitt.js +4 -0
  262. package/src/utils/tool.js +154 -0
@@ -0,0 +1,502 @@
1
+ <template>
2
+ <div class="member-manage">
3
+ <div class="member-manage-head">
4
+ <div class="member-manage-head-left">
5
+ <div class="logo"></div>
6
+ <div class="title">成员管理</div>
7
+ <div class="num" v-show="participantNum > 0">
8
+ ({{ participantNum }})
9
+ </div>
10
+ </div>
11
+ <div class="close" @click="closeMemberManager"></div>
12
+ </div>
13
+ <el-tabs v-model="activeName" class="member-manage-contain" @tab-click="handleTabClick">
14
+ <el-tab-pane label="会议中" name="joined">
15
+ <div class="tab-content">
16
+ <el-input v-model="joinedSearchVal" placeholder="请输入名称查询">
17
+ <div slot="suffix" class="input-suffix-icon"></div>
18
+ </el-input>
19
+ <div :class="['member-list', {'member-list-expand': !judgeParticipantIsHost(localIdentity) && !judgeParticipantIsCoHost(localIdentity)}]">
20
+ <div class="member-list-item" v-for="item of joinedList" :key="item.identity">
21
+ <div class="member-list-item-group">
22
+ <img class="avatar" src="../../assets/image/common/default_avatar.png" alt="" />
23
+ <span class="name">{{ item.name }}</span>
24
+ <span class="host" v-if="item.metadata?.isOwner">主持人</span>
25
+ <span class="host-co" v-else-if="item.metadata?.isCoHost">联席主持人</span>
26
+ </div>
27
+ <div class="member-list-item-group">
28
+ <div
29
+ :class="[
30
+ 'icon-btn',
31
+ item.isMicrophoneEnabled ? 'icon-btn-mic-on' : 'icon-btn-mic-off',
32
+ ]"
33
+ @click="switchMemberMicrophoneStatus(item.identity, item.isMicrophoneEnabled)"
34
+ ></div>
35
+ <div
36
+ :class="[
37
+ 'icon-btn',
38
+ item.isCameraEnabled ? 'icon-btn-cam-on' : 'icon-btn-cam-off',
39
+ ]"
40
+ @click="switchMemberCameraStatus(item.identity, item.isCameraEnabled)"
41
+ ></div>
42
+ <div
43
+ v-if="judgeParticipantIsHost(localIdentity) || judgeParticipantIsCoHost(localIdentity)"
44
+ class="icon-btn icon-btn-option"
45
+ @click="openMoreDialog(item.identity, $event)"
46
+ ></div>
47
+ </div>
48
+ </div>
49
+ </div>
50
+ <div class="tab-content-foot">
51
+ <div class="tab-content-foot-btn" @click="$emit('allMicrophoneClose')">
52
+ <span>全员静音</span>
53
+ </div>
54
+ <div class="tab-content-foot-btn" @click="$emit('allCameraClose')">
55
+ <span>全员关闭摄像头</span>
56
+ </div>
57
+ </div>
58
+ </div>
59
+ </el-tab-pane>
60
+ <template v-if="judgeParticipantIsHost(localIdentity) || judgeParticipantIsCoHost(localIdentity)">
61
+ <el-tab-pane label="未入会" name="unJoin">
62
+ <div class="tab-content">
63
+ <el-input v-model="unJoinSearchVal" placeholder="请输入名称查询">
64
+ <div slot="suffix" class="input-suffix-icon"></div>
65
+ </el-input>
66
+ <div :class="['member-list', {'member-list-expand': !judgeParticipantIsHost(localIdentity) && !judgeParticipantIsCoHost(localIdentity)}]">
67
+ <div class="member-list-item" v-for="item of unJoinList" :key="item.mobile">
68
+ <div class="member-list-item-group">
69
+ <img class="avatar" src="../../assets/image/common/default_avatar.png" alt="" />
70
+ <span class="name">{{ item.userName }}</span>
71
+ <span class="host" v-if="item.metadata?.isOwner">主持人</span>
72
+ <span class="host-co" v-else-if="item.metadata?.isCoHost">联席主持人</span>
73
+ </div>
74
+ <div class="member-list-item-group">
75
+ <div class="text-btn text-btn-remove" @click="removeUnjoinItem(item)">移除</div>
76
+ <div class="text-btn text-btn-invite" @click="inviteUnjoinItem(item)">邀请</div>
77
+ </div>
78
+ </div>
79
+ </div>
80
+ <div class="tab-content-foot" v-if="judgeParticipantIsHost(localIdentity) || judgeParticipantIsCoHost(localIdentity)">
81
+ <div class="tab-content-foot-btn" @click="$emit('allMicrophoneClose')">
82
+ <span>全员静音</span>
83
+ </div>
84
+ <div class="tab-content-foot-btn" @click="$emit('allCameraClose')">
85
+ <span>全员关闭摄像头</span>
86
+ </div>
87
+ </div>
88
+ </div>
89
+ </el-tab-pane>
90
+ </template>
91
+ </el-tabs>
92
+ </div>
93
+ </template>
94
+
95
+ <script>
96
+ export default {
97
+ name: "MemberManage",
98
+ props: {
99
+ joinedList: {
100
+ type: Array,
101
+ },
102
+ participants: {
103
+ type: Array,
104
+ },
105
+ localIdentity: {
106
+ type: String,
107
+ },
108
+ meetingNum: {
109
+ type: String,
110
+ },
111
+ meetingName: {
112
+ type: String,
113
+ },
114
+ meetingHost: {
115
+ type: Object,
116
+ },
117
+ meetingCoHost: {
118
+ type: Array,
119
+ },
120
+ unJoinedList: {
121
+ type: Array,
122
+ },
123
+ },
124
+ data() {
125
+ return {
126
+ activeName: "joined",
127
+ joinedSearchVal: "",
128
+ unJoinSearchVal: "",
129
+ unJoinList: [],
130
+ };
131
+ },
132
+ computed: {
133
+ participantNum() {
134
+ return this.participants.length;
135
+ },
136
+ unJoinedNum() {
137
+ return this.unJoinedList.length;
138
+ }
139
+ },
140
+ watch: {
141
+ joinedSearchVal(newVal) {
142
+ this.$emit("filterJoinedList", newVal);
143
+ },
144
+ 'meetingHost.ownerId'(newVal) {
145
+ this.$emit("filterJoinedList", this.joinedSearchVal);
146
+ },
147
+ participantNum(newVal) {
148
+ this.getUnJoinList(this.unJoinSearchVal);
149
+ },
150
+ unJoinedNum(newVal) {
151
+ this.getUnJoinList(this.unJoinSearchVal);
152
+ },
153
+ unJoinSearchVal(newVal) {
154
+ this.getUnJoinList(newVal);
155
+ }
156
+ },
157
+ mounted() {
158
+ this.getUnJoinList(this.unJoinSearchVal);
159
+ this.initGlobleEvent();
160
+ },
161
+ beforeDestroy() {
162
+ this.removeGlobleEvent();
163
+ },
164
+ methods: {
165
+ // 判断与会者是否为主持人
166
+ judgeParticipantIsHost(identity) {
167
+ return this.meetingHost.ownerId === identity;
168
+ },
169
+
170
+ // 判断与会者是否为联席主持人
171
+ judgeParticipantIsCoHost(identity) {
172
+ if (this.meetingCoHost.length > 0) {
173
+ return this.meetingCoHost.some((item) => {
174
+ return item.coHostId === identity;
175
+ });
176
+ } else {
177
+ return false;
178
+ }
179
+ },
180
+
181
+ switchMemberCameraStatus(identity, isMute) {
182
+ this.$emit("participantCameraSwitch", {
183
+ identity,
184
+ isMute,
185
+ });
186
+ },
187
+
188
+ switchMemberMicrophoneStatus(identity, isMute) {
189
+ this.$emit("participantMicrophoneSwitch", {
190
+ identity,
191
+ isMute,
192
+ });
193
+ },
194
+
195
+ openMoreDialog(identity, e) {
196
+ this.$emit("openMoreDialog", {
197
+ identity,
198
+ clientX: e.clientX,
199
+ clientY: e.clientY,
200
+ });
201
+ },
202
+
203
+ clickAwayDom(event) {
204
+ console.log("点击事件", event.target.className);
205
+ if (
206
+ !(
207
+ event.target.className.includes("icon-btn-option") ||
208
+ event.target.className.includes("more-icon")
209
+ )
210
+ ) {
211
+ this.$emit("closeMoreDialog");
212
+ }
213
+ },
214
+
215
+ initGlobleEvent() {
216
+ window.addEventListener("click", this.clickAwayDom);
217
+ },
218
+
219
+ removeGlobleEvent() {
220
+ window.removeEventListener("click", this.clickAwayDom);
221
+ },
222
+
223
+ handleTabClick(tab, event) {
224
+ console.log("tab点击", tab, event);
225
+ },
226
+
227
+ getUnJoinList(name) {
228
+ console.log("unJoinList", this.unJoinedList);
229
+ this.unJoinList = this.unJoinedList.filter((ele) => {
230
+ return ele.userName.includes(name);
231
+ });
232
+ },
233
+
234
+ removeUnjoinItem(item) {
235
+ this.$emit("removeUnjoinItem", item);
236
+ },
237
+
238
+ inviteUnjoinItem(item) {
239
+ this.$emit("appendMemberInvite", item);
240
+ },
241
+
242
+ // 关闭成员管理
243
+ closeMemberManager() {
244
+ this.$emit("close");
245
+ },
246
+ }
247
+ }
248
+ </script>
249
+
250
+ <style lang="scss" scoped>
251
+ @import "../../assets/style/mixin.scss";
252
+ .member-manage {
253
+ width: 347px;
254
+ height: 100%;
255
+ padding: 20px;
256
+ background: var(--dialog-bg);
257
+ box-shadow: 0px 0px 8px 0px var(--dialog-shadow-color);
258
+ border: 1px solid var(--dialog-border-color);
259
+ border-radius: 5px;
260
+ position: relative;
261
+ &-head {
262
+ width: 100%;
263
+ height: 42px;
264
+ border-bottom: 1px solid var(--dialog-border-color);
265
+ display: flex;
266
+ align-items: center;
267
+ justify-content: space-between;
268
+ padding-top: 5px;
269
+ margin-bottom: 20px;
270
+ &-left {
271
+ display: flex;
272
+ align-items: center;
273
+ flex-wrap: nowrap;
274
+ font-family: var(--title-font);
275
+ font-weight: 400;
276
+ font-size: 18px;
277
+ color: var(--theme-font-color);
278
+ .logo {
279
+ width: 24px;
280
+ height: 24px;
281
+ background: var(--meeting-member-icon) no-repeat center / 100% 100%;
282
+ margin-right: 14px;
283
+ }
284
+ .title {
285
+ white-space: nowrap;
286
+ margin-right: 4px;
287
+ }
288
+ .num {
289
+ white-space: nowrap;
290
+ }
291
+ }
292
+ .close {
293
+ cursor: pointer;
294
+ width: 16px;
295
+ height: 16px;
296
+ background: var(--close-icon) no-repeat center / 100% 100%;
297
+ }
298
+ }
299
+ &-contain {
300
+ width: 100%;
301
+ height: calc(100% - 62px);
302
+ display: flex;
303
+ flex-direction: column;
304
+ .tab-content {
305
+ width: 100%;
306
+ height: 100%;
307
+ :deep(.el-input) {
308
+ width: 100%;
309
+ height: 42px;
310
+ margin-bottom: 20px;
311
+ @include elInput;
312
+ .input-suffix-icon {
313
+ width: 20px;
314
+ height: 20px;
315
+ background: url("../../assets/image/common/input_search_icon.png") no-repeat center / 100% 100%;
316
+ }
317
+ }
318
+ &-foot {
319
+ width: 100%;
320
+ padding: 10px 0;
321
+ display: flex;
322
+ flex-wrap: nowrap;
323
+ align-items: center;
324
+ justify-content: center;
325
+ &-btn {
326
+ flex: 1;
327
+ height: 40px;
328
+ @include button;
329
+ @include btnPrimary;
330
+ span {
331
+ white-space: nowrap;
332
+ }
333
+ &:not(:last-child) {
334
+ margin-right: 10px;
335
+ }
336
+ }
337
+ }
338
+ .member-list {
339
+ width: 100%;
340
+ height: calc(100% - 132px);
341
+ overflow-y: auto;
342
+ &::-webkit-scrollbar {
343
+ width: 2px;
344
+ }
345
+ &::-webkit-scrollbar-thumb {
346
+ border-radius: 2px;
347
+ background-color: rgba(0, 0, 0, 0.25);
348
+ }
349
+ &::-webkit-scrollbar-track {
350
+ box-shadow: none !important;
351
+ background: transparent !important;
352
+ border-radius: 5px;
353
+ }
354
+ &-item {
355
+ width: 100%;
356
+ display: flex;
357
+ align-items: center;
358
+ flex-wrap: nowrap;
359
+ justify-content: space-between;
360
+ &:not(:last-of-type) {
361
+ margin-bottom: 20px;
362
+ }
363
+ &-group {
364
+ display: flex;
365
+ align-items: center;
366
+ flex-wrap: nowrap;
367
+ flex-shrink: 0;
368
+ .avatar {
369
+ width: 32px;
370
+ height: 32px;
371
+ margin-right: 12px;
372
+ }
373
+ .name {
374
+ display: inline-block;
375
+ font-weight: 400;
376
+ font-size: 16px;
377
+ color: var(--theme-font-color);
378
+ white-space: nowrap;
379
+ width: fit-content;
380
+ max-width: 148px;
381
+ overflow: hidden;
382
+ text-overflow: ellipsis;
383
+ }
384
+ .host {
385
+ background: rgba(255,120,0,0.15);
386
+ border-radius: 20px;
387
+ line-height: 22px;
388
+ padding: 0 10px;
389
+ color: #FF7800;
390
+ font-family: var(--main-font);
391
+ font-weight: 400;
392
+ font-size: 14px;
393
+ margin-left: 12px;
394
+ white-space: nowrap;
395
+ border: 1px solid #FF7800;
396
+ &-co {
397
+ background: rgba(12,254,61,0.15);
398
+ color: #0CFE3D;
399
+ border: 1px solid #0CFE3D;
400
+ }
401
+ }
402
+ .icon-btn {
403
+ width: 16px;
404
+ height: 16px;
405
+ cursor: pointer;
406
+ &:not(:last-of-type) {
407
+ margin-right: 12px;
408
+ }
409
+ &-option {
410
+ background: var(--manager-more-icon) no-repeat center / 100% 100%;
411
+ }
412
+ &-mic-on {
413
+ background: var(--manager-mic-on-icon) no-repeat center / 100% 100%;
414
+ }
415
+ &-mic-off {
416
+ background: url("../../assets/image/common/manager_mic_off_icon.png") no-repeat center / 100%
417
+ 100%;
418
+ }
419
+ &-cam-on {
420
+ background: var(--manager-cam-on-icon) no-repeat center / 100% 100%;
421
+ }
422
+ &-cam-off {
423
+ background: url("../../assets/image/common/manager_cam_off_icon.png") no-repeat center / 100%
424
+ 100%;
425
+ }
426
+ }
427
+ .text-btn {
428
+ width: 80px;
429
+ height: 32px;
430
+ line-height: 32px;
431
+ text-align: center;
432
+ border-radius: 8px;
433
+ cursor: pointer;
434
+ font-weight: 500;
435
+ font-size: 16px;
436
+ &:not(:last-of-type) {
437
+ margin-right: 16px;
438
+ }
439
+ &-remove {
440
+ border: 1px solid #ef5b56;
441
+ color: #ef5b56;
442
+ }
443
+ &-invite {
444
+ background: #1f63fb;
445
+ color: #ffffff;
446
+ }
447
+ }
448
+ }
449
+ }
450
+ &-expand {
451
+ height: calc(100% - 70px);
452
+ }
453
+ }
454
+ }
455
+ }
456
+ :deep(.el-tabs__header) {
457
+ margin: 0 0 20px;
458
+ .el-tabs__nav-wrap {
459
+ &::after {
460
+ background-color: transparent;
461
+ bottom: 0;
462
+ content: "";
463
+ height: 2px;
464
+ left: 0;
465
+ position: absolute;
466
+ width: 100%;
467
+ }
468
+ .el-tabs__nav {
469
+ width: 100%;
470
+ .el-tabs__active-bar {
471
+ display: none;
472
+ }
473
+ }
474
+ .el-tabs__item {
475
+ font-family: var(--main-font) !important;
476
+ font-weight: 500 !important;
477
+ font-size: 16px !important;
478
+ text-align: center;
479
+ color: var(--theme-font-color) !important;
480
+ width: 50%;
481
+ border: 1px solid var(--meeting-manager-tab-border-color);
482
+ padding: 0;
483
+ &:first-child {
484
+ border-radius: 6px 0 0 6px;
485
+ }
486
+ &:last-child {
487
+ border-radius: 0 6px 6px 0;
488
+ }
489
+ &.is-active {
490
+ background: var(--meeting-manager-tab-active-bg) !important;
491
+ }
492
+ }
493
+ }
494
+ }
495
+ :deep(.el-tabs__content) {
496
+ flex: 1 1;
497
+ .el-tab-pane {
498
+ height: 100%;
499
+ }
500
+ }
501
+ }
502
+ </style>