Kaynağa Gözat

Merge branch 'hcb' of SH-Arbitrate/Arbitrate-FrontendH5 into master

hanchaobo 2 yıl önce
ebeveyn
işleme
f71b0b46ee
3 değiştirilmiş dosya ile 103 ekleme ve 200 silme
  1. 19
    57
      src/views/components/roomFooter.vue
  2. 0
    1
      src/views/onlyOffice.vue
  3. 84
    142
      src/views/room.vue

+ 19
- 57
src/views/components/roomFooter.vue Dosyayı Görüntüle

1
 <template>
1
 <template>
2
   <div class="roomFooter">
2
   <div class="roomFooter">
3
     <div class="outRoom">
3
     <div class="outRoom">
4
-      <el-button type="danger" @click="exitRoom" v-if="!roleFlag"
5
-        >退出房间</el-button
6
-      >
7
-      <el-button type="danger" @click="exitRoom" v-if="roleFlag"
8
-        >解散房间</el-button
9
-      >
4
+      <el-button type="danger" @click="exitRoom" v-if="!roleFlag">退出房间</el-button>
5
+      <el-button type="danger" @click="exitRoom" v-if="roleFlag">解散房间</el-button>
10
     </div>
6
     </div>
11
     <div class="operation">
7
     <div class="operation">
12
       <div class="mic">
8
       <div class="mic">
13
-        <img
14
-          class="micImg"
15
-          src="@/assets/mic_on.png"
16
-          alt=""
17
-          v-if="micFlag"
18
-          @click="micClickOn"
19
-        />
20
-        <img
21
-          class="micImg"
22
-          src="@/assets/mic_off.png"
23
-          alt=""
24
-          v-else
25
-          @click="micClickOff"
26
-        />
9
+        <img class="micImg" src="@/assets/mic_on.png" alt="" v-if="micFlag" @click="micClickOn" />
10
+        <img class="micImg" src="@/assets/mic_off.png" alt="" v-else @click="micClickOff" />
27
       </div>
11
       </div>
28
       <div class="video">
12
       <div class="video">
29
-        <img
30
-          class="videoImg"
31
-          src="@/assets/video_on.png"
32
-          alt=""
33
-          v-if="videoFlag"
34
-          @click="videoClickOn"
35
-        />
36
-        <img
37
-          class="videoImg"
38
-          src="@/assets/video_off.png"
39
-          alt=""
40
-          v-else
41
-          @click="videoClickOff"
42
-        />
13
+        <img class="videoImg" src="@/assets/video_on.png" alt="" v-if="videoFlag" @click="videoClickOn" />
14
+        <img class="videoImg" src="@/assets/video_off.png" alt="" v-else @click="videoClickOff" />
43
       </div>
15
       </div>
44
       <div class="sharing">
16
       <div class="sharing">
45
-        <img
46
-          class="sharImg"
47
-          src="@/assets/screenShare_on.png"
48
-          alt=""
49
-          v-if="sharFlag"
50
-          @click="sharClickOn"
51
-        />
52
-        <img
53
-          class="sharImg"
54
-          src="@/assets/screenShare_off.png"
55
-          alt=""
56
-          v-else
57
-          @click="sharClickOff"
58
-        />
59
-        
17
+        <img class="sharImg" src="@/assets/screenShare_on.png" alt="" v-if="sharFlag" @click="sharClickOn" />
18
+        <img class="sharImg" src="@/assets/screenShare_off.png" alt="" v-else @click="sharClickOff" />
19
+
60
       </div>
20
       </div>
61
       <div class="mediationPop">
21
       <div class="mediationPop">
62
-         <el-button type="warning" @click="mediationPop">调解</el-button>
22
+        <el-button type="warning" @click="mediationPop">调解</el-button>
63
       </div>
23
       </div>
64
     </div>
24
     </div>
65
   </div>
25
   </div>
66
 </template>
26
 </template>
