user_list.html 7.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164
  1. <!DOCTYPE html>
  2. <html lang="zh-CN">
  3. <head>
  4. <meta charset="UTF-8">
  5. <meta name="viewport" content="width=device-width, initial-scale=1.0">
  6. <title>用户管理</title>
  7. <link rel="stylesheet" href="../../lib/layui/css/layui.css">
  8. <style>
  9. body { padding: 15px; }
  10. .search-form { margin-bottom: 15px; padding: 15px; background: #fff; border-radius: 4px; }
  11. .table-toolbar { margin-bottom: 10px; }
  12. .layui-table-view { border-radius: 4px; }
  13. .status-green { color: #5fb878; }
  14. .status-red { color: #ff5722; }
  15. </style>
  16. </head>
  17. <body>
  18. <div class="search-form">
  19. <form class="layui-form layui-form-pane" lay-filter="searchForm">
  20. <div class="layui-form-item">
  21. <div class="layui-inline">
  22. <label class="layui-form-label">账号</label>
  23. <div class="layui-input-inline">
  24. <input type="text" name="account" placeholder="请输入账号" class="layui-input" autocomplete="off">
  25. </div>
  26. </div>
  27. <div class="layui-inline">
  28. <label class="layui-form-label">姓名</label>
  29. <div class="layui-input-inline">
  30. <input type="text" name="name" placeholder="请输入姓名" class="layui-input" autocomplete="off">
  31. </div>
  32. </div>
  33. <div class="layui-inline">
  34. <label class="layui-form-label">手机号</label>
  35. <div class="layui-input-inline">
  36. <input type="text" name="phone" placeholder="请输入手机号" class="layui-input" autocomplete="off">
  37. </div>
  38. </div>
  39. <div class="layui-inline">
  40. <label class="layui-form-label">状态</label>
  41. <div class="layui-input-inline">
  42. <select name="status" class="layui-select">
  43. <option value="">全部</option>
  44. <option value="1">正常</option>
  45. <option value="0">停用</option>
  46. </select>
  47. </div>
  48. </div>
  49. <div class="layui-inline">
  50. <button type="button" class="layui-btn" id="btnSearch"><i class="layui-icon layui-icon-search"></i> 搜索</button>
  51. <button type="reset" class="layui-btn layui-btn-primary">重置</button>
  52. </div>
  53. </div>
  54. </form>
  55. </div>
  56. <div class="table-toolbar">
  57. <button class="layui-btn layui-btn-sm" id="btnAdd"><i class="layui-icon layui-icon-add-1"></i> 添加</button>
  58. <button class="layui-btn layui-btn-sm layui-btn-danger" id="btnBatchDelete"><i class="layui-icon layui-icon-delete"></i> 批量删除</button>
  59. </div>
  60. <table id="tableList" lay-filter="tableList"></table>
  61. <!-- 操作按钮模板 -->
  62. <script type="text/html" id="toolbar">
  63. <a class="layui-btn layui-btn-xs" lay-event="edit"><i class="layui-icon layui-icon-edit"></i> 编辑</a>
  64. <a class="layui-btn layui-btn-danger layui-btn-xs" lay-event="del"><i class="layui-icon layui-icon-delete"></i> 删除</a>
  65. </script>
  66. <!-- 状态模板 -->
  67. <script type="text/html" id="statusTpl">
  68. {{# if(d.status === '1') { }}
  69. <span class="status-green"><i class="layui-icon layui-icon-ok-circle"></i> 正常</span>
  70. {{# } else { }}
  71. <span class="status-red"><i class="layui-icon layui-icon-close-fill"></i> 停用</span>
  72. {{# } }}
  73. </script>
  74. <script src="../../lib/layui/layui.js"></script>
  75. <script src="../../js/config.js"></script>
  76. <script src="../../js/common.js"></script>
  77. <script>
  78. layui.use(['table', 'layer', 'form'], function() {
  79. var table = layui.table;
  80. var layer = layui.layer;
  81. var form = layui.form;
  82. // 渲染表格
  83. var tableIns = TableRender.init({
  84. elem: '#tableList',
  85. url: Config.api.user.page,
  86. cols: [[
  87. { type: 'checkbox', fixed: 'left' },
  88. { field: 'account', title: '账号', width: 120 },
  89. { field: 'name', title: '姓名', width: 120 },
  90. { field: 'phone', title: '手机号', width: 130 },
  91. { field: 'email', title: '邮箱', width: 180 },
  92. { field: 'status', title: '状态', width: 100, templet: '#statusTpl' },
  93. { field: 'createTime', title: '创建时间', width: 170, templet: function(d) { return Common.formatDate(d.createTime); } },
  94. { fixed: 'right', title: '操作', width: 150, align: 'center', toolbar: '#toolbar' }
  95. ]]
  96. });
  97. // 搜索
  98. $('#btnSearch').click(function() {
  99. var data = form.val('searchForm');
  100. table.reload('tableList', {
  101. where: data,
  102. page: { curr: 1 }
  103. });
  104. });
  105. // 添加
  106. $('#btnAdd').click(function() {
  107. Common.open({
  108. title: '添加用户',
  109. area: ['700px', '550px'],
  110. content: 'user_form.html?id='
  111. });
  112. });
  113. // 批量删除
  114. $('#btnBatchDelete').click(function() {
  115. var checkStatus = table.checkStatus('tableList');
  116. var data = checkStatus.data;
  117. if (data.length === 0) {
  118. layer.msg('请选择要删除的数据', { icon: 2 });
  119. return;
  120. }
  121. var ids = data.map(function(item) { return item.id; });
  122. Common.confirm('确定要删除选中的 ' + data.length + ' 条数据吗?', function() {
  123. Common.del(Config.api.user.remove + '/' + ids.join(','), function(res) {
  124. Common.success('删除成功', function() {
  125. table.reload('tableList');
  126. });
  127. });
  128. });
  129. });
  130. // 监听表格操作
  131. table.on('tool(tableList)', function(obj) {
  132. var data = obj.data;
  133. var event = obj.event;
  134. if (event === 'edit') {
  135. Common.open({
  136. title: '编辑用户',
  137. area: ['700px', '550px'],
  138. content: 'user_form.html?id=' + data.id
  139. });
  140. } else if (event === 'del') {
  141. Common.confirm('确定要删除用户 【' + data.name + '】 吗?', function() {
  142. Common.del(Config.api.user.remove + '/' + data.id, function(res) {
  143. Common.success('删除成功', function() {
  144. obj.del();
  145. });
  146. });
  147. });
  148. }
  149. });
  150. });
  151. </script>
  152. </body>
  153. </html>