You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

297 lines
4.8 KiB
Plaintext

.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;
}
}