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

290 lines
6.4 KiB
CSS

/* 实例访问管理:凭据、修复/重装选项、系统选择及风险确认。 */
/* 导入方:app/components/instance/InstanceAccess.vue。 */
.ac[data-v-cd28d8b4] {
gap: 42px;
}
.ac[data-v-cd28d8b4],
.block[data-v-cd28d8b4] {
flex-direction: column;
display: flex;
}
.block[data-v-cd28d8b4] {
gap: 14px;
min-width: 0;
}
.block-title[data-v-cd28d8b4] {
margin: 0;
font-size: 1.125rem;
font-weight: 600;
}
.block-desc[data-v-cd28d8b4] {
color: var(--p-text-muted-color);
margin: -7px 0 0;
font-size: 1rem;
line-height: 1.5;
}
.info-table[data-v-cd28d8b4] {
border: 1px solid var(--console-panel-border);
box-shadow: var(--console-panel-shadow);
background: var(--console-panel-bg);
border-radius: var(--radius-md);
overflow: hidden;
}
.kv[data-v-cd28d8b4] {
grid-template-columns: 16.6667% minmax(0, 1fr);
align-items: center;
min-height: 49px;
display: grid;
}
.kv + .kv[data-v-cd28d8b4] {
border-top: 1px solid var(--console-panel-border);
}
.kv[data-v-cd28d8b4]:nth-child(2n) {
background: var(--console-page-bg);
}
.kv > span[data-v-cd28d8b4] {
color: var(--p-text-muted-color);
padding: 14px;
font-weight: 600;
}
/* 允许连续长文本换行,防止IP、密钥或用户输入撑破当前容器;不会修改原始数据。 */
.kv > div[data-v-cd28d8b4] {
overflow-wrap: anywhere;
min-width: 0;
padding: 14px;
}
.action-cell[data-v-cd28d8b4],
.password-cell[data-v-cd28d8b4] {
flex-direction: column;
align-items: flex-start;
gap: 7px;
display: flex;
}
.password-value[data-v-cd28d8b4] {
align-items: center;
display: flex;
}
.dialog-error[data-v-cd28d8b4] {
margin-bottom: 14px;
}
.act[data-v-cd28d8b4] {
width: 21px;
height: 21px;
color: var(--p-text-muted-color, #94a3b8);
cursor: pointer;
background: 0 0;
border: 0;
border-radius: var(--radius-sm);
flex-shrink: 0;
justify-content: center;
align-items: center;
padding: 0;
font-size: 0.875rem;
display: inline-flex;
}
.act.ok[data-v-cd28d8b4],
.act[data-v-cd28d8b4]:hover {
color: var(--p-primary-color, #10b981);
}
.block-actions[data-v-cd28d8b4] {
gap: 8px;
padding-top: 4px;
display: flex;
}
.repair[data-v-cd28d8b4] {
grid-template-columns: repeat(auto-fit, minmax(min(100%, 260px), 1fr));
gap: 14px;
display: grid;
}
.repair-item[data-v-cd28d8b4] {
border: 1px solid var(--p-content-border-color, #e2e8f0);
border-radius: var(--radius-lg);
flex-direction: column;
gap: 8px;
padding: 14px 16px;
display: flex;
}
.repair-name[data-v-cd28d8b4] {
font-size: 1rem;
font-weight: 600;
}
.repair-desc[data-v-cd28d8b4] {
color: var(--p-text-muted-color, #94a3b8);
flex: 1;
margin: 0;
font-size: 0.875rem;
line-height: 1.6;
}
/* 重装系统表单按镜像、登录方式、磁盘处理排列;此处的视觉确认不能替代接口安全验证。 */
.re-form[data-v-cd28d8b4] {
flex-direction: column;
gap: 21px;
width: 100%;
display: flex;
}
.re-notice[data-v-cd28d8b4] {
border: 1px solid color-mix(in srgb, var(--p-primary-color) 22%, transparent);
background: color-mix(
in srgb,
var(--p-primary-color) 8%,
var(--console-panel-bg)
);
color: var(--p-primary-color);
border-radius: var(--radius-md);
margin-bottom: 14px;
padding: 14px;
font-size: 1rem;
font-weight: 500;
line-height: 1.75;
}
.re-notice h4[data-v-cd28d8b4] {
margin: 0 0 7px;
font-size: 1.125rem;
font-weight: 600;
}
.re-notice ol[data-v-cd28d8b4] {
margin: 0;
padding-left: 16px;
}
.re-snapshot[data-v-cd28d8b4] {
margin-bottom: 21px;
}
.re-form .form-row[data-v-cd28d8b4] {
flex-direction: column;
align-items: stretch;
gap: 7px;
}
.re-form .form-row > .field-label[data-v-cd28d8b4],
.re-form .form-row > label[data-v-cd28d8b4] {
width: auto;
color: var(--p-text-color);
font-size: 1rem;
}
.re-form .form-row > .grow[data-v-cd28d8b4] {
flex: none;
width: 100%;
}
.re-login[data-v-cd28d8b4] {
border: 0;
min-width: 0;
margin: 0;
padding: 0;
}
.re-login legend[data-v-cd28d8b4] {
margin-bottom: 7px;
padding: 0;
font-size: 1rem;
}
.re-choice[data-v-cd28d8b4],
.re-login-options[data-v-cd28d8b4] {
align-items: center;
gap: 7px;
display: flex;
}
.re-login-options[data-v-cd28d8b4] {
flex-wrap: wrap;
gap: 14px;
}
.re-choice label[data-v-cd28d8b4] {
font-size: 1rem;
}
.re-password[data-v-cd28d8b4] {
align-items: stretch;
min-width: 0;
display: flex;
}
.re-password[data-v-cd28d8b4] > :first-child {
border-top-right-radius: 0;
border-bottom-right-radius: 0;
}
.re-password[data-v-cd28d8b4] .p-button {
border-top-left-radius: 0;
border-bottom-left-radius: 0;
flex-shrink: 0;
}
.re-format-warning[data-v-cd28d8b4] .p-message-content {
gap: 7px;
padding: 5px 7px;
}
.re-format-warning[data-v-cd28d8b4] .p-message-icon,
.re-format-warning[data-v-cd28d8b4] .p-message-text {
font-size: 0.875rem;
}
.form-list[data-v-cd28d8b4] {
flex-direction: column;
margin-top: 14px;
}
.form-list[data-v-cd28d8b4],
.form-row[data-v-cd28d8b4] {
gap: 14px;
display: flex;
}
.form-row[data-v-cd28d8b4] {
align-items: center;
}
.form-row > .field-label[data-v-cd28d8b4],
.form-row > label[data-v-cd28d8b4] {
width: 80px;
color: var(--p-text-muted-color, #64748b);
flex-shrink: 0;
font-size: 0.9375rem;
}
.form-row > label.cb-label[data-v-cd28d8b4] {
white-space: nowrap;
width: auto;
}
.grow[data-v-cd28d8b4] {
flex: 1;
min-width: 0;
}
.os-opt[data-v-cd28d8b4] {
align-items: center;
gap: 8px;
min-width: 0;
display: flex;
}
.os-opt span[data-v-cd28d8b4] {
text-overflow: ellipsis;
white-space: nowrap;
overflow: hidden;
}
.hint[data-v-cd28d8b4] {
color: var(--p-text-muted-color, #94a3b8);
font-size: 0.875rem;
}
.re-actions[data-v-cd28d8b4] {
justify-content: flex-end;
display: flex;
}
.dlg[data-v-cd28d8b4] {
flex-direction: column;
gap: 14px;
display: flex;
}
.confirm-text[data-v-cd28d8b4] {
margin: 0;
font-size: 1rem;
line-height: 1.7;
}
/* 视口条件 (width<=480px) 下的响应式覆盖;保留相对基础规则的层叠顺序。 */
@media (width<=480px) {
.kv[data-v-cd28d8b4] {
grid-template-columns: 100px minmax(0, 1fr);
}
.kv > div[data-v-cd28d8b4],
.kv > span[data-v-cd28d8b4] {
padding: 12px;
}
.form-row[data-v-cd28d8b4] {
flex-wrap: wrap;
gap: 8px;
}
.form-row > .field-label[data-v-cd28d8b4],
.form-row > label[data-v-cd28d8b4]:not(.cb-label) {
width: 100%;
}
.form-row > .grow[data-v-cd28d8b4] {
flex-basis: 100%;
}
}