Browse Source

add new

master
panda 8 months ago
parent
commit
e3183494d1
  1. 13
      src/components/admin/MainWrapper.vue
  2. 6
      src/router/admin.ts
  3. 18
      src/stores/index.ts
  4. 26
      src/views/admin/blogmanage/BlogLabelView.vue
  5. 97
      src/views/admin/blogmanage/BlogManageView.vue
  6. 27
      src/views/admin/blogmanage/BlogTypeView.vue
  7. 130
      src/views/admin/diarymanage/DiaryManageView.vue
  8. 48
      src/views/blog/blogcontent/BlogListView.vue
  9. 25
      src/views/blog/diarycontent/DiaryListView.vue

13
src/components/admin/MainWrapper.vue

@ -77,6 +77,12 @@ const items = reactive([
key: 'blogtype',
label: '博客分类',
title: '博客分类',
},
{
key: 'bloglabel',
icon: () => h(iconComponents.TypeOutLined),
label: '博客标签',
title: '博客标签',
}
],
},
@ -110,13 +116,6 @@ const items = reactive([
label: '链接管理',
title: '链接管理',
},
{
key: 'labelmanage',
icon: () => h(iconComponents.TypeOutLined),
label: '标签管理',
title: '标签管理',
},
{
key: 'commentmanage',
icon: () => h(iconComponents.CommentOutLined),

6
src/router/admin.ts

@ -42,9 +42,9 @@ const adminRoute: Array<RouteRecordRaw> = [
component: () => import("@/views/admin/CommonLinkManageView.vue")
},
{
path: "labelmanage",
name: "labelmanage",
component: () => import("@/views/admin/LabelManageView.vue")
path: "bloglabel",
name: "bloglabel",
component: () => import("@/views/admin/blogmanage/BlogLabelView.vue")
}
]
},

18
src/stores/index.ts

