From 8159ea52c9108be13980790a15c781ffa47fa38d Mon Sep 17 00:00:00 2001 From: tbphp Date: Fri, 4 Jul 2025 16:48:58 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E7=A7=98=E9=92=A5=E7=AE=A1=E7=90=86=20?= =?UTF-8?q?web=20v1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- web/eslint.config.js | 12 +- web/src/App.vue | 4 + web/src/api/keys.ts | 495 +++++++++++ web/src/components/GlobalTaskProgressBar.vue | 231 +++++ web/src/components/keys/GroupInfoCard.vue | 501 +++++++++++ web/src/components/keys/GroupList.vue | 320 +++++++ web/src/components/keys/KeyTable.vue | 848 +++++++++++++++++++ web/src/types/models.ts | 4 + web/src/views/Keys.vue | 188 ++-- 9 files changed, 2520 insertions(+), 83 deletions(-) create mode 100644 web/src/api/keys.ts create mode 100644 web/src/components/GlobalTaskProgressBar.vue create mode 100644 web/src/components/keys/GroupInfoCard.vue create mode 100644 web/src/components/keys/GroupList.vue create mode 100644 web/src/components/keys/KeyTable.vue diff --git a/web/eslint.config.js b/web/eslint.config.js index 5d1addf..7cff510 100644 --- a/web/eslint.config.js +++ b/web/eslint.config.js @@ -39,7 +39,7 @@ export default [ "warn", { html: { - void: "never", + void: "always", normal: "always", component: "always", }, @@ -51,7 +51,15 @@ export default [ "vue/singleline-html-element-content-newline": "off", "vue/multiline-html-element-content-newline": "off", "vue/html-indent": ["error", 2], - "vue/script-indent": ["error", 2], + "vue/script-indent": [ + "error", + 2, + { + baseIndent: 0, + switchCase: 1, + ignores: [], + }, + ], "vue/component-tags-order": ["error", { order: ["script", "template", "style"] }], // Vue 3 Composition API 规则 diff --git a/web/src/App.vue b/web/src/App.vue index d715f88..94c941e 100644 --- a/web/src/App.vue +++ b/web/src/App.vue @@ -1,5 +1,6 @@ + + + + diff --git a/web/src/components/keys/GroupInfoCard.vue b/web/src/components/keys/GroupInfoCard.vue new file mode 100644 index 0000000..ca4ef9e --- /dev/null +++ b/web/src/components/keys/GroupInfoCard.vue @@ -0,0 +1,501 @@ + + + + + diff --git a/web/src/components/keys/GroupList.vue b/web/src/components/keys/GroupList.vue new file mode 100644 index 0000000..3d03a4e --- /dev/null +++ b/web/src/components/keys/GroupList.vue @@ -0,0 +1,320 @@ + + + + + diff --git a/web/src/components/keys/KeyTable.vue b/web/src/components/keys/KeyTable.vue new file mode 100644 index 0000000..0c2e3d1 --- /dev/null +++ b/web/src/components/keys/KeyTable.vue @@ -0,0 +1,848 @@ + + + + + diff --git a/web/src/types/models.ts b/web/src/types/models.ts index 7781dc6..ecf2de3 100644 --- a/web/src/types/models.ts +++ b/web/src/types/models.ts @@ -11,6 +11,9 @@ export interface APIKey { updated_at: string; } +// 类型别名,用于兼容 +export type Key = APIKey; + export interface UpstreamInfo { url: string; weight: number; @@ -47,6 +50,7 @@ export interface TaskInfo { processed?: number; total?: number; started_at?: string; + message?: string; } export interface RequestLog { diff --git a/web/src/views/Keys.vue b/web/src/views/Keys.vue index 6483bbb..ec284c8 100644 --- a/web/src/views/Keys.vue +++ b/web/src/views/Keys.vue @@ -1,26 +1,73 @@