杨磊
17 小时以前 87c87f989dcc3027407eccde48a6b35f0f999570
src/views/achievements/details.vue
@@ -29,7 +29,7 @@
          <p v-if="details.keyWords && details.keyWords.length > 0">
            <span>关键词:</span>
            <span class="page-main-keyword" v-for="(item, index) in details.keyWords" :key="index">{{ item
            }}</span>
              }}</span>
          </p>
          <p v-if="details.cmsItemType != 'video' && details.cmsItemType != 'audio'">
            <el-button @click="openPdf(details.name)">查看全文</el-button>
@@ -78,14 +78,17 @@
        </li>
      </ul>
    </div>
    <el-dialog v-model="dialogVisible" :title="pdfName" width="60vw" top="2vh" bottom="2vh"
    <el-empty v-if="!loading && details == ''"></el-empty>
    <el-dialog v-model="dialogVisible" :title="pdfName" width="60vw" top="3vh" bottom="2vh"
      :visible.sync="dialogVisible" class="custom-dialog">
      <div class="pdfInfoBox">
      <div class="pdfInfoBox" v-loading="pdfLoading" element-loading-text="图片加载中"
        element-loading-spinner="el-icon-loading" element-loading-background="rgba(0, 0, 0, 0)">
        <div v-for="(item, index) in pdfList" :key="index" class="pdfItem" :page="index + 1">
          <img :src="item.showSrc" alt="" style="min-height: 550px" loading="lazy" />
          <el-divider content-position="center"> 第 {{ index + 1 }} 页 </el-divider>
        </div>
      </div>
      <el-empty v-if="!pdfLoading && !pdfList.length"></el-empty>
    </el-dialog>
  </div>
</template>
@@ -152,13 +155,12 @@
      // 查询结果
      resultList: [],
      loading: false,
      pdfLoading: false,
    };
  },
  async mounted() {
    await this.getContent(this.$route.query.id);
    await this.getSelectData();
    console.log(this.details, "请求出来的数据");
    // 查找关键词相匹配的文章
    if (this.details.keyWords && this.details.keyWords.length) {
      for (let i = 0; i < this.details.keyWords.length; i++) {
@@ -167,6 +169,7 @@
        this.inputType = "keyWords"
        await this.getItemListOne()
      }
      this.loading = false;
      console.log(this.resultList, "处理好的");
    } else {
      this.getItemList()
@@ -174,10 +177,12 @@
    if (this.resultList.length == 0) {
      this.getItemList()
    }
    //处理文件
    if (this.details.cmsItemType == "video" || this.details.cmsItemType == "audio") {
      if (this.details.file != "") {
        this.details.src = await this.getResourcePath(this.details.file)
        console.log(this.details.src, "视频地址");
      }
    }
@@ -193,6 +198,7 @@
  methods: {
    // 根据id请求该页面数据
    async getContent(id) {
      this.loading = true;
      const res = await MG.resource
        .getItem({
          path: "*",
@@ -219,14 +225,13 @@
          // 设置一个默认值或者进行其他错误处理
          item.keyWords = [];
        }
        if(item.author && item.author.length>0){
        if (item.author && item.author.length > 0) {
          item.author = item.author.split(";");
        }
        const foundItem = this.category.list.find((citem) => citem.value == item.cmsItemType);
        item.resourceTypeName = foundItem ? foundItem.name : '';
      })
      this.details = res.datas[0]
      this.loading = false;
    },
    // 在此点击详情
@@ -248,6 +253,7 @@
      if (this.resultList.length == 0) {
        this.getItemList()
      }
      //处理文件
      if (this.details.cmsItemType == "video" || this.details.cmsItemType == "audio") {
        if (this.details.file != "") {
@@ -308,6 +314,7 @@
          showSrc: ''
        })
      }
      this.pdfLoading = false;
      // 启动页码观察
      setTimeout(() => {
        this.initObservation()
@@ -355,7 +362,6 @@
    //获取下拉选择框的内容
    async getSelectData() {
      this.loading = true;
      try {
        // 同时发起两个异步请求,并等待它们的结果
        const [resourceListResult] = await Promise.all([
@@ -450,22 +456,10 @@
          this.resultList.push(item);
        }
      });
      // 排除自身且去重
      // const relatedList = res.datas.filter((item) => {
      //   return item.id !== this.details.id;
      // });
      // this.resultList.push(...relatedList)
      // // 根据id去重
      // this.resultList = this.uniqueById(this.resultList);
      // //最多显示10条
      // if (this.resultList.length > 10) {
      //   this.resultList = this.resultList.slice(0, 10);
      // }
      this.loading = false;
    },
    async openPdf(name) {
      this.pdfLoading = true;
      this.pdfList = []
      this.pdfName = name;
      this.dialogVisible = true;
@@ -923,7 +917,7 @@
          }
          .keyWord {
            cursor: pointer;
            padding: 5px 10px;
            color: #937950;
            border: 1px solid #937950;
@@ -954,6 +948,19 @@
    object-fit: contain;
  }
}
::v-deep .el-loading-spinner {
  .el-loading-text {
    font-size: 14px;
    color: #937950;
  }
  .el-icon-loading {
    font-size: 14px;
    color: #937950;
  }
}
</style>
<style lang="less">
@@ -984,8 +991,7 @@
    .el-dialog__title,
    .el-dialog__headerbtn .el-dialog__close {
      color: #fff;
      font-weight: 900;
      font-size: 16px;
      font-weight: 900;font-size: 16px;
    }
  }
}