67
-  
68
-  <script>
27
+
28
+<script>
69
 import { startVideo, stopVideo, destructionRoom } from "@/api/room.js";
29
 import { startVideo, stopVideo, destructionRoom } from "@/api/room.js";
70
 export default {
30
 export default {
71
   name: "Footer",
31
   name: "Footer",
72
-  props: ["micFlag","videoFlag","sharFlag"],
32
+  props: ["micFlag", "videoFlag", "sharFlag"],
73
   components: {},
33
   components: {},
74
   data() {
34
   data() {
75
     return {
35
     return {
112
       this.$emit("sharClickOff");
72
       this.$emit("sharClickOff");
113
     },
73
     },
114
     // 弹出调解内容
74
     // 弹出调解内容
115
-    mediationPop(){
75
+    mediationPop() {
116
       this.$emit("mediationPop");
76
       this.$emit("mediationPop");
117
     },
77
     },
118
     exitRoom() {
78
     exitRoom() {
153
   },
113
   },
154
 };
114
 };
155
 </script>
115
 </script>
156
-  
157
-  <style scoped>
116
+
117
+<style scoped>
158
 .roomFooter {
118
 .roomFooter {
159
   width: 100%;
119
   width: 100%;
160
   height: 100%;
120
   height: 100%;
202
   height: 60px;
162
   height: 60px;
203
   margin-left: 20px;
163
   margin-left: 20px;
204
 }
164
 }
205
-.mediationPop{
165
+
166
+.mediationPop {
206
   margin-left: 20px;
167
   margin-left: 20px;
207
 }
168
 }
169
+
208
 .micImg,
170
 .micImg,
209
 .videoImg,
171
 .videoImg,
210
 .sharImg {
172
 .sharImg {

+ 0
- 1
src/views/onlyOffice.vue Dosyayı Görüntüle

35
             }
35
             }
36
             axios.get(`http://121.40.189.20:9090/onlyOfficeConfig/${edit}/${id}/${this.userId}/desktop/true`).then(res => {
36
             axios.get(`http://121.40.189.20:9090/onlyOfficeConfig/${edit}/${id}/${this.userId}/desktop/true`).then(res => {
37
                 this.config = res.data;
37
                 this.config = res.data;
38
-                debugger
39
                 var docEditor = new DocsAPI.DocEditor("placeholder", this.config);
38
                 var docEditor = new DocsAPI.DocEditor("placeholder", this.config);
40
             })
39
             })
41
         },
40
         },

+ 84
- 142
src/views/room.vue Dosyayı Görüntüle

2
   <div class="page">
2
   <div class="page">
3
     <div class="roompage" @mouseover="mouseHover" v-if="modileFlag">
3
     <div class="roompage" @mouseover="mouseHover" v-if="modileFlag">
4
       <div class="txtContent">
4
       <div class="txtContent">
5
-        <el-tag type="danger" @click="txtContent" v-if="modileFlag"
6
-          >会议内容</el-tag
7
-        >
5
+        <el-tag type="danger" @click="txtContent" v-if="modileFlag">会议内容</el-tag>
8
       </div>
6
       </div>
9
       <div class="content">
7
       <div class="content">
10
-        <div
11
-          class="screenShare"
12
-          id="screenShare"
13
-          v-show="screenShareFlag"
14
-        ></div>
8
+        <div class="screenShare" id="screenShare" v-show="screenShareFlag"></div>
15
 
9
 
16
         <div :class="videoList">
10
         <div :class="videoList">
17
           <div :class="videoClass" id="localStream">
11
           <div :class="videoClass" id="localStream">
18
             <div class="userName">{{ userId }}</div>
12
             <div class="userName">{{ userId }}</div>
19
           </div>
13
           </div>
20
-          <div
21
-            :class="videoClass"
22
-            v-for="(item, index) in userList"
23
-            :key="index"
24
-            :id="item"
25
-          >
14
+          <div :class="videoClass" v-for="(item, index) in userList" :key="index" :id="item">
26
             <div class="userName">{{ item }}</div>
