From a7aab01f051487327e5ce52b6a8905208c546e8c Mon Sep 17 00:00:00 2001 From: "Somhairle H. Marisol" Date: Fri, 18 Sep 2026 15:49:44 +0800 Subject: [变更性质] feat(frontend) [新增功能] 12 页面组件全量 shadcn:Card/Button/Table/Tabs/Select/Alert;375 底部 Tab Bar 改用 Tabs 组件实现 [实现方案] 页面级手写 class 全部移除(.btn/.banner/table.data/.badge/.tabs/.metric-row/.m-tile/.hint 等改为 shadcn + tailwind 工具类);Modal/DatasetWizard/DatasetCard/DiffView/CodeEditor/Status/Layout 同步 [影响范围] src/pages/*.svelte、src/components/*.svelte MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- frontend/src/pages/AdminPage.svelte | 74 +++++++++++++++++++------------------ 1 file changed, 39 insertions(+), 35 deletions(-) (limited to 'frontend/src/pages/AdminPage.svelte') diff --git a/frontend/src/pages/AdminPage.svelte b/frontend/src/pages/AdminPage.svelte index d9bea83..2a10266 100644 --- a/frontend/src/pages/AdminPage.svelte +++ b/frontend/src/pages/AdminPage.svelte @@ -17,6 +17,7 @@ import { Alert } from '$lib/components/ui/alert'; import { Badge } from '$lib/components/ui/badge'; import { Label } from '$lib/components/ui/label'; + import * as Select from '$lib/components/ui/select'; import * as Tabs from '$lib/components/ui/tabs'; import * as Card from '$lib/components/ui/card'; import * as Table from '$lib/components/ui/table'; @@ -185,12 +186,12 @@ {/snippet} -
+
{#if tab === 'users'} - -

用户

+ +

用户

{#if !usersBusy && !usersErr && users.length > 0} @@ -211,26 +212,29 @@ {u.email} {u.name} - + {u.role === 'admin' ? '管理员' : '成员'} + + 成员 + 管理员 + + {u.active ? '启用' : '停用'} - -
+
@@ -251,17 +255,17 @@ {/if} -

停用账户会立即吊销其会话并阻止其回测与 AI 请求。角色不能作用于他人项目,私阅策略代码不提供。

+

停用账户会立即吊销其会话并阻止其回测与 AI 请求。角色不能作用于他人项目,私阅策略代码不提供。

{:else if tab === 'invites'} - -

签发邀请

-
-
+ +

签发邀请

+ +
-
+
@@ -269,20 +273,20 @@ {#if newInvite} - +
-
邀请令牌(只显示这一次,请立即复制):
-
{newInvite.token}
-
到期:{fmtDateTime(newInvite.expires_at)} · 单次使用 · 注册页链接:
-
{inviteUrl}
+
邀请令牌(只显示这一次,请立即复制):
+
{newInvite.token}
+
到期:{fmtDateTime(newInvite.expires_at)} · 单次使用 · 注册页链接:
+
{inviteUrl}
{/if} - -

历史邀请

+ +

历史邀请

{#if !inviteBusy && !inviteErr && invites.length === 0} @@ -323,11 +327,11 @@ {/if} -

恢复链接由“生成恢复”按钮产生,仅出现一次;不会自动发邮件。

+

恢复链接由“生成恢复”按钮产生,仅出现一次;不会自动发邮件。

{:else} - -

安全审计(收尾尾部)

+ +

安全审计(收尾尾部)

{#if !auditBusy && !auditErr && audit.length === 0} @@ -349,29 +353,29 @@ {fmtDateTime(e.time)} {e.actor ?? '—'} {e.action} - {e.target ?? '—'} + {e.target ?? '—'} {e.status} {/each} {/if} -

审计仅记录操作行为与结果,不含密码/密钥/策略代码内容。

+

审计仅记录操作行为与结果,不含密码/密钥/策略代码内容。

{/if}
{#if resetFor} (resetFor = null)}> -
- +
+
恢复链接(管理员线下告知对方,只出现一次):
-
{resetUrl}
-
令牌 {resetToken.slice(0, 8)}… 会即刻失效前提示时间(见链接有效期)。
+
{resetUrl}
+
令牌 {resetToken.slice(0, 8)}… 会即刻失效前提示时间(见链接有效期)。
-

单次有效、限时;重置会吊销对方的全部历史会话。

+

单次有效、限时;重置会吊销对方的全部历史会话。

{/if} -- cgit v1.2.3