From 6c59a15c1f9ba11a4577162270b62f90a9d85ef2 Mon Sep 17 00:00:00 2001 From: virusdefender <1670873886@qq.com> Date: Tue, 11 Aug 2015 19:15:25 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E4=BA=86=E5=90=8E=E5=8F=B0?= =?UTF-8?q?=E5=B0=8F=E7=BB=84=E7=AE=A1=E7=90=86=E7=9A=84=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- static/src/js/app/admin/admin.js | 6 + static/src/js/app/admin/group/group.js | 73 +++++++++ static/src/js/app/admin/group/group_detail.js | 119 ++++++++++++++ .../admin/group/join_group_request_list.js | 148 ++++++++++++++++++ template/admin/admin.html | 7 + template/admin/group/edit_group.html | 0 template/admin/group/group.html | 43 +++++ template/admin/group/group_detail.html | 58 +++++++ .../admin/group/join_group_request_list.html | 31 ++++ 9 files changed, 485 insertions(+) create mode 100644 static/src/js/app/admin/group/group.js create mode 100644 static/src/js/app/admin/group/group_detail.js create mode 100644 static/src/js/app/admin/group/join_group_request_list.js create mode 100644 template/admin/group/edit_group.html create mode 100644 template/admin/group/group.html create mode 100644 template/admin/group/group_detail.html create mode 100644 template/admin/group/join_group_request_list.html diff --git a/static/src/js/app/admin/admin.js b/static/src/js/app/admin/admin.js index 9c17e41..4584d9a 100644 --- a/static/src/js/app/admin/admin.js +++ b/static/src/js/app/admin/admin.js @@ -24,11 +24,17 @@ define("admin", ["jquery", "avalon"], function ($, avalon) { var vm = avalon.define({ $id: "admin", template_url: "template/" + hash + ".html", + group_id: -1, hide_loading: function () { $("#loading-gif").hide(); } }); + vm.$watch("showGroupDetailPage", function(group_id){ + vm.group_id = group_id; + vm.template_url = "template/group/group_detail.html"; + }); + avalon.scan(); li_active("#li-" + hash.replace("/", "-")); diff --git a/static/src/js/app/admin/group/group.js b/static/src/js/app/admin/group/group.js new file mode 100644 index 0000000..9ba1ed8 --- /dev/null +++ b/static/src/js/app/admin/group/group.js @@ -0,0 +1,73 @@ +require(["jquery", "avalon", "csrf", "bs_alert", "validation"], function ($, avalon, csrfHeader, bs_alert) { + avalon.vmodels.group = null; + + // avalon:定义模式 group_list + avalon.ready(function () { + var vm = avalon.define({ + $id: "group", + //通用变量 + group_list: [], // 用户列表数据项 + previous_page: 0, // 之前的页数 + next_page: 0, // 之后的页数 + page: 1, // 当前页数 + page_count: 1, // 总页数 + keyword: "", + + 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"; + } + }, + getPage: function (page_index) { + getPageData(page_index); + }, + getGroupSettingString: function(setting){ + return {0: "允许任何人加入", 1: "提交请求后管理员审核", 2: "不允许任何人加入"}[setting] + }, + showGroupDetailPage: function(group_id){ + vm.$fire("up!showGroupDetailPage", group_id); + } + }); + + avalon.scan(); + getPageData(1); //用户列表初始化 + //Ajax get数据 + function getPageData(page) { + var url = "/api/admin/group/?paging=true&page=" + page + "&page_size=10"; + if (vm.keyword != "") + url += "&keyword=" + vm.keyword; + $.ajax({ + beforeSend: csrfHeader, + url: url, + dataType: "json", + method: "get", + success: function (data) { + if (!data.code) { + vm.group_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); + } + } + }); + } + }); + +}); \ No newline at end of file diff --git a/static/src/js/app/admin/group/group_detail.js b/static/src/js/app/admin/group/group_detail.js new file mode 100644 index 0000000..93a5d43 --- /dev/null +++ b/static/src/js/app/admin/group/group_detail.js @@ -0,0 +1,119 @@ +require(["jquery", "avalon", "csrf", "bs_alert", "validation"], function ($, avalon, csrfHeader, bs_alert) { + avalon.vmodels.group_detail = null; + + // avalon:定义模式 group_list + avalon.ready(function () { + var vm = avalon.define({ + $id: "group_detail", + //通用变量 + member_list: [], + previous_page: 0, + next_page: 0, + page: 1, + page_count: 1, + name: "", + description: "", + join_group_setting: {0: false, 1: false, 2: false}, + checked_setting: 0, + + getSettingChecked: function (setting) { + return setting == vm.join_group_setting; + }, + + updateGroupInfo: function () { + $.ajax({ + beforeSend: csrfHeader, + url: "/api/admin/group/", + method: "put", + data: {group_id: avalon.vmodels.admin.group_id, name: vm.name, + description: vm.description, join_group_setting: vm.join_group_setting}, + dataType: "json", + success: function (data) { + if (!data.code) { + bs_alert("修改成功"); + } + else { + bs_alert(data.data); + } + } + }) + }, + + 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"; + } + }, + getPage: function (page_index) { + getPageData(page_index); + }, + removeMember: function (relation) { + $.ajax({ + beforeSend: csrfHeader, + url: "/api/admin/group_member/", + method: "put", + data: JSON.stringify({group_id: relation.group, members: [relation.user.id]}), + contentType: "application/json", + success: function (data) { + vm.member_list.remove(relation); + bs_alert(data.data); + } + }) + } + }); + + avalon.scan(); + getPageData(1); + function getPageData(page) { + var url = "/api/admin/group_member/?paging=true&page=" + page + + "&page_size=10&group_id=" + avalon.vmodels.admin.group_id; + $.ajax({ + url: url, + dataType: "json", + method: "get", + success: function (data) { + if (!data.code) { + vm.member_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); + } + } + }); + } + + $.ajax({ + url: "/api/admin/group/?group_id=" + avalon.vmodels.admin.group_id, + method: "get", + dataType: "json", + success: function (data) { + if (!data.code) { + vm.name = data.data.name; + vm.description = data.data.description; + vm.join_group_setting[data.data.join_group_setting] = true; + } + else { + bs_alert(data.data); + } + } + }) + }); + +}); \ No newline at end of file diff --git a/static/src/js/app/admin/group/join_group_request_list.js b/static/src/js/app/admin/group/join_group_request_list.js new file mode 100644 index 0000000..8bf2caa --- /dev/null +++ b/static/src/js/app/admin/group/join_group_request_list.js @@ -0,0 +1,148 @@ +require(["jquery", "avalon", "csrf", "bs_alert", "validation"], function ($, avalon, csrfHeader, bs_alert) { + avalon.vmodels.request_list = null; + + // avalon:定义模式 group_list + avalon.ready(function () { + var vm = avalon.define({ + $id: "request_list", + //通用变量 + request_list: [], // 列表数据项 + previous_page: 0, // 之前的页数 + next_page: 0, // 之后的页数 + page: 1, // 当前页数 + page_count: 1, // 总页数 + + 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"; + } + }, + getPage: function (page_index) { + getPageData(page_index); + }, + processRequest: function(request_id, status){ + $.ajax({ + beforeSend: csrfHeader, + url: "/api/admin/join_group_request/", + method: "put", + data: {request_id: request_id, status: status}, + success: function(data){ + bs_alert(data.data); + } + }) + } + }); + + avalon.scan(); + getPageData(1); + //Ajax get数据 + function getPageData(page) { + var url = "/api/admin/join_group_request/?paging=true&page=" + page + "&page_size=10"; + $.ajax({ + beforeSend: csrfHeader, + url: url, + dataType: "json", + method: "get", + success: function (data) { + if (!data.code) { + vm.request_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 ce1094e..69aba41 100644 --- a/template/admin/admin.html +++ b/template/admin/admin.html @@ -104,6 +104,13 @@
  • 用户分组
  • +
  • 小组管理
  • +
  • + 小组列表 +
  • +
  • + 加入小组请求 +
  • diff --git a/template/admin/group/edit_group.html b/template/admin/group/edit_group.html new file mode 100644 index 0000000..e69de29 diff --git a/template/admin/group/group.html b/template/admin/group/group.html new file mode 100644 index 0000000..81a8e08 --- /dev/null +++ b/template/admin/group/group.html @@ -0,0 +1,43 @@ +
    +

    小组管理

    +
    +
    +
    + + + +
    +
    +
    +
    + + + + + + + + + + + + + + + + + + + +
    ID名称创建时间人数设置
    {{el.id}}{{el.name}}{{el.create_time|date("yyyy-MM-dd HH:mm:ss")}}{{ el.members_number }}{{ getGroupSettingString(el.join_group_setting) }} + +
    + +
    + 页数:{{page}}/{{page_count}}   + 上一页 + 下一页 +
    + +
    + \ No newline at end of file diff --git a/template/admin/group/group_detail.html b/template/admin/group/group_detail.html new file mode 100644 index 0000000..d38b4f6 --- /dev/null +++ b/template/admin/group/group_detail.html @@ -0,0 +1,58 @@ +
    +

    小组成员管理

    + + + + + + + + + + + + + + + + +
    ID用户名真实姓名加入时间
    {{ el.user.id }}{{ el.user.username }}{{ el.user.real_name }}{{ el.join_time|date("yyyy-MM-dd HH:mm:ss")}} + +
    + +
    + 页数:{{ page }}/{{ page_count }}   + 上一页 + 下一页 +
    + +

    修改小组信息

    + +
    + +
    +
    + +
    +
    +
    +
    + +
    +
    +
    +
    + + 允许任何人加入 + 提交请求后管理员审核 + 不允许任何人加入 +
    +
    +
    + +
    + +
    + +
    + \ No newline at end of file diff --git a/template/admin/group/join_group_request_list.html b/template/admin/group/join_group_request_list.html new file mode 100644 index 0000000..5c74e63 --- /dev/null +++ b/template/admin/group/join_group_request_list.html @@ -0,0 +1,31 @@ +
    +

    加入小组请求管理

    + + + + + + + + + + + + + + + + +
    创建时间用户小组附加消息
    {{el.create_time|date("yyyy-MM-dd HH:mm:ss")}}{{ el.group.name }}{{ el.user.username }}{{ el.message }} + + +
    + +
    + 页数:{{page}}/{{page_count}}   + 上一页 + 下一页 +
    + +
    + \ No newline at end of file