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,290 @@
1
+ <template>
2
+ <div>
3
+ <el-dialog
4
+ :visible.sync="visible"
5
+ append-to-body
6
+ :show-close="false"
7
+ class="edit-group-dialog"
8
+ >
9
+ <template #title>
10
+ <div class="dialog-title">
11
+ 编辑分组
12
+ <span class="close-icon" @click="close"></span>
13
+ </div>
14
+ </template>
15
+ <el-form ref="formRef" :model="form" :rules="rules" class="custom-form">
16
+ <el-form-item label="名称" prop="name">
17
+ <el-input v-model="form.name" maxlength="30" placeholder="请输入" />
18
+ </el-form-item>
19
+ <el-form-item label="排序号" prop="sort">
20
+ <el-input v-model="form.sort" type="number" :min="0" placeholder="请输入" />
21
+ </el-form-item>
22
+ </el-form>
23
+
24
+ <!-- 成员区域 -->
25
+ <div class="members-container">
26
+ <div class="members-title">成员</div>
27
+ <div class="members-content">
28
+ <div class="member-list" v-for="member in members" :key="member.id">
29
+ <div class="member-list-group">
30
+ <img class="user-icon" :src="member.avatar ? member.avatar : require('../../assets/image/common/default_avatar_mini.png')" alt="" />
31
+ <div class="user-name">{{ member.label }}</div>
32
+ </div>
33
+ <div class="remove-icon" @click="removeMember(member)"></div>
34
+ </div>
35
+ </div>
36
+ </div>
37
+
38
+ <template #footer>
39
+ <div class="dialog-footer">
40
+ <div class="btn btn-plain" @click="close">取消</div>
41
+ <div class="btn btn-primary" v-throttle-click:500="submit">确定</div>
42
+ </div>
43
+ </template>
44
+ </el-dialog>
45
+ </div>
46
+ </template>
47
+
48
+ <script>
49
+ import { ShowMessage, queryCommonGroupUserByGroupId, updateCommonGroupAndUser } from "@/utils/index";
50
+
51
+ export default {
52
+ name: "EditGroupDialog",
53
+ props: {
54
+ baseUrl: {
55
+ type: String,
56
+ default: "",
57
+ },
58
+ token: {
59
+ type: String,
60
+ default: "",
61
+ },
62
+ },
63
+ data() {
64
+ return {
65
+ visible: false,
66
+ form: {
67
+ id: "",
68
+ name: "",
69
+ sort: "",
70
+ },
71
+ members: [],
72
+ rules: {
73
+ name: [{ required: true, message: "请输入名称", trigger: "blur" }],
74
+ sort: [{ required: true, message: "请输入排序号", trigger: "blur" }],
75
+ },
76
+ showMessage: new ShowMessage()
77
+ };
78
+ },
79
+ methods: {
80
+ open(group = null) {
81
+ if (group) {
82
+ // 填充表单数据
83
+ this.form.id = group.id;
84
+ this.form.name = group.label;
85
+ this.form.sort = group.order ? String(group.order) : "0";
86
+ queryCommonGroupUserByGroupId({
87
+ groupID: group.id,
88
+ }, {
89
+ baseUrl: this.baseUrl,
90
+ token: this.token,
91
+ }).then(res => {
92
+ if (res.data?.code == 200) {
93
+ this.members = res.data.data.map(item => {
94
+ return {
95
+ id: item.userID,
96
+ label: item.userName,
97
+ avatar: item?.avatar ?? "",
98
+ phone: item.phone,
99
+ loginCode: item?.loginCode ? item.loginCode : "",
100
+ }
101
+ });
102
+ }
103
+ })
104
+ } else {
105
+ // 重置表单
106
+ this.form.id = "";
107
+ this.form.name = "";
108
+ this.form.sort = "";
109
+ this.members = [];
110
+ }
111
+ this.visible = true;
112
+ },
113
+ removeMember(member) {
114
+ const index = this.members.findIndex(item => item.id === member.id);
115
+ if (index !== -1) {
116
+ this.members.splice(index, 1);
117
+ }
118
+ },
119
+ close() {
120
+ this.visible = false;
121
+ this.$emit("refreshCommonGroupTree");
122
+ },
123
+ submit() {
124
+ this.$refs.formRef.validate((valid) => {
125
+ if (valid) {
126
+ // 提交逻辑
127
+ updateCommonGroupAndUser({
128
+ groupID: this.form.id,
129
+ groupName: this.form.name,
130
+ order: Number(this.form.sort),
131
+ user: this.members.map(item => {
132
+ return {
133
+ userID: item.id,
134
+ userName: item.label,
135
+ phone: item.phone,
136
+ loginCode: item?.loginCode ? item.loginCode : "",
137
+ }
138
+ })
139
+ }, {
140
+ baseUrl: this.baseUrl,
141
+ token: this.token,
142
+ }).then(res => {
143
+ if (res.data?.code == 200) {
144
+ this.close();
145
+ } else {
146
+ this.showMessage.error(res.data?.msg);
147
+ }
148
+ }).catch(err => {
149
+ this.showMessage.error(err.message);
150
+ })
151
+ }
152
+ });
153
+ }
154
+ }
155
+ }
156
+ </script>
157
+
158
+ <style lang="scss" scoped>
159
+ @import "../../assets/style/mixin.scss";
160
+
161
+ :deep(.el-dialog) {
162
+ width: 510px !important;
163
+ border-radius: 12px;
164
+ box-shadow: 0 8px 32px 0 rgba(0, 0, 0, 0.4);
165
+ @include dialog;
166
+ }
167
+
168
+ :deep(.el-form) {
169
+ margin-top: 40px;
170
+ width: 100%;
171
+ padding: 0 20px;
172
+ .el-form-item {
173
+ margin-bottom: 20px;
174
+ display: flex;
175
+ width: 100%;
176
+ .el-form-item__label {
177
+ width: 80px;
178
+ padding-right: 20px;
179
+ }
180
+ .el-form-item__content {
181
+ flex: none;
182
+ width: calc(100% - 80px);
183
+ }
184
+ .el-input {
185
+ width: 100%;
186
+ }
187
+ }
188
+ }
189
+
190
+ .edit-group-dialog {
191
+ .dialog-title {
192
+ display: flex;
193
+ align-items: center;
194
+ width: 100%;
195
+ justify-content: space-between;
196
+ .close-icon {
197
+ width: 16px;
198
+ height: 16px;
199
+ background: var(--close-icon) no-repeat center center / 100% 100%;
200
+ cursor: pointer;
201
+ }
202
+ }
203
+
204
+ .members-container {
205
+ width: 100%;
206
+ padding: 0 20px;
207
+
208
+ .members-title {
209
+ margin-bottom: 10px;
210
+ font-weight: 500;
211
+ font-size: 18px;
212
+ color: #FFFFFF;
213
+ }
214
+
215
+ .members-content {
216
+ min-height: 238px;
217
+ overflow: auto;
218
+ max-height: 238px;
219
+ border: 1px solid var(--dialog-border-color);
220
+ border-radius: 6px;
221
+ padding: 20px 14px;
222
+
223
+ .member-list {
224
+ width: 100%;
225
+ height: 32px;
226
+ display: flex;
227
+ align-items: center;
228
+ flex-wrap: nowrap;
229
+ justify-content: space-between;
230
+ font-weight: 400;
231
+ font-size: 14px;
232
+ color: var(--theme-font-color);
233
+
234
+ &-group {
235
+ display: flex;
236
+ flex-wrap: nowrap;
237
+ align-items: center;
238
+
239
+ .user-icon {
240
+ width: 20px;
241
+ height: 20px;
242
+ margin-right: 12px;
243
+ }
244
+
245
+ .user-name {
246
+ width: fit-content;
247
+ max-width: 300px;
248
+ white-space: nowrap;
249
+ overflow: hidden;
250
+ text-overflow: ellipsis;
251
+ }
252
+ }
253
+
254
+ .remove-icon {
255
+ width: 17px;
256
+ height: 17px;
257
+ background: url("../../assets/image/common/unchosen_icon.png") no-repeat center / 100% 100%;
258
+ cursor: pointer;
259
+ }
260
+
261
+ &:not(:last-child) {
262
+ margin-bottom: 16px;
263
+ }
264
+ }
265
+ }
266
+ }
267
+
268
+ .dialog-footer {
269
+ display: flex;
270
+ justify-content: center;
271
+ padding: 40px 0;
272
+ .btn {
273
+ width: 100px;
274
+ height: 36px;
275
+ @include button;
276
+ &.btn-primary {
277
+ @include btnPrimary;
278
+ }
279
+ &.btn-plain {
280
+ border: 1px solid var(--btn-primary-bg);
281
+ color: var(--btn-primary-bg);
282
+ background: transparent;
283
+ }
284
+ &:not(:last-child) {
285
+ margin-right: 10px;
286
+ }
287
+ }
288
+ }
289
+ }
290
+ </style>
@@ -0,0 +1,160 @@
1
+ <template>
2
+ <div>
3
+ <el-dialog
4
+ :visible.sync="visible"
5
+ append-to-body
6
+ :show-close="false"
7
+ class="invite-dialog"
8
+ >
9
+ <div slot="title" class="dialog-title">
10
+ 邀请非通讯录人员
11
+ <span class="close-icon" @click="close"></span>
12
+ </div>
13
+ <el-form ref="formRef" :model="form" :rules="rules" class="invite-form">
14
+ <el-form-item label="姓名" prop="name">
15
+ <el-input v-model="form.name" maxlength="30" placeholder="请输入" />
16
+ </el-form-item>
17
+ <el-form-item label="电话" prop="phone">
18
+ <el-input v-model="form.phone" maxlength="11" placeholder="请输入" />
19
+ </el-form-item>
20
+ </el-form>
21
+ <template #footer>
22
+ <div class="dialog-footer">
23
+ <div class="btn btn-plain" @click="close">取消</div>
24
+ <div class="btn btn-primary" v-throttle-click:500="submit">确定</div>
25
+ </div>
26
+ </template>
27
+ </el-dialog>
28
+ </div>
29
+ </template>
30
+
31
+ <script>
32
+ import { randomString, ShowMessage } from "@/utils/index";
33
+
34
+ export default {
35
+ name: "InviteNonContactDialog",
36
+ props: {
37
+ baseUrl: {
38
+ type: String,
39
+ default: "",
40
+ },
41
+ token: {
42
+ type: String,
43
+ default: "",
44
+ },
45
+ },
46
+ data() {
47
+ return {
48
+ visible: false,
49
+ form: {
50
+ name: "",
51
+ phone: "",
52
+ },
53
+ rules: {
54
+ name: [{ required: true, message: "请输入姓名", trigger: "blur" }],
55
+ phone: [{ required: true, validator: this.validatePhone, trigger: "blur" }],
56
+ },
57
+ showMessage: new ShowMessage()
58
+ };
59
+ },
60
+ methods: {
61
+ validatePhone(rule, value, callback) {
62
+ if (!value) {
63
+ callback(new Error("请输入电话号码"));
64
+ } else if (!/^1[3-9]\d{9}$/.test(value)) {
65
+ callback(new Error("请输入正确的手机号码"));
66
+ } else {
67
+ callback();
68
+ }
69
+ },
70
+ open() {
71
+ this.form.name = "";
72
+ this.form.phone = "";
73
+ this.visible = true;
74
+ },
75
+ close() {
76
+ this.visible = false;
77
+ },
78
+ submit() {
79
+ this.$refs.formRef.validate((valid) => {
80
+ if (valid) {
81
+ // 提交逻辑
82
+ this.$emit("addOutterContactToChosenList", {
83
+ id: Number(randomString(16)),
84
+ label: this.form.name,
85
+ phone: this.form.phone,
86
+ });
87
+ this.close();
88
+ }
89
+ });
90
+ }
91
+ }
92
+ };
93
+ </script>
94
+
95
+ <style lang="scss" scoped>
96
+ @import "../../assets/style/mixin.scss";
97
+
98
+ :deep(.el-dialog) {
99
+ width: 510px !important;
100
+ border-radius: 12px;
101
+ box-shadow: 0 8px 32px 0 rgba(0, 0, 0, 0.4);
102
+ @include dialog;
103
+ }
104
+
105
+ :deep(.el-form) {
106
+ margin-top: 40px;
107
+ .el-form-item {
108
+ margin-bottom: 20px;
109
+ display: flex;
110
+ justify-content: center;
111
+ .el-form-item__label {
112
+ width: 65px;
113
+ padding-right: 20px;
114
+ }
115
+ .el-form-item__content {
116
+ flex: none;
117
+ width: 281px;
118
+ }
119
+ .el-input {
120
+ width: 100%;
121
+ }
122
+ }
123
+ }
124
+
125
+ .invite-dialog {
126
+ .dialog-title {
127
+ display: flex;
128
+ align-items: center;
129
+ width: 100%;
130
+ justify-content: space-between;
131
+ .close-icon {
132
+ width: 16px;
133
+ height: 16px;
134
+ background: var(--close-icon) no-repeat center center / 100% 100%;
135
+ cursor: pointer;
136
+ }
137
+ }
138
+ .dialog-footer {
139
+ display: flex;
140
+ justify-content: center;
141
+ padding-bottom: 40px;
142
+ .btn {
143
+ width: 100px;
144
+ height: 36px;
145
+ @include button;
146
+ &.btn-primary {
147
+ @include btnPrimary;
148
+ }
149
+ &.btn-plain {
150
+ border: 1px solid var(--btn-primary-bg);
151
+ color: var(--btn-primary-bg);
152
+ background: transparent;
153
+ }
154
+ &:not(:last-child) {
155
+ margin-right: 16px;
156
+ }
157
+ }
158
+ }
159
+ }
160
+ </style>
@@ -0,0 +1,183 @@
1
+ <template>
2
+ <div class="dialog" :style="position">
3
+ <div class="dialog-inner">
4
+ <div :class="['layout-list', currentLayout === layout ? ('layout-list-' + layout + '-active') : ('layout-list-' + layout)]" v-for="(layout, index) of layoutList" :key="layout" @click="setLayout(layout)">
5
+ <div class="icon"></div>
6
+ <div class="title">{{ layoutLabels[index] }}</div>
7
+ </div>
8
+ </div>
9
+ </div>
10
+ </template>
11
+
12
+ <script>
13
+ import { ShowMessage } from "@/utils/index";
14
+
15
+ export default {
16
+ name: "LayoutSwitch",
17
+ props: {
18
+ position: {
19
+ type: Object,
20
+ default: () => {
21
+ return {
22
+ right: "0px",
23
+ top: "0px",
24
+ };
25
+ },
26
+ },
27
+ currentLayout: {
28
+ type: String
29
+ },
30
+ layoutList: {
31
+ type: Array
32
+ },
33
+ layoutLabels: {
34
+ type: Array
35
+ },
36
+ currentRoomMode: {
37
+ type: String
38
+ }
39
+ },
40
+ data() {
41
+ return {
42
+ showMessage: null,
43
+ };
44
+ },
45
+ created() {
46
+ this.showMessage = new ShowMessage();
47
+ },
48
+ methods: {
49
+ setLayout(layout) {
50
+ if(this.currentRoomMode === "normal") {
51
+ // 仅当当前为会议模式时允许切换布局
52
+ this.$emit("setLayout", layout);
53
+ } else {
54
+ this.showMessage.message("info", "点调模式下无法切换布局,请切换到会议模式后重试");
55
+ }
56
+ }
57
+ }
58
+ }
59
+ </script>
60
+
61
+ <style lang="scss" scoped>
62
+ .dialog {
63
+ position: absolute;
64
+ z-index: 100;
65
+ padding-top: 10px;
66
+ // background: transparent;
67
+ width: 175px;
68
+ height: auto;
69
+ &-inner {
70
+ background: var(--dialog-bg);
71
+ box-shadow: 0px 0px 8px 0px var(--dialog-shadow-color);
72
+ border-radius: 8px;
73
+ border: 1px solid var(--dialog-border-color);
74
+ width: 100%;
75
+ height: 92px;
76
+ display: flex;
77
+ align-items: center;
78
+ justify-content: space-between;
79
+ padding: 0 16px;
80
+ .layout-list {
81
+ display: flex;
82
+ flex-direction: column;
83
+ align-items: center;
84
+ .icon {
85
+ width: 50px;
86
+ height: 26px;
87
+ margin-bottom: 6px;
88
+ }
89
+ .title {
90
+ font-weight: 500;
91
+ font-size: 16px;
92
+ color: var(--theme-font-color);
93
+ line-height: 22px;
94
+ white-space: nowrap;
95
+ }
96
+ &-grid {
97
+ .icon {
98
+ background: url("../../assets/image/common/layout1.png") no-repeat center / 100% 100%;
99
+ }
100
+ &:hover {
101
+ .icon {
102
+ background: url("../../assets/image/common/layout-active1.png") no-repeat center / 100% 100% !important;
103
+ }
104
+ .title {
105
+ color: var(--btn-primary-bg);
106
+ }
107
+ }
108
+ &-active {
109
+ .icon {
110
+ background: url("../../assets/image/common/layout-active1.png") no-repeat center / 100% 100% !important;
111
+ }
112
+ .title {
113
+ color: var(--btn-primary-bg);
114
+ }
115
+ }
116
+ }
117
+ &-rightSide {
118
+ .icon {
119
+ background: url("../../assets/image/common/layout2.png") no-repeat center / 100% 100%;
120
+ }
121
+ &:hover {
122
+ .icon {
123
+ background: url("../../assets/image/common/layout-active2.png") no-repeat center / 100% 100% !important;
124
+ }
125
+ .title {
126
+ color: var(--btn-primary-bg);
127
+ }
128
+ }
129
+ &-active {
130
+ .icon {
131
+ background: url("../../assets/image/common/layout-active2.png") no-repeat center / 100% 100% !important;
132
+ }
133
+ .title {
134
+ color: var(--btn-primary-bg);
135
+ }
136
+ }
137
+ }
138
+ // &-ring {
139
+ // .icon {
140
+ // background: url('/assets/img/meeting/layout3.png') no-repeat center / 100% 100%;
141
+ // }
142
+ // &:hover {
143
+ // .icon {
144
+ // background: url('/assets/img/meeting/layout-active3.png') no-repeat center / 100% 100% !important;
145
+ // }
146
+ // .title {
147
+ // color: #5FA7FD;
148
+ // }
149
+ // }
150
+ // &-active {
151
+ // .icon {
152
+ // background: url('/assets/img/meeting/layout-active3.png') no-repeat center / 100% 100% !important;
153
+ // }
154
+ // .title {
155
+ // color: #5FA7FD;
156
+ // }
157
+ // }
158
+ // }
159
+ // &-downLSide {
160
+ // .icon {
161
+ // background: url('/assets/img/meeting/layout4.png') no-repeat center / 100% 100%;
162
+ // }
163
+ // &:hover {
164
+ // .icon {
165
+ // background: url('/assets/img/meeting/layout-active4.png') no-repeat center / 100% 100% !important;
166
+ // }
167
+ // .title {
168
+ // color: #5FA7FD;
169
+ // }
170
+ // }
171
+ // &-active {
172
+ // .icon {
173
+ // background: url('/assets/img/meeting/layout-active4.png') no-repeat center / 100% 100% !important;
174
+ // }
175
+ // .title {
176
+ // color: #5FA7FD;
177
+ // }
178
+ // }
179
+ // }
180
+ }
181
+ }
182
+ }
183
+ </style>
@@ -0,0 +1,90 @@
1
+ <template>
2
+ <div class="check-dialog" :style="position">
3
+ <div class="check-dialog-inner">
4
+ <div class="control-list">
5
+ <div
6
+ :class="['control-list-item']"
7
+ v-for="item of otherOptionList"
8
+ :key="item.value"
9
+ @click="chooseOtherItem(item)"
10
+ >
11
+ {{ item }}
12
+ </div>
13
+ </div>
14
+ </div>
15
+ </div>
16
+ </template>
17
+
18
+ <script>
19
+ export default {
20
+ name: "LeaveOptionDialog",
21
+ props: {
22
+ position: {
23
+ type: Object,
24
+ default: () => {
25
+ return {
26
+ left: "0px",
27
+ bottom: "40px",
28
+ };
29
+ },
30
+ },
31
+ otherOptionList: {
32
+ type: Array,
33
+ default: () => {
34
+ return ["结束会议", "离开会议"];
35
+ },
36
+ },
37
+ },
38
+ methods: {
39
+ chooseOtherItem(item) {
40
+ switch (item) {
41
+ case "结束会议":
42
+ this.$emit("cancelMeeting");
43
+ break;
44
+ case "离开会议":
45
+ this.$emit("leaveMeeting");
46
+ break;
47
+ default:
48
+ break;
49
+ }
50
+ this.$emit("optionClose");
51
+ },
52
+ }
53
+ }
54
+ </script>
55
+
56
+ <style lang="scss" scoped>
57
+ .check-dialog {
58
+ width: 160px;
59
+ position: absolute;
60
+ z-index: 100;
61
+ &-inner {
62
+ width: 100%;
63
+ background: var(--dialog-bg);
64
+ box-shadow: 0px 0px 8px 0px var(--dialog-shadow-color);
65
+ border-radius: 8px;
66
+ border: 1px solid var(--dialog-border-color);
67
+ padding: 20px 25px;
68
+ .control-list {
69
+ width: 100%;
70
+ font-weight: 500;
71
+ color: var(--theme-font-color);
72
+ &-item {
73
+ width: 100%;
74
+ height: 40px;
75
+ line-height: 40px;
76
+ cursor: pointer;
77
+ font-size: 16px;
78
+ text-align: center;
79
+ &:not(:last-child) {
80
+ margin-bottom: 10px;
81
+ }
82
+ &:hover {
83
+ background: var(--btn-danger-bg);
84
+ border-radius: 8px;
85
+ }
86
+ }
87
+ }
88
+ }
89
+ }
90
+ </style>