This commit is contained in:
2026-07-25 11:46:39 +08:00 Unverified
parent 533ff6b9f6
commit fdca6a3edf
8 changed files with 603 additions and 25 deletions
+108 -2
View File
@@ -482,11 +482,105 @@ button { cursor: pointer; }
.selection-ledger-head h3 { margin: 7px 0 4px; font-family: "STZhongsong", "Songti SC", serif; font-size: 19px; }
.selection-ledger-head p { margin: 0; color: var(--muted); font-size: 10px; }
.capacity-number { color: var(--indigo); font: 700 13px/1 Consolas, monospace; }
.selection-timetable-card { min-width: 0; overflow: hidden; }
.selection-timetable-head,
.selection-catalog-head {
min-height: 92px; padding: 18px 21px; display: flex; align-items: center;
justify-content: space-between; gap: 20px; border-bottom: 1px solid var(--line);
}
.selection-timetable-head > div,
.selection-catalog-head > div { min-width: 0; }
.selection-timetable-head span,
.selection-catalog-head span {
color: var(--teal); font: 700 9px/1 Consolas, monospace; letter-spacing: .14em;
}
.selection-timetable-head h3,
.selection-catalog-head h3 {
margin: 7px 0 4px; font-family: "STZhongsong", "Songti SC", serif; font-size: 19px;
}
.selection-timetable-head p,
.selection-catalog-head p { margin: 0; color: var(--muted); font-size: 10px; }
.selection-preview-alert { margin: 14px 16px 0; width: auto; }
.selection-timetable-scroll { min-width: 0; overflow-x: auto; background: #f7f9fb; }
.selection-timetable-grid {
min-width: 970px; padding: 0 12px 14px; display: grid;
grid-template-columns: 62px repeat(7, minmax(120px, 1fr));
position: relative;
}
.timetable-corner,
.timetable-day {
display: flex; align-items: center; justify-content: center;
border-bottom: 1px solid #cfd8e2; color: #566277; background: #edf2f6;
font-size: 10px; font-weight: 700; z-index: 3;
}
.timetable-corner { grid-column: 1; grid-row: 1; gap: 4px; color: var(--indigo); }
.timetable-day { border-left: 1px solid #d8e0e8; }
.timetable-period {
padding-right: 9px; display: flex; align-items: center; justify-content: flex-end; gap: 5px;
border-bottom: 1px solid #dfe5eb; color: #657084; background: #f2f5f8; z-index: 1;
}
.timetable-period b { color: var(--indigo); font: 700 15px/1 Consolas, monospace; }
.timetable-period span { font-size: 8px; }
.timetable-cell {
border-left: 1px solid #e0e6ec; border-bottom: 1px solid #e0e6ec;
background:
linear-gradient(135deg, rgba(37,58,115,.018) 25%, transparent 25%) 0 0 / 8px 8px,
white;
}
.timetable-course {
min-width: 0; padding: 4px; display: flex; flex-direction: column; gap: 3px;
z-index: 2; pointer-events: none;
}
.timetable-course.multiple { flex-direction: row; }
.timetable-course article {
min-width: 0; min-height: 0; flex: 1; padding: 7px 8px; overflow: hidden;
border-left: 3px solid #566fc1; color: #283554; background: #e8edfb;
box-shadow: 0 2px 5px rgba(28,44,84,.08);
}
.timetable-course article.tone-1 { border-left-color: #2b988b; background: #e3f2ef; }
.timetable-course article.tone-2 { border-left-color: #c1812c; background: #f8eddc; }
.timetable-course article.tone-3 { border-left-color: #8a5aa8; background: #f0e8f4; }
.timetable-course article.tone-4 { border-left-color: #3982a3; background: #e4f0f5; }
.timetable-course article.preview {
outline: 2px dashed #d29135; outline-offset: -2px; background: #fff6df;
}
.timetable-course article.conflict {
border-left-color: #bd3e49; outline-color: #bd3e49; background: #fde8e9;
}
.timetable-course b,
.timetable-course span,
.timetable-course small {
display: block; overflow: hidden; white-space: nowrap; text-overflow: ellipsis;
}
.timetable-course b { font-size: 10px; line-height: 1.3; }
.timetable-course span { margin-top: 4px; color: #5e6880; font-size: 8px; }
.timetable-course small { margin-top: 3px; color: #697486; font-size: 8px; }
.flexible-course-row {
padding: 13px 18px; display: flex; align-items: center; flex-wrap: wrap; gap: 8px;
border-top: 1px solid var(--line); background: white;
}
.flexible-course-row > b { margin-right: 4px; color: #4e596d; font-size: 10px; }
.flexible-course-row > span {
padding: 5px 8px; border: 1px solid #cad7df; color: #48606c; background: #f4f8f9;
font-size: 9px;
}
.flexible-course-row > span.preview { border-style: dashed; border-color: #d29135; background: #fff6df; }
.selection-catalog { overflow: hidden; }
.selection-catalog-head > b {
flex: 0 0 auto; color: var(--indigo); font: 700 18px/1 Consolas, monospace;
}
.selection-catalog-filter {
padding: 13px 16px; display: grid; grid-template-columns: minmax(260px, 1fr) auto;
align-items: center; gap: 12px; background: #f8fafb;
}
.selection-catalog-filter .el-segmented { --el-segmented-item-selected-bg-color: var(--indigo); }
.offering-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 15px; }
.offering-ticket {
min-width: 0; min-height: 250px; display: flex; flex-direction: column;
border: 1px solid var(--line); background: white; box-shadow: 0 6px 18px rgba(24,36,68,.045);
}
.offering-ticket.previewing { border-color: #d49a48; box-shadow: 0 0 0 2px rgba(212,154,72,.12); }
.offering-ticket.blocked:not(.selected) { background: #fbfcfd; }
.offering-ticket > header {
min-height: 99px; padding: 19px 20px; display: flex; justify-content: space-between;
gap: 16px; border-bottom: 1px dashed #d7dce4; position: relative;
@@ -512,11 +606,15 @@ button { cursor: pointer; }
.ticket-schedules > div { display: flex; align-items: flex-start; gap: 7px; color: #4e596d; font-size: 10px; line-height: 1.5; }
.ticket-schedules .el-icon { flex: 0 0 auto; margin-top: 1px; color: var(--indigo); }
.schedule-missing { color: #a36d22; font-size: 10px; }
.selection-block-reason {
margin: 0 20px 12px; padding: 8px 10px; border-left: 3px solid #bd3e49;
color: #90343d; background: #fbedee; font-size: 9px; line-height: 1.5;
}
.offering-ticket > footer {
margin-top: auto; min-height: 65px; padding: 13px 20px; display: flex; align-items: center;
gap: 18px; background: #fafbfc; border-top: 1px solid #edf0f4;
flex-wrap: wrap; gap: 10px; background: #fafbfc; border-top: 1px solid #edf0f4;
}
.seat-meter { flex: 1; min-width: 0; }
.seat-meter { flex: 1; min-width: 120px; }
.seat-meter > span { display: block; margin-bottom: 7px; color: var(--muted); font-size: 9px; }
.seat-meter > div { height: 4px; overflow: hidden; background: #e2e6ec; }
.seat-meter i { height: 100%; display: block; background: var(--teal); }
@@ -1051,6 +1149,8 @@ button { cursor: pointer; }
border-left: none;
}
.round-actions { justify-content: flex-start; }
.selection-catalog-filter { grid-template-columns: 1fr; }
.selection-catalog-filter .el-segmented { width: 100%; }
.offering-grid { grid-template-columns: 1fr; }
.grade-workspace { display: block; }
.grade-sheet-list { max-height: 300px; overflow-y: auto; border-right: none; border-bottom: 1px solid var(--line); }
@@ -1090,6 +1190,12 @@ button { cursor: pointer; }
.window-copy em { display: block; margin: 7px 0 0; padding: 0; border: none; }
.credit-meter, .round-actions { padding: 18px; }
.selection-ledger-head { align-items: flex-start; flex-direction: column; }
.selection-timetable-head,
.selection-catalog-head { align-items: flex-start; flex-direction: column; }
.selection-timetable-head .el-button { width: 100%; }
.selection-timetable-grid { min-width: 820px; }
.selection-catalog-filter .el-segmented { overflow-x: auto; }
.flexible-course-row { align-items: flex-start; flex-direction: column; }
.offering-ticket > footer { align-items: stretch; flex-direction: column; }
.offering-ticket > footer .el-button { width: 100%; }
.grade-toolbar { flex-wrap: wrap; }