From f940890f3a25809d6397c3dae49e9710deec485a Mon Sep 17 00:00:00 2001 From: WangHui <1143481437@qq.com> Date: Tue, 20 Oct 2026 18:07:06 +0800 Subject: [PATCH] =?UTF-8?q?=E6=A8=A1=E5=9E=8B=E5=88=97=E8=A1=A8=E6=8D=A2?= =?UTF-8?q?=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/apis/Model.ts | 46 ++++++++++++++++++++++++- src/components/img/ImgImg.vue | 12 ++----- src/components/img/ReferenceImg.vue | 12 ++----- src/components/img/TextImg.vue | 11 ++---- src/components/video/ImgVideo.vue | 7 ++-- src/components/video/ReferenceVideo.vue | 28 ++++++--------- src/components/video/TextVideo.vue | 10 ++---- src/types/model.ts | 35 ++++++++++++++++++- src/views/TextGenerate/TextGenerate.vue | 29 +++++++--------- 9 files changed, 115 insertions(+), 75 deletions(-) diff --git a/src/apis/Model.ts b/src/apis/Model.ts index b51a589..ea7b45d 100644 --- a/src/apis/Model.ts +++ b/src/apis/Model.ts @@ -1,5 +1,49 @@ import { get, getApiBaseURL, post } from '../utlis/request' -import type { TextToTextParams } from '@/types/model' +import type { + AiModelItem, + AiModelType, + AllModelResponse, + Model, + TextToTextParams, +} from '@/types/model' + +// 获取可用模型列表原始接口 (model_type: all/t2i/t2v/i2v) +export const getAiModelsRaw = (params?: { model_type?: AiModelType }): Promise<{ code: number; message: string; data: AiModelItem[] | null }> => + get('/v2/ai/models', params) + +/** + * 兼容旧 AllModel 返回结构的模型列表获取 + * - 将新接口 /v2/ai/models 的返回适配为 { status, data: Model[] } + * - 现有页面逻辑(input_fields、价格、参数构造)无需改动 + */ +export const getAiModels = async (modelType: AiModelType): Promise => { + const res = await getAiModelsRaw({ model_type: modelType }) + const list: Model[] = Array.isArray(res?.data) + ? res.data.map((item): Model => ({ + id: String(item.id ?? item.model ?? ''), + name: String(item.name ?? item.model ?? ''), + model: String(item.model ?? item.name ?? ''), + description: String(item.description ?? ''), + llmcatelogid: String(item.llmcatelogid ?? modelType), + iconid: String(item.iconid ?? ''), + upappid: String(item.upappid ?? ''), + apiname: String(item.apiname ?? item.model ?? ''), + providerid: String(item.providerid ?? ''), + ownerid: String(item.ownerid ?? ''), + enabled_date: String(item.enabled_date ?? ''), + expired_date: String(item.expired_date ?? ''), + query_apiname: String(item.query_apiname ?? ''), + query_period: Number(item.query_period ?? 0), + ppid: String(item.ppid ?? ''), + input_fields: Array.isArray(item.input_fields) ? (item.input_fields as Model['input_fields']) : [], + })) + : [] + + return { + status: res?.code === 0 ? 'ok' : 'error', + data: list, + } +} // 文生视频 export const textvideo = (data:D):Promise =>post('/llmage/vidu_inference.dspy',data) diff --git a/src/components/img/ImgImg.vue b/src/components/img/ImgImg.vue index 1ad8746..4c2e27f 100644 --- a/src/components/img/ImgImg.vue +++ b/src/components/img/ImgImg.vue @@ -136,9 +136,8 @@