Ver código fonte

小程序共享屏幕,小程序页面优化,开关麦克风以及视频

谢科 2 anos atrás
pai
commit
a31c92f3a5
6 arquivos alterados com 11467 adições e 82 exclusões
  1. BIN
      .DS_Store
  2. 0
    6
      .gitignore
  3. 11344
    26
      package-lock.json
  4. 36
    4
      src/views/components/footerPhone.vue
  5. 1
    1
      src/views/components/roomFooter.vue
  6. 86
    45
      src/views/room.vue

BIN
.DS_Store Ver arquivo


+ 0
- 6
.gitignore Ver arquivo

@@ -23,10 +23,4 @@ pnpm-debug.log*
23 23
 *.sln
24 24
 *.sw?
25 25
 node_modules
26
-<<<<<<< HEAD
27
-node_modules
28
-node_modules
29
-node_modules
30
-=======
31
->>>>>>> ce7123d0f78fb925333f45cb0f43791061dc0431
32 26
 /dist

+ 11344
- 26
package-lock.json
Diferenças do arquivo suprimidas por serem muito extensas
Ver arquivo


+ 36
- 4
src/views/components/footerPhone.vue Ver arquivo

@@ -10,11 +10,11 @@
10 10
             <img class="videoImg" src="@/assets/video_on.png" alt="" v-if="videoFlag" @click="videoClickOn" />
11 11
             <img class="videoImg" src="@/assets/video_off.png" alt="" v-else @click="videoClickOff" />
12 12
         </div>
13
-        <div class="sharing">
13
+        <!-- <div class="sharing">
14 14
             <img class="sharImg" src="@/assets/screenShare_on.png" alt="" v-if="sharFlag" @click="sharClickOn" />
15 15
             <img class="sharImg" src="@/assets/screenShare_off.png" alt="" v-else @click="sharClickOff" />
16 16
 
17
-        </div>
17
+        </div> -->
18 18
         <div class="mediationPop">
19 19
             <el-button type="warning" @click="mediationPop">调解</el-button>
20 20
         </div>
@@ -29,6 +29,7 @@
29 29
 import { startVideo, stopVideo, destructionRoom } from '@/api/room.js'
30 30
 export default {
31 31
     name: 'FooterPhone',
32
+    props: ["micFlag", "videoFlag", "sharFlag"],
32 33
     components: {
33 34
 
34 35
     },
@@ -36,7 +37,8 @@ export default {
36 37
         return {
37 38
             roomId: null,
38 39
             taskId: null,
39
-            roleFlag: false
40
+            roleFlag: false,
41
+            caseId:""
40 42
         };
41 43
     },
42 44
     methods: {
@@ -46,6 +48,35 @@ export default {
46 48
                 console.log(res, "解散房间");
47 49
             })
48 50
         },
