diff --git a/app/components/Songs/RequestForm.vue b/app/components/Songs/RequestForm.vue index 5be91bd..56a8645 100644 --- a/app/components/Songs/RequestForm.vue +++ b/app/components/Songs/RequestForm.vue @@ -176,19 +176,27 @@ :key="item.seq" type="button" :class="[ - 'sequence-pill', - item.taken ? 'taken' : 'free', - expectedPlaySequence === String(item.seq) ? 'selected' : '' + 'seq', + item.taken ? 'seq-taken' : '', + expectedPlaySequence === String(item.seq) ? 'seq-selected' : '' ]" :disabled="item.taken" - :title="item.taken ? getTakenSequenceTitle(item.seq) : ''" + :title="getTakenSequenceTitle(item.seq)" @click="chooseExpectedPlaySequence(item.seq)" > {{ item.seq }} -
绿色可选,红色已占用
+
🟣 可选(紫粉蓝选中) · ⚪ 已占用(灰色带删除线)
+
+ + 已锁定 第 {{ expectedPlaySequence }} 首 位置 +
@@ -3126,47 +3134,55 @@ defineExpose({ } .sequence-grid { - display: flex; - flex-wrap: wrap; - gap: 0.5rem; + display: grid; + grid-template-columns: repeat(auto-fill, minmax(44px, 1fr)); + gap: 8px; + margin-top: 12px; } -.sequence-pill { - height: 28px; - min-width: 28px; - padding: 0 10px; - border-radius: 10px; - border: 1px solid var(--border-primary); - background: rgba(0, 0, 0, 0.25); - color: rgba(255, 255, 255, 0.85); - font-family: 'MiSans', sans-serif; - font-weight: 700; - font-size: 12px; - transition: all 0.2s ease; +.seq { + width: 40px; + height: 40px; + display: inline-flex; + align-items: center; + justify-content: center; + border-radius: 8px; + background: #fff; + border: 1.5px solid #d1d5db; + color: #111827; + font-size: 16px; + font-weight: 800; + transition: all 0.12s ease; + cursor: pointer; } -.sequence-pill.free { - border-color: rgba(16, 185, 129, 0.35); - background: rgba(16, 185, 129, 0.08); - color: rgba(16, 185, 129, 0.95); +.seq:hover:not(:disabled) { + border-color: #4338ca; + color: #4338ca; + transform: scale(1.03); } -.sequence-pill.taken { - border-color: rgba(239, 68, 68, 0.35); - background: rgba(239, 68, 68, 0.08); - color: rgba(239, 68, 68, 0.95); +.seq-taken { + background: #f3f4f6; + border-color: #e5e7eb; + color: #9ca3af; + text-decoration: line-through; cursor: not-allowed; } -.sequence-pill.selected { - box-shadow: 0 0 0 2px rgba(59, 130, 246, 0.25); - border-color: rgba(59, 130, 246, 0.6); +.seq-selected { + background: linear-gradient(135deg, #a855f7 0%, #ec4899 50%, #3b82f6 100%); + color: #fff; + border-color: transparent; + box-shadow: 0 6px 16px rgba(168, 85, 247, 0.35); + transform: scale(1.05); } .sequence-hint { font-size: 11px; font-weight: 600; color: rgba(255, 255, 255, 0.55); + margin-top: 8px; } .search-section { diff --git a/app/components/Songs/ScheduleList.vue b/app/components/Songs/ScheduleList.vue index 1d56e3c..ddd70a3 100644 --- a/app/components/Songs/ScheduleList.vue +++ b/app/components/Songs/ScheduleList.vue @@ -1,282 +1,206 @@