Files
hellogithub-vue/src/components/Monthly/Monthly.vue
2023-07-10 10:36:46 +08:00

297 lines
11 KiB
Vue
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<template>
<!--<div>-->
<!-- 月刊-->
<!--</div>-->
<div style="display: flex;flex-direction:row;flex-wrap: nowrap">
<div style="display: flex;flex-direction:column;flex-wrap: nowrap">
<div class="PageHeader">
<br/>
<el-page-header @back="goBack" style="justify-content:left;display: flex;">
<div slot="title" style="font-size:23px;font-weight: 600;"></div>
<div slot="content" style="font-size:23px;font-weight: 600;">
HelloGitHub 月刊
</div>
</el-page-header>
</div>
<div class="PageContent">
<div style="width:50vw;margin-left:20px">
<el-carousel :interval="4000" type="card" height="250px">
<el-carousel-item v-for="item in 6" :key="item">
<h3 class="medium">{{ item }}</h3>
</el-carousel-item>
</el-carousel>
</div>
<div style="margin-top:30px;width:50vw;margin-left:20px">
<el-row :gutter="24">
<el-col :span="24">
<el-card shadow="always" style="font-size: 18px;
text-align:left;background-color: #f4ffed;
border-color: rgba(255,243,232,0.89);border-radius:10px">
<span style="font-size:20px;font-weight:550">HelloGitHub 月刊</span>
分享 GitHub 上有趣入门级的开源项目每月 28 号发布最新一期内容包
括开发利器开源书籍教程企业级项目等 让你发现编程的乐趣爱上开源
</el-card>
</el-col>
</el-row>
</div>
<div style="margin-top:30px;width:50vw;margin-left:20px">
<el-row :gutter="24">
<el-col :span="8">
<el-card shadow="always" class="card_style">
<span style="font-size:25px;font-weight:540;color: #676767">已发布</span>
<br/><br/>
<span style="font-size:55px;font-weight:650;color: #3d8bff">{{Monely}}</span>
<br/><br/>
<span style="font-size:25px;font-weight:540;color: #676767"></span>
<br/>
<br/>
<div style="border-top:1.5px solid #ababab;border-bottom:1.5px solid #ababab;">
<br/>
<span style="font-size:18px;font-weight:540;color: #676767">选择期数: &nbsp;</span>
<el-select clearable v-model="selectMonly" filterable placeholder="期数" style="width:80px;">
<el-option
v-for="item of Monely"
:key="item"
:label="item"
:value="item"
>
</el-option>
</el-select>
<br/><br/>
</div>
<br/>
<el-button type="info" @click="ToDetail()">阅读该期</el-button>
<br/><br/>
</el-card>
</el-col>
<el-col :span="8">
<el-card shadow="always" class="card_style">
<span style="font-size:25px;font-weight:540;color: #676767">共包含</span>
<br/><br/>
<span style="font-size:55px;font-weight:650;color: #3d8bff">{{labelItem.length}}</span>
<br/><br/>
<span style="font-size:25px;font-weight:540;color: #676767"></span>
<br/>
<br/>
<div style="border-top:1.5px solid #ababab;border-bottom:1.5px solid #ababab;">
<br/>
<span style="font-size:18px;font-weight:540;color: #676767">选择分类: &nbsp;</span>
<el-select clearable v-model="selectlabelItem" placeholder="分类" style="width:100px;">
<el-option
v-for="item in labelItem"
:key="item"
:label="item"
:value="item"
>
</el-option>
</el-select>
<br/><br/>
</div>
<br/>
<el-button type="info" @click="changePage()">查看分类</el-button>
<br/><br/>
</el-card>
</el-col>
<el-col :span="8">
<el-card shadow="always" class="card_style" >
<span style="font-size:25px;font-weight:540;color: #676767">项目数</span>
<br/><br/>
<span style="font-size:55px;font-weight:650;color: #3d8bff">{{ProjectNum}}</span>
<br/><br/>
<span style="font-size:25px;font-weight:540;color: #676767"></span>
<br/>
<br/>
<div style="border-top:1.5px solid #ababab;border-bottom:1.5px solid #ababab;">
<br/>
<span style="font-size:18px;font-weight:540;color: #676767">欢迎推荐和自荐项目</span>
<br/><br/>
</div>
<el-button type="info" @click="getProjectNum()" style="margin-top:37px">推荐项目</el-button>
<br/><br/>
</el-card>
</el-col>
</el-row>
</div>
<br/>
<br/>
</div>
</div>
<RightTools></RightTools>
</div>
</template>
<script>
import axios from 'axios'
import RightTools from "@/components/Home/RightTools.vue";
export default {
name: "MonthlyComponent",
components: {RightTools},
data(){
return{
// 项目总数
ProjectNum:0,
//期刊总数:
Monely:0,
//保存用户选择期刊期数:
selectMonly:null,
// 保存用户选择的分类:
selectlabelItem:null,
//标签:
labelItem:[],
};
},
// 初始化渲染页面
mounted(){
this.getMonely();
this.getProjectNum();
this.getLabel();
},
methods: {
test(){
var that = this;
console.log(that.selectlabelItem);
},
goBack() {
window.history.go(-1);
},
// 获取项目总数
getProjectNum(){
var that = this;
axios({
method: 'post',
url: 'http://localhost:8082/helloGithub_war_exploded/countNum',
params: {
}
}).then((res)=>{
that.ProjectNum = parseInt(res.data);
// console.log(res.data);
});
},
// 获取月刊总数
getMonely(){
var that = this;
axios({
method: 'post',
url: 'http://localhost:8082/helloGithub_war_exploded/latest',
params: {
}
}).then(function (res){
that.Monely = parseInt(res.data);
// console.log(res.data);
})
},
//获取所有标签:
getLabel(){
var that = this;
axios({
method: 'post',
url: 'http://localhost:8082/helloGithub_war_exploded/retLabel',
params: {
}
}).then(function (res){
that.labelItem = [];
for(let i=0;i<res.data.length;i++){
let tmp = res.data[i]['categoryName'];
that.labelItem.push(tmp);
}
})
},
// 月刊详情页面跳转
ToDetail(){
if(this.selectMonly > 0 && this.selectMonly <= this.Monely){
let pathInfo = this.$router.resolve({
path: '/MonthlyDetail',
query:{
MonethlyId:this.selectMonly
}
})
window.open(pathInfo.href, '_self');
}else{
this.$message({
message: '请输入正确的月刊号',
type: 'warning',
offset:100,
duration:700,
});
}
},
// 月刊分类页跳转
changePage(){
if(this.selectlabelItem){
let pathInfo = this.$router.resolve({
path: '/MonthlyByTags',
query:{
Protype:this.selectlabelItem
}
})
window.open(pathInfo.href, '_self');
}else{
this.$message({
message: '请选择分类类型',
type: 'warning',
offset:100,
duration:700,
});
}
}
}
}
</script>
<style scoped lang="scss">
::v-deep .el-page-header__left{
left:-250px;
}
::v-deep .el-icon-back{
font-size:20px;
}
.el-carousel__item h3 {
color: #475669;
font-size: 14px;
opacity: 0.75;
line-height: 200px;
margin: 0;
}
.el-carousel__item{
width:450px;
}
.el-carousel__item:nth-child(2n) {
background-size: cover;
background-image: url("../../assets/images/WebsiteBanner.svg");
}
.el-carousel__item:nth-child(2n+1) {
background-size: cover;
background-image: url("../../assets/images/WebsiteBanner.svg");
}
.card_style{
height:390px;
font-size: 18px;
background-color: #ffffff;
border-color: rgba(209, 225, 189, 0.89);
text-align: center;
border-radius:10px;
}
::v-deep .el-scrollbar{
max-height:150px;
overflow: scroll;
}
::v-deep .el-page-header__left{
left:10px;
}
::v-deep .el-page-header__content{
flex:1;
}
</style>