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,
|
claudeData,
|
||||||
claudeConsoleData,
|
claudeConsoleData,
|
||||||
geminiData,
|
geminiData,
|
||||||
|
geminiApiData,
|
||||||
openaiData,
|
openaiData,
|
||||||
openaiResponsesData,
|
openaiResponsesData,
|
||||||
bedrockData,
|
bedrockData,
|
||||||
@@ -590,6 +591,7 @@ const refreshAccounts = async () => {
|
|||||||
apiClient.get('/admin/claude-accounts'),
|
apiClient.get('/admin/claude-accounts'),
|
||||||
apiClient.get('/admin/claude-console-accounts'),
|
apiClient.get('/admin/claude-console-accounts'),
|
||||||
apiClient.get('/admin/gemini-accounts'),
|
apiClient.get('/admin/gemini-accounts'),
|
||||||
|
apiClient.get('/admin/gemini-api-accounts'), // 获取 Gemini-API 账号
|
||||||
apiClient.get('/admin/openai-accounts'),
|
apiClient.get('/admin/openai-accounts'),
|
||||||
apiClient.get('/admin/openai-responses-accounts'),
|
apiClient.get('/admin/openai-responses-accounts'),
|
||||||
apiClient.get('/admin/bedrock-accounts'),
|
apiClient.get('/admin/bedrock-accounts'),
|
||||||
@@ -622,13 +624,31 @@ const refreshAccounts = async () => {
|
|||||||
|
|
||||||
localAccounts.value.claude = claudeAccounts
|
localAccounts.value.claude = claudeAccounts
|
||||||
|
|
||||||
|
// 合并 Gemini OAuth 和 Gemini API 账号
|
||||||
|
const geminiAccounts = []
|
||||||
|
|
||||||
if (geminiData.success) {
|
if (geminiData.success) {
|
||||||
localAccounts.value.gemini = (geminiData.data || []).map((account) => ({
|
;(geminiData.data || []).forEach((account) => {
|
||||||
|
geminiAccounts.push({
|
||||||
...account,
|
...account,
|
||||||
|
platform: 'gemini',
|
||||||
isDedicated: account.accountType === 'dedicated'
|
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 = []
|
const openaiAccounts = []
|
||||||
|
|
||||||
if (openaiData.success) {
|
if (openaiData.success) {
|
||||||
@@ -819,12 +839,20 @@ onMounted(async () => {
|
|||||||
|
|
||||||
// 初始化账号数据
|
// 初始化账号数据
|
||||||
if (props.accounts) {
|
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 = []
|
const openaiAccounts = []
|
||||||
if (props.accounts.openai) {
|
if (props.accounts.openai) {
|
||||||
props.accounts.openai.forEach((account) => {
|
props.accounts.openai.forEach((account) => {
|
||||||
openaiAccounts.push({
|
openaiAccounts.push({
|
||||||
...account,
|
...account,
|
||||||
platform: 'openai'
|
platform: account.platform || 'openai'
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
@@ -832,17 +860,20 @@ onMounted(async () => {
|
|||||||
props.accounts.openaiResponses.forEach((account) => {
|
props.accounts.openaiResponses.forEach((account) => {
|
||||||
openaiAccounts.push({
|
openaiAccounts.push({
|
||||||
...account,
|
...account,
|
||||||
platform: 'openai-responses'
|
platform: account.platform || 'openai-responses'
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
localAccounts.value = {
|
localAccounts.value = {
|
||||||
claude: props.accounts.claude || [],
|
claude: props.accounts.claude || [],
|
||||||
gemini: props.accounts.gemini || [],
|
gemini: geminiAccounts,
|
||||||
openai: openaiAccounts,
|
openai: openaiAccounts,
|
||||||
bedrock: props.accounts.bedrock || [],
|
bedrock: props.accounts.bedrock || [],
|
||||||
droid: props.accounts.droid || [],
|
droid: (props.accounts.droid || []).map((account) => ({
|
||||||
|
...account,
|
||||||
|
platform: account.platform || 'droid'
|
||||||
|
})),
|
||||||
claudeGroups: props.accounts.claudeGroups || [],
|
claudeGroups: props.accounts.claudeGroups || [],
|
||||||
geminiGroups: props.accounts.geminiGroups || [],
|
geminiGroups: props.accounts.geminiGroups || [],
|
||||||
openaiGroups: props.accounts.openaiGroups || [],
|
openaiGroups: props.accounts.openaiGroups || [],
|
||||||
|
|||||||
@@ -986,13 +986,20 @@ onMounted(async () => {
|
|||||||
availableTags.value = await apiKeysStore.fetchTags()
|
availableTags.value = await apiKeysStore.fetchTags()
|
||||||
// 初始化账号数据
|
// 初始化账号数据
|
||||||
if (props.accounts) {
|
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 = []
|
const openaiAccounts = []
|
||||||
if (props.accounts.openai) {
|
if (props.accounts.openai) {
|
||||||
props.accounts.openai.forEach((account) => {
|
props.accounts.openai.forEach((account) => {
|
||||||
openaiAccounts.push({
|
openaiAccounts.push({
|
||||||
...account,
|
...account,
|
||||||
platform: 'openai'
|
platform: account.platform || 'openai'
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
@@ -1000,19 +1007,19 @@ onMounted(async () => {
|
|||||||
props.accounts.openaiResponses.forEach((account) => {
|
props.accounts.openaiResponses.forEach((account) => {
|
||||||
openaiAccounts.push({
|
openaiAccounts.push({
|
||||||
...account,
|
...account,
|
||||||
platform: 'openai-responses'
|
platform: account.platform || 'openai-responses'
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
localAccounts.value = {
|
localAccounts.value = {
|
||||||
claude: props.accounts.claude || [],
|
claude: props.accounts.claude || [],
|
||||||
gemini: props.accounts.gemini || [],
|
gemini: geminiAccounts,
|
||||||
openai: openaiAccounts,
|
openai: openaiAccounts,
|
||||||
bedrock: props.accounts.bedrock || [],
|
bedrock: props.accounts.bedrock || [],
|
||||||
droid: (props.accounts.droid || []).map((account) => ({
|
droid: (props.accounts.droid || []).map((account) => ({
|
||||||
...account,
|
...account,
|
||||||
platform: 'droid'
|
platform: account.platform || 'droid'
|
||||||
})),
|
})),
|
||||||
claudeGroups: props.accounts.claudeGroups || [],
|
claudeGroups: props.accounts.claudeGroups || [],
|
||||||
geminiGroups: props.accounts.geminiGroups || [],
|
geminiGroups: props.accounts.geminiGroups || [],
|
||||||
@@ -1032,6 +1039,7 @@ const refreshAccounts = async () => {
|
|||||||
claudeData,
|
claudeData,
|
||||||
claudeConsoleData,
|
claudeConsoleData,
|
||||||
geminiData,
|
geminiData,
|
||||||
|
geminiApiData,
|
||||||
openaiData,
|
openaiData,
|
||||||
openaiResponsesData,
|
openaiResponsesData,
|
||||||
bedrockData,
|
bedrockData,
|
||||||
@@ -1041,6 +1049,7 @@ const refreshAccounts = async () => {
|
|||||||
apiClient.get('/admin/claude-accounts'),
|
apiClient.get('/admin/claude-accounts'),
|
||||||
apiClient.get('/admin/claude-console-accounts'),
|
apiClient.get('/admin/claude-console-accounts'),
|
||||||
apiClient.get('/admin/gemini-accounts'),
|
apiClient.get('/admin/gemini-accounts'),
|
||||||
|
apiClient.get('/admin/gemini-api-accounts'), // 获取 Gemini-API 账号
|
||||||
apiClient.get('/admin/openai-accounts'),
|
apiClient.get('/admin/openai-accounts'),
|
||||||
apiClient.get('/admin/openai-responses-accounts'), // 获取 OpenAI-Responses 账号
|
apiClient.get('/admin/openai-responses-accounts'), // 获取 OpenAI-Responses 账号
|
||||||
apiClient.get('/admin/bedrock-accounts'),
|
apiClient.get('/admin/bedrock-accounts'),
|
||||||
@@ -1073,13 +1082,31 @@ const refreshAccounts = async () => {
|
|||||||
|
|
||||||
localAccounts.value.claude = claudeAccounts
|
localAccounts.value.claude = claudeAccounts
|
||||||
|
|
||||||
|
// 合并 Gemini OAuth 和 Gemini API 账号
|
||||||
|
const geminiAccounts = []
|
||||||
|
|
||||||
if (geminiData.success) {
|
if (geminiData.success) {
|
||||||
localAccounts.value.gemini = (geminiData.data || []).map((account) => ({
|
;(geminiData.data || []).forEach((account) => {
|
||||||
|
geminiAccounts.push({
|
||||||
...account,
|
...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 账号
|
// 合并 OpenAI 和 OpenAI-Responses 账号
|
||||||
const openaiAccounts = []
|
const openaiAccounts = []
|
||||||
|
|
||||||
|
|||||||
@@ -1179,32 +1179,20 @@ onMounted(async () => {
|
|||||||
|
|
||||||
// 初始化账号数据
|
// 初始化账号数据
|
||||||
if (props.accounts) {
|
if (props.accounts) {
|
||||||
// 合并 Gemini OAuth 和 Gemini API 账号
|
// props.accounts.gemini 已经包含了 OAuth 和 API 两种类型的账号(父组件已合并)
|
||||||
const geminiAccounts = []
|
// 保留原有的 platform 属性,不要覆盖
|
||||||
if (props.accounts.gemini) {
|
const geminiAccounts = (props.accounts.gemini || []).map((account) => ({
|
||||||
props.accounts.gemini.forEach((account) => {
|
|
||||||
geminiAccounts.push({
|
|
||||||
...account,
|
...account,
|
||||||
platform: 'gemini'
|
platform: account.platform || 'gemini' // 保留原有 platform,只在没有时设默认值
|
||||||
})
|
}))
|
||||||
})
|
|
||||||
}
|
|
||||||
if (props.accounts.geminiApi) {
|
|
||||||
props.accounts.geminiApi.forEach((account) => {
|
|
||||||
geminiAccounts.push({
|
|
||||||
...account,
|
|
||||||
platform: 'gemini-api'
|
|
||||||
})
|
|
||||||
})
|
|
||||||
}
|
|
||||||
|
|
||||||
// 合并 OpenAI 和 OpenAI-Responses 账号
|
// props.accounts.openai 只包含 openai 类型,openaiResponses 需要单独处理
|
||||||
const openaiAccounts = []
|
const openaiAccounts = []
|
||||||
if (props.accounts.openai) {
|
if (props.accounts.openai) {
|
||||||
props.accounts.openai.forEach((account) => {
|
props.accounts.openai.forEach((account) => {
|
||||||
openaiAccounts.push({
|
openaiAccounts.push({
|
||||||
...account,
|
...account,
|
||||||
platform: 'openai'
|
platform: account.platform || 'openai'
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
@@ -1212,7 +1200,7 @@ onMounted(async () => {
|
|||||||
props.accounts.openaiResponses.forEach((account) => {
|
props.accounts.openaiResponses.forEach((account) => {
|
||||||
openaiAccounts.push({
|
openaiAccounts.push({
|
||||||
...account,
|
...account,
|
||||||
platform: 'openai-responses'
|
platform: account.platform || 'openai-responses'
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
@@ -1224,7 +1212,7 @@ onMounted(async () => {
|
|||||||
bedrock: props.accounts.bedrock || [],
|
bedrock: props.accounts.bedrock || [],
|
||||||
droid: (props.accounts.droid || []).map((account) => ({
|
droid: (props.accounts.droid || []).map((account) => ({
|
||||||
...account,
|
...account,
|
||||||
platform: 'droid'
|
platform: account.platform || 'droid'
|
||||||
})),
|
})),
|
||||||
claudeGroups: props.accounts.claudeGroups || [],
|
claudeGroups: props.accounts.claudeGroups || [],
|
||||||
geminiGroups: props.accounts.geminiGroups || [],
|
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({
|
const accounts = ref({
|
||||||
claude: [],
|
claude: [],
|
||||||
gemini: [],
|
gemini: [],
|
||||||
|
geminiApi: [], // 添加 Gemini-API 账号列表(用于传递给子组件初始化)
|
||||||
openai: [],
|
openai: [],
|
||||||
openaiResponses: [], // 添加 OpenAI-Responses 账号列表
|
openaiResponses: [], // 添加 OpenAI-Responses 账号列表
|
||||||
bedrock: [],
|
bedrock: [],
|
||||||
@@ -2372,12 +2373,15 @@ const loadAccounts = async (forceRefresh = false) => {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (geminiApiData.success) {
|
if (geminiApiData.success) {
|
||||||
;(geminiApiData.data || []).forEach((account) => {
|
// 保存原始 Gemini-API 账号列表供子组件初始化使用
|
||||||
geminiAccounts.push({
|
accounts.value.geminiApi = (geminiApiData.data || []).map((account) => ({
|
||||||
...account,
|
...account,
|
||||||
platform: 'gemini-api',
|
platform: 'gemini-api',
|
||||||
isDedicated: account.accountType === 'dedicated'
|
isDedicated: account.accountType === 'dedicated'
|
||||||
})
|
}))
|
||||||
|
// 同时添加到合并列表
|
||||||
|
accounts.value.geminiApi.forEach((account) => {
|
||||||
|
geminiAccounts.push(account)
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user