From 25383d56c69f6bca27602948a61b08d715a17884 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=A8=E8=B0=A2=E9=9B=A8?= <554737215@qq.com> Date: Thu, 27 Feb 2025 18:18:00 +0800 Subject: [PATCH] =?UTF-8?q?fetch:=20=E9=A1=B5=E9=9D=A2=E7=A7=BB=E6=A4=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 向量模型库接口对接 --- src/api/new-ai/embed-store.ts | 28 ++---- .../ai/model/embedStore/composables/index.ts | 92 +++++++++++++------ src/views/ai/model/embedStore/edit.vue | 10 +- src/views/ai/model/embedStore/index.vue | 24 +++-- 4 files changed, 89 insertions(+), 65 deletions(-) diff --git a/src/api/new-ai/embed-store.ts b/src/api/new-ai/embed-store.ts index a67e929..735112e 100644 --- a/src/api/new-ai/embed-store.ts +++ b/src/api/new-ai/embed-store.ts @@ -1,18 +1,4 @@ -/* - * Copyright (c) 2024 LangChat. TyCoding All Rights Reserved. - * - * Licensed under the GNU Affero General Public License, Version 3 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * https://www.gnu.org/licenses/agpl-3.0.html - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ + import request from '@/config/axios' @@ -26,32 +12,32 @@ export interface EmbedStoreVO { export const EmbedStoreApi = { // 获得嵌入存储列表 getEmbedStoreList: async (params: any) => { - return await request.get({ url: '/aigc/embed-store/list', params }) + return await request.get({ url: '/chat/aigc/embed-store/list', params }) }, // 获得嵌入存储分页 getEmbedStorePage: async (params: any) => { - return await request.get({ url: '/aigc/embed-store/page', params }) + return await request.get({ url: '/chat/aigc/embed-store/page', params }) }, // 获得嵌入存储详情 getEmbedStore: async (id: string) => { - return await request.get({ url: `/aigc/embed-store/${id}` }) + return await request.get({ url: `/chat/aigc/embed-store/${id}` }) }, // 创建嵌入存储 createEmbedStore: async (data: any) => { - return await request.post({ url: '/aigc/embed-store', data }) + return await request.post({ url: '/chat/aigc/embed-store', data }) }, // 更新嵌入存储 updateEmbedStore: async (data: any) => { - return await request.put({ url: '/aigc/embed-store', data }) + return await request.put({ url: '/chat/aigc/embed-store', data }) }, // 删除嵌入存储 deleteEmbedStore: async (id: string) => { - return await request.delete({ url: `/aigc/embed-store/${id}` }) + return await request.delete({ url: `/chat/aigc/embed-store/${id}` }) } } // export function list(params: any) { diff --git a/src/views/ai/model/embedStore/composables/index.ts b/src/views/ai/model/embedStore/composables/index.ts index 90c66f8..ed689b8 100644 --- a/src/views/ai/model/embedStore/composables/index.ts +++ b/src/views/ai/model/embedStore/composables/index.ts @@ -2,24 +2,30 @@ import {ref} from "vue"; import {FormSchema} from "@/types/form"; import {ElTag} from "element-plus"; import {EmbedStoreApi} from "@/api/new-ai/embed-store"; +import { useTable } from "@/hooks/web/useTable"; +import { TableColumn } from "@/types/table"; export enum ProviderEnum { Redis = 'REDIS', PgVector = 'PGVECTOR', Milvus = 'MILVUS', } + export const ProviderConst = [ { label: 'Redis', value: ProviderEnum.Redis }, { label: 'PgVector', value: ProviderEnum.PgVector }, { label: 'Milvus', value: ProviderEnum.Milvus }, ]; + export default function () { + const editRef = ref() + const searchParams = ref({}); const ProviderConst = [ { label: 'Redis', value: ProviderEnum.Redis }, { label: 'PgVector', value: ProviderEnum.PgVector }, { label: 'Milvus', value: ProviderEnum.Milvus }, ]; - + function getProviderLabel(value: any) { const arr = ProviderConst.filter((i) => i.value === value); if (arr === undefined || arr.length === 0) { @@ -27,10 +33,10 @@ export default function () { } return arr[0].label; } - + const shema = ref([ { - label: '模型名称', + label: '数据库别名', field: 'name', component: 'Input', colProps: { @@ -38,8 +44,8 @@ export default function () { }, } ]) - - const columns = ref([ + + const columns = ref([ { label: '数据库别名', field: 'name', @@ -67,7 +73,7 @@ export default function () { field: 'dimension', align: 'center', width: '100', - render(row) { + formatter(row) { return h( ElTag, { @@ -83,6 +89,7 @@ export default function () { label: '数据库地址', field: 'host', align: 'center', + width: '110', }, { label: '数据库端口', @@ -91,46 +98,71 @@ export default function () { width: '100', }, { - label: '数据库名称', - field: 'database', + label: '数据库用户名', + field: 'username', align: 'center', }, - ]); - - const tableData = ref([]) - const editRef = ref() - const searchParams = ref({}) - - // 加载数据 - const loadData = async () => { - try { - const res = await EmbedStoreApi.getEmbedStorePage(searchParams.value); - tableData.value = res.data.list; - } catch (error) { - console.error('Failed to load embed stores:', error); + { + label: '数据库密码', + field: 'password', + align: 'center', + }, + { + label: '数据库名', + field: 'databaseName', + align: 'center', + }, + { + label: '表名称', + field: 'tableName', + align: 'center', + }, + { + label: '操作', + field: "action", + width: 150 } - } + ]); + + const {register, tableObject, methods} = useTable({ + getListApi: EmbedStoreApi.getEmbedStorePage, + defaultParams: searchParams.value, + delListApi: EmbedStoreApi.deleteEmbedStore + }); + + // 打开编辑对话框 - const open = () => { - editRef.value.show({}); + const open = (data?: any) => { + editRef.value.show(data); } // 处理搜索 const handleSearch = (values: any) => { - searchParams.value = values; - loadData(); + methods.setSearchParams(values) } + const pagination = computed(() => { + return { + total: tableObject.total, + pageSize: tableObject.pageSize, + currentPage: tableObject.currentPage + } + }) + const handleDel = () => { + } return { shema, columns, - tableData, - editRef, + register, open, - loadData, handleSearch, ProviderConst, - getProviderLabel + getProviderLabel, + methods, + tableObject, + pagination, + handleDel, + editRef } } diff --git a/src/views/ai/model/embedStore/edit.vue b/src/views/ai/model/embedStore/edit.vue index e0abcc8..634f8ca 100644 --- a/src/views/ai/model/embedStore/edit.vue +++ b/src/views/ai/model/embedStore/edit.vue @@ -11,7 +11,7 @@ const visible = ref(false) const formData = ref({}) const formRef = ref() const isEdit = ref(false) - +const loading = ref(false) const schemas = ref([ { field: 'name', @@ -64,7 +64,7 @@ const schemas = ref([ }, }, { - field: 'database', + field: 'databaseName', label: '数据库名称', component: 'Input', formItemProps: { @@ -133,11 +133,11 @@ defineExpose({ diff --git a/src/views/ai/model/embedStore/index.vue b/src/views/ai/model/embedStore/index.vue index 1cb17e9..ab7a19c 100644 --- a/src/views/ai/model/embedStore/index.vue +++ b/src/views/ai/model/embedStore/index.vue @@ -1,15 +1,16 @@ @@ -17,16 +18,21 @@ onMounted(() => { - + - 新增向量数据库 - - + 新增向量数据库 +
+ +
+