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

This commit was merged in pull request #6.
This commit is contained in:
2024-05-06 15:44:39 +08:00
committed by Gitea
2 changed files with 105 additions and 131 deletions
+45 -9
View File
@@ -1,10 +1,30 @@
<template> <template>
<div class="roomFooter"> <div class="roomFooter">
<el-button type="danger" @click="exitRoom" v-if="!roleFlag">退出房间</el-button> <!-- <el-button type="danger" @click="exitRoom" v-if="!roleFlag">退出房间</el-button>
<el-button type="danger" @click="exitRoom" v-if="roleFlag">解散房间</el-button> <el-button type="danger" @click="exitRoom" v-if="roleFlag">解散房间</el-button> -->
<div class="mic">
<img class="micImg" src="@/assets/mic_on.png" alt="" v-if="micFlag" @click="micClickOn" />
<img class="micImg" src="@/assets/mic_off.png" alt="" v-else @click="micClickOff" />
</div>
<div class="video">
<img class="videoImg" src="@/assets/video_on.png" alt="" v-if="videoFlag" @click="videoClickOn" />
<img class="videoImg" src="@/assets/video_off.png" alt="" v-else @click="videoClickOff" />
</div>
<div class="sharing">
<img class="sharImg" src="@/assets/screenShare_on.png" alt="" v-if="sharFlag" @click="sharClickOn" />
<img class="sharImg" src="@/assets/screenShare_off.png" alt="" v-else @click="sharClickOff" />
</div>
<div class="mediationPop">
<el-button type="warning" @click="mediationPop">调解</el-button>
</div>
<div class="outRoom">
<el-button type="danger" @click="exitRoom" v-if="!roleFlag">退出</el-button>
<el-button type="danger" @click="exitRoom" v-if="roleFlag">解散</el-button>
</div>
</div> </div>
</template> </template>
<script> <script>
import { startVideo, stopVideo, destructionRoom } from '@/api/room.js' import { startVideo, stopVideo, destructionRoom } from '@/api/room.js'
export default { export default {
@@ -60,16 +80,32 @@ export default {
}, },
}; };
</script> </script>
<style scoped> <style scoped>
.roomFooter { .roomFooter {
width: 100%; width: 100%;
height: 100%; height: 100%;
display: flex; display: flex;
justify-content: space-between;
align-items: center; align-items: center;
flex-direction: row-reverse;
} }
</style>
.mic,
.video,
.sharing
{
cursor: pointer;
width: 10%;
height: 100%;
display: flex;
align-items: center;
justify-content: center;
}
.micImg,
.videoImg,
.sharImg {
width: 40px;
height: 40px;
}
</style>
+60 -122
View File
@@ -1,5 +1,9 @@
<template> <template>
<div class="page"> <div class="page">
<div class="iconImg">
<i class="el-icon-d-arrow-left"></i>
<!-- <i class="el-icon-d-arrow-right"></i> -->
</div>
<div class="roompage" @mouseover="mouseHover" v-if="modileFlag"> <div class="roompage" @mouseover="mouseHover" v-if="modileFlag">
<div class="txtContent"> <div class="txtContent">
<el-tag type="danger" @click="txtContent" v-if="modileFlag">会议内容</el-tag> <el-tag type="danger" @click="txtContent" v-if="modileFlag">会议内容</el-tag>
@@ -24,7 +28,18 @@
</div> </div>
</div> </div>
<div class="roomPhone" v-if="!modileFlag"> <div class="roomPhone" v-if="!modileFlag">
<div class="header"> <div class="bodyPhone">
<div :class="userClassPhone" id="localStream">
<div class="userNamePhone">{{ userId }}</div>
</div>
<div :class="userClassPhone" v-for="(item, index) in userList" :key="index" :id="item">
<div class="userNamePhone">{{ item }}</div>
</div>
</div>
<div class="footerPhone">
<roomFooterPhone @exitRoom="exitRoom"></roomFooterPhone>
</div>
<!-- <div class="header">
<roomFooterPhone @exitRoom="exitRoom"></roomFooterPhone> <roomFooterPhone @exitRoom="exitRoom"></roomFooterPhone>
</div> </div>
<div class="bodyVideo"> <div class="bodyVideo">
@@ -34,102 +49,10 @@
<div :class="userClassPhone" v-for="(item, index) in userList" :key="index" :id="item"> <div :class="userClassPhone" v-for="(item, index) in userList" :key="index" :id="item">
<div class="userNamePhone">{{ item }}</div> <div class="userNamePhone">{{ item }}</div>
</div> </div>
</div> </div> -->
</div> </div>
<!-- 语音转文字弹窗 --> <!-- 语音转文字弹窗 -->
<el-drawer title="会议内容" :visible.sync="textVisible" :modal="false"> <el-drawer title="会议内容" :visible.sync="textVisible" :modal="false">
<!-- <div style="margin-left: 20px; margin-bottom: 10px">
<div
style="
width: 100%;
display: flex;
justify-content: space-around;
margin-bottom: 10px;
"
>
<el-upload
ref="upload"
:limit="1"
:action="UploadUrl()"
:headers="headers"
:data="filedata"
:on-change="beforeUpload"
:on-success="handlSuccess"
:file-list="fileList"
v-if="appFlag"
>
<el-button slot="trigger" size="small" type="primary"
>申请人上传证据</el-button
>
</el-upload>
<el-upload
v-if="resFlag"
ref="upload1"
:limit="1"
:action="UploadUrl()"
:headers="headers1"
:data="filedata1"
:on-change="beforeUpload1"
:on-success="handlSuccess1"
:file-list="fileList1"
>
<el-button slot="trigger" size="small" type="primary"
>被申请人上传证据</el-button
>
</el-upload>
<el-upload
v-if="updataFlag"
ref="upload3"
:limit="1"
:action="UploadUrl()"
:headers="headers3"
:data="filedata3"
:on-change="beforeUpload3"
:on-success="handlSuccess3"
:file-list="fileList3"
accept=".doc,.docx"
>
<el-button slot="trigger" size="small" type="primary"
>上传调解书</el-button
>
</el-upload>
</div>
<div class="list">
<div class="applicant" v-if="applicantFile.length > 0">
<div>申请人证据</div>
<div
style="color: #104fad; cursor: pointer"
v-for="(item, index) in applicantFile"
:key="index"
@click="preview(item, 0)"
>
{{ item.annexName }}
</div>
</div>
<div class="res" v-if="resFile.length > 0">
<div>被申请人证据</div>
<div
style="color: #104fad; cursor: pointer"
v-for="(item, index) in resFile"
:key="index"
@click="preview(item, 0)"
>
{{ item.annexName }}
</div>
</div>
<div class="mediate" v-if="mediateFile.length > 0">
<div>调解书</div>
<div
style="color: #104fad; cursor: pointer"
v-for="(item, index) in mediateFile"
:key="index"
@click="preview(item, 1)"
>
{{ item.annexName }}
</div>
</div>
</div>
</div> -->
<quill-editor ref="myQuillEditor" v-model="contentValue" :options="editorOption" @blur="onEditorBlur($event)" <quill-editor ref="myQuillEditor" v-model="contentValue" :options="editorOption" @blur="onEditorBlur($event)"
@focus="onEditorFocus($event)" @ready="onEditorReady($event)"></quill-editor> @focus="onEditorFocus($event)" @ready="onEditorReady($event)"></quill-editor>
<el-button class="updataBtn" @click="updataClick" type="primary" :disabled="!updataFlag">确认修改内容</el-button> <el-button class="updataBtn" @click="updataClick" type="primary" :disabled="!updataFlag">确认修改内容</el-button>
@@ -244,7 +167,7 @@ export default {
resFlag: null, resFlag: null,
appFlag: null, appFlag: null,
userClassPhone: "userVideoPhone", userClassPhone: "userVideoPhone",
userList: [], userList: [1,2,3,4,5],
userHeight: "100%", userHeight: "100%",
userPhoneHeight: "92%", userPhoneHeight: "92%",
userSign: "", userSign: "",
@@ -299,7 +222,7 @@ export default {
filedata3: { filedata3: {
annexType: 7, annexType: 7,
officeFlag: 0, officeFlag: 0,
isMediaBook:1, isMediaBook: 1,
caseId: null, caseId: null,
}, },
fileList3: [], fileList3: [],
@@ -311,7 +234,7 @@ export default {
}, },
methods: { methods: {
UploadUrl() { UploadUrl() {
return window.location.origin + "/tiaojie/video/upload"; return window.location.origin + "/tjformal/video/upload";
}, },
/**点击开启麦克风图标,关闭麦克风 */ /**点击开启麦克风图标,关闭麦克风 */
micClickOn() { micClickOn() {
@@ -621,24 +544,11 @@ export default {
const streamType = event.streamType; const streamType = event.streamType;
const userId = event.userId; const userId = event.userId;
if (streamType == "main") { if (streamType == "main") {
// if (this.hostId == userId) {
// alert("主持人已经解散会议");
// this.$router.push({
// name: "Home",
// });
// this.userList = [];
// return;
// }
let deleteIndex = this.userList.indexOf(userId); let deleteIndex = this.userList.indexOf(userId);
this.userList = this.userList.filter((item) => item !== userId); this.userList = this.userList.filter((item) => item !== userId);
if (deleteIndex !== -1) { if (deleteIndex !== -1) {
this.userList.splice(deleteIndex, 1); this.userList.splice(deleteIndex, 1);
} }
// if (this.modileFlag) {
// // this.userHeight = getHeight(this.userList);
// } else {
// this.userClassPhone = getWidthPhone(this.userList);
// }
Object.keys(this.asrList).forEach((key) => { Object.keys(this.asrList).forEach((key) => {
this.asrList[userId].stop(); this.asrList[userId].stop();
}); });
@@ -733,10 +643,13 @@ export default {
async mounted() { async mounted() {
if (this.userList.length == 1) { if (this.userList.length == 1) {
this.videoClass = "videoItem3"; this.videoClass = "videoItem3";
this.userClassPhone = "userVideoPhone1";
} else if (this.userList.length > 1) { } else if (this.userList.length > 1) {
this.videoClass = "videoItem1"; this.videoClass = "videoItem1";
this.userClassPhone = "userVideoPhone2";
} else if (this.userList.length < 1) { } else if (this.userList.length < 1) {
this.videoClass = "videoItem"; this.videoClass = "videoItem";
this.userClassPhone = "userVideoPhone";
} }
// 判断设备类型 // 判断设备类型
this.modileFlag = getModile(); this.modileFlag = getModile();
@@ -827,6 +740,13 @@ export default {
</script> </script>
<style scoped> <style scoped>
.iconImg{
position: fixed;
top: 50%;
height: 40px;
width: 40px;
/* right: 10px; */
}
.roompage { .roompage {
width: 100%; width: 100%;
height: 100vh; height: 100vh;
@@ -952,19 +872,36 @@ export default {
color: #ffffff; color: #ffffff;
} }
.header { /* .header {
width: 100%; width: 100%;
height: 8%; height: 8%;
background-color: #716c6c; background-color: #716c6c;
display: flex; display: flex;
flex-direction: row-reverse; flex-direction: row-reverse;
align-items: center; align-items: center;
} } */
/* 移动端样式 */
.roomPhone { .roomPhone {
width: 100%; width: 100%;
height: 100vh; height: 100vh;
background-color: yellow;
} }
.footerPhone{
width: 100%;
height: 8%;
background-color: greenyellow;
}
.bodyPhone{
width: 100%;
height: 92%;
display: flex;
justify-content: space-around;
flex-wrap: wrap;
align-items: center;
overflow-y: scroll;
background-color: rebeccapurple;
}
/* 移动端样式 */
.bodyVideo { .bodyVideo {
width: 100%; width: 100%;
@@ -980,15 +917,16 @@ export default {
background-color: yellow; background-color: yellow;
position: relative; position: relative;
} }
.userVideoPhone1{
.userVideoPhone1 { width: 100%;
width: 50%; height: 49%;
flex-basis: calc(33.333% - 3px); background-color: rgb(43, 0, 255);
max-width: calc(33.333% - 3px); position: relative;
height: 200px; }
/* height: 0; */ .userVideoPhone2{
/* padding-bottom: calc(33.333% - 3px); */ width: 150px;
margin-bottom: 3px; height: 150px;
background-color: rgb(43, 0, 255);
position: relative; position: relative;
} }