feat: 排班配置拆分为4个时段(上午2段+下午2段),独立控制开诊与人数
This commit is contained in:
@@ -50,17 +50,20 @@
|
||||
table.schedule tbody tr:hover td:first-child{background:#EEF5FF;}
|
||||
|
||||
/* 时段单元格 */
|
||||
.slot-cell{display:flex;align-items:center;gap:10px;}
|
||||
.slot-toggle-wrap{display:flex;align-items:center;gap:6px;flex-shrink:0;}
|
||||
.slot-toggle-label{font-size:var(--font-xs);color:var(--text-secondary);white-space:nowrap;min-width:36px;}
|
||||
.slot-cell{display:flex;align-items:center;gap:8px;justify-content:center;}
|
||||
.slot-toggle-wrap{display:flex;align-items:center;gap:5px;flex-shrink:0;}
|
||||
.slot-toggle-label{font-size:var(--font-xs);color:var(--text-secondary);white-space:nowrap;min-width:28px;}
|
||||
.slot-toggle-label.on{color:var(--success);}
|
||||
.slot-divider{width:1px;height:20px;background:var(--border);flex-shrink:0;}
|
||||
.slot-quota{display:flex;align-items:center;gap:6px;flex-shrink:0;}
|
||||
.slot-quota{display:flex;align-items:center;gap:4px;flex-shrink:0;}
|
||||
.slot-quota label{font-size:var(--font-xs);color:var(--text-secondary);white-space:nowrap;}
|
||||
.slot-quota input{width:60px;height:28px;border:1px solid var(--border);border-radius:var(--radius-sm);padding:0 8px;font-size:var(--font-sm);text-align:center;outline:none;color:var(--text-primary);}
|
||||
.slot-quota input{width:52px;height:26px;border:1px solid var(--border);border-radius:var(--radius-sm);padding:0 6px;font-size:var(--font-sm);text-align:center;outline:none;color:var(--text-primary);}
|
||||
.slot-quota input:focus{border-color:var(--primary);}
|
||||
.slot-quota input:disabled{background:#F5F5F5;color:#bbb;cursor:not-allowed;}
|
||||
.slot-quota span{font-size:var(--font-xs);color:var(--text-secondary);}
|
||||
/* 双行表头 */
|
||||
table.schedule thead th.time-group{border-bottom:1px solid var(--border);}
|
||||
table.schedule thead th.time-sub{font-size:var(--font-xs);padding:6px 10px;}
|
||||
|
||||
/* 按钮 */
|
||||
.btn{height:34px;padding:0 18px;border-radius:var(--radius-sm);font-size:var(--font-sm);cursor:pointer;border:none;transition:all .2s;display:inline-flex;align-items:center;gap:6px;}
|
||||
@@ -101,9 +104,15 @@
|
||||
<table class="schedule" id="scheduleTable">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>星期</th>
|
||||
<th>上午</th>
|
||||
<th>下午</th>
|
||||
<th rowspan="2" style="width:70px;">星期</th>
|
||||
<th colspan="2" class="time-group">上午</th>
|
||||
<th colspan="2" class="time-group">下午</th>
|
||||
</tr>
|
||||
<tr>
|
||||
<th class="time-sub">8:00-10:00</th>
|
||||
<th class="time-sub">10:00-12:00</th>
|
||||
<th class="time-sub">14:00-16:00</th>
|
||||
<th class="time-sub">16:00-18:00</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody id="scheduleBody"></tbody>
|
||||
@@ -118,14 +127,17 @@
|
||||
|
||||
<script>
|
||||
var days = ['周一','周二','周三','周四','周五','周六','周日'];
|
||||
var slots = ['am1','am2','pm1','pm2'];
|
||||
|
||||
// 初始数据:前5天默认开诊,周末默认关闭
|
||||
// 初始数据:工作日默认开诊,周末默认关闭
|
||||
var scheduleData = days.map(function(d, i) {
|
||||
var isWeekend = i >= 5;
|
||||
return {
|
||||
day: d,
|
||||
am: { open: !isWeekend, quota: isWeekend ? 0 : 10 },
|
||||
pm: { open: !isWeekend, quota: isWeekend ? 0 : 8 }
|
||||
am1: { open: !isWeekend, quota: isWeekend ? 0 : 5 },
|
||||
am2: { open: !isWeekend, quota: isWeekend ? 0 : 5 },
|
||||
pm1: { open: !isWeekend, quota: isWeekend ? 0 : 4 },
|
||||
pm2: { open: !isWeekend, quota: isWeekend ? 0 : 4 }
|
||||
};
|
||||
});
|
||||
|
||||
@@ -136,8 +148,10 @@ function renderTable() {
|
||||
var tr = document.createElement('tr');
|
||||
tr.innerHTML =
|
||||
'<td>' + row.day + '</td>' +
|
||||
'<td>' + slotHtml(i, 'am', row.am) + '</td>' +
|
||||
'<td>' + slotHtml(i, 'pm', row.pm) + '</td>';
|
||||
'<td>' + slotHtml(i, 'am1', row.am1) + '</td>' +
|
||||
'<td>' + slotHtml(i, 'am2', row.am2) + '</td>' +
|
||||
'<td>' + slotHtml(i, 'pm1', row.pm1) + '</td>' +
|
||||
'<td>' + slotHtml(i, 'pm2', row.pm2) + '</td>';
|
||||
tbody.appendChild(tr);
|
||||
});
|
||||
}
|
||||
@@ -155,7 +169,6 @@ function slotHtml(dayIdx, period, slot) {
|
||||
'</div>' +
|
||||
'<div class="slot-divider"></div>' +
|
||||
'<div class="slot-quota">' +
|
||||
'<label>预约上限</label>' +
|
||||
'<input type="number" id="' + id + '_quota" min="0" max="999" value="' + slot.quota + '" ' + disabled + ' oninput="updateQuota(' + dayIdx + ',\'' + period + '\',this.value)">' +
|
||||
'<span>人</span>' +
|
||||
'</div>' +
|
||||
@@ -174,7 +187,7 @@ function toggleSlot(dayIdx, period, el) {
|
||||
labelEl.textContent = '开诊';
|
||||
labelEl.className = 'slot-toggle-label on';
|
||||
quotaEl.disabled = false;
|
||||
if (!slot.quota) { slot.quota = 10; quotaEl.value = 10; }
|
||||
if (!slot.quota) { slot.quota = 5; quotaEl.value = 5; }
|
||||
} else {
|
||||
toggleEl.classList.remove('on');
|
||||
labelEl.textContent = '休诊';
|
||||
|
||||
Reference in New Issue
Block a user