From f40906d86cb9b665b617c9e4dc511e41379109ec Mon Sep 17 00:00:00 2001 From: panda <7934952@qq.com> Date: Wed, 3 Jul 2024 17:01:37 +0800 Subject: [PATCH] add new --- src/api/admin.ts | 15 ++- src/views/admin/blogmange/BlogFormView.vue | 107 ++++++++++++++------- 2 files changed, 87 insertions(+), 35 deletions(-) diff --git a/src/api/admin.ts b/src/api/admin.ts index 40ee926..172385e 100644 --- a/src/api/admin.ts +++ b/src/api/admin.ts @@ -20,9 +20,22 @@ export interface classticInterface { text: string, descr: string } +export interface labelInterface { + id?:number, + labelname: string, + descr: string +} + export interface classticFormInterface { header: string, text: string, descr: string -} \ No newline at end of file +} + +export interface typeInterface { + key: string, + id?: number, + typename: string, + descr: string +} diff --git a/src/views/admin/blogmange/BlogFormView.vue b/src/views/admin/blogmange/BlogFormView.vue index 08a2e17..7093b74 100644 --- a/src/views/admin/blogmange/BlogFormView.vue +++ b/src/views/admin/blogmange/BlogFormView.vue @@ -2,37 +2,35 @@
- + - + - {{ + {{ typeItem.typename }} - Red - Green + {{ label.labelname + }} - - + + - + + + - 取消 + 重置 提交 -
-
- -
@@ -43,12 +41,13 @@ import type { UnwrapRef } from 'vue'; import type { Rule } from 'ant-design-vue/es/form'; import { post, get, put } from '@/tools/request'; import { useRouter } from 'vue-router' +import type { labelInterface, typeInterface } from '@/api/admin'; const router = useRouter() interface FormState { id?: number; blogtitle: string; - typeid: number; + typeid: null; blogcontent: string; labelname: string[]; descr: string; @@ -58,12 +57,52 @@ const formRef = ref(); const formState: UnwrapRef = reactive({ blogtitle: '', - typeid: 1, + typeid: null, blogcontent: "", labelname: [], descr: '', imglink: "" }); + +const labellist = ref([]) +const labelList = async () => { + try { + await get( + "labels/list" + ).then(response => { + if (response) { + labellist.value = response.data.data.map((items: any) => ({ + id: items.id, + labelname: items.labelname, + descr: items.descr + + })) + } else { + console.log("the interface request data does not exist!") + } + + }) + } catch (error) { + console.error("Failed to fetch data", error); + } +} +const typelist = ref([]) +const typeList = async () => { + try { + await get("/types/list").then(response => { + if (response) { + typelist.value = response.data.data.map((items: any) => ({ + ...items + })) + } else { + console.log("the interface request data does not exist!") + } + + }) + } catch (error) { + console.error("Failed to fetch data", error); + } +} const rules: Record = { blogtitle: [ { required: true, message: '请输入博客标题', trigger: 'change' }, @@ -74,31 +113,26 @@ const rules: Record = { { max: 255, message: '博客备注不得超过255个字符', trigger: 'change' }, ], }; -const content = ref(); -interface TypeStateData { - id: number, - key: string, - typename: string, - descr: string -} -const typedata = ref([]) -onMounted(async () => { - get("/types/list").then(response => { - typedata.value = response.data.data.map((items: any) => ({ - ...items - })) - }) -}); + const onSubmit = () => { formRef.value .validate() .then(async () => { + const labels = formState.labelname.map(labelId => { + const label = labellist.value.find((label: any) => label.id === labelId); + return label ? { "id": label.id, "labelname": label.labelname, "descr": label.descr } : null; + }); const formdata = { - blogtitle: formState.blogtitle, - typeid: formState.typeid, - blogcontent: content.value, - descr: formState.descr + blog: { + blogtitle: formState.blogtitle, + typeid: formState.typeid, + imglink:formState.imglink, + blogcontent: formState.blogcontent, + descr: formState.descr + }, + labels:labels } + console.log('formdata:', formdata); if (formState.id) { await put(`/blogs/update/${formState.id}`, formdata); } else { @@ -110,6 +144,11 @@ const onSubmit = () => { console.log('error', error); }); }; +onMounted(async () => { + labelList() + typeList() +}); + const resetForm = () => { formRef.value.resetFields(); };