define(['jquery', 'table', 'form'], function($, Table, Form) { function formatNotifyType(val) { var map = { 'appointment_submit': '提交自动通知', 'appointment_batch': '后台统一通知', 'appointment_resend': '后台补发' }; 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: 'appointment/index', cols: [[ {type:'checkbox', width:50}, {field:'id', width:80, title:'ID', sort:true}, {field:'activity_title', minWidth:220, title:'预约活动'}, {field:'lang', width:90, title:'语言'}, {field:'notify_channel', width:110, title:'通知渠道', templet:function(d){ return d.notify_channel === 'email' ? '邮件' : '短信'; }}, {field:'mobile', width:150, title:'手机号'}, {field:'email', minWidth:180, title:'邮箱'}, {field:'name', width:120, title:'姓名'}, {field:'status', width:110, title:'预约状态', templet:function(d){ var map={0:'未处理',1:'已预约',2:'已通知',3:'已转化',9:'无效'}; return map[d.status] || d.status; }}, {field:'appointment_auto_sms', width:110, title:'自动通知', templet:function(d){ var on=parseInt(d.appointment_auto_sms,10)===1; return on ? '开启' : '关闭'; }}, {field:'submit_sms_status', width:110, title:'提交通知', templet:function(d){ var val=parseInt(d.submit_sms_status,10); if(val===1)return '成功'; if(val===2)return '失败'; return '未发送'; }}, {field:'submit_sms_time', width:170, title:'提交通知时间', templet:function(d){ return d.submit_sms_time ? Table.formatter.datetime.call(this, d.submit_sms_time) : '-'; }}, {field:'batch_sms_status', width:110, title:'统一通知', templet:function(d){ var val=parseInt(d.batch_sms_status,10); if(val===1)return '成功'; if(val===2)return '失败'; return '未发送'; }}, {field:'batch_sms_time', width:170, title:'统一通知时间', templet:function(d){ return d.batch_sms_time ? Table.formatter.datetime.call(this, d.batch_sms_time) : '-'; }}, {field:'source_page', minWidth:180, title:'来源页面'}, {field:'ip', width:140, title:'IP'}, {field:'createtime', width:170, title:'提交时间', templet: Table.formatter.datetime}, {field:'operate', title:'操作', width:120, fixed:'right', templet:function(d){ var val=parseInt(d.submit_sms_status,10); if(val===0||val===2){ var text=d.notify_channel==='email'?'补发邮件':'补发短信'; return ''+text+''; } return ''; }} ]], page: {} }); $('#searchBtn').on('click', function() { layui.table.reload('currentTable', { where: { activity_id: $('#activity_id').val(), mobile: $('#mobile').val(), email: $('#email').val(), lang: $('#lang').val(), notify_channel: $('#notify_channel').val(), status: $('#status').val(), appointment_auto_sms: $('#appointment_auto_sms').val(), submit_sms_status: $('#submit_sms_status').val(), batch_sms_status: $('#batch_sms_status').val(), createtime_start: $('#createtime_start').val(), createtime_end: $('#createtime_end').val() }, page: {curr: 1} }); }); $('#resetBtn').on('click', function() { $('#activity_id,#mobile,#email,#lang,#notify_channel,#status,#appointment_auto_sms,#submit_sms_status,#batch_sms_status,#createtime_start,#createtime_end').val(''); layui.form.render('select'); layui.table.reload('currentTable', { where: {}, page: {curr: 1} }); }); $('#sendSmsBtn').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('appointment/sendSms',{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); }); }); $('#sendEmailBtn').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('appointment/sendEmail',{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); }); }); $('#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('appointment/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); }); }); $(document).on('click', '[data-event="resend"]', function() { var id=$(this).data('id'); var text=$(this).text(); layer.confirm('确认'+text+'吗?',{icon:3,title:'提示'},function(index){ $.post('appointment/resendSms',{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); }); }); Table.api.bindevent(); Form.api.bindevent($('form.layui-form')); }, smslog: function() { Table.init = { table_elem: '#currentTable', table_render_id: 'currentTable' }; Table.render({ init: Table.init, toolbar: ['refresh'], url: 'appointment/smslog', cols: [[ {type:'checkbox', width:50}, {field:'id', width:80, title:'ID', sort:true}, {field:'record_id', width:100, title:'预约ID'}, {field:'activity_id', width:100, title:'活动ID'}, {field:'mobile', width:150, title:'手机号'}, {field:'sms_type', width:160, title:'短信类型', templet:function(d){ return formatNotifyType(d.sms_type); }}, {field:'template_code', width:160, title:'模板编号'}, {field:'content', minWidth:260, 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: Table.formatter.datetime} ]], page: {} }); $('#searchBtn').on('click', function() { layui.table.reload('currentTable', { where: { mobile: $('#mobile').val(), record_id: $('#record_id').val(), activity_id: $('#activity_id').val(), sms_type: $('#sms_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() { $('#mobile,#record_id,#activity_id,#sms_type,#status,#send_time_start,#send_time_end').val(''); layui.form.render('select'); layui.table.reload('currentTable', { where: {}, page: {curr: 1} }); }); $('#deleteSmslogBtn').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('appointment/delSmslog',{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')); }, emaillog: function() { Table.init = { table_elem: '#currentTable', table_render_id: 'currentTable' }; Table.render({ init: Table.init, toolbar: ['refresh'], url: 'appointment/emaillog', cols: [[ {type:'checkbox', width:50}, {field:'id', width:80, title:'ID', sort:true}, {field:'record_id', width:100, title:'预约ID'}, {field:'activity_id', width:100, title:'活动ID'}, {field:'email', minWidth:220, title:'邮箱'}, {field:'mail_type', width:180, title:'邮件类型', templet:function(d){ return formatNotifyType(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: Table.formatter.datetime} ]], page: {} }); $('#searchBtn').on('click', function() { layui.table.reload('currentTable', { where: { email: $('#email').val(), record_id: $('#record_id').val(), activity_id: $('#activity_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,#record_id,#activity_id,#mail_type,#status,#send_time_start,#send_time_end').val(''); layui.form.render('select'); layui.table.reload('currentTable', { where: {}, page: {curr: 1} }); }); $('#deleteEmaillogBtn').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('appointment/delEmaillog',{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; });