15
             <div class="userName">{{ item }}</div>
27
           </div>
16
           </div>
28
         </div>
17
         </div>
29
       </div>
18
       </div>
30
       <div class="footerList">
19
       <div class="footerList">
31
-        <roomFooter
32
-          @exitRoom="exitRoom"
33
-          @micClickOn="micClickOn"
34
-          @micClickOff="micClickOff"
35
-          @videoClickOn="videoClickOn"
36
-          @videoClickOff="videoClickOff"
37
-          @sharClickOn="sharClickOn"
38
-          @sharClickOff="sharClickOff"
39
-          @mediationPop="mediationPop"
40
-          :roomId="roomId"
41
-          :micFlag="micFlag"
42
-          :videoFlag="videoFlag"
43
-          :sharFlag="sharFlag"
44
-        ></roomFooter>
20
+        <roomFooter @exitRoom="exitRoom" @micClickOn="micClickOn" @micClickOff="micClickOff"
21
+          @videoClickOn="videoClickOn" @videoClickOff="videoClickOff" @sharClickOn="sharClickOn"
22
+          @sharClickOff="sharClickOff" @mediationPop="mediationPop" :roomId="roomId" :micFlag="micFlag"
23
+          :videoFlag="videoFlag" :sharFlag="sharFlag"></roomFooter>
45
       </div>
24
       </div>
46
     </div>
25
     </div>
47
     <div class="roomPhone" v-if="!modileFlag">
26
     <div class="roomPhone" v-if="!modileFlag">
52
         <div :class="userClassPhone" id="localStream">
31
         <div :class="userClassPhone" id="localStream">
53
           <div class="userNamePhone">{{ userId }}</div>
32
           <div class="userNamePhone">{{ userId }}</div>
54
         </div>
33
         </div>
55
-        <div
56
-          :class="userClassPhone"
57
-          v-for="(item, index) in userList"
58
-          :key="index"
59
-          :id="item"
60
-        >
34
+        <div :class="userClassPhone" v-for="(item, index) in userList" :key="index" :id="item">
61
           <div class="userNamePhone">{{ item }}</div>
35
           <div class="userNamePhone">{{ item }}</div>
62
         </div>
36
         </div>
63
       </div>
37
       </div>
156
           </div>
130
           </div>
157
         </div>
131
         </div>
158
       </div> -->
132
       </div> -->
159
-      <quill-editor
160
-        ref="myQuillEditor"
161
-        v-model="contentValue"
162
-        :options="editorOption"
163
-        @blur="onEditorBlur($event)"
164
-        @focus="onEditorFocus($event)"
165
-        @ready="onEditorReady($event)"
166
-      ></quill-editor>
167
-      <el-button
168
-        class="updataBtn"
169
-        @click="updataClick"
170
-        type="primary"
171
-        :disabled="!updataFlag"
172
-        >确认修改内容</el-button
173
-      >
133
+      <quill-editor ref="myQuillEditor" v-model="contentValue" :options="editorOption" @blur="onEditorBlur($event)"
134
+        @focus="onEditorFocus($event)" @ready="onEditorReady($event)"></quill-editor>
135
+      <el-button class="updataBtn" @click="updataClick" type="primary" :disabled="!updataFlag">确认修改内容</el-button>
174
     </el-drawer>
136
     </el-drawer>
175
     <!-- 调解 -->
137
     <!-- 调解 -->
176
     <el-drawer :visible.sync="drawerMediatio" direction="ltr" title="调解内容">
138
     <el-drawer :visible.sync="drawerMediatio" direction="ltr" title="调解内容">
177
-      <div
178
-        style="
139
+      <div style="
179
           width: 100%;
140
           width: 100%;
180
           display: flex;
141
           display: flex;
181
           justify-content: space-around;
