ソースを参照

收藏字词列表

natasha 3 年 前
コミット
68472d21cb

+ 34 - 11
src/components/Personalcenter/Mycollect.vue

@@ -42,11 +42,20 @@
                 class="check-img"
               />
             </div>
-            <Hanzi
-              :item="item"
-              :index="index"
-              @getMyCollectionList="getMyCollectionList"
-            />
+            <template v-if="/^[\u4e00-\u9fa5]/.test(item.new_word.new_word)">
+                <Hanzi
+                    :item="item"
+                    :index="index"
+                    @getMyCollectionList="getMyCollectionList"
+                />
+            </template>
+            <template v-else>
+                <Enword
+                    :item="item"
+                    :index="index"
+                    @getMyCollectionList="getMyCollectionList"
+                />
+            </template>
           </div>
           <div class="main-content" v-else-if="item.goods_type == 502">
             <div
@@ -59,12 +68,22 @@
                 class="check-img"
               />
             </div>
-            <Sentence
-              :key="item.id"
-              :sItem="item"
-              :index="index"
-              @getMyCollectionList="getMyCollectionList"
-            />
+            <template v-if="/^[\u4e00-\u9fa5]/.test(item.sentence.sentence_text)">
+                <Sentence
+                    :key="item.id"
+                    :sItem="item"
+                    :index="index"
+                    @getMyCollectionList="getMyCollectionList"
+                />
+            </template>
+            <template v-else>
+                <SentenceEn
+                    :key="item.id"
+                    :sItem="item"
+                    :index="index"
+                    @getMyCollectionList="getMyCollectionList"
+                />
+            </template>
           </div>
           <div class="main-content" v-else>
             <div class="main-content-left" @click.stop="jump(item)">
@@ -166,6 +185,8 @@ import Payment from "../common/Payment.vue";
 import { jumpPath } from "@/utils/jumpPath";
 import Hanzi from "../common/Hanzi.vue";
 import Sentence from "../common/Sentence.vue";
+import SentenceEn from "../common/SentenceEn.vue"
+import Enword from "../common/Enword.vue"
 
 export default {
   name: "MyCollect",
@@ -178,6 +199,8 @@ export default {
     Payment,
     Hanzi,
     Sentence,
+    SentenceEn,
+    Enword,
   },
   props: {},
   data() {

+ 123 - 16
src/components/common/Enword.vue

@@ -1,37 +1,53 @@
 <!--  -->
 <template>
   <div class="enword">
+    <div class="enword-left">
+        <span class="word">{{ item.new_word.new_word }}</span>
+        <div class="enword-main" v-if="item.new_word.pinyin||item.new_word.audio_file_url">
+            <span class="pron" v-if="item.new_word.pinyin">/{{ item.new_word.pinyin }}/</span>
+            <Audio :mp3="item.new_word.audio_file_url" class="enword-voice" />
+        </div>
+        <div class="enword-inpt" v-for="(fy, i) in item.new_word.definition_list" :key="i">
+            <i v-if="fy.indexOf('. ')>-1">
+              {{ fy.substring(0, fy.indexOf(". ")>-1?fy.indexOf(". ") + 2:0) }}
+            </i>
+            <div>
+              {{ fy.substring(fy.indexOf(". ")>-1?fy.indexOf(". ") + 2:0, fy.length) }}
+            </div>
+        </div>
+        <div class="resource" v-if="item.resource">{{ item.resource }}</div>
+        <div class="create_time" v-if="item.create_time">
+            {{ item.create_time }}
+        </div>
+    </div>
     <div class="enword-top">
-      <span class="word">{{ item.new_word.new_word }}</span>
       <div class="cancle-coll" @click="cancleColl">
         <span class="coll-icon"></span>
         <span class="coll-text">取消收藏</span>
       </div>
+      <span class="look-more" @click="lookMore">查看更多</span>
     </div>
-    <div class="enword-main">
-      <span class="pron">{{ item.new_word.pinyin }}</span>
-      <Audio :mp3="item.new_word.audio_file_url" :themeColor="themeColor" />
-    </div>
-    <div class="enword-inpt">
-      <span class="cixing">n.</span>
-      <span class="intp">时间表,进度表</span>
-    </div>
-    <div class="resoure">
-      来自:新航标英语 / 第一单元 / 第一课 家庭、生活/课文一
-    </div>
-    <div class="create_time">
-      {{ create_time }}
+    <div class="practiceBox" v-if="isIntpShow">
+      <WordPhraseDetailEn
+        :currentTreeID="currentTreeID"
+        :closeWord="changeIntpShow"
+        :data="item"
+      />
     </div>
   </div>
 </template>
 
 <script>
 import Audio from "./AudioRed.vue";
+import WordPhraseDetailEn from "./WordPhraseDetailEn.vue";
+import { getLearnWebContent } from "@/api/ajax";
 export default {
-  components: { Audio },
+  components: { Audio, WordPhraseDetailEn },
   props: ["item", "themeColor"],
   data() {
-    return {};
+    return {
+        isIntpShow: false,
+    };
   },
   computed: {},
   watch: {},
@@ -47,6 +63,12 @@ export default {
         this.$emit("getMyCollectionList");
       });
     },
+    lookMore() {
+      this.isIntpShow = true;
+    },
+    changeIntpShow() {
+      this.isIntpShow = false;
+    },
   },
   //生命周期 - 创建完成(可以访问当前this实例)
   created() {},
