杨磊
21 小时以前 8b3880c31ceb67416a6eee67ed059d3c17f3d9ec
src/views/achievements/index.vue
@@ -39,9 +39,10 @@
              </li>
              <li class="left-main" v-if="category.isDisplay">
                <div class="category-main" v-for="(item, index) in category.list" :key="index">
                  <el-checkbox class="el-checkbox" style="display: inline-block; vertical-align: middle;"
                    v-model="item.checked" :title="item.name">{{ item.name }}</el-checkbox>
                  <span class="" style="display: inline-block; vertical-align: middle;">{{ item.num }}</span>
                  <el-checkbox class="el-checkbox" v-model="item.checked" :title="item.name"
                    @change="categoryChange(item)" style="display: inline-block; vertical-align: middle">{{ item.name
                    }}</el-checkbox>
                  <span class="" style="display: inline-block; vertical-align: middle">{{ item.num }}</span>
                </div>
              </li>
            </ul>
@@ -113,8 +114,8 @@
              </li>
              <li class="left-main" v-if="subject.isDisplay">
                <div class="category-main" v-for="(item, index) in subject.list" :key="index">
                  <el-checkbox class="el-checkbox" v-model="item.checked" :title="item.name">{{ item.name
                  }}</el-checkbox>
                  <el-checkbox class="el-checkbox" v-model="item.checked" :title="item.name"
                    @change="subjectChange(item)">{{ item.name }}</el-checkbox>
                  <span class="">{{ item.num }}</span>
                </div>
              </li>
@@ -136,7 +137,7 @@
              </ul>
              <ul class="number-time">
                发表时间
                <span><img :src="sortBottom" alt="" /></span>
                <span @click="sortChange()"><img :src="!postedSortInfo ? sortBottom : sortTop" alt="" /></span>
              </ul>
            </ul>
            <!-- 结果展示 -->
@@ -163,7 +164,8 @@
              </li>
              <li class="main-keyword" v-if="item.keyWords && item.keyWords.length > 0">
                <span>关键词:</span>
                <span class="keyWord" v-for="(citem, cindex) in item.keyWords" :key="cindex">
                <span class="keyWord" v-for="(citem, cindex) in item.keyWords" :key="cindex"
                  @click="() => handleSearch({ text: citem, type: 'keyWords', label: '关键词' })">
                  {{ citem }}
                </span>
              </li>
@@ -174,8 +176,8 @@
                :background="isBackground" layout="prev, pager, next" :total="total" :page-size="6">
              </el-pagination>
            </div>
            <el-empty v-if="!loading && !resultList.length"></el-empty>
          </div>
        </div>
      </div>
    </div>
@@ -315,6 +317,10 @@
          },
        ],
      },
      categoryChecList: [],
      subjectCheckList: [],
      postedSortInfo: true,
      // 年度
      annual: {
        title: "年度",
@@ -445,6 +451,14 @@
      total: 0,
      paginationPage: 1,
      loading: false,
      labelList: {
        abstract: "摘要",
        author: "作者",
        keyword: "关键词",
        source: "来源",
        title: "标题",
        year: "年份",
      },
    };
  },
  mounted() {
@@ -452,7 +466,45 @@
  },
  methods: {
    async onSubmit(val) { },
    categoryChange(val) {
      console.log(val, "val");
      if (val.checked) {
        this.categoryChecList.push(val.value);
      } else {
        const index = this.categoryChecList.findIndex(
          (item) => item === val.value
        );
        this.categoryChecList.splice(index, 1);
      }
      this.getItemList();
    },
    subjectChange(val) {
      console.log(val, "val");
      if (val.checked) {
        this.subjectCheckList.push(val.value);
      } else {
        const index = this.subjectCheckList.findIndex(
          (item) => item === val.value
        );
        this.subjectCheckList.splice(index, 1);
      }
      this.getItemList();
    },
    async onSubmit(val) {
      for (let key in val) {
        if (val[key] != "") {
          this.associationList.push({
            type: this.labelList[key],
            content: val[key],
            value: key,
          });
        }
      }
      console.log(this.associationList, "this.associationList");
      this.getItemList();
    },
    //重置搜索结果
    resetForm() {
      // this.onSearch("");
@@ -489,14 +541,15 @@
          this.getSelectContent(this.subjectAffiliationRefCode),
          this.getSelectContent(this.resourceTypeRefCode),
        ]);
        this.subject.list = subjectListResult.option
        console.log(subjectListResult.option);
        this.subject.list = subjectListResult.option;
        this.category.list = resourceListResult.option;
        if (this.category.list && this.category.list.length) {
          this.category.list.forEach((item) => {
            this.resourceTypeValueList.push(item.value)
            this.resourceTypeValueList.push(item.value);
          });
        }
        this.getItemList()
        this.getItemList();
      } catch (error) {
        console.error("获取下拉框数据失败:", error);
      }
@@ -531,13 +584,13 @@
    handleSearch(isText) {
      this.associationList = []
      if (isText.text != "") {
        this.inputValue = isText.text
        this.inputType = isText.type
        this.inputValue = isText.text;
        this.inputType = isText.type;
        this.associationList.push({
          type: isText.label,
          content: isText.text,
        });
        this.getItemList()
        this.getItemList();
      }
    },
