From 42dfead9cdd2e4733fe170341f04a936227dfda0 Mon Sep 17 00:00:00 2001 From: cneicy Date: Sat, 7 Nov 2026 00:09:57 +0800 Subject: [PATCH] =?UTF-8?q?feat(ui):=20=E4=BC=98=E5=8C=96=E6=8E=A7?= =?UTF-8?q?=E5=88=B6=E5=8F=B0=E5=93=8D=E5=BA=94=E5=BC=8F=E5=B8=83=E5=B1=80?= =?UTF-8?q?=E4=B8=8E=E8=A7=86=E8=A7=89=E4=BD=93=E9=AA=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 统一页面标题、圆角、字体和响应式断点,调整暗色主题及图表配色 - 新增表格列标签插件,在窄屏下将表格转换为卡片布局,优化实例、订单、工单等列表展示 - 支持移动端点击订单行进入详情,并完善订单凭据的打印布局 - 在财务中心展示本月及累计消费,补充充值关闭时的提示 - 优化工单详情布局,将附件上传入口整合至富文本编辑器工具栏 - 调整实例操作按钮、SSH 密钥操作及安全菜单图标 - 为多个页面显式导入 definePageMeta,完善页面元数据声明 --- app/assets/styles/AuthProviders.CgAWouSf.css | 14 +- .../styles/BackendNavigation.CEj4LnzI.css | 2 +- .../styles/BuildUpdateNotice.CuqdqvlF.css | 6 +- app/assets/styles/CaptchaField.BSN3ZbsD.css | 2 +- .../styles/CloudAccessExtras.CnBJlFAZ.css | 2 +- .../styles/CloudProductPicker.CAm9rmUl.css | 8 +- app/assets/styles/CommonConfig.Cfik-oMe.css | 4 +- app/assets/styles/CommonManage.qcc2l13i.css | 8 +- .../styles/ConfigBandwidth.CWSH1WJZ.css | 8 +- app/assets/styles/ConfigDiskAdd.C92e9ZuF.css | 6 +- app/assets/styles/ConfigDiskCard.Dx9IqqQ_.css | 12 +- .../styles/ConsoleLegalFooter.DAYWmXIB.css | 6 +- app/assets/styles/DcimBilling.QV7PUjnH.css | 8 +- app/assets/styles/DcimDefence.BYaQccXZ.css | 8 +- app/assets/styles/DcimDomains.BT2s5hGW.css | 2 +- app/assets/styles/DcimManage.BlqFeSOi.css | 20 +- app/assets/styles/DcimMonitor.CiStTCbZ.css | 2 +- .../styles/DcimReinstallStatus.CuXeXmZ3.css | 4 +- app/assets/styles/DcimUpgrade.DaLApYFa.css | 2 +- app/assets/styles/FinanceConfig.CLwX1CC8.css | 4 +- .../styles/FlowPacketPanel.-RJSx13z.css | 8 +- .../styles/GenericOAuthProviders.Bv8oNwXP.css | 2 +- app/assets/styles/GlobalSearch.BQqObidy.css | 6 +- .../styles/HomeNoticePanel.e5-qgzAs.css | 6 +- .../styles/HomeServerPanel.Do7AgMDx.css | 6 +- app/assets/styles/HomeTicketStat.C4kzybrY.css | 2 +- app/assets/styles/HomeWalletCard.C5SHzGlJ.css | 13 +- app/assets/styles/HostList.B3U15sJm.css | 148 +++++++++++- app/assets/styles/InstanceAccess.DIZBrksv.css | 8 +- .../styles/InstanceBilling.CvIGLT2J.css | 10 +- app/assets/styles/InstanceDisks.Ca7NZxYd.css | 2 +- .../styles/InstanceLoadingShell.CwfiUwdU.css | 14 +- .../styles/InstanceMonitor.B0X15iQt.css | 11 +- .../InstanceMonitorSkeleton.C0FT51jJ.css | 2 +- .../styles/InstanceNetwork.CyucZaZp.css | 12 +- .../styles/InstanceOnDemand.okGWwgIJ.css | 6 +- .../styles/InstanceOverview.C9ExpxMB.css | 14 +- .../styles/InstanceRenewDialog.BHDAL6d3.css | 4 +- .../styles/InstanceServiceInfo.BftSVIeW.css | 6 +- .../styles/InstanceTraffic.CyyEAXl3.css | 6 +- app/assets/styles/JyCloudConfig.kGfttaHi.css | 12 +- app/assets/styles/KkyEcsConfig.BFaAwQPZ.css | 6 +- app/assets/styles/KkyUpgrade.CkDmxFBM.css | 22 +- .../styles/LegacyDcimManage.5YRq508t.css | 16 +- .../styles/MfCloudBackupPanel.BTlEe-fy.css | 4 +- app/assets/styles/MfCloudConfig.DbgUu8qr.css | 4 +- app/assets/styles/MfCloudLogs.MTqtLGjA.css | 2 +- app/assets/styles/MfCloudNat.C1uXa4fX.css | 2 +- .../MfCloudResourceUpgrade.bSwLWjPg.css | 2 +- app/assets/styles/MfCloudUpgrade.N7TNG8F1.css | 4 +- app/assets/styles/MfCloudVpc.CpOEbuWs.css | 2 +- app/assets/styles/MfDcimConfig.BhC_eZ0V.css | 10 +- .../NotificationPreferences.DcH8Noxd.css | 2 +- .../styles/OperationToasts.DfA_b8om.css | 6 +- app/assets/styles/PageInfoNotice._16xRFrB.css | 4 +- app/assets/styles/PaymentDialog.BNFKQF1U.css | 10 +- .../styles/ProductCategoryNotice.CwaR3eXN.css | 6 +- .../styles/ProductDescription.Ctb7jDuO.css | 12 +- .../styles/ProductGroupLabel.B1kWpFA-.css | 2 +- app/assets/styles/RechargeDialog.DpsMly4r.css | 2 +- app/assets/styles/RemfUpgrade.4stQ5ASH.css | 6 +- app/assets/styles/RemoteConsole.DLmX5UZu.css | 6 +- app/assets/styles/RichTextEditor.NkmgPT5m.css | 2 +- app/assets/styles/RoxyMascot.CDqPSf2d.css | 6 +- .../SecurityVerificationDialog.skYFo4v7.css | 4 +- app/assets/styles/SensitiveValue.BSZlaRHT.css | 2 +- .../styles/TicketAttachments.DtbJGLkE.css | 8 +- app/assets/styles/WithdrawDialog.ks0wdKEK.css | 4 +- app/assets/styles/_id_.C-0--Lx-.css | 104 +++++++- app/assets/styles/_id_.CSXsMADH.css | 4 +- app/assets/styles/_id_.gjoJy9S8.css | 72 +++++- app/assets/styles/account.CTvLXxT_.css | 7 +- app/assets/styles/bind.CFZQE2UH.css | 2 +- app/assets/styles/blank.DOa3C9wi.css | 14 +- app/assets/styles/cart.CSS2vTmS.css | 16 +- app/assets/styles/create.gX6gpD00.css | 15 +- app/assets/styles/customize.Cc123Awf.css | 4 +- .../styles/dedicated-server.CiJfMYtk.css | 18 +- app/assets/styles/default.DFUVVR1i.css | 58 +++-- app/assets/styles/domains.GiD6NSti.css | 8 +- app/assets/styles/entry.Cs9kvuGi.css | 223 +++++++++++++++--- app/assets/styles/finance.BkxKMno0.css | 83 +++++-- app/assets/styles/groups.Buw8nwl1.css | 18 +- app/assets/styles/help.BSOB30LE.css | 10 +- app/assets/styles/invoices.t1P1GXOx.css | 6 +- app/assets/styles/logbook.Y7gm684m.css | 70 +++++- app/assets/styles/messages.asRdYcVu.css | 6 +- app/assets/styles/news.CbIzdrjt.css | 14 +- app/assets/styles/notices.BXNGOj-Q.css | 8 +- app/assets/styles/official-site.pBD-PXD7.css | 90 +++---- app/assets/styles/orders.BflDlvVz.css | 141 ++++++++++- app/assets/styles/pages.DytekQXu.css | 79 ++++++- app/assets/styles/products.CrccEo2m.css | 47 ++-- app/assets/styles/public-order.0RThfr7m.css | 6 +- app/assets/styles/realname.BpRCvfXO.css | 16 +- app/assets/styles/recommend.C1KCHBPJ.css | 2 +- app/assets/styles/remote-console.zcxaOxxS.css | 4 +- app/assets/styles/resources._aUrMsvM.css | 4 +- app/assets/styles/server.DGuhrprb.css | 41 +++- app/assets/styles/settings.zV3AWuRw.css | 15 +- app/assets/styles/ssh-keys.WWTOf2zG.css | 85 ++++++- app/assets/styles/tickets.Dz8JrDhQ.css | 99 +++++++- app/assets/styles/transfer.CAsJhVUW.css | 16 +- app/assets/styles/vouchers.5FV4ozrh.css | 20 +- app/components/AuthProviders.vue | 2 +- app/components/HostList.vue | 3 +- app/components/RichTextEditor.vue | 2 + app/components/RingProgress.vue | 2 +- app/components/home/HomeConsumeTrend.vue | 2 +- app/components/home/HomeWalletCard.vue | 15 +- app/components/instance/InstanceMonitor.vue | 2 +- app/components/instance/InstanceOverview.vue | 4 +- app/lib/backend-menu.js | 3 + app/pages/bills/[id].vue | 1 + app/pages/bills/index.vue | 1 + app/pages/finance/index.vue | 59 +++-- app/pages/forgot-password.vue | 1 + app/pages/help.vue | 1 + app/pages/home.htm.vue | 1 + app/pages/invoices/invoice.vue | 1 + app/pages/login.vue | 1 + app/pages/messages/index.vue | 1 + app/pages/news.vue | 1 + app/pages/notices/index.vue | 1 + app/pages/oauth/bind.vue | 1 + app/pages/oauth/callback.vue | 1 + app/pages/official-site.vue | 1 + app/pages/orders/[id].vue | 36 +++ app/pages/orders/index.vue | 29 ++- app/pages/orders/order/index.vue | 1 + app/pages/orders/order/paid.vue | 1 + app/pages/orders/order/pay.vue | 1 + app/pages/products/[id].vue | 1 + app/pages/products/cloud-server.vue | 1 + .../products/dedicated-server/customize.vue | 1 + app/pages/register.vue | 1 + app/pages/remote-console.vue | 1 + app/pages/security/domains/index.vue | 1 + app/pages/security/groups/index.vue | 1 + app/pages/security/ssh-keys/index.vue | 7 +- app/pages/servers/server.vue | 25 +- app/pages/tickets/[id].vue | 102 ++++---- app/pages/tickets/ticket.vue | 1 + app/pages/transfer/index.vue | 1 + app/plugins/04-table-labels.client.js | 36 +++ 145 files changed, 1762 insertions(+), 599 deletions(-) create mode 100644 app/plugins/04-table-labels.client.js diff --git a/app/assets/styles/AuthProviders.CgAWouSf.css b/app/assets/styles/AuthProviders.CgAWouSf.css index 244da89..238eee2 100644 --- a/app/assets/styles/AuthProviders.CgAWouSf.css +++ b/app/assets/styles/AuthProviders.CgAWouSf.css @@ -28,7 +28,7 @@ width: 176px; height: 176px; color: var(--p-text-muted-color); - border-radius: 12px; + border-radius: var(--radius-lg); margin-bottom: 20px; } .provider-qr-placeholder .pi[data-v-9d0ee2f9] { @@ -52,7 +52,7 @@ var(--p-text-color) 6%, var(--p-content-background) ); - border-radius: 10px; + border-radius: var(--radius-lg); grid-template-columns: repeat(2, minmax(0, 1fr)); padding: 4px; display: grid; @@ -61,7 +61,7 @@ .provider-tab-indicator[data-v-9d0ee2f9] { background: var(--p-content-background); pointer-events: none; - border-radius: 7px; + border-radius: var(--radius-md); width: calc(50% - 4px); transition: transform 0.2s; position: absolute; @@ -77,7 +77,7 @@ cursor: pointer; background: 0 0; border: 0; - border-radius: 7px; + border-radius: var(--radius-md); padding: 8px; font-weight: 500; position: relative; @@ -101,8 +101,8 @@ min-height: 44px; font-size: 1em; } -/* 视口条件 (width<=760px) 下的响应式覆盖;保留相对基础规则的层叠顺序。 */ -@media (width<=760px) { +/* 视口条件 (width<=768px) 下的响应式覆盖;保留相对基础规则的层叠顺序。 */ +@media (width<=768px) { .auth-providers[data-v-9d0ee2f9] { border-left: 0; border-top: 1px solid var(--p-content-border-color); @@ -166,7 +166,7 @@ .qr-box[data-v-9d0ee2f9] { border: 1px solid var(--p-content-border-color); background: var(--p-content-background); - border-radius: 12px; + border-radius: var(--radius-lg); justify-content: center; align-items: center; width: 200px; diff --git a/app/assets/styles/BackendNavigation.CEj4LnzI.css b/app/assets/styles/BackendNavigation.CEj4LnzI.css index 3cfc1b3..fa7b14d 100644 --- a/app/assets/styles/BackendNavigation.CEj4LnzI.css +++ b/app/assets/styles/BackendNavigation.CEj4LnzI.css @@ -16,7 +16,7 @@ } .nav-placeholder span[data-v-02b58e93] { background: var(--p-content-hover-background); - border-radius: 4px; + border-radius: var(--radius-sm); width: 78%; height: 20px; display: block; diff --git a/app/assets/styles/BuildUpdateNotice.CuqdqvlF.css b/app/assets/styles/BuildUpdateNotice.CuqdqvlF.css index 28ba33f..e57a9ba 100644 --- a/app/assets/styles/BuildUpdateNotice.CuqdqvlF.css +++ b/app/assets/styles/BuildUpdateNotice.CuqdqvlF.css @@ -4,7 +4,7 @@ z-index: 1100; border: 1px solid var(--p-content-border-color); background: var(--p-content-background); - border-radius: 12px; + border-radius: var(--radius-lg); flex-direction: column; gap: 12px; max-width: 420px; @@ -24,8 +24,8 @@ gap: 8px; display: flex; } -/* 视口条件 (width<=500px) 下的响应式覆盖;保留相对基础规则的层叠顺序。 */ -@media (width<=500px) { +/* 视口条件 (width<=480px) 下的响应式覆盖;保留相对基础规则的层叠顺序。 */ +@media (width<=480px) { .build-notice[data-v-fc2ba853] { bottom: 12px; left: 12px; diff --git a/app/assets/styles/CaptchaField.BSN3ZbsD.css b/app/assets/styles/CaptchaField.BSN3ZbsD.css index 4803c77..488b59b 100644 --- a/app/assets/styles/CaptchaField.BSN3ZbsD.css +++ b/app/assets/styles/CaptchaField.BSN3ZbsD.css @@ -23,7 +23,7 @@ width: 110px; height: 40px; color: var(--p-text-muted-color, #94a3b8); - border-radius: 6px; + border-radius: var(--radius-md); flex-shrink: 0; justify-content: center; align-items: center; diff --git a/app/assets/styles/CloudAccessExtras.CnBJlFAZ.css b/app/assets/styles/CloudAccessExtras.CnBJlFAZ.css index da5f5f6..740ad5e 100644 --- a/app/assets/styles/CloudAccessExtras.CnBJlFAZ.css +++ b/app/assets/styles/CloudAccessExtras.CnBJlFAZ.css @@ -15,7 +15,7 @@ border: 1px solid var(--console-panel-border); box-shadow: var(--console-panel-shadow); background: var(--console-panel-bg); - border-radius: 6px; + border-radius: var(--radius-md); overflow: hidden; } .kv[data-v-94e7f654] { diff --git a/app/assets/styles/CloudProductPicker.CAm9rmUl.css b/app/assets/styles/CloudProductPicker.CAm9rmUl.css index c6c6d9a..139377f 100644 --- a/app/assets/styles/CloudProductPicker.CAm9rmUl.css +++ b/app/assets/styles/CloudProductPicker.CAm9rmUl.css @@ -45,7 +45,7 @@ text-align: left; cursor: pointer; overflow-wrap: anywhere; - border-radius: 5px; + border-radius: var(--radius-md); flex-direction: column; gap: 10px; padding: 17px 14px; @@ -102,7 +102,7 @@ color: var(--p-text-muted-color); border: 1px solid var(--p-content-border-color); background: var(--p-content-background); - border-radius: 5px; + border-radius: var(--radius-md); padding: 28px; } .catalog-empty i[data-v-a438862d] { @@ -112,8 +112,8 @@ color: var(--p-primary-color); text-decoration: none; } -/* 视口条件 (width<=767px) 下的响应式覆盖;保留相对基础规则的层叠顺序。 */ -@media (width<=767px) { +/* 视口条件 (width<768px) 下的响应式覆盖;保留相对基础规则的层叠顺序。 */ +@media (width<768px) { .product-options[data-v-a438862d], .zone-options[data-v-a438862d] { grid-template-columns: repeat(2, minmax(0, 1fr)); diff --git a/app/assets/styles/CommonConfig.Cfik-oMe.css b/app/assets/styles/CommonConfig.Cfik-oMe.css index 2326168..390215a 100644 --- a/app/assets/styles/CommonConfig.Cfik-oMe.css +++ b/app/assets/styles/CommonConfig.Cfik-oMe.css @@ -41,8 +41,8 @@ gap: 16px; display: grid; } -/* 视口条件 (width<=639px) 下的响应式覆盖;保留相对基础规则的层叠顺序。 */ -@media (width<=639px) { +/* 视口条件 (width<640px) 下的响应式覆盖;保留相对基础规则的层叠顺序。 */ +@media (width<640px) { .storage-grid[data-v-bc59a2b1] { grid-template-columns: minmax(0, 1fr); } diff --git a/app/assets/styles/CommonManage.qcc2l13i.css b/app/assets/styles/CommonManage.qcc2l13i.css index b2c5164..64adae5 100644 --- a/app/assets/styles/CommonManage.qcc2l13i.css +++ b/app/assets/styles/CommonManage.qcc2l13i.css @@ -3,7 +3,7 @@ .common-manage[data-v-34fd3c5d] { border: 1px solid var(--p-content-border-color); background: var(--p-content-background); - border-radius: 12px; + border-radius: var(--radius-lg); overflow: hidden; } .common-tabs[data-v-34fd3c5d] { @@ -20,7 +20,7 @@ cursor: pointer; background: 0 0; border: 0; - border-radius: 6px; + border-radius: var(--radius-md); padding: 10px 14px; } .common-tabs button.active[data-v-34fd3c5d] { @@ -77,8 +77,8 @@ .common-body[data-v-34fd3c5d] .p-datatable { max-width: 100%; } -/* 视口条件 (width<=600px) 下的响应式覆盖;保留相对基础规则的层叠顺序。 */ -@media (width<=600px) { +/* 视口条件 (width<=640px) 下的响应式覆盖;保留相对基础规则的层叠顺序。 */ +@media (width<=640px) { .common-body[data-v-34fd3c5d] { padding: 16px; } diff --git a/app/assets/styles/ConfigBandwidth.CWSH1WJZ.css b/app/assets/styles/ConfigBandwidth.CWSH1WJZ.css index b27509d..7ce1a37 100644 --- a/app/assets/styles/ConfigBandwidth.CWSH1WJZ.css +++ b/app/assets/styles/ConfigBandwidth.CWSH1WJZ.css @@ -40,7 +40,7 @@ .bandwidth-capacity[data-v-45a9c613] { border: 1px solid var(--p-content-border-color); background: var(--p-content-background); - border-radius: 6px; + border-radius: var(--radius-md); width: 100%; min-width: 0; display: flex; @@ -82,7 +82,7 @@ background: var(--p-content-border-color); cursor: pointer; border: 0; - border-radius: 4px; + border-radius: var(--radius-sm); width: calc(100% - 14px); height: 3px; margin: 16px 7px 9px; @@ -117,8 +117,8 @@ .bandwidth-capacity.is-disabled[data-v-45a9c613] { opacity: 0.6; } -/* 视口条件 (width<=639px) 下的响应式覆盖;保留相对基础规则的层叠顺序。 */ -@media (width<=639px) { +/* 视口条件 (width<640px) 下的响应式覆盖;保留相对基础规则的层叠顺序。 */ +@media (width<640px) { .bandwidth-field[data-v-45a9c613] { max-width: none; } diff --git a/app/assets/styles/ConfigDiskAdd.C92e9ZuF.css b/app/assets/styles/ConfigDiskAdd.C92e9ZuF.css index 7fdf2f8..3800b0c 100644 --- a/app/assets/styles/ConfigDiskAdd.C92e9ZuF.css +++ b/app/assets/styles/ConfigDiskAdd.C92e9ZuF.css @@ -8,7 +8,7 @@ font: inherit; cursor: pointer; background: 0 0; - border-radius: 8px; + border-radius: var(--radius-md); flex-direction: column; justify-content: center; align-items: center; @@ -41,8 +41,8 @@ cursor: not-allowed; opacity: 0.55; } -/* 视口条件 (width<=639px) 下的响应式覆盖;保留相对基础规则的层叠顺序。 */ -@media (width<=639px) { +/* 视口条件 (width<640px) 下的响应式覆盖;保留相对基础规则的层叠顺序。 */ +@media (width<640px) { .storage-add[data-v-68361f8e] { min-height: 170px; } diff --git a/app/assets/styles/ConfigDiskCard.Dx9IqqQ_.css b/app/assets/styles/ConfigDiskCard.Dx9IqqQ_.css index ee482e0..3ee89f9 100644 --- a/app/assets/styles/ConfigDiskCard.Dx9IqqQ_.css +++ b/app/assets/styles/ConfigDiskCard.Dx9IqqQ_.css @@ -16,7 +16,7 @@ min-width: 0; box-shadow: 0 2px 5px color-mix(in srgb, var(--p-primary-color) 15%, transparent); - border-radius: 8px; + border-radius: var(--radius-md); flex-direction: column; gap: 20px; padding: 16px; @@ -40,7 +40,7 @@ .storage-capacity[data-v-83c644c5] { border: 1px solid var(--p-content-border-color); background: var(--p-content-background); - border-radius: 6px; + border-radius: var(--radius-md); width: 100%; min-width: 0; display: flex; @@ -82,7 +82,7 @@ background: var(--p-content-border-color); cursor: pointer; border: 0; - border-radius: 4px; + border-radius: var(--radius-sm); width: 100%; height: 3px; margin: 9px 0; @@ -128,7 +128,7 @@ cursor: pointer; background: 0 0; border: 0; - border-radius: 4px; + border-radius: var(--radius-sm); flex-shrink: 0; justify-content: center; align-items: center; @@ -148,8 +148,8 @@ opacity: 0.5; cursor: not-allowed; } -/* 视口条件 (width<=639px) 下的响应式覆盖;保留相对基础规则的层叠顺序。 */ -@media (width<=639px) { +/* 视口条件 (width<640px) 下的响应式覆盖;保留相对基础规则的层叠顺序。 */ +@media (width<640px) { .storage-card[data-v-83c644c5] { gap: 20px; padding: 16px; diff --git a/app/assets/styles/ConsoleLegalFooter.DAYWmXIB.css b/app/assets/styles/ConsoleLegalFooter.DAYWmXIB.css index 1d25588..f64e2c0 100644 --- a/app/assets/styles/ConsoleLegalFooter.DAYWmXIB.css +++ b/app/assets/styles/ConsoleLegalFooter.DAYWmXIB.css @@ -35,12 +35,12 @@ } .legal-footer-inner a[data-v-81b185f4]:focus-visible, .legal-footer-inner a[data-v-81b185f4]:hover { - color: var(--p-primary-color, #3b82f6); + color: var(--p-primary-color); text-underline-offset: 3px; text-decoration: underline; } -/* 视口条件 (width<=1023px) 下的响应式覆盖;保留相对基础规则的层叠顺序。 */ -@media (width<=1023px) { +/* 视口条件 (width<1024px) 下的响应式覆盖;保留相对基础规则的层叠顺序。 */ +@media (width<1024px) { .main:has(.config-mobile-total) .console-legal-footer { margin-bottom: calc(84px + env(safe-area-inset-bottom, 0px)); } diff --git a/app/assets/styles/DcimBilling.QV7PUjnH.css b/app/assets/styles/DcimBilling.QV7PUjnH.css index 37c573b..9d90641 100644 --- a/app/assets/styles/DcimBilling.QV7PUjnH.css +++ b/app/assets/styles/DcimBilling.QV7PUjnH.css @@ -13,7 +13,7 @@ border: 1px solid var(--console-panel-border); background: var(--console-panel-bg); box-shadow: var(--console-panel-shadow); - border-radius: 6px; + border-radius: var(--radius-md); margin: 0; overflow: hidden; } @@ -52,7 +52,7 @@ dd small[data-v-9a8e05c2] { border: 1px solid var(--console-panel-border); background: var(--console-panel-bg); box-shadow: var(--console-panel-shadow); - border-radius: 6px; + border-radius: var(--radius-md); gap: 28px; padding: 14px; display: flex; @@ -72,8 +72,8 @@ dd small[data-v-9a8e05c2] { .form p[data-v-9a8e05c2] { margin: 0; } -/* 视口条件 (width<=600px) 下的响应式覆盖;保留相对基础规则的层叠顺序。 */ -@media (width<=600px) { +/* 视口条件 (width<=640px) 下的响应式覆盖;保留相对基础规则的层叠顺序。 */ +@media (width<=640px) { .rows > div[data-v-9a8e05c2] { grid-template-columns: 95px minmax(0, 1fr); gap: 10px; diff --git a/app/assets/styles/DcimDefence.BYaQccXZ.css b/app/assets/styles/DcimDefence.BYaQccXZ.css index 1f0977f..07916a3 100644 --- a/app/assets/styles/DcimDefence.BYaQccXZ.css +++ b/app/assets/styles/DcimDefence.BYaQccXZ.css @@ -22,7 +22,7 @@ .rows[data-v-2f38c55b] { border: 1px solid var(--console-panel-border); box-shadow: var(--console-panel-shadow); - border-radius: 6px; + border-radius: var(--radius-md); margin: 0; overflow: hidden; } @@ -51,7 +51,7 @@ dd[data-v-2f38c55b] { border: 1px solid var(--console-panel-border); background: var(--console-panel-bg); box-shadow: var(--console-panel-shadow); - border-radius: 6px; + border-radius: var(--radius-md); margin: 0; padding: 28px; } @@ -68,8 +68,8 @@ dd[data-v-2f38c55b] { gap: 7px; display: flex; } -/* 视口条件 (width<=600px) 下的响应式覆盖;保留相对基础规则的层叠顺序。 */ -@media (width<=600px) { +/* 视口条件 (width<=640px) 下的响应式覆盖;保留相对基础规则的层叠顺序。 */ +@media (width<=640px) { .rows > div[data-v-2f38c55b] { grid-template-columns: 100px 1fr; } diff --git a/app/assets/styles/DcimDomains.BT2s5hGW.css b/app/assets/styles/DcimDomains.BT2s5hGW.css index e09d7e4..b1777c3 100644 --- a/app/assets/styles/DcimDomains.BT2s5hGW.css +++ b/app/assets/styles/DcimDomains.BT2s5hGW.css @@ -18,7 +18,7 @@ .domains[data-v-6c2c5ee1] .p-datatable { border: 1px solid var(--console-panel-border); box-shadow: var(--console-panel-shadow); - border-radius: 6px; + border-radius: var(--radius-md); overflow: hidden; } .empty[data-v-6c2c5ee1] { diff --git a/app/assets/styles/DcimManage.BlqFeSOi.css b/app/assets/styles/DcimManage.BlqFeSOi.css index 8296712..2f15a7c 100644 --- a/app/assets/styles/DcimManage.BlqFeSOi.css +++ b/app/assets/styles/DcimManage.BlqFeSOi.css @@ -39,7 +39,7 @@ border: 1px solid var(--console-panel-border); background: var(--console-panel-bg); box-shadow: var(--console-panel-shadow); - border-radius: 6px; + border-radius: var(--radius-md); min-width: 0; padding: 14px; } @@ -132,7 +132,7 @@ .resource-list > div[data-v-e2d08c68] { border: 1px solid var(--console-panel-border); box-shadow: var(--console-panel-shadow); - border-radius: 6px; + border-radius: var(--radius-md); justify-content: space-between; align-items: center; gap: 14px; @@ -251,7 +251,7 @@ background: var(--console-panel-bg); border: 1px solid var(--console-panel-border); box-shadow: var(--console-panel-shadow); - border-radius: 6px; + border-radius: var(--radius-md); margin: 0; overflow: hidden; } @@ -313,7 +313,7 @@ border: 1px solid var(--console-panel-border); width: 100%; box-shadow: var(--console-panel-shadow); - border-radius: 6px; + border-radius: var(--radius-md); overflow: hidden; } .ip-table-cell[data-v-e2d08c68] > .p-button { @@ -346,7 +346,7 @@ .records-table[data-v-e2d08c68] { border: 1px solid var(--console-panel-border); box-shadow: var(--console-panel-shadow); - border-radius: 6px; + border-radius: var(--radius-md); overflow: hidden; } .empty[data-v-e2d08c68] { @@ -365,10 +365,10 @@ padding-top: 14px; } .mono[data-v-e2d08c68] { - font-family: var(--font-mono, monospace); + font-variant-numeric: tabular-nums; } -/* 视口条件 (width<=1199px) 下的响应式覆盖;保留相对基础规则的层叠顺序。 */ -@media (width<=1199px) { +/* 视口条件 (width<1200px) 下的响应式覆盖;保留相对基础规则的层叠顺序。 */ +@media (width<1200px) { .overview[data-v-e2d08c68], .stack[data-v-e2d08c68] { gap: 14px; @@ -391,8 +391,8 @@ display: grid; } } -/* 视口条件 (width<=600px) 下的响应式覆盖;保留相对基础规则的层叠顺序。 */ -@media (width<=600px) { +/* 视口条件 (width<=640px) 下的响应式覆盖;保留相对基础规则的层叠顺序。 */ +@media (width<=640px) { .overview[data-v-e2d08c68] { grid-template-columns: 1fr; } diff --git a/app/assets/styles/DcimMonitor.CiStTCbZ.css b/app/assets/styles/DcimMonitor.CiStTCbZ.css index 252d38f..a250deb 100644 --- a/app/assets/styles/DcimMonitor.CiStTCbZ.css +++ b/app/assets/styles/DcimMonitor.CiStTCbZ.css @@ -23,7 +23,7 @@ border: 1px solid var(--console-panel-border); background: var(--console-panel-bg); box-shadow: var(--console-panel-shadow); - border-radius: 6px; + border-radius: var(--radius-md); padding: 14px; } .range[data-v-eb47944f] { diff --git a/app/assets/styles/DcimReinstallStatus.CuXeXmZ3.css b/app/assets/styles/DcimReinstallStatus.CuXeXmZ3.css index 2d04461..06a6314 100644 --- a/app/assets/styles/DcimReinstallStatus.CuXeXmZ3.css +++ b/app/assets/styles/DcimReinstallStatus.CuXeXmZ3.css @@ -14,8 +14,8 @@ color: var(--p-red-600); overflow: hidden; } -/* 视口条件 (width<=600px) 下的响应式覆盖;保留相对基础规则的层叠顺序。 */ -@media (width<=600px) { +/* 视口条件 (width<=640px) 下的响应式覆盖;保留相对基础规则的层叠顺序。 */ +@media (width<=640px) { .task-status[data-v-d99d9473] { align-content: center; min-height: 70px; diff --git a/app/assets/styles/DcimUpgrade.DaLApYFa.css b/app/assets/styles/DcimUpgrade.DaLApYFa.css index 68d0687..f2fced7 100644 --- a/app/assets/styles/DcimUpgrade.DaLApYFa.css +++ b/app/assets/styles/DcimUpgrade.DaLApYFa.css @@ -10,7 +10,7 @@ } .dcim-upgrade fieldset[data-v-790898bc] { border: 1px solid var(--p-content-border-color); - border-radius: 6px; + border-radius: var(--radius-md); gap: 12px; display: grid; } diff --git a/app/assets/styles/FinanceConfig.CLwX1CC8.css b/app/assets/styles/FinanceConfig.CLwX1CC8.css index e27ecfc..f1f380d 100644 --- a/app/assets/styles/FinanceConfig.CLwX1CC8.css +++ b/app/assets/styles/FinanceConfig.CLwX1CC8.css @@ -30,8 +30,8 @@ color: var(--p-text-muted-color); font-size: 1rem; } -/* 视口条件 (width<=639px) 下的响应式覆盖;保留相对基础规则的层叠顺序。 */ -@media (width<=639px) { +/* 视口条件 (width<640px) 下的响应式覆盖;保留相对基础规则的层叠顺序。 */ +@media (width<640px) { .storage-grid[data-v-1ac7876b] { grid-template-columns: minmax(0, 1fr); } diff --git a/app/assets/styles/FlowPacketPanel.-RJSx13z.css b/app/assets/styles/FlowPacketPanel.-RJSx13z.css index 59800c8..638f031 100644 --- a/app/assets/styles/FlowPacketPanel.-RJSx13z.css +++ b/app/assets/styles/FlowPacketPanel.-RJSx13z.css @@ -21,7 +21,7 @@ border: 1px solid var(--console-panel-border); box-shadow: var(--console-panel-shadow); background: var(--console-panel-bg); - border-radius: 6px; + border-radius: var(--radius-md); overflow: hidden; } .kv[data-v-ca0029df] { @@ -65,8 +65,8 @@ padding: 0; font-size: 1rem; } -/* 视口条件 (width<=767px) 下的响应式覆盖;保留相对基础规则的层叠顺序。 */ -@media (width<=767px) { +/* 视口条件 (width<768px) 下的响应式覆盖;保留相对基础规则的层叠顺序。 */ +@media (width<768px) { .kv[data-v-ca0029df] { grid-template-columns: 100px minmax(0, 1fr); } @@ -104,7 +104,7 @@ .pk-card[data-v-ca0029df] { border: 1px solid var(--p-content-border-color, #e2e8f0); text-align: center; - border-radius: 12px; + border-radius: var(--radius-lg); flex-direction: column; align-items: center; gap: 6px; diff --git a/app/assets/styles/GenericOAuthProviders.Bv8oNwXP.css b/app/assets/styles/GenericOAuthProviders.Bv8oNwXP.css index 6fad7f3..eca3d1b 100644 --- a/app/assets/styles/GenericOAuthProviders.Bv8oNwXP.css +++ b/app/assets/styles/GenericOAuthProviders.Bv8oNwXP.css @@ -20,5 +20,5 @@ } .oauth-providers a[data-v-45e5a5aa] { color: var(--p-primary-color); - font-size: 13px; + font-size: 1rem; } diff --git a/app/assets/styles/GlobalSearch.BQqObidy.css b/app/assets/styles/GlobalSearch.BQqObidy.css index 85fa5d5..647a5ee 100644 --- a/app/assets/styles/GlobalSearch.BQqObidy.css +++ b/app/assets/styles/GlobalSearch.BQqObidy.css @@ -10,7 +10,7 @@ width: 220px; height: 32px; color: var(--p-text-muted-color, #94a3b8); - border-radius: 8px; + border-radius: var(--radius-md); align-items: center; gap: 6px; padding: 0 10px; @@ -34,7 +34,7 @@ background: var(--p-content-background); border: 1px solid var(--p-content-border-color, #e2e8f0); z-index: 200; - border-radius: 10px; + border-radius: var(--radius-lg); width: min(320px, 100vw - 32px); max-height: 380px; padding: 6px; @@ -87,7 +87,7 @@ cursor: pointer; background: 0 0; border: 0; - border-radius: 6px; + border-radius: var(--radius-md); flex-direction: column; gap: 2px; width: 100%; diff --git a/app/assets/styles/HomeNoticePanel.e5-qgzAs.css b/app/assets/styles/HomeNoticePanel.e5-qgzAs.css index 6017ad1..c271a5d 100644 --- a/app/assets/styles/HomeNoticePanel.e5-qgzAs.css +++ b/app/assets/styles/HomeNoticePanel.e5-qgzAs.css @@ -30,13 +30,13 @@ border-bottom: none; } .notice-row:hover .notice-title[data-v-a93c47c1] { - color: var(--p-primary-color, #0052d9); + color: var(--p-primary-color); } /* 键盘操作的可见焦点:不要只保留鼠标 hover 效果而移除此反馈。 */ .notice-row[data-v-a93c47c1]:focus-visible { - outline: 2px solid var(--p-primary-color, #0052d9); + outline: 2px solid var(--p-primary-color); outline-offset: -2px; - border-radius: 4px; + border-radius: var(--radius-sm); } .detail-time[data-v-a93c47c1] { color: var(--p-text-muted-color, #94a3b8); diff --git a/app/assets/styles/HomeServerPanel.Do7AgMDx.css b/app/assets/styles/HomeServerPanel.Do7AgMDx.css index e2b07ef..0aec5ad 100644 --- a/app/assets/styles/HomeServerPanel.Do7AgMDx.css +++ b/app/assets/styles/HomeServerPanel.Do7AgMDx.css @@ -18,7 +18,7 @@ white-space: nowrap; background: 0 0; border: none; - border-radius: 4px; + border-radius: var(--radius-sm); flex: 1; padding: 7px 10px; font-size: 1rem; @@ -78,8 +78,8 @@ .server-pagination[data-v-7ce76df7] .p-paginator { background: 0 0; } -/* 视口条件 (width<=639px) 下的响应式覆盖;保留相对基础规则的层叠顺序。 */ -@media (width<=639px) { +/* 视口条件 (width<640px) 下的响应式覆盖;保留相对基础规则的层叠顺序。 */ +@media (width<640px) { .server-head[data-v-7ce76df7] { flex-wrap: wrap; gap: 2px; diff --git a/app/assets/styles/HomeTicketStat.C4kzybrY.css b/app/assets/styles/HomeTicketStat.C4kzybrY.css index b945afa..75a6dd2 100644 --- a/app/assets/styles/HomeTicketStat.C4kzybrY.css +++ b/app/assets/styles/HomeTicketStat.C4kzybrY.css @@ -10,7 +10,7 @@ border: 1px solid var(--p-content-border-color, #e2e8f0); background: var(--p-content-background); border-left-width: 3px; - border-radius: 8px; + border-radius: var(--radius-md); align-items: baseline; gap: 8px; padding: 10px 12px; diff --git a/app/assets/styles/HomeWalletCard.C5SHzGlJ.css b/app/assets/styles/HomeWalletCard.C5SHzGlJ.css index 3bc33a1..c329f6b 100644 --- a/app/assets/styles/HomeWalletCard.C5SHzGlJ.css +++ b/app/assets/styles/HomeWalletCard.C5SHzGlJ.css @@ -14,7 +14,8 @@ color: var(--p-text-color); margin-top: 7px; font-size: 1.75rem; - font-weight: 400; + font-weight: 600; + font-variant-numeric: tabular-nums; line-height: 2.571rem; } .wallet-actions[data-v-0dbd1f86] { @@ -30,8 +31,14 @@ .wallet-actions[data-v-0dbd1f86] .p-button { min-height: 36px; } -/* 视口条件 (width<=639px) 下的响应式覆盖;保留相对基础规则的层叠顺序。 */ -@media (width<=639px) { +.wallet-hint[data-v-0dbd1f86] { + color: var(--p-text-muted-color); + margin-top: 8px; + font-size: 0.8125rem; + text-align: center; +} +/* 视口条件 (width<640px) 下的响应式覆盖;保留相对基础规则的层叠顺序。 */ +@media (width<640px) { .wallet-body[data-v-0dbd1f86] { padding-top: 28px; } diff --git a/app/assets/styles/HostList.B3U15sJm.css b/app/assets/styles/HostList.B3U15sJm.css index a50eee5..33eb3a3 100644 --- a/app/assets/styles/HostList.B3U15sJm.css +++ b/app/assets/styles/HostList.B3U15sJm.css @@ -11,7 +11,7 @@ background: var(--p-primary-color); min-height: 36px; color: var(--p-primary-contrast-color); - border-radius: 5px; + border-radius: var(--radius-md); justify-content: center; align-items: center; gap: 8px; @@ -57,7 +57,7 @@ } /* 键盘操作的可见焦点:不要只保留鼠标 hover 效果而移除此反馈。 */ .host-detail-link[data-v-e23fddb0]:focus-visible { - outline: 2px solid var(--p-primary-color, #0052d9); + outline: 2px solid var(--p-primary-color); outline-offset: 4px; } .host-name[data-v-e23fddb0] { @@ -182,7 +182,7 @@ width: 36px; height: 36px; color: var(--traffic-accent); - border-radius: 8px; + border-radius: var(--radius-md); flex-shrink: 0; place-items: center; font-size: 1.75rem; @@ -334,3 +334,145 @@ min-width: 0; } } +@media (width<640px) { + .list-table[data-v-e23fddb0] + .p-datatable-tbody + > tr:not(.p-datatable-empty-message) { + grid-template-columns: 20px minmax(0, 1fr) auto; + grid-template-areas: "check name status" "check prod os" "check flow flow" "check ip due"; + align-items: center; + gap: 6px 10px; + padding: 14px 16px; + display: grid; + } + .list-table[data-v-e23fddb0] + .p-datatable-tbody + > tr:not(.p-datatable-empty-message) + > td { + text-align: left; + justify-content: flex-start; + gap: 4px; + padding: 0 !important; + font-size: 0.875rem; + display: none; + position: static; + } + .list-table[data-v-e23fddb0] + .p-datatable-tbody + > tr:not(.p-datatable-empty-message) + > td::before { + display: none; + } + .list-table[data-v-e23fddb0] + .p-datatable-tbody + > tr:not(.p-datatable-empty-message) + > td:first-child { + grid-area: check; + display: flex; + align-self: start; + margin-top: 2px; + } + .list-table[data-v-e23fddb0] + .p-datatable-tbody + > tr:not(.p-datatable-empty-message) + > td[data-label="操作系统"] { + grid-area: os; + display: flex; + justify-content: flex-end; + } + .list-table[data-v-e23fddb0] + .p-datatable-tbody + > tr:not(.p-datatable-empty-message) + > td[data-label="产品编号"] { + grid-area: name; + display: flex; + color: var(--p-text-color); + font-size: 1rem; + font-weight: 600; + } + .list-table[data-v-e23fddb0] + .p-datatable-tbody + > tr:not(.p-datatable-empty-message) + > td[data-label="产品状态"] { + grid-area: status; + display: flex; + justify-content: flex-end; + } + .list-table[data-v-e23fddb0] + .p-datatable-tbody + > tr:not(.p-datatable-empty-message) + > td[data-label="名称"] { + grid-area: prod; + display: flex; + color: var(--p-text-muted-color); + } + .list-table[data-v-e23fddb0] + .p-datatable-tbody + > tr:not(.p-datatable-empty-message) + > td[data-label="流量"] { + grid-area: flow; + display: flex; + margin: 4px 0; + } + .list-table[data-v-e23fddb0] + .p-datatable-tbody + > tr:not(.p-datatable-empty-message) + > td[data-label="ID"] { + grid-area: id; + display: none; + color: var(--p-text-muted-color); + } + .list-table[data-v-e23fddb0] + .p-datatable-tbody + > tr:not(.p-datatable-empty-message) + > td[data-label="IP"] { + grid-area: ip; + display: flex; + color: var(--p-text-muted-color); + } + .list-table[data-v-e23fddb0] + .p-datatable-tbody + > tr:not(.p-datatable-empty-message) + > td[data-label="到期时间"] { + grid-area: due; + display: flex; + color: var(--p-text-muted-color); + justify-content: flex-end; + } + .list-table[data-v-e23fddb0] + .p-datatable-tbody + > tr:not(.p-datatable-empty-message) + > td[data-label="到期时间"]::before { + content: "到期 "; + color: var(--p-text-muted-color); + font-size: 0.875rem; + display: inline; + } + .list-table[data-v-e23fddb0] td[data-label="流量"] > * { + flex: 1; + } + .list-table[data-v-e23fddb0] td[data-label="名称"] > * { + align-items: flex-start; + text-align: left; + } + .list-table[data-v-e23fddb0] + .p-datatable-tbody + > tr:not(.p-datatable-empty-message) + > td[data-label="到期时间"] { + white-space: nowrap !important; + } + .list-table[data-v-e23fddb0] + .p-datatable-tbody + > tr:not(.p-datatable-empty-message) + > td[data-label="ID"] + * { + color: var(--p-text-muted-color); + font-weight: 400; + } + .list-table[data-v-e23fddb0] + .p-datatable-tbody + > tr:not(.p-datatable-empty-message) + > td[data-label="流量"]:has(> .host-traffic > .traffic-note:only-child) { + display: none; + } +} diff --git a/app/assets/styles/InstanceAccess.DIZBrksv.css b/app/assets/styles/InstanceAccess.DIZBrksv.css index 51bb30e..b9724ac 100644 --- a/app/assets/styles/InstanceAccess.DIZBrksv.css +++ b/app/assets/styles/InstanceAccess.DIZBrksv.css @@ -27,7 +27,7 @@ border: 1px solid var(--console-panel-border); box-shadow: var(--console-panel-shadow); background: var(--console-panel-bg); - border-radius: 6px; + border-radius: var(--radius-md); overflow: hidden; } .kv[data-v-cd28d8b4] { @@ -74,7 +74,7 @@ cursor: pointer; background: 0 0; border: 0; - border-radius: 4px; + border-radius: var(--radius-sm); flex-shrink: 0; justify-content: center; align-items: center; @@ -98,7 +98,7 @@ } .repair-item[data-v-cd28d8b4] { border: 1px solid var(--p-content-border-color, #e2e8f0); - border-radius: 10px; + border-radius: var(--radius-lg); flex-direction: column; gap: 8px; padding: 14px 16px; @@ -130,7 +130,7 @@ var(--console-panel-bg) ); color: var(--p-primary-color); - border-radius: 6px; + border-radius: var(--radius-md); margin-bottom: 14px; padding: 14px; font-size: 1rem; diff --git a/app/assets/styles/InstanceBilling.CvIGLT2J.css b/app/assets/styles/InstanceBilling.CvIGLT2J.css index 91b6e99..c5b6412 100644 --- a/app/assets/styles/InstanceBilling.CvIGLT2J.css +++ b/app/assets/styles/InstanceBilling.CvIGLT2J.css @@ -20,7 +20,7 @@ border: 1px solid var(--console-panel-border); box-shadow: var(--console-panel-shadow); background: var(--console-panel-bg); - border-radius: 6px; + border-radius: var(--radius-md); overflow: hidden; } .kv[data-v-4e83e0f6] { @@ -79,11 +79,11 @@ background: var(--console-panel-bg); border: 1px solid var(--console-panel-border); box-shadow: var(--console-panel-shadow); - border-radius: 6px; + border-radius: var(--radius-md); padding: 14px; } -/* 视口条件 (width<=767px) 下的响应式覆盖;保留相对基础规则的层叠顺序。 */ -@media (width<=767px) { +/* 视口条件 (width<768px) 下的响应式覆盖;保留相对基础规则的层叠顺序。 */ +@media (width<768px) { .kv[data-v-4e83e0f6] { grid-template-columns: 100px minmax(0, 1fr); } @@ -128,7 +128,7 @@ } .refund-state[data-v-4e83e0f6] { background: var(--p-content-hover-background); - border-radius: 8px; + border-radius: var(--radius-md); flex-direction: column; gap: 10px; padding: 12px 14px; diff --git a/app/assets/styles/InstanceDisks.Ca7NZxYd.css b/app/assets/styles/InstanceDisks.Ca7NZxYd.css index 3ef954c..e823b80 100644 --- a/app/assets/styles/InstanceDisks.Ca7NZxYd.css +++ b/app/assets/styles/InstanceDisks.Ca7NZxYd.css @@ -90,7 +90,7 @@ background: var(--console-panel-bg); border: 1px solid var(--console-panel-border); box-shadow: var(--console-panel-shadow); - border-radius: 6px; + border-radius: var(--radius-md); } .grp[data-v-22ec0282] .p-datatable-thead > tr > th { background: var(--console-page-bg); diff --git a/app/assets/styles/InstanceLoadingShell.CwfiUwdU.css b/app/assets/styles/InstanceLoadingShell.CwfiUwdU.css index b39b7c0..86651ed 100644 --- a/app/assets/styles/InstanceLoadingShell.CwfiUwdU.css +++ b/app/assets/styles/InstanceLoadingShell.CwfiUwdU.css @@ -31,7 +31,7 @@ background: var(--console-panel-bg); border: 1px solid var(--console-panel-border); box-shadow: var(--console-panel-shadow); - border-radius: 6px; + border-radius: var(--radius-md); gap: 12px; padding: 14px; } @@ -46,15 +46,15 @@ .shell-secondary[data-v-f12d9300] { min-height: 230px; } -/* 视口条件 (width<=1199px) 下的响应式覆盖;保留相对基础规则的层叠顺序。 */ -@media (width<=1199px) { +/* 视口条件 (width<1200px) 下的响应式覆盖;保留相对基础规则的层叠顺序。 */ +@media (width<1200px) { .dcim .shell-column[data-v-f12d9300], .dcim .shell-grid[data-v-f12d9300] { gap: 14px; } } -/* 视口条件 (width<=1023px) 下的响应式覆盖;保留相对基础规则的层叠顺序。 */ -@media (width<=1023px) { +/* 视口条件 (width<1024px) 下的响应式覆盖;保留相对基础规则的层叠顺序。 */ +@media (width<1024px) { .instance-loading-shell:not(.dcim) .shell-grid[data-v-f12d9300] { grid-template-columns: 1fr; } @@ -70,8 +70,8 @@ display: grid; } } -/* 视口条件 (width<=600px) 下的响应式覆盖;保留相对基础规则的层叠顺序。 */ -@media (width<=600px) { +/* 视口条件 (width<=640px) 下的响应式覆盖;保留相对基础规则的层叠顺序。 */ +@media (width<=640px) { .dcim .shell-grid[data-v-f12d9300] { grid-template-columns: 1fr; padding-top: 14px; diff --git a/app/assets/styles/InstanceMonitor.B0X15iQt.css b/app/assets/styles/InstanceMonitor.B0X15iQt.css index 81d858b..9902fd6 100644 --- a/app/assets/styles/InstanceMonitor.B0X15iQt.css +++ b/app/assets/styles/InstanceMonitor.B0X15iQt.css @@ -22,14 +22,14 @@ border: 1px solid var(--p-content-border-color, #e2e8f0); min-width: 0; box-shadow: var(--console-panel-shadow); - border-radius: 6px; + border-radius: var(--radius-md); padding: 14px; } .chart-title[data-v-6a900feb] { border-bottom: 1px solid var(--console-panel-border); min-height: 24px; - margin-bottom: 21px; - padding-bottom: 21px; + margin-bottom: 14px; + padding-bottom: 12px; font-size: 1rem; font-weight: 600; } @@ -64,3 +64,8 @@ color: var(--p-text-muted-color, #94a3b8); font-size: 0.875rem; } +@media (width>=1280px) { + .charts[data-v-6a900feb] { + grid-template-columns: repeat(2, minmax(0, 1fr)); + } +} diff --git a/app/assets/styles/InstanceMonitorSkeleton.C0FT51jJ.css b/app/assets/styles/InstanceMonitorSkeleton.C0FT51jJ.css index fea7573..bd63033 100644 --- a/app/assets/styles/InstanceMonitorSkeleton.C0FT51jJ.css +++ b/app/assets/styles/InstanceMonitorSkeleton.C0FT51jJ.css @@ -28,7 +28,7 @@ border: 1px solid var(--console-panel-border); box-shadow: var(--console-panel-shadow); background: var(--console-panel-bg); - border-radius: 6px; + border-radius: var(--radius-md); min-width: 0; padding: 14px; } diff --git a/app/assets/styles/InstanceNetwork.CyucZaZp.css b/app/assets/styles/InstanceNetwork.CyucZaZp.css index 87bcfb1..26e8477 100644 --- a/app/assets/styles/InstanceNetwork.CyucZaZp.css +++ b/app/assets/styles/InstanceNetwork.CyucZaZp.css @@ -45,7 +45,7 @@ .nw[data-v-aa906366] .network-table { border: 1px solid var(--console-panel-border); background: var(--console-panel-bg); - border-radius: 6px; + border-radius: var(--radius-md); overflow: hidden; } .nw[data-v-aa906366] .network-table.p-datatable .p-datatable-tbody > tr > td, @@ -67,8 +67,8 @@ .nw[data-v-aa906366] .network-table .empty { padding: 0; } -/* 视口条件 (width<=767px) 下的响应式覆盖;保留相对基础规则的层叠顺序。 */ -@media (width<=767px) { +/* 视口条件 (width<768px) 下的响应式覆盖;保留相对基础规则的层叠顺序。 */ +@media (width<768px) { .nw[data-v-aa906366] .network-head { align-items: flex-start; } @@ -136,7 +136,7 @@ border: 1px solid var(--console-panel-border); box-shadow: var(--console-panel-shadow); background: var(--console-panel-bg); - border-radius: 6px; + border-radius: var(--radius-md); overflow: hidden; } .info-table .kv[data-v-aa906366] { @@ -157,8 +157,8 @@ .info-table .kv > span[data-v-aa906366] { font-weight: 600; } -/* 视口条件 (width<=767px) 下的响应式覆盖;保留相对基础规则的层叠顺序。 */ -@media (width<=767px) { +/* 视口条件 (width<768px) 下的响应式覆盖;保留相对基础规则的层叠顺序。 */ +@media (width<768px) { .info-table .kv[data-v-aa906366] { grid-template-columns: 100px minmax(0, 1fr); } diff --git a/app/assets/styles/InstanceOnDemand.okGWwgIJ.css b/app/assets/styles/InstanceOnDemand.okGWwgIJ.css index 63e2a15..fb5a332 100644 --- a/app/assets/styles/InstanceOnDemand.okGWwgIJ.css +++ b/app/assets/styles/InstanceOnDemand.okGWwgIJ.css @@ -2,7 +2,7 @@ /* 导入方:app/components/instance/InstanceOnDemand.vue。 */ .on-demand[data-v-2710106c] { gap: 12px; - font-size: 13px; + font-size: 1rem; display: grid; } .on-demand h4[data-v-2710106c], @@ -11,7 +11,7 @@ } .on-demand small[data-v-2710106c] { color: var(--p-text-muted-color); - font-size: 12px; + font-size: 0.9375rem; } .actions[data-v-2710106c] { flex-wrap: wrap; @@ -22,6 +22,6 @@ align-items: center; gap: 8px; margin-top: 12px; - font-size: 13px; + font-size: 1rem; display: flex; } diff --git a/app/assets/styles/InstanceOverview.C9ExpxMB.css b/app/assets/styles/InstanceOverview.C9ExpxMB.css index 8bebd9e..9fa8b1e 100644 --- a/app/assets/styles/InstanceOverview.C9ExpxMB.css +++ b/app/assets/styles/InstanceOverview.C9ExpxMB.css @@ -24,7 +24,7 @@ background: var(--console-panel-bg); border: 1px solid var(--p-content-border-color, #e2e8f0); box-shadow: var(--console-panel-shadow); - border-radius: 6px; + border-radius: var(--radius-md); gap: 12px; padding: 14px; } @@ -41,7 +41,7 @@ cursor: pointer; background: 0 0; border: 0; - border-radius: 4px; + border-radius: var(--radius-sm); width: 100%; padding: 0; } @@ -84,7 +84,7 @@ cursor: pointer; background: 0 0; border: 0; - border-radius: 4px; + border-radius: var(--radius-sm); flex-shrink: 0; justify-content: center; padding: 0; @@ -131,7 +131,7 @@ border: 1px solid var(--console-panel-border); box-shadow: var(--console-panel-shadow); color: var(--p-text-muted-color, #64748b); - border-radius: 6px; + border-radius: var(--radius-md); align-items: center; padding: 14px; font-size: 1rem; @@ -193,7 +193,7 @@ .disk-row[data-v-fe24aa37] { border: 1px solid var(--console-panel-border); box-shadow: var(--console-panel-shadow); - border-radius: 6px; + border-radius: var(--radius-md); align-items: center; gap: 10px; padding: 14px; @@ -237,8 +237,8 @@ margin: 0; font-size: 0.875rem; } -/* 视口条件 (width<=1023px) 下的响应式覆盖;保留相对基础规则的层叠顺序。 */ -@media (width<=1023px) { +/* 视口条件 (width<1024px) 下的响应式覆盖;保留相对基础规则的层叠顺序。 */ +@media (width<1024px) { .grid[data-v-fe24aa37] { grid-template-columns: 1fr; } diff --git a/app/assets/styles/InstanceRenewDialog.BHDAL6d3.css b/app/assets/styles/InstanceRenewDialog.BHDAL6d3.css index 0002d31..165abd2 100644 --- a/app/assets/styles/InstanceRenewDialog.BHDAL6d3.css +++ b/app/assets/styles/InstanceRenewDialog.BHDAL6d3.css @@ -60,10 +60,10 @@ .rd-code[data-v-01429388] { overflow-wrap: anywhere; background: var(--p-content-hover-background); - border-radius: 6px; + border-radius: var(--radius-md); min-width: 0; padding: 4px 10px; - font-family: ui-monospace, SFMono-Regular, Menlo, monospace; + font-family: var(--font-mono); font-size: 0.9375rem; } .rd-hint[data-v-01429388] { diff --git a/app/assets/styles/InstanceServiceInfo.BftSVIeW.css b/app/assets/styles/InstanceServiceInfo.BftSVIeW.css index 1ee6055..6a7cf28 100644 --- a/app/assets/styles/InstanceServiceInfo.BftSVIeW.css +++ b/app/assets/styles/InstanceServiceInfo.BftSVIeW.css @@ -3,7 +3,7 @@ .service-info[data-v-0ff5d554] { background: var(--console-panel-bg); border: 1px solid var(--console-panel-border); - border-radius: 6px; + border-radius: var(--radius-md); padding: 21px; } .service-heading[data-v-0ff5d554] { @@ -56,8 +56,8 @@ dd[data-v-0ff5d554] { margin: 0; line-height: 1.7; } -/* 视口条件 (width<=767px) 下的响应式覆盖;保留相对基础规则的层叠顺序。 */ -@media (width<=767px) { +/* 视口条件 (width<768px) 下的响应式覆盖;保留相对基础规则的层叠顺序。 */ +@media (width<768px) { .service-rows[data-v-0ff5d554] { grid-template-columns: 1fr; } diff --git a/app/assets/styles/InstanceTraffic.CyyEAXl3.css b/app/assets/styles/InstanceTraffic.CyyEAXl3.css index ee38ec0..2541112 100644 --- a/app/assets/styles/InstanceTraffic.CyyEAXl3.css +++ b/app/assets/styles/InstanceTraffic.CyyEAXl3.css @@ -51,7 +51,7 @@ border: 1px solid var(--console-panel-border); box-shadow: var(--console-panel-shadow); background: var(--console-panel-bg); - border-radius: 6px; + border-radius: var(--radius-md); gap: 0; overflow: hidden; } @@ -90,8 +90,8 @@ .traffic-table .traffic-error[data-v-484c7b21] { flex-wrap: wrap; } -/* 视口条件 (width<=767px) 下的响应式覆盖;保留相对基础规则的层叠顺序。 */ -@media (width<=767px) { +/* 视口条件 (width<768px) 下的响应式覆盖;保留相对基础规则的层叠顺序。 */ +@media (width<768px) { .traffic-table .traffic-row[data-v-484c7b21] { grid-template-columns: 100px minmax(0, 1fr); } diff --git a/app/assets/styles/JyCloudConfig.kGfttaHi.css b/app/assets/styles/JyCloudConfig.kGfttaHi.css index 1a1d085..de743e0 100644 --- a/app/assets/styles/JyCloudConfig.kGfttaHi.css +++ b/app/assets/styles/JyCloudConfig.kGfttaHi.css @@ -59,7 +59,7 @@ .jy-model-table-wrap[data-v-7837d303] { border: 1px solid var(--p-content-border-color); background: var(--p-content-background); - border-radius: 4px; + border-radius: var(--radius-sm); width: 100%; overflow-x: auto; } @@ -182,7 +182,7 @@ border-radius: 0 4px 4px 0; } .jy-defense-options button[data-v-7837d303]:only-child { - border-radius: 4px; + border-radius: var(--radius-sm); } .jy-defense-options button.active[data-v-7837d303] { z-index: 1; @@ -204,8 +204,8 @@ .jy-dcim-config .image-groups[data-v-7837d303] { max-width: 960px; } -/* 视口条件 (width<=767px) 下的响应式覆盖;保留相对基础规则的层叠顺序。 */ -@media (width<=767px) { +/* 视口条件 (width<768px) 下的响应式覆盖;保留相对基础规则的层叠顺序。 */ +@media (width<768px) { .jy-config-row[data-v-7837d303] { grid-template-columns: 1fr; gap: 8px; @@ -225,8 +225,8 @@ gap: 5px 12px; } } -/* 视口条件 (width<=639px) 下的响应式覆盖;保留相对基础规则的层叠顺序。 */ -@media (width<=639px) { +/* 视口条件 (width<640px) 下的响应式覆盖;保留相对基础规则的层叠顺序。 */ +@media (width<640px) { .storage-system[data-v-7837d303] { width: 100%; } diff --git a/app/assets/styles/KkyEcsConfig.BFaAwQPZ.css b/app/assets/styles/KkyEcsConfig.BFaAwQPZ.css index 30792bb..abea8b1 100644 --- a/app/assets/styles/KkyEcsConfig.BFaAwQPZ.css +++ b/app/assets/styles/KkyEcsConfig.BFaAwQPZ.css @@ -22,7 +22,7 @@ width: 196px; min-height: 44px; color: var(--p-text-color); - border-radius: 6px; + border-radius: var(--radius-md); align-items: center; padding: 8px 14px; display: flex; @@ -31,8 +31,8 @@ font-size: 1rem; font-weight: 500; } -/* 视口条件 (width<=639px) 下的响应式覆盖;保留相对基础规则的层叠顺序。 */ -@media (width<=639px) { +/* 视口条件 (width<640px) 下的响应式覆盖;保留相对基础规则的层叠顺序。 */ +@media (width<640px) { .storage-system[data-v-e8ce6418] { width: 100%; } diff --git a/app/assets/styles/KkyUpgrade.CkDmxFBM.css b/app/assets/styles/KkyUpgrade.CkDmxFBM.css index a67dc56..cb08ffd 100644 --- a/app/assets/styles/KkyUpgrade.CkDmxFBM.css +++ b/app/assets/styles/KkyUpgrade.CkDmxFBM.css @@ -7,7 +7,7 @@ } .current[data-v-625e699a] { background: var(--p-content-hover-background); - border-radius: 8px; + border-radius: var(--radius-md); align-items: center; gap: 10px; padding: 10px 14px; @@ -30,7 +30,7 @@ background: var(--p-content-background); color: var(--p-text-muted-color, #64748b); cursor: pointer; - border-radius: 8px; + border-radius: var(--radius-md); align-items: center; gap: 6px; padding: 7px 14px; @@ -46,11 +46,11 @@ } .seg-item.active[data-v-625e699a], .seg-item[data-v-625e699a]:hover { - border-color: var(--p-primary-color, #0052d9); + border-color: var(--p-primary-color); } .seg-item.active[data-v-625e699a] { background: var(--p-highlight-background); - color: var(--p-primary-color, #0052d9); + color: var(--p-primary-color); font-weight: 500; } .sk[data-v-625e699a] { @@ -66,7 +66,7 @@ background: var(--p-content-background); border: 1px solid var(--p-content-border-color, #e2e8f0); cursor: pointer; - border-radius: 10px; + border-radius: var(--radius-lg); flex-direction: column; gap: 8px; padding: 14px 16px; @@ -77,7 +77,7 @@ } .plan.active[data-v-625e699a], .plan[data-v-625e699a]:hover:not(:disabled) { - border-color: var(--p-primary-color, #0052d9); + border-color: var(--p-primary-color); } .plan.active[data-v-625e699a] { background: var(--p-highlight-background); @@ -97,7 +97,7 @@ font-weight: 600; } .plan-check[data-v-625e699a] { - color: var(--p-primary-color, #0052d9); + color: var(--p-primary-color); } .plan-desc[data-v-625e699a] { color: var(--p-text-muted-color, #64748b); @@ -131,7 +131,7 @@ } .sub[data-v-625e699a] { background: var(--p-content-hover-background); - border-radius: 8px; + border-radius: var(--radius-md); align-self: flex-start; gap: 4px; padding: 3px; @@ -142,7 +142,7 @@ cursor: pointer; background: 0 0; border: 0; - border-radius: 6px; + border-radius: var(--radius-md); padding: 5px 14px; font-size: 0.9375rem; } @@ -161,7 +161,7 @@ background: var(--p-content-background); border: 1px solid var(--p-content-border-color, #e2e8f0); cursor: pointer; - border-radius: 10px; + border-radius: var(--radius-lg); align-items: center; gap: 8px; padding: 12px 14px; @@ -173,7 +173,7 @@ } .disk.active[data-v-625e699a], .disk[data-v-625e699a]:hover { - border-color: var(--p-primary-color, #0052d9); + border-color: var(--p-primary-color); } .disk.active[data-v-625e699a] { background: var(--p-highlight-background); diff --git a/app/assets/styles/LegacyDcimManage.5YRq508t.css b/app/assets/styles/LegacyDcimManage.5YRq508t.css index 8a7069f..d4c0b02 100644 --- a/app/assets/styles/LegacyDcimManage.5YRq508t.css +++ b/app/assets/styles/LegacyDcimManage.5YRq508t.css @@ -25,7 +25,7 @@ background: var(--console-panel-bg); border: 1px solid var(--console-panel-border); box-shadow: var(--console-panel-shadow); - border-radius: 6px; + border-radius: var(--radius-md); min-width: 0; padding: 21px; } @@ -95,7 +95,7 @@ } .resource-list > div[data-v-f40d7201] { border: 1px solid var(--console-panel-border); - border-radius: 6px; + border-radius: var(--radius-md); justify-content: space-between; align-items: center; gap: 14px; @@ -146,7 +146,7 @@ background: var(--console-panel-bg); border: 1px solid var(--console-panel-border); box-shadow: var(--console-panel-shadow); - border-radius: 6px; + border-radius: var(--radius-md); margin: 0; overflow: hidden; } @@ -194,10 +194,10 @@ min-width: 100px; } .mono[data-v-f40d7201] { - font-family: var(--font-mono, monospace); + font-variant-numeric: tabular-nums; } -/* 视口条件 (width<=1199px) 下的响应式覆盖;保留相对基础规则的层叠顺序。 */ -@media (width<=1199px) { +/* 视口条件 (width<1200px) 下的响应式覆盖;保留相对基础规则的层叠顺序。 */ +@media (width<1200px) { .overview[data-v-f40d7201], .stack[data-v-f40d7201] { gap: 14px; @@ -220,8 +220,8 @@ display: grid; } } -/* 视口条件 (width<=600px) 下的响应式覆盖;保留相对基础规则的层叠顺序。 */ -@media (width<=600px) { +/* 视口条件 (width<=640px) 下的响应式覆盖;保留相对基础规则的层叠顺序。 */ +@media (width<=640px) { .overview[data-v-f40d7201] { grid-template-columns: 1fr; } diff --git a/app/assets/styles/MfCloudBackupPanel.BTlEe-fy.css b/app/assets/styles/MfCloudBackupPanel.BTlEe-fy.css index 82ed3c1..f604640 100644 --- a/app/assets/styles/MfCloudBackupPanel.BTlEe-fy.css +++ b/app/assets/styles/MfCloudBackupPanel.BTlEe-fy.css @@ -4,7 +4,7 @@ border: 1px solid var(--console-panel-border); box-shadow: var(--console-panel-shadow); background: var(--console-panel-bg); - border-radius: 6px; + border-radius: var(--radius-md); overflow: hidden; } .info-table[data-v-a7ffe460] .p-datatable-thead > tr > th { @@ -37,7 +37,7 @@ } .bs-guide[data-v-a7ffe460] { border: 1px dashed var(--p-content-border-color, #e2e8f0); - border-radius: 10px; + border-radius: var(--radius-lg); flex-direction: column; align-items: flex-start; gap: 10px; diff --git a/app/assets/styles/MfCloudConfig.DbgUu8qr.css b/app/assets/styles/MfCloudConfig.DbgUu8qr.css index 2ccf356..c16cc07 100644 --- a/app/assets/styles/MfCloudConfig.DbgUu8qr.css +++ b/app/assets/styles/MfCloudConfig.DbgUu8qr.css @@ -22,8 +22,8 @@ font-size: 0.875rem; line-height: 1.429rem; } -/* 视口条件 (width<=639px) 下的响应式覆盖;保留相对基础规则的层叠顺序。 */ -@media (width<=639px) { +/* 视口条件 (width<640px) 下的响应式覆盖;保留相对基础规则的层叠顺序。 */ +@media (width<640px) { .storage-system[data-v-8ba1c9ae] { width: 100%; } diff --git a/app/assets/styles/MfCloudLogs.MTqtLGjA.css b/app/assets/styles/MfCloudLogs.MTqtLGjA.css index b88c856..2e72dbf 100644 --- a/app/assets/styles/MfCloudLogs.MTqtLGjA.css +++ b/app/assets/styles/MfCloudLogs.MTqtLGjA.css @@ -32,7 +32,7 @@ } .logs-table[data-v-c4521240] { border: 1px solid var(--console-panel-border); - border-radius: 6px; + border-radius: var(--radius-md); overflow: hidden; } /* 允许连续长文本换行,防止IP、密钥或用户输入撑破当前容器;不会修改原始数据。 */ diff --git a/app/assets/styles/MfCloudNat.C1uXa4fX.css b/app/assets/styles/MfCloudNat.C1uXa4fX.css index 0d8dd73..9d6680d 100644 --- a/app/assets/styles/MfCloudNat.C1uXa4fX.css +++ b/app/assets/styles/MfCloudNat.C1uXa4fX.css @@ -13,5 +13,5 @@ line-height: 1.7; } .form label[data-v-1ff078ab] { - font-size: 13px; + font-size: 1rem; } diff --git a/app/assets/styles/MfCloudResourceUpgrade.bSwLWjPg.css b/app/assets/styles/MfCloudResourceUpgrade.bSwLWjPg.css index f73655b..b9de727 100644 --- a/app/assets/styles/MfCloudResourceUpgrade.bSwLWjPg.css +++ b/app/assets/styles/MfCloudResourceUpgrade.bSwLWjPg.css @@ -14,7 +14,7 @@ } .choices[data-v-c9212028] { border: 1px solid var(--p-content-border-color); - border-radius: 6px; + border-radius: var(--radius-md); grid-template-columns: repeat(auto-fit, minmax(100px, 1fr)); gap: 0; display: grid; diff --git a/app/assets/styles/MfCloudUpgrade.N7TNG8F1.css b/app/assets/styles/MfCloudUpgrade.N7TNG8F1.css index c76405d..5717465 100644 --- a/app/assets/styles/MfCloudUpgrade.N7TNG8F1.css +++ b/app/assets/styles/MfCloudUpgrade.N7TNG8F1.css @@ -7,7 +7,7 @@ } .current[data-v-b98b2e63] { background: var(--p-content-hover-background); - border-radius: 8px; + border-radius: var(--radius-md); align-items: center; gap: 10px; padding: 10px 14px; @@ -30,7 +30,7 @@ background: var(--p-content-background); border: 1px solid var(--p-content-border-color, #e2e8f0); cursor: pointer; - border-radius: 10px; + border-radius: var(--radius-lg); flex-direction: column; gap: 8px; padding: 14px 16px; diff --git a/app/assets/styles/MfCloudVpc.CpOEbuWs.css b/app/assets/styles/MfCloudVpc.CpOEbuWs.css index 8fe052f..4ab9272 100644 --- a/app/assets/styles/MfCloudVpc.CpOEbuWs.css +++ b/app/assets/styles/MfCloudVpc.CpOEbuWs.css @@ -13,5 +13,5 @@ line-height: 1.7; } .form label[data-v-1d12fc4b] { - font-size: 13px; + font-size: 1rem; } diff --git a/app/assets/styles/MfDcimConfig.BhC_eZ0V.css b/app/assets/styles/MfDcimConfig.BhC_eZ0V.css index 4f156ed..8896c89 100644 --- a/app/assets/styles/MfDcimConfig.BhC_eZ0V.css +++ b/app/assets/styles/MfDcimConfig.BhC_eZ0V.css @@ -25,8 +25,8 @@ width: 0; min-width: 0; } -/* 视口条件 (width<=639px) 下的响应式覆盖;保留相对基础规则的层叠顺序。 */ -@media (width<=639px) { +/* 视口条件 (width<640px) 下的响应式覆盖;保留相对基础规则的层叠顺序。 */ +@media (width<640px) { .storage-grid[data-v-b5ff32bb] { grid-template-columns: 1fr; } @@ -34,7 +34,7 @@ .dcim-base[data-v-b5ff32bb] { border: 1px solid var(--p-content-border-color); background: var(--p-content-background); - border-radius: 6px; + border-radius: var(--radius-md); margin-bottom: 21px; padding: 21px; box-shadow: 0 1px 3px #0000001a; @@ -153,8 +153,8 @@ .config-change-fields .form-row[data-v-b5ff32bb] { margin-bottom: 0; } -/* 视口条件 (width<=767px) 下的响应式覆盖;保留相对基础规则的层叠顺序。 */ -@media (width<=767px) { +/* 视口条件 (width<768px) 下的响应式覆盖;保留相对基础规则的层叠顺序。 */ +@media (width<768px) { .config-change-fields[data-v-b5ff32bb] { grid-template-columns: 1fr; gap: 14px; diff --git a/app/assets/styles/NotificationPreferences.DcH8Noxd.css b/app/assets/styles/NotificationPreferences.DcH8Noxd.css index 331e1f6..e54cc15 100644 --- a/app/assets/styles/NotificationPreferences.DcH8Noxd.css +++ b/app/assets/styles/NotificationPreferences.DcH8Noxd.css @@ -3,7 +3,7 @@ .notification-preferences[data-v-f4132ec8] { border: 1px solid var(--console-panel-border); background: var(--console-panel-bg); - border-radius: 8px; + border-radius: var(--radius-md); padding: 16px 20px; } .preferences-heading[data-v-f4132ec8] { diff --git a/app/assets/styles/OperationToasts.DfA_b8om.css b/app/assets/styles/OperationToasts.DfA_b8om.css index d8228ed..5aab307 100644 --- a/app/assets/styles/OperationToasts.DfA_b8om.css +++ b/app/assets/styles/OperationToasts.DfA_b8om.css @@ -11,7 +11,7 @@ border: 1px solid var(--p-content-border-color); -webkit-backdrop-filter: none; backdrop-filter: none; - border-radius: 10px; + border-radius: var(--radius-lg); box-shadow: 0 8px 28px #0f172a1f; } .operation-toasts .p-toast-message-content { @@ -61,8 +61,8 @@ .operation-toast-results li + li { margin-top: 6px; } -/* 视口条件 (width<=600px) 下的响应式覆盖;保留相对基础规则的层叠顺序。 */ -@media (width<=600px) { +/* 视口条件 (width<=640px) 下的响应式覆盖;保留相对基础规则的层叠顺序。 */ +@media (width<=640px) { .operation-toasts.p-toast { top: calc(var(--console-top-offset, 56px) + 12px) !important; right: 12px !important; diff --git a/app/assets/styles/PageInfoNotice._16xRFrB.css b/app/assets/styles/PageInfoNotice._16xRFrB.css index 8b49e83..1969a75 100644 --- a/app/assets/styles/PageInfoNotice._16xRFrB.css +++ b/app/assets/styles/PageInfoNotice._16xRFrB.css @@ -3,7 +3,7 @@ .page-info-notice[data-v-8f81f268] { min-width: 0; box-shadow: none; - border-radius: 6px; + border-radius: var(--radius-md); } .page-info-notice[data-v-8f81f268] .p-message-content { align-items: flex-start; @@ -15,7 +15,7 @@ align-items: center; width: 14px; height: 1.6rem; - font-size: 14px; + font-size: 1.0625rem; display: inline-flex; } /* 允许连续长文本换行,防止IP、密钥或用户输入撑破当前容器;不会修改原始数据。 */ diff --git a/app/assets/styles/PaymentDialog.BNFKQF1U.css b/app/assets/styles/PaymentDialog.BNFKQF1U.css index f30ac75..53b904e 100644 --- a/app/assets/styles/PaymentDialog.BNFKQF1U.css +++ b/app/assets/styles/PaymentDialog.BNFKQF1U.css @@ -22,7 +22,7 @@ border: 1px solid var(--p-content-border-color, #e2e8f0); background: var(--p-content-background); cursor: pointer; - border-radius: 10px; + border-radius: var(--radius-lg); align-items: center; gap: 10px; padding: 12px 14px; @@ -33,7 +33,7 @@ } .gateway-item.active[data-v-4931e21e], .gateway-item[data-v-4931e21e]:hover { - border-color: var(--p-primary-color, #3b82f6); + border-color: var(--p-primary-color); } .gateway-item.active[data-v-4931e21e] { background: var(--p-highlight-background); @@ -66,7 +66,7 @@ padding: 20px 0; } .paid i[data-v-4931e21e] { - color: var(--p-primary-color, #3b82f6); + color: var(--p-primary-color); font-size: 2.75rem; } .paid p[data-v-4931e21e] { @@ -80,7 +80,7 @@ /* 代金券选项及反馈;无可用券和加载状态应与已选中状态清晰区分。 */ .voucher-row[data-v-4931e21e] { border: 1px solid var(--p-content-border-color); - border-radius: 6px; + border-radius: var(--radius-md); flex-direction: column; gap: 10px; min-width: 0; @@ -193,7 +193,7 @@ border-radius: 0 0 6px 6px; } .gateway-list > .gateway-item[data-v-4931e21e]:only-of-type { - border-radius: 6px; + border-radius: var(--radius-md); } .balance-icon[data-v-4931e21e] { text-align: center; diff --git a/app/assets/styles/ProductCategoryNotice.CwaR3eXN.css b/app/assets/styles/ProductCategoryNotice.CwaR3eXN.css index cbcec40..fe85380 100644 --- a/app/assets/styles/ProductCategoryNotice.CwaR3eXN.css +++ b/app/assets/styles/ProductCategoryNotice.CwaR3eXN.css @@ -14,7 +14,7 @@ ); min-width: 0; color: var(--p-text-color); - border-radius: 8px; + border-radius: var(--radius-md); align-items: flex-start; gap: 12px; padding: 16px 20px; @@ -111,8 +111,8 @@ .category-notice-content[data-v-faa6a7a3] > :last-child { margin-bottom: 0; } -/* 视口条件 (width<=760px) 下的响应式覆盖;保留相对基础规则的层叠顺序。 */ -@media (width<=760px) { +/* 视口条件 (width<=768px) 下的响应式覆盖;保留相对基础规则的层叠顺序。 */ +@media (width<=768px) { .category-notice[data-v-faa6a7a3] { gap: 10px; padding: 14px 16px; diff --git a/app/assets/styles/ProductDescription.Ctb7jDuO.css b/app/assets/styles/ProductDescription.Ctb7jDuO.css index 98b3ffe..4bd85b2 100644 --- a/app/assets/styles/ProductDescription.Ctb7jDuO.css +++ b/app/assets/styles/ProductDescription.Ctb7jDuO.css @@ -199,7 +199,7 @@ text-decoration: underline; } .description-rich[data-v-8a6cfb44] img { - border-radius: 4px; + border-radius: var(--radius-sm); max-width: 100%; height: auto; display: block; @@ -231,7 +231,7 @@ .description-rich[data-v-8a6cfb44] pre { white-space: pre-wrap; background: var(--p-content-hover-background); - border-radius: 4px; + border-radius: var(--radius-sm); max-width: 100%; padding: 12px; overflow-x: auto; @@ -253,8 +253,8 @@ .description-rich[data-v-8a6cfb44] > :last-child { margin-bottom: 0; } -/* 视口条件 (width<=760px) 下的响应式覆盖;保留相对基础规则的层叠顺序。 */ -@media (width<=760px) { +/* 视口条件 (width<=768px) 下的响应式覆盖;保留相对基础规则的层叠顺序。 */ +@media (width<=768px) { .description-header[data-v-8a6cfb44] { padding: 10px 20px; } @@ -271,10 +271,10 @@ } .description-field dt[data-v-8a6cfb44] { gap: 8px; - font-size: 14px; + font-size: 1.0625rem; } .description-field dt i[data-v-8a6cfb44] { - font-size: 14px; + font-size: 1.0625rem; } .description-field dd[data-v-8a6cfb44] { font-size: 15px; diff --git a/app/assets/styles/ProductGroupLabel.B1kWpFA-.css b/app/assets/styles/ProductGroupLabel.B1kWpFA-.css index 8bb43c6..ee43060 100644 --- a/app/assets/styles/ProductGroupLabel.B1kWpFA-.css +++ b/app/assets/styles/ProductGroupLabel.B1kWpFA-.css @@ -27,7 +27,7 @@ max-width: 100%; color: var(--p-primary-700); overflow-wrap: anywhere; - border-radius: 5px; + border-radius: var(--radius-md); padding: 1px 7px; font-size: 0.8125rem; font-weight: 600; diff --git a/app/assets/styles/RechargeDialog.DpsMly4r.css b/app/assets/styles/RechargeDialog.DpsMly4r.css index b37de89..34a9e64 100644 --- a/app/assets/styles/RechargeDialog.DpsMly4r.css +++ b/app/assets/styles/RechargeDialog.DpsMly4r.css @@ -21,7 +21,7 @@ color: var(--p-text-color); cursor: pointer; background: 0 0; - border-radius: 5px; + border-radius: var(--radius-md); font-size: 1.0625rem; } .recharge-option.active[data-v-c038cb91] { diff --git a/app/assets/styles/RemfUpgrade.4stQ5ASH.css b/app/assets/styles/RemfUpgrade.4stQ5ASH.css index 431213b..f2effa7 100644 --- a/app/assets/styles/RemfUpgrade.4stQ5ASH.css +++ b/app/assets/styles/RemfUpgrade.4stQ5ASH.css @@ -15,7 +15,7 @@ border: 1px solid var(--console-panel-border); box-shadow: var(--console-panel-shadow); background: var(--console-panel-bg); - border-radius: 6px; + border-radius: var(--radius-md); overflow: hidden; } .kv[data-v-7efd9d4d] { @@ -57,8 +57,8 @@ .action-cell[data-v-7efd9d4d] .p-button { max-width: 100%; } -/* 视口条件 (width<=767px) 下的响应式覆盖;保留相对基础规则的层叠顺序。 */ -@media (width<=767px) { +/* 视口条件 (width<768px) 下的响应式覆盖;保留相对基础规则的层叠顺序。 */ +@media (width<768px) { .kv[data-v-7efd9d4d] { grid-template-columns: 100px minmax(0, 1fr); } diff --git a/app/assets/styles/RemoteConsole.DLmX5UZu.css b/app/assets/styles/RemoteConsole.DLmX5UZu.css index 600851e..117bf29 100644 --- a/app/assets/styles/RemoteConsole.DLmX5UZu.css +++ b/app/assets/styles/RemoteConsole.DLmX5UZu.css @@ -19,9 +19,9 @@ display: flex; } .console-mark[data-v-e696489e] { - color: #0052d9; + color: var(--p-primary-color); background: #edf4ff; - border-radius: 10px; + border-radius: var(--radius-lg); flex: 0 0 40px; place-items: center; width: 40px; @@ -87,7 +87,7 @@ } .state-connecting[data-v-e696489e], .state-creating[data-v-e696489e] { - color: #0052d9; + color: var(--p-primary-color); } .console-toolbar[data-v-e696489e] { background: #f8fafc; diff --git a/app/assets/styles/RichTextEditor.NkmgPT5m.css b/app/assets/styles/RichTextEditor.NkmgPT5m.css index eb2e376..d936019 100644 --- a/app/assets/styles/RichTextEditor.NkmgPT5m.css +++ b/app/assets/styles/RichTextEditor.NkmgPT5m.css @@ -3,7 +3,7 @@ .rich-editor[data-v-858a2ddd] { border: 1px solid var(--p-form-field-border-color); background: var(--p-form-field-background); - border-radius: 4px; + border-radius: var(--radius-sm); overflow: hidden; } .rich-editor[data-v-858a2ddd]:focus-within { diff --git a/app/assets/styles/RoxyMascot.CDqPSf2d.css b/app/assets/styles/RoxyMascot.CDqPSf2d.css index 2984182..cfca832 100644 --- a/app/assets/styles/RoxyMascot.CDqPSf2d.css +++ b/app/assets/styles/RoxyMascot.CDqPSf2d.css @@ -415,7 +415,7 @@ .roxy-staff[data-v-65169a82] { background: #b38c69; border: 1px solid #624d44; - border-radius: 6px; + border-radius: var(--radius-md); width: 182px; height: 5px; top: 144px; @@ -462,8 +462,8 @@ scale: 1 0.08; } } -/* 视口条件 (width<=767px) 下的响应式覆盖;保留相对基础规则的层叠顺序。 */ -@media (width<=767px) { +/* 视口条件 (width<768px) 下的响应式覆盖;保留相对基础规则的层叠顺序。 */ +@media (width<768px) { .roxy-eye[data-v-65169a82], .roxy-head[data-v-65169a82] { animation: none; diff --git a/app/assets/styles/SecurityVerificationDialog.skYFo4v7.css b/app/assets/styles/SecurityVerificationDialog.skYFo4v7.css index 615a6c0..b7f964a 100644 --- a/app/assets/styles/SecurityVerificationDialog.skYFo4v7.css +++ b/app/assets/styles/SecurityVerificationDialog.skYFo4v7.css @@ -2,13 +2,13 @@ /* 导入方:app/components/SecurityVerificationDialog.vue、app/components/instance/DcimBilling.vue、app/components/instance/InstanceBilling.vue、app/pages/account/index.vue、app/pages/login.vue、app/pages/transfer/index.vue。 */ .security-verify[data-v-ff4061ec] { gap: 8px; - font-size: 13px; + font-size: 1rem; display: grid; } .security-verify label[data-v-ff4061ec], .tip[data-v-ff4061ec] { color: var(--p-text-muted-color); - font-size: 12px; + font-size: 0.9375rem; } .verify-input[data-v-ff4061ec] { gap: 8px; diff --git a/app/assets/styles/SensitiveValue.BSZlaRHT.css b/app/assets/styles/SensitiveValue.BSZlaRHT.css index 4de5dc6..1a5876a 100644 --- a/app/assets/styles/SensitiveValue.BSZlaRHT.css +++ b/app/assets/styles/SensitiveValue.BSZlaRHT.css @@ -20,7 +20,7 @@ cursor: pointer; background: 0 0; border: 0; - border-radius: 4px; + border-radius: var(--radius-sm); flex: none; justify-content: center; align-items: center; diff --git a/app/assets/styles/TicketAttachments.DtbJGLkE.css b/app/assets/styles/TicketAttachments.DtbJGLkE.css index 0db6ed3..02bd35f 100644 --- a/app/assets/styles/TicketAttachments.DtbJGLkE.css +++ b/app/assets/styles/TicketAttachments.DtbJGLkE.css @@ -20,7 +20,7 @@ color: var(--p-text-color); text-align: left; cursor: pointer; - border-radius: 8px; + border-radius: var(--radius-md); align-items: center; gap: 12px; padding: 8px; @@ -34,7 +34,7 @@ background: var(--p-content-hover-background); } .thumbnail[data-v-77cd676b] { - border-radius: 4px; + border-radius: var(--radius-sm); flex: 0 0 112px; justify-content: center; align-items: center; @@ -99,7 +99,7 @@ /* 图片预览区域与下载操作分开,加载失败时保留可理解的错误反馈。 */ .image-preview[data-v-77cd676b] { background: var(--p-content-hover-background); - border-radius: 6px; + border-radius: var(--radius-md); justify-content: center; align-items: center; min-height: 120px; @@ -132,7 +132,7 @@ .download-image[data-v-77cd676b] { color: var(--p-primary-contrast-color); background: var(--p-primary-color); - border-radius: 6px; + border-radius: var(--radius-md); justify-content: center; align-items: center; gap: 8px; diff --git a/app/assets/styles/WithdrawDialog.ks0wdKEK.css b/app/assets/styles/WithdrawDialog.ks0wdKEK.css index 6e6fbab..9924f23 100644 --- a/app/assets/styles/WithdrawDialog.ks0wdKEK.css +++ b/app/assets/styles/WithdrawDialog.ks0wdKEK.css @@ -11,7 +11,7 @@ .notice[data-v-e4be3b52] { border: 1px solid var(--p-content-border-color, #e2e8f0); background: var(--p-content-hover-background); - border-radius: 8px; + border-radius: var(--radius-md); padding: 12px 16px; } .notice-title[data-v-e4be3b52] { @@ -67,7 +67,7 @@ .notice[data-v-e4be3b52] { background: var(--p-blue-50, #eff6ff); border-color: var(--p-blue-200, #bfdbfe); - border-radius: 5px; + border-radius: var(--radius-md); padding: 14px; } .notice ul[data-v-e4be3b52], diff --git a/app/assets/styles/_id_.C-0--Lx-.css b/app/assets/styles/_id_.C-0--Lx-.css index 5713224..f95b2eb 100644 --- a/app/assets/styles/_id_.C-0--Lx-.css +++ b/app/assets/styles/_id_.C-0--Lx-.css @@ -52,7 +52,7 @@ .message[data-v-3743a20f] { background: var(--p-highlight-background); border: 1px solid var(--p-content-border-color, #e2e8f0); - border-radius: 10px; + border-radius: var(--radius-lg); padding: 14px 16px; } .message.admin[data-v-3743a20f] { @@ -122,8 +122,8 @@ .list-head h2[data-v-3743a20f], .page-head h2[data-v-3743a20f] { margin: 0; - font-size: 1.125rem; - font-weight: 700; + font-size: var(--page-title-size); + font-weight: 600; line-height: 24.5px; } .list-toolbar[data-v-3743a20f], @@ -136,7 +136,7 @@ width: 280px; } .list-table[data-v-3743a20f] { - border-radius: 6px; + border-radius: var(--radius-md); box-shadow: 0 1px 3px #0f172a12; } .list-foot[data-v-3743a20f] { @@ -202,7 +202,8 @@ } .head-panel[data-v-3743a20f] { border-bottom: 1px solid var(--p-content-border-color); - padding-bottom: 14px; + gap: 6px; + padding-bottom: 16px; } .ticket-head[data-v-3743a20f] { flex-wrap: wrap; @@ -210,11 +211,22 @@ gap: 14px; } .ticket-title[data-v-3743a20f] { + flex-wrap: wrap; flex: 1; + align-items: center; + gap: 10px; + min-width: 0; + display: flex; } .ticket-title h2[data-v-3743a20f] { + overflow-wrap: anywhere; margin: 0; - font-size: 1.125rem; + font-size: 1.25rem; + line-height: 1.4; +} +.ticket-title .status-tag[data-v-3743a20f] { + padding: 1px 10px; + font-size: 0.8125rem; } .ticket-meta[data-v-3743a20f], .ticket-num[data-v-3743a20f] { @@ -231,7 +243,7 @@ .message.admin[data-v-3743a20f] { background: var(--p-content-background); border: 1px solid var(--p-content-border-color); - border-radius: 6px; + border-radius: var(--radius-md); padding: 0; position: relative; box-shadow: 0 1px 3px #0f172a0a; @@ -289,3 +301,81 @@ flex-wrap: wrap; } } +.reply-attachments[data-v-3743a20f] { + flex-wrap: wrap; + align-items: center; + gap: 10px; + margin-top: 12px; + display: flex; +} +.reply-attachments[data-v-3743a20f]:empty { + display: none; +} +.reply-upload[data-v-3743a20f] { + color: var(--p-text-muted-color); + cursor: pointer; + border-radius: 3px; + align-self: center; + align-items: center; + gap: 5px; + height: 28px; + margin-left: auto; + padding: 0 8px; + font-size: 0.875rem; + display: inline-flex; + position: relative; +} +.reply-upload[data-v-3743a20f]:hover { + background: var(--p-content-hover-background); + color: var(--p-primary-color); +} +.reply-upload input[data-v-3743a20f] { + opacity: 0; + clip: rect(0 0 0 0); + width: 1px; + height: 1px; + position: absolute; + overflow: hidden; +} +.reply-upload[data-v-3743a20f]:has(input:focus-visible) { + outline: 2px solid var(--p-primary-color); + outline-offset: 2px; +} +.reply-upload[data-v-3743a20f]:has(input:disabled) { + opacity: 0.55; + cursor: not-allowed; + pointer-events: none; +} +.reply-file-list[data-v-3743a20f] { + flex-wrap: wrap; + gap: 8px; + margin: 0; + padding: 0; + list-style: none; + display: flex; +} +.reply-file-list li[data-v-3743a20f] { + border: 1px solid var(--p-content-border-color); + background: var(--p-content-hover-background); + border-radius: var(--radius-md); + align-items: center; + gap: 2px; + max-width: 260px; + padding: 0 2px 0 10px; + font-size: 0.875rem; + display: inline-flex; +} +.reply-file-list li > span[data-v-3743a20f] { + text-overflow: ellipsis; + white-space: nowrap; + overflow: hidden; +} +.reply-upload i[data-v-3743a20f] { + font-size: 0.875rem; +} +@media (width<640px) { + .reply-upload[data-v-3743a20f] { + font-size: 0; + gap: 0; + } +} diff --git a/app/assets/styles/_id_.CSXsMADH.css b/app/assets/styles/_id_.CSXsMADH.css index cf60b5b..50e0f95 100644 --- a/app/assets/styles/_id_.CSXsMADH.css +++ b/app/assets/styles/_id_.CSXsMADH.css @@ -48,8 +48,8 @@ .cart-link[data-v-49461ec8]:hover { color: var(--p-primary-color); } -/* 视口条件 (width<=639px) 下的响应式覆盖;保留相对基础规则的层叠顺序。 */ -@media (width<=639px) { +/* 视口条件 (width<640px) 下的响应式覆盖;保留相对基础规则的层叠顺序。 */ +@media (width<640px) { .product-head[data-v-49461ec8] { flex-wrap: wrap; gap: 8px; diff --git a/app/assets/styles/_id_.gjoJy9S8.css b/app/assets/styles/_id_.gjoJy9S8.css index a3378ff..40dd603 100644 --- a/app/assets/styles/_id_.gjoJy9S8.css +++ b/app/assets/styles/_id_.gjoJy9S8.css @@ -41,7 +41,7 @@ .receipt[data-v-b3b3cd9c] { border: 1px solid var(--p-content-border-color); background: var(--p-content-background); - border-radius: 10px; + border-radius: var(--radius-lg); gap: 56px; min-width: 0; padding: 70px 21px 84px; @@ -70,7 +70,7 @@ .receipt-icon[data-v-b3b3cd9c] { border: 1px solid var(--p-content-border-color); background: var(--p-content-hover-background); - border-radius: 7px; + border-radius: var(--radius-md); flex-shrink: 0; place-items: center; width: 49px; @@ -193,7 +193,7 @@ .bank-transfer-panel[data-v-b3b3cd9c] { border: 1px solid var(--p-content-border-color); background: var(--p-content-hover-background); - border-radius: 8px; + border-radius: var(--radius-md); flex-direction: column; gap: 14px; margin-top: -21px; @@ -241,7 +241,7 @@ .bank-voucher-list li[data-v-b3b3cd9c] { border: 1px solid var(--p-content-border-color); background: var(--p-content-background); - border-radius: 4px; + border-radius: var(--radius-sm); justify-content: space-between; align-items: center; gap: 10px; @@ -364,8 +364,8 @@ margin-bottom: 28px; } } -/* 视口条件 (width<=600px) 下的响应式覆盖;保留相对基础规则的层叠顺序。 */ -@media (width<=600px) { +/* 视口条件 (width<=640px) 下的响应式覆盖;保留相对基础规则的层叠顺序。 */ +@media (width<=640px) { .receipt[data-v-b3b3cd9c] { gap: 35px; padding: 28px 14px 35px; @@ -416,7 +416,22 @@ } } /* 打印介质覆盖:独立处理纸张上的显隐和排版,不直接沿用屏幕布局。 */ +.receipt-print-head[data-v-b3b3cd9c] { + display: none; +} +@page { + margin: 16mm 14mm; +} @media print { + .receipt-page[data-v-b3b3cd9c] { + --p-text-color: #0f172a; + --p-text-muted-color: #64748b; + --p-content-border-color: #e2e8f0; + --p-content-background: #fff; + --p-content-hover-background: #f8fafc; + color: #0f172a; + print-color-adjust: exact; + } .receipt-actions[data-v-b3b3cd9c], .receipt-feedback[data-v-b3b3cd9c], .receipt-nav[data-v-b3b3cd9c], @@ -425,12 +440,55 @@ } .receipt[data-v-b3b3cd9c] { box-shadow: none; + background: #fff; + border: 0; + border-radius: 0; + gap: 28px; + padding: 0; -moz-column-break-inside: avoid; break-inside: avoid; } + .receipt-print-head[data-v-b3b3cd9c] { + border-bottom: 2px solid #0f172a; + justify-content: space-between; + align-items: center; + gap: 16px; + padding-bottom: 12px; + display: flex; + } + .receipt-print-logo[data-v-b3b3cd9c] { + width: auto; + height: 38px; + display: block; + } + .receipt-print-meta[data-v-b3b3cd9c] { + text-align: right; + color: #64748b; + flex-direction: column; + gap: 2px; + font-size: 0.875rem; + line-height: 1.3; + display: flex; + } + .receipt-print-meta strong[data-v-b3b3cd9c] { + color: #0f172a; + font-size: 1.25rem; + font-weight: 600; + } + .receipt-header[data-v-b3b3cd9c] { + padding: 0; + } + .receipt-icon[data-v-b3b3cd9c] { + display: none; + } + .receipt-status[data-v-b3b3cd9c] { + color: #0f172a; + background: none; + border: 1px solid #cbd5e1; + } .payment-page[data-v-b3b3cd9c], .receipt-page[data-v-b3b3cd9c] { - max-width: 700px; + max-width: none; } .payment-page .receipt-layout[data-v-b3b3cd9c] { grid-template-columns: minmax(0, 1fr); diff --git a/app/assets/styles/account.CTvLXxT_.css b/app/assets/styles/account.CTvLXxT_.css index 274231d..2bcf0a7 100644 --- a/app/assets/styles/account.CTvLXxT_.css +++ b/app/assets/styles/account.CTvLXxT_.css @@ -45,7 +45,8 @@ } .page-head h2[data-v-8ca4eb3d] { margin: 0; - font-size: 1.375rem; + font-size: var(--page-title-size); + font-weight: 600; } .level-badge[data-v-8ca4eb3d] { font: inherit; @@ -83,8 +84,8 @@ color: var(--p-text-color, #334155); } .tab.active[data-v-8ca4eb3d] { - color: var(--p-primary-color, #3b82f6); - border-bottom-color: var(--p-primary-color, #3b82f6); + color: var(--p-primary-color); + border-bottom-color: var(--p-primary-color); font-weight: 500; } .panel[data-v-8ca4eb3d] { diff --git a/app/assets/styles/bind.CFZQE2UH.css b/app/assets/styles/bind.CFZQE2UH.css index acc4572..885eab5 100644 --- a/app/assets/styles/bind.CFZQE2UH.css +++ b/app/assets/styles/bind.CFZQE2UH.css @@ -42,7 +42,7 @@ legend[data-v-146faed1] { border: 1px solid var(--p-form-field-border-color); color: var(--p-text-color); border-right: 0; - border-radius: 6px; + border-radius: var(--radius-md); align-items: center; padding: 8px; display: flex; diff --git a/app/assets/styles/blank.DOa3C9wi.css b/app/assets/styles/blank.DOa3C9wi.css index 2d5b380..1129c95 100644 --- a/app/assets/styles/blank.DOa3C9wi.css +++ b/app/assets/styles/blank.DOa3C9wi.css @@ -121,7 +121,7 @@ } .auth-card .seg { background: var(--p-content-hover-background); - border-radius: 10px; + border-radius: var(--radius-lg); gap: 4px; padding: 4px; display: flex; @@ -132,7 +132,7 @@ cursor: pointer; background: 0 0; border: 1px solid #0000; - border-radius: 7px; + border-radius: var(--radius-md); flex: 1; padding: 8px; font-size: 1em; @@ -163,8 +163,8 @@ .auth-card .req { color: var(--p-red-600, #dc2626); } -/* 视口条件 (width<=760px) 下的响应式覆盖;保留相对基础规则的层叠顺序。 */ -@media (width<=760px) { +/* 视口条件 (width<=768px) 下的响应式覆盖;保留相对基础规则的层叠顺序。 */ +@media (width<=768px) { .auth-shell { grid-template-columns: minmax(0, 1fr); width: min(480px, 100%); @@ -247,7 +247,7 @@ .auth-login[data-v-69ca9392] { color: #fff; background: var(--p-primary-color); - border-radius: 6px; + border-radius: var(--radius-md); padding: 7px 10.5px; text-decoration: none; } @@ -258,8 +258,8 @@ padding: 28px 14px; display: flex; } -/* 视口条件 (width<=600px) 下的响应式覆盖;保留相对基础规则的层叠顺序。 */ -@media (width<=600px) { +/* 视口条件 (width<=640px) 下的响应式覆盖;保留相对基础规则的层叠顺序。 */ +@media (width<=640px) { .auth-logo img[data-v-69ca9392] { width: 144px; } diff --git a/app/assets/styles/cart.CSS2vTmS.css b/app/assets/styles/cart.CSS2vTmS.css index 8cdad86..89afd61 100644 --- a/app/assets/styles/cart.CSS2vTmS.css +++ b/app/assets/styles/cart.CSS2vTmS.css @@ -17,8 +17,8 @@ } .page-head h2[data-v-11d8a39a] { margin: 0; - font-size: 1.25rem; - font-weight: 650; + font-size: var(--page-title-size); + font-weight: 600; line-height: 2rem; } .page-heading p[data-v-11d8a39a] { @@ -36,7 +36,7 @@ .panel[data-v-11d8a39a] { background: var(--p-content-background); border: 1px solid var(--p-content-border-color); - border-radius: 8px; + border-radius: var(--radius-md); min-width: 0; padding: 20px; } @@ -142,7 +142,7 @@ } .item-qty[data-v-11d8a39a] { border: 1px solid var(--p-content-border-color); - border-radius: 4px; + border-radius: var(--radius-sm); align-items: center; gap: 0; display: flex; @@ -258,8 +258,8 @@ .empty-panel[data-v-11d8a39a] .p-button { margin-top: 8px; } -/* 视口条件 (width<=1023px) 下的响应式覆盖;保留相对基础规则的层叠顺序。 */ -@media (width<=1023px) { +/* 视口条件 (width<1024px) 下的响应式覆盖;保留相对基础规则的层叠顺序。 */ +@media (width<1024px) { .cart-layout[data-v-11d8a39a] { grid-template-columns: 1fr; } @@ -267,8 +267,8 @@ position: static; } } -/* 视口条件 (width<=639px) 下的响应式覆盖;保留相对基础规则的层叠顺序。 */ -@media (width<=639px) { +/* 视口条件 (width<640px) 下的响应式覆盖;保留相对基础规则的层叠顺序。 */ +@media (width<640px) { .page[data-v-11d8a39a] { gap: 18px; } diff --git a/app/assets/styles/create.gX6gpD00.css b/app/assets/styles/create.gX6gpD00.css index 23439a4..8e4ef22 100644 --- a/app/assets/styles/create.gX6gpD00.css +++ b/app/assets/styles/create.gX6gpD00.css @@ -7,7 +7,8 @@ } .page-head h2[data-v-710c7c49] { margin: 10px 0 0; - font-size: 1.375rem; + font-size: var(--page-title-size); + font-weight: 600; } .back[data-v-710c7c49] { color: var(--p-text-muted-color, #94a3b8); @@ -23,7 +24,7 @@ .panel[data-v-710c7c49] { background: var(--p-content-background); border: 1px solid var(--p-content-border-color, #e2e8f0); - border-radius: 12px; + border-radius: var(--radius-lg); max-width: 760px; padding: 24px; } @@ -83,7 +84,7 @@ } .files li[data-v-710c7c49] { background: var(--p-content-hover-background); - border-radius: 6px; + border-radius: var(--radius-md); align-items: center; gap: 8px; padding: 6px 10px; @@ -132,8 +133,8 @@ .list-head h2[data-v-710c7c49], .page-head h2[data-v-710c7c49] { margin: 0; - font-size: 1.125rem; - font-weight: 700; + font-size: var(--page-title-size); + font-weight: 600; line-height: 24.5px; } .list-toolbar[data-v-710c7c49], @@ -146,7 +147,7 @@ width: 280px; } .list-table[data-v-710c7c49] { - border-radius: 6px; + border-radius: var(--radius-md); box-shadow: 0 1px 3px #0f172a12; } .list-foot[data-v-710c7c49] { @@ -248,7 +249,7 @@ .upload-drop[data-v-710c7c49] { border: 1px dashed var(--p-content-border-color); cursor: pointer; - border-radius: 6px; + border-radius: var(--radius-md); flex-direction: column; justify-content: center; align-items: center; diff --git a/app/assets/styles/customize.Cc123Awf.css b/app/assets/styles/customize.Cc123Awf.css index 6c0ccb0..4548959 100644 --- a/app/assets/styles/customize.Cc123Awf.css +++ b/app/assets/styles/customize.Cc123Awf.css @@ -36,8 +36,8 @@ .product-links a[data-v-5618b27d]:hover { color: var(--p-primary-color); } -/* 视口条件 (width<=639px) 下的响应式覆盖;保留相对基础规则的层叠顺序。 */ -@media (width<=639px) { +/* 视口条件 (width<640px) 下的响应式覆盖;保留相对基础规则的层叠顺序。 */ +@media (width<640px) { .dedicated-customize header[data-v-5618b27d] { flex-wrap: wrap; gap: 8px; diff --git a/app/assets/styles/dedicated-server.CiJfMYtk.css b/app/assets/styles/dedicated-server.CiJfMYtk.css index 027b9f2..ef23d01 100644 --- a/app/assets/styles/dedicated-server.CiJfMYtk.css +++ b/app/assets/styles/dedicated-server.CiJfMYtk.css @@ -44,7 +44,7 @@ h2[data-v-e16eb167] { .hardware-card[data-v-e16eb167] { border: 1px solid var(--p-content-border-color); background: var(--p-content-background); - border-radius: 6px; + border-radius: var(--radius-md); box-shadow: 0 1px 3px #0000001a; } .filter-panel[data-v-e16eb167] { @@ -103,7 +103,7 @@ details[open] > summary > i[data-v-e16eb167] { color: var(--p-text-color); cursor: pointer; background: 0 0; - border-radius: 4px; + border-radius: var(--radius-sm); padding: 4px 7px; font-size: 0.875rem; } @@ -170,7 +170,7 @@ details[open] > summary > i[data-v-e16eb167] { } .hardware-buy[data-v-e16eb167] { background: var(--p-content-hover-background); - border-radius: 6px; + border-radius: var(--radius-md); align-items: center; gap: 10px; padding: 4px; @@ -215,7 +215,7 @@ details[open] > summary > i[data-v-e16eb167] { text-align: center; border: 1px solid var(--p-content-border-color); background: var(--p-content-background); - border-radius: 6px; + border-radius: var(--radius-md); flex-direction: column; align-items: center; gap: 14px; @@ -252,7 +252,7 @@ details[open] > summary > i[data-v-e16eb167] { .line-panel[data-v-e16eb167] { border: 1px solid var(--p-content-border-color); background: var(--p-highlight-background); - border-radius: 6px; + border-radius: var(--radius-md); padding: 0 17px; } .line-card[data-v-e16eb167] { @@ -329,8 +329,8 @@ summary[data-v-e16eb167]:focus-visible { top: calc(var(--console-top-offset, 56px) + 20px); } } -/* 视口条件 (width<=1199px) 下的响应式覆盖;保留相对基础规则的层叠顺序。 */ -@media (width<=1199px) { +/* 视口条件 (width<1200px) 下的响应式覆盖;保留相对基础规则的层叠顺序。 */ +@media (width<1200px) { .catalog-layout[data-v-e16eb167] { grid-template-columns: 240px minmax(0, 1fr); } @@ -355,8 +355,8 @@ summary[data-v-e16eb167]:focus-visible { grid-row: 1 / span 2; } } -/* 视口条件 (width<=767px) 下的响应式覆盖;保留相对基础规则的层叠顺序。 */ -@media (width<=767px) { +/* 视口条件 (width<768px) 下的响应式覆盖;保留相对基础规则的层叠顺序。 */ +@media (width<768px) { .catalog-head[data-v-e16eb167] { margin-bottom: 28px; } diff --git a/app/assets/styles/default.DFUVVR1i.css b/app/assets/styles/default.DFUVVR1i.css index 486a1d5..67b8cf5 100644 --- a/app/assets/styles/default.DFUVVR1i.css +++ b/app/assets/styles/default.DFUVVR1i.css @@ -73,7 +73,7 @@ cursor: pointer; background: 0 0; border: 0; - border-radius: 6px; + border-radius: var(--radius-md); align-items: center; gap: 10.5px; padding: 8.75px 14px; @@ -145,7 +145,7 @@ } .nav[data-v-1a9c3b51] .sub-item { color: inherit; - border-radius: 6px; + border-radius: var(--radius-md); padding: 8.75px 14px 8.75px 35px; text-decoration: none; display: block; @@ -157,6 +157,24 @@ margin-left: 210px; display: flex; } +@media print { + .console-layout[data-v-1a9c3b51] { + background: #fff; + min-height: 0; + padding-top: 0; + } + .topbar[data-v-1a9c3b51], + .sidebar[data-v-1a9c3b51], + .nav-backdrop[data-v-1a9c3b51], + .maintenance-banner[data-v-1a9c3b51], + .skip-link[data-v-1a9c3b51] { + display: none !important; + } + .main[data-v-1a9c3b51] { + min-height: 0; + margin-left: 0; + } +} /* 顶栏与维护提示、主内容定位配合,避免固定元素遮挡可操作内容。 */ .topbar[data-v-1a9c3b51] { z-index: 35; @@ -193,13 +211,13 @@ -o-object-fit: contain; object-fit: contain; flex-shrink: 0; - width: 176px; + width: 148px; height: auto; - max-height: 40px; + max-height: 32px; display: block; } .brand-icon[data-v-1a9c3b51] { - color: #0052d9; + color: var(--p-primary-color); flex-shrink: 0; width: 35px; height: 35px; @@ -210,11 +228,11 @@ } .crumbs[data-v-1a9c3b51] { align-items: center; - gap: 12px; + gap: 10px; min-width: 0; height: 100%; - padding-left: 8px; - font-size: 1.125rem; + padding-left: 4px; + font-size: 1rem; line-height: 1.4; display: flex; overflow: hidden; @@ -228,22 +246,24 @@ display: inline-flex; } .crumb-home[data-v-1a9c3b51] { - width: 44px; - height: 44px; + width: 32px; + height: 32px; + border-radius: var(--radius-md); color: var(--p-text-muted-color); text-decoration: none; } .crumb-home > i[data-v-1a9c3b51] { justify-content: center; align-items: center; - width: 24px; - height: 24px; - font-size: 22px; + width: 18px; + height: 18px; + font-size: 17px; line-height: 1; display: inline-flex; } .crumb-sep[data-v-1a9c3b51] { - font-size: 14px; + opacity: 0.6; + font-size: 0.875rem; } .crumb[data-v-1a9c3b51], .crumb-sep[data-v-1a9c3b51] { @@ -429,7 +449,7 @@ z-index: 200; background: var(--p-primary-color); color: #fff; - border-radius: 6px; + border-radius: var(--radius-md); padding: 12px 18px; text-decoration: none; position: fixed; @@ -466,8 +486,8 @@ flex: none; } } -/* 视口条件 (width<=767px) 下的响应式覆盖;保留相对基础规则的层叠顺序。 */ -@media (width<=767px) { +/* 视口条件 (width<768px) 下的响应式覆盖;保留相对基础规则的层叠顺序。 */ +@media (width<768px) { .crumbs[data-v-1a9c3b51] { display: none; } @@ -499,8 +519,8 @@ flex-basis: auto; } } -/* 视口条件 (width<=359px) 下的响应式覆盖;保留相对基础规则的层叠顺序。 */ -@media (width<=359px) { +/* 视口条件 (width<360px) 下的响应式覆盖;保留相对基础规则的层叠顺序。 */ +@media (width<360px) { .brand[data-v-1a9c3b51] { gap: 5px; padding: 0 4px 0 8px; diff --git a/app/assets/styles/domains.GiD6NSti.css b/app/assets/styles/domains.GiD6NSti.css index 6b536d9..90ae2b4 100644 --- a/app/assets/styles/domains.GiD6NSti.css +++ b/app/assets/styles/domains.GiD6NSti.css @@ -25,7 +25,7 @@ font-size: 1rem; } .cert-link[data-v-0a28aca5] { - color: var(--p-primary-color, #3b82f6); + color: var(--p-primary-color); text-decoration: none; } .list-page[data-v-0a28aca5] { @@ -34,8 +34,8 @@ .list-head h2[data-v-0a28aca5], .page-head h2[data-v-0a28aca5] { margin: 0; - font-size: 1.125rem; - font-weight: 700; + font-size: var(--page-title-size); + font-weight: 600; line-height: 24.5px; } .list-toolbar[data-v-0a28aca5], @@ -48,7 +48,7 @@ width: 280px; } .list-table[data-v-0a28aca5] { - border-radius: 6px; + border-radius: var(--radius-md); box-shadow: 0 1px 3px #0f172a12; } .list-foot[data-v-0a28aca5] { diff --git a/app/assets/styles/entry.Cs9kvuGi.css b/app/assets/styles/entry.Cs9kvuGi.css index 5b0cf01..dbd73e0 100644 --- a/app/assets/styles/entry.Cs9kvuGi.css +++ b/app/assets/styles/entry.Cs9kvuGi.css @@ -1139,6 +1139,13 @@ --console-panel-bg: #fff; --console-panel-border: #e2e8f0; --console-panel-shadow: 0 1px 2px #0000001a, 0 1px 3px #0000001a; + --page-title-size: 1.25rem; + --font-mono: + ui-monospace, "Cascadia Mono", Consolas, "SF Mono", Menlo, + "HarmonyOS Sans SC", monospace; + --radius-sm: 4px; + --radius-md: 6px; + --radius-lg: 10px; color: var(--p-text-color, #23324d); background: var(--p-content-background, #fff); font-synthesis: none; @@ -1198,7 +1205,7 @@ textarea { [tabindex]:focus-visible, a:focus-visible, button:focus-visible { - outline: 2px solid var(--p-primary-color, #0052d9); + outline: 2px solid var(--p-primary-color); outline-offset: 3px; } img, @@ -1223,6 +1230,13 @@ video { white-space: nowrap; flex-shrink: 0; } +.p-tabs .p-tablist, +.p-tabs .p-tablist-tab-list, +.p-tabs .p-tab, +.p-tabs .p-tab:not(.p-disabled):hover, +.p-tabs .p-tabpanels { + background: transparent; +} .p-datatable { min-width: 0; max-width: 100%; @@ -1256,9 +1270,17 @@ video { } } .app-dark { - --console-page-bg: #0f172a; - --console-panel-bg: #020617; - --console-panel-border: #334155; + --console-page-bg: #09090b; + --console-panel-bg: #18181b; + --console-panel-border: #3f3f46; +} +.app-dark img[src$="/images/brand/logo.png"] { + filter: brightness(2.5); +} +@media print { + .app-dark img[src$="/images/brand/logo.png"] { + filter: none; + } } .instance-product-status.p-tag-warn { background: var(--p-yellow-100); @@ -1351,7 +1373,7 @@ video { text-align: left; cursor: pointer; overflow-wrap: anywhere; - border-radius: 5px; + border-radius: var(--radius-md); flex-direction: column; justify-content: center; align-items: flex-start; @@ -1377,6 +1399,13 @@ video { .config-choice:hover { border-color: var(--p-primary-color); } +.config-choice.active:only-child { + outline: 0; + border-color: var(--p-content-border-color); + background: var(--p-content-hover-background); + color: var(--p-text-color); + cursor: default; +} .config-choice:focus-visible, .image-group:focus-visible { outline: 2px solid var(--p-primary-color); @@ -1410,7 +1439,7 @@ video { border-radius: 0 5px 5px 0; } .compact .config-choice:only-child { - border-radius: 5px; + border-radius: var(--radius-md); } .compact .config-choice.active { z-index: 1; @@ -1433,7 +1462,7 @@ video { color: var(--p-text-color); text-align: left; cursor: pointer; - border-radius: 5px; + border-radius: var(--radius-md); align-items: center; gap: 14px; padding: 14px; @@ -1468,7 +1497,7 @@ video { .config-page .config-checkout { background: var(--p-content-background); border: 1px solid var(--p-content-border-color); - border-radius: 5px; + border-radius: var(--radius-md); min-width: 0; max-width: 100%; padding: 16px 14px; @@ -1578,7 +1607,7 @@ video { .config-page .quote-status { background: var(--p-content-hover-background); color: var(--p-text-muted-color); - border-radius: 4px; + border-radius: var(--radius-sm); flex-direction: column; align-items: flex-start; gap: 10px; @@ -1606,7 +1635,7 @@ video { .config-page .cart-confirmation { background: var(--p-content-hover-background); color: var(--p-text-color); - border-radius: 5px; + border-radius: var(--radius-md); flex-wrap: wrap; justify-content: space-between; align-items: center; @@ -1670,7 +1699,7 @@ video { .product-order-page > .config-loading { border: 1px solid var(--p-content-border-color); background: var(--p-content-background); - border-radius: 5px; + border-radius: var(--radius-md); width: 100%; padding: 24px; } @@ -1693,15 +1722,15 @@ video { top: calc(var(--console-top-offset, 56px) + 20px); } } -/* 视口条件 (width<=1199px) 下的响应式覆盖;保留相对基础规则的层叠顺序。 */ -@media (width<=1199px) { +/* 视口条件 (width<1200px) 下的响应式覆盖;保留相对基础规则的层叠顺序。 */ +@media (width<1200px) { .config-choices, .config-page .image-groups { grid-template-columns: repeat(3, minmax(0, 1fr)); } } -/* 视口条件 (width<=1023px) 下的响应式覆盖;保留相对基础规则的层叠顺序。 */ -@media (width<=1023px) { +/* 视口条件 (width<1024px) 下的响应式覆盖;保留相对基础规则的层叠顺序。 */ +@media (width<1024px) { .config-layout { grid-template-columns: minmax(0, 1fr); gap: 32px; @@ -1771,8 +1800,8 @@ video { flex-shrink: 0; } } -/* 视口条件 (width<=639px) 下的响应式覆盖;保留相对基础规则的层叠顺序。 */ -@media (width<=639px) { +/* 视口条件 (width<640px) 下的响应式覆盖;保留相对基础规则的层叠顺序。 */ +@media (width<640px) { .config-choices, .config-page .image-groups { grid-template-columns: repeat(2, minmax(0, 1fr)); @@ -1847,7 +1876,7 @@ video { .list-head h2 { color: var(--p-text-color); margin: 0; - font-size: 1rem; + font-size: var(--page-title-size); font-weight: 600; } .list-head-actions { @@ -1878,7 +1907,7 @@ video { var(--p-content-hover-background) 60%, transparent ); - border-radius: 4px; + border-radius: var(--radius-sm); align-items: center; gap: 2px; max-width: 100%; @@ -1893,7 +1922,7 @@ video { cursor: pointer; background: 0 0; border: 1px solid #0000; - border-radius: 4px; + border-radius: var(--radius-sm); padding: 4px 10px; font-size: 1rem; line-height: 1.5; @@ -1920,7 +1949,7 @@ video { .list-table { background: var(--p-content-background); border: 1px solid var(--p-content-border-color); - border-radius: 5px; + border-radius: var(--radius-md); min-width: 0; max-width: 100%; overflow: hidden; @@ -2120,7 +2149,7 @@ video { color: var(--p-text-color); white-space: nowrap; background: 0 0; - border-radius: 4px; + border-radius: var(--radius-sm); align-items: center; gap: 7px; padding: 7px 12px; @@ -2219,21 +2248,21 @@ video { .home-expiring, .home-tickets { grid-column: span 1; - min-height: 442px; + min-height: 360px; } .home-servers { grid-column: span 2; - min-height: 442px; + min-height: 360px; } .home-notices, .home-referral { grid-column: span 2; - min-height: 316px; + min-height: 272px; } .home-card { background: var(--p-content-background); border: 1px solid var(--p-content-border-color, #e2e8f0); - border-radius: 5px; + border-radius: var(--radius-md); flex-direction: column; min-width: 0; display: flex; @@ -2291,7 +2320,7 @@ video { background: var(--p-primary-color); min-height: 36px; color: var(--p-primary-contrast-color, #fff); - border-radius: 4px; + border-radius: var(--radius-sm); justify-content: center; align-items: center; gap: 6px; @@ -2383,13 +2412,18 @@ button.home-row:hover { font-size: 1.125rem; font-weight: 600; } +.home-card .list-empty { + flex: 1; + justify-content: center; + padding: 32px 20px; +} .home-page a:focus-visible, .home-page button:focus-visible { outline: 2px solid var(--p-primary-color); outline-offset: 2px; } -/* 视口条件 (width<=1023px) 下的响应式覆盖;保留相对基础规则的层叠顺序。 */ -@media (width<=1023px) { +/* 视口条件 (width<1024px) 下的响应式覆盖;保留相对基础规则的层叠顺序。 */ +@media (width<1024px) { .home-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); } @@ -2409,8 +2443,8 @@ button.home-row:hover { grid-column: span 1; } } -/* 视口条件 (width<=639px) 下的响应式覆盖;保留相对基础规则的层叠顺序。 */ -@media (width<=639px) { +/* 视口条件 (width<640px) 下的响应式覆盖;保留相对基础规则的层叠顺序。 */ +@media (width<640px) { .home-grid { flex-direction: column; gap: 21px; @@ -2420,15 +2454,134 @@ button.home-row:hover { min-height: 0; } .home-wallet { - min-height: 214px; + min-height: 180px; } - .home-expiring, .home-servers, .home-tickets { - min-height: 330px; + min-height: 240px; + } + .home-expiring { + min-height: 0; } .home-notices, .home-referral { - min-height: 280px; + min-height: 200px; + } +} +@media (width<640px) { + .list-toolbar-right { + grid-template-columns: repeat(2, minmax(0, 1fr)); + grid-auto-flow: row dense; + gap: 8px; + display: grid; + } + .list-toolbar-right > .list-search, + .list-toolbar-right > .p-iconfield, + .list-toolbar-right > form { + order: -1; + grid-column: 1 / -1; + } + .list-toolbar-right > .p-button-text { + justify-self: start; + } + .p-datatable:not(.no-stack) .p-datatable-table-container { + overflow: visible; + } + .p-datatable:not(.no-stack) .p-datatable-table, + .p-datatable:not(.no-stack) .p-datatable-tbody { + width: 100%; + min-width: 0 !important; + display: block; + } + .list-table:has(.p-datatable:not(.no-stack)) { + overflow-x: visible; + } + .p-datatable:not(.no-stack) .p-datatable-thead { + display: none; + } + .p-datatable:not(.no-stack) .p-datatable-tbody > tr { + border-bottom: 1px solid var(--p-content-border-color); + padding: 10px 14px; + display: block; + position: relative; + } + .p-datatable:not(.no-stack) .p-datatable-tbody > tr:last-child { + border-bottom: 0; + } + .p-datatable:not(.no-stack) .p-datatable-tbody > tr > td { + text-align: right; + overflow-wrap: anywhere; + white-space: normal !important; + border: 0 !important; + justify-content: space-between; + align-items: center; + gap: 16px; + width: auto !important; + min-width: 0 !important; + padding: 5px 0 !important; + display: flex; + } + .p-datatable:not(.no-stack) .p-datatable-tbody > tr > td::before { + content: attr(data-label); + color: var(--p-text-muted-color); + text-align: left; + white-space: nowrap; + flex-shrink: 0; + font-size: 0.875rem; + } + .p-datatable:not(.no-stack) + .p-datatable-tbody + > tr + > td[data-label=""]::before, + .p-datatable:not(.no-stack) + .p-datatable-tbody + > tr + > td:not([data-label])::before { + display: none; + } + .p-datatable:not(.no-stack) .p-datatable-tbody > tr > td[data-label=""] { + justify-content: flex-end; + } + .p-datatable:not(.no-stack) + .p-datatable-tbody + > tr + > td:first-child:has(> .p-checkbox) { + padding: 0 !important; + position: absolute; + top: 13px; + right: 14px; + } + .p-datatable:not(.no-stack) + .p-datatable-tbody + > tr:has(> td:first-child > .p-checkbox) + > td:nth-child(2) { + padding-right: 32px !important; + } + .p-datatable:not(.no-stack) .p-datatable-tbody > tr > td > * { + min-width: 0; + max-width: 100%; + } + .p-datatable:not(.no-stack) .p-datatable-tbody > tr > td > div { + flex-wrap: wrap; + justify-content: flex-end; + } + .p-datatable:not(.no-stack) .p-datatable-empty-message > td { + text-align: center; + padding: 0 !important; + display: block; + } + .table-scroll-hint { + display: none !important; + } +} +@media (width<640px) { + .list-toolbar:not(:has(> .list-toolbar-right)) { + grid-template-columns: repeat(2, minmax(0, 1fr)); + gap: 8px; + display: grid; + } + .list-toolbar:not(:has(> .list-toolbar-right)) > .list-search { + grid-column: 1 / -1; + width: 100%; } } diff --git a/app/assets/styles/finance.BkxKMno0.css b/app/assets/styles/finance.BkxKMno0.css index 0b649d8..e2c2431 100644 --- a/app/assets/styles/finance.BkxKMno0.css +++ b/app/assets/styles/finance.BkxKMno0.css @@ -16,7 +16,8 @@ } .page-head h2[data-v-18fe1f08] { margin: 0 0 6px; - font-size: 1.375rem; + font-size: var(--page-title-size); + font-weight: 600; } .page-head p[data-v-18fe1f08] { color: var(--p-text-muted-color, #94a3b8); @@ -31,7 +32,7 @@ .summary-card[data-v-18fe1f08] { background: var(--p-content-background); border: 1px solid var(--p-content-border-color, #e2e8f0); - border-radius: 12px; + border-radius: var(--radius-lg); flex-direction: column; gap: 8px; padding: 18px; @@ -67,7 +68,7 @@ .panel[data-v-18fe1f08] { background: var(--p-content-background); border: 1px solid var(--p-content-border-color, #e2e8f0); - border-radius: 12px; + border-radius: var(--radius-lg); padding: 8px 20px 20px; } .credit-summary[data-v-18fe1f08] { @@ -76,7 +77,7 @@ font-size: 0.9375rem; } .link[data-v-18fe1f08] { - color: var(--p-primary-color, #3b82f6); + color: var(--p-primary-color); font-weight: 500; text-decoration: none; } @@ -100,35 +101,53 @@ .wallet-card[data-v-18fe1f08] { background: var(--p-content-background); border: 1px solid var(--p-content-border-color); - border-radius: 7px; - justify-content: space-between; + border-radius: var(--radius-md); + justify-content: flex-start; align-items: center; - gap: 21px; - min-height: 91px; - padding: 14px; + gap: 0; + min-height: 96px; + padding: 20px 24px; display: flex; box-shadow: 0 1px 2px #00000014; } +.wallet-card > div[data-v-18fe1f08]:first-child { + padding-right: 36px; +} +.wallet-stat[data-v-18fe1f08], +.wallet-pending-refund[data-v-18fe1f08] { + border-left: 1px solid var(--p-content-border-color); + padding: 2px 36px; +} +.wallet-stat-value[data-v-18fe1f08] { + font-variant-numeric: tabular-nums; + font-size: 1.125rem; + font-weight: 600; + line-height: 1.6; +} .summary-label[data-v-18fe1f08] { color: var(--p-text-muted-color); - margin-bottom: 10px; - font-size: 1rem; + margin-bottom: 6px; + font-size: 0.9375rem; } .summary-value[data-v-18fe1f08] { + font-variant-numeric: tabular-nums; font-size: 1.75rem; - font-weight: 400; + font-weight: 600; line-height: 1.2; } .summary-value small[data-v-18fe1f08] { font-size: 1.5rem; } -.wallet-pending-refund[data-v-18fe1f08] { - min-width: 130px; -} .pending-refund-value[data-v-18fe1f08] { color: var(--p-orange-600, #ea580c); + font-variant-numeric: tabular-nums; font-size: 1.125rem; font-weight: 600; + line-height: 1.6; +} +.summary-actions[data-v-18fe1f08] { + align-items: center; + margin-left: auto; } .reminder-panel[data-v-18fe1f08] { flex-wrap: wrap; @@ -163,6 +182,10 @@ width: 150px; min-width: 0; } +.reminder-form[data-v-18fe1f08] .p-inputnumber-input { + width: 100%; + min-width: 0; +} .reminder-form[data-v-18fe1f08] .p-button, .reminder-form[data-v-18fe1f08] > :first-child, .reminder-form > label[data-v-18fe1f08] { @@ -184,7 +207,13 @@ } .wallet-tabs[data-v-18fe1f08] .p-tabpanels { background: 0 0; - padding: 0; + padding: 24px 0 0; +} +.wallet-tabs[data-v-18fe1f08] .list-head h2 { + display: none; +} +.wallet-tabs[data-v-18fe1f08] .list-head:not(:has(.list-head-actions)) { + display: none; } .wallet-tabs[data-v-18fe1f08] .p-tablist-tab-list { background: 0 0; @@ -218,7 +247,7 @@ } .wallet-tabs[data-v-18fe1f08] .p-datatable-table-container { border: 1px solid var(--p-content-border-color); - border-radius: 6px; + border-radius: var(--radius-md); box-shadow: 0 2px 3px #0000000f; } .wallet-tabs[data-v-18fe1f08] .p-datatable-table { @@ -252,9 +281,29 @@ margin-top: 21px; } /* 视口条件 (width<=640px) 下的响应式覆盖;保留相对基础规则的层叠顺序。 */ +@media (width<=900px) { + .wallet-card[data-v-18fe1f08] { + flex-wrap: wrap; + row-gap: 16px; + } + .summary-actions[data-v-18fe1f08] { + justify-content: flex-end; + width: 100%; + } +} @media (width<=640px) { .wallet-card[data-v-18fe1f08] { flex-wrap: wrap; + padding: 16px; + } + .wallet-card > div[data-v-18fe1f08]:first-child { + flex-basis: 100%; + padding-right: 0; + } + .wallet-stat[data-v-18fe1f08], + .wallet-pending-refund[data-v-18fe1f08] { + border-left: 0; + padding: 0 24px 0 0; } .reminder-copy[data-v-18fe1f08] { flex: 100%; diff --git a/app/assets/styles/groups.Buw8nwl1.css b/app/assets/styles/groups.Buw8nwl1.css index fae5cb9..b25328e 100644 --- a/app/assets/styles/groups.Buw8nwl1.css +++ b/app/assets/styles/groups.Buw8nwl1.css @@ -26,7 +26,7 @@ } .dlg-tabs[data-v-fe145bae] { background: var(--p-content-hover-background); - border-radius: 8px; + border-radius: var(--radius-md); align-self: flex-start; gap: 4px; padding: 3px; @@ -37,7 +37,7 @@ cursor: pointer; background: 0 0; border: 0; - border-radius: 6px; + border-radius: var(--radius-md); padding: 6px 18px; font-size: 0.9375rem; } @@ -59,7 +59,7 @@ } .batch-hint code[data-v-fe145bae] { background: var(--p-content-hover-background); - border-radius: 4px; + border-radius: var(--radius-sm); padding: 1px 5px; font-size: 0.875rem; } @@ -71,7 +71,7 @@ } .rule-add[data-v-fe145bae] { border: 1px dashed var(--p-content-border-color, #e2e8f0); - border-radius: 10px; + border-radius: var(--radius-lg); padding: 12px; } .rule-form[data-v-fe145bae] { @@ -99,7 +99,7 @@ min-width: 140px; } .mono[data-v-fe145bae] { - font-family: ui-monospace, SFMono-Regular, Menlo, monospace; + font-family: var(--font-mono); font-size: 0.875rem; } .empty-rule[data-v-fe145bae] { @@ -114,8 +114,8 @@ .list-head h2[data-v-fe145bae], .page-head h2[data-v-fe145bae] { margin: 0; - font-size: 1.125rem; - font-weight: 700; + font-size: var(--page-title-size); + font-weight: 600; line-height: 24.5px; } .list-toolbar[data-v-fe145bae], @@ -128,7 +128,7 @@ width: 280px; } .list-table[data-v-fe145bae] { - border-radius: 6px; + border-radius: var(--radius-md); box-shadow: 0 1px 3px #0f172a12; } .list-foot[data-v-fe145bae] { @@ -277,7 +277,7 @@ .group-detail[data-v-fe145bae] .p-datatable { border: 1px solid var(--p-content-border-color); background: var(--p-content-background); - border-radius: 6px; + border-radius: var(--radius-md); } /* 视口条件 (width<=768px) 下的响应式覆盖;保留相对基础规则的层叠顺序。 */ @media (width<=768px) { diff --git a/app/assets/styles/help.BSOB30LE.css b/app/assets/styles/help.BSOB30LE.css index 9542aea..f45b772 100644 --- a/app/assets/styles/help.BSOB30LE.css +++ b/app/assets/styles/help.BSOB30LE.css @@ -14,8 +14,8 @@ } .page-heading h2[data-v-2e1fbf8d] { margin: 0; - font-size: 1.25rem; - font-weight: 650; + font-size: var(--page-title-size); + font-weight: 600; line-height: 2rem; } .page-heading p[data-v-2e1fbf8d] { @@ -33,7 +33,7 @@ .help-nav[data-v-2e1fbf8d] { background: var(--console-panel-bg); border: 1px solid var(--console-panel-border); - border-radius: 8px; + border-radius: var(--radius-md); min-width: 0; } /* 滚动时保持此区域可见;定位偏移需与页面固定顶栏及父级滚动容器一起核对。 */ @@ -98,7 +98,7 @@ cursor: pointer; background: 0 0; border: 0; - border-radius: 5px; + border-radius: var(--radius-md); align-items: flex-start; gap: 10px; padding: 10px; @@ -198,7 +198,7 @@ } .content-html[data-v-2e1fbf8d] pre { background: var(--p-content-hover-background); - border-radius: 6px; + border-radius: var(--radius-md); padding: 16px; overflow-x: auto; } diff --git a/app/assets/styles/invoices.t1P1GXOx.css b/app/assets/styles/invoices.t1P1GXOx.css index 0657c2f..59b8d36 100644 --- a/app/assets/styles/invoices.t1P1GXOx.css +++ b/app/assets/styles/invoices.t1P1GXOx.css @@ -39,7 +39,7 @@ } .order-list[data-v-86fc6dc2] { border: 1px solid var(--p-content-border-color, #e2e8f0); - border-radius: 10px; + border-radius: var(--radius-lg); flex-direction: column; max-height: 220px; display: flex; @@ -87,7 +87,7 @@ text-align: center; color: var(--p-text-muted-color, #94a3b8); border: 1px dashed var(--p-content-border-color, #e2e8f0); - border-radius: 10px; + border-radius: var(--radius-lg); padding: 20px; font-size: 0.9375rem; } @@ -106,7 +106,7 @@ font-size: 0.9375rem; } .field-tip[data-v-86fc6dc2] { - color: var(--p-primary-color, #3b82f6); + color: var(--p-primary-color); font-size: 0.875rem; text-decoration: none; } diff --git a/app/assets/styles/logbook.Y7gm684m.css b/app/assets/styles/logbook.Y7gm684m.css index 195da45..bd79f9b 100644 --- a/app/assets/styles/logbook.Y7gm684m.css +++ b/app/assets/styles/logbook.Y7gm684m.css @@ -6,8 +6,8 @@ .list-head h2[data-v-0e32233b], .page-head h2[data-v-0e32233b] { margin: 0; - font-size: 1.125rem; - font-weight: 700; + font-size: var(--page-title-size); + font-weight: 600; line-height: 24.5px; } .list-toolbar[data-v-0e32233b], @@ -20,7 +20,7 @@ width: 280px; } .list-table[data-v-0e32233b] { - border-radius: 6px; + border-radius: var(--radius-md); box-shadow: 0 1px 3px #0f172a12; } .list-foot[data-v-0e32233b] { @@ -72,3 +72,67 @@ width: 100%; } } +@media (width<640px) { + .list-table[data-v-0e32233b] + .p-datatable-tbody + > tr:not(.p-datatable-empty-message) { + grid-template-columns: auto auto minmax(0, 1fr) auto; + grid-template-areas: "content content content content" "time ip . id"; + align-items: center; + gap: 6px 10px; + padding: 14px 16px; + display: grid; + } + .list-table[data-v-0e32233b] + .p-datatable-tbody + > tr:not(.p-datatable-empty-message) + > td { + text-align: left; + justify-content: flex-start; + gap: 4px; + padding: 0 !important; + font-size: 0.875rem; + display: none; + position: static; + } + .list-table[data-v-0e32233b] + .p-datatable-tbody + > tr:not(.p-datatable-empty-message) + > td::before { + display: none; + } + .list-table[data-v-0e32233b] + .p-datatable-tbody + > tr:not(.p-datatable-empty-message) + > td[data-label="操作内容"] { + grid-area: content; + display: flex; + color: var(--p-text-color); + font-size: 0.9375rem; + } + .list-table[data-v-0e32233b] + .p-datatable-tbody + > tr:not(.p-datatable-empty-message) + > td[data-label="创建时间"] { + grid-area: time; + display: flex; + color: var(--p-text-muted-color); + } + .list-table[data-v-0e32233b] + .p-datatable-tbody + > tr:not(.p-datatable-empty-message) + > td[data-label="IP"] { + grid-area: ip; + display: flex; + color: var(--p-text-muted-color); + } + .list-table[data-v-0e32233b] + .p-datatable-tbody + > tr:not(.p-datatable-empty-message) + > td[data-label="ID"] { + grid-area: id; + display: flex; + color: var(--p-text-muted-color); + justify-content: flex-end; + } +} diff --git a/app/assets/styles/messages.asRdYcVu.css b/app/assets/styles/messages.asRdYcVu.css index 5a1d694..a18cecb 100644 --- a/app/assets/styles/messages.asRdYcVu.css +++ b/app/assets/styles/messages.asRdYcVu.css @@ -5,8 +5,8 @@ } .page-heading h2[data-v-e9dbafec] { margin: 0; - font-size: 1.25rem; - font-weight: 650; + font-size: var(--page-title-size); + font-weight: 600; line-height: 2rem; } .page-heading p[data-v-e9dbafec] { @@ -17,7 +17,7 @@ .message-panel[data-v-e9dbafec] { border: 1px solid var(--console-panel-border); background: var(--console-panel-bg); - border-radius: 8px; + border-radius: var(--radius-md); min-width: 0; overflow: hidden; } diff --git a/app/assets/styles/news.CbIzdrjt.css b/app/assets/styles/news.CbIzdrjt.css index 69c9231..6f724a9 100644 --- a/app/assets/styles/news.CbIzdrjt.css +++ b/app/assets/styles/news.CbIzdrjt.css @@ -10,7 +10,7 @@ background: var(--p-content-background); border: 1px solid var(--p-content-border-color, #e2e8f0); cursor: pointer; - border-radius: 10px; + border-radius: var(--radius-lg); gap: 14px; width: 100%; padding: 16px 18px; @@ -18,12 +18,12 @@ display: flex; } .news-card[data-v-0f61b69d]:hover { - border-color: var(--p-primary-color, #0052d9); + border-color: var(--p-primary-color); } .news-img[data-v-0f61b69d] { -o-object-fit: cover; object-fit: cover; - border-radius: 8px; + border-radius: var(--radius-md); flex-shrink: 0; width: 120px; height: 76px; @@ -100,8 +100,8 @@ .list-head h2[data-v-0f61b69d], .page-head h2[data-v-0f61b69d] { margin: 0; - font-size: 1.125rem; - font-weight: 700; + font-size: var(--page-title-size); + font-weight: 600; line-height: 24.5px; } .list-toolbar[data-v-0f61b69d], @@ -114,7 +114,7 @@ width: 280px; } .list-table[data-v-0f61b69d] { - border-radius: 6px; + border-radius: var(--radius-md); box-shadow: 0 1px 3px #0f172a12; } .list-foot[data-v-0f61b69d] { @@ -167,7 +167,7 @@ } } .news-card[data-v-0f61b69d] { - border-radius: 6px; + border-radius: var(--radius-md); padding: 14px; box-shadow: 0 1px 3px #0f172a0a; } diff --git a/app/assets/styles/notices.BXNGOj-Q.css b/app/assets/styles/notices.BXNGOj-Q.css index d5ffae3..cd8cf18 100644 --- a/app/assets/styles/notices.BXNGOj-Q.css +++ b/app/assets/styles/notices.BXNGOj-Q.css @@ -51,8 +51,8 @@ .list-head h2[data-v-4ba0157b], .page-head h2[data-v-4ba0157b] { margin: 0; - font-size: 1.125rem; - font-weight: 700; + font-size: var(--page-title-size); + font-weight: 600; line-height: 24.5px; } .list-toolbar[data-v-4ba0157b], @@ -65,7 +65,7 @@ width: 280px; } .list-table[data-v-4ba0157b] { - border-radius: 6px; + border-radius: var(--radius-md); box-shadow: 0 1px 3px #0f172a12; } .list-foot[data-v-4ba0157b] { @@ -144,7 +144,7 @@ .notice-item[data-v-4ba0157b] { border: 1px solid var(--p-content-border-color); background: var(--p-content-background); - border-radius: 6px; + border-radius: var(--radius-md); padding: 14px; box-shadow: 0 1px 3px #0f172a0a; } diff --git a/app/assets/styles/official-site.pBD-PXD7.css b/app/assets/styles/official-site.pBD-PXD7.css index 66de8e3..8f1697e 100644 --- a/app/assets/styles/official-site.pBD-PXD7.css +++ b/app/assets/styles/official-site.pBD-PXD7.css @@ -4,7 +4,7 @@ min-height: 100vh; color: var(--p-text-color, #334155); background: var(--console-page-bg, #f8fafc); - --official-primary: var(--p-primary-color, #0052d9); + --official-primary: var(--p-primary-color); --official-accent: #eff6ff; } .official-site a { @@ -45,7 +45,7 @@ var(--official-primary) 11%, var(--p-content-background) ); - border-radius: 5px; + border-radius: var(--radius-md); justify-content: center; align-items: flex-end; gap: 2px; @@ -108,7 +108,7 @@ .official-mobile-nav a, .official-nav a { color: var(--p-text-muted-color); - font-size: 0.92rem; + font-size: 0.9375rem; transition: color 0.18s; } .official-mobile-nav a:hover, @@ -125,11 +125,11 @@ background: var(--p-content-background); color: var(--p-text-color); white-space: nowrap; - border-radius: 4px; + border-radius: var(--radius-sm); align-items: center; gap: 7px; padding: 9px 13px; - font-size: 0.88rem; + font-size: 0.875rem; transition: border-color 0.18s, color 0.18s; @@ -137,7 +137,7 @@ } .official-header-login i { color: var(--official-primary); - font-size: 0.78rem; + font-size: 0.8125rem; } .official-header-login:hover { border-color: var(--official-primary); @@ -150,7 +150,7 @@ height: 38px; color: var(--p-text-color); cursor: pointer; - border-radius: 4px; + border-radius: var(--radius-sm); display: none; } .official-mobile-nav { @@ -234,12 +234,12 @@ color: var(--p-text-color); align-items: center; gap: 7px; - font-size: 0.88rem; + font-size: 0.875rem; display: inline-flex; } .official-hero-features i { color: var(--official-primary); - font-size: 0.82rem; + font-size: 0.8125rem; } .official-contact-actions, .official-hero-actions { @@ -250,7 +250,7 @@ } .official-button { border: 1px solid #0000; - border-radius: 4px; + border-radius: var(--radius-sm); justify-content: center; align-items: center; gap: 9px; @@ -292,7 +292,7 @@ color: var(--official-primary); } .official-button i { - font-size: 0.8rem; + font-size: 0.8125rem; } /* 首屏装饰性网络图由CSS元素组成,与真实资源监控数据无关。 */ .official-hero-visual { @@ -308,7 +308,7 @@ ); min-height: 315px; box-shadow: var(--console-panel-shadow); - border-radius: 6px; + border-radius: var(--radius-md); position: relative; overflow: hidden; } @@ -426,7 +426,7 @@ } .official-stat-kicker { color: var(--p-text-muted-color); - font-size: 0.82rem; + font-size: 0.8125rem; } .official-stat-value { color: var(--p-text-color); @@ -453,7 +453,7 @@ .official-hero-stat p { color: var(--p-text-muted-color); margin: 6px 0 0; - font-size: 0.82rem; + font-size: 0.8125rem; line-height: 1.55; } .official-floating-label { @@ -461,7 +461,7 @@ background: var(--p-content-background); color: var(--p-text-color); box-shadow: var(--console-panel-shadow); - border-radius: 4px; + border-radius: var(--radius-sm); align-items: center; gap: 8px; padding: 9px 12px; @@ -473,7 +473,7 @@ } .official-floating-label i { color: var(--official-primary); - font-size: 0.82rem; + font-size: 0.8125rem; } .official-section { margin-top: 52px; @@ -516,16 +516,16 @@ background: var(--p-content-background); color: var(--p-text-muted-color); white-space: nowrap; - border-radius: 4px; + border-radius: var(--radius-sm); align-items: center; gap: 6px; padding: 6px 9px; - font-size: 0.8rem; + font-size: 0.8125rem; display: inline-flex; } .official-section-badges i { color: var(--official-primary); - font-size: 0.72rem; + font-size: 0.75rem; } /* 官网产品卡片网格,不改变商品接口或库存判定。 */ .official-product-grid { @@ -562,7 +562,7 @@ width: 38px; height: 38px; color: var(--official-primary); - border-radius: 4px; + border-radius: var(--radius-sm); place-items: center; font-size: 1.2rem; display: grid; @@ -584,13 +584,13 @@ color: var(--p-text-muted-color); letter-spacing: 0.08em; margin-top: 3px; - font-size: 0.72rem; + font-size: 0.75rem; display: block; } .official-product-title-row > i { color: var(--p-text-muted-color); margin-top: 3px; - font-size: 0.88rem; + font-size: 0.875rem; } .official-product-description { min-height: 42px; @@ -626,17 +626,17 @@ justify-content: space-between; align-items: center; gap: 12px; - font-size: 0.83rem; + font-size: 0.8125rem; display: flex; } .official-product-features i { color: var(--official-primary); - font-size: 0.72rem; + font-size: 0.75rem; } .official-product-link { align-items: center; gap: 7px; - font-size: 0.88rem; + font-size: 0.875rem; font-weight: 600; display: inline-flex; color: var(--official-primary) !important; @@ -685,7 +685,7 @@ } .official-infra-stats dt { color: var(--p-text-muted-color); - font-size: 0.8rem; + font-size: 0.8125rem; } .official-infra-stats dd { color: var(--p-text-color); @@ -696,7 +696,7 @@ .official-infra-stats dd small { color: var(--p-text-muted-color); margin-left: 4px; - font-size: 0.78rem; + font-size: 0.8125rem; font-weight: 400; } .official-infra-visual { @@ -707,7 +707,7 @@ color-mix(in srgb, var(--official-accent) 70%, var(--p-content-background)), var(--p-content-background) ); - border-radius: 5px; + border-radius: var(--radius-md); min-height: 285px; position: relative; overflow: hidden; @@ -772,7 +772,7 @@ .official-infra-card-kicker { color: var(--official-primary); letter-spacing: 0.09em; - font-size: 0.72rem; + font-size: 0.75rem; font-weight: 600; display: block; } @@ -785,7 +785,7 @@ .official-infra-card > p { color: var(--p-text-muted-color); margin: 4px 0 14px; - font-size: 0.78rem; + font-size: 0.8125rem; } .official-resource-row { color: var(--p-text-muted-color); @@ -802,7 +802,7 @@ var(--official-primary) 10%, var(--console-panel-border) ); - border-radius: 5px; + border-radius: var(--radius-md); height: 5px; overflow: hidden; } @@ -840,7 +840,7 @@ min-height: 52px; color: var(--p-text-color); margin: 10px 0 18px; - font-size: 0.92rem; + font-size: 0.9375rem; line-height: 1.65; } .official-review-person { @@ -873,7 +873,7 @@ } .official-review-person strong { color: var(--p-text-color); - font-size: 0.83rem; + font-size: 0.8125rem; font-weight: 600; } .official-review-person small { @@ -915,7 +915,7 @@ max-width: 300px; color: var(--p-text-muted-color); margin: 15px 0 0; - font-size: 0.83rem; + font-size: 0.8125rem; line-height: 1.65; } .official-footer-groups { @@ -934,7 +934,7 @@ .official-footer-group h2 { color: var(--p-text-color); margin: 2px 0 4px; - font-size: 0.88rem; + font-size: 0.875rem; font-weight: 600; } .official-footer-contact a, @@ -942,7 +942,7 @@ .official-footer-group a { color: var(--p-text-muted-color); margin: 0; - font-size: 0.82rem; + font-size: 0.8125rem; line-height: 1.5; } .official-footer-contact a:hover, @@ -958,20 +958,20 @@ .official-footer-contact i { color: var(--official-primary); margin-top: 2px; - font-size: 0.78rem; + font-size: 0.8125rem; } .official-footer-qr { color: var(--p-text-muted-color); align-items: center; gap: 10px; - font-size: 0.76rem; + font-size: 0.75rem; display: flex; } .official-footer-qr img { border: 1px solid var(--console-panel-border); -o-object-fit: contain; object-fit: contain; - border-radius: 4px; + border-radius: var(--radius-sm); width: 56px; height: 56px; } @@ -984,7 +984,7 @@ align-items: center; gap: 12px; margin: 0 auto; - font-size: 0.76rem; + font-size: 0.75rem; display: flex; } .official-footer-bottom > div { @@ -1032,8 +1032,8 @@ grid-column: 2; } } -/* 视口条件 (width<=680px) 下的响应式覆盖;保留相对基础规则的层叠顺序。 */ -@media (width<=680px) { +/* 视口条件 (width<=640px) 下的响应式覆盖;保留相对基础规则的层叠顺序。 */ +@media (width<=640px) { .official-footer-bottom, .official-footer-main, .official-header-inner, @@ -1049,7 +1049,7 @@ } .official-header-login { padding: 8px 9px; - font-size: 0.8rem; + font-size: 0.8125rem; } .official-menu-toggle { place-items: center; @@ -1080,7 +1080,7 @@ } .official-hero-intro > p { margin-bottom: 13px; - font-size: 0.92rem; + font-size: 0.9375rem; } .official-hero-features { margin-bottom: 16px; @@ -1101,7 +1101,7 @@ } .official-floating-label { max-width: 48%; - font-size: 0.76rem; + font-size: 0.75rem; bottom: 17px; left: 12px; } diff --git a/app/assets/styles/orders.BflDlvVz.css b/app/assets/styles/orders.BflDlvVz.css index d592ca4..1e18b18 100644 --- a/app/assets/styles/orders.BflDlvVz.css +++ b/app/assets/styles/orders.BflDlvVz.css @@ -6,7 +6,7 @@ font-size: 0.9375rem; } .order-link[data-v-d87be2e3] { - color: var(--p-primary-color, #3b82f6); + color: var(--p-primary-color); font-weight: 500; text-decoration: none; } @@ -56,6 +56,22 @@ .list-foot[data-v-d87be2e3] { justify-content: center; } +.list-table[data-v-d87be2e3] .amount-cell { + text-align: right; + font-variant-numeric: tabular-nums; + font-weight: 500; +} +.list-table[data-v-d87be2e3] + .amount-heading + .p-datatable-column-header-content { + justify-content: flex-end; +} +.list-table[data-v-d87be2e3] .action-cell { + text-align: right; +} +.list-table[data-v-d87be2e3] .action-cell a { + text-decoration: none; +} /* 视口条件 (width<=640px) 下的响应式覆盖;保留相对基础规则的层叠顺序。 */ @media (width<=640px) { .list-toolbar-right > .p-iconfield[data-v-d87be2e3] { @@ -65,3 +81,126 @@ width: 100%; } } +@media (width<640px) { + .list-table[data-v-d87be2e3] + .p-datatable-tbody + > tr:not(.p-datatable-empty-message) { + grid-template-columns: 22px auto auto minmax(0, 1fr) auto; + grid-template-areas: "check title title title price" "check type id time status" "check pay pay pay pay"; + align-items: center; + gap: 6px 10px; + padding: 14px 16px; + display: grid; + cursor: pointer; + } + .list-table[data-v-d87be2e3] + .p-datatable-tbody + > tr:not(.p-datatable-empty-message) + > td { + text-align: left; + justify-content: flex-start; + gap: 4px; + padding: 0 !important; + font-size: 0.875rem; + display: none; + position: static; + } + .list-table[data-v-d87be2e3] + .p-datatable-tbody + > tr:not(.p-datatable-empty-message) + > td::before { + display: none; + } + .list-table[data-v-d87be2e3] + .p-datatable-tbody + > tr:not(.p-datatable-empty-message) + > td:first-child { + grid-area: check; + display: flex; + } + .list-table[data-v-d87be2e3] + .p-datatable-tbody + > tr:not(.p-datatable-empty-message) + > td[data-label="商品"] { + grid-area: title; + display: flex; + color: var(--p-text-color); + font-size: 1rem; + font-weight: 600; + } + .list-table[data-v-d87be2e3] + .p-datatable-tbody + > tr:not(.p-datatable-empty-message) + > td[data-label="总价"] { + grid-area: price; + display: flex; + color: var(--p-text-color); + font-size: 1rem; + font-weight: 600; + justify-content: flex-end; + } + .list-table[data-v-d87be2e3] + .p-datatable-tbody + > tr:not(.p-datatable-empty-message) + > td[data-label="类型"] { + grid-area: type; + display: flex; + color: var(--p-text-muted-color); + } + .list-table[data-v-d87be2e3] + .p-datatable-tbody + > tr:not(.p-datatable-empty-message) + > td[data-label="ID"] { + grid-area: id; + display: flex; + color: var(--p-text-muted-color); + } + .list-table[data-v-d87be2e3] + .p-datatable-tbody + > tr:not(.p-datatable-empty-message) + > td[data-label="下单时间"] { + grid-area: time; + display: flex; + color: var(--p-text-muted-color); + white-space: nowrap !important; + } + .list-table[data-v-d87be2e3] + .p-datatable-tbody + > tr:not(.p-datatable-empty-message) + > td[data-label="状态"] { + grid-area: status; + display: flex; + justify-content: flex-end; + } + .list-table[data-v-d87be2e3] + .p-datatable-tbody + > tr:not(.p-datatable-empty-message) + > td[data-label="支付方式"] { + grid-area: pay; + display: flex; + color: var(--p-text-muted-color); + } + .list-table[data-v-d87be2e3] + .p-datatable-tbody + > tr:not(.p-datatable-empty-message) + > td:last-child { + display: none; + } + .list-table[data-v-d87be2e3] + .p-datatable-tbody + > tr:not(.p-datatable-empty-message) + > td[data-label="支付方式"]::before { + content: "支付方式 "; + color: var(--p-text-muted-color); + font-size: 0.875rem; + display: inline; + } + .list-table[data-v-d87be2e3] + .p-datatable-tbody + > tr:not(.p-datatable-empty-message) + > td[data-label="ID"] + .order-link { + color: var(--p-text-muted-color); + font-weight: 400; + } +} diff --git a/app/assets/styles/pages.DytekQXu.css b/app/assets/styles/pages.DytekQXu.css index 02800aa..ea6dc12 100644 --- a/app/assets/styles/pages.DytekQXu.css +++ b/app/assets/styles/pages.DytekQXu.css @@ -5,7 +5,7 @@ --welcome-tile-bg: #fff; background: #f7faff; border-color: #cbdcf0; - border-radius: 6px; + border-radius: var(--radius-md); position: relative; } .welcome-head[data-v-b43b228e] { @@ -100,7 +100,7 @@ min-width: 38px; min-height: 38px; color: var(--p-text-muted-color); - border-radius: 5px; + border-radius: var(--radius-md); transition: border-color 0.2s, color 0.2s; @@ -135,7 +135,7 @@ letter-spacing: inherit; vertical-align: baseline; cursor: pointer; - border-radius: 4px; + border-radius: var(--radius-sm); align-items: center; gap: 8px; margin-left: 6px; @@ -194,13 +194,21 @@ font-size: 0.9375rem; } .app-dark .welcome-card[data-v-b43b228e] { - --welcome-line: #263b56; - --welcome-tile-bg: #101e31; - background: #12233b; - border-color: #304766; + --welcome-line: var(--p-content-border-color); + --welcome-tile-bg: var(--p-content-background); + background: color-mix( + in srgb, + var(--p-primary-color) 7%, + var(--p-content-background) + ); + border-color: color-mix( + in srgb, + var(--p-primary-color) 22%, + var(--p-content-border-color) + ); } -/* 视口条件 (width<=1023px) 下的响应式覆盖;保留相对基础规则的层叠顺序。 */ -@media (width<=1023px) { +/* 视口条件 (width<1024px) 下的响应式覆盖;保留相对基础规则的层叠顺序。 */ +@media (width<1024px) { .tiles[data-v-b43b228e] { grid-template-columns: repeat(2, minmax(0, 1fr)); } @@ -211,8 +219,8 @@ border-top: 1px solid var(--welcome-line); } } -/* 视口条件 (width<=767px) 下的响应式覆盖;保留相对基础规则的层叠顺序。 */ -@media (width<=767px) { +/* 视口条件 (width<768px) 下的响应式覆盖;保留相对基础规则的层叠顺序。 */ +@media (width<768px) { .welcome-head[data-v-b43b228e] { align-items: flex-start; gap: 12px; @@ -236,8 +244,8 @@ gap: 5px; } } -/* 视口条件 (width<=639px) 下的响应式覆盖;保留相对基础规则的层叠顺序。 */ -@media (width<=639px) { +/* 视口条件 (width<640px) 下的响应式覆盖;保留相对基础规则的层叠顺序。 */ +@media (width<640px) { .welcome-title[data-v-b43b228e] { font-size: 1.5rem; } @@ -269,3 +277,48 @@ font-size: 1rem; } } +@media (width<640px) { + .welcome-head[data-v-b43b228e] { + gap: 8px; + min-height: 0; + padding: 16px; + } + .welcome-heading[data-v-b43b228e] { + min-height: 0; + } + .welcome-title[data-v-b43b228e] { + font-size: 1.25rem; + } + .welcome-message[data-v-b43b228e] { + min-height: 0; + font-size: 0.9375rem; + } + .welcome-meta[data-v-b43b228e] { + flex-flow: wrap; + gap: 4px 14px; + font-size: 0.875rem; + } + .welcome-icon[data-v-b43b228e] { + flex-basis: 24px; + } + .welcome-icon[data-v-b43b228e], + .welcome-icon .iconify[data-v-b43b228e] { + width: 24px; + height: 24px; + } + .welcome-settings[data-v-b43b228e] { + top: 12px; + right: 12px; + } + .tile[data-v-b43b228e] { + min-height: 0; + padding: 12px 16px; + } + .tile-label[data-v-b43b228e] { + font-size: 0.875rem; + } + .tile-value[data-v-b43b228e] { + margin-top: 2px; + font-size: 1rem; + } +} diff --git a/app/assets/styles/products.CrccEo2m.css b/app/assets/styles/products.CrccEo2m.css index 6b4ac81..a16cb33 100644 --- a/app/assets/styles/products.CrccEo2m.css +++ b/app/assets/styles/products.CrccEo2m.css @@ -33,7 +33,7 @@ background: var(--p-content-background); color: var(--p-text-color); white-space: nowrap; - border-radius: 6px; + border-radius: var(--radius-md); align-items: center; gap: 9px; padding: 10px 16px; @@ -48,7 +48,7 @@ .catalog-categories[data-v-a6c63d86] { border: 1px solid var(--p-content-border-color); background: var(--p-content-background); - border-radius: 8px; + border-radius: var(--radius-md); padding: 20px 24px; } .catalog-categories h2[data-v-a6c63d86] { @@ -70,7 +70,7 @@ font: inherit; cursor: pointer; overflow-wrap: anywhere; - border-radius: 6px; + border-radius: var(--radius-md); max-width: 100%; padding: 10px 18px; font-size: 1rem; @@ -113,7 +113,7 @@ .catalog-panel[data-v-a6c63d86] { border: 1px solid var(--p-content-border-color); background: var(--p-content-background); - border-radius: 8px; + border-radius: var(--radius-md); min-width: 0; overflow: hidden; } @@ -183,9 +183,9 @@ } .product-columns[data-v-a6c63d86], .product-row[data-v-a6c63d86] { - grid-template-columns: minmax(180px, 1fr) minmax(200px, 1.4fr) 190px; + grid-template-columns: minmax(220px, 1fr) minmax(240px, 1.5fr) auto; align-items: center; - gap: 28px; + gap: 32px; padding-inline: 24px; display: grid; } @@ -203,8 +203,8 @@ .product-row[data-v-a6c63d86] { border-bottom: 1px solid var(--p-content-border-color); min-width: 0; - min-height: 143px; - padding-block: 26px; + min-height: 96px; + padding-block: 20px; } .product-row[data-v-a6c63d86]:last-child { border-bottom: 0; @@ -223,7 +223,7 @@ width: 42px; height: 42px; color: var(--p-primary-color); - border-radius: 7px; + border-radius: var(--radius-md); flex-shrink: 0; place-items: center; font-size: 1.375rem; @@ -231,7 +231,7 @@ } .product-heading h2[data-v-a6c63d86] { overflow-wrap: anywhere; - margin: 0 0 9px; + margin: 0 0 6px; font-size: 1.125rem; font-weight: 600; line-height: 1.714rem; @@ -250,9 +250,10 @@ color: var(--p-primary-color); } .product-purchase[data-v-a6c63d86] { - flex-direction: column; - align-items: flex-end; - gap: 14px; + flex-direction: row; + justify-content: flex-end; + align-items: center; + gap: 20px; min-width: 0; display: flex; } @@ -265,7 +266,7 @@ .product-price strong[data-v-a6c63d86] { color: var(--p-text-color); font-variant-numeric: tabular-nums; - font-size: 1.5rem; + font-size: 1.375rem; font-weight: 600; line-height: 2rem; } @@ -273,10 +274,11 @@ min-height: 36px; color: var(--p-primary-contrast-color); background: var(--p-primary-color); - border-radius: 5px; + border-radius: var(--radius-md); + white-space: nowrap; justify-content: center; align-items: center; - gap: 20px; + gap: 8px; padding: 8px 16px; font-size: 0.9375rem; text-decoration: none; @@ -293,7 +295,7 @@ background: var(--p-content-hover-background); } .product-skeleton[data-v-a6c63d86] { - min-height: 143px; + min-height: 96px; } .catalog-footer[data-v-a6c63d86] { border-top: 1px solid var(--p-content-border-color); @@ -340,15 +342,20 @@ button[data-v-a6c63d86]:focus-visible { @media (width<=1100px) { .product-columns[data-v-a6c63d86], .product-row[data-v-a6c63d86] { - grid-template-columns: minmax(150px, 1fr) minmax(160px, 1.1fr) 160px; + grid-template-columns: minmax(150px, 1fr) minmax(160px, 1.1fr) auto; gap: 20px; } + .product-purchase[data-v-a6c63d86] { + flex-direction: column; + align-items: flex-end; + gap: 10px; + } .product-icon[data-v-a6c63d86] { display: none; } } -/* 视口条件 (width<=760px) 下的响应式覆盖;保留相对基础规则的层叠顺序。 */ -@media (width<=760px) { +/* 视口条件 (width<=768px) 下的响应式覆盖;保留相对基础规则的层叠顺序。 */ +@media (width<=768px) { .catalog-categories[data-v-a6c63d86] { padding: 16px; } diff --git a/app/assets/styles/public-order.0RThfr7m.css b/app/assets/styles/public-order.0RThfr7m.css index 2e92014..8e76af6 100644 --- a/app/assets/styles/public-order.0RThfr7m.css +++ b/app/assets/styles/public-order.0RThfr7m.css @@ -14,7 +14,7 @@ align-items: center; gap: 24px; min-height: 72px; - padding: 16px max(24px, 50vw - 690px); + padding: 16px max(24px, 50vw - 666px); display: flex; } .public-order-brand[data-v-f882e304] { @@ -32,7 +32,7 @@ } .public-order-header a[data-v-f882e304] { color: inherit; - font-size: 0.9375rem; + font-size: 1rem; text-decoration: none; } .public-order-header a[data-v-f882e304]:hover, @@ -54,7 +54,7 @@ } .public-order-login[data-v-f882e304] { border: 1px solid var(--console-panel-border); - border-radius: 6px; + border-radius: var(--radius-md); padding: 9px 18px; } .public-order-content[data-v-f882e304] { diff --git a/app/assets/styles/realname.BpRCvfXO.css b/app/assets/styles/realname.BpRCvfXO.css index 382992d..61dbbed 100644 --- a/app/assets/styles/realname.BpRCvfXO.css +++ b/app/assets/styles/realname.BpRCvfXO.css @@ -31,7 +31,7 @@ display: inline-flex; } .back[data-v-ed164766]:hover { - color: var(--p-primary-color, #3b82f6); + color: var(--p-primary-color); } .page-head h2[data-v-ed164766] { margin: 10px 0 0; @@ -40,7 +40,7 @@ .panel[data-v-ed164766] { background: var(--p-content-background); border: 1px solid var(--p-content-border-color, #e2e8f0); - border-radius: 12px; + border-radius: var(--radius-lg); padding: 20px 22px; } .steps-panel[data-v-ed164766] { @@ -52,7 +52,7 @@ display: flex; } .certified i[data-v-ed164766] { - color: var(--p-primary-color, #3b82f6); + color: var(--p-primary-color); flex-shrink: 0; font-size: 2.125rem; } @@ -70,7 +70,7 @@ /* 允许连续长文本换行,防止IP、密钥或用户输入撑破当前容器;不会修改原始数据。 */ .certify-id[data-v-ed164766] { overflow-wrap: anywhere; - font-family: ui-monospace, SFMono-Regular, Menlo, monospace; + font-family: var(--font-mono); } .certified > div[data-v-ed164766] { min-width: 0; @@ -120,7 +120,7 @@ .error-copy[data-v-ed164766] { color: var(--p-red-500, #dc2626); margin: 0; - font-size: 12px; + font-size: 0.9375rem; } .load-error[data-v-ed164766] { gap: 12px; @@ -128,7 +128,7 @@ } .field-tip[data-v-ed164766] { color: var(--p-text-muted-color); - font-size: 12px; + font-size: 0.9375rem; } .channel-fields[data-v-ed164766] { gap: 12px; @@ -156,7 +156,7 @@ .channel-option[data-v-ed164766] { border: 1px solid var(--p-content-border-color); cursor: pointer; - border-radius: 8px; + border-radius: var(--radius-md); align-items: center; gap: 12px; min-height: 70px; @@ -238,7 +238,7 @@ font-weight: 400; } .panel[data-v-ed164766] { - border-radius: 6px; + border-radius: var(--radius-md); padding: 21px; } .form[data-v-ed164766] { diff --git a/app/assets/styles/recommend.C1KCHBPJ.css b/app/assets/styles/recommend.C1KCHBPJ.css index ce52ea1..864dafe 100644 --- a/app/assets/styles/recommend.C1KCHBPJ.css +++ b/app/assets/styles/recommend.C1KCHBPJ.css @@ -12,7 +12,7 @@ padding: var(--recommend-gap); background: var(--p-content-background); border: 1px solid var(--p-content-border-color); - border-radius: 7px; + border-radius: var(--radius-md); box-shadow: 0 1px 2px #00000014; } .error-panel[data-v-78278278], diff --git a/app/assets/styles/remote-console.zcxaOxxS.css b/app/assets/styles/remote-console.zcxaOxxS.css index 1f674af..a209cce 100644 --- a/app/assets/styles/remote-console.zcxaOxxS.css +++ b/app/assets/styles/remote-console.zcxaOxxS.css @@ -49,7 +49,7 @@ margin: auto; } .intro-icon[data-v-5f7e2625] { - color: #0052d9; + color: var(--p-primary-color); margin-bottom: 8px; font-size: 2rem; display: inline-block; @@ -67,7 +67,7 @@ line-height: 1.8; } .console-return[data-v-5f7e2625] { - color: #0052d9; + color: var(--p-primary-color); justify-content: center; align-items: center; gap: 8px; diff --git a/app/assets/styles/resources._aUrMsvM.css b/app/assets/styles/resources._aUrMsvM.css index 353e19f..c712c28 100644 --- a/app/assets/styles/resources._aUrMsvM.css +++ b/app/assets/styles/resources._aUrMsvM.css @@ -15,8 +15,8 @@ } .page-heading h2[data-v-7390ef3e] { margin: 0; - font-size: 1.25rem; - font-weight: 650; + font-size: var(--page-title-size); + font-weight: 600; line-height: 2rem; } .page-heading p[data-v-7390ef3e] { diff --git a/app/assets/styles/server.DGuhrprb.css b/app/assets/styles/server.DGuhrprb.css index cb414d2..7ba5429 100644 --- a/app/assets/styles/server.DGuhrprb.css +++ b/app/assets/styles/server.DGuhrprb.css @@ -9,7 +9,7 @@ background: var(--console-panel-bg); border: 1px solid var(--console-panel-border); box-shadow: var(--console-panel-shadow); - border-radius: 6px; + border-radius: var(--radius-md); padding: 14px; } .host-panel[data-v-b18590a1] { @@ -232,8 +232,8 @@ margin-bottom: 7px; display: block; } -/* 视口条件 (width<=1199px) 下的响应式覆盖;保留相对基础规则的层叠顺序。 */ -@media (width<=1199px) { +/* 视口条件 (width<1200px) 下的响应式覆盖;保留相对基础规则的层叠顺序。 */ +@media (width<1200px) { .host-head[data-v-b18590a1] { flex-wrap: wrap; } @@ -244,8 +244,8 @@ grid-template-columns: minmax(160px, 2fr) repeat(3, minmax(90px, 1fr)); } } -/* 视口条件 (width<=767px) 下的响应式覆盖;保留相对基础规则的层叠顺序。 */ -@media (width<=767px) { +/* 视口条件 (width<768px) 下的响应式覆盖;保留相对基础规则的层叠顺序。 */ +@media (width<768px) { .host-panel[data-v-b18590a1] { padding-top: 7px; } @@ -296,3 +296,34 @@ gap: 21px; } } +@media (width<768px) { + .host-ident[data-v-b18590a1] { + display: block; + position: relative; + } + .host-avatar[data-v-b18590a1] { + width: 52px; + height: 52px; + position: absolute; + top: 0; + right: 0; + } + .host-avatar img[data-v-b18590a1] { + width: 52px; + height: 52px; + } + .host-avatar .dot[data-v-b18590a1] { + width: 10px; + height: 10px; + bottom: 2px; + left: 40px; + box-shadow: 0 0 0 2px #dcfce7; + } + .host-id[data-v-b18590a1] { + min-width: 0; + } + .host-title[data-v-b18590a1], + .host-sub[data-v-b18590a1] { + padding-right: 64px; + } +} diff --git a/app/assets/styles/settings.zV3AWuRw.css b/app/assets/styles/settings.zV3AWuRw.css index 1c1f694..9276159 100644 --- a/app/assets/styles/settings.zV3AWuRw.css +++ b/app/assets/styles/settings.zV3AWuRw.css @@ -14,16 +14,17 @@ display: inline-flex; } .back[data-v-4a007273]:hover { - color: var(--p-primary-color, #3b82f6); + color: var(--p-primary-color); } .page-head h2[data-v-4a007273] { margin: 10px 0 0; - font-size: 1.375rem; + font-size: var(--page-title-size); + font-weight: 600; } .panel[data-v-4a007273] { background: var(--p-content-background); border: 1px solid var(--p-content-border-color, #e2e8f0); - border-radius: 12px; + border-radius: var(--radius-lg); padding: 8px 20px 20px; } .tab-head[data-v-4a007273] { @@ -43,7 +44,7 @@ } .info-card[data-v-4a007273] { border: 1px solid var(--p-content-border-color, #e2e8f0); - border-radius: 10px; + border-radius: var(--radius-lg); align-items: center; gap: 12px; padding: 12px 16px; @@ -73,7 +74,7 @@ border-color: #fecaca; } .badge.default[data-v-4a007273] { - color: var(--p-primary-color, #3b82f6); + color: var(--p-primary-color); border-color: #a7f3d0; } .card-sub[data-v-4a007273] { @@ -130,7 +131,7 @@ } .page-head h2[data-v-4a007273] { margin: 0; - font-size: 1.25rem; + font-size: var(--page-title-size); font-weight: 600; } .settings-section[data-v-4a007273] { @@ -160,7 +161,7 @@ } .settings-table[data-v-4a007273] { border: 1px solid var(--p-content-border-color); - border-radius: 5px; + border-radius: var(--radius-md); width: 100%; overflow: hidden; box-shadow: 0 2px 3px #0000000f; diff --git a/app/assets/styles/ssh-keys.WWTOf2zG.css b/app/assets/styles/ssh-keys.WWTOf2zG.css index 6753fe3..8c612f6 100644 --- a/app/assets/styles/ssh-keys.WWTOf2zG.css +++ b/app/assets/styles/ssh-keys.WWTOf2zG.css @@ -12,15 +12,15 @@ } .fingerprint[data-v-31489433], .key-text[data-v-31489433] { - font-family: ui-monospace, SFMono-Regular, Menlo, monospace; + font-family: var(--font-mono); } .fingerprint[data-v-31489433] { color: var(--p-text-muted-color, #94a3b8); - font-size: 0.8125rem; + font-size: 0.875rem; } .row-actions[data-v-31489433] { align-items: center; - gap: 4px; + gap: 2px; display: flex; } .form[data-v-31489433] { @@ -48,8 +48,8 @@ .list-head h2[data-v-31489433], .page-head h2[data-v-31489433] { margin: 0; - font-size: 1.125rem; - font-weight: 700; + font-size: var(--page-title-size); + font-weight: 600; line-height: 24.5px; } .list-toolbar[data-v-31489433], @@ -62,7 +62,7 @@ width: 280px; } .list-table[data-v-31489433] { - border-radius: 6px; + border-radius: var(--radius-md); box-shadow: 0 1px 3px #0f172a12; } .list-foot[data-v-31489433] { @@ -114,3 +114,76 @@ width: 100%; } } +@media (width<640px) { + .list-table[data-v-31489433] + .p-datatable-tbody + > tr:not(.p-datatable-empty-message) { + grid-template-columns: minmax(0, 1fr) auto; + grid-template-areas: "name id" "key key" "fp fp" "actions actions"; + align-items: center; + gap: 6px 10px; + padding: 14px 16px; + display: grid; + } + .list-table[data-v-31489433] + .p-datatable-tbody + > tr:not(.p-datatable-empty-message) + > td { + text-align: left; + justify-content: flex-start; + gap: 4px; + padding: 0 !important; + font-size: 0.875rem; + display: none; + position: static; + } + .list-table[data-v-31489433] + .p-datatable-tbody + > tr:not(.p-datatable-empty-message) + > td::before { + display: none; + } + .list-table[data-v-31489433] + .p-datatable-tbody + > tr:not(.p-datatable-empty-message) + > td[data-label="名称"] { + grid-area: name; + display: flex; + color: var(--p-text-color); + font-size: 1rem; + font-weight: 600; + } + .list-table[data-v-31489433] + .p-datatable-tbody + > tr:not(.p-datatable-empty-message) + > td[data-label="ID"] { + grid-area: id; + display: flex; + color: var(--p-text-muted-color); + justify-content: flex-end; + } + .list-table[data-v-31489433] + .p-datatable-tbody + > tr:not(.p-datatable-empty-message) + > td[data-label="公钥"] { + grid-area: key; + display: flex; + color: var(--p-text-muted-color); + } + .list-table[data-v-31489433] + .p-datatable-tbody + > tr:not(.p-datatable-empty-message) + > td[data-label="指纹"] { + grid-area: fp; + display: flex; + color: var(--p-text-muted-color); + } + .list-table[data-v-31489433] + .p-datatable-tbody + > tr:not(.p-datatable-empty-message) + > td[data-label="操作"] { + grid-area: actions; + display: flex; + margin-top: 4px; + } +} diff --git a/app/assets/styles/tickets.Dz8JrDhQ.css b/app/assets/styles/tickets.Dz8JrDhQ.css index 8d92b10..2fb9916 100644 --- a/app/assets/styles/tickets.Dz8JrDhQ.css +++ b/app/assets/styles/tickets.Dz8JrDhQ.css @@ -8,7 +8,7 @@ .stat-card[data-v-1ff3e04d] { background: var(--p-content-background); border: 1px solid var(--p-content-border-color, #e2e8f0); - border-radius: 10px; + border-radius: var(--radius-lg); align-items: center; gap: 8px; padding: 10px 16px; @@ -48,8 +48,8 @@ .list-head h2[data-v-1ff3e04d], .page-head h2[data-v-1ff3e04d] { margin: 0; - font-size: 1.125rem; - font-weight: 700; + font-size: var(--page-title-size); + font-weight: 600; line-height: 24.5px; } .list-toolbar[data-v-1ff3e04d], @@ -62,7 +62,7 @@ width: 280px; } .list-table[data-v-1ff3e04d] { - border-radius: 6px; + border-radius: var(--radius-md); box-shadow: 0 1px 3px #0f172a12; } .list-foot[data-v-1ff3e04d] { @@ -121,3 +121,94 @@ .list-head[data-v-1ff3e04d] { margin-top: 0; } +@media (width<640px) { + .list-table[data-v-1ff3e04d] + .p-datatable-tbody + > tr:not(.p-datatable-empty-message) { + grid-template-columns: auto auto minmax(0, 1fr) auto; + grid-template-areas: "title title title status" "id type . reply"; + align-items: center; + gap: 6px 10px; + padding: 14px 16px; + display: grid; + } + .list-table[data-v-1ff3e04d] + .p-datatable-tbody + > tr:not(.p-datatable-empty-message) + > td { + text-align: left; + justify-content: flex-start; + gap: 4px; + padding: 0 !important; + font-size: 0.875rem; + display: none; + position: static; + } + .list-table[data-v-1ff3e04d] + .p-datatable-tbody + > tr:not(.p-datatable-empty-message) + > td::before { + display: none; + } + .list-table[data-v-1ff3e04d] + .p-datatable-tbody + > tr:not(.p-datatable-empty-message) + > td[data-label="标题"] { + grid-area: title; + display: flex; + color: var(--p-text-color); + font-size: 1rem; + font-weight: 600; + } + .list-table[data-v-1ff3e04d] + .p-datatable-tbody + > tr:not(.p-datatable-empty-message) + > td[data-label="状态"] { + grid-area: status; + display: flex; + justify-content: flex-end; + } + .list-table[data-v-1ff3e04d] + .p-datatable-tbody + > tr:not(.p-datatable-empty-message) + > td[data-label="ID"] { + grid-area: id; + display: flex; + color: var(--p-text-muted-color); + } + .list-table[data-v-1ff3e04d] + .p-datatable-tbody + > tr:not(.p-datatable-empty-message) + > td[data-label="工单类型"] { + grid-area: type; + display: flex; + color: var(--p-text-muted-color); + } + .list-table[data-v-1ff3e04d] + .p-datatable-tbody + > tr:not(.p-datatable-empty-message) + > td[data-label="最近回复"] { + grid-area: reply; + display: flex; + color: var(--p-text-muted-color); + justify-content: flex-end; + } + .list-table[data-v-1ff3e04d] + .p-datatable-tbody + > tr:not(.p-datatable-empty-message) + > td[data-label="最近回复"]::before { + content: "最近回复 "; + color: var(--p-text-muted-color); + font-size: 0.875rem; + display: inline; + } + .list-table[data-v-1ff3e04d] + .p-datatable-tbody + > tr:not(.p-datatable-empty-message) + > td[data-label="ID"] + a { + color: var(--p-text-muted-color); + text-decoration: none; + font-weight: 400; + } +} diff --git a/app/assets/styles/transfer.CAsJhVUW.css b/app/assets/styles/transfer.CAsJhVUW.css index c0ba072..e6f7ad1 100644 --- a/app/assets/styles/transfer.CAsJhVUW.css +++ b/app/assets/styles/transfer.CAsJhVUW.css @@ -3,7 +3,7 @@ .code-card[data-v-559a870e] { border: 1px solid var(--p-content-border-color, #e2e8f0); background: var(--p-content-background); - border-radius: 10px; + border-radius: var(--radius-lg); gap: 8px; padding: 16px 18px; } @@ -20,7 +20,7 @@ .code-value[data-v-559a870e] { letter-spacing: 0.5px; color: var(--p-text-color); - font-family: ui-monospace, SFMono-Regular, Menlo, monospace; + font-family: var(--font-mono); font-size: 1.125rem; font-weight: 600; } @@ -63,7 +63,7 @@ } .detail[data-v-559a870e] { background: var(--p-content-hover-background); - border-radius: 8px; + border-radius: var(--radius-md); gap: 10px; padding: 14px 16px; } @@ -141,8 +141,8 @@ .list-head h2[data-v-559a870e], .page-head h2[data-v-559a870e] { margin: 0; - font-size: 1.125rem; - font-weight: 700; + font-size: var(--page-title-size); + font-weight: 600; line-height: 24.5px; } .list-toolbar[data-v-559a870e], @@ -155,7 +155,7 @@ width: 280px; } .list-table[data-v-559a870e] { - border-radius: 6px; + border-radius: var(--radius-md); box-shadow: 0 1px 3px #0f172a12; } .list-foot[data-v-559a870e] { @@ -239,7 +239,7 @@ var(--p-content-background) ); border: 1px solid var(--p-content-border-color); - border-radius: 6px; + border-radius: var(--radius-md); flex-direction: column; gap: 7px; padding: 17.5px 21px; @@ -260,7 +260,7 @@ background: var(--p-content-background); border: 1px solid var(--p-content-border-color); overflow-wrap: anywhere; - border-radius: 5px; + border-radius: var(--radius-md); padding: 7px 10.5px; font-family: inherit; } diff --git a/app/assets/styles/vouchers.5FV4ozrh.css b/app/assets/styles/vouchers.5FV4ozrh.css index b899a43..cf74c1b 100644 --- a/app/assets/styles/vouchers.5FV4ozrh.css +++ b/app/assets/styles/vouchers.5FV4ozrh.css @@ -14,8 +14,8 @@ } .page-heading h2[data-v-b08e3df0] { margin: 0; - font-size: 1.25rem; - font-weight: 650; + font-size: var(--page-title-size); + font-weight: 600; line-height: 2rem; } .page-heading p[data-v-b08e3df0] { @@ -26,7 +26,7 @@ .voucher-guide[data-v-b08e3df0] { background: var(--console-panel-bg); border: 1px solid var(--console-panel-border); - border-radius: 8px; + border-radius: var(--radius-md); align-items: center; gap: 16px; padding: 22px 24px; @@ -37,7 +37,7 @@ height: 44px; color: var(--p-primary-color); background: var(--p-highlight-background); - border-radius: 10px; + border-radius: var(--radius-lg); flex-shrink: 0; place-items: center; font-size: 1.375rem; @@ -88,7 +88,7 @@ height: 20px; color: var(--p-text-muted-color); font-variant-numeric: tabular-nums; - border-radius: 5px; + border-radius: var(--radius-md); justify-content: center; align-items: center; padding: 0 6px; @@ -115,7 +115,7 @@ .voucher-card[data-v-b08e3df0] { border: 1px solid var(--console-panel-border); background: var(--console-panel-bg); - border-radius: 8px; + border-radius: var(--radius-md); grid-template-columns: 128px minmax(0, 1fr); min-width: 0; display: grid; @@ -254,7 +254,7 @@ .voucher-state[data-v-b08e3df0] { background: var(--console-panel-bg); border: 1px solid var(--console-panel-border); - border-radius: 8px; + border-radius: var(--radius-md); } .voucher-state[data-v-b08e3df0] .list-empty { justify-content: center; @@ -266,7 +266,7 @@ .voucher-skeleton[data-v-b08e3df0] { border: 1px solid var(--console-panel-border); background: var(--console-panel-bg); - border-radius: 8px; + border-radius: var(--radius-md); flex-direction: column; gap: 20px; min-height: 260px; @@ -287,8 +287,8 @@ background: 0 0; padding: 0; } -/* 视口条件 (width<=1000px) 下的响应式覆盖;保留相对基础规则的层叠顺序。 */ -@media (width<=1000px) { +/* 视口条件 (width<=1024px) 下的响应式覆盖;保留相对基础规则的层叠顺序。 */ +@media (width<=1024px) { .guide-note[data-v-b08e3df0] { display: none; } diff --git a/app/components/AuthProviders.vue b/app/components/AuthProviders.vue index 2c2ba42..5805fc5 100644 --- a/app/components/AuthProviders.vue +++ b/app/components/AuthProviders.vue @@ -323,7 +323,7 @@ var fe = { } return ( onMounted(async () => { - ((A = window.matchMedia(`(min-width: 761px)`)), + ((A = window.matchMedia(`(min-width: 769px)`)), j(), A.addEventListener(`change`, j), await D().catch(() => {})); diff --git a/app/components/HostList.vue b/app/components/HostList.vue index 67b8b2b..459856a 100644 --- a/app/components/HostList.vue +++ b/app/components/HostList.vue @@ -1544,7 +1544,8 @@ var Ye = { type: `submit`, label: `搜索`, icon: `pi pi-search`, - size: `small`, + severity: `secondary`, + outlined: ``, disabled: unref(P), }, null, diff --git a/app/components/RichTextEditor.vue b/app/components/RichTextEditor.vue index 3c81f3d..7046960 100644 --- a/app/components/RichTextEditor.vue +++ b/app/components/RichTextEditor.vue @@ -5,6 +5,7 @@ import { renderList } from "vue"; import { onMounted } from "vue"; import { normalizeClass } from "vue"; import { mergeModels } from "vue"; +import { renderSlot } from "vue"; import { useModel } from "vue"; import { watch } from "vue"; import { ref } from "vue"; @@ -204,6 +205,7 @@ var g = [`aria-label`], ), 64, )), + renderSlot(t.$slots, `toolbar-end`, {}, void 0, !0), ], 8, g, diff --git a/app/components/RingProgress.vue b/app/components/RingProgress.vue index 1ba042e..69bd2eb 100644 --- a/app/components/RingProgress.vue +++ b/app/components/RingProgress.vue @@ -84,7 +84,7 @@ var u = [`width`, `height`, `viewBox`], cy: o.size / 2, r: unref(g), fill: `none`, - stroke: `#0ea5e9`, + stroke: `#2563eb`, "stroke-width": 6, "stroke-linecap": `round`, "stroke-dasharray": unref(_), diff --git a/app/components/home/HomeConsumeTrend.vue b/app/components/home/HomeConsumeTrend.vue index 9a94643..e5fce27 100644 --- a/app/components/home/HomeConsumeTrend.vue +++ b/app/components/home/HomeConsumeTrend.vue @@ -116,7 +116,7 @@ var x = { } }); // 图表选项随月份数据与主题更新,ChartBox 负责图表实例的生命周期。 - let z = computed(() => (P.isDark.value ? `#618dff` : `#0052d9`)), + let z = computed(() => (P.isDark.value ? `#60a5fa` : `#2563eb`)), B = computed(() => ({ grid: { left: 4, diff --git a/app/components/home/HomeWalletCard.vue b/app/components/home/HomeWalletCard.vue index b214a8e..8d8d154 100644 --- a/app/components/home/HomeWalletCard.vue +++ b/app/components/home/HomeWalletCard.vue @@ -159,16 +159,29 @@ var C = { label: `充值`, icon: `pi pi-plus`, disabled: unref(k), + severity: unref(k) ? `secondary` : void 0, + outlined: unref(k), title: unref(k) ? `站点已关闭充值` : void 0, onClick: (i[1] ||= (e) => (N.value = !0)), }, null, 8, - [`disabled`, `title`], + [`disabled`, `severity`, `outlined`, `title`], ), ], 2, ), + unref(k) + ? (openBlock(), + createElementBlock( + `div`, + { + key: 0, + class: `wallet-hint`, + }, + `站点暂未开放充值`, + )) + : createCommentVNode(``, !0), ]), createVNode( S, diff --git a/app/components/instance/InstanceMonitor.vue b/app/components/instance/InstanceMonitor.vue index aeb4da0..c8ad0ca 100644 --- a/app/components/instance/InstanceMonitor.vue +++ b/app/components/instance/InstanceMonitor.vue @@ -94,7 +94,7 @@ var O = defineAsyncComponent(() => let g = a, y = useApi(), S = useTheme_t(), - U = computed(() => (S.isDark.value ? `#38bdf8` : `#0ea5e9`)), + U = computed(() => (S.isDark.value ? `#60a5fa` : `#2563eb`)), W = ref([]), G = ref(!1), K = ref(``), diff --git a/app/components/instance/InstanceOverview.vue b/app/components/instance/InstanceOverview.vue index 640f14a..9b1a1d1 100644 --- a/app/components/instance/InstanceOverview.vue +++ b/app/components/instance/InstanceOverview.vue @@ -244,7 +244,7 @@ var le = defineAsyncComponent(() => key: 3, class: `network-chart-state`, }, - k = `#3b82f6`, + k = `#f59e0b`, A = Object.assign( _plugin_vue_export_helper_t( defineComponent({ @@ -275,7 +275,7 @@ var le = defineAsyncComponent(() => configuration_display_n(x.module, x.info.raw, x.host), ), N = computed(() => instance_status_n(x.host, x.info.powerStatus)), - P = computed(() => (j.isDark.value ? `#38bdf8` : `#0ea5e9`)), + P = computed(() => (j.isDark.value ? `#60a5fa` : `#2563eb`)), F = ref(null), I = ref(!1), L = ref(!1), diff --git a/app/lib/backend-menu.js b/app/lib/backend-menu.js index 820f26a..b5a34e6 100644 --- a/app/lib/backend-menu.js +++ b/app/lib/backend-menu.js @@ -125,6 +125,9 @@ function o(e) { "/vouchers": `lucide:ticket`, "/account": `lucide:user`, "/account/api-keys": `lucide:key-round`, + "/security/ssh-keys": `lucide:key-square`, + "/security/groups": `lucide:shield`, + "/security/domains": `lucide:globe`, "/account/connections": `lucide:link`, "/messages": `lucide:mail`, "/logbook": `lucide:scroll-text`, diff --git a/app/pages/bills/[id].vue b/app/pages/bills/[id].vue index 8c4fa3a..5bf4212 100644 --- a/app/pages/bills/[id].vue +++ b/app/pages/bills/[id].vue @@ -2,6 +2,7 @@ /** * 账单详情兼容路由:复用订单详情页面;以 fullPath 为组件键,保证切换账单参数时重新建立详情状态。 */ +import { definePageMeta } from "#imports"; import "~/assets/styles/PaymentDialog.BNFKQF1U.css"; import "~/assets/styles/_id_.gjoJy9S8.css"; definePageMeta({ diff --git a/app/pages/bills/index.vue b/app/pages/bills/index.vue index 0c3033d..b8d1202 100644 --- a/app/pages/bills/index.vue +++ b/app/pages/bills/index.vue @@ -2,6 +2,7 @@ /** * 旧账单列表入口:保留原查询参数与 hash,重定向到 /finance?tab=bills;本页不维护第二份账单列表。 */ +import { definePageMeta } from "#imports"; definePageMeta({ redirect: { redirect: (e) => ({ diff --git a/app/pages/finance/index.vue b/app/pages/finance/index.vue index 378d332..137eb4d 100644 --- a/app/pages/finance/index.vue +++ b/app/pages/finance/index.vue @@ -2,6 +2,7 @@ /** * 财务中心:账单、交易、余额、提现与冻结记录分开加载;钱包入口为本页别名,充值/提现能力由站点配置决定。 */ +import { definePageMeta } from "#imports"; import "~/assets/styles/orders.BflDlvVz.css"; import "~/assets/styles/WithdrawDialog.ks0wdKEK.css"; import "~/assets/styles/PaymentDialog.BNFKQF1U.css"; @@ -533,6 +534,42 @@ var je = { ), ]), ]), + createElementVNode(`div`, { class: `wallet-stat` }, [ + createElementVNode( + `div`, + { class: `summary-label` }, + `本月消费`, + ), + createElementVNode( + `div`, + { class: `wallet-stat-value` }, + toDisplayString( + unref(S).overview?.this_month_consume == null || + unref(S).overview?.this_month_consume === `` + ? `—` + : `¥` + unref(S).overview?.this_month_consume, + ), + 1, + ), + ]), + createElementVNode(`div`, { class: `wallet-stat` }, [ + createElementVNode( + `div`, + { class: `summary-label` }, + `累计消费`, + ), + createElementVNode( + `div`, + { class: `wallet-stat-value` }, + toDisplayString( + unref(S).overview?.consume == null || + unref(S).overview?.consume === `` + ? `—` + : `¥` + unref(S).overview?.consume, + ), + 1, + ), + ]), unref(M) === null ? createCommentVNode(``, !0) : (openBlock(), @@ -688,7 +725,6 @@ var je = { { label: `保存`, icon: `pi pi-check`, - size: `small`, loading: unref(A), onClick: nt, }, @@ -1867,27 +1903,6 @@ var je = { [`value`], ), ]), - createElementVNode(`details`, Ze, [ - (n[32] ||= createElementVNode( - `summary`, - null, - `消费概览`, - -1, - )), - createElementVNode( - `p`, - null, - ` 本月消费:¥` + - toDisplayString( - unref(S).overview?.this_month_consume ?? `—`, - ) + - ` 累计消费:¥` + - toDisplayString(unref(S).overview?.consume ?? `—`) + - ` 累计入账:¥` + - toDisplayString(unref(K)), - 1, - ), - ]), createVNode( J, { diff --git a/app/pages/forgot-password.vue b/app/pages/forgot-password.vue index 5579228..b3976f5 100644 --- a/app/pages/forgot-password.vue +++ b/app/pages/forgot-password.vue @@ -2,6 +2,7 @@ /** * 密码找回:手机或邮箱验证码配合验证码挑战提交重置请求,成功后返回登录并保留经处理的站内跳转参数。 */ +import { definePageMeta } from "#imports"; import "~/assets/styles/PhoneCodeField.CwyHXfML.css"; import "~/assets/styles/GeetestField.DiieTibK.css"; import "~/assets/styles/CaptchaField.BSN3ZbsD.css"; diff --git a/app/pages/help.vue b/app/pages/help.vue index ae4b4f3..38e7fdd 100644 --- a/app/pages/help.vue +++ b/app/pages/help.vue @@ -2,6 +2,7 @@ /** * 帮助中心:支持独立文章路由和资源中心嵌入模式;目录与文章分别加载,通过请求序号防止快速切换文章时出现旧正文。 */ +import { definePageMeta } from "#imports"; import "~/assets/styles/help.BSOB30LE.css"; definePageMeta({ scrollToTop: !0, diff --git a/app/pages/home.htm.vue b/app/pages/home.htm.vue index 1ac051b..5919e38 100644 --- a/app/pages/home.htm.vue +++ b/app/pages/home.htm.vue @@ -2,6 +2,7 @@ /** * 旧平台单点登录入口:路由守卫负责从 URL 提取并清理凭据;本页只发起服务端验证,支持失败后重试并在离页时取消待处理凭据。 */ +import { definePageMeta } from "#imports"; import { onBeforeUnmount, onMounted, ref } from "vue"; import { useHead, useRouter } from "#app"; import { NuxtLink } from "#components"; diff --git a/app/pages/invoices/invoice.vue b/app/pages/invoices/invoice.vue index 99c6817..8e26417 100644 --- a/app/pages/invoices/invoice.vue +++ b/app/pages/invoices/invoice.vue @@ -2,6 +2,7 @@ /** * 发票详情:按查询 ID 加载发票,区分历史登记与正式电子文件;下载链接必须通过协议与字符校验。 */ +import { definePageMeta } from "#imports"; import "~/assets/styles/invoice.B6sYFYlb.css"; definePageMeta({ key: (e) => e.fullPath, diff --git a/app/pages/login.vue b/app/pages/login.vue index fbb2e4a..9f2e105 100644 --- a/app/pages/login.vue +++ b/app/pages/login.vue @@ -2,6 +2,7 @@ /** * 会员登录:站点配置决定手机/邮箱密码与短信入口;验证码、安全挑战及第三方登录共用会话核心。attemptVersion 隔离取消、离页和重新提交后的旧响应。 */ +import { definePageMeta } from "#imports"; import { computed, onBeforeUnmount, diff --git a/app/pages/messages/index.vue b/app/pages/messages/index.vue index 64fd508..0f415b8 100644 --- a/app/pages/messages/index.vue +++ b/app/pages/messages/index.vue @@ -2,6 +2,7 @@ /** * 站内消息:分页筛选、批量已读/删除与详情弹窗;读状态变化同时刷新公共邮箱计数,详情请求用序号隔离快速切换。 */ +import { definePageMeta } from "#imports"; import "~/assets/styles/NotificationPreferences.DcH8Noxd.css"; import "~/assets/styles/messages.asRdYcVu.css"; definePageMeta({ diff --git a/app/pages/news.vue b/app/pages/news.vue index f1cea1c..16a4f84 100644 --- a/app/pages/news.vue +++ b/app/pages/news.vue @@ -2,6 +2,7 @@ /** * 新闻资讯:分类与关键词分页查询,文章可独立打开或嵌入资源中心;正文加载和列表状态分开维护。 */ +import { definePageMeta } from "#imports"; import "~/assets/styles/news.CbIzdrjt.css"; definePageMeta({ scrollToTop: !0, diff --git a/app/pages/notices/index.vue b/app/pages/notices/index.vue index 269bc5d..41d634d 100644 --- a/app/pages/notices/index.vue +++ b/app/pages/notices/index.vue @@ -2,6 +2,7 @@ /** * 平台公告:分类、关键词和排序分页查询;详情路由与资源中心嵌入共用加载逻辑,列表和详情分别维护请求代次。 */ +import { definePageMeta } from "#imports"; import "~/assets/styles/notices.BXNGOj-Q.css"; definePageMeta({ key: (e) => e.fullPath, diff --git a/app/pages/oauth/bind.vue b/app/pages/oauth/bind.vue index d1b1ed8..19734d5 100644 --- a/app/pages/oauth/bind.vue +++ b/app/pages/oauth/bind.vue @@ -2,6 +2,7 @@ /** * 第三方首次登录绑定:微信扫码和通用 OAuth 使用各自的待绑定会话;先验证授权状态,再以手机/邮箱验证码绑定并校验服务端 JWT。 */ +import { definePageMeta } from "#imports"; import "~/assets/styles/PhoneCodeField.CwyHXfML.css"; import "~/assets/styles/GeetestField.DiieTibK.css"; import "~/assets/styles/CaptchaField.BSN3ZbsD.css"; diff --git a/app/pages/oauth/callback.vue b/app/pages/oauth/callback.vue index 47778b3..5cb8f87 100644 --- a/app/pages/oauth/callback.vue +++ b/app/pages/oauth/callback.vue @@ -2,6 +2,7 @@ /** * OAuth 回调恢复页:从服务端恢复授权会话,不从 URL 直接接纳登录令牌;结果只能进入登录或继续绑定流程。 */ +import { definePageMeta } from "#imports"; definePageMeta({ layout: `blank`, }); diff --git a/app/pages/official-site.vue b/app/pages/official-site.vue index c8c655d..83a416c 100644 --- a/app/pages/official-site.vue +++ b/app/pages/official-site.vue @@ -2,6 +2,7 @@ /** * 官网内容页:从公共站点内容模型读取主题、版块顺序、产品及卖点;使用 official-site 布局,主题值与外链展示通过公共工具约束。 */ +import { definePageMeta } from "#imports"; definePageMeta({ layout: `official-site`, }); diff --git a/app/pages/orders/[id].vue b/app/pages/orders/[id].vue index bbd13fd..65cc694 100644 --- a/app/pages/orders/[id].vue +++ b/app/pages/orders/[id].vue @@ -41,6 +41,7 @@ import PaymentDialog from "~/components/PaymentDialog.vue"; import tag from "primevue/tag"; import skeleton from "primevue/skeleton"; import { t as bandwidth_display_t } from "~/lib/bandwidth-display.js"; +import { logoUrl } from "~/utils/brand.js"; // 仅从符合续费周期格式的描述中提取商品名,避免把日期区间重复显示成产品标题。 function D(e) { let t = e.description?.trim() || ``, @@ -747,6 +748,41 @@ var ue = { : createCommentVNode(``, !0), createElementVNode(`div`, me, [ createElementVNode(`article`, he, [ + createElementVNode( + `div`, + { + class: `receipt-print-head`, + }, + [ + createElementVNode(`img`, { + src: logoUrl, + alt: `破碎工坊云`, + class: `receipt-print-logo`, + }), + createElementVNode( + `div`, + { + class: `receipt-print-meta`, + }, + [ + createElementVNode( + `strong`, + null, + `订单凭据`, + ), + createElementVNode( + `span`, + null, + `订单号 #` + + toDisplayString( + unref(j).id, + ), + 1, + ), + ], + ), + ], + ), createElementVNode(`header`, ge, [ createElementVNode(`div`, _e, [ createElementVNode(`span`, ve, [ diff --git a/app/pages/orders/index.vue b/app/pages/orders/index.vue index f108555..562ec20 100644 --- a/app/pages/orders/index.vue +++ b/app/pages/orders/index.vue @@ -217,6 +217,17 @@ var Se = { function Y(e) { return C(e, w.value) || `/bills`; } + function openMobileOrder({ originalEvent, data }) { + if (!window.matchMedia(`(width < 640px)`).matches) return; + const target = originalEvent.target; + if ( + target.closest(`a, button, input, [role="checkbox"]`) || + target.closest(`td`)?.cellIndex === 0 + ) + return; + const destination = C(data.id, w.value); + if (destination) navigateTo(destination); + } let X = computed(() => N.value.filter( (e) => String(e.status) === `Unpaid` && e.type !== `on_demand`, @@ -639,6 +650,7 @@ var Se = { first: (unref(K) - 1) * unref(q), dataKey: `id`, rowSelectable: Be, + onRowClick: openMobileOrder, metaKeySelection: !1, }, { @@ -670,7 +682,7 @@ var Se = { { header: `下单时间`, style: { - "min-width": `170px`, + "white-space": `nowrap`, }, }, { @@ -692,7 +704,7 @@ var Se = { { header: `ID`, style: { - width: `120px`, + "white-space": `nowrap`, }, }, { @@ -747,6 +759,7 @@ var Se = { { header: `商品`, style: { + width: `100%`, "min-width": `220px`, }, }, @@ -777,7 +790,7 @@ var Se = { { header: `支付方式`, style: { - "min-width": `130px`, + "white-space": `nowrap`, }, }, { @@ -797,7 +810,7 @@ var Se = { { header: `状态`, style: { - width: `110px`, + "white-space": `nowrap`, }, }, { @@ -824,8 +837,10 @@ var Se = { y, { header: `总价`, + headerClass: `amount-heading`, + bodyClass: `amount-cell`, style: { - width: `120px`, + "white-space": `nowrap`, }, }, { @@ -844,8 +859,10 @@ var Se = { y, { header: ``, + bodyClass: `action-cell`, style: { - width: `115px`, + width: `1%`, + "white-space": `nowrap`, }, }, { diff --git a/app/pages/orders/order/index.vue b/app/pages/orders/order/index.vue index aac2f51..6cc989d 100644 --- a/app/pages/orders/order/index.vue +++ b/app/pages/orders/order/index.vue @@ -2,6 +2,7 @@ /** * 旧订单详情路由适配层:复用 /orders/[id] 的详情实现,并以完整地址为组件键以响应查询 ID 变化。 */ +import { definePageMeta } from "#imports"; import "~/assets/styles/PaymentDialog.BNFKQF1U.css"; import "~/assets/styles/_id_.gjoJy9S8.css"; definePageMeta({ diff --git a/app/pages/orders/order/paid.vue b/app/pages/orders/order/paid.vue index 1399eb9..f1350dd 100644 --- a/app/pages/orders/order/paid.vue +++ b/app/pages/orders/order/paid.vue @@ -2,6 +2,7 @@ /** * 旧支付结果路由适配层:复用订单详情及服务端订单查询,不能仅凭跳入此路径认定付款成功。 */ +import { definePageMeta } from "#imports"; import "~/assets/styles/PaymentDialog.BNFKQF1U.css"; import "~/assets/styles/_id_.gjoJy9S8.css"; definePageMeta({ diff --git a/app/pages/orders/order/pay.vue b/app/pages/orders/order/pay.vue index 9da2c7e..bd18893 100644 --- a/app/pages/orders/order/pay.vue +++ b/app/pages/orders/order/pay.vue @@ -2,6 +2,7 @@ /** * 旧订单支付路由适配层:复用订单详情,详情页根据 /pay 后缀展示支付流程;本文件不自行确认支付结果。 */ +import { definePageMeta } from "#imports"; import "~/assets/styles/PaymentDialog.BNFKQF1U.css"; import "~/assets/styles/_id_.gjoJy9S8.css"; definePageMeta({ diff --git a/app/pages/products/[id].vue b/app/pages/products/[id].vue index e7b1a98..b0ccbdf 100644 --- a/app/pages/products/[id].vue +++ b/app/pages/products/[id].vue @@ -2,6 +2,7 @@ /** * 商品详情/购物车编辑入口:校验商品与编辑位置,按服务端模块选择配置器;下单结果交给公共支付弹窗处理。 */ +import { definePageMeta } from "#imports"; import "~/assets/styles/MfDcimConfig.BhC_eZ0V.css"; import "~/assets/styles/MfCloudConfig.DbgUu8qr.css"; import "~/assets/styles/KkyEcsConfig.BFaAwQPZ.css"; diff --git a/app/pages/products/cloud-server.vue b/app/pages/products/cloud-server.vue index 4c9beda..3f7ca2c 100644 --- a/app/pages/products/cloud-server.vue +++ b/app/pages/products/cloud-server.vue @@ -2,6 +2,7 @@ /** * 云服务器订购:先筛出云服务分类,再按分页商品选择对应模块配置器;分类和商品详情各用独立代次处理快速切换。 */ +import { definePageMeta } from "#imports"; import "~/assets/styles/MfCloudConfig.DbgUu8qr.css"; import "~/assets/styles/KkyEcsConfig.BFaAwQPZ.css"; import "~/assets/styles/ConfigResourceOption.Dj4VopnA.css"; diff --git a/app/pages/products/dedicated-server/customize.vue b/app/pages/products/dedicated-server/customize.vue index f84735e..eaba2d8 100644 --- a/app/pages/products/dedicated-server/customize.vue +++ b/app/pages/products/dedicated-server/customize.vue @@ -2,6 +2,7 @@ /** * 物理服务器定制入口:只接受有效商品 ID 且模块为 mf_dcim/remf_dcim,避免把其他类型商品交给物理服务器配置器。 */ +import { definePageMeta } from "#imports"; import "~/assets/styles/dedicated-server.CiJfMYtk.css"; import "~/assets/styles/ConfigDiskCard.Dx9IqqQ_.css"; import "~/assets/styles/PromoCodeField.qFEkB6Hm.css"; diff --git a/app/pages/register.vue b/app/pages/register.vue index d477acb..74dc9dd 100644 --- a/app/pages/register.vue +++ b/app/pages/register.vue @@ -2,6 +2,7 @@ /** * 账号注册:站点配置控制手机/邮箱入口、验证码要求和动态资料;提交成功跳回登录,不在本页假定已取得登录会话。 */ +import { definePageMeta } from "#imports"; import "~/assets/styles/PhoneCodeField.CwyHXfML.css"; import "~/assets/styles/GeetestField.DiieTibK.css"; import "~/assets/styles/CaptchaField.BSN3ZbsD.css"; diff --git a/app/pages/remote-console.vue b/app/pages/remote-console.vue index 5027211..3008fbb 100644 --- a/app/pages/remote-console.vue +++ b/app/pages/remote-console.vue @@ -2,6 +2,7 @@ /** * 独立远控窗口:校验 hostId 与受支持模块后挂载 RemoteConsole;mf_dcim 先收集操作密码,页面只管理连接界面,不在前端保存长期远控凭据。 */ +import { definePageMeta } from "#imports"; import "~/assets/styles/RemoteConsole.DLmX5UZu.css"; import "~/assets/styles/remote-console.zcxaOxxS.css"; definePageMeta({ diff --git a/app/pages/security/domains/index.vue b/app/pages/security/domains/index.vue index e7cc127..0a7208d 100644 --- a/app/pages/security/domains/index.vue +++ b/app/pages/security/domains/index.vue @@ -2,6 +2,7 @@ /** * 域名白名单:按主机及审核状态查询记录;提交前必须加载可用主机、实名认证状态和当前主机对应的动态表单。 */ +import { definePageMeta } from "#imports"; import "~/assets/styles/domains.GiD6NSti.css"; definePageMeta({ alias: [`/security/domain-whitelist`], diff --git a/app/pages/security/groups/index.vue b/app/pages/security/groups/index.vue index 6321911..b227f0c 100644 --- a/app/pages/security/groups/index.vue +++ b/app/pages/security/groups/index.vue @@ -2,6 +2,7 @@ /** * 安全组:组列表、出入站规则与实例关联共用页面;主列表、规则、已关联和可关联主机分别用请求代次隔离,批量关联保留失败目标供重试。 */ +import { definePageMeta } from "#imports"; import "~/assets/styles/PageInfoNotice._16xRFrB.css"; import "~/assets/styles/groups.Buw8nwl1.css"; definePageMeta({ diff --git a/app/pages/security/ssh-keys/index.vue b/app/pages/security/ssh-keys/index.vue index 3310eb0..5f468ad 100644 --- a/app/pages/security/ssh-keys/index.vue +++ b/app/pages/security/ssh-keys/index.vue @@ -325,24 +325,27 @@ onBeforeUnmount(() => { }} - +