From dd511658a80514fef129800129ba24a5ceb9c878 Mon Sep 17 00:00:00 2001 From: 杨磊 <505174330@qq.com> Date: 星期三, 30 四月 2025 11:02:25 +0800 Subject: [PATCH] 首页搜索 --- src/views/achievements/index.vue | 277 +++++++++++++++++++++++++++++++++++++++---------------- 1 files changed, 196 insertions(+), 81 deletions(-) diff --git a/src/views/achievements/index.vue b/src/views/achievements/index.vue index ef5f72a..9a81e8e 100644 --- a/src/views/achievements/index.vue +++ b/src/views/achievements/index.vue @@ -170,33 +170,21 @@ </li> </ul> <!-- 瀛︾ --> - <ul> + <!-- <ul> <li class="left-title"> <span>{{ subject.title }}</span> <p @click="subject.isDisplay = !subject.isDisplay"> - <img - :src="[subject.isDisplay ? topIcon : bottomIcon]" - alt="" - /> + <img :src="[subject.isDisplay ? topIcon : bottomIcon]" alt="" /> </p> </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" - @change="subjectChange(item)" - >{{ item.name }}</el-checkbox - > + <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" + @change="subjectChange(item)">{{ item.name }}</el-checkbox> <span class="">{{ item.num }}</span> </div> </li> - </ul> + </ul> --> </div> <div class="content-right" @@ -239,11 +227,15 @@ <p>{{ item.name }}</p> <p> <el-button @click="goPage(item.id)">璇︽儏</el-button> - <el-button>AI鏅鸿兘闃呰</el-button> + <el-button @click="openAiReading(item.AIReading, item.name)" + >AI鏅鸿兘闃呰</el-button + > </p> </li> <li class="main-sources"> - <span>{{ item.resourceTypeName }}</span> + <span :class="getResourceTypeClass(item.cmsItemType)">{{ + item.resourceTypeName + }}</span> <span>{{ item.source }}</span> <span>{{ item.year }}</span> <span v-if="item.DOI">doi锛歿{ item.DOI }}</span> @@ -257,7 +249,10 @@ v-if="item.abstract" > <span>鎽樿: </span> - <span class="page-main-abstract" v-html="item.cleanAbstract"></span> + <span + class="page-main-abstract" + v-html="item.cleanAbstract" + ></span> </li> <li class="main-keyword" @@ -289,10 +284,34 @@ :background="isBackground" layout="prev, pager, next" :total="total" - :page-size="6" + :page-size="10" > </el-pagination> </div> + <el-dialog + v-model="dialogVisible" + :title="aIName" + width="60vw" + top="3vh" + bottom="2vh" + :visible.sync="dialogVisible" + class="custom-dialog" + > + <div + class="AIReadingBox" + element-loading-spinner="el-icon-loading" + element-loading-background="rgba(0, 0, 0, 0)" + > + <div + class="richTextInitBox" + v-if="AIReading" + v-html="AIReading" + ></div> + <div class="richTextInitError" v-else> + 缃戠粶绻佸繖锛岃绋嶅悗鍐嶈瘯銆� + </div> + </div> + </el-dialog> <el-empty v-if="!loading && !resultList.length"></el-empty> </div> </div> @@ -315,6 +334,9 @@ }, data() { return { + dialogVisible: false, + aIName: "", + AIReading: "", relatedList: [], // 杈撳叆妗嗙殑鍐呭 inputValue: "", @@ -325,7 +347,6 @@ { value: "all", label: "鍏ㄩ儴" }, { value: "Name", label: "鏍囬" }, { value: "author", label: "浣滆��" }, - // { value: "year", label: "骞翠唤" }, { value: "keyWords", label: "鍏抽敭璇�" }, { value: "abstract", label: "鎽樿" }, { value: "source", label: "鏉ユ簮" }, @@ -371,7 +392,7 @@ { type: "input", label: "鏍囥��棰�", - name: "title", + name: "Name", value: "", }, { @@ -389,7 +410,7 @@ { type: "input", label: "鍏抽敭璇�", - name: "keyword", + name: "keyWords", value: "", }, { @@ -448,37 +469,32 @@ list: [ { years: "2025", - num: 20, + num: 10, check: false, }, { - years: "2025", - num: 20, + years: "2024", + num: 18, check: false, }, { - years: "2025", - num: 20, + years: "2023", + num: 21, check: false, }, { - years: "2025", - num: 20, + years: "2022", + num: 19, check: false, }, { - years: "2025", - num: 20, + years: "2021", + num: 22, check: false, }, { - years: "2025", - num: 20, - check: false, - }, - { - years: "2025", - num: 20, + years: "2020", + num: 24, check: false, }, ], @@ -496,28 +512,23 @@ check: false, }, { - name: "鍖椾含涓尰鑽ぇ瀛﹀ぇ瀛﹀鎶�", - num: 190, + name: "鍖椾含甯堣寖澶у", + num: 19, + check: false, + }, + { + name: "涓浗涓尰绉戝闄�", + num: 22, check: false, }, { name: "鍖椾含涓尰鑽ぇ瀛﹀ぇ瀛﹀鎶�", - num: 190, + num: 31, check: false, }, { - name: "鍖椾含涓尰鑽ぇ瀛﹀ぇ瀛﹀鎶�", - num: 190, - check: false, - }, - { - name: "鍖椾含涓尰鑽ぇ瀛﹀ぇ瀛﹀鎶�", - num: 190, - check: false, - }, - { - name: "鍖椾含涓尰鑽ぇ瀛﹀ぇ瀛﹀鎶�", - num: 190, + name: "骞垮窞涓尰鑽ぇ瀛�", + num: 25, check: false, }, ], @@ -568,18 +579,21 @@ resultList: [], total: 0, paginationPage: 1, - loading: false, + loading: true, labelList: { abstract: "鎽樿", author: "浣滆��", - keyword: "鍏抽敭璇�", + keyWords: "鍏抽敭璇�", source: "鏉ユ簮", - title: "鏍囬", + Name: "鏍囬", year: "骞翠唤", }, }; }, mounted() { + console.log(this.$route.query, "query"); + this.inputType = this.$route.query.type; + this.inputValue = this.$route.query.value; this.getSelectData(); }, @@ -618,16 +632,23 @@ }, async onSubmit(val) { + console.log(val, "val"); + console.log(this.associationList, "associationList"); + for (let key in val) { if (val[key] != "") { - this.associationList.push({ - type: this.labelList[key], - content: val[key], - value: key, - }); + const hasKey = this.associationList.find((item) => item.value == key); + if (!hasKey) { + this.associationList.push({ + type: this.labelList[key], + content: val[key], + value: key, + }); + } else { + hasKey.content = val[key]; + } } } - console.log(this.associationList, "this.associationList"); this.getItemList(); }, //閲嶇疆鎼滅储缁撴灉 @@ -659,7 +680,6 @@ //鑾峰彇涓嬫媺閫夋嫨妗嗙殑鍐呭 async getSelectData() { - this.loading = true; try { // 鍚屾椂鍙戣捣涓や釜寮傛璇锋眰锛屽苟绛夊緟瀹冧滑鐨勭粨鏋� const [subjectListResult, resourceListResult] = await Promise.all([ @@ -707,13 +727,16 @@ // 鎼滅储 handleSearch(isText) { + console.log(isText, "isText"); this.associationList = []; + console.log(isText, "isText"); if (isText.text != "") { this.inputValue = isText.text; this.inputType = isText.type; this.associationList.push({ type: isText.label, content: isText.text, + value: isText.type, }); this.getItemList(); } @@ -721,7 +744,11 @@ // 璇锋眰鏁版嵁 getItemList() { + this.loading = true; + console.log(this.inputValue, " inputValue"); + console.log(this.inputType, " inputType"); let searchData = {}; // 鍒濆鍖栦竴涓┖瀵硅薄鏉ュ瓨鍌ㄦ悳绱㈡暟鎹� + debugger; if (this.inputValue) { // 濡傛灉杈撳叆鍊煎瓨鍦� if (this.inputType != "all") { @@ -733,6 +760,8 @@ // 閬嶅巻杈撳叆閫夐」 for (let index = 0; index < this.inputOptions.length; index++) { const item = this.inputOptions[index]; // 鑾峰彇褰撳墠閫夐」 + + debugger; if (item.value !== "all") { // 濡傛灉褰撳墠閫夐」鐨勫�间笉鏄�"all" if (!Object.keys(searchData).length) { @@ -749,26 +778,34 @@ } } } + + console.log(this.associationList, "searchData11111"); + if (this.associationList && this.associationList.length) { this.associationList.forEach((item) => { - if (item.value == "year") { - const endDate = item.content.split("/")[0] + "/12/31 23:59:59"; - const startDate = item.content.split("/")[0] + "/01/01 00:00:00"; - searchData[item.value + ">="] = startDate; - searchData[item.value + "<="] = endDate; - } else { - searchData[item.value + "*"] = item.content; + if (item.value !== "all") { + if (item.value == "year") { + const endDate = item.content.split("/")[0] + "/12/31 23:59:59"; + const startDate = item.content.split("/")[0] + "/01/01 00:00:00"; + searchData[item.value + ">="] = startDate; + searchData[item.value + "<="] = endDate; + } else if (item.value) { + searchData[item.value + "*"] = item.content; + } else { + searchData["||" + item.value + "*"] = item.content; + } } }); } + console.log(searchData, "searchData"); MG.resource .getItem({ path: "*", queryType: "*", paging: { - start: (this.paginationPage - 1) * 6, - size: 6, + start: (this.paginationPage - 1) * 10, + size: 10, }, sort: { year: this.postedSortInfo ? "Desc" : "Asc", @@ -780,6 +817,7 @@ ? this.categoryChecList : this.resourceTypeValueList, source: [], + isbn: [], year: [], abstract: [], keyWords: [], @@ -815,18 +853,19 @@ this.resultList = res.datas; this.total = res.total; this.loading = false; - }).catch((error) => { + }) + .catch((error) => { // 鎵撳嵃閿欒淇℃伅 console.error("鑾峰彇鏁版嵁澶辫触:", error); }); // 婊氬姩鍒伴〉闈㈤《閮� this.$nextTick(() => { - const pageMain = document.querySelector('.page-main-father'); + const pageMain = document.querySelector(".page-main-father"); if (pageMain) { pageMain.scrollTo({ top: 0, - behavior: 'smooth' + behavior: "smooth", }); } }); @@ -849,6 +888,28 @@ sortChange() { this.postedSortInfo = !this.postedSortInfo; this.getItemList(); + }, + getResourceTypeClass(typeName) { + switch (typeName) { + case "journal": + return "journal-color"; + case "books": + return "books-color"; + case "video": + return "video-color"; + case "audio": + return "audio-color"; + case "newspaper": + return "newspaper-color"; + default: + return "other-color"; + } + }, + + openAiReading(text, name) { + this.AIReading = text; + this.aIName = name; + this.dialogVisible = true; }, }, }; @@ -1272,10 +1333,34 @@ } } + .journal-color { + background-color: #87a8b9; + } + + .books-color { + background-color: #c48787; + } + + .video-color { + background-color: #6f8f5a; + } + + .audio-color { + background-color: #937950; + } + + .newspaper-color { + background-color: #8d77b3; + } + + .other-color { + background-color: #009f9f; + } + .main-sources { span:nth-child(1) { padding: 3px 5px; - background-color: #87a8b9; + color: #fff; margin-right: 10px; } @@ -1368,6 +1453,23 @@ } } +.AIReadingBox { + height: 85vh; + min-height: 600px; + padding: 20px 10px; +} + +.richTextInitBox { + height: 100%; + overflow: auto; +} +.richTextInitError { + height: 100%; + display: flex; + align-items: center; + justify-content: center; +} + .pagination { display: flex; justify-content: center; @@ -1411,8 +1513,21 @@ border-radius: 5px; border: 1px solid #cccccc; } -:deep.el-pagination.is-background .el-pager li:not(.disabled):hover{ - color: #937950 + +:deep.el-pagination.is-background .el-pager li:not(.disabled):hover { + color: #937950; +} + +:deep.el-button--primary { + background-color: #937950; + color: #937950; + border: 1px solid #937950; + cursor: pointer; + + &:hover { + background-color: #937950; + color: #fffdf8; + } } </style> -- Gitblit v1.9.1