@ -35,10 +35,18 @@ export const homePageStore = defineStore("homePage", () => {
export const blogStore = defineStore("blog", () => {
const delControl = reactive({
open: false,
ids: ""
ids: "",
title:""
})
return { delControl }
const formControl = ref({
open: false,
ids: null
})
const readcount=ref(0)
const setReadCount=(num:number)=>{
readcount.value+=num
}
return { delControl,formControl,readcount,setReadCount }
})
export const useContentStore = defineStore('content', () => {
const content = ref({ text: "" });
@ -58,8 +66,10 @@ export const useContentStore = defineStore('content', () => {
export const diaryStore = defineStore("diary", () => {
const delControl = reactive({
open: false,
ids: ""
ids: "",
title:""
})
return { delControl }
})

26
src/views/admin/LabelManageView.vue → src/views/admin/blogmanage/BlogLabelView.vue

@ -7,13 +7,13 @@
<a-space style="margin-left: 16px;">
<a-button @click="search">查询</a-button>
<a-button type="primary" ghost @click="addModal">新增</a-button>
<a-modal v-model:open="addControl.open" :title="addControl.title" cancelText="取消" okText="确定" @ok="add">
<a-modal v-model:open="addControl.open" :title="addControl.title" cancelText="取消" okText="确定" @ok="add" @cancel="unControl(addControl.title)">
<a-form ref="formRef" :model="addList" name="basic" :label-col="{ span: 4, offset: 2 }"
:wrapper-col="{ span: 16 }">
<a-form-item label="标签名称" name="labelname" :rules="[{ required: true, message: '请输入标签名称!' }]">
<a-input v-model:value="addList.labelname" />
</a-form-item>
<a-form-item label="备注" name="descr" :rules="[{ required: true, message: '请输入备注!' }]">
<a-form-item label="备注" name="descr" :rules="[{ required: false, message: '请输入备注!' }]">
<a-input v-model:value="addList.descr" />
</a-form-item>
</a-form>
@ -28,13 +28,13 @@
<div>
<a-button size="small" danger @click="delModal(record.id)">删除</a-button>
<a-modal v-model:open="delControl.open" title="提示" ok-text="确认" cancel-text="取消"
@ok="del">
@ok="del" @cancel="unControl('删除')">
<p>确认删除吗</p>
</a-modal>
</div>
<a-button size="small" type="primary" ghost @click="editModal(record.id)">编辑</a-button>
<a-modal v-model:open="editControl.open" :title="editControl.title" cancelText="取消"
okText="确定" @ok="edit">
okText="确定" @ok="edit" @cancel="unControl(editControl.title)">
<a-form ref="formRef" :model="editList" name="basic" :label-col="{ span: 4, offset: 2 }"
:wrapper-col="{ span: 16 }">
<a-form-item label="标签名称" name="labelname"
@ -42,7 +42,7 @@
<a-input v-model:value="editList.labelname" />
</a-form-item>
<a-form-item label="备注" name="descr"
:rules="[{ required: true, message: '请修改备注!' }]">
:rules="[{ required: false, message: '请修改备注!' }]">
<a-input v-model:value="editList.descr" />
</a-form-item>
</a-form>
@ -58,6 +58,7 @@
<script setup lang='ts'>
import { onMounted, reactive, ref } from 'vue';
import { labelStore } from "@/stores/index"
import { message } from 'ant-design-vue';
import type { labelInterface } from "@/api/admin/index"
import { get, post, remove, put } from '@/tools/request';
const { delControl, addControl, editControl } = labelStore()
@ -76,7 +77,7 @@ const editList = ref({
})
const labelList = async () => {
try {
await get("/labels/list").then(response => {
await get("/bloglabels/list").then(response => {
if (response) {
labellist.value = response.data.data.map((item: any, index: any) => ({
key: (index + 1).toString(),
@ -96,7 +97,7 @@ const labelList = async () => {
const search = async () => {
try {
await get(
"/labels/list/search",
"/bloglabels/list/search",
{ labelname: searchlist.labelname }
).then(response => {
if (response) {
@ -114,6 +115,9 @@ const search = async () => {
console.log("interface request exception")
}
}
const unControl=(text:string)=>{
message.warn(`取消${text}`)
}
const addModal = () => {
addControl.title = "新增"
@ -123,7 +127,7 @@ const formRef = ref();
const add = async () => {
try {
await post(
"/labels/add",
"/bloglabels/add",
addList.value
)
labelList()
@ -143,7 +147,7 @@ const del = async (id: any) => {
try {
if (id) {
await remove(
`/labels/delete/${id}`
`/bloglabels/delete/${id}`
)
labelList()
} else {
@ -161,7 +165,7 @@ const editModal = (id: any) => {
editControl.title = "编辑"
editControl.open = true
get(
`/labels/list/search/${id}`
`/bloglabels/list/search/${id}`
).then(response => {
editList.value = response.data.data
})
@ -171,7 +175,7 @@ const edit = async (id: any) => {
try {
if (id) {
await put(
`/labels/update/${id}`,
`/bloglabels/update/${id}`,
editList.value
)
editControl.open = false

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

@ -12,8 +12,8 @@
</a-space>
</div>
<div class="modal">
<a-modal v-model:open="formControl.open" title="Basic Modal" width="100%" wrap-class-name="full-modal"
@ok="onSubmit" ok-text="确认" cancel-text="取消">
<a-modal v-model:open="formControl.open" :title="delControl.title" width="100%" wrap-class-name="full-modal"
@ok="onSubmit" ok-text="确认" cancel-text="取消" @cancel="unControl(delControl.title)">
<a-form ref="formRef" :model="formState" :rules="rules">
<a-flex gap="large" justify="space-between">
<a-form-item label="博客标题" name="blogtitle">
@ -43,6 +43,11 @@
</a-form-item>
</a-form>
</a-modal>
<a-modal v-model:open="delControl.open" title="提示" @ok="del" ok-text="确认" cancel-text="取消"
@cancel="unControl('删除')">
<p>确认删除吗</p>
</a-modal>
</div>
<div class="table">
<a-table bordered :data-source="bloglist" :columns="columns">
@ -58,13 +63,10 @@
<a-space>
<div>
<a-button size="small" danger @click="delModal(record.id)">删除</a-button>
<a-modal v-model:open="open" title="提示" @ok="ackDelete(record)" ok-text="确认"
cancel-text="取消" @cancel="unDelete">
<p>确认删除吗</p>
</a-modal>
</div>
<a-button size="small" type="primary" ghost @click="editModal(record.id)">编辑</a-button>
<a-button size="small" type="primary" ghost @click="ackWatch(record)">预览</a-button>
</a-space>
</template>
</template>
@ -74,20 +76,18 @@
</template>
<script setup lang='ts'>
import { ref, reactive, onMounted, toRefs } from 'vue';
import { ref, reactive, onMounted } from 'vue';
import 'dayjs/locale/zh-cn';
import locale from 'ant-design-vue/es/date-picker/locale/zh_CN';
import dayjs from 'dayjs';
import type { Rule } from 'ant-design-vue/es/form';
import { useRouter } from "vue-router"
import { message } from 'ant-design-vue';
import type { blogInterface } from "@/api/admin"
import { get, post, put } from "@/tools/request"
import { get, post, put, remove } from "@/tools/request"
import { blogStore } from '@/stores';
import type { labelInterface, typeInterface } from "@/api/admin"
dayjs.locale('zh-cn');
const router = useRouter()
const { delControl } = blogStore()
const { delControl, formControl } = blogStore()
//
const searchlist = reactive({
blogtitle: "",
@ -160,7 +160,7 @@ const labellist = ref<labelInterface[]>([])
const labelList = async () => {
try {
await get(
"labels/list"
"bloglabels/list"
).then(response => {
if (response) {
labellist.value = response.data.data.map((items: any) => ({
@ -207,27 +207,44 @@ const rules: Record<string, Rule[]> = {
],
};
const formControl = ref({
open: false,
ids: null
})
const del = async (id: any) => {
id = delControl.ids
try {
if (id) {
await remove(
`/blogs/delete/${id}`
)
blogList()
} else {
console.log("id do not exist!")
}
} catch (error) {
console.log("interface request exception")
}
delControl.open = false
}
const formRef = ref();
const addModal = () => {
delControl.title = "新增"
resetForm()
formControl.value.open = true
formControl.open = true
formControl.ids = null
}
const editModal = (id: any) => {
formControl.value.ids = id
formControl.value.open = true
delControl.title = "编辑"
formControl.ids = id
formControl.open = true
get(
`/blogs/search/${id}`
).then(response => {
formState.value = response.data.data
})
console.log(formControl.value.ids)
console.log(formControl.ids)
}
const onSubmit = () => {
formRef.value
@ -247,20 +264,18 @@ const onSubmit = () => {
},
labels: labels
}
if (formControl.value.ids) {
await put(`/blogs/update/${formControl.value.ids}`, formdata)
formControl.value.open = false,
if (formControl.ids) {
await put(`/blogs/update/${formControl.ids}`, formdata)
formControl.open = false,
blogList()
} else {
await post('/blogs/add', formdata);
formControl.value.open = false,
formControl.open = false,
blogList()
}
})
};
const open = ref<boolean>(false);
const delModal = (id: any) => {
delControl.open = true;
delControl.ids = id;
@ -303,31 +318,15 @@ const labelfilter = (labelnames: any) => {
console.error('Invalid JSON string:', labelnames);
}
}
return Array.isArray(labels) ? labels.filter(label => label && label.trim() !== '') : [];
}
//
// const ackDelete = async (record:{key:string,id:number}) => {
// remove(`/blogs/delete/${toDelete.id}`).then((response) => {
// if (response.status === 200) {
// dataSource.value = dataSource.value.filter(item => item.key !== record.key);
// open.value = false;
// }
// message.info("")
// }).catch(error => {
// console.error('There was an error deleting the blog!', error);
// })
// };
//
return Array.isArray(labels) ? labels.filter((label: any) => label && label.trim() !== '') : [];
const ackUpdate = async (id: any) => {
router.push(`/admin/blogmanage/update/${id}`);
};
const ackWatch = async (record: { key: string, id: number }) => {
router.push(`/admin/blogmanage/watch`);
}
const unDelete = async () => {
message.warn("取消删除")
const unControl = (text: string) => {
message.warn(`取消${text}`)
}
const columns = [
{
title: '序号',

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

@ -7,13 +7,13 @@
<a-space style="margin-left: 16px;">
<a-button @click="search">查询</a-button>
<a-button type="primary" ghost @click="addModal">新增</a-button>
<a-modal v-model:open="addControl.open" :title="addControl.title" cancelText="取消" okText="确定" @ok="add">
<a-modal v-model:open="addControl.open" :title="addControl.title" cancelText="取消" okText="确定" @ok="add" @cancel="unControl(addControl.title)">
<a-form ref="formRef" :model="addList" name="basic" :label-col="{ span: 4, offset: 2 }"
:wrapper-col="{ span: 16 }">
<a-form-item label="类型名称" name="typename" :rules="[{ required: true, message: '请输入类型名称!' }]">
<a-input v-model:value="addList.typename" />
</a-form-item>
<a-form-item label="备注" name="descr" :rules="[{ required: true, message: '请输入备注!' }]">
<a-form-item label="备注" name="descr" :rules="[{ required: false, message: '请输入备注!' }]">
<a-input v-model:value="addList.descr" />
</a-form-item>
</a-form>
@ -28,13 +28,13 @@
<div>
<a-button size="small" danger @click="delModal(record.id)">删除</a-button>
<a-modal v-model:open="delControl.open" title="提示" ok-text="确认" cancel-text="取消"
@ok="del">
@ok="del" @cancel="unControl('删除')">
<p>确认删除吗</p>
</a-modal>
</div>
<a-button size="small" type="primary" ghost @click="editModal(record.id)">编辑</a-button>
<a-modal v-model:open="editControl.open" :title="editControl.title" cancelText="取消"
okText="确定" @ok="edit">
okText="确定" @ok="edit" @cancel="unControl(editControl.title)">
<a-form ref="formRef" :model="editList" name="basic" :label-col="{ span: 4, offset: 2 }"
:wrapper-col="{ span: 16 }">
<a-form-item label="类型名称" name="typename"
@ -42,7 +42,7 @@
<a-input v-model:value="editList.typename" />
</a-form-item>
<a-form-item label="备注" name="descr"
:rules="[{ required: true, message: '请修改备注!' }]">
:rules="[{ required: false, message: '请修改备注!' }]">
<a-input v-model:value="editList.descr" />
</a-form-item>
</a-form>
@ -59,6 +59,7 @@
import { onMounted, reactive, ref } from 'vue';
import { typeStore } from "@/stores/index"
import type { typeInterface } from "@/api/admin"
import { message } from 'ant-design-vue';
import { get, post, remove, put } from '@/tools/request';
const { delControl, addControl, editControl } = typeStore()
const typelist = ref<typeInterface[]>([])
@ -74,6 +75,11 @@ const editList = ref({
typename: "",
descr: ""
})
const unControl=(text:string)=>{
message.warn(`取消${text}`)
}
const typeList = async () => {
try {
await get("/blogtypes/list").then(response => {
@ -93,10 +99,11 @@ const typeList = async () => {
}
}
//
const search = async () => {
try {
await get(
"/types/list/search",
"/blogtypes/list/search",
{ typename: searchlist.typename }
).then(response => {
if (response) {
@ -123,7 +130,7 @@ const formRef = ref();
const add = async () => {
try {
await post(
"/types/add",
"/blogtypes/add",
addList.value
)
typeList()
@ -143,7 +150,7 @@ const del = async (id: any) => {
try {
if (id) {
await remove(
`/types/delete/${id}`
`/blogtypes/delete/${id}`
)
typeList()
} else {
@ -161,7 +168,7 @@ const editModal = (id: any) => {
editControl.title = "编辑"
editControl.open = true
get(
`/types/list/search/${id}`
`/blogtypes/list/search/${id}`
).then(response => {
editList.value = response.data.data
})
@ -171,7 +178,7 @@ const edit = async (id: any) => {
try {
if (id) {
await put(
`/types/update/${id}`,
`/blogtypes/update/${id}`,
editList.value
)
editControl.open = false

130
src/views/admin/diarymanage/DiaryManageView.vue

@ -12,8 +12,8 @@
</a-space>
</div>
<div class="modal">
<a-modal v-model:open="formControl.open" title="Basic Modal" width="100%" wrap-class-name="full-modal"
@ok="onSubmit" ok-text="确认" cancel-text="取消">
<a-modal v-model:open="formControl.open" :title="delControl.title" width="100%" wrap-class-name="full-modal"
@ok="onSubmit" ok-text="确认" cancel-text="取消" @cancel="unControl(delControl.title)">
<a-form ref="formRef" :model="formState" :rules="rules">
<a-flex gap="large" justify="space-between">
<a-form-item label="日记标题" name="diarytitle">
@ -26,24 +26,22 @@
typeItem.typename }}</a-select-option>
</a-select>
</a-form-item>
<a-form-item name="labelname" label="标签名称" class="items">
<a-select v-model:value="formState.labelnames" mode="multiple" placeholder="请选择标签">
<a-select-option :value="label.id" v-for="label in labellist">{{ label.labelname
}}</a-select-option>
</a-select>
</a-form-item>
<a-form-item label="文图地址" name="imglink" class="items">
<a-input v-model:value="formState.imglink" placeholder="请输入文图地址" />
</a-form-item>
</a-flex>
<v-md-editor v-model="formState.diarycontent" height="800px"
left-toolbar="undo redo clear | h bold italic strikethrough quote | ul ol table hr | link image code | save | tip | emoji"
></v-md-editor>
left-toolbar="undo redo clear | h bold italic strikethrough quote | ul ol table hr | link image code | save | tip | emoji"></v-md-editor>
<a-form-item label="日记备注" name="descr" class="desrpad">
<a-textarea v-model:value="formState.descr" />
</a-form-item>
</a-form>
</a-modal>
<a-modal v-model:open="delControl.open" title="提示" @ok="del" ok-text="确认" cancel-text="取消"
@cancel="unControl('删除')">
<p>确认删除吗</p>
</a-modal>
</div>
<div class="table">
<a-table bordered :data-source="diarylist" :columns="columns">
@ -59,14 +57,9 @@
<a-space>
<div>
<a-button size="small" danger @click="delModal(record.id)">删除</a-button>
<a-modal v-model:open="open" title="提示" @ok="ackDelete(record)" ok-text="确认"
cancel-text="取消" @cancel="unDelete">
<p>确认删除吗</p>
</a-modal>
</div>
<a-button size="small" type="primary" ghost @click="editModal(record.id)">{{ record.id
}}编辑</a-button>
<a-button size="small" type="primary" ghost @click="ackWatch(record)">预览</a-button>
<a-button size="small" type="primary" ghost @click="editModal(record.id)">编辑</a-button>
</a-space>
</template>
</template>
@ -84,7 +77,7 @@ import type { Rule } from 'ant-design-vue/es/form';
import { useRouter } from "vue-router"
import { message } from 'ant-design-vue';
import type { diaryInterface } from "@/api/admin"
import { get, post, put } from "@/tools/request"
import { get, post, put,remove } from "@/tools/request"
import { diaryStore } from '@/stores';
import type { labelInterface, typeInterface } from "@/api/admin"
dayjs.locale('zh-cn');
@ -110,7 +103,7 @@ const onChange = (date: string, dateString: string[]) => {
const search = async () => {
try {
const response = await get("/diarys/list/search", {
const response = await get("/diarys/search", {
diarytitle: searchlist.diarytitle,
typename: searchlist.typename,
start_date: searchlist.start_date,
@ -136,6 +129,9 @@ const search = async () => {
console.error("request is exception", error);
}
};
const unControl = (text: string) => {
message.warn(`取消${text}`)
}
const formState = ref({
id: '',
@ -146,7 +142,17 @@ const formState = ref({
descr: '',
imglink: ""
});
const resetFormState = () => {
formState.value = {
id: '',
diarytitle: '',
typeid: null,
diarycontent: "",
labelnames: [],
descr: '',
imglink: ""
}
}
const typelist = ref<typeInterface[]>([])
const typeList = async () => {
try {
@ -176,24 +182,26 @@ const rules: Record<string, Rule[]> = {
],
};
const formControl=ref({
open:false,
ids:null
const formControl = ref({
open: false,
ids: null
})
const formRef = ref();
const addModal = () => {
delControl.title = "新增"
formControl.value.open = true
console.log(formControl.value.ids)
resetFormState()
}
const editModal = (id: any) => {
delControl.title = "编辑"
formControl.value.ids = id
formControl.value.open = true
get(
`/diarys/list/search/${id}`
).then(response=>{
formState.value=response.data.data
).then(response => {
formState.value = response.data.data
})
console.log(formControl.value.ids)
@ -202,33 +210,29 @@ const onSubmit = () => {
formRef.value
.validate()
.then(async () => {
const labels = formState.value.labelnames.map(labelId => {
const label = labellist.value.find((label: any) => label.id === labelId);
return label ? { "id": label.id, "labelname": label.labelname, "descr": label.descr } : null;
});
if (formState.value.diarycontent === "" || formState.value.diarycontent.trim() === "") {
message.error("日记内容不能为空")
return;
}
const formdata = {
diary: {
diarytitle: formState.value.diarytitle,
typeid: formState.value.typeid,
imglink: formState.value.imglink,
diarycontent: formState.value.diarycontent,
descr: formState.value.descr
},
labels: labels
diarytitle: formState.value.diarytitle,
typeid: formState.value.typeid,
imglink: formState.value.imglink,
diarycontent: formState.value.diarycontent,
descr: formState.value.descr
}
if (formControl.value.ids) {
await put(`/diarys/update/${formControl.value.ids}`, formdata)
formControl.value.open=false,
diaryList()
formControl.value.open = false,
diaryList()
} else {
await post('/diarys/add', formdata);
formControl.value.open=false,
diaryList()
formControl.value.open = false,
diaryList()
}
})
};
const open = ref<boolean>(false);
const delModal = (id: any) => {
delControl.open = true;
@ -253,7 +257,7 @@ const diaryList = async () => {
diarycontent: items.diarycontent,
typename: items.typename,
}))
console.log(`output->diarylist`,diarylist)
console.log(`output->diarylist`, diarylist)
} else {
console.log("diarylist is not exits")
}
@ -273,29 +277,25 @@ const labelfilter = (labelnames: any) => {
}
return Array.isArray(labels) ? labels.filter(label => label && label.trim() !== '') : [];
}
//
// const ackDelete = async (record:{key:string,id:number}) => {
// remove(`/diarys/delete/${toDelete.id}`).then((response) => {
// if (response.status === 200) {
// dataSource.value = dataSource.value.filter(item => item.key !== record.key);
// open.value = false;
// }
// message.info("")
// }).catch(error => {
// console.error('There was an error deleting the diary!', error);
// })
// };
//
const ackUpdate = async (id: any) => {
router.push(`/admin/diarymanage/update/${id}`);
};
const ackWatch = async (record: { key: string, id: number }) => {
router.push(`/admin/diarymanage/watch`);
}
const unDelete = async () => {
message.warn("取消删除")
const del = async (id: any) => {
id = delControl.ids
try {
if (id) {
await remove(
`/diarys/delete/${id}`
)
diaryList()
} else {
console.log("id do not exist!")
}
} catch (error) {
console.log("interface request exception")
}
delControl.open = false
}
const columns = [
{
title: '序号',

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

@ -64,12 +64,12 @@
<script setup lang='ts'>
import { onMounted, ref } from 'vue';
import iconComponents from '@/assets';
import {useContentStore} from "@/stores"
import { useContentStore } from "@/stores"
import dayjs from 'dayjs';
import type { blogInterface } from '@/api/admin';
import { get } from "@/tools/request"
import { get,put } from "@/tools/request"
import router from '@/router';
const store=useContentStore()
const store = useContentStore()
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)];
@ -85,24 +85,55 @@ const onShowSizeChange = (page: number) => {
current.value = page;
blogList(page, pageSizeRef.value)
};
// const blogList = async (page: number, pageSize: number) => {
// try {
// const response = await get('/blogs/list', {
// page,
// page_size: pageSize,
// })
// bloglist.value = response.data.data.blogs;
// total.value = response.data.data.total; //
// pageSizeRef.value = pageSize; // response.data.data.page_size
// dataLoaded.value = true
// } catch (error) {
// console.error('Failed to fetch data', error);
// }
// };
const blogList = async (page: number, pageSize: number) => {
try {
const response = await get('/blogs/list', {
page,
page_size: pageSize,
});
console.log(response)
bloglist.value = response.data.data.blogs;
})
bloglist.value = response.data.data.blogs.map((items: any,index:number) => ({
id: items.id,
key: items.key,
blogtitle: items.blogtitle,
blogcontent: items.blogcontent,
typename: items.typename,
labelnames: items.labelnames,
wordcount: items.blogcontent.length,
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'),
readnum: items.readnum,
readminite: Math.round(items.blogcontent.length/ 200),
imglink: items.imglink,
}))
total.value = response.data.data.total; //
pageSizeRef.value = pageSize; // response.data.data.page_size
dataLoaded.value = true
} catch (error) {
console.error('Failed to fetch data', error);
}
};
}
const blogCount=async (id:any)=>{
await put(`/blogs/update/${id}/readnum`)
}
const readMore = (id: any) => {
router.push(`/blog/${id}`)
blogCount(id)
}
onMounted(() => {
@ -204,7 +235,8 @@ onMounted(() => {
margin-left: 24px;
}
.pagination{
.pagination {
margin-bottom: 24px;
display: flex;
justify-content: right;

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

@ -34,12 +34,12 @@
<div>
<a-image :preview="false" :width="1000" :height="500" :src=article.imglink />
</div>
</div>
<div class="read-button">
<a-button type="primary" shape="round" @click="readMore(article.id)">阅读全文</a-button>
</div>
</a-card>
</a-badge-ribbon>
</div>
@ -62,9 +62,9 @@ import iconComponents from '@/assets';
import dayjs from 'dayjs';
import type { diaryInterface } from '@/api/admin';
import { get } from "@/tools/request"
import {useContentStore} from "@/stores"
import { useContentStore } from "@/stores"
import router from '@/router';
const store =useContentStore()
const store = useContentStore()
const dataLoaded = ref(false);
//
const pageSizeOptions = ref<string[]>(['10', '20', '30', '40', '50']);
@ -82,7 +82,19 @@ const diaryList = async (page: number, pageSize: number) => {
page,
page_size: pageSize,
});
diarylist.value = response.data.data.diarys;
diarylist.value = response.data.data.diarys.map((items: any, index: number) => ({
id: (index+1).toString(),
key: items.key,
diarytitle: items.diarytitle,
diarycontent: items.diarycontent,
typename: items.typename,
wordcount: items.diarycontent.length,
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'),
readnum: items.readnum,
readminite: Math.round(items.diarycontent.length/ 200),
imglink: items.imglink,
}));
total.value = response.data.data.total; //
pageSizeRef.value = pageSize; // response.data.data.page_size
dataLoaded.value = true
@ -203,7 +215,8 @@ onMounted(() => {
margin-left: 24px;
}
.pagination{
.pagination {
margin-bottom: 24px;
display: flex;
justify-content: right;

Loading…
Cancel
Save