@@ -63,4 +85,89 @@ export default {
 </script>
 <style lang='scss' scoped>
 //@import url(); 引入公共css类
+.enword{
+    width: 100%;
+    display: flex;
+}
+.enword-left{
+    flex: 1;
+    .word{
+        font-weight: bold;
+        font-size: 24px;
+        line-height: 32px;
+        color: rgba(0, 0, 0, 0.85);
+        margin-bottom: 8px;
+        display: block;
+    }
+    .enword-main{
+        display: flex;
+        margin-bottom: 8px;
+        .pron{
+            font-size: 16px;
+            line-height: 24px;
+            color: rgba(0, 0, 0, 0.85);
+            margin-right: 12px;
+        }
+        .enword-voice{
+            width: 16px;
+        }
+    }
+    .enword-inpt{
+        margin-bottom: 8px;
+        font-size: 16px;
+        line-height: 24px;
+        color: rgba(0, 0, 0, 0.85);
+        display: flex;
+        i{
+            margin-right: 12px;
+        }
+        div{
+            flex: 1;
+        }
+    }
+    .resource,.create_time{
+        color: #2C2C2C;
+        opacity: 0.5;
+        font-size: 14px;
+        line-height: 22px;
+        margin-bottom: 8px;
+    }
+}
+.enword-top{
+    width: 102px;
+    text-align: center;
+}
+.cancle-coll {
+    float: right;
+    padding: 0 12px;
+    height: 32px;
+    display: flex;
+    justify-content: flex-start;
+    align-items: center;
+    cursor: pointer;
+    border: 1px solid rgba(0, 0, 0, 0.1);
+    box-sizing: border-box;
+    border-radius: 4px;
+    margin-bottom: 38px;
+    > .coll-icon {
+        width: 16px;
+        height: 16px;
+        background: url("../../assets/starfill-16-normal-red.png") no-repeat
+            left top;
+        background-size: 100% 100%;
+        margin-right: 4px;
+    }
+    > .coll-text {
+        font-size: 14px;
+        line-height: 22px;
+        color: #000000;
+    }
+}
+.look-more {
+    font-size: 14px;
+    line-height: 22px;
+    color: rgba(0, 0, 0, 0.85);
+    opacity: 0.5;
+    cursor: pointer;
+}
 </style>

+ 1 - 1
src/components/common/Hanzi.vue

@@ -106,7 +106,7 @@ export default {
         this.$emit("getMyCollectionList");
       });
     },
