添加会话模型和API Key配置功能

- 在模型模块中新增会话开关状态字段,支持会话模型的管理。
- 更新模型选择器,增加系统模型的API Key配置弹窗,提升用户体验。
- 优化错误处理逻辑,确保接口错误由全局拦截器处理,减少冗余提示。
- 更新相关样式以增强界面可读性和美观性。
This commit is contained in:
2026-05-11 20:01:03 +08:00
parent 0a42e700e2
commit 29838b030f
19 changed files with 1296 additions and 274 deletions

View File

@@ -32,6 +32,25 @@
</template>
</el-table-column>
<el-table-column prop="httpMethod" label="请求方式" width="100"></el-table-column>
<el-table-column label="会话模型" width="100" align="center">
<template #default="{ row }">
<el-tag :type="Number(row.isChatModel) === 1 ? 'success' : 'info'" size="small">
{{ Number(row.isChatModel) === 1 ? '是' : '否' }}
</el-tag>
</template>
</el-table-column>
<el-table-column label="会话开关" width="110" align="center">
<template #default="{ row }">
<template v-if="Number(row.isChatModel) === 1">
<el-switch
size="small"
:model-value="chatSessionSwitchOn(row)"
:before-change="() => onChatSessionSwitchRequest(row)"
/>
</template>
<span v-else class="text-muted">—</span>
</template>
</el-table-column>
<el-table-column prop="enabled" label="状态" width="100">
<template #default="scope">
<el-tag :type="scope.row.enabled === 1 ? 'success' : 'danger'">{{ scope.row.enabled === 1 ? '启用' : '禁用' }}</el-tag>
@@ -94,6 +113,16 @@ const state = reactive({
},
});
/** 列表行与会话开关接口约定字段 chatSessionEnabled0/1接口未就绪前占位 */
const chatSessionSwitchOn = (row: { chatSessionEnabled?: number }) => Number(row.chatSessionEnabled) === 1;
const onChatSessionSwitchRequest = (_row: { id?: number | string }) => {
return new Promise<boolean>((resolve) => {
ElMessage.info('会话开关接口接入后即可生效');
resolve(false);
});
};
const resolveModelTypeLabel = (modelsType: number | string | undefined | null) => {
if (modelsType === undefined || modelsType === null || modelsType === '') {
return '—';
@@ -108,8 +137,8 @@ const loadModelTypes = async () => {
if (res.code === 0) {
state.modelTypes = normalizeModelTypeOptions(res);
}
} catch (e) {
ElMessage.error('获取模型类型失败:');
} catch {
// 接口错误由 request 全局提示后端 message
}
};
@@ -122,8 +151,8 @@ const getTableData = async () => {
state.tableData.data = res.data.list || [];
state.tableData.total = res.data.total || 0;
}
} catch (error) {
ElMessage.error('获取模型列表失败');
} catch {
// 接口错误由 request 全局提示后端 message
} finally {
state.tableData.loading = false;
}
@@ -151,8 +180,8 @@ const onRowDel = (row: any) => {
await deleteModelModule(row.id);
ElMessage.success('删除成功');
getTableData();
} catch (error) {
ElMessage.error('删除失败');
} catch {
// 接口错误由 request 全局提示后端 message
}
})
.catch(() => {});
@@ -178,6 +207,10 @@ onMounted(async () => {
</script>
<style scoped lang="scss">
.text-muted {
color: var(--el-text-color-placeholder);
}
.system-user-container {
:deep(.el-card__body) {
display: flex;