From 4578426f997af0033c6a9c7a40b715945ca3cff2 Mon Sep 17 00:00:00 2001 From: sxw Date: Sat, 8 Aug 2015 17:09:15 +0800 Subject: [PATCH] =?UTF-8?q?[=E5=8A=9F=E8=83=BD]=20=E6=96=B0=E5=A2=9E?= =?UTF-8?q?=E5=85=AC=E5=91=8A=E7=AE=A1=E7=90=86=E6=A8=A1=E5=9D=97=EF=BC=8C?= =?UTF-8?q?=E5=AF=B9GET=20users=20API=E8=BD=BB=E5=BE=AE=E4=BF=AE=E6=94=B9?= =?UTF-8?q?=EF=BC=8C=E7=AD=9B=E7=AE=A1=E7=90=86=E5=91=98=E6=B7=BB=E5=8A=A0?= =?UTF-8?q?=E8=B6=85=E7=BA=A7=E7=AE=A1=E7=90=86=E5=91=98=E5=8C=85=E5=90=AB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- account/views.py | 2 +- static/src/js/app/admin/user/user_list.js | 165 ++++++++++++++++++++++ template/admin/admin.html | 7 + template/admin/user/user_list.html | 79 +++++++++++ 4 files changed, 252 insertions(+), 1 deletion(-) create mode 100644 static/src/js/app/admin/user/user_list.js create mode 100644 template/admin/user/user_list.html diff --git a/account/views.py b/account/views.py index e1287829..fe144644 100644 --- a/account/views.py +++ b/account/views.py @@ -129,7 +129,7 @@ class UserAPIView(APIView): admin_type = request.GET.get("admin_type", None) if admin_type: try: - user = user.filter(admin_type=int(admin_type)) + user = user.filter(admin_type__gte=int(admin_type)) except ValueError: return error_response(u"参数错误") keyword = request.GET.get("keyword", None) diff --git a/static/src/js/app/admin/user/user_list.js b/static/src/js/app/admin/user/user_list.js new file mode 100644 index 00000000..8522a21d --- /dev/null +++ b/static/src/js/app/admin/user/user_list.js @@ -0,0 +1,165 @@ +require(["jquery", "avalon", "csrf", "bs_alert", "validation"], function ($, avalon, csrfHeader, bs_alert) { + avalon.vmodels.user_list = null; + + // avalon:定义模式 user_list + avalon.ready(function () { + var vm = avalon.define({ + $id: "user_list", + //通用变量 + user_list: [], // 用户列表数据项 + previous_page: 0, // 之前的页数 + next_page: 0, // 之后的页数 + page: 1, // 当前页数 + isEditing: 0, // 正在编辑的公告的ID, 为零说明未在编辑 + page_count: 1, // 总页数 + user_type: ["一般用户", "管理员", "超级管理员"], + key_word: "", + showAdminOnly: false, + //编辑区域同步变量 + username: "", + real_name: "", + email: "", + admin_type: 0, + id: 0, + last_login: "", + create_time: "", + getNext: function () { + if (!vm.next_page) + return; + getPageData(vm.page + 1); + }, + getPrevious: function () { + if (!vm.previous_page) + return; + getPageData(vm.page - 1); + }, + getBtnClass: function (btn) { //上一页/下一页按钮启用禁用逻辑 + if (btn) { + return vm.next_page ? "btn btn-primary" : "btn btn-primary disabled"; + } + else { + return vm.previous_page ? "btn btn-primary" : "btn btn-primary disabled"; + } + }, + enEdit: function (el) { //点击编辑按钮的事件,显示/隐藏编辑区 + vm.username = el.username; + vm.real_name = el.real_name; + vm.admin_type = el.admin_type; + vm.email = el.email; + vm.id = el.id; + if (vm.isEditing == el.id) + vm.isEditing = 0; + else + vm.isEditing = el.id; + }, + getPage: function (page_index) { + getPageData(page_index); + } + }); + vm.$watch("showAdminOnly", function () { + getPageData(1); + }); + avalon.scan(); + getPageData(1); //用户列表初始化 + //Ajax get数据 + function getPageData(page) { + var url = "/api/users/?paging=true&page=" + page + "&page_size=10"; + if (vm.showAdminOnly == true) + url += "&admin_type=1"; + if (vm.key_word != "") + url += "&keyword=" + vm.key_word; + $.ajax({ + beforeSend: csrfHeader, + url: url, + dataType: "json", + method: "get", + success: function (data) { + if (!data.code) { + vm.user_list = data.data.results; + vm.page_count = data.data.total_page; + vm.previous_page = data.data.previous_page; + vm.next_page = data.data.next_page; + vm.page = page; + } + else { + bs_alert(data.data); + } + } + }); + } + + $("#edit_user-form") + .formValidation({ + framework: "bootstrap", + fields: { + username: { + validators: { + notEmpty: { + message: "请填写用户名" + }, + stringLength: { + min: 3, + max: 30, + message: '用户名长度必须在3到30位之间' + } + } + }, + real_name: { + validators: { + notEmpty: { + message: "请填写真实姓名" + } + } + }, + email: { + validators: { + notEmpty: { + message: "请填写电子邮箱邮箱地址" + }, + emailAddress: { + message: "请填写有效的邮箱地址" + } + } + }, + password: { + validators: { + stringLength: { + min: 6, + max: 30, + message: '密码长度必须在6到30位之间' + } + } + } + } + } + ).on('success.form.fv', function (e) { + e.preventDefault(); + var data = { + username: vm.username, + real_name: vm.real_name, + email: vm.email, + id: vm.id, + admin_type: vm.admin_type + }; + if ($("#password").val() !== "") + data.password = $("#password").val(); + $.ajax({ + beforeSend: csrfHeader, + url: "/api/admin/user/", + data: data, + dataType: "json", + method: "put", + success: function (data) { + if (!data.code) { + bs_alert("提交成功!"); + getPageData(1); + $("#password").val(""); + } else { + bs_alert(data.data); + } + } + }) + }); + }); + +}) \ No newline at end of file diff --git a/template/admin/admin.html b/template/admin/admin.html index 1d70998f..94742833 100644 --- a/template/admin/admin.html +++ b/template/admin/admin.html @@ -97,6 +97,13 @@
  • 创建比赛
  • +
  • 用户管理
  • +
  • + 用户列表 +
  • +
  • + 用户分组 +
  • diff --git a/template/admin/user/user_list.html b/template/admin/user/user_list.html new file mode 100644 index 00000000..8f87af15 --- /dev/null +++ b/template/admin/user/user_list.html @@ -0,0 +1,79 @@ +
    +

    User

    +
    +
    +
    + + + +
    +
    +
    +
    + + + + + + + + + + + + + + + + + + + + + +
    ID用户名注册时间最近登陆真实姓名电子邮箱用户类型修改
    {{el.id}}{{el.username}}{{el.create_time|date("yyyy-MM-dd HH:mm:ss")}}{{el.last_login|date("yyyy-MM-dd HH:mm:ss")}}{{el.real_name}}{{el.email}}{{user_type[el.admin_type]}} + +
    +
    + +
    +
    + 页数:{{page}}/{{page_count}}   + 上一页 + 下一页 +
    +
    +

    修改用户信息

    +
    +
    +
    + +
    +
    + +
    +
    + +
    +
    +
    +
    + +
    +
    + +
    +
    + +
    +
    +
    + +
    +
    +
    +
    + \ No newline at end of file