From 6b429a85300a77798bf85fcd7c06066a2e07b81c Mon Sep 17 00:00:00 2001 From: chiyi Date: Wed, 1 Jul 2026 22:31:42 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E5=B9=B6=E5=8F=91=E7=BC=96?= =?UTF-8?q?=E8=BE=91=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- frontend/src/components/AccountEditModal.vue | 74 ++++++++++++++++++++ frontend/src/views/AccountsView.vue | 40 ++++++----- frontend/src/views/LogsView.vue | 1 - 3 files changed, 95 insertions(+), 20 deletions(-) create mode 100644 frontend/src/components/AccountEditModal.vue diff --git a/frontend/src/components/AccountEditModal.vue b/frontend/src/components/AccountEditModal.vue new file mode 100644 index 0000000..f86930d --- /dev/null +++ b/frontend/src/components/AccountEditModal.vue @@ -0,0 +1,74 @@ + + + diff --git a/frontend/src/views/AccountsView.vue b/frontend/src/views/AccountsView.vue index 09924a4..348d04f 100644 --- a/frontend/src/views/AccountsView.vue +++ b/frontend/src/views/AccountsView.vue @@ -4,6 +4,7 @@ import { api, jsonBody } from '../api' import { fmtTs, fmtIso, fmtDate, fmtClock } from '../utils/format' import ImportModal from '../components/ImportModal.vue' import UpstreamModal from '../components/UpstreamModal.vue' +import AccountEditModal from '../components/AccountEditModal.vue' import Icon from '../components/Icon.vue' const rows = ref([]) @@ -13,6 +14,15 @@ const showImport = ref(false) const showUpstream = ref(false) const editingUpstream = ref(null) function editUpstream(a) { editingUpstream.value = a; showUpstream.value = true } +const editingAccount = ref(null) +function editAccount(a) { editingAccount.value = a } +// Reflect the saved values in the table without a full reload. +function applyEdit(payload) { + const row = editingAccount.value + if (!row) return + if (payload.weight != null) row.weight = payload.weight + if (payload.concurrency != null) row.concurrency = payload.concurrency +} const typeFilter = ref('') // '' | 'openai' | 'adobe' | 'runway' | 'leonardo' const statusFilter = ref('') // '' | 'active' | 'quota' | 'disabled' @@ -101,13 +111,6 @@ const pageNumbers = computed(() => { let pendingTimer = null -// Inline-edit an account field (weight / concurrency) → PATCH /tokens/{pool}/{id}. -async function saveField(row, field, value) { - const v = Number(value) - if (Number.isNaN(v)) return - await api(`/tokens/${row.pool}/${row.id}`, jsonBody('PATCH', { [field]: v })) -} - async function loadAccounts() { loading.value = true quotaStatus.value = '' @@ -463,19 +466,14 @@ onMounted(loadAccounts) :class="a.remaining > 0 ? 'text-emerald-300' : 'text-rose-300'">{{ a.remaining }}{{ a.type === 'grok' ? '%' : '' }} - - - + + + {{ a.weight ?? 0 }} - - - - {{ a.type === 'grok' ? 10 : 1 }} + + + {{ a.concurrency || 1 }} + {{ a.type === 'grok' ? 10 : 1 }} @@ -528,6 +526,9 @@ onMounted(loadAccounts)
+ @@ -558,6 +559,7 @@ onMounted(loadAccounts) + diff --git a/frontend/src/views/LogsView.vue b/frontend/src/views/LogsView.vue index 88f3253..c9d1212 100644 --- a/frontend/src/views/LogsView.vue +++ b/frontend/src/views/LogsView.vue @@ -303,7 +303,6 @@ const sourcePill = (s) => ({
- {{ e.error }}