From a5abb70a428f59894fc9ee4330f0033d6fe93a8b Mon Sep 17 00:00:00 2001 From: 杨磊 <505174330@qq.com> Date: 星期四, 24 四月 2025 18:38:13 +0800 Subject: [PATCH] Merge branch 'master' of http://182.92.203.7:2001/r/wyyDatabase --- src/views/achievements/index.vue | 538 ++++++++++++++++++++++++++++++++--------------------------- 1 files changed, 290 insertions(+), 248 deletions(-) diff --git a/src/views/achievements/index.vue b/src/views/achievements/index.vue index 08049d5..6f655ea 100644 --- a/src/views/achievements/index.vue +++ b/src/views/achievements/index.vue @@ -1,259 +1,189 @@ <template> <div class="page"> <div class="page-header"> - <p>鐜嬫案鐐庨櫌澹鏈垚鏋�</p> + <p> + <span>鐜嬫案鐐庨櫌澹鏈垚鏋�</span> + </p> </div> <div class="page-main-father"> - <div class="page-main"> - <!-- 鎼滅储妗� --> - <ul class="page-input"> - <li class="input-main"> - <SearchBox /> - </li> - <li class="input-txt" @click="isDisplay = !isDisplay"> - 楂樼骇妫�绱� - <img :src="[isDisplay ? topIcon : bottomIcon]" alt="" /> - </li> - </ul> - <!-- 楂樼骇鎼滅储 --> - <div v-if="isDisplay" class="page-search"> - <MyForm - class="myfrom" - @submit=" + <div class="page-main"> + <!-- 鎼滅储妗� --> + <ul class="page-input"> + <li class="input-main"> + <SearchBox @search="handleSearch" /> + </li> + <li class="input-txt" @click="isDisplay = !isDisplay"> + 楂樼骇妫�绱� + <img :src="[isDisplay ? topIcon : bottomIcon]" alt="" /> + </li> + </ul> + <!-- 楂樼骇鎼滅储 --> + <div v-if="isDisplay" class="page-search"> + <MyForm class="myfrom" @submit=" (data) => { CurrentPage = 1; onSubmit(data); } - " - @reset="resetForm" - :from="from" - /> - </div> - <!-- 鎼滅储缁撴灉 --> - <div class="page-content"> - <div class="content-left"> - <!-- 绫诲瀷 --> - <ul> - <li class="left-title"> - <span>{{ category.title }}</span> - <p @click="category.isDisplay = !category.isDisplay"> - <img - :src="[category.isDisplay ? topIcon : bottomIcon]" - alt="" - /> - </p> - </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" - v-model="item.checked" - :title="item.name" - >{{ item.name }}</el-checkbox - > - <span class="">{{ item.num }}</span> - </div> - </li> - </ul> - <!-- 骞村害 --> - <ul> - <li class="left-title"> - <div> - <span>{{ annual.title }}</span> - <span> - 鏃堕棿 - <img - class="sort-Icon" - :src="[isDisplay ? sortTop : sortBottom]" - alt="" - /> - </span> - <span - >鏂囩尞閲� - <img - class="sort-Icon" - :src="[isDisplay ? sortBottom : sortTop]" - alt="" - /> - </span> - </div> - <p @click="annual.isDisplay = !annual.isDisplay"> - <img :src="[annual.isDisplay ? topIcon : bottomIcon]" alt="" /> - </p> - </li> - <li class="left-main" v-if="annual.isDisplay"> - <div - class="annual-main" - :style="{ - display: index + 1 > professionIndex ? 'none' : '', - }" - v-for="(item, index) in annual.list" - :key="index" - > - <el-checkbox - class="el-checkbox" - v-model="item.checked" - :title="item.years" - >{{ item.years }}</el-checkbox - > - <span class="">{{ item.num }}</span> - </div> - <p - class="annual-footer" - v-if="annual.list && annual.list.length > 5" - @click="shrinkClick('a', '骞村害')" - > - {{ activeBox !== "a" ? "鏇村 鈭�" : "鏀惰捣 鈭�" }} - </p> - </li> - </ul> - <!-- 鏂囩尞鏉ユ簮 --> - <ul> - <li class="left-title"> - <div> - <span>{{ sources.title }}</span> - <span> - 鏂囩尞閲� - <img - class="sort-Icon" - :src="[isDisplay ? sortBottom : sortTop]" - alt="" - /> - </span> - </div> - <p @click="sources.isDisplay = !sources.isDisplay"> - <img :src="[sources.isDisplay ? topIcon : bottomIcon]" alt="" /> - </p> - </li> - <li class="left-main" v-if="sources.isDisplay"> - <div - class="sources-main" - v-for="(item, index) in sources.list" - :key="index" - :style="{ - display: index + 1 > dynastyIndex ? 'none' : '', - }" - > - <el-checkbox - class="el-checkbox" - :title="item.name" - v-model="item.checked" - >{{ item.name }}</el-checkbox - > - <span class="">{{ item.num }}</span> - </div> - <p - class="sources-footer" - v-if="sources.list && sources.list.length > 5" - @click="shrinkClick('b', '鏂囩尞鏉ユ簮')" - > - {{ activeBox !== "b" ? "鏇村 鈭�" : "鏀惰捣 鈭�" }} - </p> - </li> - </ul> - <!-- 瀛︾ --> - <ul> - <li class="left-title"> - <span>{{ subject.title }}</span> - <p @click="subject.isDisplay = !subject.isDisplay"> - <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" - >{{ item.name }}</el-checkbox - > - <span class="">{{ item.num }}</span> - </div> - </li> - </ul> + " @reset="resetForm" :from="from" /> </div> - <div class="content-right"> - <!-- title閮ㄥ垎 --> - <ul class="right-header"> - <li v-for="(item, index) in associationList" :key="index"> - <p>{{ item.type }} : {{ item.content }}</p> - <img :src="errorIcon" alt="" /> - </li> - </ul> - <!-- 鍏眡x鏉� --> - <ul class="right-number"> - <ul class="number-number"> - 鍏辨壘鍒�<span>{{ resultList.length }}</span - >鏉$粨鏋� + <!-- 鎼滅储缁撴灉 --> + <div class="page-content"> + <div class="content-left"> + <!-- 绫诲瀷 --> + <ul> + <li class="left-title"> + <span>{{ category.title }}</span> + <p @click="category.isDisplay = !category.isDisplay"> + <img :src="[category.isDisplay ? topIcon : bottomIcon]" alt="" /> + </p> + </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> + </div> + </li> </ul> - <ul class="number-time"> - 鍙戣〃鏃堕棿 - <span><img :src="sortBottom" alt="" /></span> + <!-- 骞村害 --> + <ul> + <li class="left-title"> + <div> + <span>{{ annual.title }}</span> + <span> + 鏃堕棿 + <img class="sort-Icon" :src="[isDisplay ? sortTop : sortBottom]" alt="" /> + </span> + <span>鏂囩尞閲� + <img class="sort-Icon" :src="[isDisplay ? sortBottom : sortTop]" alt="" /> + </span> + </div> + <p @click="annual.isDisplay = !annual.isDisplay"> + <img :src="[annual.isDisplay ? topIcon : bottomIcon]" alt="" /> + </p> + </li> + <li class="left-main" v-if="annual.isDisplay"> + <div class="annual-main" :style="{ + display: index + 1 > professionIndex ? 'none' : '', + }" v-for="(item, index) in annual.list" :key="index"> + <el-checkbox class="el-checkbox" v-model="item.checked" :title="item.years">{{ item.years + }}</el-checkbox> + <span class="">{{ item.num }}</span> + </div> + <p class="annual-footer" v-if="annual.list && annual.list.length > 5" @click="shrinkClick('a', '骞村害')"> + {{ activeBox !== "a" ? "鏇村 鈭�" : "鏀惰捣 鈭�" }} + </p> + </li> </ul> - </ul> - <!-- 缁撴灉灞曠ず --> - <ul - class="right-main" - v-for="(item, index) in resultList" - :key="index" - > - <li class="main-name"> - <p>{{ item.name }}</p> - <p> - <el-button @click="goPage(item)">璇︽儏</el-button> - <el-button>AI鏅鸿兘闃呰</el-button> - </p> - </li> - <li class="main-sources"> - <span>{{ item.type }}</span> - <span>{{ item.sources }}</span> - <span>{{ item.time }}</span> - </li> - <li class="main-author"> - {{ item.author }} - </li> - <li class="main-title" :title="item.title"> - <span>鎽樿: </span>{{ item.title }} - </li> - <li class="main-keyword"> - <span>鍏抽敭璇嶏細</span> - <span - class="keyWord" - v-for="(citem, cindex) in item.keyword" - :key="cindex" - > - {{ citem.name }} - </span> - </li> - </ul> - <!-- 鍒嗛〉 --> - <div class="pagination"> - <el-pagination - class="msg-pagination-container" - :background="isBackground" - layout="prev, pager, next" - :total="200" - > - </el-pagination> + <!-- 鏂囩尞鏉ユ簮 --> + <ul> + <li class="left-title"> + <div> + <span>{{ sources.title }}</span> + <span> + 鏂囩尞閲� + <img class="sort-Icon" :src="[isDisplay ? sortBottom : sortTop]" alt="" /> + </span> + </div> + <p @click="sources.isDisplay = !sources.isDisplay"> + <img :src="[sources.isDisplay ? topIcon : bottomIcon]" alt="" /> + </p> + </li> + <li class="left-main" v-if="sources.isDisplay"> + <div class="sources-main" v-for="(item, index) in sources.list" :key="index" :style="{ + display: index + 1 > dynastyIndex ? 'none' : '', + }"> + <el-checkbox class="el-checkbox" :title="item.name" v-model="item.checked">{{ item.name + }}</el-checkbox> + <span class="">{{ item.num }}</span> + </div> + <p class="sources-footer" v-if="sources.list && sources.list.length > 5" + @click="shrinkClick('b', '鏂囩尞鏉ユ簮')"> + {{ activeBox !== "b" ? "鏇村 鈭�" : "鏀惰捣 鈭�" }} + </p> + </li> + </ul> + <!-- 瀛︾ --> + <ul> + <li class="left-title"> + <span>{{ subject.title }}</span> + <p @click="subject.isDisplay = !subject.isDisplay"> + <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">{{ item.name + }}</el-checkbox> + <span class="">{{ item.num }}</span> + </div> + </li> + </ul> + </div> + <div class="content-right"> + <!-- title閮ㄥ垎 --> + <ul class="right-header"> + <li v-for="(item, index) in associationList" :key="index"> + <p>{{ item.type }} : {{ item.content }}</p> + <img :src="errorIcon" alt="" /> + </li> + </ul> + <!-- 鍏眡x鏉� --> + <ul class="right-number"> + <ul class="number-number"> + 鍏辨壘鍒�<span>{{ this.total }}</span>鏉$粨鏋� + </ul> + <ul class="number-time"> + 鍙戣〃鏃堕棿 + <span><img :src="sortBottom" alt="" /></span> + </ul> + </ul> + <!-- 缁撴灉灞曠ず --> + <ul class="right-main" v-for="(item, index) in resultList" :key="index"> + <li class="main-name"> + <p>{{ item.name }}</p> + <p> + <el-button @click="goPage(item)">璇︽儏</el-button> + <el-button>AI鏅鸿兘闃呰</el-button> + </p> + </li> + <li class="main-sources"> + <span>{{ item.resourceTypeName }}</span> + <span>{{ item.source }}</span> + <span>{{ item.year }}</span> + </li> + <li class="main-author"> + {{ item.author }} + </li> + <li class="main-title" :title="item.abstract"> + <span>鎽樿: </span> + <span class="page-main-abstract" v-html="item.abstract"></span> + </li> + <li class="main-keyword"> + <span>鍏抽敭璇嶏細</span> + <span class="keyWord" v-for="(citem, cindex) in item.keyWords" :key="cindex"> + {{ citem }} + </span> + </li> + </ul> + <!-- 鍒嗛〉 --> + <div class="pagination"> + <el-pagination @current-change="handleCurrentChange" class="msg-pagination-container" + :background="isBackground" layout="prev, pager, next" :total="total"> + </el-pagination> + </div> </div> </div> </div> </div> - </div> </div> </template> <script> import MyForm from "@/components/form/form.vue"; import SearchBox from "@/views/home/components/searchBox.vue"; +import MG from "@/assets/js/middleGround/WebMiddleGroundApi.js"; +import moment from "moment"; /* eslint-disable vue/no-unused-components */ export default { name: "achievements", @@ -263,6 +193,8 @@ }, data() { return { + subjectAffiliationRefCode: "subjectAffiliation", + resourceTypeRefCode: "resourceType", errorIcon: require("@/assets/images/achievements/errorIcon.png"), topIcon: require("@/assets/images/achievements/top-Icon.png"), bottomIcon: require("@/assets/images/achievements/bottom-Icon.png"), @@ -644,17 +576,27 @@ ], }, ], + total: 0, + currentPage: 1, + loading: false, }; + }, + mounted() { + this.getSelectContent(); + this.getLeftCheckbox() + this.getSelectData(); + this.getItemList() }, methods: { - async onSubmit(val) {}, + async onSubmit(val) { }, //閲嶇疆鎼滅储缁撴灉 resetForm() { // this.onSearch(""); }, // 椤甸潰璺宠浆 goPage(key) { + console.log(key,"key"); this.$router.push({ name: "details", params: { key: key } }); }, // 鏀惰捣鍜屽睍绀� @@ -675,6 +617,88 @@ this.activeBox = this.activeBox === "b" ? null : "b"; } }, + // 鑾峰彇宸︿晶checkbox鏁版嵁 + getLeftCheckbox() { + + + }, + + //鑾峰彇涓嬫媺閫夋嫨妗嗙殑鍐呭 + async getSelectData() { + try { + // 鍚屾椂鍙戣捣涓や釜寮傛璇锋眰锛屽苟绛夊緟瀹冧滑鐨勭粨鏋� + const [subjectListResult, resourceListResult] = await Promise.all([ + this.getSelectContent(this.subjectAffiliationRefCode), + this.getSelectContent(this.resourceTypeRefCode), + ]); + this.subject.list = subjectListResult.option + this.category.list = resourceListResult.option; + } catch (error) { + console.error("鑾峰彇涓嬫媺妗嗘暟鎹け璐�:", error); + } + }, + + //鑾峰彇閫夋嫨鍐呭 + getSelectContent(refCode) { + let requestData = { refCodes: [refCode] }; + return MG.store + .getProductTypeField(requestData) + .then((res) => { + const selestList = JSON.parse(res[0].config); + this.getLeftCheckbox() + return selestList; + }) + .catch((error) => { + console.error("鑾峰彇鑽h獕澶辫触:", error); + return null; + }); + }, + + // 鎼滅储 + handleSearch(text, type) { + console.log(1234); + console.log(text, type, "鎼滅储123"); + }, + + // getTtem + getItemList() { + this.loading = true; + MG.resource + .getItem({ + path: "*", + queryType: "*", + paging: { + start: (this.currentPage - 1) * 6, + size: 6 + }, + fields: { + cmsType: ["cmsItem"], + resourceType: [], + source: [], + year: [], + abstract: [], + keyWords: [], + }, + }) + .then((res) => { + console.log(res, "鍏ㄩ儴鏁版嵁"); + res.datas.forEach((item) => { + item.year = moment(item.year).format("YYYY-MM-DD") + item.keyWords = item.keyWords.split(";;") + item.resourceTypeName = this.category.list.find((citem) => citem.value == item.resourceType).name + }) + this.resultList = res.datas + this.total = res.total; + this.loading = false; + }) + }, + + // 澶勭悊椤电爜鍙樺寲 + handleCurrentChange(newPage) { + this.currentPage = newPage; + this.getItemList(); // 閲嶆柊鑾峰彇鏁版嵁 + }, + }, }; </script> @@ -686,9 +710,13 @@ box-sizing: border-box; background-color: #e9e1d4; position: relative; + overflow: hidden; + display: flex; + flex-direction: column; } .page-header { + padding: 8px 0; height: 9.4%; width: 100%; text-align: left; @@ -697,25 +725,33 @@ position: sticky; top: 0; z-index: 100; + p { - padding: 2% 0 1.9% 0; + height: 100%; font-family: Alimama DongFangDaKai; font-size: 30px; text-indent: 1em; border-bottom: 1px solid #937950; + display: flex; + align-items: center; } } -.page-main-father{ - height: calc(100% - 9.4%); +.page-main-father { + flex: 1; width: 100%; + height: 100%; + min-width: 1292px; overflow: auto; + padding-top: 1%; + padding-bottom: 2%; } .page-main { width: 77.3%; margin: 0 auto; margin-top: 1%; + margin-bottom: 1%; } .page-input { @@ -799,7 +835,6 @@ .page-content { width: 100%; margin-top: 20px; - margin-bottom: 20px; background-color: #fefbf5; border: 1px solid #e4dace; display: flex; @@ -842,13 +877,14 @@ border-bottom: 1px solid #e4dace; padding: 10px; display: flex; - align-items: center; flex-wrap: wrap; } .category-main { width: 50%; margin-bottom: 10px; + display: flex; + align-items: center; span { font-family: Source Han Sans; @@ -896,7 +932,10 @@ } .el-checkbox { + vertical-align: middle; + font-family: "Tahoma"; width: 70%; + vertical-align: middle; } /* 璁剧疆榧犳爣缁忚繃瀵瑰嬀妗嗭紝瀵瑰嬀妗嗚竟妗嗙殑棰滆壊 */ @@ -909,15 +948,12 @@ border-color: #d1d1d1; } - ::v-deep .el-checkbox .el-checkbox__input.is-checked + .el-checkbox__label { + ::v-deep .el-checkbox .el-checkbox__input.is-checked+.el-checkbox__label { color: #2c2c2c; } ::v-deep .el-checkbox .el-checkbox__input.is-checked .el-checkbox__inner, - ::v-deep - .el-checkbox - .el-checkbox__input.is-indeterminate - .el-checkbox__inner { + ::v-deep .el-checkbox .el-checkbox__input.is-indeterminate .el-checkbox__inner { border-color: #8f7a5a; background-color: #8f7a5a; } @@ -1091,6 +1127,14 @@ } } + .page-main-abstract { + font-family: Source Han Sans !important; + font-size: 14px !important; + font-weight: 350 !important; + line-height: 26px !important; + color: #333333 !important; + } + .main-keyword { span:nth-child(1) { font-family: Source Han Sans; @@ -1148,9 +1192,7 @@ border: 1px solid #cccccc; } -:deep.msg-pagination-container.is-background - .el-pager - li:not(.disabled).active { +:deep.msg-pagination-container.is-background .el-pager li:not(.disabled).active { /*褰撳墠閫変腑椤垫暟鐨勬牱寮忚繘琛屼慨鏀�*/ background-color: #937950; color: #fff; -- Gitblit v1.9.1