user_list.html 4.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117
  1. {% extends "base.html" %}
  2. {% block title %}逐鹿人才-证件合同管理系统-用户管理{% endblock %}
  3. {% block content %}
  4. <div class="d-flex justify-content-between align-items-center mb-3">
  5. <h2 class="fw-bold">用户管理</h2>
  6. <a href="{{ url_for('create_user') }}" class="btn btn-primary rounded-pill shadow-sm">
  7. <i class="bi bi-plus-circle me-1"></i> 新建用户
  8. </a>
  9. </div>
  10. <div class="card shadow-sm border-0">
  11. <div class="card-body p-3">
  12. <div class="table-responsive">
  13. <table id="users-table" class="table table-hover table-striped align-middle text-nowrap w-100">
  14. <thead class="table-light">
  15. <tr>
  16. <th>用户名</th>
  17. <th>姓名</th>
  18. <th>部门</th>
  19. <th>邮箱</th>
  20. <th>角色</th>
  21. <th style="min-width:150px;">操作</th>
  22. </tr>
  23. </thead>
  24. <tbody>
  25. {% for user in users %}
  26. <tr>
  27. <td>{{ user.username }}</td>
  28. <td>{{ user.name }}</td>
  29. <td>{{ user.department }}</td>
  30. <td>{{ user.email }}</td>
  31. <td>
  32. {% if user.is_admin %}
  33. <span class="badge bg-primary">管理员</span>
  34. {% else %}
  35. <span class="badge bg-secondary">普通用户</span>
  36. {% endif %}
  37. </td>
  38. <td>
  39. <div class="d-flex gap-1 flex-wrap">
  40. <a href="{{ url_for('edit_user', user_id=user.id) }}" class="btn btn-sm btn-outline-secondary">编辑</a>
  41. {% if current_user.is_admin and user.id != current_user.id %}
  42. <form action="{{ url_for('delete_user', user_id=user.id) }}" method="POST" class="d-inline">
  43. <button type="submit" class="btn btn-sm btn-outline-danger"
  44. onclick="return confirm('确定要删除此用户吗?')">删除</button>
  45. </form>
  46. {% endif %}
  47. </div>
  48. </td>
  49. </tr>
  50. {% endfor %}
  51. </tbody>
  52. </table>
  53. </div>
  54. </div>
  55. </div>
  56. <!-- DataTables -->
  57. <link rel="stylesheet" href="https://cdn.datatables.net/1.13.5/css/dataTables.bootstrap5.min.css">
  58. <script src="https://code.jquery.com/jquery-3.7.1.min.js"></script>
  59. <script src="https://cdn.datatables.net/1.13.5/js/jquery.dataTables.min.js"></script>
  60. <script src="https://cdn.datatables.net/1.13.5/js/dataTables.bootstrap5.min.js"></script>
  61. <script>
  62. $(document).ready(function() {
  63. $('#users-table').DataTable({
  64. paging: true,
  65. pageLength: 10,
  66. lengthMenu: [5,10,25,50],
  67. ordering: true,
  68. order: [[0, "asc"]],
  69. searching: true,
  70. columnDefs: [
  71. { orderable: false, targets: 5 } // 操作列不可排序
  72. ],
  73. scrollX: true,
  74. autoWidth: false,
  75. responsive: true,
  76. language: {
  77. emptyTable: "表格中没有数据",
  78. info: "显示第 _START_ 到 _END_ 条,共 _TOTAL_ 条",
  79. infoEmpty: "显示第 0 到 0 条,共 0 条",
  80. lengthMenu: "显示 _MENU_ 条记录",
  81. search: "搜索:",
  82. zeroRecords: "没有匹配记录",
  83. paginate: { first: "首页", last: "末页", next: "下一页", previous: "上一页" }
  84. }
  85. });
  86. });
  87. </script>
  88. <style>
  89. /* 表格条纹柔和 */
  90. .table-striped>tbody>tr:nth-of-type(odd) {
  91. background-color: #f9f9f9;
  92. }
  93. /* 操作按钮间距与换行 */
  94. .d-flex .btn {
  95. min-width: 60px;
  96. margin-bottom: 4px;
  97. }
  98. /* 表格字体与行高 */
  99. #users-table th, #users-table td {
  100. font-size: 0.95rem;
  101. vertical-align: middle;
  102. }
  103. /* 自适应列宽 */
  104. #users-table th, #users-table td {
  105. white-space: nowrap;
  106. }
  107. </style>
  108. {% endblock %}