mirror of
https://github.com/Wei-Shaw/claude-relay-service.git
synced 2026-01-22 16:43:35 +00:00
fix: 修复gemini api类型账户绑定显示问题
This commit is contained in:
@@ -581,6 +581,7 @@ const refreshAccounts = async () => {
|
||||
claudeData,
|
||||
claudeConsoleData,
|
||||
geminiData,
|
||||
geminiApiData,
|
||||
openaiData,
|
||||
openaiResponsesData,
|
||||
bedrockData,
|
||||
@@ -590,6 +591,7 @@ const refreshAccounts = async () => {
|
||||
apiClient.get('/admin/claude-accounts'),
|
||||
apiClient.get('/admin/claude-console-accounts'),
|
||||
apiClient.get('/admin/gemini-accounts'),
|
||||
apiClient.get('/admin/gemini-api-accounts'), // 获取 Gemini-API 账号
|
||||
apiClient.get('/admin/openai-accounts'),
|
||||
apiClient.get('/admin/openai-responses-accounts'),
|
||||
apiClient.get('/admin/bedrock-accounts'),
|
||||
@@ -622,13 +624,31 @@ const refreshAccounts = async () => {
|
||||
|
||||
localAccounts.value.claude = claudeAccounts
|
||||
|
||||
// 合并 Gemini OAuth 和 Gemini API 账号
|
||||
const geminiAccounts = []
|
||||
|
||||
if (geminiData.success) {
|
||||
localAccounts.value.gemini = (geminiData.data || []).map((account) => ({
|
||||
;(geminiData.data || []).forEach((account) => {
|
||||
geminiAccounts.push({
|
||||
...account,
|
||||
platform: 'gemini',
|
||||
isDedicated: account.accountType === 'dedicated'
|
||||
}))
|
||||
})
|
||||
})
|
||||
}
|
||||
|
||||
if (geminiApiData.success) {
|
||||
;(geminiApiData.data || []).forEach((account) => {
|
||||
geminiAccounts.push({
|
||||
...account,
|
||||
platform: 'gemini-api',
|
||||
isDedicated: account.accountType === 'dedicated'
|
||||
})
|
||||
})
|
||||
}
|
||||
|
||||
localAccounts.value.gemini = geminiAccounts
|
||||
|
||||
const openaiAccounts = []
|
||||
|
||||
if (openaiData.success) {
|
||||
@@ -819,12 +839,20 @@ onMounted(async () => {
|
||||
|
||||
// 初始化账号数据
|
||||
if (props.accounts) {
|
||||
// props.accounts.gemini 已经包含了 OAuth 和 API 两种类型的账号(父组件已合并)
|
||||
// 保留原有的 platform 属性,不要覆盖
|
||||
const geminiAccounts = (props.accounts.gemini || []).map((account) => ({
|
||||
...account,
|
||||
platform: account.platform || 'gemini' // 保留原有 platform,只在没有时设默认值
|
||||
}))
|
||||
|
||||
// props.accounts.openai 只包含 openai 类型,openaiResponses 需要单独处理
|
||||
const openaiAccounts = []
|
||||
if (props.accounts.openai) {
|
||||
props.accounts.openai.forEach((account) => {
|
||||
openaiAccounts.push({
|
||||
...account,
|
||||
platform: 'openai'
|
||||
platform: account.platform || 'openai'
|
||||
})
|
||||
})
|
||||
}
|
||||
@@ -832,17 +860,20 @@ onMounted(async () => {
|
||||
props.accounts.openaiResponses.forEach((account) => {
|
||||
openaiAccounts.push({
|
||||
...account,
|
||||
platform: 'openai-responses'
|
||||
platform: account.platform || 'openai-responses'
|
||||
})
|
||||
})
|
||||
}
|
||||
|
||||
localAccounts.value = {
|
||||
claude: props.accounts.claude || [],
|
||||
gemini: props.accounts.gemini || [],
|
||||
gemini: geminiAccounts,
|
||||
openai: openaiAccounts,
|
||||
bedrock: props.accounts.bedrock || [],
|
||||
droid: props.accounts.droid || [],
|
||||
droid: (props.accounts.droid || []).map((account) => ({
|
||||
...account,
|
||||
platform: account.platform || 'droid'
|
||||
})),
|
||||
claudeGroups: props.accounts.claudeGroups || [],
|
||||
geminiGroups: props.accounts.geminiGroups || [],
|
||||
openaiGroups: props.accounts.openaiGroups || [],
|
||||
|
||||
@@ -986,13 +986,20 @@ onMounted(async () => {
|
||||
availableTags.value = await apiKeysStore.fetchTags()
|
||||
// 初始化账号数据
|
||||
if (props.accounts) {
|
||||
// 合并 OpenAI 和 OpenAI-Responses 账号
|
||||
// props.accounts.gemini 已经包含了 OAuth 和 API 两种类型的账号(父组件已合并)
|
||||
// 保留原有的 platform 属性,不要覆盖
|
||||
const geminiAccounts = (props.accounts.gemini || []).map((account) => ({
|
||||
...account,
|
||||
platform: account.platform || 'gemini' // 保留原有 platform,只在没有时设默认值
|
||||
}))
|
||||
|
||||
// props.accounts.openai 只包含 openai 类型,openaiResponses 需要单独处理
|
||||
const openaiAccounts = []
|
||||
if (props.accounts.openai) {
|
||||
props.accounts.openai.forEach((account) => {
|
||||
openaiAccounts.push({
|
||||
...account,
|
||||
platform: 'openai'
|
||||
platform: account.platform || 'openai'
|
||||
})
|
||||
})
|
||||
}
|
||||
@@ -1000,19 +1007,19 @@ onMounted(async () => {
|
||||
props.accounts.openaiResponses.forEach((account) => {
|
||||
openaiAccounts.push({
|
||||
...account,
|
||||
platform: 'openai-responses'
|
||||
platform: account.platform || 'openai-responses'
|
||||
})
|
||||
})
|
||||
}
|
||||
|
||||
localAccounts.value = {
|
||||
claude: props.accounts.claude || [],
|
||||
gemini: props.accounts.gemini || [],
|
||||
gemini: geminiAccounts,
|
||||
openai: openaiAccounts,
|
||||
bedrock: props.accounts.bedrock || [],
|
||||
droid: (props.accounts.droid || []).map((account) => ({
|
||||
...account,
|
||||
platform: 'droid'
|
||||
platform: account.platform || 'droid'
|
||||
})),
|
||||
claudeGroups: props.accounts.claudeGroups || [],
|
||||
geminiGroups: props.accounts.geminiGroups || [],
|
||||
@@ -1032,6 +1039,7 @@ const refreshAccounts = async () => {
|
||||
claudeData,
|
||||
claudeConsoleData,
|
||||
geminiData,
|
||||
geminiApiData,
|
||||
openaiData,
|
||||
openaiResponsesData,
|
||||
bedrockData,
|
||||
@@ -1041,6 +1049,7 @@ const refreshAccounts = async () => {
|
||||
apiClient.get('/admin/claude-accounts'),
|
||||
apiClient.get('/admin/claude-console-accounts'),
|
||||
apiClient.get('/admin/gemini-accounts'),
|
||||
apiClient.get('/admin/gemini-api-accounts'), // 获取 Gemini-API 账号
|
||||
apiClient.get('/admin/openai-accounts'),
|
||||
apiClient.get('/admin/openai-responses-accounts'), // 获取 OpenAI-Responses 账号
|
||||
apiClient.get('/admin/bedrock-accounts'),
|
||||
@@ -1073,13 +1082,31 @@ const refreshAccounts = async () => {
|
||||
|
||||
localAccounts.value.claude = claudeAccounts
|
||||
|
||||
// 合并 Gemini OAuth 和 Gemini API 账号
|
||||
const geminiAccounts = []
|
||||
|
||||
if (geminiData.success) {
|
||||
localAccounts.value.gemini = (geminiData.data || []).map((account) => ({
|
||||
;(geminiData.data || []).forEach((account) => {
|
||||
geminiAccounts.push({
|
||||
...account,
|
||||
isDedicated: account.accountType === 'dedicated' // 保留以便向后兼容
|
||||
}))
|
||||
platform: 'gemini',
|
||||
isDedicated: account.accountType === 'dedicated'
|
||||
})
|
||||
})
|
||||
}
|
||||
|
||||
if (geminiApiData.success) {
|
||||
;(geminiApiData.data || []).forEach((account) => {
|
||||
geminiAccounts.push({
|
||||
...account,
|
||||
platform: 'gemini-api',
|
||||
isDedicated: account.accountType === 'dedicated'
|
||||
})
|
||||
})
|
||||
}
|
||||
|
||||
localAccounts.value.gemini = geminiAccounts
|
||||
|
||||
// 合并 OpenAI 和 OpenAI-Responses 账号
|
||||
const openaiAccounts = []
|
||||
|
||||
|
||||
@@ -1179,32 +1179,20 @@ onMounted(async () => {
|
||||
|
||||
// 初始化账号数据
|
||||
if (props.accounts) {
|
||||
// 合并 Gemini OAuth 和 Gemini API 账号
|
||||
const geminiAccounts = []
|
||||
if (props.accounts.gemini) {
|
||||
props.accounts.gemini.forEach((account) => {
|
||||
geminiAccounts.push({
|
||||
// props.accounts.gemini 已经包含了 OAuth 和 API 两种类型的账号(父组件已合并)
|
||||
// 保留原有的 platform 属性,不要覆盖
|
||||
const geminiAccounts = (props.accounts.gemini || []).map((account) => ({
|
||||
...account,
|
||||
platform: 'gemini'
|
||||
})
|
||||
})
|
||||
}
|
||||
if (props.accounts.geminiApi) {
|
||||
props.accounts.geminiApi.forEach((account) => {
|
||||
geminiAccounts.push({
|
||||
...account,
|
||||
platform: 'gemini-api'
|
||||
})
|
||||
})
|
||||
}
|
||||
platform: account.platform || 'gemini' // 保留原有 platform,只在没有时设默认值
|
||||
}))
|
||||
|
||||
// 合并 OpenAI 和 OpenAI-Responses 账号
|
||||
// props.accounts.openai 只包含 openai 类型,openaiResponses 需要单独处理
|
||||
const openaiAccounts = []
|
||||
if (props.accounts.openai) {
|
||||
props.accounts.openai.forEach((account) => {
|
||||
openaiAccounts.push({
|
||||
...account,
|
||||
platform: 'openai'
|
||||
platform: account.platform || 'openai'
|
||||
})
|
||||
})
|
||||
}
|
||||
@@ -1212,7 +1200,7 @@ onMounted(async () => {
|
||||
props.accounts.openaiResponses.forEach((account) => {
|
||||
openaiAccounts.push({
|
||||
...account,
|
||||
platform: 'openai-responses'
|
||||
platform: account.platform || 'openai-responses'
|
||||
})
|
||||
})
|
||||
}
|
||||
@@ -1224,7 +1212,7 @@ onMounted(async () => {
|
||||
bedrock: props.accounts.bedrock || [],
|
||||
droid: (props.accounts.droid || []).map((account) => ({
|
||||
...account,
|
||||
platform: 'droid'
|
||||
platform: account.platform || 'droid'
|
||||
})),
|
||||
claudeGroups: props.accounts.claudeGroups || [],
|
||||
geminiGroups: props.accounts.geminiGroups || [],
|
||||
|
||||
@@ -2158,6 +2158,7 @@ const defaultTime = ref([new Date(2000, 1, 1, 0, 0, 0), new Date(2000, 2, 1, 23,
|
||||
const accounts = ref({
|
||||
claude: [],
|
||||
gemini: [],
|
||||
geminiApi: [], // 添加 Gemini-API 账号列表(用于传递给子组件初始化)
|
||||
openai: [],
|
||||
openaiResponses: [], // 添加 OpenAI-Responses 账号列表
|
||||
bedrock: [],
|
||||
@@ -2372,12 +2373,15 @@ const loadAccounts = async (forceRefresh = false) => {
|
||||
}
|
||||
|
||||
if (geminiApiData.success) {
|
||||
;(geminiApiData.data || []).forEach((account) => {
|
||||
geminiAccounts.push({
|
||||
// 保存原始 Gemini-API 账号列表供子组件初始化使用
|
||||
accounts.value.geminiApi = (geminiApiData.data || []).map((account) => ({
|
||||
...account,
|
||||
platform: 'gemini-api',
|
||||
isDedicated: account.accountType === 'dedicated'
|
||||
})
|
||||
}))
|
||||
// 同时添加到合并列表
|
||||
accounts.value.geminiApi.forEach((account) => {
|
||||
geminiAccounts.push(account)
|
||||
})
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user