diff --git a/.gitignore b/.gitignore index 1b3bc83..a8c784c 100644 --- a/.gitignore +++ b/.gitignore @@ -268,3 +268,6 @@ sql/ !go-backend/internal/store/postgres/sql/ !go-backend/internal/store/postgres/sql/schema.sql !go-backend/internal/store/postgres/sql/data.sql +go-backend/gost.db-shm +.gitignore +go-backend/gost.db-wal diff --git a/vite-frontend/src/pages/dashboard/components/announcement-banner.tsx b/vite-frontend/src/pages/dashboard/components/announcement-banner.tsx index ea07818..a7cbf2c 100644 --- a/vite-frontend/src/pages/dashboard/components/announcement-banner.tsx +++ b/vite-frontend/src/pages/dashboard/components/announcement-banner.tsx @@ -17,13 +17,13 @@ export const AnnouncementBanner = ({ } return ( - - -
-
+ + +
+
-
-

+
+

公告

-
+
) : ( /* 空状态 */ - - -
-
- -
-
-

- 暂无转发配置 -

-

- 还没有创建任何转发配置,点击上方按钮开始创建 -

-
-
+ + +

+ 暂无转发配置 +

+

+ 还没有创建任何转发配置,点击上方按钮开始创建 +

) @@ -1988,34 +1968,14 @@ export default function ForwardPage() { ) : ( /* 空状态 */ - - -
-
- -
-
-

- 暂无转发配置 -

-

- 还没有创建任何转发配置,点击上方按钮开始创建 -

-
-
+ + +

+ 暂无转发配置 +

+

+ 还没有创建任何转发配置,点击上方按钮开始创建 +

)} diff --git a/vite-frontend/src/pages/limit.tsx b/vite-frontend/src/pages/limit.tsx index e456b13..9ff942d 100644 --- a/vite-frontend/src/pages/limit.tsx +++ b/vite-frontend/src/pages/limit.tsx @@ -334,34 +334,14 @@ export default function LimitPage() {
) : ( /* 空状态 */ - - -
-
- -
-
-

- 暂无限速规则 -

-

- 还没有创建任何限速规则,点击上方按钮开始创建 -

-
-
+ + +

+ 暂无限速规则 +

+

+ 还没有创建任何限速规则,点击上方按钮开始创建 +

)} diff --git a/vite-frontend/src/pages/tunnel.tsx b/vite-frontend/src/pages/tunnel.tsx index 35e7e8e..557bd2c 100644 --- a/vite-frontend/src/pages/tunnel.tsx +++ b/vite-frontend/src/pages/tunnel.tsx @@ -1014,34 +1014,14 @@ export default function TunnelPage() { ) : ( /* 空状态 */ - - -
-
- -
-
-

- 暂无隧道配置 -

-

- 还没有创建任何隧道配置,点击上方按钮开始创建 -

-
-
+ + +

+ 暂无隧道配置 +

+

+ 还没有创建任何隧道配置,点击上方按钮开始创建 +

)} diff --git a/vite-frontend/src/pages/user.tsx b/vite-frontend/src/pages/user.tsx index d612b71..a4b9393 100644 --- a/vite-frontend/src/pages/user.tsx +++ b/vite-frontend/src/pages/user.tsx @@ -57,7 +57,6 @@ import { SearchIcon, EditIcon, DeleteIcon, - UserIcon, SettingsIcon, } from "@/components/icons"; import { PageLoadingState } from "@/components/page-state"; @@ -247,7 +246,7 @@ export default function UserPage() { if (response.code === 0) { setTunnels(Array.isArray(response.data) ? response.data : []); } - } catch {} + } catch { } }; const loadSpeedLimits = async () => { @@ -257,15 +256,15 @@ export default function UserPage() { if (response.code === 0) { const speedLimitList = Array.isArray(response.data) ? response.data.map((item) => ({ - ...item, - uploadSpeed: item.uploadSpeed ?? item.speed ?? 0, - downloadSpeed: item.downloadSpeed ?? item.speed ?? 0, - })) + ...item, + uploadSpeed: item.uploadSpeed ?? item.speed ?? 0, + downloadSpeed: item.downloadSpeed ?? item.speed ?? 0, + })) : []; setSpeedLimits(speedLimitList); } - } catch {} + } catch { } }; const loadUserGroups = async () => { @@ -275,7 +274,7 @@ export default function UserPage() { if (response.code === 0) { setUserGroups(Array.isArray(response.data) ? response.data : []); } - } catch {} + } catch { } }; const loadUserTunnels = async (userId: number) => { @@ -326,7 +325,7 @@ export default function UserPage() { if (groupRes.code === 0) { currentGroupIds = groupRes.data || []; } - } catch {} + } catch { } setUserForm({ id: user.id, @@ -652,21 +651,14 @@ export default function UserPage() { {loading ? ( ) : users.length === 0 ? ( - - -
-
- -
-
-

- 暂无用户数据 -

-

- 还没有创建任何用户,点击上方按钮开始创建 -

-
-
+ + +

+ 暂无用户数据 +

+

+ 还没有创建任何用户,点击上方按钮开始创建 +

) : ( @@ -680,9 +672,9 @@ export default function UserPage() { const flowPercent = user.flow > 0 ? Math.min( - (usedFlow / (user.flow * 1024 * 1024 * 1024)) * 100, - 100, - ) + (usedFlow / (user.flow * 1024 * 1024 * 1024)) * 100, + 100, + ) : 0; return ( @@ -947,8 +939,8 @@ export default function UserPage() { value={ userForm.expTime ? (parseDate( - userForm.expTime.toISOString().split("T")[0], - ) as any) + userForm.expTime.toISOString().split("T")[0], + ) as any) : null } onChange={(date) => { @@ -1054,12 +1046,11 @@ export default function UserPage() { aria-disabled={isAssigned} className={` px-4 py-3 rounded-lg border transition-all duration-200 cursor-pointer - ${ - isAssigned - ? "bg-default-100/50 dark:bg-default-50/50 border-default-200/50 dark:border-default-100/20 opacity-60 cursor-not-allowed" - : isSelected - ? "bg-primary-50 dark:bg-primary-900/20 border-primary-300 dark:border-primary-500/50 shadow-sm" - : "bg-white dark:bg-default-50 border-default-200 dark:border-default-100/30 hover:border-primary-200 dark:hover:border-primary-500/30 hover:shadow-sm" + ${isAssigned + ? "bg-default-100/50 dark:bg-default-50/50 border-default-200/50 dark:border-default-100/20 opacity-60 cursor-not-allowed" + : isSelected + ? "bg-primary-50 dark:bg-primary-900/20 border-primary-300 dark:border-primary-500/50 shadow-sm" + : "bg-white dark:bg-default-50 border-default-200 dark:border-default-100/30 hover:border-primary-200 dark:hover:border-primary-500/30 hover:shadow-sm" } `} role="button" @@ -1119,13 +1110,13 @@ export default function UserPage() { selectedKeys={ batchTunnelSelections.get(tunnel.id) !== null && - batchTunnelSelections.get(tunnel.id) !== + batchTunnelSelections.get(tunnel.id) !== undefined ? [ - batchTunnelSelections - .get(tunnel.id)! - .toString(), - ] + batchTunnelSelections + .get(tunnel.id)! + .toString(), + ] : ["null"] } size="sm" @@ -1385,9 +1376,9 @@ export default function UserPage() { setEditTunnelForm((prev) => prev ? { - ...prev, - speedId: value === "null" ? null : Number(value), - } + ...prev, + speedId: value === "null" ? null : Number(value), + } : null, ); }} @@ -1442,10 +1433,10 @@ export default function UserPage() { value={ editTunnelForm.expTime ? (parseDate( - new Date(editTunnelForm.expTime) - .toISOString() - .split("T")[0], - ) as any) + new Date(editTunnelForm.expTime) + .toISOString() + .split("T")[0], + ) as any) : null } onChange={(date) => {