142
           justify-content: space-around;
182
           margin-bottom: 10px;
143
           margin-bottom: 10px;
183
           margin-top: 20px;
144
           margin-top: 20px;
184
-        "
185
-      >
186
-        <el-upload
187
-          ref="upload"
188
-          :limit="1"
189
-          :action="UploadUrl()"
190
-          :headers="headers"
191
-          :data="filedata"
192
-          :on-change="beforeUpload"
193
-          :on-success="handlSuccess"
194
-          :file-list="fileList"
195
-          v-if="appFlag"
196
-        >
197
-          <el-button slot="trigger" size="small" type="primary"
198
-            >申请人上传证据</el-button
199
-          >
145
+        ">
146
+        <el-upload ref="upload" :limit="1" :action="UploadUrl()" :headers="headers" :data="filedata"
147
+          :on-change="beforeUpload" :on-success="handlSuccess" :file-list="fileList" v-if="appFlag">
148
+          <el-button slot="trigger" size="small" type="primary">申请人上传证据</el-button>
200
         </el-upload>
149
         </el-upload>
201
-        <el-upload
202
-          ref="upload1"
203
-          :limit="1"
204
-          :action="UploadUrl()"
205
-          :headers="headers1"
206
-          :data="filedata1"
207
-          :on-change="beforeUpload1"
208
-          :on-success="handlSuccess1"
209
-          :file-list="fileList1"
210
-          v-if="resFlag"
211
-        >
212
-          <el-button slot="trigger" size="small" type="primary"
213
-            >被申请人上传证据</el-button
214
-          >
150
+        <el-upload ref="upload1" :limit="1" :action="UploadUrl()" :headers="headers1" :data="filedata1"
151
+          :on-change="beforeUpload1" :on-success="handlSuccess1" :file-list="fileList1" v-if="resFlag">
152
+          <el-button slot="trigger" size="small" type="primary">被申请人上传证据</el-button>
215
         </el-upload>
153
         </el-upload>
216
-        <el-upload
217
-          ref="upload3"
218
-          :limit="1"
219
-          :action="UploadUrl()"
220
-          :headers="headers3"
221
-          :data="filedata3"
222
-          :on-change="beforeUpload3"
223
-          :on-success="handlSuccess3"
224
-          :file-list="fileList3"
225
-          accept=".doc,.docx"
226
-          v-if="updataFlag"
227
-        >
228
-          <el-button slot="trigger" size="small" type="primary"
229
-            >上传调解书</el-button
230
-          >
154
+        <el-upload ref="upload3" :limit="1" :action="UploadUrl()" :headers="headers3" :data="filedata3"
155
+          :on-change="beforeUpload3" :on-success="handlSuccess3" :file-list="fileList3" accept=".doc,.docx"
156
+          v-if="updataFlag">
157
+          <el-button slot="trigger" size="small" type="primary">上传调解书</el-button>
231
         </el-upload>
158
         </el-upload>
232
       </div>
159
       </div>
233
       <div class="list">
160
       <div class="list">
234
         <div class="applicant" v-if="applicantFile.length > 0">
161
         <div class="applicant" v-if="applicantFile.length > 0">
235
           <div>申请人证据</div>
162
           <div>申请人证据</div>
236
-          <div
237
-            style="color: #104fad; cursor: pointer"
238
-            v-for="(item, index) in applicantFile"
239
-            :key="index"
240
-            @click="preview(item, 0)"
241
-          >
163
+          <div style="color: #104fad; cursor: pointer" v-for="(item, index) in applicantFile" :key="index"
164
+            @click="preview(item, 0)">
242
             {{ item.annexName }}
165
             {{ item.annexName }}
243
           </div>
166
           </div>
244
         </div>
167
         </div>
245
         <div class="res" v-if="resFile.length > 0">
168
         <div class="res" v-if="resFile.length > 0">
246
           <div>被申请人证据</div>
