Доработано создание пользователя и отображение новых параметров пользователя в таблице
This commit is contained in:
@@ -196,14 +196,14 @@ export async function initUsers() {
|
|||||||
renderUsers(users);
|
renderUsers(users);
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
usersTbody.innerHTML =
|
usersTbody.innerHTML =
|
||||||
'<tr><td colspan="4" class="loading-row">Ошибка загрузки: ' +
|
'<tr><td colspan="8" class="loading-row">Ошибка загрузки: ' +
|
||||||
escapeHtml(e.message) + '</td></tr>';
|
escapeHtml(e.message) + '</td></tr>';
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
function renderUsers(users) {
|
function renderUsers(users) {
|
||||||
if (!users || !users.length) {
|
if (!users || !users.length) {
|
||||||
usersTbody.innerHTML = '<tr><td colspan="4" class="loading-row">Нет пользователей</td></tr>';
|
usersTbody.innerHTML = '<tr><td colspan="8" class="loading-row">Нет пользователей</td></tr>';
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -211,6 +211,9 @@ export async function initUsers() {
|
|||||||
<tr>
|
<tr>
|
||||||
<td>${u.id}</td>
|
<td>${u.id}</td>
|
||||||
<td>${escapeHtml(u.username)}</td>
|
<td>${escapeHtml(u.username)}</td>
|
||||||
|
<td>${escapeHtml(u.fullName || '-')}</td>
|
||||||
|
<td>${escapeHtml(u.jobTitle || '-')}</td>
|
||||||
|
<td>${u.departmentId || '-'}</td>
|
||||||
<td><span class="badge ${ROLE_BADGE[u.role] || ''}">${ROLE_LABELS[u.role] || escapeHtml(u.role)}</span></td>
|
<td><span class="badge ${ROLE_BADGE[u.role] || ''}">${ROLE_LABELS[u.role] || escapeHtml(u.role)}</span></td>
|
||||||
<td>
|
<td>
|
||||||
<button class="btn-delete" data-id="${u.id}">Удалить</button>
|
<button class="btn-delete" data-id="${u.id}">Удалить</button>
|
||||||
@@ -378,14 +381,24 @@ export async function initUsers() {
|
|||||||
const username = document.getElementById('new-username').value.trim();
|
const username = document.getElementById('new-username').value.trim();
|
||||||
const password = document.getElementById('new-password').value;
|
const password = document.getElementById('new-password').value;
|
||||||
const role = document.getElementById('new-role').value;
|
const role = document.getElementById('new-role').value;
|
||||||
|
const fullName = document.getElementById('new-fullname').value.trim();
|
||||||
|
const jobTitle = document.getElementById('new-jobtitle').value.trim();
|
||||||
|
const departmentId = document.getElementById('new-department').value;
|
||||||
|
|
||||||
if (!username || !password) {
|
if (!username || !password || !fullName || !jobTitle || !departmentId) {
|
||||||
showAlert('create-alert', 'Заполните все поля', 'error');
|
showAlert('create-alert', 'Заполните все поля', 'error');
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
try {
|
try {
|
||||||
const data = await api.post('/api/users', { username, password, role });
|
const data = await api.post('/api/users', {
|
||||||
|
username,
|
||||||
|
password,
|
||||||
|
role,
|
||||||
|
fullName,
|
||||||
|
jobTitle,
|
||||||
|
departmentId: Number(departmentId)
|
||||||
|
});
|
||||||
showAlert('create-alert', `Пользователь "${escapeHtml(data.username)}" создан`, 'success');
|
showAlert('create-alert', `Пользователь "${escapeHtml(data.username)}" создан`, 'success');
|
||||||
createForm.reset();
|
createForm.reset();
|
||||||
loadUsers();
|
loadUsers();
|
||||||
|
|||||||
@@ -19,6 +19,18 @@
|
|||||||
<option value="ADMIN">Администратор</option>
|
<option value="ADMIN">Администратор</option>
|
||||||
</select>
|
</select>
|
||||||
</div>
|
</div>
|
||||||
|
<div class="form-group">
|
||||||
|
<label for="new-fullname">ФИО пользователя</label>
|
||||||
|
<input type="text" id="new-fullname" placeholder="Иванов Иван Иванович" required>
|
||||||
|
</div>
|
||||||
|
<div class="form-group">
|
||||||
|
<label for="new-jobtitle">Должность</label>
|
||||||
|
<input type="text" id="new-jobtitle" placeholder="Студент / Доцент" required>
|
||||||
|
</div>
|
||||||
|
<div class="form-group">
|
||||||
|
<label for="new-department">ID кафедры</label>
|
||||||
|
<input type="number" id="new-department" placeholder="ID" required>
|
||||||
|
</div>
|
||||||
<button type="submit" class="btn-primary">Создать</button>
|
<button type="submit" class="btn-primary">Создать</button>
|
||||||
</div>
|
</div>
|
||||||
<div class="form-alert" id="create-alert" role="alert"></div>
|
<div class="form-alert" id="create-alert" role="alert"></div>
|
||||||
@@ -33,13 +45,16 @@
|
|||||||
<tr>
|
<tr>
|
||||||
<th>ID</th>
|
<th>ID</th>
|
||||||
<th>Имя пользователя</th>
|
<th>Имя пользователя</th>
|
||||||
|
<th>ФИО</th>
|
||||||
|
<th>Должность</th>
|
||||||
|
<th>ID кафедры</th>
|
||||||
<th>Роль</th>
|
<th>Роль</th>
|
||||||
<th>Действия</th>
|
<th colspan="2">Действия</th>
|
||||||
</tr>
|
</tr>
|
||||||
</thead>
|
</thead>
|
||||||
<tbody id="users-tbody">
|
<tbody id="users-tbody">
|
||||||
<tr>
|
<tr>
|
||||||
<td colspan="4" class="loading-row">Загрузка...</td>
|
<td colspan="8" class="loading-row">Загрузка...</td>
|
||||||
</tr>
|
</tr>
|
||||||
</tbody>
|
</tbody>
|
||||||
</table>
|
</table>
|
||||||
|
|||||||
Reference in New Issue
Block a user