define(['jquery', 'table', 'form'], function($, Table, Form) {
Yzn.config.openArea = ['90%', '90%'];
function formatMailType(val) {
var map = {
'subscribe_auto': '自动欢迎邮件',
'subscribe_manual': '后台补发邮件',
'marketing_broadcast': '营销群发'
};
return map[val] || val || '-';
}
var Controller = {
index: function() {
Table.init = { table_elem: '#currentTable', table_render_id: 'currentTable' };
Table.render({
init: Table.init,
toolbar: ['refresh'],
url: 'emailsubscribe/index',
cols: [[
{type:'checkbox', width:50},
{field:'id', width:80, title:'ID', sort:true},
{field:'email', minWidth:220, title:'邮箱'},
{field:'lang', width:100, title:'语言'},
{field:'source_key', width:120, title:'来源标识'},
{field:'status', width:110, title:'订阅状态', templet:function(d){ var map={0:'已取消',1:'已订阅',9:'用户退订'}; return map[d.status] || d.status; }},
{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; }},
{field:'last_send_time', width:170, title:'最近发送时间', templet:function(d){ return d.last_send_time ? Table.formatter.datetime.call(this, d.last_send_time) : '-'; }},
{field:'source_page', minWidth:220, title:'来源页面'},
{field:'privacy_agree_text', width:100, title:'隐私同意'},
{field:'privacy_agree_time', width:170, title:'同意时间', templet:function(d){ return d.privacy_agree_time ? Table.formatter.datetime.call(this, d.privacy_agree_time) : '-'; }},
{field:'privacy_agree_ip', width:140, title:'同意IP'},
{field:'ip', width:140, title:'提交IP'},
{field:'createtime', width:170, title:'创建时间', templet: Table.formatter.datetime},
{field:'operate', title:'操作', width:220, fixed:'right', templet:function(d){
return ''
+ '补发邮件'
+ '设为订阅'
+ '取消订阅';
}}
]],
page: {}
});
$('#searchBtn').on('click', function() {
layui.table.reload('currentTable', { where: {
email: $('#email').val(), lang: $('#lang').val(), source_key: $('#source_key').val(), status: $('#status').val(),
last_send_status: $('#last_send_status').val(),
createtime_start: $('#createtime_start').val(), createtime_end: $('#createtime_end').val()
}, page: {curr: 1} });
});
$('#resetBtn').on('click', function() {
$('#email,#lang,#source_key,#status,#last_send_status,#createtime_start,#createtime_end').val('');
layui.form.render('select'); layui.table.reload('currentTable', { where: {}, page: {curr: 1} });
});
$('#deleteBtn').on('click', function() {
var rows=layui.table.checkStatus('currentTable').data||[]; if(!rows.length){layer.msg('请先勾选订阅记录');return;}
var ids=rows.map(function(i){return i.id;});
layer.confirm('确认删除选中的 '+ids.length+' 条订阅记录吗?相关邮件日志也会一并删除,此操作不可恢复。',{icon:3,title:'警告'},function(index){
$.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('删除请求失败');});
layer.close(index);
});
});
$('#resendBtn').on('click', function() {
var rows=layui.table.checkStatus('currentTable').data||[]; if(!rows.length){layer.msg('请先勾选订阅记录');return;}
if(rows.length>1){layer.msg('一次只能补发一条订阅记录');return;}
var id=rows[0].id;
layer.confirm('确认补发该订阅邮件吗?',{icon:3,title:'提示'},function(index){
$.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('补发请求失败');});
layer.close(index);
});
});
$(document).on('click', '[data-event="resend"]', function() {
var id=$(this).data('id');
layer.confirm('确认补发该订阅邮件吗?',{icon:3,title:'提示'},function(index){
$.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('补发请求失败');});
layer.close(index);
});
});
$(document).on('click', '[data-event="status"]', function() {
var id=$(this).data('id'); var status=$(this).data('status');
$.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('状态更新失败');});
});
Table.api.bindevent(); Form.api.bindevent($('form.layui-form'));
},
log: function() {
Table.init = { table_elem: '#currentTable', table_render_id: 'currentTable' };
Table.render({
init: Table.init,
toolbar: ['refresh'],
url: 'emailsubscribe/log',
cols: [[
{type:'checkbox', width:50},
{field:'id', width:80, title:'ID', sort:true},
{field:'subscribe_id', width:100, title:'订阅ID'},
{field:'email', minWidth:220, title:'邮箱'},
{field:'mail_type', width:160, title:'邮件类型', templet:function(d){ return formatMailType(d.mail_type); }},
{field:'subject', minWidth:220, title:'邮件主题'},
{field:'content', minWidth:320, title:'邮件内容'},
{field:'status', width:100, title:'状态', templet:function(d){ var map={0:'待发送',1:'成功',2:'失败'}; return map[d.status] || d.status; }},
{field:'response_code', width:130, title:'返回码'},
{field:'response_msg', minWidth:220, title:'返回信息'},
{field:'send_time', width:170, title:'发送时间', templet:function(d){ return d.send_time ? Table.formatter.datetime.call(this, d.send_time) : '-'; }}
]],
page: {}
});
$('#searchBtn').on('click', function() {
layui.table.reload('currentTable', { where: {
email: $('#email').val(), subscribe_id: $('#subscribe_id').val(), mail_type: $('#mail_type').val(), status: $('#status').val(),
send_time_start: $('#send_time_start').val(), send_time_end: $('#send_time_end').val()
}, page: {curr: 1} });
});
$('#resetBtn').on('click', function() {
$('#email,#subscribe_id,#mail_type,#status,#send_time_start,#send_time_end').val('');
layui.form.render('select'); layui.table.reload('currentTable', { where: {}, page: {curr: 1} });
});
$('#deleteLogBtn').on('click', function() {
var rows=layui.table.checkStatus('currentTable').data||[]; if(!rows.length){layer.msg('请先勾选邮件日志');return;}
var ids=rows.map(function(i){return i.id;});
layer.confirm('确认删除选中的 '+ids.length+' 条邮件日志吗?此操作不可恢复。',{icon:3,title:'警告'},function(index){
$.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('删除请求失败');});
layer.close(index);
});
});
Table.api.bindevent(); Form.api.bindevent($('form.layui-form'));
}
};
return Controller;
});