-    viewIntp() {
+    lookMore() {
       this.isIntpShow = true;
     },
     changeIntpShow() {

+ 712 - 0
src/components/common/WordPhraseDetailEn.vue

@@ -0,0 +1,712 @@
+<template>
+  <div
+    v-if="height"
+    class="Module"
+    :style="{
+      height: height,
+      maxHeight: height,
+    }"
+  >
+    <div class="module-inner">
+      <div class="top" v-if="data">
+        <div class="operation">
+          <div>
+            <img
+              style="margin-right: 8px"
+              src="../../assets/Left-16-normal-Black.png"
+              alt=""
+              @click="lastDetail"
+              v-if="!notshowNext"
+            />
+            <img
+              src="../../assets/Right-16-normal-Black.png"
+              alt=""
+              @click="nextDetail"
+              v-if="!notshowNext"
+            />
+            <img
+              @click="closeWordShow"
+              src="../../assets/Cross-16-normal-Black.png"
+              alt=""
+            />
+          </div>
+        </div>
+        <div class="wordDetail">
+          <p class="word">{{ data.new_word }}</p>
+          <div class="yinpin" v-if="data.pinyin">
+            <span> /{{ data.pinyin }}/</span>
+            <img
+              @click="palyAudio('deafult')"
+              :src="playBtn == 'deafult' ? voicePlaySrc : voicePauseSrc"
+              alt=""
+              v-if="
+                data.mp3_list &&
+                data.mp3_list.length > 0 &&
+                playWord == 'deafult' &&
+                voiceSrc
+              "
+            />
+            <img
+              @click="palyAudio('deafult')"
+              :src="voicePauseSrc"
+              alt=""
+              v-else-if="data.mp3_list && data.mp3_list.length > 0"
+            />
+            <audio
+              v-if="data.mp3_list && data.mp3_list.length > 0"
+              id="deafult"
+              :src="data.mp3_list[0].id"
+            ></audio>
+          </div>
+          <p class="jieshu" v-for="(fy, i) in data.definition_list" :key="i">
+            <template v-if="fy.indexOf('. ') > -1">
+              <i>{{ fy.substring(0, fy.indexOf(". ") + 2) }}</i>
+              <span
+                >{{ fy.substring(fy.indexOf(". ") + 2, fy.length)
+                }}{{
+                  i == data.definition_list.length - 1 ? "" : ";"
+                }}</span
+              >
+            </template>
+            <template v-else>
+              <span>{{
+                i == data.definition_list.length - 1 ? fy : fy + ";"
+              }}</span>
+            </template>
+          </p>
+        </div>
+        <div class="zhedie">
+          <div v-if="list1 && list1.length > 0">
+            <div class="topTitle">
+              <span>本课例句({{list1.length}})</span>
+              <span @click="handleChangeTab('wordShow')"
+                >{{ wordShow ? "收起" : "展开" }}
+                <img
+                  v-if="wordShow"
+                  src="../../assets/down-black.png"
+                  alt=""
+                />
+                <img
+                  v-else
+                  class="rotate"
+                  src="../../assets/up-black.png"
+                  alt=""
+                />
+              </span>
+            </div>
+            <el-collapse-transition>
+              <div class="liju" v-if="wordShow">
+                <div v-for="(item, i) in list1" :key="i">
+                  <div>{{ i + 1 }}.</div>
+                  <div style="flex: 1">
+                    <p v-html="item.res">
+                    </p>
+                    <p class="p2">
+                      来源:{{ item.source_courseware_name_path }}
+                    </p>
+                  </div>
+                </div>
+              </div>
+            </el-collapse-transition>
+          </div>
+          <div v-if="list2 && list2.length > 0">
+            <div class="topTitle">
+              <span>本书例句({{list2.length}})</span>
+              <span @click="handleChangeTab('wordShow2')"
+                >{{ wordShow2 ? "收起" : "展开" }}
+                <img
+                  v-if="wordShow2"
+                  src="../../assets/down-black.png"
+                  alt=""
+                />
+                <img
+                  v-else
+                  class="rotate"
+                  src="../../assets/up-black.png"
+                  alt=""
+                />
+              </span>
+            </div>
+            <el-collapse-transition>
+              <div class="liju" v-if="wordShow2">
+                <div v-for="(item, i) in list2" :key="i">
+                  <div>{{ i + 1 }}.</div>
+                  <div style="flex: 1">
+                    <p v-html="item.res">
+                    <p class="p2">
+                      来源:{{ item.source_courseware_name_path }}
+                    </p>
+                  </div>
+                </div>
+              </div>
+            </el-collapse-transition>
+          </div>
+          <div v-if="list3 && list3.length > 0">
+            <div class="topTitle">
+              <span>本套教材例句({{list3.length}})</span>
+              <span @click="handleChangeTab('wordShow3')"
+                >{{ wordShow3 ? "收起" : "展开" }}
+                <img
+                  v-if="wordShow3"
+                  src="../../assets/down-black.png"
+                  alt=""
+                />
+                <img
+                  v-else
+                  class="rotate"
+                  src="../../assets/up-black.png"
+                  alt=""
+                />
+              </span>
+            </div>
+            <el-collapse-transition>
+              <div class="liju" v-if="wordShow3">
+                <div v-for="(item, i) in list3" :key="i">
+                  <div>{{ list3.length + i + 1 }}.</div>
+                  <div style="flex: 1">
+                    <p v-html="item.res">
+                    <p class="p2">
+                      来源:{{ item.source_courseware_name_path }}
+                    </p>
+                  </div>
+                </div>
+              </div>
+            </el-collapse-transition>
+          </div>
+        </div>
+      </div>
+      <div class="bottom" v-if="data && data.endata">
+        <div class="from">
+          来自网易有道<img
+            @click="closeWordShow"
+            src="../../assets/Cross-16-normal-Black.png"
+            alt=""
+            v-if="!data"
+          />
+        </div>
+        <div class="wordDetail">
+          <p class="word">
+            {{
+              data.endata && data.endata["query"]
+                ? data.endata["query"]
+                : data.new_word
+            }}
+          </p>
+          <div class="yinpin">
+            <div class="yinpin-box">
+              <span>英 </span>
+              <span v-if='data.endata["uk-phonetic"]'> /{{ data.endata["uk-phonetic"] }}/</span>
+              <img
+                @click="palyAudio('Y')"
+                :src="playBtn == 'Y' ? voicePlaySrc : voicePauseSrc"
+                alt=""
+                v-if="
+                  data.endata &&
+                  data.endata['uk-sound'] &&
+                  playWord == 'Y' &&
+                  voiceSrc
+                "
+              />
+              <img
+                @click="palyAudio('Y')"
+                :src="voicePauseSrc"
+                alt=""
+                v-else-if="data.endata && data.endata['uk-sound']"
+              />
+              <audio id="Y" :src="data.endata['uk-sound']"></audio>
+            </div>
+            <div>
+              <span>美 </span>
+              <span v-if='data.endata["us-phonetic"]'> /{{ data.endata["us-phonetic"] }}/</span>
+              <img
+                @click="palyAudio('M')"
+                :src="playBtn == 'M' ? voicePlaySrc : voicePauseSrc"
+                alt=""
+                v-if="
+                  data.endata &&
+                  data.endata['us-sound'] &&
+                  playWord == 'M' &&
+                  voiceSrc
+                "
+              />
+              <img
+                @click="palyAudio('M')"
+                :src="voicePauseSrc"
+                alt=""
+                v-else-if="data.endata && data.endata['us-sound']"
+              />
+              <audio id="M" :src="data.endata['us-sound']"></audio>
+            </div>
+          </div>
+          <div class="jieshu" v-for="(fy, i) in data.endata.part" :key="i">
+            <i>
+              {{ fy.part }}
+            </i>
+            <div>
+              {{ fy.exp }}
+            </div>
+          </div>
+        </div>
+      </div>
+    </div>
+  </div>
+</template>
+
+<script>
+//这里可以导入其它文件(比如:组件,工具js,第三方插件js,json文件,图片文件等等)
+//例如:import 《组件名称》from ‘《组件路径》';
+import { LearnWebSI, getContent } from "@/api/ajax";
+export default {
+  //import引入的组件需要注入到对象中才能使用
+  components: {},
+  props: [
+    "data",
+    "curQue",
+    "changeDetailIndex",
+    "closeWord",
+    "detailIndex",
+    "notshowNext",
+    "currentTreeID"
+  ],
+  data() {
+    //这里存放数据
+    return {
+      height: "",
+      margintop: "",
+      wordShow: true,
+      wordShow2: false,
+      wordShow3: false,
+      list1: [],
+      list2: [],
+      list3: [],
+      playWord: "",
+      playBtn: "",
+      voiceSrc: require("../../assets/play-red.png"),
+      voicePauseSrc: require("../../assets/play-red.png"),
+      voicePlaySrc: require("../../assets/icon-voice-play-red.png"),
+      collFlag: false,
+    };
+  },
+  // 计算属性 类似于data概念
+  computed: {},
+  // 监控data中数据变化
+  watch: {},
+  // 方法集合
+  methods: {
+    palyAudio(new_word) {
+      let node = document.getElementById(new_word);
+      this.playWord = new_word;
+      if (node) {
+        node.play();
+        this.voiceSrc = this.voicePlaySrc;
+        this.playBtn = new_word;
+      }
+      this.handleListenPlay();
+    },
+    handleListenPlay() {
+      let _this = this;
+
+      if (_this.playWord) {
+        let node = document.getElementById(_this.playWord);
+        node.addEventListener("play", function () {});
+        node.addEventListener("pause", function () {
+          _this.playBtn = "";
+        });
+        node.addEventListener("ended", function () {
+          _this.playBtn = "";
+        });
+      }
+    },
+    // 关闭单词详情
+    closeWordShow() {
+      this.closeWord(false);
+    },
+    // 上一个单词详情
+    lastDetail() {
+      if (this.detailIndex == 0) {
+        this.$message.warning("当前已经是第一个");
+        return;
+      }
+      this.changeDetailIndex("last");
+    },
+    // 下一个单词详情
+    nextDetail() {
+      if (this.detailIndex == this.curQue.option.length - 1) {
+        this.$message.warning("当前已经是最后一个了 ");
+        return;
+      }
+      this.changeDetailIndex("next");
+    },
+    handleChangeTab(flag) {
+      this[flag] = !this[flag];
+    },
+    viewIntp() {
+      this.loading1 = true;
+      this.loading2 = true;
+      this.loading3 = true;
+      let Mname =
+        "book-courseware_manager-GetCoursewareWordExampleSentenceList";
+      // 获取本课的 本教材的 本套的 的例句
+      getContent(Mname, {
+        courseware_id: this.currentTreeID, // 课件id
+        word: this.data.new_word, //生词
+        search_scope: 0, //检索范围0 本课件  1本教材 2本套
+        is_contain_word_variants: false,
+      })
+        .then((res) => {
+          this.loading1 = false;
+          this.list1 = this.handleExample(res.sentence_list);
+          console.log(this.list1);
+          getContent(Mname, {
+            courseware_id: this.currentTreeID, // 课件id
+            word: this.data.new_word, //生词
+            search_scope: 1, //检索范围0 本课件  1本教材 2本套
+            is_contain_word_variants: false,
+          })
+            .then((res) => {
+              this.loading2 = false;
+              this.list2 = this.handleExample(res.sentence_list);
+              getContent(Mname, {
+                courseware_id: this.currentTreeID, // 课件id
+                word: this.data.new_word, //生词
+                search_scope: 2, //检索范围0 本课件  1本教材 2本套
+                is_contain_word_variants: false,
+              })
+                .then((res) => {
+                  this.loading3 = false;
+                  this.list3 = this.handleExample(res.sentence_list);
+                })
+                .catch((err) => {
+                  this.loading3 = false;
+                });
+            })
+            .catch((err) => {
+              this.loading2 = false;
+            });
+        })
+        .catch((err) => {
+          this.loading1 = false;
+        });
+    },
+    // 处理例句高亮数据
+    handleExample(list) {
+        let _this = this;
+        // let list1Ora = JSON.parse(JSON.stringify(_this.data.list1))
+        list = list.map((item,index) =>{
+            let position_str = []
+            let sentence = JSON.parse(JSON.stringify(item.sentence))
+            let res = ""
+            for(let i=0;i<item.position_list.length;i++){
+                let part1 = "";
+                let part2 = "";
+                let part3 = "";
+                if(item.position_list.length>1){
+                    if(i==0){
+                        part1 = sentence.substring(0, item.position_list[i].begin);
+                        part2 = sentence.substring(item.position_list[i].begin,item.position_list[i].end);
+                        part3 = sentence.substring(item.position_list[i].end,item.position_list[i+1].begin)
+                    }else if(i==item.position_list.length-1){
+                        part1 = "";
+                        part2 = sentence.substring(item.position_list[i].begin,item.position_list[i].end);
+                        part3 = sentence.substring(item.position_list[i].end)
+                    }else{
+                        part1 = "";
+                        part2 = sentence.substring(item.position_list[i].begin,item.position_list[i].end);
+                        part3 = sentence.substring(item.position_list[i].end,item.position_list[i+1].begin)
+                    }
+                }else{
+                    part1 = sentence.substring(0, item.position_list[i].begin);
+                    part2 = sentence.substring(item.position_list[i].begin,item.position_list[i].end);
+                    part3 = sentence.substring(item.position_list[i].end)
+                }
+                res +=  part1 + '<span style="color:#DE4444;">' + part2 + "</span>" + part3;
+            }
+            item.res = res;
+            return item
+        })
+        return list;
+    },
+  },
+  //生命周期 - 创建完成(可以访问当前this实例)
+  created() {
+      this.viewIntp();
+  },
+  //生命周期 - 挂载完成(可以访问DOM元素)
+  mounted() {
+    let Fathernode = document.getElementsByClassName(
+      "NNPE-Big-Book-preview"
+    )[0];
+    if (Fathernode) {
+      //   this.height = Fathernode.clientHeight + "px";
+      this.height = Fathernode.clientHeight + "px";
+      // this.margintop = "-" + window.innerHeight / 2 + "px";
+    }
+  },
+  //生命周期-创建之前
+  beforeCreated() {},
+  //生命周期-挂载之前
+  beforeMount() {},
+  //生命周期-更新之前
+  beforUpdate() {},
+  //生命周期-更新之后
+  updated() {},
+  //生命周期-销毁之前
+  beforeDestory() {},
+  //生命周期-销毁完成
+  destoryed() {},
+  //如果页面有keep-alive缓存功能,这个函数会触发
+  activated() {},
+};
+</script>
+<style lang="scss" scoped>
+/* @import url(); 引入css类 */
+.Module {
+  position: fixed;
+  width: 100%;
+  max-height: 100% !important;
+  left: 0;
+  top: 0;
+  z-index: 999;
+  background: rgba(0, 0, 0, 0.33);
+  overflow-y: scroll;
+  .module-inner {
+    // position: fixed;
+    // top: 0%;
+    // left: 50%;
+    // margin-left: -394px;
+    width: 788px;
+    margin: 0 auto;
+    > div {
+      width: 788px;
+      margin-left: 36px;
+      background: #ffffff;
+      box-shadow: 0px 4px 24px rgba(0, 0, 0, 0.25);
+      border-radius: 8px;
+      padding-top: 16px;
+      .operation {
+        height: 24px;
+        div {
+          float: right;
+          margin-right: 16px;
+          > :nth-child(1) {
+            margin-right: 16px;
+          }
+          > :nth-child(2) {
+            margin-right: 8px;
+          }
+          > :nth-child(3) {
+            margin-right: 16px;
+          }
+          > :last-child{
+              margin-right: 0;
+          }
+        }
+
+        img {
+          width: 16px;
+          height: 16px;
+          cursor: pointer;
+        }
+      }
+    }
+  }
+  .top {
+    margin-top: 33px;
+    padding-bottom: 42px;
+    .wordDetail {
+      width: 538px;
+      margin-left: 40px;
+      padding-bottom: 23px;
+      p {
+        margin: 0;
+      }
+      .word {
+        font-weight: bold;
+        font-size: 24px;
+        line-height: 28px;
+        color: #7b61ff;
+      }
+      .yinpin {
+        font-size: 16px;
+        line-height: 150%;
+        color: #000000;
+        margin-top: 16px;
+        display: flex;
+        align-items: center;
+        justify-content: flex-start;
+        > div {
+          height: 16px;
+          display: flex;
+          align-items: center;
+        }
+      }
+      img {
+        margin-left: 10px;
+        width: 16px;
+        height: 16px;
+        cursor: pointer;
+      }
+      .jieshu {
+        margin-top: 16px;
+        font-size: 16px;
+        line-height: 150%;
+        color: #000000;
+      }
+    }
+    .zhedie {
+      width: 708px;
+      margin: 0 auto;
+      > div {
+        margin-bottom: 16px;
+      }
+      .topTitle {
+        width: 100%;
+        display: flex;
+        justify-content: space-between;
+        padding: 0 12px;
+        align-items: center;
+        background: #fff !important;
+        height: 40px;
+        background: #fff !important;
+        border: 1px solid rgba(0, 0, 0, 0.1);
+        -webkit-box-sizing: border-box;
+        box-sizing: border-box;
+        border-radius: 8px 8px 0px 0px;
+        > :nth-child(1) {
+          font-weight: 500;
+          font-size: 16px;
+          line-height: 150%;
+          color: rgba(0, 0, 0, 0.85);
+        }
+        > :nth-child(2) {
+          display: flex;
+          align-items: center;
+          font-weight: normal;
+          font-size: 14px;
+          line-height: 22px;
+          color: rgba(0, 0, 0, 0.85);
+          cursor: pointer;
+        }
+        img {
+          width: 16px;
+          height: 16px;
+          margin-left: 4px;
+        }
+        .rotate {
+          animation-name: firstrotate;
+          animation-direction: 2s;
+          animation-fill-mode: both;
+          animation-timing-function: linear;
+        }
+      }
+      .liju {
+        padding-bottom: 16px;
+        padding-right: 24px;
+        background: #f7f7f7;
+        border: 1px solid rgba(0, 0, 0, 0.1);
+        border-top: none;
+        border-radius: 0 0 4px 4px;
+        > div {
+          padding-top: 16px;
+          margin-left: 8px;
+          display: flex;
+
+          > :nth-child(1) {
+            margin-right: 6px;
+            line-height: 24px;
+          }
+          p {
+            margin: 0;
+            line-height: 24px;
+            font-size: 16px;
+            color: rgba(0, 0, 0, 0.85);
+            word-break: break-word;
+          }
+          .p2 {
+            font-size: 12px;
+            line-height: 20px;
+            color: rgba(0, 0, 0, 0.85);
+            opacity: 0.3;
+          }
+        }
+      }
+    }
+  }
+  .bottom {
+    margin-top: 16px;
+    padding-bottom: 23px;
+    .from {
+      //   text-align: right;
+      margin-right: 16px;
+      font-size: 14px;
+      line-height: 16px;
+      color: #000000;
+      opacity: 0.2;
+      display: flex;
+      justify-content: flex-end;
+      align-items: center;
+      img {
+        width: 16px;
+        margin-left: 16px;
+        cursor: pointer;
+      }
+    }
+    .wordDetail {
+      width: 708px;
+      margin-left: 40px;
+      padding-bottom: 23px;
+      border-bottom: 1px solid rgba(0, 0, 0, 0.1);
+      p {
+        margin: 0;
+      }
+      .word {
+        font-weight: bold;
+        font-size: 24px;
+        line-height: 28px;
+        color: #7b61ff;
+      }
+      .yinpin {
+        font-size: 16px;
+        line-height: 150%;
+        color: #000000;
+        margin-top: 16px;
+        display: flex;
+        justify-content: flex-start;
+        align-items: center;
+        > div {
+          height: 24px;
+          display: flex;
+          align-items: center;
+          > :nth-child(1) {
+            margin-right: 5px;
+          }
+        }
+        > :nth-child(2) {
+          margin-left: 27px;
+        }
+        img {
+          margin-left: 10px;
+          width: 16px;
+          height: 16px;
+          cursor: pointer;
+        }
+      }
+      .jieshu {
+        margin-top: 16px;
+        font-size: 16px;
+        line-height: 150%;
+        color: #000000;
+        display: flex;
+        > :nth-child(1) {
+          //   width: 30px;
+          //   text-align: right;
+          margin-right: 5px;
+        }
+        :nth-child(2) {
+          max-width: 524px;
+        }
+      }
+    }
+  }
+}
+</style>