XH_Digital_Management/templates/authority_modal.html

178 lines
6.7 KiB
HTML
Raw Normal View History

2024-06-04 18:45:11 +08:00
<div class="modal" id="userPermissionModal" tabindex="-1" aria-labelledby="userPermissionModalLabel" aria-hidden="true">
2024-06-05 14:44:44 +08:00
<div class="modal-dialog modal-lg">
<div class="modal-content">
2024-06-05 11:34:45 +08:00
<div class="modal-header">
<h5 class="modal-title" id="userPermissionModalLabel">用户权限管理</h5>
<button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button>
</div>
<div class="modal-body">
2024-06-05 14:44:44 +08:00
<table class="table" id="permissionsTable">
2024-06-05 11:34:45 +08:00
<thead>
<tr>
<th>资源分组</th>
<th>资源名称</th>
2024-06-05 11:40:48 +08:00
<th>新增</th>
<th>删除</th>
<th>修改</th>
<th>查看</th>
2024-06-05 11:34:45 +08:00
</tr>
</thead>
<tbody>
</tbody>
</table>
</div>
<div class="modal-footer">
2024-06-05 14:44:44 +08:00
<div id="pagination" class="pagination">
<span id="totalData" class="mx-2"></span>
<span id="pageInfo" class="mx-2"></span>
<button id="prevPage" class="btn btn-secondary" type="button">上一页</button>
<button id="nextPage" class="btn btn-secondary" type="button">下一页</button>
</div>
2024-06-05 15:26:27 +08:00
<button type="button" class="btn btn-primary" id="savePermissions" data-user-id="">保存更改</button>
2024-06-05 11:34:45 +08:00
</div>
</div>
</div>
</div>
<script>
2024-06-05 15:26:27 +08:00
// 获取 CSRF 令牌
function getCookie(name) {
let cookieValue = null;
if (document.cookie && document.cookie !== '') {
const cookies = document.cookie.split(';');
for (let i = 0; i < cookies.length; i++) {
const cookie = cookies[i].trim();
if (cookie.substring(0, name.length + 1) === (name + '=')) {
cookieValue = decodeURIComponent(cookie.substring(name.length + 1));
break;
}
}
}
return cookieValue;
}
const csrftoken = getCookie('csrftoken');
2024-06-05 11:34:45 +08:00
$(document).ready(function() {
2024-06-05 14:44:44 +08:00
const itemsPerPage = 10;
let currentPage = 1;
let permissionsData = [];
function renderTable(page) {
const start = (page - 1) * itemsPerPage;
const end = start + itemsPerPage;
const paginatedData = permissionsData.slice(start, end);
const tableBody = $('#permissionsTable tbody');
tableBody.empty();
paginatedData.forEach(perm => {
tableBody.append(`
<tr>
<td>${perm.resource_group}</td>
<td>${perm.resource}</td>
2024-06-05 15:26:27 +08:00
<td><input type="checkbox" name="add_permission" data-id="${perm.id}" ${perm.add ? 'checked' : ''}></td>
<td><input type="checkbox" name="delete_permission" data-id="${perm.id}" ${perm.remove ? 'checked' : ''}></td>
<td><input type="checkbox" name="edit_permission" data-id="${perm.id}" ${perm.change ? 'checked' : ''}></td>
<td><input type="checkbox" name="view_permission" data-id="${perm.id}" ${perm.view ? 'checked' : ''}></td>
2024-06-05 14:44:44 +08:00
</tr>
`);
});
$('#pageInfo').text('第 ' + currentPage + ' 页, 共 ' + Math.ceil(permissionsData.length / itemsPerPage) + ' 页');
}
function renderPagination() {
const totalPages = Math.ceil(permissionsData.length / itemsPerPage);
const pagination = $('#pagination .page-numbers');
pagination.empty();
$('#totalData').text('总数: ' + permissionsData.length);
$('#pageInfo').text('第 ' + currentPage + ' 页, 共 ' + totalPages + ' 页');
for (let i = 1; i <= totalPages; i++) {
pagination.append(`<span class="page-number" data-page="${i}">${i}</span>`);
}
2024-06-05 15:26:27 +08:00
$('.page-number').removeClass('active');
$(`.page-number[data-page="${currentPage}"]`).addClass('active');
2024-06-05 14:44:44 +08:00
}
$('#pagination').on('click', '.page-number', function() {
currentPage = $(this).data('page');
renderTable(currentPage);
renderPagination();
});
$('#prevPage').on('click', function() {
if (currentPage > 1) {
currentPage--;
renderTable(currentPage);
renderPagination();
}
});
$('#nextPage').on('click', function() {
const totalPages = Math.ceil(permissionsData.length / itemsPerPage);
if (currentPage < totalPages) {
currentPage++;
renderTable(currentPage);
renderPagination();
}
});
2024-06-05 11:34:45 +08:00
$('.btn-outline-primary').on('click', function() {
const userId = $(this).closest('tr').data('id');
2024-06-05 15:26:27 +08:00
$('#savePermissions').data('user-id', userId); // 确保在模态框显示时设置用户ID
2024-06-05 11:34:45 +08:00
const url = "{% url 'get_user_existing_permissions' 0 %}".replace('0', userId);
$.ajax({
url: url,
type: 'GET',
success: function(data) {
2024-06-05 14:44:44 +08:00
permissionsData = data.permissions;
currentPage = 1;
renderTable(currentPage);
renderPagination();
2024-06-05 11:34:45 +08:00
$('#userPermissionModal').modal('show');
},
error: function(xhr, status, error) {
alert('获取权限数据失败');
}
});
});
2024-06-05 15:26:27 +08:00
$('#savePermissions').on('click', function() {
const userId = $(this).data('user-id'); // 从按钮的data-user-id属性中获取用户ID
if (!userId) {
alert('用户ID未设置');
return;
}
const url = "{% url 'save_user_permissions' 0 %}".replace('0', userId);
const updatedPermissions = permissionsData.map(perm => ({
id: perm.id,
add: $(`input[name="add_permission"][data-id="${perm.id}"]`).is(':checked'),
delete: $(`input[name="delete_permission"][data-id="${perm.id}"]`).is(':checked'),
change: $(`input[name="edit_permission"][data-id="${perm.id}"]`).is(':checked'),
view: $(`input[name="view_permission"][data-id="${perm.id}"]`).is(':checked')
}));
$.ajax({
url: url,
type: 'POST',
contentType: 'application/json',
data: JSON.stringify({ permissions: updatedPermissions }),
headers: {
'X-CSRFToken': csrftoken // 添加CSRF令牌
},
success: function(response) {
alert('权限保存成功');
},
error: function(xhr, status, error) {
alert('保存权限时出错');
}
});
});
2024-06-05 11:34:45 +08:00
});
</script>
2024-06-05 15:26:27 +08:00