diff --git a/web/tenant/src/components/layout/AuthLayout.vue b/web/tenant/src/components/layout/AuthLayout.vue index 9666867..0951233 100644 --- a/web/tenant/src/components/layout/AuthLayout.vue +++ b/web/tenant/src/components/layout/AuthLayout.vue @@ -86,7 +86,6 @@ onBeforeUnmount(() => { background: rgba(255, 255, 255, 0.66); box-shadow: var(--shadow-glass-sm), inset 0 1px 0 rgba(255, 255, 255, 0.94); backdrop-filter: blur(20px) saturate(1.16); - -webkit-backdrop-filter: blur(20px) saturate(1.16); } .auth-card { diff --git a/web/tenant/src/styles/main.css b/web/tenant/src/styles/main.css index 0eddc32..dd42ecc 100644 --- a/web/tenant/src/styles/main.css +++ b/web/tenant/src/styles/main.css @@ -262,13 +262,11 @@ body.modal-open { .glass { background: var(--glass-bg-subtle); backdrop-filter: blur(var(--glass-blur)) saturate(var(--glass-saturate)); - -webkit-backdrop-filter: blur(var(--glass-blur)) saturate(var(--glass-saturate)); } /* 液态玻璃卡片:弱透明底 + 模糊 + 高光描边 + 冷投影 + 内高光 */ .glass-card { background: var(--glass-bg); backdrop-filter: blur(var(--glass-blur)) saturate(var(--glass-saturate)); - -webkit-backdrop-filter: blur(var(--glass-blur)) saturate(var(--glass-saturate)); border: 1px solid var(--glass-border); border-radius: var(--radius-panel); box-shadow: var(--shadow-glass), var(--glass-highlight); @@ -286,7 +284,6 @@ body.modal-open { border-radius: var(--radius-card); background: var(--glass-bg-strong); backdrop-filter: blur(var(--glass-blur)) saturate(var(--glass-saturate)); - -webkit-backdrop-filter: blur(var(--glass-blur)) saturate(var(--glass-saturate)); border: 1px solid var(--glass-border); box-shadow: var(--shadow-card); } @@ -305,7 +302,6 @@ body.modal-open { .card-glass { background: var(--glass-bg-strong); backdrop-filter: blur(var(--glass-blur)) saturate(var(--glass-saturate)); - -webkit-backdrop-filter: blur(var(--glass-blur)) saturate(var(--glass-saturate)); border: 1px solid var(--glass-border); box-shadow: var(--shadow-glass); } @@ -343,7 +339,6 @@ body.modal-open { border-radius: var(--radius-card); background: var(--glass-bg-strong); backdrop-filter: blur(var(--glass-blur)) saturate(var(--glass-saturate)); - -webkit-backdrop-filter: blur(var(--glass-blur)) saturate(var(--glass-saturate)); border: 1px solid var(--glass-border); box-shadow: var(--shadow-card); } @@ -389,7 +384,6 @@ body.modal-open { 0 10px 30px rgba(75, 91, 137, 0.07), inset 0 1px 0 rgba(255, 255, 255, 0.92); backdrop-filter: blur(22px) saturate(1.2); - -webkit-backdrop-filter: blur(22px) saturate(1.2); scrollbar-width: thin; scrollbar-color: rgba(20, 184, 166, 0.28) transparent; } @@ -661,7 +655,6 @@ body.modal-open { @apply origin-top-right animate-scale-in; background: var(--glass-bg-strong); backdrop-filter: blur(var(--glass-blur)) saturate(var(--glass-saturate)); - -webkit-backdrop-filter: blur(var(--glass-blur)) saturate(var(--glass-saturate)); border: 1px solid var(--glass-border); box-shadow: var(--shadow-glass), var(--glass-highlight); } @@ -747,7 +740,6 @@ body.modal-open { linear-gradient(115deg, rgba(255, 255, 255, 0.13), rgba(255, 255, 255, 0.035) 42%, rgba(255, 255, 255, 0.08)), rgba(238, 246, 252, 0.2); backdrop-filter: blur(20px) saturate(1.38) brightness(1.04); - -webkit-backdrop-filter: blur(20px) saturate(1.38) brightness(1.04); border: 1px solid rgba(255, 255, 255, 0.38); box-shadow: 0 16px 38px rgba(35, 48, 68, 0.12), @@ -868,7 +860,6 @@ body.modal-open { .sidebar { background: rgba(247, 249, 253, 0.94); backdrop-filter: none; - -webkit-backdrop-filter: none; } } @media (prefers-contrast: more) { diff --git a/web/tenant/src/views/Layout.vue b/web/tenant/src/views/Layout.vue index d23a15c..f1570c7 100644 --- a/web/tenant/src/views/Layout.vue +++ b/web/tenant/src/views/Layout.vue @@ -600,7 +600,6 @@ onBeforeUnmount(() => { .user-dropdown { background: #fff; backdrop-filter: none; - -webkit-backdrop-filter: none; } .fade-enter-active, diff --git a/web/tenant/src/views/auth/LoginPage.vue b/web/tenant/src/views/auth/LoginPage.vue index 56046f5..ac0fe5d 100644 --- a/web/tenant/src/views/auth/LoginPage.vue +++ b/web/tenant/src/views/auth/LoginPage.vue @@ -544,7 +544,6 @@ async function handleOAuthLogin(provider: string) { inset 0 1px 0 rgba(255, 255, 255, 0.82), 0 6px 16px rgba(76, 91, 142, 0.06); backdrop-filter: blur(18px) saturate(1.14); - -webkit-backdrop-filter: blur(18px) saturate(1.14); } .login-mode-indicator { diff --git a/web/tenant/src/views/landing/LandingPage.vue b/web/tenant/src/views/landing/LandingPage.vue index 589d1d4..ae3bf53 100644 --- a/web/tenant/src/views/landing/LandingPage.vue +++ b/web/tenant/src/views/landing/LandingPage.vue @@ -590,7 +590,7 @@ const mockChartHeights = [45, 62, 38, 71, 55, 82, 67, 48, 73, 58, 90, 65, 52, 78 justify-content: center; width: fit-content; margin: 0 auto 1.5rem; border-radius: 14px; background: rgba(241, 245, 249, 0.8); - backdrop-filter: blur(12px); -webkit-backdrop-filter: blur(12px); + backdrop-filter: blur(12px); border: 1px solid rgba(255, 255, 255, 0.6); box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.7); } @@ -634,7 +634,7 @@ const mockChartHeights = [45, 62, 38, 71, 55, 82, 67, 48, 73, 58, 90, 65, 52, 78 height: 440px; border-radius: 1.5rem; padding: 2rem 2.25rem; background: rgba(255, 255, 255, 0.72); - backdrop-filter: blur(28px) saturate(1.18); -webkit-backdrop-filter: blur(28px) saturate(1.18); + backdrop-filter: blur(28px) saturate(1.18); border: 1px solid rgba(255, 255, 255, 0.82); box-shadow: 0 18px 55px rgba(76, 91, 142, 0.11), inset 0 1px 0 rgba(255, 255, 255, 0.9); } @@ -835,7 +835,7 @@ const mockChartHeights = [45, 62, 38, 71, 55, 82, 67, 48, 73, 58, 90, 65, 52, 78 .announce-backdrop { position: absolute; inset: 0; background: rgba(15, 23, 42, 0.35); - backdrop-filter: blur(8px); -webkit-backdrop-filter: blur(8px); + backdrop-filter: blur(8px); } /* Card */ @@ -843,7 +843,7 @@ const mockChartHeights = [45, 62, 38, 71, 55, 82, 67, 48, 73, 58, 90, 65, 52, 78 position: relative; width: 100%; max-width: 860px; border-radius: 1.5rem; overflow: hidden; background: rgba(255, 255, 255, 0.9); - backdrop-filter: blur(28px) saturate(1.18); -webkit-backdrop-filter: blur(28px) saturate(1.18); + backdrop-filter: blur(28px) saturate(1.18); border: 1px solid rgba(255, 255, 255, 0.85); box-shadow: 0 32px 80px -16px rgba(15, 23, 42, 0.28), inset 0 1px 0 rgba(255, 255, 255, 0.95); animation: announceEnter 0.4s cubic-bezier(0.16, 1, 0.3, 1) both; diff --git a/web/tenant/src/views/marketplace/MarketplacePage.vue b/web/tenant/src/views/marketplace/MarketplacePage.vue index 23044d5..38da627 100644 --- a/web/tenant/src/views/marketplace/MarketplacePage.vue +++ b/web/tenant/src/views/marketplace/MarketplacePage.vue @@ -623,7 +623,6 @@ useSeo({ border-bottom: 1px solid rgba(220, 229, 225, 0.82); background: rgba(247, 250, 248, 0.88); backdrop-filter: blur(18px) saturate(1.2); - -webkit-backdrop-filter: blur(18px) saturate(1.2); } .header-inner, @@ -2101,7 +2100,6 @@ useSeo({ border-bottom: 0; background: transparent; backdrop-filter: none; - -webkit-backdrop-filter: none; } .header-inner { @@ -2146,7 +2144,6 @@ useSeo({ background: rgba(241, 245, 249, 0.58); box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.75); backdrop-filter: blur(12px); - -webkit-backdrop-filter: blur(12px); } .header-nav a { @@ -2211,7 +2208,6 @@ useSeo({ box-shadow: 0 5px 16px rgba(76, 91, 142, 0.07), inset 0 1px 0 rgba(255, 255, 255, 0.9); color: #475569; backdrop-filter: blur(14px); - -webkit-backdrop-filter: blur(14px); } .secondary-button:hover { @@ -2263,7 +2259,6 @@ useSeo({ background: rgba(255, 255, 255, 0.64); box-shadow: 0 18px 55px rgba(76, 91, 142, 0.1), inset 0 1px 0 rgba(255, 255, 255, 0.9); backdrop-filter: blur(28px) saturate(1.16); - -webkit-backdrop-filter: blur(28px) saturate(1.16); } .category-panel { @@ -2422,7 +2417,6 @@ useSeo({ box-shadow: 0 18px 55px rgba(76, 91, 142, 0.11), inset 0 1px 0 rgba(255, 255, 255, 0.92); color: #111827; backdrop-filter: blur(28px) saturate(1.18); - -webkit-backdrop-filter: blur(28px) saturate(1.18); } .cta-icon { @@ -2471,7 +2465,6 @@ useSeo({ background: rgba(255, 255, 255, 0.9); box-shadow: 0 24px 80px rgba(76, 91, 142, 0.24), inset 0 1px 0 #fff; backdrop-filter: blur(28px) saturate(1.16); - -webkit-backdrop-filter: blur(28px) saturate(1.16); } .detail-hero { diff --git a/web/tenant/src/views/service/UsageLogsPage.vue b/web/tenant/src/views/service/UsageLogsPage.vue index a9ff4f1..cc59f04 100644 --- a/web/tenant/src/views/service/UsageLogsPage.vue +++ b/web/tenant/src/views/service/UsageLogsPage.vue @@ -11,10 +11,6 @@ import request from '@/utils/request' import { tableScrollX } from '@/utils/renderUtils' import { useExport } from '@/composables/useExport' -// 日期辅助(native,避免引入 dayjs 依赖) -function pad2(n: number): string { - return String(n).padStart(2, '0') -} // timestamp(ms) ↔ 后端字符串 YYYY-MM-DD HH:mm:ss function tsToStr(ts: number): string { const d = new Date(ts) @@ -210,16 +206,6 @@ function viewAuditLog(requestId: string, taskId?: string) { router.push({ name: 'TenantRequestAuditLogs', query }) } -function hasCacheTokens(log: any): boolean { - return (log.cache_creation_tokens > 0) || (log.cache_read_tokens > 0) || - (log.cache_creation_5m_tokens > 0) || (log.cache_creation_1h_tokens > 0) -} - -function hasExtraTokens(log: any): boolean { - return (log.reasoning_tokens > 0) || (log.audio_input_tokens > 0) || - (log.audio_output_tokens > 0) || (log.image_output_tokens > 0) -} - function hasUpstreamModel(log: any): boolean { return log.upstream_model && log.upstream_model !== log.model_name && log.upstream_model !== '' }