feat: 增加新闻页

This commit is contained in:
xiongxiaoyang 2022-05-16 14:40:26 +08:00
parent 3fc8486c6a
commit 364c4fd489
5 changed files with 79 additions and 10 deletions

View File

@ -2,4 +2,8 @@ import request from '../utils/request'
export function listLatestNews() { export function listLatestNews() {
return request.get('/news/latestList'); return request.get('/news/latestList');
}
export function getNewsById(newsId) {
return request.get(`/news/${newsId}`);
} }

View File

@ -9,6 +9,7 @@
type="text" type="text"
placeholder="书名、作者、关键字" placeholder="书名、作者、关键字"
class="s_int" class="s_int"
v-on:keyup.enter="searchByK"
/> />
<label class="search_btn" id="btnSearch" @click="searchByK()" <label class="search_btn" id="btnSearch" @click="searchByK()"
><i class="icon"></i ><i class="icon"></i

View File

@ -2,24 +2,25 @@
<dl class="hot_notice" id="indexNews"> <dl class="hot_notice" id="indexNews">
<dd style="text-align: left" v-for="(item, index) in newsList" :key="index"> <dd style="text-align: left" v-for="(item, index) in newsList" :key="index">
<span>[{{ item.categoryName }}]</span> <span>[{{ item.categoryName }}]</span>
<router-link :to="{ name: 'newsContent', query: { id: item.id } }"> <a href="javascript:void(0)" @click="newsInfo(item.id)"> {{ item.title }}</a>
{{ item.title }}
</router-link>
</dd> </dd>
</dl> </dl>
</template> </template>
<script> <script>
import { reactive, toRefs, onMounted } from "vue"; import { reactive, toRefs, onMounted } from "vue";
import { useRouter, useRoute } from "vue-router";
import { ElMessage, ElLoading } from "element-plus"; import { ElMessage, ElLoading } from "element-plus";
import {listLatestNews} from "@/api/news"; import { listLatestNews } from "@/api/news";
export default { export default {
name: "LatestNews", name: "LatestNews",
setup() { setup() {
const state = reactive({ const state = reactive({
newsList: [], newsList: [],
}); });
const route = useRoute();
const router = useRouter();
onMounted(async () => { onMounted(async () => {
const loadingInstance = ElLoading.service({ const loadingInstance = ElLoading.service({
target: "#indexNews", target: "#indexNews",
@ -30,9 +31,12 @@ export default {
state.newsList = data; state.newsList = data;
}); });
const newsInfo = (newsId) => {
router.push({ path: `/news/${newsId}` });
};
return { return {
...toRefs(state), ...toRefs(state),
newsInfo,
}; };
}, },
}; };

View File

@ -13,12 +13,11 @@ const router = createRouter({
path: '/home', path: '/home',
name: 'home', name: 'home',
component: () => import('@/views/Home') component: () => import('@/views/Home')
}, },
{ {
path: '/home', path: '/news/:id',
name: 'newsContent', name: 'news',
component: () => import('@/views/Home') component: () => import('@/views/News')
}, },
{ {
path: '/bookClass', path: '/bookClass',

61
src/views/News.vue Normal file
View File

@ -0,0 +1,61 @@
<template>
<Header />
<div class="main box_center cf">
<div class="newsMain cf">
<div class="nav_sub">
当前位置<a href="/"> 首页 </a> &gt; <span> 新闻公告 </span> &gt; <span>{{news.title}}</span>
</div>
<div class="channelWrap channelNews cf">
<div class="news_title">
<h2>{{news.title}}</h2>
<!--while ... corresponds to th:text (i.e. result will be HTML-escaped), ... corresponds to th:utext-->
<p class="from">来源{{news.sourceName}} <span class="time">时间{{news.updateTime}}</span> </p>
</div>
<div class="news_info" v-html="news.content"></div>
</div>
</div>
</div>
<Footer />
</template>
<script>
import "@/assets/styles/about.css";
import { reactive, toRefs, onMounted, ref } from "vue";
import { useRouter, useRoute } from "vue-router";
import {getNewsById} from "@/api/news"
import {
listVisitRankBooks,
listUpdateRankBooks,
listNewestRankBooks,
} from "@/api/book";
import Header from "@/components/common/Header";
import Footer from "@/components/common/Footer";
export default {
name: "news",
components: {
Header,
Footer,
},
setup() {
const route = useRoute();
const router = useRouter();
const state = reactive({
news: {}
});
onMounted(async () => {
const { data } = await getNewsById(route.params.id);
state.news = data
});
return {
...toRefs(state)
};
}
};
</script>