v4 - add edit permissions to all tabs

This commit is contained in:
Dauren777 2026-06-19 06:19:42 +00:00
parent 684d95dba1
commit ce466279af

View File

@ -69,6 +69,11 @@ body{font:15px/1.5 -apple-system,BlinkMacSystemFont,"Segoe UI",Inter,system-ui,s
.notification .title{font-weight:600;margin-bottom:8px;color:var(--cyan)} .notification .title{font-weight:600;margin-bottom:8px;color:var(--cyan)}
.notification .message{color:var(--gray-500);font-size:14px} .notification .message{color:var(--gray-500);font-size:14px}
@keyframes slideIn{from{transform:translateX(100%);opacity:0}to{transform:translateX(0);opacity:1}} @keyframes slideIn{from{transform:translateX(100%);opacity:0}to{transform:translateX(0);opacity:1}}
.btn-save{background:var(--cyan);color:var(--ink);border:none;border-radius:6px;padding:6px 12px;font-size:12px;font-weight:600;cursor:pointer;transition:all 0.2s}
.btn-save:hover{background:#1be5ff}
.status-select,.priority-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}
[contenteditable="true"]{background:rgba(255,255,255,0.05);border-radius:4px;padding:4px 8px;outline:none;transition:background 0.2s}
[contenteditable="true"]:focus{background:rgba(0,229,255,0.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: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}.actions{flex-wrap:wrap}} @media(max-width:640px){.stats{grid-template-columns:1fr}.header{flex-direction:column;align-items:flex-start;gap:8px}.actions{flex-wrap:wrap}}
</style> </style>
@ -282,36 +287,41 @@ body{font:15px/1.5 -apple-system,BlinkMacSystemFont,"Segoe UI",Inter,system-ui,s
<th>Активных задач</th> <th>Активных задач</th>
<th>Выполнено за месяц</th> <th>Выполнено за месяц</th>
<th>Эффективность</th> <th>Эффективность</th>
<th>Действия</th>
</tr> </tr>
</thead> </thead>
<tbody> <tbody>
<tr> <tr data-id="emp1">
<td>Айгуль К.</td> <td contenteditable="true">Айгуль К.</td>
<td>Специалист АХО</td> <td contenteditable="true">Специалист АХО</td>
<td>8</td> <td contenteditable="true">8</td>
<td>34</td> <td contenteditable="true">34</td>
<td><span class="badge approved">92%</span></td> <td><span class="badge approved">92%</span></td>
<td><button class="btn-save" onclick="saveEmployee(this)">Сохранить</button></td>
</tr> </tr>
<tr> <tr data-id="emp2">
<td>Руслан М.</td> <td contenteditable="true">Руслан М.</td>
<td>Техник</td> <td contenteditable="true">Техник</td>
<td>6</td> <td contenteditable="true">6</td>
<td>28</td> <td contenteditable="true">28</td>
<td><span class="badge approved">88%</span></td> <td><span class="badge approved">88%</span></td>
<td><button class="btn-save" onclick="saveEmployee(this)">Сохранить</button></td>
</tr> </tr>
<tr> <tr data-id="emp3">
<td>Динара С.</td> <td contenteditable="true">Динара С.</td>
<td>Документооборот</td> <td contenteditable="true">Документооборот</td>
<td>5</td> <td contenteditable="true">5</td>
<td>42</td> <td contenteditable="true">42</td>
<td><span class="badge approved">95%</span></td> <td><span class="badge approved">95%</span></td>
<td><button class="btn-save" onclick="saveEmployee(this)">Сохранить</button></td>
</tr> </tr>
<tr> <tr data-id="emp4">
<td>Алексей В.</td> <td contenteditable="true">Алексей В.</td>
<td>Кладовщик</td> <td contenteditable="true">Кладовщик</td>
<td>5</td> <td contenteditable="true">5</td>
<td>31</td> <td contenteditable="true">31</td>
<td><span class="badge pending">78%</span></td> <td><span class="badge pending">78%</span></td>
<td><button class="btn-save" onclick="saveEmployee(this)">Сохранить</button></td>
</tr> </tr>
</tbody> </tbody>
</table> </table>
@ -330,36 +340,65 @@ body{font:15px/1.5 -apple-system,BlinkMacSystemFont,"Segoe UI",Inter,system-ui,s
<th>Статус</th> <th>Статус</th>
<th>Срок</th> <th>Срок</th>
<th>Исполнитель</th> <th>Исполнитель</th>
<th>Действия</th>
</tr> </tr>
</thead> </thead>
<tbody> <tbody>
<tr> <tr data-id="pur1">
<td>Канцелярия для отдела</td> <td contenteditable="true">Канцелярия для отдела</td>
<td>45 000 ₸</td> <td contenteditable="true">45 000 ₸</td>
<td><span class="badge pending">Ожидает</span></td> <td>
<td>18 июня</td> <select class="status-select">
<td>Айгуль</td> <option value="pending" selected>Ожидает</option>
<option value="approved">Согласовано</option>
<option value="rejected">Отклонено</option>
</select>
</td>
<td contenteditable="true">18 июня</td>
<td contenteditable="true">Айгуль</td>
<td><button class="btn-save" onclick="savePurchase(this)">Сохранить</button></td>
</tr> </tr>
<tr> <tr data-id="pur2">
<td>Уборочные средства</td> <td contenteditable="true">Уборочные средства</td>
<td>32 000 ₸</td> <td contenteditable="true">32 000 ₸</td>
<td><span class="badge approved">Согласовано</span></td> <td>
<td>20 июня</td> <select class="status-select">
<td>Айгуль</td> <option value="pending">Ожидает</option>
<option value="approved" selected>Согласовано</option>
<option value="rejected">Отклонено</option>
</select>
</td>
<td contenteditable="true">20 июня</td>
<td contenteditable="true">Айгуль</td>
<td><button class="btn-save" onclick="savePurchase(this)">Сохранить</button></td>
</tr> </tr>
<tr> <tr data-id="pur3">
<td>Запчасти для кондиционера</td> <td contenteditable="true">Запчасти для кондиционера</td>
<td>28 500 ₸</td> <td contenteditable="true">28 500 ₸</td>
<td><span class="badge rejected">Отклонено</span></td> <td>
<td>17 июня</td> <select class="status-select">
<td>Руслан</td> <option value="pending">Ожидает</option>
<option value="approved">Согласовано</option>
<option value="rejected" selected>Отклонено</option>
</select>
</td>
<td contenteditable="true">17 июня</td>
<td contenteditable="true">Руслан</td>
<td><button class="btn-save" onclick="savePurchase(this)">Сохранить</button></td>
</tr> </tr>
<tr> <tr data-id="pur4">
<td>Бумага для принтера</td> <td contenteditable="true">Бумага для принтера</td>
<td>18 000 ₸</td> <td contenteditable="true">18 000 ₸</td>
<td><span class="badge approved">Согласовано</span></td> <td>
<td>22 июня</td> <select class="status-select">
<td>Динара</td> <option value="pending">Ожидает</option>
<option value="approved" selected>Согласовано</option>
<option value="rejected">Отклонено</option>
</select>
</td>
<td contenteditable="true">22 июня</td>
<td contenteditable="true">Динара</td>
<td><button class="btn-save" onclick="savePurchase(this)">Сохранить</button></td>
</tr> </tr>
</tbody> </tbody>
</table> </table>
@ -378,36 +417,89 @@ body{font:15px/1.5 -apple-system,BlinkMacSystemFont,"Segoe UI",Inter,system-ui,s
<th>Приоритет</th> <th>Приоритет</th>
<th>Статус</th> <th>Статус</th>
<th>Дата подачи</th> <th>Дата подачи</th>
<th>Действия</th>
</tr> </tr>
</thead> </thead>
<tbody> <tbody>
<tr> <tr data-id="req1">
<td>Переговорная №3</td> <td contenteditable="true">Переговорная №3</td>
<td>Не работает кондиционер</td> <td contenteditable="true">Не работает кондиционер</td>
<td><span class="badge rejected">Высокий</span></td> <td>
<td><span class="badge pending">В работе</span></td> <select class="priority-select">
<td>15 июня</td> <option value="high" selected>Высокий</option>
<option value="medium">Средний</option>
<option value="low">Низкий</option>
</select>
</td>
<td>
<select class="status-select">
<option value="pending" selected>В работе</option>
<option value="approved">Назначен</option>
<option value="done">Выполнено</option>
</select>
</td>
<td contenteditable="true">15 июня</td>
<td><button class="btn-save" onclick="saveRequest(this)">Сохранить</button></td>
</tr> </tr>
<tr> <tr data-id="req2">
<td>Офис 204</td> <td contenteditable="true">Офис 204</td>
<td>Протекает кран</td> <td contenteditable="true">Протекает кран</td>
<td><span class="badge pending">Средний</span></td> <td>
<td><span class="badge approved">Назначен</span></td> <select class="priority-select">
<td>16 июня</td> <option value="high">Высокий</option>
<option value="medium" selected>Средний</option>
<option value="low">Низкий</option>
</select>
</td>
<td>
<select class="status-select">
<option value="pending">В работе</option>
<option value="approved" selected>Назначен</option>
<option value="done">Выполнено</option>
</select>
</td>
<td contenteditable="true">16 июня</td>
<td><button class="btn-save" onclick="saveRequest(this)">Сохранить</button></td>
</tr> </tr>
<tr> <tr data-id="req3">
<td>Коридор 2 этаж</td> <td contenteditable="true">Коридор 2 этаж</td>
<td>Не горит свет</td> <td contenteditable="true">Не горит свет</td>
<td><span class="badge rejected">Высокий</span></td> <td>
<td><span class="badge approved">Выполнено</span></td> <select class="priority-select">
<td>14 июня</td> <option value="high" selected>Высокий</option>
<option value="medium">Средний</option>
<option value="low">Низкий</option>
</select>
</td>
<td>
<select class="status-select">
<option value="pending">В работе</option>
<option value="approved">Назначен</option>
<option value="done" selected>Выполнено</option>
</select>
</td>
<td contenteditable="true">14 июня</td>
<td><button class="btn-save" onclick="saveRequest(this)">Сохранить</button></td>
</tr> </tr>
<tr> <tr data-id="req4">
<td>Склад</td> <td contenteditable="true">Склад</td>
<td>Заклинила дверь</td> <td contenteditable="true">Заклинила дверь</td>
<td><span class="badge pending">Низкий</span></td> <td>
<td><span class="badge pending">Ожидает</span></td> <select class="priority-select">
<td>18 июня</td> <option value="high">Высокий</option>
<option value="medium">Средний</option>
<option value="low" selected>Низкий</option>
</select>
</td>
<td>
<select class="status-select">
<option value="pending" selected>Ожидает</option>
<option value="approved">Назначен</option>
<option value="done">Выполнено</option>
</select>
</td>
<td contenteditable="true">18 июня</td>
<td><button class="btn-save" onclick="saveRequest(this)">Сохранить</button></td>
</tr> </tr>
</tbody> </tbody>
</table> </table>
@ -516,6 +608,42 @@ document.querySelectorAll('.employee-select').forEach(select => {
} }
}); });
}); });
function saveEmployee(btn) {
const row = btn.closest('tr');
const name = row.cells[0].textContent;
showNotification('Данные сотрудника "' + name + '" сохранены');
}
function savePurchase(btn) {
const row = btn.closest('tr');
const name = row.cells[0].textContent;
showNotification('Закупка "' + name + '" обновлена');
}
function saveRequest(btn) {
const row = btn.closest('tr');
const name = row.cells[0].textContent;
showNotification('Заявка "' + name + '" обновлена');
}
document.querySelectorAll('.status-select').forEach(select => {
select.addEventListener('change', function() {
const row = this.closest('tr');
const name = row.cells[0].textContent;
const status = this.options[this.selectedIndex].text;
showNotification('Статус "' + name + '" изменён на: ' + status);
});
});
document.querySelectorAll('.priority-select').forEach(select => {
select.addEventListener('change', function() {
const row = this.closest('tr');
const name = row.cells[0].textContent;
const priority = this.options[this.selectedIndex].text;
showNotification('Приоритет "' + name + '" изменён на: ' + priority);
});
});
</script> </script>
</body> </body>