diff --git a/static/src/js/app/admin/announcement/announcement.js b/static/src/js/app/admin/announcement/announcement.js index 4ffe9f1..f356ac1 100644 --- a/static/src/js/app/admin/announcement/announcement.js +++ b/static/src/js/app/admin/announcement/announcement.js @@ -1,29 +1,23 @@ require(["jquery", "avalon", "csrf", "bs_alert", "editor", "validation"], function ($, avalon, csrfHeader, bs_alert, editor) { announcementEditor = editor("#editor"); //创建新建公告的内容编辑器 - editAnnouncementEditor = null; + editAnnouncementEditor = editor("#editAnnouncementEditor"); - if (!avalon.vmodels.announcement) // 防止模式重新定义 - { - // avalon:定义模式 announcement - vm = avalon.define({ + avalon.vmodels.announcement = null; + + // avalon:定义模式 announcement + avalon.ready(function () { + var vm = avalon.define({ $id: "announcement", - announcement: [], // 公告列表数据项 - previous_page: 0, // 之前的页数 - next_page: 0, // 之后的页数 - page: 1, // 当前页数 - isEditing: 0, // 正在编辑的公告的ID, 为零说明未在编辑 - page_count: 1, - visableOnly : false, - showOrHide : "仅显示可见", - announcementVisible : true, - changeHiddenState : function () { - if (vm.visableOnly == false) - vm.showOrHide = "显示全部"; - else - vm.showOrHide = "仅显示可见"; - vm.visableOnly =! vm.visableOnly; - getPageData(vm.page); - }, + //通用变量 + announcement: [], // 公告列表数据项 + previous_page: 0, // 之前的页数 + next_page: 0, // 之后的页数 + page: 1, // 当前页数 + isEditing: 0, // 正在编辑的公告的ID, 为零说明未在编辑 + page_count: 1, // 总页数 + visableOnly: false, //仅显示可见公告 + // 编辑 + announcementVisible: 0, getState: function (el) { //获取公告当前状态,显示 if (el.visible) return "可见"; @@ -33,14 +27,14 @@ require(["jquery", "avalon", "csrf", "bs_alert", "editor", "validation"], functi getNext: function (el) { if (!vm.next_page) return; - getPageData(++(vm.page)); + getPageData(vm.page + 1); }, getPrevious: function (el) { if (!vm.previous_page) return; - getPageData(--(vm.page)); + getPageData(vm.page - 1); }, - getBtnClass: function (btn) { + getBtnClass: function (btn) { //上一页/下一页按钮启用禁用逻辑 if (btn) { return vm.next_page ? "btn btn-primary" : "btn btn-primary disabled"; } @@ -49,12 +43,10 @@ require(["jquery", "avalon", "csrf", "bs_alert", "editor", "validation"], functi } }, - enEdit: function (el) { //点击编辑按钮的事件,显示/隐藏编辑区 + enEdit: function (el) { //点击编辑按钮的事件,显示/隐藏编辑区 $("#newTitle").val(el.title); - if (!editAnnouncementEditor) //初始化编辑器 - editAnnouncementEditor = editor("#editAnnouncementEditor"); editAnnouncementEditor.setValue(el.content); - vm.announcementVisible=el.visible; + vm.announcementVisible = el.visible; if (vm.isEditing == el.id) vm.isEditing = 0; else @@ -70,14 +62,20 @@ require(["jquery", "avalon", "csrf", "bs_alert", "editor", "validation"], functi if (content != "") { $.ajax({ //发送修改公告请求 beforeSend: csrfHeader, - url: "/api/announcements/", + url: "/api/admin/announcement/", dataType: "json", method: "put", - data: {id: vm.isEditing, title: title, content: content, visible: vm.announcementVisible}, + data: { + id: vm.isEditing, + title: title, + content: content, + visible: vm.announcementVisible + }, success: function (data) { if (!data.code) { bs_alert("修改成功"); vm.isEditing = 0; + getPageData(1); } else { bs_alert(data.data); @@ -92,76 +90,81 @@ require(["jquery", "avalon", "csrf", "bs_alert", "editor", "validation"], functi bs_alert("公告标题不能为空"); } }); - } - - avalon.scan(); - getPageData(1); //公告列表初始化 - vm.page = 1; - vm.isEditing = 0; - //Ajax get数据 - function getPageData(page) { - var visible = ''; - if (vm.visableOnly == true) - visible = "&visible=true"; - $.ajax({ - beforeSend: csrfHeader, - url: "/api/announcements/?paging=true&page=" + page + "&page_size=10"+visible, - dataType: "json", - method: "get", - success: function (data) { - if (!data.code) { - vm.announcement = data.data.results; - vm.page_count = data.data.total_page; - vm.previous_page = data.data.previous_page; - vm.next_page = data.data.next_page; - } - else { - bs_alert(data.data); - } - } + vm.$watch("visableOnly", function () { + getPageData(1); }); - } - //新建公告表单验证与数据提交 - $("#announcement-form") - .formValidation({ - framework: "bootstrap", - fields: { - title: { - validators: { - notEmpty: { - message: "请填写公告标题" + avalon.scan(); + + getPageData(1); //公告列表初始化 + + //Ajax get数据 + function getPageData(page) { + var visible = ''; + if (vm.visableOnly == true) + visible = "&visible=true"; + $.ajax({ + beforeSend: csrfHeader, + url: "/api/announcements/?paging=true&page=" + page + "&page_size=10" + visible, + dataType: "json", + method: "get", + success: function (data) { + if (!data.code) { + vm.announcement = 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); + } + } + }); + } + + //新建公告表单验证与数据提交 + $("#announcement-form") + .formValidation({ + framework: "bootstrap", + fields: { + title: { + validators: { + notEmpty: { + message: "请填写公告标题" + } } } } } - } - ).on('success.form.fv', function (e) { - e.preventDefault(); - var title = $("#title").val(); - var content = announcementEditor.getValue(); - if (content == "") { - bs_alert("请填写公告内容"); - return; - } - $.ajax({ - beforeSend: csrfHeader, - url: "/api/admin/announcement/", - data: {title: title, content: content}, - dataType: "json", - method: "post", - success: function (data) { - if (!data.code) { - bs_alert("提交成功!"); - $("#title").val(""); - announcementEditor.setValue(""); - getPageData(1, function (data) { - }); - } else { - bs_alert(data.data); - } + ).on('success.form.fv', function (e) { + e.preventDefault(); + var title = $("#title").val(); + var content = announcementEditor.getValue(); + if (content == "") { + bs_alert("请填写公告内容"); + return; } - }) - }); + $.ajax({ + beforeSend: csrfHeader, + url: "/api/admin/announcement/", + data: {title: title, content: content}, + dataType: "json", + method: "post", + success: function (data) { + if (!data.code) { + bs_alert("提交成功!"); + $("#title").val(""); + announcementEditor.setValue(""); + getPageData(1, function (data) { + }); + } else { + bs_alert(data.data); + } + } + }) + }); + }); + }); \ No newline at end of file diff --git a/template/admin/announcement/announcement.html b/template/admin/announcement/announcement.html index 4bfd227..62977f8 100644 --- a/template/admin/announcement/announcement.html +++ b/template/admin/announcement/announcement.html @@ -25,8 +25,7 @@