@@ -571,11 +624,17 @@
          queryType: "*",
          paging: {
            start: (this.paginationPage - 1) * 6,
            size: 6
            size: 6,
          },
          sort: {
            year: this.postedSortInfo ? "Desc" : "Asc",
          },
          fields: {
            cmsType: ["cmsItem"],
            "resourceType*": this.resourceTypeValueList,
            "resourceType*":
              this.categoryChecList.length > 0
                ? this.categoryChecList
                : this.resourceTypeValueList,
            source: [],
            year: [],
            abstract: [],
@@ -585,6 +644,7 @@
            AIReading: [],
            file: [],
            IssueNumber: [],
            "subjectAffiliation*": this.subjectCheckList,
            ...searchData,
          },
        })
@@ -592,21 +652,24 @@
          console.log(res, "全部内容");
          res.datas.forEach((item) => {
            item.year = moment(item.year).format("YYYY-MM-DD")
            if (typeof item.keyWords === 'string') {
            item.year = moment(item.year).format("YYYY-MM-DD");
            if (typeof item.keyWords === "string") {
              item.keyWords = item.keyWords.split(";;");
            } else {
              // 设置一个默认值或者进行其他错误处理
              item.keyWords = [];
            }
            // item.cleanAbstract = item.abstract.replace(/<[^>]+>/g, "");
            if (item.abstract) {
              item.cleanAbstract = item.abstract.replace(/<[^>]+>/g, "");
            }
            const foundItem = this.category.list.find((citem) => citem.value == item.cmsItemType);
            item.resourceTypeName = foundItem ? foundItem.name : '';
          })
          this.resultList = res.datas
          this.total = res.total;
          this.loading = false;
        })
        });
    },
    // 处理页码变化
    handleCurrentChange(newPage) {
@@ -623,7 +686,10 @@
        }
      });
    },
    sortChange() {
      this.postedSortInfo = !this.postedSortInfo;
      this.getItemList();
    },
  },
};
</script>
@@ -662,11 +728,25 @@
  }
}
::v-deep .el-loading-spinner {
  .el-loading-text {
    font-size: 14px;
    color: #937950;
  }
  .el-icon-loading {
    font-size: 14px;
    color: #937950;
  }
}
.page-main-father {
  flex: 1;
  width: 100%;
  height: 100%;
  min-width: 1250px;
  min-width: 1200px;
  overflow: auto;
  padding-top: 1%;
  padding-bottom: 2%;
@@ -685,16 +765,43 @@
  background-color: #fefbf5;
  border: 1px solid #e4dace;
  .input-main {
  ::v-deep(.input-main) {
    padding: 15px 0;
    display: flex;
    justify-content: center;
    width: 90%;
    border-right: 2px solid #e4dace;
    font-weight: bold;
    .input-with-select {
      width: 50%;
      font-weight: bold;
    }
    .el-select .el-input.is-focus .el-input__inner {
      color: #937950 !important;
      border-color: #937950 !important;
      font-weight: bold;
    }
    .el-select-dropdown__item.selected {
      color: #937950 !important;
      font-weight: bold;
    }
    .el-select .el-input__inner:focus {
      border-color: #937950;
      font-weight: bold;
    }
    .el-select .el-input__inner {
      font-family: Source Han Sans;
      font-size: 14px;
      font-weight: bold;
      color: #2C2C2C;
    }
  }
  .input-txt {
@@ -746,11 +853,12 @@
        font-size: 14px;
        background-color: transparent;
        color: #937950;
        border: 1px solid #6f5a3a;
        border: 1px solid #937950;
        ;
        cursor: pointer;
        &:hover {
          background-color: #6f5a3a;
          background-color: #937950;
          color: #fffdf8;
        }
      }
@@ -913,6 +1021,7 @@
    .right-header {
      display: flex;
      flex-wrap: wrap;
      li {
        background: #ffffff;
@@ -924,6 +1033,8 @@
        font-family: Poppins;
        font-size: 13px;
        color: #937950;
        line-height: 20px;
        margin-bottom: 10px;
        img {
          cursor: pointer;
@@ -983,16 +1094,17 @@
        font-size: 16px;
        font-weight: bold;
        color: #937950;
        margin-bottom: 5px;
        ::v-deep .el-button {
          font-size: 14px;
          background-color: transparent;
          color: #937950;
          border: 1px solid #6f5a3a;
          border: 1px solid #937950;
          border-radius: 0;
          &:hover {
            background-color: #6f5a3a;
            background-color: #937950;
            color: #fffdf8;
          }
        }
@@ -1004,7 +1116,6 @@
          background-color: #87a8b9;
          color: #fff;
          margin-right: 10px;
        }
        span:nth-child(2) {
@@ -1013,7 +1124,6 @@
          font-weight: 350;
          padding-right: 10px;
          color: #333;
        }
        span:nth-child(3) {
@@ -1034,8 +1144,6 @@
          color: #333;
          border-left: 1px solid #2c2c2c;
        }
        margin-bottom: 10px;
      }
@@ -1139,4 +1247,24 @@
  border-radius: 5px;
  border: 1px solid #cccccc;
}
</style>
<style>
.el-input.is-focus .el-input__inner {
  color: #937950 !important;
  border-color: #937950 !important;
  font-weight: bold;
}
.el-select-dropdown__item.selected {
  color: #937950 !important;
  font-weight: bold;
}
.el-select .el-input__inner:focus {
  border-color: #937950;
  font-weight: bold;
}
</style>