|
|
@@ -33,23 +33,118 @@
|
|
|
<!-- <img src="../../assets/images/classObserve/lianjie.png" alt="" /> -->
|
|
|
</span>
|
|
|
</div>
|
|
|
+ <div class="tit" v-else></div>
|
|
|
<div class="teaInfo" @click="cutPage(3)" v-if="tid">
|
|
|
<div class="teaName">{{ bmData.jsonData ? bmData.jsonData.teacherName : '' }}</div>
|
|
|
<div class="classInfo" v-if="bmData.jsonData && bmData.jsonData.grade">{{ bmData.jsonData.grade }}</div>
|
|
|
<div class="classInfo" v-if="bmData.jsonData && bmData.jsonData.subject">{{ bmData.jsonData.subject }}</div>
|
|
|
<img src="../../assets/images/classObserve/fillInfo.svg" alt="" />
|
|
|
</div>
|
|
|
+ <div v-else class="teaInfo"></div>
|
|
|
<!-- <div class="noTid" v-if="!tid">
|
|
|
<div class="nt_btn">创建新的课堂</div>
|
|
|
</div> -->
|
|
|
<div class="chat">
|
|
|
+ <div class="transcriptionArea" v-if="tid">
|
|
|
+ <div class="ta_btn">
|
|
|
+ <span>
|
|
|
+ <img src="../../assets/images/classObserve/Vector2.svg" v-if="[0].includes(showTranscriptType)" />
|
|
|
+ <img src="../../assets/images/classObserve/Vector.svg" v-else @click.stop="changeTranscriptType(0)" />
|
|
|
+ </span>
|
|
|
+ <span>
|
|
|
+ <img src="../../assets/images/classObserve/zhuanlu2.svg" v-if="[1].includes(showTranscriptType)" />
|
|
|
+ <img src="../../assets/images/classObserve/zhuanlu.svg" v-else @click.stop="changeTranscriptType(1)" />
|
|
|
+ </span>
|
|
|
+ </div>
|
|
|
+ <div
|
|
|
+ v-show="showTranscriptType == 0"
|
|
|
+ ref="transcriptionDataRef"
|
|
|
+ class="chatTxt"
|
|
|
+ v-text="bmData.jsonData ? bmData.jsonData.transcriptionData : ''"
|
|
|
+ ></div>
|
|
|
+ <div v-show="showTranscriptType == 1" class="editorBarData">
|
|
|
+ <template v-if="bmData.jsonData">
|
|
|
+ <div class="ebd_save" v-if="false">
|
|
|
+ <van-popover placement="left" v-model="showEditorBarDataPopover" trigger="click">
|
|
|
+ <div class="ebd_s_btnArea">
|
|
|
+ <el-button size="small" type="primary" @click.stop="speakerCodingFn">说话人编码</el-button>
|
|
|
+
|
|
|
+ <el-button size="small" type="primary" @click.stop="behaviorCodingFn">行为编码</el-button>
|
|
|
+
|
|
|
+ <el-button size="small" type="primary" @click.stop="saveEditorBarFn">保存</el-button>
|
|
|
+ </div>
|
|
|
+ <template #reference>
|
|
|
+ <svg
|
|
|
+ t="1724054294290"
|
|
|
+ viewBox="0 0 1024 1024"
|
|
|
+ version="1.1"
|
|
|
+ xmlns="http://www.w3.org/2000/svg"
|
|
|
+ p-id="2400"
|
|
|
+ width="200"
|
|
|
+ height="200"
|
|
|
+ :style="showEditorBarDataPopover ? 'transform: rotate(180deg);' : ''"
|
|
|
+ >
|
|
|
+ <path
|
|
|
+ d="M704 908.8 307.2 512 704 115.2c25.6-25.6 25.6-70.4 0-96-25.6-25.6-70.4-25.6-96 0L166.4 460.8C147.2 480 140.8 492.8 140.8 512s6.4 32 19.2 51.2l441.6 441.6c25.6 25.6 70.4 25.6 96 0C729.6 979.2 729.6 934.4 704 908.8z"
|
|
|
+ p-id="2401"
|
|
|
+ ></path>
|
|
|
+ </svg>
|
|
|
+ </template>
|
|
|
+ </van-popover>
|
|
|
+ </div>
|
|
|
+
|
|
|
+ <EditorBar v-model="bmData.jsonData.editorBarData.content">
|
|
|
+ <!-- <el-popover placement="top" trigger="hover">
|
|
|
+ <el-button size="small" @click.stop="startContinuousJobs('role')">
|
|
|
+ 说话人编码
|
|
|
+ </el-button>
|
|
|
+ <el-button size="small" @click.stop="startContinuousJobs('actionType')">
|
|
|
+ 行为编码
|
|
|
+ </el-button>
|
|
|
+ <el-button
|
|
|
+ slot="reference"
|
|
|
+ style="position: absolute; bottom: 20px; right: 90px; z-index: 10002"
|
|
|
+ size="small"
|
|
|
+ type="primary"
|
|
|
+ >自动编码</el-button
|
|
|
+ >
|
|
|
+ </el-popover>
|
|
|
+ <el-button
|
|
|
+ style="position: absolute; bottom: 20px; right: 20px; z-index: 10002"
|
|
|
+ size="small"
|
|
|
+ type="primary"
|
|
|
+ @click.stop="saveEditorBar(true)"
|
|
|
+ >保存</el-button
|
|
|
+ > -->
|
|
|
+ </EditorBar>
|
|
|
+ </template>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ <img
|
|
|
+ src="../../assets/images/classObserve/waveanimation.png"
|
|
|
+ alt=""
|
|
|
+ v-if="
|
|
|
+ (imageList.jsonData ? imageList.jsonData.fileList.length == 0 : true) ||
|
|
|
+ [1, 2, 3].includes(recordedForm.status)
|
|
|
+ "
|
|
|
+ />
|
|
|
+ <div class="time" v-if="[1, 2, 3].includes(recordedForm.status)">
|
|
|
+ {{ recordedForm.time }}
|
|
|
+ </div>
|
|
|
+ <div class="time" v-else></div>
|
|
|
<div
|
|
|
- ref="transcriptionDataRef"
|
|
|
- class="chatTxt"
|
|
|
- v-text="bmData.jsonData ? bmData.jsonData.transcriptionData : ''"
|
|
|
- ></div>
|
|
|
- <img src="../../assets/images/classObserve/waveanimation.png" alt="" />
|
|
|
- <div class="time">{{ recordedForm.time }}</div>
|
|
|
+ class="sourceFile"
|
|
|
+ v-if="
|
|
|
+ (imageList.jsonData ? imageList.jsonData.fileList.length != 0 : false) &&
|
|
|
+ ![1, 2, 3].includes(recordedForm.status)
|
|
|
+ "
|
|
|
+ >
|
|
|
+ <mini-audio
|
|
|
+ v-if="imageList.jsonData ? imageList.jsonData.fileList.length != 0 : false"
|
|
|
+ :audio-source="imageList.jsonData.fileList[0].url"
|
|
|
+ class="audio_class"
|
|
|
+ ></mini-audio>
|
|
|
+ </div>
|
|
|
</div>
|
|
|
<div class="controlArea" v-loading="recordedForm.loading">
|
|
|
<div class="ca_left">
|
|
|
@@ -197,6 +292,8 @@ import _ from 'lodash'
|
|
|
import Papa from 'papaparse'
|
|
|
import '../../utils/aws-sdk-2.235.1.min.js'
|
|
|
import { upload_file_knowledgeRequest } from '@/api/classObserve.js'
|
|
|
+let OpenCC = require('opencc-js')
|
|
|
+import EditorBar from './components/wangEnduit.vue'
|
|
|
|
|
|
const getFile = url => {
|
|
|
return new Promise((resolve, reject) => {
|
|
|
@@ -248,12 +345,21 @@ export default {
|
|
|
tid: {
|
|
|
type: String,
|
|
|
default: ''
|
|
|
+ },
|
|
|
+ imageList: {
|
|
|
+ type: Object,
|
|
|
+ default: () => {}
|
|
|
}
|
|
|
},
|
|
|
+ components: {
|
|
|
+ EditorBar
|
|
|
+ },
|
|
|
data() {
|
|
|
return {
|
|
|
isParse: false,
|
|
|
loading: false,
|
|
|
+ showTranscriptType: 0, //0:原文速览 1;转录文稿
|
|
|
+ showEditorBarDataPopover: false,
|
|
|
recordedForm: {
|
|
|
time: '00:00:00', //时间
|
|
|
status: 0, //0--未录音 1--正在录音 2--暂停 3--录音结束
|
|
|
@@ -280,6 +386,51 @@ export default {
|
|
|
}
|
|
|
},
|
|
|
methods: {
|
|
|
+ changeTranscriptType(newType) {
|
|
|
+ this.showTranscriptType = newType
|
|
|
+ },
|
|
|
+ saveEditorBarFn() {
|
|
|
+ Dialog.confirm({
|
|
|
+ title: '保存',
|
|
|
+ message: `确定保存转录文稿?`
|
|
|
+ })
|
|
|
+ .then(() => {
|
|
|
+ console.log('保存')
|
|
|
+ this.showEditorBarDataPopover = false
|
|
|
+ })
|
|
|
+ .catch(() => {
|
|
|
+ console.log('不保存')
|
|
|
+ this.showEditorBarDataPopover = true
|
|
|
+ })
|
|
|
+ },
|
|
|
+ speakerCodingFn() {
|
|
|
+ Dialog.confirm({
|
|
|
+ title: '说话人编码',
|
|
|
+ message: `确定获取说话人编码?`
|
|
|
+ })
|
|
|
+ .then(() => {
|
|
|
+ console.log('获取说话人编码')
|
|
|
+ this.showEditorBarDataPopover = false
|
|
|
+ })
|
|
|
+ .catch(() => {
|
|
|
+ console.log('不获取')
|
|
|
+ this.showEditorBarDataPopover = true
|
|
|
+ })
|
|
|
+ },
|
|
|
+ behaviorCodingFn() {
|
|
|
+ Dialog.confirm({
|
|
|
+ title: '行为编码',
|
|
|
+ message: `确定获取行为编码?`
|
|
|
+ })
|
|
|
+ .then(() => {
|
|
|
+ console.log('获取行为编码')
|
|
|
+ this.showEditorBarDataPopover = false
|
|
|
+ })
|
|
|
+ .catch(() => {
|
|
|
+ console.log('不获取')
|
|
|
+ this.showEditorBarDataPopover = true
|
|
|
+ })
|
|
|
+ },
|
|
|
changeLanguageFn(newIndex) {
|
|
|
if (this.isParse) return this.$toast('正在录音中...')
|
|
|
this.choiceLanguageIndex = newIndex
|
|
|
@@ -359,7 +510,7 @@ export default {
|
|
|
this.uploadFile(file, { changeText: false, flag: true })
|
|
|
}
|
|
|
},
|
|
|
- startRecord() {
|
|
|
+ startRecord(type = true) {
|
|
|
if (this.recordedForm.loading) return this.$toast('请稍等')
|
|
|
if (!this.tid) {
|
|
|
return Dialog.confirm({
|
|
|
@@ -368,7 +519,7 @@ export default {
|
|
|
})
|
|
|
.then(() => {
|
|
|
return this.$parent.addNewCourseByDefault().then(_ => {
|
|
|
- this.startRecord()
|
|
|
+ this.startRecord(false)
|
|
|
})
|
|
|
})
|
|
|
.catch(_ => {
|
|
|
@@ -379,86 +530,89 @@ export default {
|
|
|
// console.log('开始录音')
|
|
|
if (this.uploadFileLoading) return this.$toast('请稍等...')
|
|
|
if ([0].includes(this.recordedForm.status)) {
|
|
|
- Dialog.confirm({
|
|
|
- title: '开始录音',
|
|
|
- message: `确定开始录音?`
|
|
|
- })
|
|
|
- .then(() => {
|
|
|
- let iiframe = this.$refs['iiframe']
|
|
|
- console.log(iiframe.contentWindow.window)
|
|
|
- console.log(iiframe.contentWindow)
|
|
|
- // 设置语言
|
|
|
- iiframe.contentWindow.window.document.getElementById(
|
|
|
- 'languageOptions'
|
|
|
- ).selectedIndex = this.choiceLanguageIndex
|
|
|
+ if (type) {
|
|
|
+ return Dialog.confirm({
|
|
|
+ title: '开始录音',
|
|
|
+ message: `确定开始录音?`
|
|
|
+ })
|
|
|
+ .then(() => {
|
|
|
+ this.startRecord(false)
|
|
|
+ })
|
|
|
+ .catch(e => {
|
|
|
+ console.log(e)
|
|
|
+ console.log('不录音')
|
|
|
+ })
|
|
|
+ }
|
|
|
+ console.log('开始录音')
|
|
|
+ let iiframe = this.$refs['iiframe']
|
|
|
+ // console.log(iiframe.contentWindow.window)
|
|
|
+ // console.log(iiframe.contentWindow)
|
|
|
+ // 设置语言
|
|
|
+ iiframe.contentWindow.window.document.getElementById('languageOptions').selectedIndex = this.choiceLanguageIndex
|
|
|
|
|
|
- iiframe.contentWindow.testdoContinuousPronunciationAssessment()
|
|
|
+ iiframe.contentWindow.testdoContinuousPronunciationAssessment()
|
|
|
|
|
|
- this.recordedForm.status = 1
|
|
|
- this.$toast('已开始录音')
|
|
|
- this.recordedForm.timer = setInterval(() => {
|
|
|
- this.recordedForm.timeDuration += 1
|
|
|
- this.recordedForm.time = this.updateRecordedTime({
|
|
|
- duration: this.recordedForm.timeDuration
|
|
|
- })
|
|
|
- }, 1000)
|
|
|
+ this.recordedForm.status = 1
|
|
|
+ this.showTranscriptType = 1
|
|
|
+ this.$toast('已开始录音')
|
|
|
+ this.recordedForm.timer = setInterval(() => {
|
|
|
+ this.recordedForm.timeDuration += 1
|
|
|
+ this.recordedForm.time = this.updateRecordedTime({
|
|
|
+ duration: this.recordedForm.timeDuration
|
|
|
+ })
|
|
|
+ }, 1000)
|
|
|
|
|
|
- let flag = true
|
|
|
- this.recordedForm.textList = []
|
|
|
- this.recordedForm.timeDuration = 0
|
|
|
- this.recordedForm.startTime = 1
|
|
|
- this.recordedForm.endTime = 0
|
|
|
+ let flag = true
|
|
|
+ this.recordedForm.textList = []
|
|
|
+ this.recordedForm.timeDuration = 0
|
|
|
+ this.recordedForm.startTime = 1
|
|
|
+ this.recordedForm.endTime = 0
|
|
|
|
|
|
- iiframe.contentWindow.onRecognizedResult = e => {
|
|
|
- this.recordedForm.endTime = this.recordedForm.timeDuration
|
|
|
- if (flag) {
|
|
|
- // this.controlsStatus = 1
|
|
|
- // this.showIndexPage = false
|
|
|
- // this.pageStatus = 2
|
|
|
- this.$parent.bmData.jsonData.editorBarData.type = '0'
|
|
|
- flag = false
|
|
|
- this.uploadFileLoading = false
|
|
|
- this.$parent.bmData.jsonData.transcriptionData = ''
|
|
|
- this.$parent.bmData.jsonData.editorBarData.content = ''
|
|
|
- this.recordedForm.textList = []
|
|
|
- }
|
|
|
- let privText = e.privText
|
|
|
- if (privText == undefined || privText == 'undefined') return
|
|
|
- console.log('👇转译对象👇')
|
|
|
- console.log(e)
|
|
|
- console.log('👇转译结果👇')
|
|
|
- console.log(privText)
|
|
|
- this.recordedForm.textList.push({
|
|
|
- value: privText,
|
|
|
- startTime: this.updateRecordedTime({
|
|
|
- duration: this.recordedForm.startTime
|
|
|
- }),
|
|
|
- endTime: this.updateRecordedTime({
|
|
|
- duration: this.recordedForm.endTime
|
|
|
- }),
|
|
|
- time: this.updateRecordedTime({
|
|
|
- duration: this.recordedForm.endTime - this.recordedForm.startTime
|
|
|
- })
|
|
|
- })
|
|
|
- this.recordedForm.startTime = this.recordedForm.timeDuration + 1
|
|
|
- this.$parent.bmData.jsonData.transcriptionData += privText
|
|
|
- this.$nextTick(
|
|
|
- () => (this.$refs.transcriptionDataRef.scrollTop = this.$refs.transcriptionDataRef.scrollHeight)
|
|
|
- )
|
|
|
- let _result = `<table border="0" width="100%" cellpadding="0" cellspacing="0" style="text-align: center"><tbody><tr><th>序号</th><th>开始时间</th><th>结束时间</th><th>发言内容</th><th>时长</th><th>说话人身份</th><th>行为编码</th></tr>`
|
|
|
- this.recordedForm.textList.forEach((item, index) => {
|
|
|
- _result += `<tr><td>${index + 1}</td><td>${item.startTime}</td><td>${item.endTime}</td><td>${
|
|
|
- item.value
|
|
|
- }</td><td>${item.time}</td><td></td><td></td></tr>`
|
|
|
- })
|
|
|
- _result += `<tr><td></td><td></td><td></td><td></td><td></td><td></td></tr></tbody></table>`
|
|
|
- this.$parent.bmData.jsonData.editorBarData.content = _result
|
|
|
- }
|
|
|
+ iiframe.contentWindow.onRecognizedResult = e => {
|
|
|
+ this.recordedForm.endTime = this.recordedForm.timeDuration
|
|
|
+ if (flag) {
|
|
|
+ // this.controlsStatus = 1
|
|
|
+ // this.showIndexPage = false
|
|
|
+ // this.pageStatus = 2
|
|
|
+ this.$parent.bmData.jsonData.editorBarData.type = '0'
|
|
|
+ flag = false
|
|
|
+ this.uploadFileLoading = false
|
|
|
+ this.$parent.bmData.jsonData.transcriptionData = ''
|
|
|
+ this.$parent.bmData.jsonData.editorBarData.content = ''
|
|
|
+ this.recordedForm.textList = []
|
|
|
+ }
|
|
|
+ let privText = e.privText
|
|
|
+ if (privText == undefined || privText == 'undefined') return
|
|
|
+ console.log('👇转译对象👇')
|
|
|
+ console.log(e)
|
|
|
+ console.log('👇转译结果👇')
|
|
|
+ console.log(privText)
|
|
|
+ this.recordedForm.textList.push({
|
|
|
+ value: privText,
|
|
|
+ startTime: this.updateRecordedTime({
|
|
|
+ duration: this.recordedForm.startTime
|
|
|
+ }),
|
|
|
+ endTime: this.updateRecordedTime({
|
|
|
+ duration: this.recordedForm.endTime
|
|
|
+ }),
|
|
|
+ time: this.updateRecordedTime({
|
|
|
+ duration: this.recordedForm.endTime - this.recordedForm.startTime
|
|
|
+ })
|
|
|
})
|
|
|
- .catch((e) => {
|
|
|
- console.log(e)
|
|
|
- console.log('不录音')
|
|
|
+ this.recordedForm.startTime = this.recordedForm.timeDuration + 1
|
|
|
+ this.$parent.bmData.jsonData.transcriptionData += privText
|
|
|
+ this.$nextTick(
|
|
|
+ () => (this.$refs.transcriptionDataRef.scrollTop = this.$refs.transcriptionDataRef.scrollHeight)
|
|
|
+ )
|
|
|
+ let _result = `<table border="0" width="100%" cellpadding="0" cellspacing="0" style="text-align: center"><tbody><tr><th>序号</th><th>开始时间</th><th>结束时间</th><th>发言内容</th><th>时长</th><th>说话人身份</th><th>行为编码</th></tr>`
|
|
|
+ this.recordedForm.textList.forEach((item, index) => {
|
|
|
+ _result += `<tr><td>${index + 1}</td><td>${item.startTime}</td><td>${item.endTime}</td><td>${
|
|
|
+ item.value
|
|
|
+ }</td><td>${item.time}</td><td></td><td></td></tr>`
|
|
|
})
|
|
|
+ _result += `<tr><td></td><td></td><td></td><td></td><td></td><td></td></tr></tbody></table>`
|
|
|
+ this.$parent.bmData.jsonData.editorBarData.content = _result
|
|
|
+ }
|
|
|
} else if ([1, 2].includes(this.recordedForm.status)) {
|
|
|
this.$toast.fail('正在录音中')
|
|
|
} else {
|
|
|
@@ -499,6 +653,7 @@ export default {
|
|
|
iiframe.contentWindow.testdoContinuousPronunciationAssessment()
|
|
|
// this.controlsStatus = 1;
|
|
|
this.recordedForm.status = 1
|
|
|
+ this.showTranscriptType = 1
|
|
|
this.$toast('已继续录音')
|
|
|
this.recordedForm.loading = false
|
|
|
this.recordedForm.timer = setInterval(() => {
|
|
|
@@ -670,11 +825,16 @@ export default {
|
|
|
_this.showIndexPage = false
|
|
|
_this.pageStatus = 2
|
|
|
_this.$parent.bmData.jsonData.editorBarData.type = '0'
|
|
|
+ let converter = OpenCC.Converter({
|
|
|
+ from: 'hk',
|
|
|
+ to: 'cn'
|
|
|
+ })
|
|
|
// _this.$parent.bmData.jsonData.transcriptionData = _res.data
|
|
|
if (flag) {
|
|
|
- const arr = Papa.parse(_res.data, {
|
|
|
+ let arr = Papa.parse(_res.data, {
|
|
|
header: false
|
|
|
}).data
|
|
|
+ arr = arr.filter(i => _.get(i, 0) != converter('序号'))
|
|
|
const _editorBarDataContent = `<table border="0" width="100%" cellpadding="0" cellspacing="0" style="text-align: center"><tbody><tr><th>序号</th><th>开始时间</th><th>结束时间</th><th>发言内容</th><th>时长</th><th>说话人身份</th><th>行为编码</th></tr>${arr
|
|
|
.map(
|
|
|
row =>
|
|
|
@@ -803,6 +963,97 @@ export default {
|
|
|
return `${hours.toString().padStart(2, '0')}:${minutes.toString().padStart(2, '0')}:${seconds
|
|
|
.toString()
|
|
|
.padStart(2, '0')}`
|
|
|
+ },
|
|
|
+ wavFileGetText(audioFile) {
|
|
|
+ let flag = true
|
|
|
+ let textList = []
|
|
|
+ let iiframe = this.$refs['iiframe']
|
|
|
+
|
|
|
+ iiframe.contentWindow.window.document.getElementById('languageOptions').selectedIndex = this.choiceLanguageIndex
|
|
|
+ this.bmData.jsonData.transcriptionData = ''
|
|
|
+ iiframe.contentWindow.onRecognizedResult = () => {
|
|
|
+ if (flag) {
|
|
|
+ // 这里上传文件
|
|
|
+ // _this.uploadWavFile(audioFile);
|
|
|
+
|
|
|
+ this.bmData.jsonData.editorBarData.type = '0'
|
|
|
+ flag = false
|
|
|
+ this.uploadFileLoading = false
|
|
|
+ this.bmData.jsonData.transcriptionData = ''
|
|
|
+ this.bmData.jsonData.editorBarData.content = ''
|
|
|
+ textList = []
|
|
|
+ }
|
|
|
+ // this.showGetTextLoading = true;
|
|
|
+ let privText = e.privText
|
|
|
+ console.log('👇转译对象👇')
|
|
|
+ console.log(e)
|
|
|
+ console.log('👇转译结果👇')
|
|
|
+ console.log(privText)
|
|
|
+ textList.push({
|
|
|
+ value: privText,
|
|
|
+ startTime: '',
|
|
|
+ endTime: '',
|
|
|
+ time: ''
|
|
|
+ })
|
|
|
+ this.bmData.jsonData.transcriptionData += privText
|
|
|
+
|
|
|
+ let _result = `
|
|
|
+ <table
|
|
|
+ border="0"
|
|
|
+ width="100%"
|
|
|
+ cellpadding="0"
|
|
|
+ cellspacing="0"
|
|
|
+ style="text-align: center"
|
|
|
+ >
|
|
|
+ <tbody>
|
|
|
+ <tr>
|
|
|
+ <th>序号</th>
|
|
|
+ <th>开始时间</th>
|
|
|
+ <th>结束时间</th>
|
|
|
+ <th>发言内容</th>
|
|
|
+ <th>时长</th>
|
|
|
+ <th>说话人身份</th>
|
|
|
+ <th>行为编码</th>
|
|
|
+ </tr>
|
|
|
+ `
|
|
|
+ textList.forEach((item, index) => {
|
|
|
+ _result += `<tr>
|
|
|
+ <td>${index + 1}</td>
|
|
|
+ <td></td>
|
|
|
+ <td></td>
|
|
|
+ <td>${item.value}</td>
|
|
|
+ <td></td>
|
|
|
+ <td></td>
|
|
|
+ <td></td>
|
|
|
+ </tr>`
|
|
|
+ })
|
|
|
+ _result += `
|
|
|
+ <tr>
|
|
|
+ <td></td>
|
|
|
+ <td></td>
|
|
|
+ <td></td>
|
|
|
+ <td></td>
|
|
|
+ <td></td>
|
|
|
+ <td></td>
|
|
|
+ <td></td>
|
|
|
+ </tr>
|
|
|
+ </tbody>
|
|
|
+ </table>`
|
|
|
+ this.bmData.jsonData.editorBarData.content = _result
|
|
|
+ // _this.editorBarData.content += privText;
|
|
|
+ }
|
|
|
+
|
|
|
+ iiframe.contentWindow.onSessionStopped = function(e) {
|
|
|
+ console.log('转译完成')
|
|
|
+ console.log(e)
|
|
|
+ this.$toast.success('转译完成')
|
|
|
+ // _this.showGetTextLoading = false;
|
|
|
+ this.saveEditorBar()
|
|
|
+ }
|
|
|
+
|
|
|
+ iiframe.contentWindow.doContinuousPronunciationAssessment('', {
|
|
|
+ files: [audioFile]
|
|
|
+ })
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
@@ -814,7 +1065,7 @@ export default {
|
|
|
height: calc(100%);
|
|
|
display: flex;
|
|
|
flex-direction: column;
|
|
|
- justify-content: space-between;
|
|
|
+ // justify-content: space-between;
|
|
|
overflow: auto;
|
|
|
}
|
|
|
/deep/.van-action-sheet {
|
|
|
@@ -822,10 +1073,11 @@ export default {
|
|
|
}
|
|
|
.top {
|
|
|
width: 100%;
|
|
|
+ height: 150px;
|
|
|
box-sizing: border-box;
|
|
|
padding-top: 15px;
|
|
|
background-color: rgba(54, 129, 252, 1);
|
|
|
- flex: 1;
|
|
|
+ // flex: 1;
|
|
|
box-sizing: border-box;
|
|
|
border-radius: 0 0 23% 23%;
|
|
|
display: flex;
|
|
|
@@ -854,7 +1106,8 @@ export default {
|
|
|
}
|
|
|
.brief {
|
|
|
width: 100%;
|
|
|
- padding-bottom: 20px;
|
|
|
+ height: 80px;
|
|
|
+ // padding-bottom: 20px;
|
|
|
.txt {
|
|
|
height: 50px;
|
|
|
display: flex;
|
|
|
@@ -873,12 +1126,13 @@ export default {
|
|
|
}
|
|
|
.FunctionalArea {
|
|
|
width: 100%;
|
|
|
+ height: calc(100vh - 230px);
|
|
|
padding: 0 30px;
|
|
|
box-sizing: border-box;
|
|
|
.tit {
|
|
|
display: flex;
|
|
|
justify-content: space-between;
|
|
|
-
|
|
|
+ height: 30px;
|
|
|
div {
|
|
|
font-weight: 600;
|
|
|
font-size: 22px;
|
|
|
@@ -893,6 +1147,10 @@ export default {
|
|
|
display: flex;
|
|
|
justify-content: flex-start;
|
|
|
padding: 10px 0;
|
|
|
+ height: 15px;
|
|
|
+ display: flex;
|
|
|
+ align-items: center;
|
|
|
+ // background-color: yellow;
|
|
|
.teaName {
|
|
|
padding-right: 10px;
|
|
|
font-size: 14px;
|
|
|
@@ -907,11 +1165,35 @@ export default {
|
|
|
padding: 0 10px;
|
|
|
margin-right: 10px;
|
|
|
color: rgba(0, 0, 0, 0.6);
|
|
|
-
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
.chat {
|
|
|
+ display: flex;
|
|
|
+ flex-direction: column;
|
|
|
+ width: 100%;
|
|
|
+ flex: 1;
|
|
|
+ height: calc(100% - 205px);
|
|
|
+ justify-content: flex-end;
|
|
|
+ img {
|
|
|
+ width: 100%;
|
|
|
+ height: 100px;
|
|
|
+ }
|
|
|
+ .time {
|
|
|
+ color: rgba(54, 129, 252, 1);
|
|
|
+ width: 100%;
|
|
|
+ font-size: 12px;
|
|
|
+ height: 15px;
|
|
|
+ display: flex;
|
|
|
+ align-items: center;
|
|
|
+ justify-content: center;
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
+.transcriptionArea {
|
|
|
+ width: 100%;
|
|
|
+ height: calc(100% - 115px);
|
|
|
+ position: relative;
|
|
|
.chatTxt {
|
|
|
font-weight: 400;
|
|
|
font-size: 14px;
|
|
|
@@ -921,20 +1203,57 @@ export default {
|
|
|
// -webkit-box-orient: vertical;
|
|
|
// overflow: hidden;
|
|
|
// text-overflow: ellipsis;
|
|
|
- max-height: 150px;
|
|
|
- min-height: 100px;
|
|
|
+ min-height: 100px;
|
|
|
+ height: 100%;
|
|
|
overflow: auto;
|
|
|
color: rgba(0, 0, 0, 0.6);
|
|
|
}
|
|
|
- img {
|
|
|
- width: 100%;
|
|
|
+ .editorBarData {
|
|
|
+ min-height: 100px;
|
|
|
+ // max-height: 10vh;
|
|
|
+ height:100%;
|
|
|
+ position: relative;
|
|
|
+ .ebd_save {
|
|
|
+ left: 100%;
|
|
|
+ bottom: 0;
|
|
|
+ width: 28px;
|
|
|
+ height: 40px;
|
|
|
+ position: absolute;
|
|
|
+ display: flex;
|
|
|
+ justify-content: center;
|
|
|
+ align-items: center;
|
|
|
+ border-radius: 0 10px 10px 0;
|
|
|
+ background-color: #fff;
|
|
|
+ box-sizing: border-box;
|
|
|
+ border: solid 1px #cccccc;
|
|
|
+ border-left: none;
|
|
|
+ svg {
|
|
|
+ width: 17px;
|
|
|
+ height: 17px;
|
|
|
+ transition: 0.3s;
|
|
|
+ }
|
|
|
+ }
|
|
|
}
|
|
|
- .time {
|
|
|
- color: rgba(54, 129, 252, 1);
|
|
|
- width: 100%;
|
|
|
- font-size: 12px;
|
|
|
+ .ta_btn {
|
|
|
+ width: auto;
|
|
|
+ height: auto;
|
|
|
+ position: absolute;
|
|
|
+ right: 0;
|
|
|
+ bottom: 100%;
|
|
|
display: flex;
|
|
|
- justify-content: center;
|
|
|
+ span {
|
|
|
+ width: 22px;
|
|
|
+ height: 22px;
|
|
|
+ padding: 5px;
|
|
|
+ display: flex;
|
|
|
+ justify-content: center;
|
|
|
+ align-items: center;
|
|
|
+ margin-left: 5px;
|
|
|
+ img {
|
|
|
+ width: 22px;
|
|
|
+ height: 22px;
|
|
|
+ }
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
.controlArea {
|
|
|
@@ -989,7 +1308,7 @@ export default {
|
|
|
display: flex;
|
|
|
justify-content: space-around;
|
|
|
margin-bottom: 10px;
|
|
|
-
|
|
|
+ height: 50px;
|
|
|
div {
|
|
|
flex: 1;
|
|
|
display: flex;
|
|
|
@@ -1145,4 +1464,35 @@ export default {
|
|
|
color: rgba(54, 129, 252, 1);
|
|
|
}
|
|
|
}
|
|
|
+
|
|
|
+.audio_class {
|
|
|
+ /* width: 100% !important; */
|
|
|
+ /* height: 100% !important; */
|
|
|
+ background: #ccc !important;
|
|
|
+ // margin: 0 !important;
|
|
|
+ width: 100% !important;
|
|
|
+ box-sizing: border-box;
|
|
|
+ // margin: 20px 0 !important;
|
|
|
+}
|
|
|
+
|
|
|
+.sourceFile {
|
|
|
+ width: 100%;
|
|
|
+ display: flex;
|
|
|
+ justify-content: center;
|
|
|
+ align-items: center;
|
|
|
+ height: 100px;
|
|
|
+}
|
|
|
+.audio_class >>> .slider .process {
|
|
|
+ background: #000;
|
|
|
+}
|
|
|
+
|
|
|
+.ebd_s_btnArea {
|
|
|
+ width: auto;
|
|
|
+ height: 45px;
|
|
|
+ display: flex;
|
|
|
+ justify-content: center;
|
|
|
+ align-items: center;
|
|
|
+ padding: 0 10px;
|
|
|
+ // background-color: red;
|
|
|
+}
|
|
|
</style>
|