.container { padding: 20px; background: #fff; height: 100vh; } .header { display: flex; align-items: center; margin-bottom: 20px; .titleBar { width: 3px; height: 16px; background: #2E4CD4; margin-right: 12px; } .title { margin: 0; font-size: 14px; font-weight: 500; color: #333; } } .toolbar { display: flex; justify-content: space-between; align-items: center; margin-bottom: 20px; padding: 0 10px; .toolbarLeft { flex: 1; } .toolbarRight { display: flex; align-items: center; gap: 15px; } } // 图例样式 .legend { display: flex; gap: 20px; .legendItem { display: flex; align-items: center; font-size: 13px; color: #666; gap: 6px; } .legendDot { width: 12px; height: 12px; border-radius: 2px; display: inline-block; &.onduty { background: #D4F4DD; } &.leave { background: #FFE7BA; } &.vacation { background: #FFD6E0; } &.none { background: #E8E8E8; } } } // 日期范围和周导航 .dateRange { font-size: 13px; color: #666; } .weekNav { display: flex; gap: 0; border: 1px solid #d9d9d9; border-radius: 2px; overflow: hidden; .navButton { border: none; border-radius: 0; background: #fff; color: #666; height: 28px; font-size: 13px; border-right: 1px solid #d9d9d9; &:last-child { border-right: none; } &:hover { background: #f5f5f5; color: #333; } } .navButtonActive { background: #2E4CD4 !important; color: #fff !important; border: none; &:hover { background: #1e3bb8 !important; } } } // 表格样式 .scheduleTable { width: 100%; overflow-x: auto; border: 1px solid #E5E5E5; border-radius: 4px; } .table { width: 100%; border-collapse: collapse; table-layout: fixed; th, td { border: 1px solid #E5E5E5; text-align: center; vertical-align: middle; } // 表头样式 thead { background: #FAFAFA; th { padding: 12px 8px; font-weight: 500; color: #333; font-size: 13px; } } tbody { td { padding: 0; height: 120px; } } } // 第一列(班次列)样式 .shiftHeader { width: 140px; background: #FAFAFA; color: #666; } .shiftCell { background: #FAFAFA; padding: 15px 10px !important; .shiftName { font-size: 14px; font-weight: 500; color: #333; margin-bottom: 5px; } .shiftTime { font-size: 12px; color: #999; } } // 日期表头 .dayHeader { width: calc((100% - 140px) / 7); .dayName { font-size: 13px; color: #333; margin-bottom: 4px; } .dayDate { font-size: 12px; color: #999; font-weight: normal; } } // 排班单元格 .scheduleCell { position: relative; padding: 0 !important; // 不同状态的背景色 &.bg_onduty { background: #D4F4DD; } &.bg_leave { background: #FFE7BA; } &.bg_vacation { background: #FFD6E0; } &.bg_none { background: #F5F5F5; } &.bg_mixed { background: linear-gradient(135deg, #D4F4DD 50%, #FFD6E0 50%); } } .emptyCell { width: 100%; height: 120px; } .cellContent { width: 100%; height: 120px; display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 5px; padding: 10px; } .personItem { display: flex; flex-direction: column; align-items: center; gap: 3px; .personName { font-size: 13px; color: #333; font-weight: 500; } .statusTag { font-size: 11px; padding: 2px 6px; border-radius: 2px; &.onduty { color: #52C41A; } &.leave { color: #FA8C16; } &.vacation { color: #F5222D; } &.none { color: transparent; } } } // 响应式 @media screen and (max-width: 1400px) { .table { font-size: 12px; } .personName { font-size: 12px !important; } .statusTag { font-size: 10px !important; } }