仲裁视频会议H5

3c6fb47a.json 35KB

1
  1. [{"C:\\调解\\调解视频会议h5\\Arbitrate-FrontendH5\\src\\main.js":"1","C:\\调解\\调解视频会议h5\\Arbitrate-FrontendH5\\src\\App.vue":"2","C:\\调解\\调解视频会议h5\\Arbitrate-FrontendH5\\src\\router\\index.js":"3","C:\\调解\\调解视频会议h5\\Arbitrate-FrontendH5\\src\\views\\room.vue":"4","C:\\调解\\调解视频会议h5\\Arbitrate-FrontendH5\\src\\views\\home.vue":"5","C:\\调解\\调解视频会议h5\\Arbitrate-FrontendH5\\src\\views\\components\\footerPhone.vue":"6","C:\\调解\\调解视频会议h5\\Arbitrate-FrontendH5\\src\\views\\components\\roomFooter.vue":"7","C:\\调解\\调解视频会议h5\\Arbitrate-FrontendH5\\src\\components\\homepc.vue":"8","C:\\调解\\调解视频会议h5\\Arbitrate-FrontendH5\\src\\components\\homeh5.vue":"9","C:\\调解\\调解视频会议h5\\Arbitrate-FrontendH5\\src\\utils\\asr.esm.js":"10","C:\\调解\\调解视频会议h5\\Arbitrate-FrontendH5\\src\\utils\\utils.js":"11","C:\\调解\\调解视频会议h5\\Arbitrate-FrontendH5\\src\\api\\home.js":"12","C:\\调解\\调解视频会议h5\\Arbitrate-FrontendH5\\src\\api\\room.js":"13","C:\\调解\\调解视频会议h5\\Arbitrate-FrontendH5\\src\\utils\\speechrecognizer.js":"14","C:\\调解\\调解视频会议h5\\Arbitrate-FrontendH5\\src\\utils\\request.js":"15","C:\\调解\\调解视频会议h5\\Arbitrate-FrontendH5\\src\\utils\\cryptojs.js":"16"},{"size":340,"mtime":1701072368000,"results":"17","hashOfConfig":"18"},{"size":350,"mtime":1700034061000,"results":"19","hashOfConfig":"18"},{"size":582,"mtime":1700806690000,"results":"20","hashOfConfig":"18"},{"size":14060,"mtime":1701344688000,"results":"21","hashOfConfig":"22"},{"size":781,"mtime":1700897328000,"results":"23","hashOfConfig":"22"},{"size":1855,"mtime":1700902348000,"results":"24","hashOfConfig":"22"},{"size":2343,"mtime":1700896362000,"results":"25","hashOfConfig":"22"},{"size":3473,"mtime":1701848066000,"results":"26","hashOfConfig":"22"},{"size":3263,"mtime":1700880516000,"results":"27","hashOfConfig":"22"},{"size":6976,"mtime":1701183825000,"results":"28","hashOfConfig":"18"},{"size":1561,"mtime":1700896753000,"results":"29","hashOfConfig":"18"},{"size":593,"mtime":1705548480773,"results":"30","hashOfConfig":"18"},{"size":844,"mtime":1705548489731,"results":"31","hashOfConfig":"18"},{"size":9473,"mtime":1701072265000,"results":"32","hashOfConfig":"18"},{"size":1488,"mtime":1700544850000,"results":"33","hashOfConfig":"18"},{"size":6898,"mtime":1701072194000,"results":"34","hashOfConfig":"18"},{"filePath":"35","messages":"36","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},"1t2yjze",{"filePath":"37","messages":"38","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"39","messages":"40","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"41","messages":"42","errorCount":1,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":"43","usedDeprecatedRules":"44"},"1eefyjj",{"filePath":"45","messages":"46","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"44"},{"filePath":"47","messages":"48","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"44"},{"filePath":"49","messages":"50","errorCount":1,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":"51","usedDeprecatedRules":"44"},{"filePath":"52","messages":"53","errorCount":1,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":"54","usedDeprecatedRules":"44"},{"filePath":"55","messages":"56","errorCount":1,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":"57","usedDeprecatedRules":"44"},{"filePath":"58","messages":"59","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"60","messages":"61","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"62","messages":"63","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"64","messages":"65","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"66","messages":"67","errorCount":16,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":1,"fixableWarningCount":0,"source":null},{"filePath":"68","messages":"69","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"70","messages":"71","errorCount":13,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},"C:\\调解\\调解视频会议h5\\Arbitrate-FrontendH5\\src\\main.js",[],"C:\\调解\\调解视频会议h5\\Arbitrate-FrontendH5\\src\\App.vue",[],"C:\\调解\\调解视频会议h5\\Arbitrate-FrontendH5\\src\\router\\index.js",[],"C:\\调解\\调解视频会议h5\\Arbitrate-FrontendH5\\src\\views\\room.vue",["72"],"<template>\n <div class=\"page\">\n <div class=\"roompage\" @mouseover=\"mouseHover\" v-if=\"modileFlag\">\n <div class=\"txtContent\">\n <el-tag type=\"danger\" @click=\"txtContent\">会议内容</el-tag>\n </div>\n <div :class=\"userClass\" :style=\"{ height: userHeight }\" id=\"localStream\">\n <div class=\"userName\">{{ userId }}</div>\n </div>\n <div :class=\"userClass\" :style=\"{ height: userHeight }\" v-for=\"(item, index) in userList\" :key=\"index\"\n :id=\"item\">\n <div class=\"userName\">{{ item }}</div>\n </div>\n <div class=\"footer\" v-show=\"showFlag\">\n <roomFooter @exitRoom=\"exitRoom\" :roomId=\"roomId\"></roomFooter>\n </div>\n </div>\n <div class=\"roomPhone\" v-if=\"!modileFlag\">\n <div class=\"header\">\n <roomFooterPhone @exitRoom=\"exitRoom\"></roomFooterPhone>\n </div>\n <div class=\"bodyVideo\">\n <div :class=\"userClassPhone\" id=\"localStream\">\n <div class=\"userNamePhone\">{{ userId }}</div>\n </div>\n <div :class=\"userClassPhone\" v-for=\"(item, index) in userList\" :key=\"index\" :id=\"item\">\n <div class=\"userNamePhone\">{{ item }}</div>\n </div>\n </div>\n </div>\n <!-- 语音转文字弹窗 -->\n <el-drawer title=\"会议内容\" :visible.sync=\"textVisible\" :modal=\"false\">\n <quill-editor ref=\"myQuillEditor\" v-model=\"contentValue\" :options=\"editorOption\" @blur=\"onEditorBlur($event)\"\n @focus=\"onEditorFocus($event)\" @ready=\"onEditorReady($event)\"></quill-editor>\n <el-button class=\"updataBtn\" @click=\"updataClick\" type=\"primary\" :disabled=\"!updataFlag\">确认修改内容</el-button>\n </el-drawer>\n </div>\n</template>\n \n<script>\nimport { getUsersig, reserveConferenceList } from '@/api/home';\nimport { secretaryRoleByUserId, htmlToPDF } from '@/api/room'\nimport { getWidth, getHeight, getWidthPhone, getModile } from \"@/utils/utils\";\nimport roomFooter from './components/roomFooter.vue';\nimport roomFooterPhone from \"./components/footerPhone.vue\";\nimport ASR from '../utils/asr.esm.js'\nimport TRTC from 'trtc-sdk-v5';\nlet trtc = null;\nimport 'quill/dist/quill.core.css'\nimport 'quill/dist/quill.snow.css'\nimport 'quill/dist/quill.bubble.css'\nimport { quillEditor } from 'vue-quill-editor'\nexport default {\n name: 'App',\n components: {\n roomFooter,\n roomFooterPhone,\n quillEditor\n },\n data() {\n return {\n userClass: \"userVideo5\",\n userClassPhone: \"userVideoPhone\",\n userList: [],\n userHeight: '100%',\n userPhoneHeight: '92%',\n userSign: \"\",\n roomId: \"\",\n userId: null,\n id: null,\n showFlag: false,\n modileFlag: false,\n localStreamAsr: null,\n contentValue: '',\n textVisible: false,\n editorOption: {\n // Some Quill options...\n },\n asrList: {},\n updataFlag: true,\n };\n },\n methods: {\n // 点击提交修改后的内容\n updataClick() {\n this.contentValue = this.contentValue.replace(/<br>/g,\"\");\n htmlToPDF({\n caseId: this.caseId,\n htmlContent: this.contentValue\n }).then(res => {\n if (res.code == 200) {\n this.$message({\n message: \"提交修改成功\",\n type: 'success'\n })\n }else{\n this.$message({\n message: res.msg,\n type: 'error'\n })\n }\n })\n },\n onEditorBlur(quill) {\n console.log('editor blur!', this.content, quill)\n },\n onEditorFocus(quill) {\n if (!this.updataFlag) {\n quill.enable(false)\n } else {\n quill.enable(true)\n }\n console.log('editor focus!', quill)\n },\n onEditorReady(quill) {\n console.log('editor ready!', quill)\n },\n onEditorChange({ quill, html, text }) {\n console.log('editor change!', quill, html, text)\n this.content = html\n },\n // 点击显示修改的文本框\n txtContent() {\n this.textVisible = true;\n },\n // 鼠标滑过显示操作栏\n mouseHover() {\n this.showFlag = true;\n setTimeout(() => {\n this.showFlag = false;\n }, 4000)\n },\n async exitRoom() {\n // // 关闭识别\n Object.keys(this.asrList).forEach(key => {\n this.asrList[key].stop();\n })\n this.localStreamAsr.stop();\n await trtc.exitRoom();\n await trtc.updateLocalVideo({ publish: false });\n await trtc.updateLocalAudio({ publish: false });\n await trtc.destroy();\n this.$router.push({\n name: \"Home\"\n })\n },\n // 获取拉流信息\n getPushVideo() {\n trtc.on(TRTC.EVENT.REMOTE_VIDEO_AVAILABLE, event => {\n const userId = event.userId;\n const streamType = event.streamType;\n this.userList.push(userId);\n setTimeout(() => {\n let aoido = trtc.getAudioTrack(userId)\n this.asrList[this.userList[this.userList.length - 1]] = new ASR({\n secretKey: 'INDrIXcT8YmomZBcsy0oNirnU0LTN4X7',\n secretId: 'AKID3xfHgroY4MQHvLXUXMwIQL1UjmbBX1Tv',\n appId: 1304001529,\n engine_model_type: '16k_zh',\n voice_format: 1,\n needvad: 1,\n audioTrack: aoido,\n })\n this.asrList[this.userList[this.userList.length - 1]].start();\n // 开始识别\n this.asrList[this.userList[this.userList.length - 1]].OnRecognitionStart = (res) => {\n console.log('远端流:开始识别', res);\n };\n this.asrList[this.userList[this.userList.length - 1]].OnError = (res) => {\n console.log('远端流:识别失败', res);\n };\n // 一句话结束\n this.asrList[this.userList[this.userList.length - 1]].OnSentenceEnd = (res) => {\n console.log('远端流:一句话结束', res);\n this.contentValue = this.contentValue + `<h2>${userId}</h2>` + `<span>${res.result.voice_text_str}</span>`;\n };\n }, 2000);\n\n if (this.modileFlag) {\n this.userClass = getWidth(this.userList);\n this.userHeight = getHeight(this.userList);\n } else {\n this.userClassPhone = getWidthPhone(this.userList);\n }\n setTimeout(() => {\n trtc.startRemoteVideo({ userId, streamType, view: `${userId}` })\n })\n\n\n // })\n })\n },\n // 删除退出会议人员列表\n deletePushVideo() {\n trtc.on(TRTC.EVENT.REMOTE_VIDEO_UNAVAILABLE, event => {\n const userId = event.userId;\n if (this.hostId == userId) {\n alert('主持人已经解散会议')\n this.$router.push({\n name: 'Home'\n })\n this.userList = [];\n return\n }\n let deleteIndex = this.userList.indexOf(userId);\n this.userList = this.userList.filter(item => item !== userId);\n if (deleteIndex !== -1) {\n this.userList.splice(deleteIndex, 1)\n }\n if (this.modileFlag) {\n this.userClass = getWidth(this.userList);\n this.userHeight = getHeight(this.userList);\n } else {\n this.userClassPhone = getWidthPhone(this.userList);\n }\n Object.keys(this.asrList).forEach(key => {\n this.asrList[userId].stop();\n })\n })\n },\n // 根据caseId查询房间相关信息\n reserveConferenceListFn(data) {\n reserveConferenceList(data).then(res => {\n this.hostId = res.data[0].userName;\n })\n },\n // 根据userid查询是否是秘书角色\n secretaryRoleByUserIdFn(data) {\n secretaryRoleByUserId(data).then(res => {\n console.log(res.data.isSecretaryRole, 'kkkkkkkkkkkkkkk');\n this.updataFlag = res.data.isSecretaryRole;\n })\n }\n },\n computed: {\n editor() {\n return this.$refs.myQuillEditor.quill\n }\n },\n async mounted() {\n // 判断设备类型\n this.modileFlag = getModile();\n let roomId = this.$route.query.roomId;\n this.roomId = this.$route.query.roomId;\n let userId = this.$route.query.userId;\n this.userId = this.$route.query.userId;\n this.caseId = this.$route.query.caseId;\n this.id = this.$route.query.id;\n this.secretaryRoleByUserIdFn(this.id)\n // 获取主持人的userId\n this.reserveConferenceListFn(this.caseId)\n const sdkAppId = 1600011167;\n // 获取usersign\n await getUsersig(userId).then(res => {\n this.userSign = res.msg;\n })\n this.getPushVideo();\n this.deletePushVideo();\n try {\n await trtc.enterRoom({ roomId: Number(roomId), scene: 'rtc', sdkAppId, userId, userSig: this.userSign });\n await trtc.startLocalVideo({\n view: document.getElementById('localStream'), // 在 DOM 中的 elementId 为 localStream 的标签上预览视频。\n });\n await trtc.startLocalAudio();\n console.log('进房成功');\n this.$message({\n message: \"进房成功\",\n type: 'success'\n })\n } catch (error) {\n console.error('进房失败 ' + error);\n this.$message({\n message: \"进房失败\",\n type: 'error'\n });\n this.$router.push({\n name: 'Home'\n })\n }\n this.localStreamAsr = new ASR({\n secretKey: 'INDrIXcT8YmomZBcsy0oNirnU0LTN4X7',\n secretId: 'AKID3xfHgroY4MQHvLXUXMwIQL1UjmbBX1Tv',\n appId: 1304001529,\n engine_model_type: '16k_zh',\n voice_format: 1,\n needvad: 1,\n audioTrack: trtc.getAudioTrack(),\n });\n console.log(trtc.getAudioTrack('zhongcaibai'),);\n this.localStreamAsr.start();\n // 开始识别\n this.localStreamAsr.OnRecognitionStart = (res) => {\n console.log('本地流:开始识别', res);\n };\n this.localStreamAsr.OnError = (res) => {\n console.log('本地流:识别失败', res);\n };\n // 一句话结束\n this.localStreamAsr.OnSentenceEnd = (res) => {\n console.log('本地流:一句话结束', res);\n // this.contentValue = `<h2>${this.userId}</h2>` + `<span>${res.result.voice_text_str}</span>`;\n this.contentValue = this.contentValue + `<h2>${this.userId}</h2>` + `<span>${res.result.voice_text_str}</span>`;\n };\n },\n created() {\n trtc = TRTC.create();\n },\n};\n</script>\n \n<style scoped>\n.roompage {\n width: 100%;\n height: 100vh;\n display: flex;\n align-items: center;\n justify-content: space-around;\n flex-wrap: wrap;\n position: relative;\n}\n\n.txtContent {\n width: 100px;\n height: 50px;\n position: absolute;\n right: 5px;\n top: 20px;\n z-index: 10;\n cursor: pointer;\n}\n\n.userVideo,\n.userVideo1,\n.userVideo2,\n.userVideo3,\n.userVideo4,\n.userVideo5 {\n position: relative;\n}\n\n.userVideo5 {\n width: 100%;\n}\n\n.userVideo {\n width: 48%;\n}\n\n.userVideo1 {\n width: 33%;\n}\n\n.userVideo2 {\n width: 33%;\n}\n\n.userVideo3 {\n width: 33%;\n}\n\n.userVideo4 {\n width: 100%;\n}\n\n.footer {\n width: 100%;\n height: 10%;\n background: rgb(46 43 43 / 90%);\n position: absolute;\n bottom: 0;\n z-index: 10;\n}\n\n.userName {\n border-radius: 10px;\n width: 90px;\n height: 40px;\n text-align: center;\n line-height: 40px;\n background-color: black;\n position: absolute;\n right: 0;\n bottom: 0;\n z-index: 9;\n color: #ffffff;\n}\n\n.userNamePhone {\n border-radius: 10px;\n min-width: 20%;\n height: 30px;\n line-height: 30px;\n text-align: center;\n background-color: black;\n font-size: 12px;\n position: absolute;\n right: 0;\n bottom: 0;\n z-index: 9;\n color: #ffffff;\n}\n\n.header {\n width: 100%;\n height: 8%;\n background-color: #716c6c;\n display: flex;\n flex-direction: row-reverse;\n align-items: center;\n}\n\n.roomPhone {\n width: 100%;\n height: 100vh;\n}\n\n.bodyVideo {\n width: 100%;\n height: 92%;\n display: flex;\n flex-wrap: wrap;\n /* justify-content: space-between; */\n}\n\n.userVideoPhone {\n width: 100%;\n height: 100%;\n background-color: yellow;\n position: relative;\n}\n\n.userVideoPhone1 {\n width: 50%;\n flex-basis: calc(33.333% - 3px);\n max-width: calc(33.333% - 3px);\n height: 200px;\n /* height: 0; */\n /* padding-bottom: calc(33.333% - 3px); */\n margin-bottom: 3px;\n position: relative;\n}\n\n.quill-editor {\n height: 70%;\n}\n\n.updataBtn {\n width: 100%;\n position: absolute;\n bottom: 8px;\n}\n</style>\n \n \n ",[],"C:\\调解\\调解视频会议h5\\Arbitrate-FrontendH5\\src\\views\\home.vue",[],"C:\\调解\\调解视频会议h5\\Arbitrate-FrontendH5\\src\\views\\components\\footerPhone.vue",[],"C:\\调解\\调解视频会议h5\\Arbitrate-FrontendH5\\src\\views\\components\\roomFooter.vue",["73"],"<template>\n <div class=\"roomFooter\">\n <div class=\"outRoom\">\n <el-button type=\"danger\" @click=\"exitRoom\" v-if=\"!roleFlag\">退出房间</el-button>\n <el-button type=\"danger\" @click=\"exitRoom\" v-if=\"roleFlag\">解散房间</el-button>\n </div>\n </div>\n</template>\n \n<script>\nimport { startVideo, stopVideo, destructionRoom } from '@/api/room.js'\nexport default {\n name: 'Footer',\n // props: [\n // \"roomId\"\n // ],\n components: {\n\n },\n data() {\n return {\n roomId: null,\n taskId: null,\n roleFlag: false\n };\n },\n methods: {\n // 解散房间\n destructionRoomFn(data) {\n destructionRoom(data).then(res => {\n console.log(res, \"解散房间\");\n })\n },\n exitRoom() {\n if (this.roleFlag) {\n this.stopVideoFn();\n this.destructionRoomFn({ roomId: this.roomId })\n this.$emit('exitRoom');\n } else {\n this.$emit('exitRoom');\n }\n },\n async startVideoFn() {\n await startVideo({\n caseId: 12865,\n roomId: this.roomId\n }).then(res => {\n this.taskId = res.data.taskId\n console.log(res.data.taskId, \"pppppp\");\n })\n },\n stopVideoFn() {\n stopVideo(this.taskId).then(res => {\n console.log(res, \"KKKKKK\");\n })\n },\n },\n async mounted() {\n this.roomId = this.$route.query.roomId;\n let roleFlag = this.$route.query.flag;\n this.roleFlag = roleFlag;\n if (roleFlag) {\n await this.startVideoFn();\n }\n // setTimeout(() => {\n // console.log(this.roomId, \"房间号房间哈房间号房间哈房间号\");\n // });\n },\n};\n</script>\n \n<style scoped>\n.roomFooter {\n width: 100%;\n height: 100%;\n display: flex;\n flex-direction: row-reverse;\n}\n\n.mic,\n.video,\n.record,\n.outRoom {\n cursor: pointer;\n width: 10%;\n height: 100%;\n display: flex;\n align-items: center;\n justify-content: center;\n}\n\n.iconImg {\n width: 30%;\n height: 60%;\n}\n\n.title {\n color: aliceblue;\n}\n\n.empty {\n width: 60%;\n height: 100%;\n}\n</style>\n \n \n ","C:\\调解\\调解视频会议h5\\Arbitrate-FrontendH5\\src\\components\\homepc.vue",["74"],"<template>\n <div class=\"homepage\">\n <div id=\"video\">\n\n </div>\n <div class=\"enterRoom\">\n <div class=\"title\">\n 仲裁会议室\n </div>\n <div class=\"enterForm\">\n <el-form :model=\"enterRoomFrom\" ref=\"enterRoomFrom\">\n <el-form-item>\n <el-input placeholder=\"请输入房间号\" v-model=\"enterRoomFrom.roomId\">\n <template slot=\"append\"><el-button type=\"primary\" @click=\"enterRoom\"\n icon=\"el-icon-right\">进入</el-button></template></el-input>\n </el-form-item>\n </el-form>\n </div>\n </div>\n </div>\n</template>\n \n<script>\nimport { reserveConferenceList } from '@/api/home.js'\nimport TRTC from 'trtc-sdk-v5';\nlet trtc = null;\nexport default {\n name: 'App',\n data() {\n return {\n formLabelAlign: {},\n enterRoomFrom: {},\n trtc: null,\n userId: null,\n userCode: null,\n caseId: null,\n roleFlag: false\n };\n },\n methods: {\n async enterRoom() {\n // if (this.roomId != this.enterRoomFrom.roomId) {\n // this.$message({\n // message: \"房间号不是对应案件的房间号\",\n // type: 'error'\n // });\n // return\n // }\n this.$router.push({\n name: 'Room',\n query: {\n userId: this.userId,\n roomId: this.roomId,\n flag: this.roleFlag,\n caseId: this.caseId,\n id: this.userCode\n }\n })\n },\n submitRoom() {\n this.$refs[\"formLabelAlign\"].validate((valid) => {\n\n })\n },\n // 根据案件id查询主持人信息\n async reserveConferenceListFn(data) {\n await reserveConferenceList(data).then(res => {\n if (this.userCode == res.data[0].userId) {\n this.roleFlag = true;\n } else {\n this.roleFlag = false;\n }\n })\n }\n },\n async mounted() {\n let routeParams = this.$route.query;\n this.userId = routeParams.name;\n this.roomId = routeParams.roomId;\n this.userCode = routeParams.userId;\n this.caseId = routeParams.id;\n if (this.caseId) {\n await this.reserveConferenceListFn(this.caseId);\n await this.enterRoom()\n }\n trtc = TRTC.create()\n const config = {\n view: document.getElementById('video'),\n publish: false\n }\n await trtc.startLocalVideo(config);\n },\n};\n</script>\n \n<style scoped>\n.homepage {\n width: 100%;\n height: 100vh;\n background-color: #302e2e;\n display: flex;\n align-items: center;\n justify-content: space-around;\n}\n\n#video {\n width: 40%;\n height: 50%;\n}\n\n.enterRoom {\n width: 20%;\n height: 50%;\n background-color: #1c1b1b;\n}\n\n.reservation {\n width: 20%;\n height: 50%;\n background-color: #1c1b1b;\n}\n\n.title {\n width: 100%;\n text-align: center;\n color: #3f1ab7;\n line-height: 30px;\n font-size: 18px;\n margin-bottom: 20px;\n}\n\n.enterForm {\n width: 100%;\n display: flex;\n justify-content: center;\n}\n</style>\n \n \n ","C:\\调解\\调解视频会议h5\\Arbitrate-FrontendH5\\src\\components\\homeh5.vue",["75"],"<template>\n <div class=\"homepage\">\n <div class=\"title\">\n 仲裁会议室\n </div>\n <div id=\"video\">\n\n </div>\n <div class=\"enterRoom\">\n <el-form :model=\"enterRoomFrom\" ref=\"enterRoomFrom\">\n <el-form-item>\n <el-input placeholder=\"请输入房间号\" v-model=\"enterRoomFrom.roomId\">\n <template slot=\"append\"><el-button type=\"primary\" @click=\"enterRoom\"\n icon=\"el-icon-right\">进入</el-button></template></el-input>\n </el-form-item>\n </el-form>\n </div>\n </div>\n</template>\n \n<script>\nimport { reserveConferenceList } from '@/api/home.js'\nimport TRTC from 'trtc-sdk-v5';\nlet trtc = null;\nexport default {\n name: 'App',\n data() {\n return {\n formLabelAlign: {},\n enterRoomFrom: {},\n trtc: null,\n userId: null,\n userCode: null,\n caseId: null,\n roleFlag: false\n };\n },\n methods: {\n async enterRoom() {\n if (this.roomId != this.enterRoomFrom.roomId) {\n this.$message({\n message: \"房间号不是对应案件的房间号\",\n type: 'error'\n });\n return\n }\n this.$router.push({\n name: 'Room',\n query: {\n userId: this.userId,\n roomId: this.enterRoomFrom.roomId,\n flag: this.roleFlag,\n caseId: this.caseId\n }\n })\n },\n submitRoom() {\n this.$refs[\"formLabelAlign\"].validate((valid) => {\n\n })\n },\n // 根据案件id查询主持人信息\n reserveConferenceListFn(data) {\n reserveConferenceList(data).then(res => {\n if (this.userCode == res.data[0].userId) {\n this.roleFlag = true;\n } else {\n this.roleFlag = false;\n }\n })\n }\n },\n async mounted() {\n let routeParams = this.$route.query;\n this.userId = routeParams.name;\n this.roomId = routeParams.roomId;\n this.userCode = routeParams.userId;\n this.caseId = routeParams.id;\n if (this.caseId) {\n this.reserveConferenceListFn(this.caseId);\n }\n trtc = TRTC.create()\n const config = {\n view: document.getElementById('video'),\n publish: false\n }\n await trtc.startLocalVideo(config);\n },\n};\n</script>\n \n<style scoped>\n.homepage {\n width: 100%;\n height: 100vh;\n background-color: #302e2e;\n display: flex;\n flex-direction: column;\n align-items: center;\n}\n\n#video {\n width: 90%;\n height: 50%;\n}\n\n.enterRoom {\n margin-top: 30px;\n width: 90%;\n height: 10%;\n}\n\n.reservation {\n width: 20%;\n height: 50%;\n background-color: #1c1b1b;\n}\n\n.title {\n width: 100%;\n text-align: center;\n color: #3f1ab7;\n line-height: 30px;\n font-size: 18px;\n margin-bottom: 20px;\n}\n\n.enterForm {\n width: 100%;\n display: flex;\n justify-content: center;\n}\n</style>\n \n \n ","C:\\调解\\调解视频会议h5\\Arbitrate-FrontendH5\\src\\utils\\asr.esm.js",[],"C:\\调解\\调解视频会议h5\\Arbitrate-FrontendH5\\src\\utils\\utils.js",[],"C:\\调解\\调解视频会议h5\\Arbitrate-FrontendH5\\src\\api\\home.js",[],"C:\\调解\\调解视频会议h5\\Arbitrate-FrontendH5\\src\\api\\room.js",[],"C:\\调解\\调解视频会议h5\\Arbitrate-FrontendH5\\src\\utils\\speechrecognizer.js",["76","77","78","79","80","81","82","83","84","85","86","87","88","89","90","91"],"C:\\调解\\调解视频会议h5\\Arbitrate-FrontendH5\\src\\utils\\request.js",[],"C:\\调解\\调解视频会议h5\\Arbitrate-FrontendH5\\src\\utils\\cryptojs.js",["92","93","94","95","96","97","98","99","100","101","102","103","104"],{"ruleId":"105","severity":2,"message":"106","line":216,"column":51,"nodeType":"107","messageId":"108","endLine":216,"endColumn":54},{"ruleId":"109","severity":2,"message":"110","line":13,"column":11,"nodeType":"111","messageId":"112","endLine":13,"endColumn":19},{"ruleId":"105","severity":2,"message":"113","line":61,"column":52,"nodeType":"107","messageId":"108","endLine":61,"endColumn":57},{"ruleId":"105","severity":2,"message":"113","line":58,"column":52,"nodeType":"107","messageId":"108","endLine":58,"endColumn":57},{"ruleId":"114","severity":2,"message":"115","line":45,"column":11,"nodeType":"116","messageId":"117","endLine":45,"endColumn":25},{"ruleId":"114","severity":2,"message":"115","line":46,"column":11,"nodeType":"116","messageId":"117","endLine":46,"endColumn":25},{"ruleId":"114","severity":2,"message":"115","line":47,"column":11,"nodeType":"116","messageId":"117","endLine":47,"endColumn":25},{"ruleId":"114","severity":2,"message":"115","line":48,"column":11,"nodeType":"116","messageId":"117","endLine":48,"endColumn":25},{"ruleId":"114","severity":2,"message":"115","line":49,"column":11,"nodeType":"116","messageId":"117","endLine":49,"endColumn":25},{"ruleId":"114","severity":2,"message":"115","line":50,"column":11,"nodeType":"116","messageId":"117","endLine":50,"endColumn":25},{"ruleId":"114","severity":2,"message":"115","line":51,"column":11,"nodeType":"116","messageId":"117","endLine":51,"endColumn":25},{"ruleId":"114","severity":2,"message":"115","line":52,"column":11,"nodeType":"116","messageId":"117","endLine":52,"endColumn":25},{"ruleId":"114","severity":2,"message":"115","line":53,"column":11,"nodeType":"116","messageId":"117","endLine":53,"endColumn":25},{"ruleId":"114","severity":2,"message":"115","line":54,"column":11,"nodeType":"116","messageId":"117","endLine":54,"endColumn":25},{"ruleId":"114","severity":2,"message":"115","line":55,"column":11,"nodeType":"116","messageId":"117","endLine":55,"endColumn":25},{"ruleId":"118","severity":2,"message":"119","line":58,"column":40,"nodeType":"111","messageId":"120","endLine":58,"endColumn":44},{"ruleId":"121","severity":2,"message":"122","line":160,"column":31,"nodeType":"107","messageId":"123","endLine":160,"endColumn":43},{"ruleId":"124","severity":2,"message":"125","line":240,"column":6,"nodeType":"126","messageId":"112","endLine":240,"endColumn":7,"fix":"127"},{"ruleId":"105","severity":2,"message":"128","line":242,"column":24,"nodeType":"107","messageId":"108","endLine":242,"endColumn":27},{"ruleId":"105","severity":2,"message":"128","line":246,"column":21,"nodeType":"107","messageId":"108","endLine":246,"endColumn":24},{"ruleId":"114","severity":2,"message":"115","line":15,"column":6,"nodeType":"116","messageId":"117","endLine":15,"endColumn":20},{"ruleId":"114","severity":2,"message":"115","line":29,"column":23,"nodeType":"116","messageId":"117","endLine":29,"endColumn":37},{"ruleId":"114","severity":2,"message":"115","line":30,"column":6,"nodeType":"116","messageId":"117","endLine":30,"endColumn":20},{"ruleId":"129","severity":2,"message":"130","line":42,"column":2,"nodeType":"131","messageId":"132","endLine":42,"endColumn":4},{"ruleId":"129","severity":2,"message":"130","line":91,"column":2,"nodeType":"131","messageId":"132","endLine":91,"endColumn":4},{"ruleId":"129","severity":2,"message":"130","line":92,"column":2,"nodeType":"131","messageId":"132","endLine":92,"endColumn":4},{"ruleId":"129","severity":2,"message":"130","line":93,"column":2,"nodeType":"131","messageId":"132","endLine":93,"endColumn":4},{"ruleId":"129","severity":2,"message":"130","line":94,"column":2,"nodeType":"131","messageId":"132","endLine":94,"endColumn":4},{"ruleId":"129","severity":2,"message":"130","line":97,"column":2,"nodeType":"131","messageId":"132","endLine":97,"endColumn":4},{"ruleId":"129","severity":2,"message":"130","line":98,"column":2,"nodeType":"131","messageId":"132","endLine":98,"endColumn":4},{"ruleId":"129","severity":2,"message":"130","line":109,"column":2,"nodeType":"131","messageId":"132","endLine":109,"endColumn":4},{"ruleId":"133","severity":2,"message":"134","line":128,"column":4,"nodeType":"107","messageId":"135","endLine":128,"endColumn":5},{"ruleId":"133","severity":2,"message":"136","line":186,"column":3,"nodeType":"107","messageId":"135","endLine":186,"endColumn":4},"no-unused-vars","'key' is defined but never used.","Identifier","unusedVar","vue/multi-word-component-names","Component name \"Footer\" should always be multi-word.","Literal","unexpected","'valid' is defined but never used.","no-prototype-builtins","Do not access Object.prototype method 'hasOwnProperty' from target object.","CallExpression","prototypeBuildIn","valid-typeof","Invalid typeof comparison value.","invalidValue","no-undef","'MozWebSocket' is not defined.","undef","no-extra-semi","Unnecessary semicolon.","Punctuator",{"range":"137","text":"138"},"'res' is defined but never used.","no-mixed-spaces-and-tabs","Mixed spaces and tabs.","Program","mixedSpacesAndTabs","no-redeclare","'e' is already defined.","redeclared","'l' is already defined.",[8781,8821],"}\n // 开始识别的时候\n OnRecognitionStart"]