Files
console-dev/app/assets/styles/PaymentDialog.BNFKQF1U.css
T
cneicy 42dfead9cd
前端验证 / verify (push) Failing after 15m3s
feat(ui): 优化控制台响应式布局与视觉体验
- 统一页面标题、圆角、字体和响应式断点,调整暗色主题及图表配色
- 新增表格列标签插件,在窄屏下将表格转换为卡片布局,优化实例、订单、工单等列表展示
- 支持移动端点击订单行进入详情,并完善订单凭据的打印布局
- 在财务中心展示本月及累计消费,补充充值关闭时的提示
- 优化工单详情布局,将附件上传入口整合至富文本编辑器工具栏
- 调整实例操作按钮、SSH 密钥操作及安全菜单图标
- 为多个页面显式导入 definePageMeta,完善页面元数据声明
2026-11-07 00:09:57 +08:00

292 lines
7.8 KiB
CSS

/* 订单支付面板:渠道、余额组合、代金券、支付反馈及内嵌操作区。 */
/* 导入方:app/components/HostList.vue、app/components/PaymentDialog.vue、app/components/RechargeDialog.vue、app/components/home/HomeWalletCard.vue、app/components/instance/DcimActions.vue、app/components/instance/DcimManage.vue、app/components/instance/ImagePurchaseDialog.vue、app/components/instance/InstanceAccess.vue、app/components/instance/LegacyDcimManage.vue、app/pages/account/index.vue、app/pages/account/realname/company.vue、app/pages/account/realname/index.vue、app/pages/account/realname/personal.vue、app/pages/bills/[id].vue、app/pages/cart/index.vue、app/pages/cloud-servers/index.vue、app/pages/dedicated-servers/index.vue、app/pages/finance/index.vue、app/pages/index.vue、app/pages/invoices/index.vue、app/pages/invoices/request.vue、app/pages/orders/[id].vue、app/pages/orders/order/index.vue、app/pages/orders/order/paid.vue、app/pages/orders/order/pay.vue、app/pages/products/[id].vue、app/pages/products/cloud-server.vue、app/pages/products/dedicated-server/customize.vue、app/pages/transfer/index.vue。 */
.order-line[data-v-4931e21e] {
color: var(--p-text-muted-color, #64748b);
justify-content: space-between;
align-items: center;
margin-bottom: 14px;
font-size: 0.9375rem;
display: flex;
}
.amount[data-v-4931e21e] {
color: #ef4444;
font-weight: 600;
}
/* 支付渠道与余额选择区域;选中样式由组件状态驱动,不以CSS决定实际付款渠道。 */
.gateway-list[data-v-4931e21e] {
flex-direction: column;
gap: 10px;
display: flex;
}
.gateway-item[data-v-4931e21e] {
border: 1px solid var(--p-content-border-color, #e2e8f0);
background: var(--p-content-background);
cursor: pointer;
border-radius: var(--radius-lg);
align-items: center;
gap: 10px;
padding: 12px 14px;
transition:
border-color 0.15s,
background 0.15s;
display: flex;
}
.gateway-item.active[data-v-4931e21e],
.gateway-item[data-v-4931e21e]:hover {
border-color: var(--p-primary-color);
}
.gateway-item.active[data-v-4931e21e] {
background: var(--p-highlight-background);
}
.gateway-icon[data-v-4931e21e] {
-o-object-fit: contain;
object-fit: contain;
flex-shrink: 0;
width: 26px;
height: 26px;
}
.pay-box[data-v-4931e21e] {
justify-content: center;
min-height: 180px;
display: flex;
}
.pay-box[data-v-4931e21e] img {
max-width: 200px;
}
.polling-tip[data-v-4931e21e] {
color: var(--p-text-muted-color, #94a3b8);
justify-content: center;
align-items: center;
gap: 8px;
font-size: 0.9375rem;
display: flex;
}
.paid[data-v-4931e21e] {
text-align: center;
padding: 20px 0;
}
.paid i[data-v-4931e21e] {
color: var(--p-primary-color);
font-size: 2.75rem;
}
.paid p[data-v-4931e21e] {
margin: 12px 0 0;
font-size: 1.0625rem;
font-weight: 500;
}
.msg[data-v-4931e21e] {
margin-top: 12px;
}
/* 代金券选项及反馈;无可用券和加载状态应与已选中状态清晰区分。 */
.voucher-row[data-v-4931e21e] {
border: 1px solid var(--p-content-border-color);
border-radius: var(--radius-md);
flex-direction: column;
gap: 10px;
min-width: 0;
margin-bottom: 18px;
padding: 14px;
display: flex;
}
.voucher-heading[data-v-4931e21e] {
flex-wrap: wrap;
justify-content: space-between;
align-items: center;
gap: 8px;
font-size: 0.9375rem;
display: flex;
}
.voucher-heading a[data-v-4931e21e] {
color: var(--p-primary-color);
align-items: center;
gap: 6px;
font-size: 0.875rem;
text-decoration: none;
display: inline-flex;
}
.voucher-heading a[data-v-4931e21e]:hover {
text-decoration: underline;
}
.voucher-heading i[data-v-4931e21e] {
font-size: 0.625rem;
}
.voucher-select[data-v-4931e21e] {
width: 100%;
min-width: 0;
}
.voucher-empty[data-v-4931e21e],
.voucher-help[data-v-4931e21e] {
color: var(--p-text-muted-color);
margin: 0;
font-size: 0.875rem;
line-height: 1.6;
}
.voucher-empty[data-v-4931e21e],
.voucher-feedback[data-v-4931e21e] {
font-size: 0.9375rem;
}
.voucher-feedback[data-v-4931e21e] {
color: var(--p-red-500, #ef4444);
justify-content: space-between;
align-items: center;
gap: 8px;
display: flex;
}
/* 允许连续长文本换行,防止IP、密钥或用户输入撑破当前容器;不会修改原始数据。 */
.voucher-choice[data-v-4931e21e] {
white-space: normal;
overflow-wrap: anywhere;
flex-direction: column;
gap: 4px;
min-width: 0;
display: flex;
}
.voucher-choice small[data-v-4931e21e] {
color: var(--p-text-muted-color);
font-size: 0.875rem;
}
.voucher-option[data-v-4931e21e] {
color: #ef4444;
margin-left: 8px;
font-size: 0.875rem;
}
.voucher-tip[data-v-4931e21e] {
color: #22c55e;
margin: -6px 0 12px;
font-size: 0.875rem;
}
.gateway-item[data-v-4931e21e] {
border-radius: 0;
padding: 10px 14px;
font-size: 1rem;
}
.gateway-list[data-v-4931e21e] {
gap: 0;
}
.gateway-item + .gateway-item[data-v-4931e21e] {
margin-top: -1px;
}
/* 键盘操作的可见焦点:不要只保留鼠标 hover 效果而移除此反馈。 */
.gateway-item[data-v-4931e21e]:focus-visible {
outline: 2px solid var(--p-primary-color);
outline-offset: 2px;
}
.gateway-selected[data-v-4931e21e] {
color: var(--p-primary-color);
flex-shrink: 0;
margin-left: auto;
font-size: 1.375rem;
}
.gateway-item[data-v-4931e21e]:disabled {
cursor: not-allowed;
opacity: 0.65;
}
.gateway-item.active[data-v-4931e21e] {
z-index: 1;
box-shadow: inset 0 0 0 1px var(--p-primary-color);
position: relative;
}
.gateway-list > .gateway-item[data-v-4931e21e]:first-of-type {
border-radius: 6px 6px 0 0;
}
.gateway-list > .gateway-item[data-v-4931e21e]:last-of-type {
border-radius: 0 0 6px 6px;
}
.gateway-list > .gateway-item[data-v-4931e21e]:only-of-type {
border-radius: var(--radius-md);
}
.balance-icon[data-v-4931e21e] {
text-align: center;
flex-shrink: 0;
width: 26px;
font-size: 1.25rem;
}
.balance-copy[data-v-4931e21e] {
text-align: left;
flex-wrap: wrap;
align-items: baseline;
gap: 4px 12px;
min-width: 0;
display: flex;
}
.balance-title[data-v-4931e21e] {
white-space: nowrap;
flex-shrink: 0;
}
.balance-copy small[data-v-4931e21e] {
color: var(--p-text-muted-color);
font-size: 0.875rem;
line-height: 1.6;
}
.gateway-title[data-v-4931e21e] {
text-align: left;
overflow-wrap: anywhere;
min-width: 0;
}
.payment-combination[data-v-4931e21e] {
margin-top: 26px;
}
.combination-amount[data-v-4931e21e] {
margin: 0 0 12px;
font-size: 1rem;
font-weight: 400;
line-height: 1.6;
}
.combination-amount b[data-v-4931e21e] {
font-variant-numeric: tabular-nums;
font-weight: 500;
}
.balance-breakdown[data-v-4931e21e] {
color: var(--p-text-muted-color);
flex-direction: column;
gap: 5px;
margin-top: 12px;
font-size: 0.875rem;
line-height: 1.7;
display: flex;
}
.balance-breakdown b[data-v-4931e21e] {
color: var(--p-primary-color);
}
.balance-note[data-v-4931e21e] {
color: var(--p-text-muted-color);
margin-top: 12px;
font-size: 0.875rem;
line-height: 1.7;
}
.amount[data-v-4931e21e] {
color: var(--p-text-color);
}
/* 内嵌支付模式的外壳覆盖,与弹窗共用同一套支付逻辑。 */
.inline-payment h3[data-v-4931e21e] {
margin: 0 0 14px;
font-size: 1rem;
font-weight: 400;
}
.inline-payment .order-line[data-v-4931e21e] {
display: none;
}
.inline-pay-actions[data-v-4931e21e] {
flex-direction: column;
gap: 10px;
margin-top: 56px;
display: flex;
}
.inline-payment .gateway-item[data-v-4931e21e] {
min-height: 56px;
padding: 14px 18px;
}
/* 视口条件 (width<=640px) 下的响应式覆盖;保留相对基础规则的层叠顺序。 */
@media (width<=640px) {
.order-line[data-v-4931e21e] {
gap: 10px;
}
.order-line[data-v-4931e21e],
.voucher-row[data-v-4931e21e] {
flex-wrap: wrap;
}
.voucher-select[data-v-4931e21e] {
min-width: 0;
}
}