135 lines
5.5 KiB
JavaScript
135 lines
5.5 KiB
JavaScript
require(["jquery", "avalon", "csrfToken", "bsAlert", "editor", "validator", "pager"],
|
|
function ($, avalon, csrfTokenHeader, bsAlert, editor) {
|
|
avalon.ready(function () {
|
|
|
|
var createAnnouncementEditor = editor("#create-announcement-editor");
|
|
var editAnnouncementEditor = editor("#edit-announcement-editor");
|
|
|
|
if (avalon.vmodels.announcement){
|
|
var vm = avalon.vmodels.announcement;
|
|
}
|
|
else {
|
|
var vm = avalon.define({
|
|
$id: "announcement",
|
|
announcementList: [],
|
|
isEditing: false,
|
|
showVisibleOnly: false,
|
|
|
|
//编辑器同步变量
|
|
announcementId: -1,
|
|
newTitle: "",
|
|
announcementVisible: false,
|
|
|
|
pager: {
|
|
getPage: function(page){
|
|
getPage(page);
|
|
}
|
|
},
|
|
editAnnouncement: function (announcement) {
|
|
vm.newTitle = announcement.title;
|
|
vm.announcementId = announcement.id;
|
|
editAnnouncementEditor.setValue(announcement.content);
|
|
vm.announcementVisible = announcement.visible;
|
|
vm.isEditing = true;
|
|
editAnnouncementEditor.focus();
|
|
},
|
|
cancelEdit: function () {
|
|
vm.isEditing = false;
|
|
},
|
|
submitChange: function () {
|
|
var title = vm.newTitle;
|
|
var content = editAnnouncementEditor.getValue();
|
|
|
|
if (content == "" || title == "") {
|
|
bsAlert("标题和内容都不能为空");
|
|
return false;
|
|
}
|
|
|
|
$.ajax({
|
|
url: "/api/admin/announcement/",
|
|
contentType: "application/json;charset=UTF-8",
|
|
dataType: "json",
|
|
method: "put",
|
|
data: JSON.stringify({
|
|
id: vm.announcementId,
|
|
title: title,
|
|
content: content,
|
|
visible: vm.announcementVisible
|
|
}),
|
|
success: function (data) {
|
|
if (!data.code) {
|
|
bsAlert("修改成功");
|
|
vm.isEditing = false;
|
|
localStorage.removeItem("/admin/autosave/edit-announcement-editor/");
|
|
getPage(1);
|
|
}
|
|
else {
|
|
bsAlert(data.data);
|
|
}
|
|
}
|
|
});
|
|
|
|
}
|
|
});
|
|
|
|
vm.$watch("showVisibleOnly", function () {
|
|
getPage(1);
|
|
avalon.vmodels.announcementPager.currentPage = 1;
|
|
});
|
|
}
|
|
|
|
function getPage(page) {
|
|
var url = "/api/admin/announcement/?paging=true&page=" + page + "&page_size=20";
|
|
if (vm.showVisibleOnly)
|
|
url += "&visible=true";
|
|
$.ajax({
|
|
url: url,
|
|
method: "get",
|
|
success: function (data) {
|
|
if (!data.code) {
|
|
vm.announcementList = data.data.results;
|
|
avalon.vmodels.announcementPager.totalPage = data.data.total_page;
|
|
}
|
|
else {
|
|
bsAlert(data.data);
|
|
}
|
|
}
|
|
});
|
|
}
|
|
|
|
//新建公告表单验证与数据提交
|
|
$("#announcement-form").validator().on('submit', function (e) {
|
|
if (!e.isDefaultPrevented()) {
|
|
var title = $("#title").val();
|
|
var content = createAnnouncementEditor.getValue();
|
|
if (content == "") {
|
|
bsAlert("请填写公告内容");
|
|
return false;
|
|
}
|
|
$.ajax({
|
|
url: "/api/admin/announcement/",
|
|
contentType: "application/json",
|
|
data: JSON.stringify({
|
|
title: title,
|
|
content: content
|
|
}),
|
|
dataType: "json",
|
|
method: "post",
|
|
success: function (data) {
|
|
if (!data.code) {
|
|
bsAlert("提交成功!");
|
|
$("#title").val("");
|
|
createAnnouncementEditor.setValue("");
|
|
localStorage.removeItem("/admin/autosave/create-announcement-editor/");
|
|
getPage(1);
|
|
} else {
|
|
bsAlert(data.data);
|
|
}
|
|
}
|
|
});
|
|
return false;
|
|
}
|
|
})
|
|
});
|
|
avalon.scan();
|
|
}); |