169
           <div>被申请人证据</div>
247
-          <div
248
-            style="color: #104fad; cursor: pointer"
249
-            v-for="(item, index) in resFile"
250
-            :key="index"
251
-            @click="preview(item, 0)"
252
-          >
170
+          <div style="color: #104fad; cursor: pointer" v-for="(item, index) in resFile" :key="index"
171
+            @click="preview(item, 0)">
253
             {{ item.annexName }}
172
             {{ item.annexName }}
254
           </div>
173
           </div>
255
         </div>
174
         </div>
256
         <div class="mediate" v-if="mediateFile.length > 0">
175
         <div class="mediate" v-if="mediateFile.length > 0">
257
           <div>调解书</div>
176
           <div>调解书</div>
258
-          <div
259
-            style="color: #104fad; cursor: pointer"
260
-            v-for="(item, index) in mediateFile"
261
-            :key="index"
262
-            @click="preview(item, 1)"
263
-          >
177
+          <div style="color: #104fad; cursor: pointer" v-for="(item, index) in mediateFile" :key="index"
178
+            @click="preview(item, 1)">
264
             {{ item.annexName }}
179
             {{ item.annexName }}
265
           </div>
180
           </div>
266
         </div>
181
         </div>
296
 </template>
211
 </template>
297
 
212
 
298
 <script>
213
 <script>
299
-import { getUsersig, reserveConferenceList,confirmMeetingResult } from "@/api/home";
214
+import { getUsersig, reserveConferenceList, confirmMeetingResult } from "@/api/home";
300
 import {
215
 import {
301
   secretaryRoleByUserId,
216
   secretaryRoleByUserId,
302
   htmlToPDF,
217
   htmlToPDF,
352
       applicantFile: [],
267
       applicantFile: [],
353
       resFile: [],
268
       resFile: [],
354
       mediateFile: [],
269
       mediateFile: [],
355
-      formData:{
356
-        mediaResult:1,
357
-        sealFlag:1
270
+      formData: {
271
+        mediaResult: 1,
272
+        sealFlag: 1
358
       },
273
       },
359
-      caseFlowId:null,
274
+      caseFlowId: null,
360
       headers: {
275
       headers: {
361
         // Authorization: "Bearer " + token,
276
         // Authorization: "Bearer " + token,
362
         Authorization: "",
277
         Authorization: "",
532
         }
447
         }
533
         let token = sessionStorage.getItem("token");
448
         let token = sessionStorage.getItem("token");
534
         window.open(
449
         window.open(
535
-          `http://121.40.189.20:8002/onlyoffice?id=${item.onlyOfficeFileId}&flag=${flag}&token=${token}`,
450
+          // `http://121.40.189.20:8002/onlyoffice?id=${item.onlyOfficeFileId}&flag=${flag}&token=${token}`,
451
+          // "_black"
452
+          `http://localhost:81/onlyoffice?id=${item.onlyOfficeFileId}&flag=${flag}&token=${token}`,
536
           "_black"
453
           "_black"
537
         );
454
         );
538
       } else {
455
       } else {
619
       });
536
       });
620
       this.localStreamAsr.stop();
537
       this.localStreamAsr.stop();
621
       await trtc.exitRoom();
538
       await trtc.exitRoom();
622
-      await trtc.updateLocalVideo({ publish: false });
623
-      await trtc.updateLocalAudio({ publish: false });
539
+      // await trtc.updateLocalVideo({ publish: false });
540
+      // await trtc.updateLocalAudio({ publish: false });
541
+      await trtc.stopLocalVideo();
542
+      await trtc.stopLocalAudio();
624
       await trtc.destroy();
543
       await trtc.destroy();
625
       this.$router.push({
544
       this.$router.push({
626
         name: "Home",
545
         name: "Home",
683
         // })
602
         // })
684
       });
603
       });
685
     },
604
     },
