emailbroadcast.js 5.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103
  1. define(['jquery', 'table', 'form'], function($, Table, Form) {
  2. Yzn.config.openArea = ['90%', '90%'];
  3. var Controller = {
  4. index: function() {
  5. Table.init = {
  6. table_elem: '#currentTable',
  7. table_render_id: 'currentTable',
  8. add_url: 'emailbroadcast/add',
  9. edit_url: 'emailbroadcast/edit',
  10. delete_url: 'emailbroadcast/del'
  11. };
  12. Table.render({
  13. init: Table.init,
  14. toolbar: ['refresh', 'add'],
  15. url: 'emailbroadcast/index',
  16. cols: [[
  17. {type:'checkbox', width:50},
  18. {field:'id', width:80, title:'ID', sort:true},
  19. {field:'name', minWidth:220, title:'任务名称'},
  20. {field:'lang', width:100, title:'语言'},
  21. {field:'template_name', minWidth:160, title:'模板'},
  22. {field:'recipient_count', width:110, title:'目标人数'},
  23. {field:'success_count', width:110, title:'成功数'},
  24. {field:'fail_count', width:110, title:'失败数'},
  25. {field:'status_text', width:110, title:'状态'},
  26. {field:'start_time', width:170, title:'开始时间', templet:function(d){ return d.start_time ? Table.formatter.datetime.call(this, d.start_time) : '-'; }},
  27. {field:'finish_time', width:170, title:'完成时间', templet:function(d){ return d.finish_time ? Table.formatter.datetime.call(this, d.finish_time) : '-'; }},
  28. {field:'createtime', width:170, title:'创建时间', templet: Table.formatter.datetime},
  29. {field:'operate', title:'操作', width:360, fixed:'right', templet:function(d){
  30. var status = parseInt(d.status, 10);
  31. var sendText = [0,3,4].indexOf(status) > -1 ? '执行发送' : '查看状态';
  32. var html = '<a href="javascript:;" class="layui-btn layui-btn-xs" data-event="items" data-id="'+d.id+'">明细</a>';
  33. if (status === 0) {
  34. html += '<a href="javascript:;" class="layui-btn layui-btn-xs layui-btn-normal" data-event="edit" data-id="'+d.id+'">编辑</a>';
  35. }
  36. html += '<a href="javascript:;" class="layui-btn layui-btn-xs layui-btn-warm" data-event="send" data-status="'+status+'" data-id="'+d.id+'">'+sendText+'</a>';
  37. html += '<a href="javascript:;" class="layui-btn layui-btn-xs layui-btn-danger" data-event="delete" data-id="'+d.id+'">删除</a>';
  38. return html;
  39. }}
  40. ]],
  41. page: {}
  42. });
  43. $('#searchBtn').on('click', function() {
  44. layui.table.reload('currentTable', { where: {
  45. name: $('#name').val(), lang: $('#lang').val(), status: $('#status').val(), template_id: $('#template_id').val()
  46. }, page: {curr: 1} });
  47. });
  48. $('#resetBtn').on('click', function() {
  49. $('#name,#lang,#status,#template_id').val('');
  50. layui.form.render('select');
  51. layui.table.reload('currentTable', { where: {}, page: {curr: 1} });
  52. });
  53. $(document).on('click', '[data-event="items"]', function() {
  54. location.href = Backend.api.fixurl('emailbroadcast/items') + '?id=' + $(this).data('id');
  55. });
  56. $(document).on('click', '[data-event="edit"]', function() {
  57. location.href = Backend.api.fixurl('emailbroadcast/edit') + '?id=' + $(this).data('id');
  58. });
  59. $(document).on('click', '[data-event="send"]', function() {
  60. var id = $(this).data('id');
  61. var status = parseInt($(this).data('status'), 10);
  62. if ([0,3,4].indexOf(status) === -1) {
  63. var tips = {
  64. 1: '该任务当前处于发送中,请稍后刷新查看结果。',
  65. 2: '该任务已经全部发送完成,无需再次执行。'
  66. };
  67. layer.msg(tips[status] || '当前状态不允许执行发送');
  68. return;
  69. }
  70. var batchSize = parseInt($('#batch_size').val(), 10) || 100;
  71. if (batchSize < 1) batchSize = 1;
  72. if (batchSize > 500) batchSize = 500;
  73. layer.confirm('确认立即执行该群发任务吗?发送后将逐条写入邮件日志。', {icon:3, title:'提示'}, function(index) {
  74. $.post('emailbroadcast/send', {id:id, batch_size:batchSize}, function(res) {
  75. layer.msg(res.msg || (res.code === 1 ? '发送完成' : '发送失败'));
  76. if (res.code === 1) {
  77. layui.table.reload('currentTable');
  78. }
  79. }, 'json').fail(function(){layer.msg('发送请求失败');});
  80. layer.close(index);
  81. });
  82. });
  83. $(document).on('click', '[data-event="delete"]', function() {
  84. var id = $(this).data('id');
  85. layer.confirm('确认删除该群发任务及其明细吗?', {icon:3, title:'警告'}, function(index) {
  86. $.post('emailbroadcast/del', {ids:[id]}, function(res) {
  87. layer.msg(res.msg || (res.code === 1 ? '删除成功' : '删除失败'));
  88. if (res.code === 1) {
  89. layui.table.reload('currentTable');
  90. }
  91. }, 'json').fail(function(){layer.msg('删除请求失败');});
  92. layer.close(index);
  93. });
  94. });
  95. Table.api.bindevent();
  96. Form.api.bindevent($('form.layui-form'));
  97. }
  98. };
  99. return Controller;
  100. });