src/components/form/form.vue | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/views/achievements/index.vue | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/views/directory/index.vue | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/views/home/index.vue | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 |
src/components/form/form.vue
@@ -4,7 +4,7 @@ " :model="from" class="row demo-form-inline col-xs-12"> <el-row :gutter="10"> <el-form-item style="width: 33%" v-for="(item, i) in from.from" :key="i" :label="item.label"> <el-input v-if="item.type === 'input'" v-model="item.value" :placeholder="item.label"></el-input> <el-input v-if="item.type === 'input'" v-model="item.value" :placeholder="item.label" :type="item.name == 'year' ? 'number' : 'text'"></el-input> </el-form-item> <!-- 其他表单项省略 --> <!-- <el-form-item style="display:block; "> --> src/views/achievements/index.vue
@@ -19,12 +19,17 @@ </ul> <!-- 高级搜索 --> <div v-if="isDisplay" class="page-search"> <MyForm class="myfrom" @submit=" <MyForm class="myfrom" @submit=" (data) => { CurrentPage = 1; onSubmit(data); } " @reset="resetForm" :from="from" /> " @reset="resetForm" :from="from" /> </div> <!-- 搜索结果 --> <div class="page-content"> @@ -34,15 +39,31 @@ <li class="left-title"> <span>{{ category.title }}</span> <p @click="category.isDisplay = !category.isDisplay"> <img :src="[category.isDisplay ? topIcon : bottomIcon]" alt="" /> <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" @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 class="category-main" v-for="(item, index) in category.list" :key="index" > <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> @@ -53,25 +74,50 @@ <span>{{ annual.title }}</span> <span> 时间 <img class="sort-Icon" :src="[isDisplay ? sortTop : sortBottom]" alt="" /> <img class="sort-Icon" :src="[isDisplay ? sortTop : sortBottom]" alt="" /> </span> <span>文献量 <img class="sort-Icon" :src="[isDisplay ? sortBottom : sortTop]" alt="" /> <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="" /> <img :src="[annual.isDisplay ? topIcon : bottomIcon]" alt="" /> </p> </li> <li class="left-main" v-if="annual.isDisplay"> <div class="annual-main" :style="{ <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> }" 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', '年度')"> <p class="annual-footer" v-if="annual.list && annual.list.length > 5" @click="shrinkClick('a', '年度')" > {{ activeBox !== "a" ? "更多 ∨" : "收起 ∧" }} </p> </li> @@ -83,23 +129,42 @@ <span>{{ sources.title }}</span> <span> 文献量 <img class="sort-Icon" :src="[isDisplay ? sortBottom : sortTop]" alt="" /> <img class="sort-Icon" :src="[isDisplay ? sortBottom : sortTop]" alt="" /> </span> </div> <p @click="sources.isDisplay = !sources.isDisplay"> <img :src="[sources.isDisplay ? topIcon : bottomIcon]" alt="" /> <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="{ <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> }" > <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', '文献来源')"> <p class="sources-footer" v-if="sources.list && sources.list.length > 5" @click="shrinkClick('b', '文献来源')" > {{ activeBox !== "b" ? "更多 ∨" : "收起 ∧" }} </p> </li> @@ -121,27 +186,43 @@ </li> </ul> --> </div> <div class="content-right" v-loading="loading" element-loading-text="检索结果加载中" element-loading-spinner="el-icon-loading" element-loading-background="rgba(0, 0, 0, 0)"> <div class="content-right" v-loading="loading" element-loading-text="检索结果加载中" element-loading-spinner="el-icon-loading" element-loading-background="rgba(0, 0, 0, 0)" > <!-- title部分 --> <ul class="right-header"> <li v-for="(item, index) in associationList" :key="index"> <p>{{ item.type }} : {{ item.content }}</p> <img @click="removeAssociationList(item.content)" :src="errorIcon" alt="" /> <img @click="removeAssociationList(item.content)" :src="errorIcon" alt="" /> </li> </ul> <!-- 共xx条 --> <ul class="right-number"> <ul class="number-number"> 共找到<span>{{ this.total }}</span>条结果 共找到<span>{{ this.total }}</span >条结果 </ul> <ul class="number-time"> 发表时间 <span @click="sortChange()"><img :src="!postedSortInfo ? sortBottom : sortTop" alt="" /></span> <span @click="sortChange()" ><img :src="!postedSortInfo ? sortBottom : sortTop" alt="" /></span> </ul> </ul> <!-- 结果展示 --> <ul class="right-main" v-for="(item, index) in resultList" :key="index"> <ul class="right-main" v-for="(item, index) in resultList" :key="index" > <li class="main-name"> <p>{{ item.name }}</p> <p> @@ -150,7 +231,9 @@ </p> </li> <li class="main-sources"> <span :class="getResourceTypeClass(item.cmsItemType)">{{ 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> @@ -158,31 +241,49 @@ <li class="main-author"> {{ item.author }} </li> <li class="main-title" :title="item.cleanAbstract" v-if="item.abstract"> <li class="main-title" :title="item.cleanAbstract" v-if="item.abstract" > <span>摘要: </span> <span class="page-main-abstract" v-html="item.cleanAbstract" ></span> </li> <li class="main-keyword" v-if="item.keyWords && item.keyWords.length > 0"> <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" @click=" <span class="keyWord" v-for="(citem, cindex) in item.keyWords" :key="cindex" @click=" () => handleSearch({ text: citem, type: 'keyWords', label: '关键词', }) "> " > {{ citem }} </span> </li> </ul> <!-- 分页 --> <div class="pagination" v-if="total > 6"> <el-pagination @current-change="handleCurrentChange" class="msg-pagination-container" :background="isBackground" layout="prev, pager, next" :total="total" :page-size="10"> <el-pagination @current-change="handleCurrentChange" class="msg-pagination-container" :background="isBackground" layout="prev, pager, next" :total="total" :page-size="10" > </el-pagination> </div> <el-empty v-if="!loading && !resultList.length"></el-empty> @@ -280,7 +381,7 @@ { type: "input", label: "关键词", name: "keyword", name: "keyWords", value: "", }, { @@ -367,7 +468,6 @@ num: 24, check: false, }, ], }, // 文献来源 @@ -402,7 +502,6 @@ num: 25, check: false, }, ], }, // 学科 @@ -455,7 +554,7 @@ labelList: { abstract: "摘要", author: "作者", keyword: "关键词", keyWords: "关键词", source: "来源", Name: "标题", year: "年份", @@ -514,7 +613,7 @@ value: key, }); }else { hasKey.content = val[key] hasKey.content = val[key]; } } } @@ -642,18 +741,20 @@ } } } // 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 (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 if (item.value) { searchData[item.value + "*"] = item.content; } else { searchData["||" + item.value + "*"] = item.content; } }); } console.log(searchData, "searchData"); MG.resource .getItem({ @@ -747,20 +848,20 @@ }, 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'; 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'; return "other-color"; } } }, }, }; </script> @@ -1053,7 +1154,10 @@ } ::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; } @@ -1184,22 +1288,20 @@ background-color: #87a8b9; } .books-color { background-color: #C48787; background-color: #c48787; } .video-color { background-color: #6F8F5A; background-color: #6f8f5a; } .audio-color { background-color: #937950; } .newspaper-color { background-color: #8D77B3; background-color: #8d77b3; } .other-color { background-color: #009F9F; background-color: #009f9f; } .main-sources { span:nth-child(1) { @@ -1331,7 +1433,9 @@ 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; @@ -1340,7 +1444,7 @@ } :deep.el-pagination.is-background .el-pager li:not(.disabled):hover { color: #937950 color: #937950; } </style> src/views/directory/index.vue
@@ -7,18 +7,33 @@ </div> <div class="page-main-father"> <div class="page-main-title"> <p @click="changeTab('chart')" :class="[activeTabs == 'chart' ? 'active-tab' : '']"> <img :src="[activeTabs == 'chart' ? chartIcon : noChartIcon]" alt="" /> <p @click="changeTab('chart')" :class="[activeTabs == 'chart' ? 'active-tab' : '']" > <img :src="[activeTabs == 'chart' ? chartIcon : noChartIcon]" alt="" /> <span>图表显示</span> </p> <p @click="changeTab('list')" :class="[activeTabs == 'list' ? 'active-tab' : '']"> <p @click="changeTab('list')" :class="[activeTabs == 'list' ? 'active-tab' : '']" > <img :src="[activeTabs == 'list' ? listIcon : noListIcon]" alt="" /> <span>列表显示</span> </p> </div> <!-- 图表显示 --> <div class="charts-main" v-show="activeTabs == 'chart'" v-loading="loading" element-loading-text="图表加载中" element-loading-spinner="el-icon-loading" element-loading-background="rgba(0, 0, 0, 0)"> <div class="charts-main" v-show="activeTabs == 'chart'" v-loading="loading" element-loading-text="图表加载中" element-loading-spinner="el-icon-loading" element-loading-background="rgba(0, 0, 0, 0)" > <div class="radial-tree-container" v-show="!loading"> <div ref="chart" style="width: 100%; height: 70vh"></div> </div> @@ -33,36 +48,49 @@ </div> <transition name="el-fade-in-linear"> <div class="tooltipBox" v-show="tooltipShow"> <div style=" <div style=" padding: 10px; background: #fdf8f0; border-radius: 5px; width: 100%; max-height: 500px; text-align: center; "> " > <div class="closeBtn" @click="tooltipShow = false"> <i class="el-icon-close"></i> </div> <div style="display: flex"> <div style=" <div style=" width: 80px; height: 80px; position: relative; margin-bottom: 10px; background: #d8d8d8; "> <img class="autoImg" :src="currentNodeInfo.icon " > <img class="autoImg" :src=" currentNodeInfo.icon ? currentNodeInfo.icon : '@/assets/images/directory/touxiang.png' " alt="" /> " alt="" /> </div> <div style="padding-top: 20px; text-align: left; margin-left: 20px"> <div style=" <div style="padding-top: 20px; text-align: left; margin-left: 20px" > <div style=" font-size: 16px; font-weight: bold; margin-bottom: 5px; "> " > {{ currentNodeInfo.name }} </div> <div style="margin-top: 20px"> @@ -83,13 +111,15 @@ </div> </div> <div style=" <div style=" font-size: 16px; font-weight: bold; margin-bottom: 5px; text-align: left; margin-top: 10px; "> " > <p style="margin-bottom: 15px"> 学习时间:{{ currentNodeInfo.studyTime || "-" }} </p> @@ -104,13 +134,15 @@ 职称:{{ currentNodeInfo.professionalTitle || "-" }} </p> </div> <div style=" <div style=" text-align: left; line-height: 22px; max-height: 200px; overflow-y: auto; padding: 10px; "> " > <div v-html="currentNodeInfo.studentProfile"></div> </div> <!-- <div @@ -135,21 +167,36 @@ </div> <!-- 列表显示 --> <div class="page-main" v-show="activeTabs == 'list'"> <div v-loading="loading" style="min-height: 550px" element-loading-background="rgba(0, 0, 0, 0)" element-loading-text="学生列表加载中" element-loading-spinner="el-icon-loading"> <div v-loading="loading" style="min-height: 550px" element-loading-background="rgba(0, 0, 0, 0)" element-loading-text="学生列表加载中" element-loading-spinner="el-icon-loading" > <div v-for="(item, index) in universityList" :key="index"> <div class="table-title" v-if="item.agreelist && item.agreelist.length > 0"> <div class="table-title" v-if="item.agreelist && item.agreelist.length > 0" > <div class="table-title-left"> <p class="table-title-name">{{ item.unitName }}</p> </div> <div class="table-title-right" @click="item.isShow = !item.isShow"> <div class="table-title-right" @click="item.isShow = !item.isShow" > <img :src="[item.isShow ? topIcon : bottomIcon]" alt="" /> </div> </div> <div v-if="item.agreelist && item.agreelist.length > 0 && item.isShow"> <div v-if="item.agreelist && item.agreelist.length > 0 && item.isShow" > <div v-for="(citem, cindex) in item.agreelist" :key="cindex"> <div class="agree-title"> <p class="table-title-degree">{{ citem.academicDegreeName }}</p> <p class="table-title-degree"> {{ citem.academicDegreeName }} </p> <p class="table-title-number"> {{ citem.studentList.length }}人 </p> @@ -163,7 +210,10 @@ <th>职务</th> <th>职称</th> </tr> <tr v-for="(ditem, dindex) in citem.studentList" :key="dindex"> <tr v-for="(ditem, dindex) in citem.studentList" :key="dindex" > <td> {{ ditem.name }} </td> @@ -286,7 +336,7 @@ backgroundColor: "#FDF8F0", formatter: (params) => { const data = params.data; this.currentNodeInfo = data; // this.currentNodeInfo = data; // console.log(data, "data"); if (data.cmsItemType == "student") { return ` @@ -299,50 +349,59 @@ text-align: center; "> <div style="width: 80px;height: 80px;position: relative; margin: 0 auto; margin-bottom: 10px;background: #D8D8D8;"> <img class="autoImg" src="${data.icon <img class="autoImg" src="${ data.icon ? data.icon : require("@/assets/images/directory/touxiang.png") }" alt=""> </div> <div style="font-size: 16px; font-weight: bold; margin-bottom: 5px;">${data.name || "-" <div style="font-size: 16px; font-weight: bold; margin-bottom: 5px;">${ data.name || "-" }</div> <div> <span> ${data.gender == "male" ? "男" : "女" || "-" } </span> <span> ${data.academicName || "-"} </span> <span> ${this.legendList.find((item) => item.value == data.unit)?.name || <div> <span> ${ data.gender == "male" ? "男" : "女" || "-" } </span> <span> ${data.academicName || "-"} </span> <span> ${ this.legendList.find((item) => item.value == data.unit)?.name || "-" } </span></div> <div style="font-size: 16px; font-weight: bold; margin-bottom: 5px;text-align: left;margin-top: 10px;overflow: hidden;"> <p style="margin-bottom: 5px;">学习时间:${data.studyTime || "-" <p style="margin-bottom: 5px;">学习时间:${ data.studyTime || "-" }</p> <p style="margin-bottom: 5px; white-space: pre-wrap" >现工作单位:${data.currentEmployer_secondary || "-" <p style="margin-bottom: 5px; white-space: pre-wrap" >现工作单位:${ data.currentEmployer_secondary || "-" }</p> <p style="margin-bottom: 5px;">职务:${data.jobTitle || "-" <p style="margin-bottom: 5px;">职务:${ data.jobTitle || "-" }</p> <p style="margin-bottom: 5px;">职称:${data.professionalTitle || "-" <p style="margin-bottom: 5px;">职称:${ data.professionalTitle || "-" }</p> </div> </div> `; } else { return ` <div style=" padding: 10px; background: #FDF8F0; border-radius: 5px; max-width: 300px; width: 360px; text-align: center; "> <div style="width: 80px;height: 80px;position: relative; margin: 0 auto; margin-bottom: 10px;background: #D8D8D8;"> <img class="autoImg" src="${require("@/assets/images/directory/touxiang.png")}" alt=""> </div> <div style="font-size: 16px; font-weight: bold; margin-bottom: 5px;">${data.name }</div> <div> <span> ${data.academicDegreeName || "-"} </span></div> </div> `; } // } else { // return ` // <div style=" // padding: 10px; // background: #FDF8F0; // border-radius: 5px; // max-width: 300px; // width: 360px; // text-align: center; // "> // <div style="width: 80px;height: 80px;position: relative; margin: 0 auto; margin-bottom: 10px;background: #D8D8D8;"> // <img class="autoImg" src="${require("@/assets/images/directory/touxiang.png")}" alt=""> // </div> // <div style="font-size: 16px; font-weight: bold; margin-bottom: 5px;">${data.name // }</div> // <div> <span> ${data.academicDegreeName || "-"} </span></div> // </div> // `; // } }, }, textStyle: { @@ -369,7 +428,7 @@ }, label: { position: "top", //标签的位置。 // position: "left", //标签的位置。 verticalAlign: "middle", //文字垂直对齐方式,默认自动。 fontSize: 12, //文字的字体大小 // color: "#bc1c00", @@ -382,7 +441,6 @@ // }, expandAndCollapse: false, lineStyle: { // color: "#bc1c00", width: 1, }, itemStyle: { @@ -401,7 +459,11 @@ this.chart.setOption(option); this.chart.on("click", (params) => { // console.log("点击时的回调", params); console.log(params, "params"); if (params.data?.cmsItemType && params.data?.cmsItemType == "student") { this.tooltipShow = true; this.currentNodeInfo = params.data; } }); }, handleResize() { @@ -492,7 +554,7 @@ studentList: [], }); }); }) }); console.log(schoolList, "schoolList"); this.unitList.forEach((item) => { this.academicDegreeList.forEach((citem) => { @@ -525,6 +587,7 @@ (f) => f.value == item.academicDegree )?.name; citem.studentList.push(item); item['itemStyle'] = citem.itemStyle; citem.children.push(item); } }); @@ -533,7 +596,10 @@ res.datas.forEach((item) => { schoolList.forEach((citem) => { citem.agreelist.forEach((ditem) => { if (item.unit == citem.unitValue && item.academicDegree == ditem.academicDegreeValue) { if ( item.unit == citem.unitValue && item.academicDegree == ditem.academicDegreeValue ) { ditem.studentList.push(item); } }); @@ -544,7 +610,9 @@ // 使用filter方法过滤schoolList,删除agreelist长度为0的item schoolList = schoolList.filter((item) => { // 先过滤掉那些studentList长度为0的citem item.agreelist = item.agreelist.filter((citem) => citem.studentList.length > 0); item.agreelist = item.agreelist.filter( (citem) => citem.studentList.length > 0 ); // 然后检查过滤后的agreelist长度是否大于0 return item.agreelist.length > 0; }); @@ -672,7 +740,6 @@ line-height: 20px; } th { font-family: Source Han Serif CN; font-size: 14px; @@ -720,7 +787,6 @@ margin-top: 2px; line-height: 35px; .table-title-left { display: flex; align-items: center; @@ -746,7 +812,6 @@ height: auto; } } .agree-title { display: flex; src/views/home/index.vue
@@ -23,7 +23,7 @@ </div> <div class="menuTitle">{{ item.title }}</div> <div class="menuSubTitle">{{ item.subTitle }}</div> <div class="menuLine"><i class="el-icon-right"></i></div> <div class="menuLine"><img class="autoImg" :src="arrow" alt="" /></div> </div> </div> </div> @@ -47,7 +47,7 @@ import rongyu from "@/assets/images/menuIcon/rongyu.png"; import xueshu from "@/assets/images/menuIcon/xueshu.png"; import homeBg from "@/assets/images/homeBg1.jpg"; import arrow from "@/assets/images/right_arrow.svg"; export default { components: { SearchBox, @@ -55,6 +55,7 @@ data() { return { arrow, menuList: [ { icon: nianpu1, @@ -130,7 +131,6 @@ position: relative; box-sizing: border-box; font-family: siyuan; } .bgBox { width: 100%; @@ -214,9 +214,11 @@ font-size: 28px; margin-top: 20px; font-family: siyuan; } .menuLine { width: 30px; height: 30px; position: relative; margin-top: 40px; font-size: 40px; } @@ -251,10 +253,10 @@ text-align: center; } @media screen and (min-width: 1950px) { /* @media screen and (min-width: 1950px) { .textInfo { font-size: 20px; line-height: 24px; } } } */ </style>