605
+    /**主持人解散房间监听事件 */
606
+    exitRoomAll() {
607
+      trtc.on(TRTC.EVENT.KICKED_OUT, event => {
608
+        console.log(event.reason);
609
+        alert("主持人已经解散会议");
610
+        this.$router.push({
611
+          name: "Home",
612
+        });
613
+        this.userList = [];
614
+      });
615
+    },
686
     // 删除退出会议人员列表
616
     // 删除退出会议人员列表
687
     deletePushVideo() {
617
     deletePushVideo() {
688
       trtc.on(TRTC.EVENT.REMOTE_VIDEO_UNAVAILABLE, (event) => {
618
       trtc.on(TRTC.EVENT.REMOTE_VIDEO_UNAVAILABLE, (event) => {
689
         const streamType = event.streamType;
619
         const streamType = event.streamType;
690
         const userId = event.userId;
620
         const userId = event.userId;
691
         if (streamType == "main") {
621
         if (streamType == "main") {
692
-          if (this.hostId == userId) {
693
-            alert("主持人已经解散会议");
694
-            this.$router.push({
695
-              name: "Home",
696
-            });
697
-            this.userList = [];
698
-            return;
699
-          }
622
+          // if (this.hostId == userId) {
623
+          //   alert("主持人已经解散会议");
624
+          //   this.$router.push({
625
+          //     name: "Home",
626
+          //   });
627
+          //   this.userList = [];
628
+          //   return;
629
+          // }
700
           let deleteIndex = this.userList.indexOf(userId);
630
           let deleteIndex = this.userList.indexOf(userId);
701
           this.userList = this.userList.filter((item) => item !== userId);
631
           this.userList = this.userList.filter((item) => item !== userId);
702
           if (deleteIndex !== -1) {
632
           if (deleteIndex !== -1) {
703
             this.userList.splice(deleteIndex, 1);
633
             this.userList.splice(deleteIndex, 1);
704
           }
634
           }
705
-          if (this.modileFlag) {
706
-            // this.userHeight = getHeight(this.userList);
707
-          } else {
708
-            this.userClassPhone = getWidthPhone(this.userList);
709
-          }
635
+          // if (this.modileFlag) {
636
+          //   // this.userHeight = getHeight(this.userList);
637
+          // } else {
638
+          //   this.userClassPhone = getWidthPhone(this.userList);
639
+          // }
710
           Object.keys(this.asrList).forEach((key) => {
640
           Object.keys(this.asrList).forEach((key) => {
711
             this.asrList[userId].stop();
641
             this.asrList[userId].stop();
712
           });
642
           });
748
         }
678
         }
749
       });
679
       });
750
     },
680
     },
751
-        // 调解
681
+    // 调解
752
     mediationPop() {
682
     mediationPop() {
753
       this.drawerMediatio = true;
683
       this.drawerMediatio = true;
754
       this.selectByIdFn(this.caseId);
684
       this.selectByIdFn(this.caseId);
755
-       setInterval(() => {
685
+      setInterval(() => {
756
         this.selectByIdFn(this.caseId);
686
         this.selectByIdFn(this.caseId);
757
       }, 8000);
687
       }, 8000);
758
       this.selectRoleMenuByCaseIdFn(this.caseId);
688
       this.selectRoleMenuByCaseIdFn(this.caseId);
759
       this.getMenuPermsByUserFn();
689
       this.getMenuPermsByUserFn();
760
     },
690
     },
761
     // 确定会议结果
691
     // 确定会议结果
