feat(admin-frontend): 完成订阅与系统管理真实工作台

补齐订单、优惠券、主题、插件、公告与支付管理页面,
接入对应后台接口、路由入口与工具层类型定义。
同时修复套餐页开关初始化误写问题,避免浏览即触发写操作。

在订阅协议侧为 Stash 导出增加 AnyTLS 版本守卫,
未知版本或低于 3.3.0 时不再导出该协议,并补充回归测试与知识记录。
This commit is contained in:
yinjianm
2026-04-24 16:52:41 +08:00
parent 16203b14f6
commit f7cef30b9c
89 changed files with 11122 additions and 92 deletions
+189
View File
@@ -0,0 +1,189 @@
.orders-page {
display: grid;
gap: 18px;
}
.orders-intro {
display: grid;
gap: 12px;
}
.orders-copy {
display: grid;
gap: 10px;
}
.orders-kicker {
font-size: 11px;
letter-spacing: 0.24em;
text-transform: uppercase;
color: var(--xboard-text-muted);
}
.orders-copy h1 {
font-size: clamp(34px, 5vw, 48px);
line-height: 1.08;
letter-spacing: -0.28px;
color: var(--xboard-text-strong);
}
.orders-copy span {
color: var(--xboard-text-secondary);
line-height: 1.47;
}
.orders-shell {
display: grid;
gap: 18px;
padding: 24px;
border-radius: 24px;
background: #ffffff;
box-shadow: var(--xboard-shadow);
}
.orders-toolbar,
.toolbar-left,
.toolbar-right,
.table-footer,
.order-link,
.status-pill {
display: flex;
align-items: center;
gap: 12px;
}
.orders-toolbar,
.table-footer {
justify-content: space-between;
}
.toolbar-left {
flex-wrap: wrap;
}
.toolbar-search {
width: min(260px, 100%);
}
.filter-pill {
border-radius: 999px;
border-color: var(--xboard-border);
background: #ffffff;
color: var(--xboard-text-secondary);
}
.filter-pill:hover,
.toolbar-ghost:hover {
color: #0071e3;
border-color: rgba(0, 113, 227, 0.18);
}
.toolbar-ghost {
color: var(--xboard-text-secondary);
}
.orders-alert {
margin-bottom: -4px;
}
.orders-table :deep(th.el-table__cell) {
background: #fbfbfd;
color: var(--xboard-text-secondary);
}
.orders-table :deep(.el-table__row td.el-table__cell) {
padding-top: 14px;
padding-bottom: 14px;
}
.order-link {
justify-content: flex-start;
max-width: 100%;
padding-inline: 0;
}
.order-link__code {
display: inline-block;
max-width: 112px;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}
.plan-cell {
display: grid;
gap: 4px;
}
.plan-cell strong,
.amount-cell {
color: var(--xboard-text-strong);
}
.plan-cell span {
color: var(--xboard-text-muted);
}
.type-pill,
.period-pill,
.status-pill {
display: inline-flex;
align-items: center;
min-height: 30px;
padding: 0 12px;
border-radius: 999px;
background: #f5f5f7;
color: var(--xboard-text-secondary);
font-size: 12px;
}
.type-pill.is-warning,
.status-pill.is-warning {
background: rgba(224, 124, 35, 0.12);
color: var(--xboard-warning);
}
.type-pill.is-info,
.status-pill.is-info {
background: rgba(0, 113, 227, 0.12);
color: #0071e3;
}
.status-pill.is-success {
background: rgba(35, 134, 63, 0.12);
color: var(--xboard-success);
}
.status-pill.is-danger {
background: rgba(201, 52, 40, 0.12);
color: var(--xboard-danger);
}
.status-pill.is-neutral,
.type-pill.is-neutral {
background: #f5f5f7;
color: var(--xboard-text-secondary);
}
.status-dot {
width: 8px;
height: 8px;
border-radius: 999px;
background: currentColor;
}
.table-footer span {
color: var(--xboard-text-muted);
}
@media (max-width: 1080px) {
.orders-toolbar,
.table-footer {
flex-direction: column;
align-items: stretch;
}
.toolbar-right {
justify-content: flex-end;
}
}