emailsubscribe.js 9.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128
  1. define(['jquery', 'table', 'form'], function($, Table, Form) {
  2. Yzn.config.openArea = ['90%', '90%'];
  3. function formatMailType(val) {
  4. var map = {
  5. 'subscribe_auto': '自动欢迎邮件',
  6. 'subscribe_manual': '后台补发邮件',
  7. 'marketing_broadcast': '营销群发'
  8. };
  9. return map[val] || val || '-';
  10. }
  11. var Controller = {
  12. index: function() {
  13. Table.init = { table_elem: '#currentTable', table_render_id: 'currentTable' };
  14. Table.render({
  15. init: Table.init,
  16. toolbar: ['refresh'],
  17. url: 'emailsubscribe/index',
  18. cols: [[
  19. {type:'checkbox', width:50},
  20. {field:'id', width:80, title:'ID', sort:true},
  21. {field:'email', minWidth:220, title:'邮箱'},
  22. {field:'lang', width:100, title:'语言'},
  23. {field:'source_key', width:120, title:'来源标识'},
  24. {field:'status', width:110, title:'订阅状态', templet:function(d){ var map={0:'已取消',1:'已订阅',9:'用户退订'}; return map[d.status] || d.status; }},
  25. {field:'last_send_status', width:110, title:'发送状态', templet:function(d){ var map={0:'未发送',1:'成功',2:'失败'}; return map[d.last_send_status] || d.last_send_status; }},
  26. {field:'last_send_time', width:170, title:'最近发送时间', templet:function(d){ return d.last_send_time ? Table.formatter.datetime.call(this, d.last_send_time) : '-'; }},
  27. {field:'source_page', minWidth:220, title:'来源页面'},
  28. {field:'privacy_agree_text', width:100, title:'隐私同意'},
  29. {field:'privacy_agree_time', width:170, title:'同意时间', templet:function(d){ return d.privacy_agree_time ? Table.formatter.datetime.call(this, d.privacy_agree_time) : '-'; }},
  30. {field:'privacy_agree_ip', width:140, title:'同意IP'},
  31. {field:'ip', width:140, title:'提交IP'},
  32. {field:'createtime', width:170, title:'创建时间', templet: Table.formatter.datetime},
  33. {field:'operate', title:'操作', width:220, fixed:'right', templet:function(d){
  34. return ''
  35. + '<a href="javascript:;" class="layui-btn layui-btn-xs" data-id="'+d.id+'" data-event="resend">补发邮件</a>'
  36. + '<a href="javascript:;" class="layui-btn layui-btn-xs layui-btn-warm" data-id="'+d.id+'" data-status="1" data-event="status">设为订阅</a>'
  37. + '<a href="javascript:;" class="layui-btn layui-btn-xs layui-btn-danger" data-id="'+d.id+'" data-status="0" data-event="status">取消订阅</a>';
  38. }}
  39. ]],
  40. page: {}
  41. });
  42. $('#searchBtn').on('click', function() {
  43. layui.table.reload('currentTable', { where: {
  44. email: $('#email').val(), lang: $('#lang').val(), source_key: $('#source_key').val(), status: $('#status').val(),
  45. last_send_status: $('#last_send_status').val(),
  46. createtime_start: $('#createtime_start').val(), createtime_end: $('#createtime_end').val()
  47. }, page: {curr: 1} });
  48. });
  49. $('#resetBtn').on('click', function() {
  50. $('#email,#lang,#source_key,#status,#last_send_status,#createtime_start,#createtime_end').val('');
  51. layui.form.render('select'); layui.table.reload('currentTable', { where: {}, page: {curr: 1} });
  52. });
  53. $('#deleteBtn').on('click', function() {
  54. var rows=layui.table.checkStatus('currentTable').data||[]; if(!rows.length){layer.msg('请先勾选订阅记录');return;}
  55. var ids=rows.map(function(i){return i.id;});
  56. layer.confirm('确认删除选中的 '+ids.length+' 条订阅记录吗?相关邮件日志也会一并删除,此操作不可恢复。',{icon:3,title:'警告'},function(index){
  57. $.post('emailsubscribe/del',{ids:ids},function(res){ layer.msg(res.msg || (res.code===1?'删除成功':'删除失败')); if(res.code===1) layui.table.reload('currentTable'); },'json').fail(function(){layer.msg('删除请求失败');});
  58. layer.close(index);
  59. });
  60. });
  61. $('#resendBtn').on('click', function() {
  62. var rows=layui.table.checkStatus('currentTable').data||[]; if(!rows.length){layer.msg('请先勾选订阅记录');return;}
  63. if(rows.length>1){layer.msg('一次只能补发一条订阅记录');return;}
  64. var id=rows[0].id;
  65. layer.confirm('确认补发该订阅邮件吗?',{icon:3,title:'提示'},function(index){
  66. $.post('emailsubscribe/resend',{id:id},function(res){ layer.msg(res.msg || (res.code===1?'补发成功':'补发失败')); if(res.code===1) layui.table.reload('currentTable'); },'json').fail(function(){layer.msg('补发请求失败');});
  67. layer.close(index);
  68. });
  69. });
  70. $(document).on('click', '[data-event="resend"]', function() {
  71. var id=$(this).data('id');
  72. layer.confirm('确认补发该订阅邮件吗?',{icon:3,title:'提示'},function(index){
  73. $.post('emailsubscribe/resend',{id:id},function(res){ layer.msg(res.msg || (res.code===1?'补发成功':'补发失败')); if(res.code===1) layui.table.reload('currentTable'); },'json').fail(function(){layer.msg('补发请求失败');});
  74. layer.close(index);
  75. });
  76. });
  77. $(document).on('click', '[data-event="status"]', function() {
  78. var id=$(this).data('id'); var status=$(this).data('status');
  79. $.post('emailsubscribe/changeStatus',{id:id,status:status},function(res){ layer.msg(res.msg || (res.code===1?'更新成功':'更新失败')); if(res.code===1) layui.table.reload('currentTable'); },'json').fail(function(){layer.msg('状态更新失败');});
  80. });
  81. Table.api.bindevent(); Form.api.bindevent($('form.layui-form'));
  82. },
  83. log: function() {
  84. Table.init = { table_elem: '#currentTable', table_render_id: 'currentTable' };
  85. Table.render({
  86. init: Table.init,
  87. toolbar: ['refresh'],
  88. url: 'emailsubscribe/log',
  89. cols: [[
  90. {type:'checkbox', width:50},
  91. {field:'id', width:80, title:'ID', sort:true},
  92. {field:'subscribe_id', width:100, title:'订阅ID'},
  93. {field:'email', minWidth:220, title:'邮箱'},
  94. {field:'mail_type', width:160, title:'邮件类型', templet:function(d){ return formatMailType(d.mail_type); }},
  95. {field:'subject', minWidth:220, title:'邮件主题'},
  96. {field:'content', minWidth:320, title:'邮件内容'},
  97. {field:'status', width:100, title:'状态', templet:function(d){ var map={0:'待发送',1:'成功',2:'失败'}; return map[d.status] || d.status; }},
  98. {field:'response_code', width:130, title:'返回码'},
  99. {field:'response_msg', minWidth:220, title:'返回信息'},
  100. {field:'send_time', width:170, title:'发送时间', templet:function(d){ return d.send_time ? Table.formatter.datetime.call(this, d.send_time) : '-'; }}
  101. ]],
  102. page: {}
  103. });
  104. $('#searchBtn').on('click', function() {
  105. layui.table.reload('currentTable', { where: {
  106. email: $('#email').val(), subscribe_id: $('#subscribe_id').val(), mail_type: $('#mail_type').val(), status: $('#status').val(),
  107. send_time_start: $('#send_time_start').val(), send_time_end: $('#send_time_end').val()
  108. }, page: {curr: 1} });
  109. });
  110. $('#resetBtn').on('click', function() {
  111. $('#email,#subscribe_id,#mail_type,#status,#send_time_start,#send_time_end').val('');
  112. layui.form.render('select'); layui.table.reload('currentTable', { where: {}, page: {curr: 1} });
  113. });
  114. $('#deleteLogBtn').on('click', function() {
  115. var rows=layui.table.checkStatus('currentTable').data||[]; if(!rows.length){layer.msg('请先勾选邮件日志');return;}
  116. var ids=rows.map(function(i){return i.id;});
  117. layer.confirm('确认删除选中的 '+ids.length+' 条邮件日志吗?此操作不可恢复。',{icon:3,title:'警告'},function(index){
  118. $.post('emailsubscribe/delLog',{ids:ids},function(res){ layer.msg(res.msg || (res.code===1?'删除成功':'删除失败')); if(res.code===1) layui.table.reload('currentTable'); },'json').fail(function(){layer.msg('删除请求失败');});
  119. layer.close(index);
  120. });
  121. });
  122. Table.api.bindevent(); Form.api.bindevent($('form.layui-form'));
  123. }
  124. };
  125. return Controller;
  126. });