292 lines
7.7 KiB
CSS
292 lines
7.7 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: 10px;
|
|
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, #3b82f6);
|
|
}
|
|
.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, #3b82f6);
|
|
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: 6px;
|
|
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: 6px;
|
|
}
|
|
.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;
|
|
}
|
|
}
|