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();
};