v3 - add task status controls

This commit is contained in:
Dauren777 2026-06-19 06:14:05 +00:00
parent 98987d20ad
commit 684d95dba1

View File

@ -60,8 +60,17 @@ body{font:15px/1.5 -apple-system,BlinkMacSystemFont,"Segoe UI",Inter,system-ui,s
.card{background:#1a1f2e;border-radius:12px;padding:24px;margin-bottom:16px}
.card h4{margin-bottom:16px}
.card p{color:var(--gray-500);margin-bottom:8px}
.actions{display:flex;gap:8px;align-items:center}
.employee-select{background:#2a2f3e;color:var(--white);border:1px solid rgba(255,255,255,0.1);border-radius:6px;padding:6px 10px;font-size:12px;cursor:pointer}
.btn-status{background:rgba(0,229,255,0.2);color:var(--cyan);border:none;border-radius:6px;padding:6px 12px;font-size:12px;font-weight:600;cursor:pointer;transition:all 0.2s}
.btn-status:hover{background:var(--cyan);color:var(--ink)}
.notification{position:fixed;top:24px;right:24px;background:#1a1f2e;border:1px solid var(--cyan);border-radius:12px;padding:16px 24px;z-index:1000;display:none;animation:slideIn 0.3s ease}
.notification.show{display:block}
.notification .title{font-weight:600;margin-bottom:8px;color:var(--cyan)}
.notification .message{color:var(--gray-500);font-size:14px}
@keyframes slideIn{from{transform:translateX(100%);opacity:0}to{transform:translateX(0);opacity:1}}
@media(max-width:1024px){.sidebar{display:none}.main{margin-left:0}.stats{grid-template-columns:repeat(2,1fr)}.grid{grid-template-columns:1fr}}
@media(max-width:640px){.stats{grid-template-columns:1fr}.header{flex-direction:column;align-items:flex-start;gap:8px}}
@media(max-width:640px){.stats{grid-template-columns:1fr}.header{flex-direction:column;align-items:flex-start;gap:8px}.actions{flex-wrap:wrap}}
</style>
</head>
<body>
@ -108,52 +117,118 @@ body{font:15px/1.5 -apple-system,BlinkMacSystemFont,"Segoe UI",Inter,system-ui,s
<div class="grid">
<div class="panel">
<h4>Активные задачи</h4>
<div class="task">
<div class="task" data-id="1">
<div class="status overdue"></div>
<div class="info">
<div class="title">Закупить канцелярию для отдела</div>
<div class="meta">Исполнитель: Айгуль • Дедлайн: 18 июня</div>
</div>
<div class="actions">
<select class="employee-select">
<option value="">Назначить</option>
<option value="Айгуль">Айгуль</option>
<option value="Руслан">Руслан</option>
<option value="Динара">Динара</option>
<option value="Алексей">Алексей</option>
</select>
<button class="btn-status" data-status="progress">В работу</button>
<button class="btn-status" data-status="done">Выполнено</button>
</div>
<div class="priority high">Срочно</div>
</div>
<div class="task">
<div class="task" data-id="2">
<div class="status overdue"></div>
<div class="info">
<div class="title">Ремонт кондиционера в переговорной</div>
<div class="meta">Исполнитель: Руслан • Дедлайн: 17 июня</div>
</div>
<div class="actions">
<select class="employee-select">
<option value="">Назначить</option>
<option value="Айгуль">Айгуль</option>
<option value="Руслан">Руслан</option>
<option value="Динара">Динара</option>
<option value="Алексей">Алексей</option>
</select>
<button class="btn-status" data-status="progress">В работу</button>
<button class="btn-status" data-status="done">Выполнено</button>
</div>
<div class="priority high">Срочно</div>
</div>
<div class="task">
<div class="task" data-id="3">
<div class="status overdue"></div>
<div class="info">
<div class="title">Подготовить акт осмотра помещения</div>
<div class="meta">Исполнитель: Динара • Дедлайн: 18 июня</div>
</div>
<div class="actions">
<select class="employee-select">
<option value="">Назначить</option>
<option value="Айгуль">Айгуль</option>
<option value="Руслан">Руслан</option>
<option value="Динара">Динара</option>
<option value="Алексей">Алексей</option>
</select>
<button class="btn-status" data-status="progress">В работу</button>
<button class="btn-status" data-status="done">Выполнено</button>
</div>
<div class="priority high">Срочно</div>
</div>
<div class="task">
<div class="task" data-id="4">
<div class="status progress"></div>
<div class="info">
<div class="title">Заказать уборку офиса на пятницу</div>
<div class="meta">Исполнитель: Айгуль • Дедлайн: 20 июня</div>
</div>
<div class="actions">
<select class="employee-select">
<option value="">Назначить</option>
<option value="Айгуль">Айгуль</option>
<option value="Руслан">Руслан</option>
<option value="Динара">Динара</option>
<option value="Алексей">Алексей</option>
</select>
<button class="btn-status" data-status="progress">В работу</button>
<button class="btn-status" data-status="done">Выполнено</button>
</div>
<div class="priority medium">Средний</div>
</div>
<div class="task">
<div class="task" data-id="5">
<div class="status progress"></div>
<div class="info">
<div class="title">Оформить пропуска для подрядчиков</div>
<div class="meta">Исполнитель: Руслан • Дедлайн: 21 июня</div>
</div>
<div class="actions">
<select class="employee-select">
<option value="">Назначить</option>
<option value="Айгуль">Айгуль</option>
<option value="Руслан">Руслан</option>
<option value="Динара">Динара</option>
<option value="Алексей">Алексей</option>
</select>
<button class="btn-status" data-status="progress">В работу</button>
<button class="btn-status" data-status="done">Выполнено</button>
</div>
<div class="priority medium">Средний</div>
</div>
<div class="task">
<div class="task" data-id="6">
<div class="status done"></div>
<div class="info">
<div class="title">Согласовать смету на ремонт</div>
<div class="meta">Исполнитель: Динара • Выполнено</div>
</div>
<div class="actions">
<select class="employee-select">
<option value="">Назначить</option>
<option value="Айгуль">Айгуль</option>
<option value="Руслан">Руслан</option>
<option value="Динара">Динара</option>
<option value="Алексей">Алексей</option>
</select>
<button class="btn-status" data-status="progress">В работу</button>
<button class="btn-status" data-status="done">Выполнено</button>
</div>
<div class="priority low">Низкий</div>
</div>
</div>
@ -389,6 +464,11 @@ body{font:15px/1.5 -apple-system,BlinkMacSystemFont,"Segoe UI",Inter,system-ui,s
</section>
</main>
<div class="notification" id="notification">
<div class="title">Уведомление</div>
<div class="message" id="notification-message"></div>
</div>
<script>
document.querySelectorAll('.sidebar nav a').forEach(link => {
link.addEventListener('click', function(e) {
@ -396,6 +476,46 @@ document.querySelectorAll('.sidebar nav a').forEach(link => {
this.classList.add('active');
});
});
function showNotification(message) {
const notification = document.getElementById('notification');
const notificationMessage = document.getElementById('notification-message');
notificationMessage.textContent = message;
notification.classList.add('show');
setTimeout(() => {
notification.classList.remove('show');
}, 3000);
}
document.querySelectorAll('.btn-status').forEach(btn => {
btn.addEventListener('click', function() {
const task = this.closest('.task');
const status = this.dataset.status;
const title = task.querySelector('.title').textContent;
const statusDot = task.querySelector('.status');
statusDot.className = 'status ' + (status === 'done' ? 'done' : 'progress');
const statusText = status === 'done' ? 'выполнена' : 'взята в работу';
showNotification('Задача "' + title + '" ' + statusText);
});
});
document.querySelectorAll('.employee-select').forEach(select => {
select.addEventListener('change', function() {
const task = this.closest('.task');
const title = task.querySelector('.title').textContent;
const employee = this.value;
if (employee) {
const meta = task.querySelector('.meta');
const deadline = meta.textContent.split('•')[1] || '';
meta.textContent = 'Исполнитель: ' + employee + ' •' + deadline;
showNotification('Задача "' + title + '" назначена на ' + employee);
}
});
});
</script>
</body>