Browse Source

add new

master
panda 7 months ago
parent
commit
e1ad59f2d5
  1. 48
      src/components/blogs/rightsite/RandomArticle.vue
  2. 12
      src/components/blogs/rightsite/TagCloud.vue
  3. 22
      src/stores/index.ts
  4. 4
      src/views/admin/blogmanage/BlogLabelView.vue
  5. 7
      src/views/admin/blogmanage/BlogManageView.vue
  6. 3
      src/views/admin/blogmanage/BlogTypeView.vue
  7. 8
      src/views/blog/HomePageView.vue
  8. 2
      src/views/blog/blogcontent/BlogListView.vue
  9. 2
      src/views/blog/diarycontent/DiaryListView.vue

48
src/components/blogs/rightsite/RandomArticle.vue

@ -1,20 +1,20 @@
<template>
<a-card title="随机文章" :bordered="false" hoverable>
<div v-for="article in homepagelist">
<div v-if="article.blogtitle">
<a :href="`/blog/${article.id}`" v-if="article.blogtitle" class="random-blog">
<div class="article-text">
<span>{{ article.blogtitle }}</span>
<span>{{ article.create_at }}</span>
</div>
<a-image :preview="false" :width="300" :src="article.imglink" />
</div>
<div v-if="article.diarytitle">
<a-image :preview="false" :width="250" :src="article.imglink" />
</a>
<a :href="`/diary/${article.id}`" v-if="article.diarytitle" class="random-diary">
<div class="article-text">
<span>{{ article.diarytitle }}</span>
<span>{{ article.create_at }}</span>
</div>
<a-image :preview="false" :width="300" :src="article.imglink" />
</div>
<a-image :preview="false" :width="250" :src="article.imglink" />
</a>
</div>
</a-card>
</template>
@ -22,6 +22,7 @@
<script setup lang='ts'>
import { get } from '@/tools/request';
import { onMounted, ref } from 'vue';
import dayjs from 'dayjs';
import type { homePageInterface } from '@/api';
const homepagelist = ref<homePageInterface[]>([])
//
@ -29,10 +30,16 @@ const homePageList = async () => {
await get(
"/statistics/homepage"
).then(response => {
homepagelist.value = response.data.data.sort(() => 0.5 - Math.random()).slice(0, 3);
const randResponse = response.data.data.map((items: any) => ({
...items,
imglink: items.imglink || 'http://www.wuruilin.cn/personself/暂无图片A.jpg',
create_at: dayjs(items.create_at).format('YYYY-MM-DD HH:mm:ss'),
update_at: dayjs(items.update_at).format('YYYY-MM-DD HH:mm:ss'),
}))
homepagelist.value = randResponse.sort(() => 0.5 - Math.random()).slice(0, 3);
})
}
onMounted(()=>{
onMounted(() => {
homePageList()
})
</script>
@ -46,4 +53,29 @@ onMounted(()=>{
margin-right: 12px;
font-family: "Lato, 'Helvetica Neue', Arial, Helvetica, sans-serif";
}
.random-blog,
.random-diary {
display: flex;
flex-direction: column;
justify-content: center;
align-items: center;
}
a {
color: rgb(16, 15, 15);
}
a:hover {
color: rgb(134, 134, 231);
}
.random-blog img,
.random-diary img {
padding: 4px;
border: 2px solid #ccc;
display: inline-block;
border-radius: 10px;
box-shadow: 0 4px 8px rgba(0, 0, 0, 0.1);
}
</style>

12
src/components/blogs/rightsite/TagCloud.vue

@ -1,6 +1,6 @@
<template>
<a-card title="标签云" :bordered="false" hoverable>
<a-tag :color=randomColor() v-for="label in labellist">{{ label.labelname }}</a-tag>
<a-tag v-for="label in labellist" :color=randomColor() @click="tagclick(label.labelname)">{{ label.labelname }}</a-tag>
</a-card>
</template>
@ -8,6 +8,10 @@
import { onMounted, ref } from 'vue';
import type { labelInterface } from '@/api/admin';
import { get } from '@/tools/request';
import {homePageStore} from "@/stores/index"
const {fetchHomeLabelPageList}=homePageStore()
import { useRouter } from 'vue-router';
const router=useRouter()
const randomColor = () => {
const labelColor = ref(["processing", "success", "error", "warning", "magenta", "red", "volcano", "orange", "gold", "lime", "green", "cyan", "blue", "geekblue", "purple"])
return labelColor.value[Math.floor(Math.random() * labelColor.value.length)];
@ -25,7 +29,11 @@ const labelList = async () => {
}
}
onMounted(()=>{
const tagclick=(query:any)=>{
router.push("/home")
fetchHomeLabelPageList(query)
}
onMounted(() => {
labelList()
})
</script>

22
src/stores/index.ts

@ -32,8 +32,28 @@ export const homePageStore = defineStore("homePage", () => {
};
const fetchHomeLabelPageList= async (query:any) => {
// const response = await get(`/statistics/searchtitle?title=${query}`);
// homepagelist.value = response.data.data;
get(
"/blogs/search/label/",
{labelname:query}
).then(res => {
homepagelist.value = res.data.data.map((items:any)=>({
...items,
create_at:dayjs(items.create_at).format('YYYY-MM-DD HH:mm:ss'),
update_at: dayjs(items.update_at).format('YYYY-MM-DD HH:mm:ss'),
}));
if (res.data.data.length === 0) {
isEmpty.value=true
}else{
isEmpty.value=false
}
})
return { idShow, homepagelist,isEmpty,fetchHomePageList }
};
return { idShow, homepagelist,isEmpty,fetchHomePageList,fetchHomeLabelPageList }
})
export const blogStore = defineStore("blog", () => {

4
src/views/admin/blogmanage/BlogLabelView.vue

@ -130,6 +130,7 @@ const add = async () => {
"/bloglabels/add",
addList.value
)
message.success("新增成功")
labelList()
addControl.open = false
formRef.value.resetFields();
@ -149,6 +150,7 @@ const del = async (id: any) => {
await remove(
`/bloglabels/delete/${id}`
)
message.success("删除成功")
labelList()
} else {
console.log("id do not exist!")
@ -179,7 +181,7 @@ const edit = async (id: any) => {
editList.value
)
editControl.open = false
formRef.value.resetFields()
message.success("编辑成功")
labelList()
} else {
console.log("id do not exist!")

7
src/views/admin/blogmanage/BlogManageView.vue

@ -214,6 +214,7 @@ const del = async (id: any) => {
await remove(
`/blogs/delete/${id}`
)
message.success("删除成功")
blogList()
} else {
console.log("id do not exist!")
@ -265,11 +266,13 @@ const onSubmit = () => {
}
if (formControl.ids) {
await put(`/blogs/update/${formControl.ids}`, formdata)
formControl.open = false,
formControl.open = false
message.success("编辑成功")
blogList()
} else {
await post('/blogs/add', formdata);
formControl.open = false,
formControl.open = false
message.success("新增成功")
blogList()
}
})

3
src/views/admin/blogmanage/BlogTypeView.vue

@ -133,6 +133,7 @@ const add = async () => {
"/blogtypes/add",
addList.value
)
message.success("新增成功")
typeList()
addControl.open = false
formRef.value.resetFields();
@ -152,6 +153,7 @@ const del = async (id: any) => {
await remove(
`/blogtypes/delete/${id}`
)
message.success("删除成功")
typeList()
} else {
console.log("id do not exist!")
@ -183,6 +185,7 @@ const edit = async (id: any) => {
)
editControl.open = false
formRef.value.resetFields()
message.success("编辑成功")
typeList()
} else {
console.log("id do not exist!")

8
src/views/blog/HomePageView.vue

@ -22,13 +22,13 @@
<template #icon>
<component :is=iconComponents.XieZiLined />
</template>
字数{{ article.wordcount }}
字数{{ article.blogcontent.length }}
</a-tag>
<a-tag color="#20B2AA">
<template #icon>
<component :is=iconComponents.YueDuLined />
</template>
阅读时长{{ article.blogcontent?.length }}
阅读时长{{ Math.round(article.blogcontent.length/ 200) }}
</a-tag>
</div>
<div class="blog-content">
@ -71,13 +71,13 @@
<template #icon>
<component :is=iconComponents.XieZiLined />
</template>
字数{{ article.wordcount }}
字数{{ article.diarycontent.length }}
</a-tag>
<a-tag color="#20B2AA">
<template #icon>
<component :is=iconComponents.YueDuLined />
</template>
阅读时长{{ 111 }}
阅读时长{{ Math.round(article.diarycontent.length/ 200) }}
</a-tag>
</div>
<div class="blog-content">

2
src/views/blog/blogcontent/BlogListView.vue

@ -117,7 +117,7 @@ const blogList = async (page: number, pageSize: number) => {
update_at: dayjs(items.update_at).format('YYYY-MM-DD HH:mm:ss'),
readnum: items.readnum,
readminite: Math.round(items.blogcontent.length/ 200),
imglink: items.imglink,
imglink: items.imglink || 'http://www.wuruilin.cn/personself/暂无图片信息空状态.jpg',
}))
total.value = response.data.data.total; //

2
src/views/blog/diarycontent/DiaryListView.vue

@ -96,7 +96,7 @@ const diaryList = async (page: number, pageSize: number) => {
update_at: dayjs(items.update_at).format('YYYY-MM-DD HH:mm:ss'),
readnum: items.readnum,
readminite: Math.round(items.diarycontent.length/ 200),
imglink: items.imglink,
imglink: items.imglink || 'http://www.wuruilin.cn/personself/暂无图片.jpg',
}));
total.value = response.data.data.total; //
pageSizeRef.value = pageSize; // response.data.data.page_size

Loading…
Cancel
Save