Files
OnlineJudge/static/src/js/app/admin/user/userList.js

118 lines
4.4 KiB
JavaScript

require(["jquery", "avalon", "csrfToken", "bsAlert", "pager", "validator"],
function ($, avalon, csrfTokenHeader, bsAlert) {
avalon.ready(function () {
if (avalon.vmodels.userList) {
var vm = avalon.vmodels.userList;
}
else {
var vm = avalon.define({
$id: "userList",
userList: [],
userType: ["一般用户", "管理员", "超级管理员"],
keyword: "",
showAdminOnly: false,
isEditing: false,
username: "",
realName: "",
email: "",
adminType: 0,
userId: -1,
openAPI: false,
tfa_auth: false,
is_forbidden: false,
password: "",
pager: {
getPage: function (page) {
getPage(page);
}
},
editUser: function (user) {
vm.username = user.username;
vm.realName = user.real_name;
vm.adminType = user.admin_type;
vm.email = user.email;
vm.userId = user.id;
vm.tfa_auth = user.two_factor_auth;
vm.openAPI = user.openapi_appkey ? true: false;
vm.is_forbidden = user.is_forbidden ? true: false;
vm.isEditing = true;
},
search: function () {
getPage(1);
avalon.vmodels.userPager.currentPage = 1;
}
});
}
vm.$watch("showAdminOnly", function () {
getPage(1);
avalon.vmodels.userPager.currentPage = 1;
});
function getPage(page) {
var url = "/api/admin/user/?paging=true&page=" + page + "&page_size=10";
if (vm.showAdminOnly == true)
url += "&admin_type=1";
if (vm.keyword != "")
url += "&keyword=" + vm.keyword;
$.ajax({
beforeSend: csrfTokenHeader,
url: url,
dataType: "json",
method: "get",
success: function (data) {
if (!data.code) {
vm.userList = data.data.results;
avalon.vmodels.userPager.totalPage = data.data.total_page;
}
else {
bsAlert(data.data);
}
}
});
}
$("#edit-user-form").validator()
.on('submit', function (e) {
if (!e.isDefaultPrevented()) {
var data = {
username: vm.username,
real_name: vm.realName,
email: vm.email,
id: vm.userId,
admin_type: vm.adminType,
openapi: vm.openAPI,
tfa_auth: vm.tfa_auth,
is_forbidden : vm.is_forbidden
};
if (vm.password != "")
data.password = vm.password;
$.ajax({
url: "/api/admin/user/",
data: data,
dataType: "json",
method: "put",
success: function (data) {
if (!data.code) {
bsAlert("编辑成功!");
getPage(avalon.vmodels.userPager.currentPage);
vm.password = "";
vm.isEditing = false;
} else {
bsAlert(data.data);
}
}
});
return false;
}
});
});
avalon.scan();
});