From 42372ddea39e5ba7ce5f01c56e14062200e732f9 Mon Sep 17 00:00:00 2001 From: Quicy <1728550853@qq.com> Date: Tue, 20 Jan 2026 14:12:54 +0800 Subject: [PATCH] feat(model): add model and delete model --- packages/web/package.json | 1 + .../web/src/components/CreateModel/index.vue | 63 ++++++++----- .../web/src/components/DataTable/index.vue | 2 - packages/web/src/pages/login/index.vue | 2 +- packages/web/src/pages/models/index.vue | 94 ++++++++++++++----- packages/web/src/router.ts | 2 +- packages/web/src/store/User.ts | 22 ++++- pnpm-lock.yaml | 3 + 8 files changed, 140 insertions(+), 49 deletions(-) diff --git a/packages/web/package.json b/packages/web/package.json index ed66fb8e..f7d848fc 100644 --- a/packages/web/package.json +++ b/packages/web/package.json @@ -17,6 +17,7 @@ "@tailwindcss/vite": "^4.1.18", "@tanstack/vue-table": "^8.21.3", "@vee-validate/zod": "^4.15.1", + "@vueuse/core": "^14.1.0", "axios": "^1.13.2", "dotenv": "^17.2.3", "pinia": "^3.0.4", diff --git a/packages/web/src/components/CreateModel/index.vue b/packages/web/src/components/CreateModel/index.vue index 2db7feef..933cb749 100644 --- a/packages/web/src/components/CreateModel/index.vue +++ b/packages/web/src/components/CreateModel/index.vue @@ -3,7 +3,7 @@ @@ -132,7 +132,7 @@ @@ -145,14 +145,10 @@ - + Chat - + embedding @@ -206,40 +202,65 @@ import { FormMessage } from '@memoh/ui' import { useForm } from 'vee-validate' -import { ref } from 'vue' +import { inject, watch, type Ref,ref } from 'vue' import { toTypedSchema } from '@vee-validate/zod' import z from 'zod' import request from '@/utils/request' -import { useMutation,useQueryCache } from '@pinia/colada' +import { useMutation, useQueryCache } from '@pinia/colada' const formSchema = toTypedSchema(z.object({ + modelId:z.string().min(1), baseUrl: z.string().min(1), apiKey: z.string().min(1), clientType: z.string().min(1), name: z.string().min(1), - role: z.string().min(1), + type: z.string().min(1), })) const form = useForm({ validationSchema: formSchema }) -const queryCache=useQueryCache() +const queryCache = useQueryCache() +type ModelInfoType= Parameters<(Parameters)[0]>[0] const { mutate: createModel } = useMutation({ - mutation: (modelInfo: Parameters<(Parameters)[0]>[0]) => request({ + mutation: (modelInfo:ModelInfoType ) => request({ url: '/model', data: { - ...modelInfo, - modelId:'fwoi0fjwfiwefwjfiowefoi' + ...modelInfo, }, - method:'post' + method: 'post' }), - onSettled: () => queryCache.invalidateQueries({ key: ['models'], exact: true }) -}) -const addModel = form.handleSubmit(async (modelInfo) => { - createModel(modelInfo) + onSettled: () => { open.value = false; queryCache.invalidateQueries({ key: ['models'], exact: true })} }) -const open = ref(false) +const { mutate: updateModel } = useMutation({ + mutation: (modelInfo: ModelInfoType) => request({ + url: `/model/${editInfo.value?.id}`, + data: { + ...modelInfo, + }, + method: 'PUT' + }), + onSettled: () => { open.value = false; queryCache.invalidateQueries({ key: ['models'], exact: true }) } +}) +const addModel = form.handleSubmit(async (modelInfo) => { + if (editInfo.value?.id) { + updateModel(modelInfo) + } else { + createModel(modelInfo) + } + +}) + +const open = inject>('open',ref(false)) +const editInfo = inject('editModelInfo',ref(null)) +watch(open, () => { + if (open.value && editInfo?.value) { + form.setValues(editInfo.value) + } +}, { + immediate:true +}) \ No newline at end of file diff --git a/packages/web/src/components/DataTable/index.vue b/packages/web/src/components/DataTable/index.vue index 2b1205b0..50836d3d 100644 --- a/packages/web/src/components/DataTable/index.vue +++ b/packages/web/src/components/DataTable/index.vue @@ -5,7 +5,6 @@ import { getCoreRowModel, useVueTable, } from '@tanstack/vue-table' - import { Table, TableBody, @@ -25,7 +24,6 @@ const table = useVueTable({ get columns() { return props.columns }, getCoreRowModel: getCoreRowModel(), }) -console.log(table.getHeaderGroups())