添加后台编辑比赛页面[CI SKIP]

This commit is contained in:
sxw
2015-10-30 14:52:22 +08:00
parent a1466ce7e4
commit 5cdab3f573
3 changed files with 290 additions and 1 deletions

View File

@@ -20,6 +20,14 @@ require(["jquery", "avalon", "csrfToken", "bsAlert", "editor", "datetimePicker",
search: function () {
getPage(1);
avalon.vmodels.contestListPager.currentPage = 1;
},
editContest: function(contestId){
avalon.vmodels.admin.contestId = contestId;
avalon.vmodels.admin.template_url = "template/contest/edit_contest.html";
},
showContestProblems: function(contestId){
// todo
}
})
}
@@ -42,7 +50,6 @@ require(["jquery", "avalon", "csrfToken", "bsAlert", "editor", "datetimePicker",
success: function (data) {
if (!data.code) {
vm.contestList = data.data.results;
vm.announcementList = data.data.results;
avalon.vmodels.contestListPager.totalPage = data.data.total_page;
}
else {

View File

@@ -0,0 +1,175 @@
require(["jquery", "avalon", "editor", "uploader", "bsAlert", "csrfToken", "datetimePicker",
"validator", "editorComponent"],
function ($, avalon, editor, uploader, bsAlert, csrfTokenHeader) {
$("#edit-contest-form").validator().on('submit', function (e) {
if (!e.isDefaultPrevented()) {
e.preventDefault();
var ajaxData = {
id: avalon.vmodels.admin.contestId,
title: vm.title,
description: avalon.vmodels.contestDescriptionEditor.content,
contest_type: 0,
real_time_rank: vm.realTimeRank,
start_time: vm.startTime,
end_time: vm.endTime,
visible: vm.visible
};
var selectedGroups = [];
if (!vm.isGlobal) {
for (var i = 0; i < vm.allGroups.length; i++) {
if (vm.allGroups[i].isSelected) {
selectedGroups.push(vm.allGroups[i].id);
}
}
ajaxData.groups = selectedGroups;
}
else {
if (vm.password) {
ajaxData.password = vm.password;
ajaxData.contest_type = 2;
}
else
ajaxData.contest_type = 1;
}
if (!vm.isGlobal && !selectedGroups.length) {
bsAlert("你没有选择参赛用户!");
return false;
}
if (ajaxData.description.trim() == "") {
bsAlert("比赛描述不能为空!");
return false;
}
$.ajax({
url: "/api/admin/contest/",
dataType: "json",
contentType: "application/json;charset=UTF-8",
data: JSON.stringify(ajaxData),
method: "put",
success: function (data) {
if (!data.code) {
bsAlert("修改成功!");
vm.showContestListPage();
}
else {
bsAlert(data.data);
}
}
});
}
return false;
});
if (avalon.vmodels.edit_contest)
var vm = avalon.vmodels.edit_contest;
else
var vm = avalon.define({
$id: "edit_contest",
title: "",
startTime: "",
endTime: "",
password: "",
isGlobal: true,
allGroups: [],
showGlobalViewRadio: true,
realTimeRank: true,
visible: false,
showContestListPage: function () {
avalon.vmodels.admin.template_url = "template/contest/contest_list.html";
},
contestDescriptionEditor: {
editorId: "contest-description-editor",
placeholder: "比赛介绍内容"
}
});
avalon.scan();
$.ajax({
url: "/api/user/",
method: "get",
dataType: "json",
success: function (data) {
if (!data.code) {
var admin_type = data.data.admin_type;
if (data.data.admin_type == 1) {
vm.isGlobal = false;
vm.showGlobalViewRadio = false;
}
}
$.ajax({
url: "/api/admin/group/",
method: "get",
dataType: "json",
success: function (data) {
if (!data.code) {
if (!data.data.length) {
if (admin_type != 2)
bsAlert("您的用户权限只能创建小组内比赛,但是您还没有创建过小组");
return;
}
vm.allGroups = [];
for (var i = 0; i < data.data.length; i++) {
var item = data.data[i];
item.isSelected = false;
vm.allGroups.push(item);
}
$.ajax({
url: "/api/admin/contest/?contest_id=" + avalon.vmodels.admin.contestId,
method: "get",
dataType: "json",
success: function (data) {
if (data.code) {
bsAlert(data.data);
}
else {
var contest = data.data;
vm.title = contest.title;
avalon.vmodels.contestDescriptionEditor.content = contest.description;
vm.visible = contest.visible;
vm.realTimeRank = contest.real_time_rank;
vm.startTime = contest.start_time.substring(0, 16).replace("T", " ");
vm.endTime = contest.end_time.substring(0, 16).replace("T", " ");
if (contest.contest_type == 0) { //contest_type == 0, 小组内比赛
vm.isGlobal = false;
for (var i = 0; i < vm.allGroups.length; i++) {
vm.allGroups[i].isSelected = false;
}
for (var i = 0; i < contest.groups.length; i++) {
var id = contest.groups[i];
for (var index = 0; vm.allGroups[index]; index++) {
if (vm.allGroups[index].id == id) {
vm.allGroups[index].isSelected = true;
break;
}
}
}
}
else {
vm.isGlobal = true;
}
}
}
});
}
else {
bsAlert(data.data);
}
}
});
}
});
$("#contest_start_time").datetimepicker({
format: "yyyy-mm-dd hh:ii",
minuteStep: 5,
weekStart: 1,
language: "zh-CN"
});
$("#contest_end_time").datetimepicker({
format: "yyyy-mm-dd hh:ii",
minuteStep: 5,
weekStart: 1,
language: "zh-CN"
});
});