51
+        /**开启麦克风 */
52
+    micClickOn() {
53
+      this.$emit("micClickOn");
54
+    },
55
+    /**关闭麦克风 */
56
+    micClickOff() {
57
+      this.$emit("micClickOff");
58
+    },
59
+    /**开启摄像头 */
60
+    videoClickOn() {
61
+      this.$emit("videoClickOn");
62
+    },
63
+    /**关闭摄像头 */
64
+    videoClickOff() {
65
+      this.$emit("videoClickOff");
66
+    },
67
+    /**共享屏幕 */
68
+    sharClickOn() {
69
+      this.$emit("sharClickOn");
70
+    },
71
+    /**关闭共享屏幕 */
72
+    sharClickOff() {
73
+      this.sharFlag = true;
74
+      this.$emit("sharClickOff");
75
+    },
76
+    // 弹出调解内容
77
+    mediationPop() {
78
+      this.$emit("mediationPop");
79
+    },
49 80
         exitRoom() {
50 81
             if (this.roleFlag) {
51 82
                 this.stopVideoFn();
@@ -57,7 +88,7 @@ export default {
57 88
         },
58 89
         async startVideoFn() {
59 90
             await startVideo({
60
-                caseId: 12865,
91
+                caseId: this.caseId,
61 92
                 roomId: this.roomId
62 93
             }).then(res => {
63 94
                 this.taskId = res.data.taskId
@@ -73,6 +104,7 @@ export default {
73 104
     async mounted() {
74 105
         this.roomId = this.$route.query.roomId;
75 106
         let roleFlag = this.$route.query.flag;
107
+        this.caseId = this.$route.query.caseId;
76 108
         this.roleFlag = roleFlag || false;
77 109
         if (roleFlag) {
78 110
             await this.startVideoFn();

+ 1
- 1
src/views/components/roomFooter.vue Ver arquivo

@@ -103,7 +103,7 @@ export default {
103 103
     this.roomId = this.$route.query.roomId;
104 104
     this.caseId = this.$route.query.caseId;
105 105
     let roleFlag = this.$route.query.flag;
106
-    this.roleFlag = roleFlag;
106
+    this.roleFlag = roleFlag || false;
107 107
     if (roleFlag) {
108 108
       await this.startVideoFn();
109 109
     }

+ 86
- 45
src/views/room.vue Ver arquivo

@@ -1,6 +1,6 @@
1 1
 <template>
2 2
   <div class="page">
3
-    <div class="iconImg" v-if="!modileFlag && rightType" @click="checkList(1)">
3
+    <div class="iconImg" v-if="!modileFlag && rightType && rightTypeall" @click="checkList(1)">
4 4
       <i class="el-icon-d-arrow-left" style="font-size: 30px;color: aqua;"></i>
5 5
       <!-- <i class="el-icon-d-arrow-right"></i> -->
6 6
     </div>
@@ -21,15 +21,15 @@
21 21
         </div>
22 22
       </div>
23 23
       <div class="footerList">
24
-        <roomFooter @exitRoom="exitRoom" @micClickOn="micClickOn" @micClickOff="micClickOff"
25
-          @videoClickOn="videoClickOn" @videoClickOff="videoClickOff" @sharClickOn="sharClickOn"
26
-          @sharClickOff="sharClickOff" @mediationPop="mediationPop" :roomId="roomId" :micFlag="micFlag"
27
-          :videoFlag="videoFlag" :sharFlag="sharFlag"></roomFooter>
24
+        <roomFooter @exitRoom="exitRoom" @micClickOn="micClickOn" @micClickOff="micClickOff" @videoClickOn="videoClickOn"
25
+          @videoClickOff="videoClickOff" @sharClickOn="sharClickOn" @sharClickOff="sharClickOff"
26
+          @mediationPop="mediationPop" :roomId="roomId" :micFlag="micFlag" :videoFlag="videoFlag" :sharFlag="sharFlag">
27
+        </roomFooter>
28 28
       </div>
29 29
     </div>
30 30
     <div class="roomPhone">
31 31
       <div class="videoPage">
32
-        <div :class="sharingType">
32
+        <div :class="sharingType" id="screenShare">
33 33
         </div>
34 34
         <div :class="bodyPhoneType">
35 35
           <div :class="userClassPhone" id="localStream">
@@ -38,10 +38,16 @@
38 38
           <div :class="userClassPhone" v-for="(item, index) in userList" :key="index" :id="item">
39 39
             <div class="userNamePhone">{{ item }}</div>
40 40
           </div>
41
-          <i class="el-icon-d-arrow-right" style="font-size: 30px;color: aqua;" @click="checkList(2)" v-if="!rightType"></i>
41
+          <i class="el-icon-d-arrow-right" style="font-size: 30px;color: aqua;" @click="checkList(2)"
42
+            v-if="!rightType && rightTypeall"></i>
43
+          <!-- <i class="el-icon-d-arrow-left" style="font-size: 30px;color: aqua;" @click="checkList(2)"
44
+            v-if="!rightType && !rightTypeall"></i> -->
42 45
         </div>
43 46
         <div class="footerPhone">
44
-          <roomFooterPhone @exitRoom="exitRoom"></roomFooterPhone>
47
+          <roomFooterPhone @exitRoom="exitRoom" @micClickOn="micClickOn" @micClickOff="micClickOff"
48
+            @videoClickOn="videoClickOn" @videoClickOff="videoClickOff" @sharClickOn="sharClickOn"
49
+            @sharClickOff="sharClickOff" @mediationPop="mediationPop" :roomId="roomId" :micFlag="micFlag"
50
+            :videoFlag="videoFlag" :sharFlag="sharFlag"></roomFooterPhone>
45 51
         </div>
46 52
       </div>
47 53
       <!-- <div class="header">
@@ -63,7 +69,7 @@
63 69
       <el-button class="updataBtn" @click="updataClick" type="primary" :disabled="!updataFlag">确认修改内容</el-button>
64 70
     </el-drawer>
65 71
     <!-- 调解 -->
66
-    <el-drawer :visible.sync="drawerMediatio" direction="ltr" title="调解内容">
72
+    <el-drawer :visible.sync="drawerMediatio" direction="ltr" title="调解内容" :size="drawerSize">
67 73
       <div style="
68 74
           width: 100%;
69 75
           display: flex;
@@ -87,28 +93,28 @@
87 93
       </div>
88 94
       <div class="list">
89 95
         <div class="applicant" v-if="applicantFile.length > 0">
90
-          <div>申请人证据</div>
96
+          <div style="font-size: 20px;margin-bottom: 10PX;">申请人证据:</div>
91 97
           <div style="color: #104fad; cursor: pointer" v-for="(item, index) in applicantFile" :key="index"
92 98
             @click="preview(item, 0)">
93 99
             {{ item.annexName }}
94 100
           </div>
95 101
         </div>
96 102
         <div class="res" v-if="resFile.length > 0">
97
-          <div>被申请人证据</div>
103
+          <div style="font-size: 20px;margin-bottom: 10PX;">被申请人证据:</div>
98 104
           <div style="color: #104fad; cursor: pointer" v-for="(item, index) in resFile" :key="index"
99 105
             @click="preview(item, 0)">
100 106
             {{ item.annexName }}
101 107
           </div>
102 108
         </div>
103 109
         <div class="mediate" v-if="mediateFile.length > 0">
104
-          <div>调解书</div>
110
+          <div style="font-size: 20px;margin-bottom: 10PX;">调解书:</div>
105 111
           <div style="color: #104fad; cursor: pointer" v-for="(item, index) in mediateFile" :key="index"
106 112
             @click="preview(item, 1)">
107 113
             {{ item.annexName }}
108 114
           </div>
109 115
         </div>
110 116
       </div>
111
-      <div>
117
+      <div v-if="modileFlag && updataFlag">
112 118
         <el-form label-width="100px">
113 119
           <el-col :span="24">
114 120
             <el-form-item label="调解结果:">
@@ -121,7 +127,7 @@
121 127
               </el-radio-group>
122 128
             </el-form-item>
123 129
           </el-col>
124
-          <el-col :span="24">
130
+          <el-col :span="24" v-if="formData.mediaResult == 1"> 
125 131
             <el-form-item label="是否用印申请:">
126 132
               <el-radio-group v-model="formData.sealFlag">
127 133
                 <el-radio :label="1">是</el-radio>
@@ -131,7 +137,7 @@
131 137
           </el-col>
132 138
         </el-form>
133 139
       </div>
134
-      <div>
140
+      <div v-if="modileFlag && updataFlag">
135 141
         <el-button style="width:100%;" type="primary" @click="determineMeeting" :disabled="!updataFlag">确定</el-button>
136 142
       </div>
137 143
     </el-drawer>
@@ -167,7 +173,9 @@ export default {
167 173
   },
168 174
   data() {
169 175
     return {
170
-      rightType:true,
176
+      drawerSize: "30%",
177
+      rightType: false,
178
+      rightTypeall: false,
171 179
       sharingType: "sharing",
172 180
       bodyPhoneType: "bodyPhone",
173 181
       videoList: "videoList",
@@ -175,7 +183,7 @@ export default {
175 183
       resFlag: null,
176 184
       appFlag: null,
177 185
       userClassPhone: "userVideoPhone",
178
-      userList: [1, 2],
186
+      userList: [],
179 187
       userHeight: "100%",
180 188
       userPhoneHeight: "92%",
181 189
       userSign: "",
@@ -253,11 +261,12 @@ export default {
253 261
         this.sharingType = "sharing1";
254 262
         this.bodyPhoneType = "bodyPhone1";
255 263
         this.rightType = false;
264
+        // console.log(this.rightType,this.rightTypeall,"Pppppppppp");
256 265
       } else if (data == 2) {
257
-        console.log("UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUu");
258 266
         this.sharingType = "sharing1";
259 267
         this.bodyPhoneType = "bodyPhone2";
260 268
         this.rightType = true;
269
+        console.log(this.rightType, this.rightTypeall, "Pppppppppp");
261 270
       }
262 271
     },
263 272
     /**点击开启麦克风图标,关闭麦克风 */
@@ -382,28 +391,32 @@ export default {
382 391
       this.selectByIdFn(this.caseId);
383 392
     },
384 393
     preview(item, type) {
385
-      if (item.onlyOfficeFileId) {
386
-        debugger
387
-        // this.$router.push({
388
-        //   path: "/onlyoffice",
389
-        //   query: { id: item.onlyOfficeFileId, flag: flag },
390
-        // });
391
-        let flag = 1;
392
-        if (this.editFlag && type != 0) {
393
-          flag = 1;
394
+      if (this.modileFlag) {
395
+        if (item.onlyOfficeFileId) {
396
+          // this.$router.push({
397
+          //   path: "/onlyoffice",
398
+          //   query: { id: item.onlyOfficeFileId, flag: flag },
399
+          // });
400
+          let flag = 1;
401
+          if (this.editFlag && type != 0) {
402
+            flag = 1;
403
+          } else {
404
+            flag = 0;
405
+          }
406
+          let token = sessionStorage.getItem("token");
407
+          window.open(
408
+            `http://121.40.189.20:9002/onlyoffice?id=${item.onlyOfficeFileId}&flag=${flag}&token=${token}`,
409
+            "_black"
410
+            // `http://localhost:81/onlyoffice?id=${item.onlyOfficeFileId}&flag=${flag}&token=${token}`,
411
+            // "_black"
412
+          );
394 413
         } else {
395
-          flag = 0;
414
+          window.open(window.location.origin + '/tjformal' + item.annexPath, "_black");
396 415
         }
397
-        let token = sessionStorage.getItem("token");
398
-        window.open(
399
-          `http://121.40.189.20:9002/onlyoffice?id=${item.onlyOfficeFileId}&flag=${flag}&token=${token}`,
400
-          "_black"
401
-          // `http://localhost:81/onlyoffice?id=${item.onlyOfficeFileId}&flag=${flag}&token=${token}`,
402
-          // "_black"
403
-        );
404
-      } else {
405
-        window.open(window.location.origin + '/tiaojie' + item.annexPath, "_black");
416
+      }else{
417
+        window.open(window.location.origin + '/tjformal' + item.annexPath, "_black");
406 418
       }
419
+
407 420
     },
408 421
     // 点击提交修改后的内容
409 422
     updataClick() {
@@ -455,6 +468,7 @@ export default {
455 468
     /** 获取证据列表 */
456 469
     selectByIdFn(id) {
457 470
       selectById(id).then((res) => {
471
+        this.formData.mediaResult = res.data.mediaResult || 1;
458 472
         this.caseFlowId = res.data.caseFlowId;
459 473
         this.applicantFile = [];
460 474
         this.resFile = [];
@@ -511,6 +525,11 @@ export default {
511 525
               .then(() => {
512 526
                 this.videoList = "videoList1";
513 527
                 this.videoClass = "videoItem2";
528
+                this.userClassPhone = "userVideoPhone2"
529
+                this.sharingType = "sharing1";
530
+                this.bodyPhoneType = "bodyPhone1";
531
+                this.rightType = false;
532
+                this.rightTypeall = true;
514 533
               });
515 534
           });
516 535
           this.screenShareFlag = true;
@@ -578,14 +597,20 @@ export default {
578 597
           });
579 598
         } else if (streamType == "sub") {
580 599
           this.sharFlag = true;
600
+          this.rightTypeall = false;
581 601
           this.videoList = "videoList";
582 602
           this.screenShareFlag = false;
583
-          if (this.userList.length > 1) {
603
+          this.bodyPhoneType = 'bodyPhone';
604
+          this.sharingType = "sharing"
605
+          if (this.userList.length == 1) {
606
+            this.videoClass = "videoItem3";
607
+            this.userClassPhone = "userVideoPhone1";
608
+          } else if (this.userList.length > 1) {
584 609
             this.videoClass = "videoItem1";
610
+            this.userClassPhone = "userVideoPhone2";
585 611
           } else if (this.userList.length < 1) {
586 612
             this.videoClass = "videoItem";
587
-          } else if (this.userList.length == 1) {
588
-            this.videoClass = "videoItem3";
613
+            this.userClassPhone = "userVideoPhone";
589 614
           }
590 615
         }
591 616
       });
@@ -655,14 +680,26 @@ export default {
655 680
   },
656 681
   watch: {
657 682
     userList(value) {
658
-      if (value.length == 1) {
683
+      if (this.userList.length == 1) {
659 684
         this.videoClass = "videoItem3";
660
-      } else if (value.length > 1) {
685
+        this.userClassPhone = "userVideoPhone1";
686
+      } else if (this.userList.length > 1) {
661 687
         this.videoClass = "videoItem1";
662
-      } else if (value.length < 1) {
688
+        this.userClassPhone = "userVideoPhone2";
689
+      } else if (this.userList.length < 1) {
663 690
         this.videoClass = "videoItem";
691
+        this.userClassPhone = "userVideoPhone";
664 692
       }
665 693
     },
694
+    drawerMediatio(val) {
695
+      if (val) {
696
+        if (this.modileFlag) {
697
+          this.drawerSize = "30%"
698
+        } else {
699
+          this.drawerSize = "75%"
700
+        }
701
+      }
702
+    }
666 703
   },
667 704
   async mounted() {
668 705
     if (this.userList.length == 1) {
@@ -939,8 +976,10 @@ export default {
939 976
   flex-wrap: wrap;
940 977
   align-items: center;
941 978
   overflow-y: scroll;
979
+  background: #353643ba;
942 980
 }
943
-.bodyPhone2{
981
+
982
+.bodyPhone2 {
944 983
   width: 0;
945 984
   height: 0;
946 985
   position: absolute;
@@ -952,6 +991,7 @@ export default {
952 991
   align-items: center;
953 992
   overflow-y: scroll;
954 993
 }
994
+
955 995
 /* 移动端样式 */
956 996
 
957 997
 .bodyVideo {
@@ -1028,7 +1068,8 @@ export default {
1028 1068
   height: 0;
1029 1069
 }
1030 1070
 
1031
-.el-icon-d-arrow-right {
1071
+.el-icon-d-arrow-right,
1072
+.el-icon-d-arrow-left {
1032 1073
   position: absolute;
1033 1074
   left: 0;
1034 1075
   top: 45%;