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; });