|
@@ -42,15 +42,18 @@
|
|
|
:key="`top-${i}`"
|
|
|
:class="[
|
|
|
'matrix-top',
|
|
|
- curQue.voiceMatrix.columnSelection && (selectColumn === i ||
|
|
|
- (selectedLine.type === 'column' && selectedLine.index === i))
|
|
|
+ curQue.voiceMatrix.columnSelection &&
|
|
|
+ (selectColumn === i ||
|
|
|
+ (selectedLine.type === 'column' && selectedLine.index === i))
|
|
|
? 'read'
|
|
|
: ''
|
|
|
]"
|
|
|
@mouseenter="checkboxMouseenter(selectColumn === i, 'column')"
|
|
|
>
|
|
|
<span
|
|
|
- v-if="row.type !== 'connection' && curQue.voiceMatrix.columnSelection"
|
|
|
+ v-if="
|
|
|
+ row.type !== 'connection' && curQue.voiceMatrix.columnSelection
|
|
|
+ "
|
|
|
v-show="
|
|
|
selectColumn === i ||
|
|
|
(selectedLine.type === 'column' && selectedLine.index === i)
|
|
@@ -72,8 +75,9 @@
|
|
|
:key="`start-${i}`"
|
|
|
:class="[
|
|
|
'column-wrapper',
|
|
|
- curQue.voiceMatrix.rowSelection && (selectRow === i ||
|
|
|
- (selectedLine.type === 'row' && selectedLine.index === i))
|
|
|
+ curQue.voiceMatrix.rowSelection &&
|
|
|
+ (selectRow === i ||
|
|
|
+ (selectedLine.type === 'row' && selectedLine.index === i))
|
|
|
? 'read'
|
|
|
: ''
|
|
|
]"
|
|
@@ -102,11 +106,16 @@
|
|
|
'column-wrapper',
|
|
|
(curQue.voiceMatrix.rowSelection && selectRow === i) ||
|
|
|
(curQue.voiceMatrix.columnSelection && selectColumn === j) ||
|
|
|
- (curQue.voiceMatrix.columnSelection && selectedLine.type === 'column' && selectedLine.index === j) ||
|
|
|
- (curQue.voiceMatrix.rowSelection && selectedLine.type === 'row' && selectedLine.index === i)
|
|
|
+ (curQue.voiceMatrix.columnSelection &&
|
|
|
+ selectedLine.type === 'column' &&
|
|
|
+ selectedLine.index === j) ||
|
|
|
+ (curQue.voiceMatrix.rowSelection &&
|
|
|
+ selectedLine.type === 'row' &&
|
|
|
+ selectedLine.index === i)
|
|
|
? 'read'
|
|
|
: '',
|
|
|
- (i === 0 && curQue.voiceMatrix.firstLineHighlight) || (j === row.length - 1 && curQue.voiceMatrix.lastColumnHighlight)
|
|
|
+ (i === 0 && curQue.voiceMatrix.firstLineHighlight) ||
|
|
|
+ (j === row.length - 1 && curQue.voiceMatrix.lastColumnHighlight)
|
|
|
? `highlight-${themeColor}`
|
|
|
: ''
|
|
|
]"
|
|
@@ -131,7 +140,8 @@
|
|
|
: '',
|
|
|
column.isTitle ? 'title' : ''
|
|
|
]"
|
|
|
- @click="matrixCellClick(i, j)"
|
|
|
+ @click="cellClickTimeout(i, j)"
|
|
|
+ @dblclick="matrixCelDblClick(i, j)"
|
|
|
>
|
|
|
<span>{{ column.text }}</span>
|
|
|
</div>
|
|
@@ -168,7 +178,8 @@
|
|
|
:style="{
|
|
|
'grid-template-columns': `repeat(${column.sentence_data.wordsList.length}, auto)`
|
|
|
}"
|
|
|
- @click="matrixCellClick(i, j)"
|
|
|
+ @click="cellClickTimeout(i, j)"
|
|
|
+ @dblclick="matrixCelDblClick(i, j)"
|
|
|
>
|
|
|
<template v-for="(word, w) in column.sentence_data.wordsList">
|
|
|
<span
|
|
@@ -201,8 +212,9 @@
|
|
|
<div
|
|
|
:key="`end-${i}`"
|
|
|
:class="[
|
|
|
- curQue.voiceMatrix.rowSelection && (selectRow === i ||
|
|
|
- (selectedLine.type === 'row' && selectedLine.index === i))
|
|
|
+ curQue.voiceMatrix.rowSelection &&
|
|
|
+ (selectRow === i ||
|
|
|
+ (selectedLine.type === 'row' && selectedLine.index === i))
|
|
|
? 'read'
|
|
|
: ''
|
|
|
]"
|
|
@@ -216,8 +228,9 @@
|
|
|
:key="`bottom-${i}`"
|
|
|
:class="[
|
|
|
'matrix-bottom',
|
|
|
- curQue.voiceMatrix.columnSelection && (selectColumn === i ||
|
|
|
- (selectedLine.type === 'column' && selectedLine.index === i))
|
|
|
+ curQue.voiceMatrix.columnSelection &&
|
|
|
+ (selectColumn === i ||
|
|
|
+ (selectedLine.type === 'column' && selectedLine.index === i))
|
|
|
? 'read'
|
|
|
: ''
|
|
|
]"
|
|
@@ -238,6 +251,7 @@
|
|
|
</template>
|
|
|
|
|
|
<script>
|
|
|
+import Bus from './components/Bus.js';
|
|
|
import AudioLine from "./AudioLine.vue";
|
|
|
import Soundrecord from "./Soundrecord.vue";
|
|
|
|
|
@@ -254,8 +268,7 @@ export default {
|
|
|
stopAudio: true,
|
|
|
unWatch: null,
|
|
|
lrcArray: [],
|
|
|
- // voicePauseSrc: require("../../../assets/common/icon-voice-red.png"),
|
|
|
- // voicePlaySrc: require("../../../assets/common/icon-voice-red-play.png"),
|
|
|
+ cellTimer: null,
|
|
|
fileName: "",
|
|
|
// 底色行、列
|
|
|
selectRow: -1,
|
|
@@ -305,6 +318,11 @@ export default {
|
|
|
this.handleParentPlay();
|
|
|
}
|
|
|
},
|
|
|
+ created() {
|
|
|
+ Bus.$on('audioPause', () => {
|
|
|
+ this.handleParentPlay();
|
|
|
+ });
|
|
|
+ },
|
|
|
methods: {
|
|
|
// 鼠标移入移出
|
|
|
matrixCellMouseenter(i, j, type) {
|
|
@@ -322,8 +340,15 @@ export default {
|
|
|
this.selectColumn = -1;
|
|
|
},
|
|
|
|
|
|
+ cellClickTimeout(row, column) {
|
|
|
+ clearTimeout(this.cellTimer);
|
|
|
+ this.cellTimer = setTimeout(() => { this.matrixCellClick(row, column); }, 200);
|
|
|
+ },
|
|
|
+
|
|
|
matrixCellClick(row, column) {
|
|
|
if (this.playing) this.handleParentPlay();
|
|
|
+ if (this.unWatch) this.unWatch();
|
|
|
+ this.lrcArray = [];
|
|
|
if (row === this.selectCell.row && column === this.selectCell.column) {
|
|
|
this.selectCell = { row: -1, column: -1 };
|
|
|
return;
|
|
@@ -340,6 +365,22 @@ export default {
|
|
|
if (!this.hasSelectedCell) this.handleParentPlay();
|
|
|
},
|
|
|
|
|
|
+ matrixCelDblClick(row, column) {
|
|
|
+ clearTimeout(this.cellTimer);
|
|
|
+ this.selectedLine = { type: "", index: -1 };
|
|
|
+ this.selectCell = { row, column };
|
|
|
+ this.handleChangeTime(
|
|
|
+ this.curQue.voiceMatrix.matrix[row][column].lrc_data
|
|
|
+ );
|
|
|
+ // 设置录音文件名
|
|
|
+ let { type, text, sentence_data } = this.curQue.voiceMatrix.matrix[row][
|
|
|
+ column
|
|
|
+ ];
|
|
|
+ this.fileName = `${type === "text" ? text : ""}${
|
|
|
+ type === "SentenceSegwordChs" ? sentence_data.sentence : ""
|
|
|
+ }`;
|
|
|
+ },
|
|
|
+
|
|
|
checkboxMouseenter(isSelected, type) {
|
|
|
if (!isSelected) return this.clearSelectCell();
|
|
|
if (type === "row") this.selectColumn = -1;
|
|
@@ -430,6 +471,8 @@ export default {
|
|
|
|
|
|
playChange(playing) {
|
|
|
this.playing = playing;
|
|
|
+ // 子组件通信,同时只能播放一个音频
|
|
|
+ if (playing) Bus.$emit('audioPause');
|
|
|
},
|
|
|
|
|
|
// 暂停音频播放
|
|
@@ -672,7 +715,6 @@ $select-color-brown-active: #a37557;
|
|
|
%column {
|
|
|
width: 100%;
|
|
|
height: 100%;
|
|
|
- padding: 7px 16px;
|
|
|
min-height: 32px;
|
|
|
background-color: #fff;
|
|
|
border: 1px solid $border-color;
|
|
@@ -697,6 +739,11 @@ $select-color-brown-active: #a37557;
|
|
|
background-color: transparent;
|
|
|
border-color: transparent;
|
|
|
}
|
|
|
+
|
|
|
+ > span {
|
|
|
+ display: inline-block;
|
|
|
+ padding: 7px 16px;
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
%column-red,
|
|
@@ -747,6 +794,7 @@ $select-color-brown-active: #a37557;
|
|
|
@extend %column;
|
|
|
|
|
|
display: inline-grid;
|
|
|
+ padding: 7px 16px;
|
|
|
column-gap: 8px;
|
|
|
justify-items: center;
|
|
|
justify-content: start;
|
|
@@ -836,8 +884,8 @@ $select-color-brown-active: #a37557;
|
|
|
</style>
|
|
|
|
|
|
<style lang="scss" scoped>
|
|
|
-.NNPE-tableList-tr-last{
|
|
|
- .voice-matrix{
|
|
|
+.NNPE-tableList-tr-last {
|
|
|
+ .voice-matrix {
|
|
|
padding-bottom: 0;
|
|
|
}
|
|
|
}
|
|
@@ -854,5 +902,11 @@ $select-color-brown-active: #a37557;
|
|
|
width: 100% !important;
|
|
|
}
|
|
|
}
|
|
|
+
|
|
|
+ .luyin-box {
|
|
|
+ .el-select .el-input {
|
|
|
+ width: 136px;
|
|
|
+ }
|
|
|
+ }
|
|
|
}
|
|
|
</style>
|