article.js 5.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198
  1. ;
  2. layui.define(['form','table','upload'], function (e) {
  3. var s = layui.$,
  4. l = (layui.layer, layui.laytpl, layui.setter, layui.view, layui.admin),
  5. table = layui.table,
  6. upload = layui.upload,
  7. form = layui.form;
  8. window.UEDITOR_HOME_URL = "/static/plugins/ueditor/";
  9. upload.render({
  10. elem: '.file' //绑定元素
  11. ,url: '/admin/file/upload' //上传接口
  12. ,done: function(res){
  13. //上传完毕回调
  14. if (!res.code) {
  15. var name = s(this.item).data('name');
  16. s('input[name="'+name+'"]').val(res.data.src);
  17. s(this.item).attr('src',res.data.src);
  18. }
  19. }
  20. })
  21. table.render({
  22. elem:'#article-table'
  23. ,url:'load.html'
  24. ,toolbar:'#topToolbar'
  25. ,where:{type_id:s('select[name=type_id]').val()}
  26. ,cols: [[
  27. {field:'id', title: 'ID'}
  28. ,{field:'type_cname', title: '分类'}
  29. ,{field:'title', title: '标题'}
  30. ,{field:'update_time', title: '最后修改时间',sort:true}
  31. ,{field:'state', title: '状态',templet:"#switchState"}
  32. ,{field:'recommend', title: '推荐',templet:"#switchRecommend"}
  33. ,{title:'操作', fixed: 'right', width:250, align:'center', toolbar: '#rowToolbar'}
  34. ]]
  35. ,id: 'article-table'
  36. ,page: true
  37. });
  38. table.on('toolbar(article)',function(obj){
  39. switch(obj.event){
  40. case "add":
  41. layer.open({
  42. type: 2,
  43. title: '添加文章',
  44. shadeClose: true,
  45. shade: true,
  46. area: ['70%', '80%'],
  47. content: 'add.html'
  48. });
  49. break;
  50. case "search":
  51. table.reload('article-table',{
  52. where:{class_id:s('select[name=class_id]').val(),cname:s('input[name=cname]').val()}
  53. })
  54. break;
  55. }
  56. })
  57. table.on('tool(article)', function(obj){
  58. var data = obj.data;
  59. var layEvent = obj.event;
  60. var tr = obj.tr;
  61. switch(layEvent){
  62. case 'edit':
  63. layer.open({
  64. type: 2,
  65. title: "编辑文章",
  66. shadeClose: true,
  67. shade: true,
  68. area: ['80%', '80%'],
  69. content: 'edit.html?id='+data['id']
  70. });
  71. break;
  72. case 'delete':
  73. layer.confirm('您确定要删除该行数据吗?', {
  74. btn: ['确定','取消'] //按钮
  75. }, function(index){
  76. s.post('delete.html',{id:data.id},function(r){
  77. if(r.code){
  78. layer.msg(r.msg);
  79. }else{
  80. obj.del();
  81. layer.close(index);
  82. }
  83. });
  84. });
  85. break;
  86. }
  87. });
  88. form.on('submit(LAY-article-edit)',function(data){
  89. s.post('edit.html',data.field,function(r){
  90. layer.msg(r.msg,{end:function(){
  91. if(!r.code){
  92. var index = parent.layer.getFrameIndex(window.name);
  93. parent.layer.close(index);
  94. parent.layui.table.reload('position-table');
  95. }
  96. }})
  97. })
  98. return false;
  99. })
  100. form.on('submit(LAY-article-add)',function(data){
  101. s.post('add.html',data.field,function(r){
  102. layer.msg(r.msg,{end:function(){
  103. if(!r.code){
  104. var index = parent.layer.getFrameIndex(window.name);
  105. parent.layer.close(index); //再执行关闭
  106. parent.layui.table.reload('position-table');
  107. }
  108. }})
  109. })
  110. return false;
  111. })
  112. form.on('switch(state)', function(obj){
  113. var id = s(this).data('id');
  114. s.post(layui.setter.host + 'admin/article/state.html',{id:id,state:obj.elem.checked},function(r){
  115. r.code && layer.msg(r.msg);
  116. })
  117. });
  118. form.on('switch(recommend)', function(obj){
  119. var id = s(this).data('id');
  120. s.post(layui.setter.host + 'admin/article/recommend.html',{id:id,recommend:obj.elem.checked},function(r){
  121. r.code && layer.msg(r.msg);
  122. })
  123. });
  124. form.on('select(type)',function(data){
  125. var id = s(data.elem).find('option:selected').val();
  126. var typename = data.elem.name == 'type_1'?'2':'3';
  127. article.prototype.loadtype(typename,id);
  128. table.reload('article-table',{
  129. where:{
  130. type_id:id
  131. },
  132. page:{
  133. curr:1
  134. }
  135. })
  136. })
  137. var article = function(){
  138. if (s('select[name=type_1]').length > 0) {
  139. article.prototype.loadtype(1,0);
  140. }
  141. if (s('#content').length > 0) {
  142. article.prototype.loadUEditor("/static/plugins/ueditor/ueditor.config.js",function(){
  143. article.prototype.loadUEditor('/static/plugins/ueditor/ueditor.all.min.js',function(){
  144. var um = UE.getEditor('content',{enterTag:''});
  145. })
  146. })
  147. }
  148. }
  149. article.prototype.loadUEditor = function(url,callback){
  150. var head = document.getElementsByTagName('head')[0];
  151. var script = document.createElement('script');
  152. script.type = 'text/javascript';
  153. script.src = url;
  154. script.onload = script.onreadystatechange = function () {
  155. if (!this.readyState || this.readyState === "loaded" || this.readyState === "complete"){
  156. callback();
  157. script.onload = script.onreadystatechange = null;
  158. }
  159. };
  160. head.appendChild(script);
  161. }
  162. article.prototype.loadtype = function(level,pid){
  163. s.post('/admin/article.type/loadforselect.html',{pid:pid},function(r){
  164. if (!r.code) {
  165. var selected = s('select[name=type_'+level+']').data('selected');
  166. var options = [];
  167. for (var index in r.data) {
  168. options.push('<option value="'+r.data[index]['id']+'" '+(selected == r.data[index]['id']?'selected':'')+' >'+r.data[index]['cname']+'</option>');
  169. }
  170. s('select[name=type_'+level+'] option:not(:first)').remove();
  171. s('select[name=type_'+level+']').append(options.join(''));
  172. form.render('select');
  173. if (level != 3) {
  174. var pid = s('select[name=type_'+level+']').val();
  175. if (pid > 0) {
  176. level = level == 1?2:3;
  177. article.prototype.loadtype(level,pid);
  178. }
  179. }
  180. }
  181. })
  182. }
  183. e('article',new article());
  184. })