feat(orders): order detail modal, list actions, use configured prefix

Wire admin payment_order_prefix into order number generation (with 32-char
cap for gateways), make 查看 open a full order-detail modal with
status-aware footer actions, keep type badge top-left only, and right-align
unpaid list actions with countdown on the left.
This commit is contained in:
kate522 committed 2026-07-27 12:39:21 +08:00
1 parent 5e1e2e2634
commit a1e35a4499
5 files changed
+492 -46

No files matched your search

+153
View File
@@ -521,6 +521,159 @@
font-variant-numeric: tabular-nums;
}
/* Order detail modal content */
.aksrt-order-detail-dialog {
width: min(560px, 100%);
}
.aksrt-order-detail__list {
margin: 0;
display: grid;
gap: 10px;
}
.aksrt-order-detail__row {
display: grid;
grid-template-columns: 96px minmax(0, 1fr);
gap: 10px 14px;
align-items: start;
font-size: 13.5px;
}
.aksrt-order-detail__row dt {
margin: 0;
color: var(--color-ink-3, #8b8f97);
font-weight: 500;
}
.aksrt-order-detail__row dd {
margin: 0;
color: var(--color-ink, #1f2329);
font-weight: 600;
word-break: break-all;
font-variant-numeric: tabular-nums;
}
.aksrt-order-detail__items,
.aksrt-order-detail__timeline {
margin-top: 16px;
padding-top: 14px;
border-top: 1px dashed color-mix(in srgb, var(--color-line, #e5e7eb) 85%, transparent);
}
.aksrt-order-detail__items h4,
.aksrt-order-detail__timeline h4 {
margin: 0 0 10px;
font-size: 13.5px;
font-weight: 700;
color: var(--color-ink, #1f2329);
}
.aksrt-order-detail__items ul,
.aksrt-order-detail__timeline ol {
margin: 0;
padding: 0;
list-style: none;
display: grid;
gap: 8px;
}
.aksrt-order-detail__items li {
display: grid;
grid-template-columns: minmax(0, 1fr) auto auto;
gap: 10px;
align-items: center;
font-size: 13px;
color: var(--color-ink-2, #4b5563);
}
.aksrt-order-detail__items li em {
font-style: normal;
color: var(--color-ink-3, #8b8f97);
}
.aksrt-order-detail__items li strong {
font-weight: 700;
color: var(--color-ink, #1f2329);
font-variant-numeric: tabular-nums;
}
.aksrt-order-detail__timeline li {
display: grid;
grid-template-columns: 140px minmax(0, 1fr);
gap: 10px;
font-size: 12.5px;
color: var(--color-ink-2, #4b5563);
}
.aksrt-order-detail__timeline time {
color: var(--color-ink-3, #8b8f97);
font-variant-numeric: tabular-nums;
}
.aksrt-modal__footer .btn-primary,
.aksrt-modal__footer .btn-outline,
.aksrt-modal__footer .btn-ghost,
.aksrt-modal__footer a.btn-ghost,
.aksrt-modal__footer a.btn-outline {
min-height: 34px;
padding: 0 14px;
border-radius: 999px;
font-size: 13px;
font-weight: 600;
line-height: 32px;
display: inline-flex;
align-items: center;
justify-content: center;
text-decoration: none;
cursor: pointer;
}
.aksrt-modal__footer .btn-primary {
border: 1px solid transparent;
background: var(--color-primary, #3b82f6);
color: var(--color-on-primary, #fff);
}
.aksrt-modal__footer .btn-primary.c-green {
background: var(--color-success, #16a34a);
}
.aksrt-modal__footer .btn-outline {
border: 1px solid var(--color-line, #e5e7eb);
background: var(--surface-1, #fff);
color: var(--color-ink-2, #4b5563);
}
.aksrt-modal__footer .btn-ghost {
border: 1px solid transparent;
background: transparent;
color: var(--color-ink-3, #8b8f97);
}
@media (max-width: 767px) {
.aksrt-order-detail__row {
grid-template-columns: 1fr;
gap: 2px;
}
.aksrt-order-detail__timeline li {
grid-template-columns: 1fr;
gap: 2px;
}
.aksrt-modal__footer {
flex-wrap: wrap;
}
.aksrt-modal__footer .btn-primary,
.aksrt-modal__footer .btn-outline,
.aksrt-modal__footer .btn-ghost,
.aksrt-modal__footer a {
flex: 1 1 auto;
}
}
/* legacy item classes (if any remain) */
.aksrt-orders-page__item {
background: var(--surface-1);