|  | @@ -27,12 +27,11 @@
 | 
	
		
			
				|  |  |            class="word-score-item"
 | 
	
		
			
				|  |  |            v-for="(item, index) in sentDataList"
 | 
	
		
			
				|  |  |            :key="index"
 | 
	
		
			
				|  |  | -          :class="[item.tokens[9] === '' ? 'marginRight' : '']"
 | 
	
		
			
				|  |  |          >
 | 
	
		
			
				|  |  |            <label v-if="item.score !== null" :style="bgStyle(item.score)">{{
 | 
	
		
			
				|  |  |              item.score
 | 
	
		
			
				|  |  |            }}</label>
 | 
	
		
			
				|  |  | -          <p :style="wordStyle(item.score)">{{ item.tokens[2] }}</p>
 | 
	
		
			
				|  |  | +          <p :style="wordStyle(item.score)">{{ item.word }}</p>
 | 
	
		
			
				|  |  |          </div>
 | 
	
		
			
				|  |  |        </div>
 | 
	
		
			
				|  |  |      </div>
 | 
	
	
		
			
				|  | @@ -45,12 +44,13 @@
 | 
	
		
			
				|  |  |  export default {
 | 
	
		
			
				|  |  |    //import引入的组件需要注入到对象中才能使用
 | 
	
		
			
				|  |  |    components: {},
 | 
	
		
			
				|  |  | -  props: ["sentData", "scoreInfo", "wordFontsize"],
 | 
	
		
			
				|  |  | +  props: ["sentData", "scoreAllInfo", "wordFontsize"],
 | 
	
		
			
				|  |  |    data() {
 | 
	
		
			
				|  |  |      //这里存放数据
 | 
	
		
			
				|  |  |      return {
 | 
	
		
			
				|  |  |        speed: 0,
 | 
	
		
			
				|  |  |        sentDataList: JSON.parse(JSON.stringify(this.sentData)),
 | 
	
		
			
				|  |  | +      scoreInfo: JSON.parse(this.scoreAllInfo.current.rec_rate_info),
 | 
	
		
			
				|  |  |      };
 | 
	
		
			
				|  |  |    },
 | 
	
		
			
				|  |  |    //计算属性 类似于data概念
 | 
	
	
		
			
				|  | @@ -100,26 +100,45 @@ export default {
 | 
	
		
			
				|  |  |        this.$emit("closeScoreInfo");
 | 
	
		
			
				|  |  |      },
 | 
	
		
			
				|  |  |      handleData() {
 | 
	
		
			
				|  |  | -      // console.log(this.scoreInfo);
 | 
	
		
			
				|  |  | -      // console.log(this.sentDataList);
 | 
	
		
			
				|  |  | -      let lemmerIndex = 0;
 | 
	
		
			
				|  |  |        let json_result = this.scoreInfo.json_result;
 | 
	
		
			
				|  |  |        this.speed = Math.floor(
 | 
	
		
			
				|  |  |          (this.scoreInfo.json_result.length / this.scoreInfo.audio_time) * 60
 | 
	
		
			
				|  |  |        );
 | 
	
		
			
				|  |  | -      this.sentDataList.forEach((item) => {
 | 
	
		
			
				|  |  | -        if (
 | 
	
		
			
				|  |  | -          json_result[lemmerIndex] &&
 | 
	
		
			
				|  |  | -          (item.tokens[3].toLowerCase() === json_result[lemmerIndex].word ||
 | 
	
		
			
				|  |  | -            item.tokens[4] === json_result[lemmerIndex].word ||
 | 
	
		
			
				|  |  | -            item.tokens[5] === json_result[lemmerIndex].word)
 | 
	
		
			
				|  |  | -        ) {
 | 
	
		
			
				|  |  | -          item.score = json_result[lemmerIndex].score;
 | 
	
		
			
				|  |  | -          lemmerIndex += 1;
 | 
	
		
			
				|  |  | -        } else {
 | 
	
		
			
				|  |  | -          item.score = null;
 | 
	
		
			
				|  |  | +      let result = [];
 | 
	
		
			
				|  |  | +      let idx = 0;
 | 
	
		
			
				|  |  | +      let sentText = this.sentDataList[0].text;
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +      json_result.forEach((scoreNode) => {
 | 
	
		
			
				|  |  | +        // 寻找当前单词在sentText中的位置,忽略大小写
 | 
	
		
			
				|  |  | +        let wordStart = sentText
 | 
	
		
			
				|  |  | +          .toLowerCase()
 | 
	
		
			
				|  |  | +          .indexOf(scoreNode.word.toLowerCase(), idx);
 | 
	
		
			
				|  |  | +        if (wordStart >= idx) {
 | 
	
		
			
				|  |  | +          // 添加前面的非单词部分(空格和标点)
 | 
	
		
			
				|  |  | +          if (wordStart > idx) {
 | 
	
		
			
				|  |  | +            result.push({
 | 
	
		
			
				|  |  | +              word: sentText.substring(idx, wordStart),
 | 
	
		
			
				|  |  | +              score: null,
 | 
	
		
			
				|  |  | +            });
 | 
	
		
			
				|  |  | +          }
 | 
	
		
			
				|  |  | +          // 添加当前单词及其得分
 | 
	
		
			
				|  |  | +          result.push({
 | 
	
		
			
				|  |  | +            word: sentText.substring(
 | 
	
		
			
				|  |  | +              wordStart,
 | 
	
		
			
				|  |  | +              wordStart + scoreNode.word.length
 | 
	
		
			
				|  |  | +            ),
 | 
	
		
			
				|  |  | +            score: scoreNode.score,
 | 
	
		
			
				|  |  | +          });
 | 
	
		
			
				|  |  | +          // 更新idx为当前单词之后的位置
 | 
	
		
			
				|  |  | +          idx = wordStart + scoreNode.word.length;
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  |        });
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +      // 处理最后一个单词后可能的标点符号或空格
 | 
	
		
			
				|  |  | +      if (idx < sentText.length) {
 | 
	
		
			
				|  |  | +        result.push({ word: sentText.substring(idx), score: null });
 | 
	
		
			
				|  |  | +      }
 | 
	
		
			
				|  |  | +      this.sentDataList = result;
 | 
	
		
			
				|  |  |      },
 | 
	
		
			
				|  |  |    },
 | 
	
		
			
				|  |  |    //生命周期 - 创建完成(可以访问当前this实例)
 | 
	
	
		
			
				|  | @@ -211,11 +230,7 @@ export default {
 | 
	
		
			
				|  |  |        row-gap: 8px;
 | 
	
		
			
				|  |  |        .word-score-item {
 | 
	
		
			
				|  |  |          text-align: center;
 | 
	
		
			
				|  |  | -        padding: 0 3px;
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -        &.marginRight {
 | 
	
		
			
				|  |  | -          padding-right: 0;
 | 
	
		
			
				|  |  | -        }
 | 
	
		
			
				|  |  |          > label {
 | 
	
		
			
				|  |  |            color: #fff;
 | 
	
		
			
				|  |  |            font-size: 12px;
 | 
	
	
		
			
				|  | @@ -230,6 +245,7 @@ export default {
 | 
	
		
			
				|  |  |            font-weight: 700;
 | 
	
		
			
				|  |  |            line-height: 36px;
 | 
	
		
			
				|  |  |            margin: 0;
 | 
	
		
			
				|  |  | +          white-space: pre;
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  |        }
 | 
	
		
			
				|  |  |      }
 |