From ace80efd637385035605acbbd517b503216b4a98 Mon Sep 17 00:00:00 2001 From: 2910410219 <2910410219@qq.com> Date: Thu, 23 Jul 2026 17:57:28 +0800 Subject: [PATCH] =?UTF-8?q?=E6=A8=A1=E5=9E=8B=E7=B1=BB=E5=9E=8B=E4=BF=AE?= =?UTF-8?q?=E5=A4=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../modelConfigV2/component/editModule.vue | 26 +++++++++++++------ 1 file changed, 18 insertions(+), 8 deletions(-) diff --git a/src/views/settings/modelConfigV2/component/editModule.vue b/src/views/settings/modelConfigV2/component/editModule.vue index 0b36725..b1d0a88 100644 --- a/src/views/settings/modelConfigV2/component/editModule.vue +++ b/src/views/settings/modelConfigV2/component/editModule.vue @@ -52,7 +52,7 @@ - + @@ -428,6 +428,18 @@ function getSelectedModelLabels(): string[] { return labels; } + /** 从模型类型树中查找叶子值对应的完整路径(el-cascader 需要路径而非叶子值) */ + function findModelTypePath(value: number, tree: ModelTypeTreeNode[]): number[] { + for (const node of tree) { + if (node.value === value) return [value]; + if (node.children) { + const found = node.children.find((c) => c.value === value); + if (found) return [node.value, value]; + } + } + return [value]; + } + /** 判断是否是视频模型类型 */ const isVideoModel = computed(() => { return getSelectedModelLabels().some((l) => l.includes('视频') || l.toLowerCase().includes('video')); @@ -514,12 +526,11 @@ const taskStatusOptions = computed(() => { /** 是否有任务状态映射配置 */ const hasTaskStatusConfig = computed(() => taskStatusOptions.value.length > 0); -/** 切换返回类型时清空 token mapping(初始加载时跳过) */ -let _skipTokenClear = false; -watch(() => formData.responseType, () => { - if (_skipTokenClear) { _skipTokenClear = false; return; } +/** 用户手动切换返回类型时清空 token 映射(编程赋值不触发) */ +function handleResponseTypeChange() { formData.tokenMapping = { ...defaultTokenMapping }; -}); +} + /** JSON 编辑器弹窗状态 */ const jsonEditorVisible = ref(false); @@ -640,12 +651,11 @@ const openDialog = async (type: 'add' | 'edit', id?: string) => { if (type === 'edit' && id) { editId.value = id; - _skipTokenClear = true; try { const res = await getModelManage(id); const row = res.data.modelManage; formData.modelName = row.modelName; - formData.modelType = [row.modelType]; + formData.modelType = findModelTypePath(row.modelType, props.modelTypes); formData.modelSupplier = Number(row.modelSupplier) || undefined; formData.baseUrl = row.baseUrl; formData.apiKey = row.apiKey || '';