762
-    determineMeeting(){
692
+    determineMeeting() {
763
       let valueMeeting = {
693
       let valueMeeting = {
764
-        id:this.caseId,
694
+        id: this.caseId,
765
         mediaResult: this.formData.mediaResult,
695
         mediaResult: this.formData.mediaResult,
766
-        sealFlag:this.formData.sealFlag,
767
-        caseFlowId:this.caseFlowId
696
+        sealFlag: this.formData.sealFlag,
697
+        caseFlowId: this.caseFlowId
768
       }
698
       }
769
-      confirmMeetingResult(valueMeeting).then(res=>{
699
+      confirmMeetingResult(valueMeeting).then(res => {
770
         if (res.code == 200) {
700
         if (res.code == 200) {
771
           this.$message({
701
           this.$message({
772
             message: "确定成功",
702
             message: "确定成功",
833
     });
763
     });
834
     this.getPushVideo();
764
     this.getPushVideo();
835
     this.deletePushVideo();
765
     this.deletePushVideo();
766
+    this.exitRoomAll();
836
     try {
767
     try {
837
       await trtc.enterRoom({
768
       await trtc.enterRoom({
838
         roomId: Number(roomId),
769
         roomId: Number(roomId),
898
   width: 100%;
829
   width: 100%;
899
   height: 100vh;
830
   height: 100vh;
900
 }
831
 }
832
+
901
 .content {
833
 .content {
902
   width: 100%;
834
   width: 100%;
903
   height: 90%;
835
   height: 90%;
904
   display: flex;
836
   display: flex;
905
 }
837
 }
838
+
906
 .videoList {
839
 .videoList {
907
   width: 100%;
840
   width: 100%;
908
   height: 100%;
841
   height: 100%;
914
   margin-bottom: 20px;
847
   margin-bottom: 20px;
915
   position: relative;
848
   position: relative;
916
 }
849
 }
850
+
917
 .videoList1 {
851
 .videoList1 {
918
   width: 20%;
852
   width: 20%;
919
   height: 100%;
853
   height: 100%;
925
   margin-bottom: 20px;
859
   margin-bottom: 20px;
926
   position: relative;
860
   position: relative;
927
 }
861
 }
862
+
928
 .txtContent {
863
 .txtContent {
929
   width: 100px;
864
   width: 100px;
930
   height: 50px;
865
   height: 50px;
941
   background: red;
876
   background: red;
942
   border-radius: 20px;
877
   border-radius: 20px;
943
 }
878
 }
879
+
944
 .videoItem1 {
880
 .videoItem1 {
945
   width: 32%;
881
   width: 32%;
946
   height: 32%;
882
   height: 32%;
947
   background: red;
883
   background: red;
948
   border-radius: 20px;
884
   border-radius: 20px;
949
 }
885
 }
886
+
950
 .videoItem3 {
887
 .videoItem3 {
951
   width: 48%;
888
   width: 48%;
952
   height: 100%;
889
   height: 100%;
953
   background: red;
890
   background: red;
954
   border-radius: 20px;
891
   border-radius: 20px;
955
 }
892
 }
893
+
956
 .videoItem2 {
894
 .videoItem2 {
957
   width: 90%;
895
   width: 90%;
958
   height: 25%;
896
   height: 25%;
970
   bottom: 0;
908
   bottom: 0;
971
   z-index: 10;
909
   z-index: 10;
972
 }
910
 }
911
+
973
 .screenShare {
912
 .screenShare {
974
   width: 80%;
913
   width: 80%;
975
   height: 100%;
914
   height: 100%;
976
   background: yellow;
915
   background: yellow;
977
 }
916
 }
917
+
978
 .userName {
918
 .userName {
979
   border-radius: 10px;
919
   border-radius: 10px;
980
   width: 90px;
920
   width: 90px;
988
   z-index: 9;
928
   z-index: 9;
989
   color: #ffffff;
929
   color: #ffffff;
990
 }
930
 }
931
+
991
 .footerList {
932
 .footerList {
992
   width: 100%;
933
   width: 100%;
993
   height: 10%;
934
   height: 10%;
994
   background: green;
935
   background: green;
995
 }
936
 }
937
+
996
 .userNamePhone {
938
 .userNamePhone {
997
   border-radius: 10px;
939
   border-radius: 10px;
998
   min-width: 20%;
940
   min-width: 20%;