| 
					
				 | 
			
			
				@@ -0,0 +1,707 @@ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+<template> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  <el-dialog 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    title="对话预览" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    :visible.sync="talkPreviewDialog" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    :append-to-body="true" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    width="100%" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    :before-close="handleClose" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    class="dialog_diy" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  > 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    <div class="o_content"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      <div class="d_box"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        <div class="dialog"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          <div class="d_img"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            <img 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              :src=" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                require('../../../../assets/icon/englishVoice/icon_portal.png') 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              " 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              alt="" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            /> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          </div> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          <div class="d_content_message"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            <div>Hello,以下是我们这次口语练习的要求:</div> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            <div class="d_name" v-if="answerArray.time"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              练习时长:{{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                answerArray.time == "all" ? "不限时" : answerArray.time + "min" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              }} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            </div> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            <div class="d_name" v-if="answerArray.difficulty"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              设置难度:{{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                answerArray.difficulty == 0 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                  ? "简单" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                  : answerArray.difficulty == 1 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                  ? "一般" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                  : "困难" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              }} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            </div> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            <div 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              class="d_name" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              v-if="fName && sName" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              style=" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                display: flex; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                flex-direction: row; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                flex-wrap: nowrap; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                align-items: center; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                width: 100%; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              " 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            > 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              <div style="min-width: 60px">对话主题:</div> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              <div style="width: calc(100% - 80px)"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                {{ fName - sName }} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              </div> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            </div> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            <div class="gotoTalk">我已了解,开始对话</div> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            <div class="nowTime">{{ currentTime }}</div> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          </div> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        </div> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        <div class="dialog"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          <div class="d_img"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            <img 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              :src=" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                require('../../../../assets/icon/englishVoice/icon_portal.png') 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              " 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              alt="" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            /> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          </div> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          <div class="d_content"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            <div class="d_voice"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              <mini-audio 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                :audio-source="voice" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                class="audio_class" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              ></mini-audio> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            </div> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            <div class="d_log"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              {{ content }} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            </div> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          </div> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          <div class="nowTime" style="margin: 0 0 0 50px"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            {{ currentTime }} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          </div> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        </div> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        <div class="dialog dialog_right"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          <div class="d_img"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            <img 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              :src=" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                require('../../../../assets/icon/englishVoice/icon_portal.png') 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              " 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              alt="" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            /> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          </div> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          <div class="d_content"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            <div class="d_voice"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              <mini-audio 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                :audio-source="voice" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                class="audio_class" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              ></mini-audio> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            </div> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            <div class="d_log2"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              {{ content }} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            </div> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          </div> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          <report v-if="lookReport"></report> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          <div @click="lookReport = true" class="reportButton" :style="{bottom:lookReport ? '-360px' : '-35px'}">查看报告</div> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          <div class="nowTime" style="margin: 0 50px 0 0; bottom: -60px" :style="{bottom:lookReport ? '-390px' : '-60px'}"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            {{ currentTime }} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          </div> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        </div> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      </div> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    </div> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    <div class="o_bottom" v-loading="isloading"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      <div class="audio" v-if="!LuAudioUrl"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        <img 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          v-if="!isRecord" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          src="../../../../assets/icon/englishVoice/start_aduio.png" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          alt="" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          @click="startRecorder" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        /> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        <img 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          v-else 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          src="../../../../assets/icon/englishVoice/stop_audio.png" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          alt="" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          @click="startRecorder" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        /> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      </div> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      <div class="audio_word" v-if="!LuAudioUrl"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        <span v-if="!isRecord">点击话筒开始录音</span> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        <span v-else>点击话筒结束录音</span> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      </div> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      <div v-if="LuAudioUrl" class="audio_b"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        <mini-audio :audio-source="LuAudioUrl" class="audio_class"></mini-audio> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      </div> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      <div v-if="LuAudioUrl" class="audio_rerecord" @click="restart()"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        <span>录音</span> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      </div> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      <!-- <div v-else class="audio_ing"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        <span>正在录音...</span> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      </div> --> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      <div class="checkFooter"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        <div>上一步</div> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        <div style="background: #3681fc; color: #fff; border: none"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          确认创建 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        </div> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      </div> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    </div> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    <iframe 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      allow="camera *; microphone *;display-capture;midi;encrypted-media;" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      src="https://beta.cloud.cocorobo.cn/browser/public/index.html" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      ref="iiframe" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      v-show="false" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    ></iframe> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  </el-dialog> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+</template> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+<script> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import Recorder from "js-audio-recorder"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+const lamejs = require("lamejs"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+const recorder = new Recorder({ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  sampleBits: 16, // 采样位数,支持 8 或 16,默认是16 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  sampleRate: 48000, // 采样率,支持 11025、16000、22050、24000、44100、48000,根据浏览器默认值,我的chrome是48000 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  numChannels: 1, // 声道,支持 1 或 2, 默认是1 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  // compiling: false,(0.x版本中生效,1.x增加中) // 是否边录边转换,默认是false 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+}); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+// 绑定事件-打印的是当前录音数据 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+recorder.onprogress = function (params) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  // console.log('--------------START---------------') 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  // console.log('录音时长(秒)', params.duration); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  // console.log('录音大小(字节)', params.fileSize); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  // console.log('录音音量百分比(%)', params.vol); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  // console.log('当前录音的总数据([DataView, DataView...])', params.data); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  // console.log('--------------END---------------') 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+}; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import report from "./component/report.vue"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+export default { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  components: { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    report, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  props: { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    talkPreviewDialog: { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      type: Boolean, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      default: false, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    oid: { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      type: String, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    org: { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      type: String, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    checkJson: { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      type: Object, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  data() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    return { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      answerArray: [], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      fName: "", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      sName: "", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      currentTime: "", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      isloading: false, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      LuAudioUrl: "", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      isRecord: false, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      calcTimer: null, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      totalSeconds: 0, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      voice: "", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      lookReport: false, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      content: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        "Read the following text aloud.A Car Accident I saw a car accident this morning. A boy wanted to cross the road but he did not look carefully. He just ran out into the road. A car was coming and the driver stopped at once. Luckily, the boy was not hurt. However, there was a bus behind the car. It could not stop and hit the back of the car. Someone called the police and they arrived quickly.", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    }; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  methods: { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    handleClose(done) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      this.close(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      done(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    close() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      this.$emit("update:talkPreviewDialog", false); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    setVoiceJson(val) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      let a = JSON.parse(JSON.stringify(val)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      for (var i = 0; i < a.allfType.length; i++) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        for (var j = 0; j < a.englishJson[a.allfType[i].id].length; j++) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          if (a.englishJson[a.allfType[i].id][j].id == a.topic) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            this.fName = a.allfType[i].name; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            this.sName = a.englishJson[a.allfType[i].id][j].name; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      this.answerArray = a; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      this.$forceUpdate(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    formatDate(date) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      const year = date.getFullYear(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      const month = (date.getMonth() + 1).toString().padStart(2, "0"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      const day = date.getDate().toString().padStart(2, "0"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      const hours = date.getHours().toString().padStart(2, "0"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      const minutes = date.getMinutes().toString().padStart(2, "0"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      const seconds = date.getSeconds().toString().padStart(2, "0"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      return `${year}-${month}-${day} ${hours}:${minutes}:${seconds}`; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    restart() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      let _this = this; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      _this 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        .$confirm("确定重新录音么?", "提示", { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          confirmButtonText: "确定", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          cancelButtonText: "取消", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          type: "warning", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        }) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        .then(() => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          _this.LuAudioUrl = ""; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          setTimeout(() => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            _this.startRecorder(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          }, 500); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        }) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        .catch(() => {}); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    // 开始录音 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    startRecorder() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      let _this = this; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      if (!_this.isRecord) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        recorder.destroy(); // 销毁录音 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        _this.isRecord = true; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        recorder.start().then( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          () => {}, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          (error) => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            _this.isRecord = false; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            // _this.$message.error(`${error.name} : ${error.message}`); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            _this.$message.error( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              `没有找到可使用的麦克风,或者您没有允许此网页使用麦克风` 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            ); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            // 出错了 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            console.log(`${error.name} : ${error.message}`); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            if (_this.calcTimer) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              clearInterval(_this.calcTimer); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              _this.calcTimer = null; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        ); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      } else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if (_this.calcTimer) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          clearInterval(_this.calcTimer); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          _this.calcTimer = null; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        _this.isRecord = false; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        recorder.stop(); // 结束录音 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        this.getMp3Data(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    getMp3Data() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      if (!recorder.fileSize) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        this.$message.error("请录音后在上传语音"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        return; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      const mp3Blob = recorder.getWAVBlob(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      // const mp3Blob = this.convertToMp3(recorder.getWAV()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      let audioFile = this.dataURLtoAudio(mp3Blob, "wav"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      console.log(audioFile); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      let iiframe = this.$refs["iiframe"]; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      // this.isloading = true 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      //   this.beforeUpload1(audioFile, 3); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      //   return; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      // if (this.cjson.type == 'theme' || this.cjson.type == 'QA') { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      //   this.isloading = true 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      //   let _this = this 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      //   iiframe.contentWindow.onRecognizedResult = function (e) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      //     console.log('onRecognizedResult', e); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      //     let privText = e.privText 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      //     _this.beforeUpload1(audioFile, 3, privText); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      //   } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      //   iiframe.contentWindow.doContinuousPronunciationAssessment('', { files: [audioFile] }) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      // } else if (this.cjson.type == 'createRole') { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      //   // this.isloading = true 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      //   // this.beforeUpload1(audioFile, 3); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      //   this.isloading = true 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      //   let _this = this 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      //   iiframe.contentWindow.onRecognizedResult = function (e) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      //     console.log('onRecognizedResult', e); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      //     let privText = e.privText 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      //     _this.beforeUpload1(audioFile, 3, privText); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      //   } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      //   iiframe.contentWindow.doContinuousPronunciationAssessment('', { files: [audioFile] }) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      // } else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      this.isloading = true; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      let _this = this; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      iiframe.contentWindow.onRecognizedResult = function (e) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        console.log("onRecognizedResult", e); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        let privText = e.privText; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        let star = JSON.parse(e.privJson).NBest[0].PronunciationAssessment; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        console.log("star", star); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        // e.privText 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        // JSON.parse(e.privJson).NBest[0].PronunciationAssessment 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        // _this.beforeUpload1(audioFile, 3, privText, star); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      }; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      iiframe.contentWindow.doContinuousPronunciationAssessment("", { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        files: [audioFile], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      }); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      // } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      // recorder.download(mp3Blob, "recorder", "mp3"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  watch: { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    talkPreviewDialog: { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      handler: function (newVal, oldVal) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if (newVal) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          this.setVoiceJson(this.checkJson); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      deep: true, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  created() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    this.currentTime = this.formatDate(new Date()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  mounted() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    this.setVoiceJson(this.checkJson); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+}; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+</script> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+<style scoped> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+.dialog_diy >>> .el-dialog { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  height: 100%; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  margin: 0vh auto !important; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+.dialog_diy >>> .el-dialog__header { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  background: #454545 !important; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  padding: 15px 20px; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+.dialog_diy >>> .el-dialog__body { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  height: calc(100% - 124px); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  box-sizing: border-box; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  padding: 0px; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+.dialog_diy >>> .el-dialog__title { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  color: #fff; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+.dialog_diy >>> .el-dialog__headerbtn { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  top: 19px; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+.dialog_diy >>> .el-dialog__headerbtn .el-dialog__close { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  color: #fff; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+.dialog_diy >>> .el-dialog__headerbtn .el-dialog__close:hover { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  color: #fff; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+.dialog_diy >>> .el-dialog__body, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+.dialog_diy >>> .el-dialog__footer { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  background: rgb(rgb(240, 242, 245)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  overflow: hidden; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+.o_content { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  display: flex; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  align-items: center; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  justify-content: center; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  flex-direction: column; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  height: calc(100% - 210px); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  overflow: hidden; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+.d_box { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  width: 100%; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  height: 100%; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  padding: 25px 50px; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  -webkit-box-sizing: border-box; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  box-sizing: border-box; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  overflow: auto; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+.dialog { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  display: flex; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  position: relative; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+.dialog + .dialog { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  margin-top: 40px; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+.dialog_right { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  flex-direction: row-reverse; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+.dialog > .d_img { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  width: 40px; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  height: 40px; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  min-width: 40px; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  overflow: hidden; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  border-radius: 50%; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  margin-right: 5px; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+.dialog > .d_img > img { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  width: 100%; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  height: 100%; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  object-fit: cover; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+.dialog_right > .d_img { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  margin-right: 0; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  margin-left: 5px; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+.dialog > .d_content, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+.dialog > .d_content_message { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  width: 100%; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+.dialog > .d_content_message { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  display: flex; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  width: 300px; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  background: #f6f9ff; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  flex-direction: column; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  flex-wrap: nowrap; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  align-items: flex-start; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  border-radius: 10px; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  margin: 0 0 0 10px; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  position: relative; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+.dialog > .d_content_message > div { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  padding: 5px; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+.nowTime { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  position: absolute; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  bottom: -30px; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  color: #9c9d9f; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  font-size: 12px; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+.dialog_right > .d_content, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+.dialog_right > .d_content_message { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  display: flex; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  flex-direction: column; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  align-items: flex-end; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+.dialog > .d_content > .d_name, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+.dialog > .d_content_message > .d_name { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  color: #7c7c7c; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  font-size: 12px; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  margin-bottom: 5px; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+.dialog_right > .d_content > .d_name, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+.dialog_right > .d_content_message > .d_name { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  text-align: right; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+.dialog > .d_content > .d_log, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+.dialog > .d_content_message > .d_log { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  color: #000; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  font-size: 16px; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  background: #fff; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  width: 100%; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  max-width: 800px; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  border: 2px solid #e05d63; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  border-radius: 40px; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  line-height: 26px; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  padding: 20px 35px; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  box-sizing: border-box; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  position: relative; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  margin: 10px 0 0 0; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+.dialog > .d_content > .d_log::before, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+.dialog > .d_content_message > .d_log::before { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  content: ""; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  width: calc(100% - 20px); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  height: calc(100% - 20px); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  position: absolute; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  border: 1px dashed #e05d63; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  box-sizing: border-box; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  top: 50%; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  left: 50%; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  border-radius: 30px; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  transform: translate(-50%, -50%); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+.dialog > .d_content > .d_log2, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+.dialog > .d_content_message > .d_log2 { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  color: #000; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  font-size: 14px; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  background: #fff; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  width: 100%; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  max-width: 800px; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  border: 1px dashed #0f94ce; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  border-radius: 5px; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  line-height: 26px; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  padding: 10px; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  box-sizing: border-box; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  position: relative; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  margin-top: 10px; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+.dialog > .d_content > .d_voice, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+.dialog > .d_content_message > .d_voice { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  width: 100%; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  max-width: 600px; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+.audio_class { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  background: #3680fb !important; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  margin: 0 !important; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  width: 100% !important; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  box-sizing: border-box !important; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+.d_voice >>> .vueAudioBetter span:before { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  color: #fff; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+.audio_class >>> .slider .process { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  background: #000; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+.d_voice >>> .vueAudioBetter .iconfont:active { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  position: unset !important; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+.o_bottom { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  height: 210px; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  display: flex; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  flex-direction: column; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  align-items: center; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  justify-content: center; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+.o_bottom .audio { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  display: flex; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  align-items: center; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  justify-content: center; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+.o_bottom .audio > img { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  width: 75px; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  height: 75px; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  cursor: pointer; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+.o_bottom .audio_word { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  display: flex; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  align-items: center; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  justify-content: center; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  color: #00000099; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  font-size: 16px; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  margin: 10px 0 8px; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+.audio_b { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  display: flex; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  align-items: center; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  justify-content: center; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  margin-bottom: 15px; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+.audio_rerecord { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  display: flex; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  align-items: center; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  justify-content: center; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  margin-bottom: 15px; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+.audio_rerecord > span { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  display: flex; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  border: 1px solid #3981fa; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  align-items: center; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  color: #3981fa; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  padding: 5px 10px; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  border-radius: 5px; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  cursor: pointer; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+.audio_rerecord > span::before { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  content: ""; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  width: 15px; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  height: 15px; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  background: url("../../../../assets/icon/englishVoice/restart.png"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  display: block; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  background-size: 100% 100%; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  margin-right: 5px; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+.audio_class { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  background: #3680fb !important; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  margin: 0 !important; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+.audio_b >>> .vueAudioBetter span:before { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  color: #fff; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+.audio_class >>> .slider .process { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  background: #000; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+.audio_b >>> .vueAudioBetter .iconfont:active { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  position: unset !important; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+.audio_ing { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  color: #ee3e3e; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  margin-top: 25px; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  font-size: 12px; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  display: flex; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  align-items: center; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  justify-content: center; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+.gotoTalk { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  margin: 0 5px 10px 5px; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  background: #3681fc; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  color: #fff; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  text-align: center; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  width: calc(100% - 20px); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  height: 30px; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  line-height: 30px; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  padding: 0 !important; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  border-radius: 5px; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  cursor: pointer; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+.checkFooter { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  display: flex; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  flex-direction: row; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  flex-wrap: nowrap; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  align-items: center; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  justify-content: flex-end; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+.checkFooter > div { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  min-width: 100px; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  width: 100px; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  text-align: center; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  border-radius: 5px; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  background: #ffffff; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  color: #3681fc; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  border: 1px solid #3681fc; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  height: 35px; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  line-height: 35px; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  margin-right: 10px; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  font-size: 12px; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  cursor: pointer; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+.reportButton { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  position: absolute; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  bottom: -35px; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  right: 50px; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  background: #16c267; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  color: #fff; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  width: 70px; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  height: 25px; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  text-align: center; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  line-height: 25px; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  cursor: pointer; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  border-radius: 5px; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+</style> 
			 |