define(['jquery', 'bootstrap', 'backend', 'table', 'form'], function ($, undefined, Backend, Table, Form) { var issent = 0; var Controller = { index: function () { // 初始化表格参数配置 Table.api.init({ extend: { index_url: 'templatemessage/index', add_url: 'templatemessage/add', edit_url: 'templatemessage/edit', del_url: 'templatemessage/del', multi_url: 'templatemessage/multi', table: 'templatemessage', } }); var table = $("#table"); // 初始化表格 table.bootstrapTable({ url: $.fn.bootstrapTable.defaults.extend.index_url, pk: 'id', sortName: 'id', search: false, commonSearch: false, columns: [ [ {checkbox: true}, {field: 'id', title: __('Id')}, {field: 'title', title: __('Title')}, {field: 'tpname', title: __('Tpname')}, //{field: 'template_id', title: __('模板ID')}, {field: 'sendtime', title: __('Sendtime'), operate:'RANGE', addclass:'datetimerange', formatter: Table.api.formatter.datetime}, {field: 'send_num', title: __('发送人数'), operate:false}, //{field: 'pv', title: 'PV', operate:false}, {field: 'uv', title: 'UV(总/今日)', operate:false,formatter:function(value,row,index){ return (value === null ? 0 : value) + "(" + row.day_uv + ")"; }}, // {field: 'recharge_orders', title: '充值成功订单数', operate:false}, {field: 'recharge_money', title: '充值金额(总/今日)', operate:false,formatter:function(value,row,index){ return (value === null ? 0 : value) + "(" + row.day_money + ")"; }}, /* {field: 'success_num', title: '接收人数', operate:false}, {field: 'uv', title: '阅读人数(今日阅读)', operate:false}, {field: 'recharge_money', title: '充值金额(今日充值)', operate:false}, {field: 'avg', title: '单个uv价值', operate:false},*/ {field: 'statue', title: __('Statue'),visible:false,operate:false}, {field: 'statue_text', title: __('Statue'), operate:false}, {field: 'operate', title: __('Operate'), table: table, events: Table.api.events.operate, formatter: Table.api.formatter.operate} ] ] }); // 为表格绑定事件 Table.api.bindevent(table); }, add: function () { Controller.api.bindevent(); $('.s_time_box span:eq(1)').click(); }, edit: function () { // if(Config.bnotin.length>0){ // $.each(Config.bnotin,function (index,value) { // if($('#f_url').val().indexOf(value)!=-1){ // $('#f_url').val(''); // } // }); // } Controller.api.bindevent(); }, api: { getStatue: function (value, row, index) { if(value == 'normal'){ if (row.sendtime < Date.parse(new Date())/1000){ return '发送失败'; }else{ return '未发送'; } }else{ return '已发送'; } },formatter: { total_benefit_channel:function(value,row,index) { if(row.sendtime - Config.nowtime < 600) { return ' ' + ''; }else{ return '' + ''; } } }, bindevent: function () { /** * form表单验证 */ $("form[role=form]").data("validator-options", { ignore: ':hidden', beforeSubmit: function (form) { var user_json = $.parseJSON($('.img_txt_hidde_input_no').val()) if (user_json.all==0 && !user_json.subscribe_time) { var sub_from = (new Moment($('input[name="row[sub_from]"]').val())).valueOf() / 1000 var sub_to = (new Moment($('input[name="row[sub_to]"]').val())).valueOf() / 1000 if(!sub_from && !sub_to){ Toastr.error("起止时间不能为空"); return false; }else{ user_json.subscribe_range = sub_from +'-'+ sub_to; } } $('.img_txt_hidde_input_no').val(JSON.stringify(user_json)); if(issent != 1){ Toastr.error("请先成功测试粉丝后再保存模板消息"); return false; } var sdatatime=$('#c-sendtime').val()+''; sdatatime = sdatatime.replace(/-/g,'/'); sdatatime =new Date(sdatatime).getTime(); if(sdatatime <= new Date().getTime()){ Toastr.error("发送时间必须大于当前时间"); return false; } } }); Form.api.bindevent($("form[role=form]"), function (data) { Fast.api.close(data); }, function (data) { console.log('error', data); } ); $(document).on('click','.s_tag_li_list span',function(){ if(canedit){ return false; } var $this = $(this); $this.addClass('s_s_tag').siblings('span').removeClass('s_s_tag'); var tagObj ={ sex:$('#sex span.s_s_tag').data('sex'), mobile_system:$('#mobile_system span.s_s_tag').data('mobile_system'), tag:$('#ctag span.s_s_tag').data('cid'), consume:$('#consume span.s_s_tag').data('fee'), kandian: $('#kandian span.s_s_tag').data('kandian'), subscribe_time:$('#subscribe_time1 span.s_s_tag').data('fee'), all:"0" } if ($(this).parent().attr('id') == 'subscribe_time1') { if ($(this).data('fee')) { $('#cdstarttime').val(''); $('#cdendtime').val(''); $('#subscribe_time2').hide(); } else { $('#subscribe_time2').show(); } } var uconditon = JSON.stringify(tagObj); $('#usercondition').val(uconditon); }); var ofansopen=true; //tag切换 $(document).on('click','.s_tag_fans_num',function(){ var $this = $(this); //防止重复点击 if(!ofansopen){ return false; } ofansopen = false; $('.s_tag_footer').addClass('s_tag_fans_show'); var tagObj ={ sex:$('#sex span.s_s_tag').data('sex'), mobile_system:$('#mobile_system span.s_s_tag').data('mobile_system'), tag:$('#ctag span.s_s_tag').data('cid'), consume:$('#consume span.s_s_tag').data('fee'), kandian: $('#kandian span.s_s_tag').data('kandian'), subscribe_time:$('#subscribe_time1 span.s_s_tag').data('fee'), all:"0" } var uconditon = JSON.stringify(tagObj); $('#usercondition').val(uconditon); // console.log(tagObj); $.ajax({ type:'post', data:tagObj, //dataType:'json', url:'/admin/custom/ajaxcustom', success:function(data){ //console.log(data); $('#mustbe').html('约'+data.ids+'人'); ofansopen = true; $('.s_tag_footer').removeClass('s_tag_fans_show'); }, error:function(err){ ofansopen = true; $('.s_tag_footer').removeClass('s_tag_fans_show'); } }); }); //获取模板json var ontmwjson = ''; function fajaxtmp(str){ if(!str){ str = ''; } var num = 0; var nowmsg = false; $.ajax({ type:'get', //dataType:'json', url:'/admin/templatemessage/ajaxtmp' + str, success:function(data){ //console.log(data); if(typeof data == 'string'){ data = JSON.parse(data); } if(data.error == -1){ $('.ntmw_head_select ul').html(""); $('.ntmw_head_select strong').html(""); layer.msg(data.msg); return false; } ontmwjson = data.data; //$('#select_ntmw').val(JSON.stringify(data.data)); //模板列表 if($('#select_msg_id').val().length>0){ var sMsgId =$.trim($('#select_ntmw_id').val()); for(var k=0; k'; } $('.ntmw_head_select ul').html($li); $('.ntmw_head_select ul li:eq('+ num +')').addClass('hover'); //插入html数据 selectTemplate(num,nowmsg); if(str == '?w=1'){ Toastr.success('刷新模板列表成功'); } }, error:function(err){ } }); } fajaxtmp(); //刷新模板列表 $('.ntmw_but').click(function(){ fajaxtmp('?w=1'); }); //选择模板 function selectTemplate(num,bul){ var oContent = ontmwjson[num]['content']; var sLi=''; $('.ntmw_head_select strong,.ntmw_main_box h3').text(ontmwjson[num].title+' -- '+ontmwjson[num].template_id); $('#select_ntmw_id').val(ontmwjson[num].id); $('#select_template_id').val(ontmwjson[num].template_id); $('#select_tpname').val(ontmwjson[num].title); $('#select_ntmw').val(JSON.stringify(oContent)); //console.log(ontmwjson[num].id); //console.log(oContent); for(var i=0; i'+ oContent[i][j].fieldname +''; }else{ sLi += ''+ oContent[i][j].fieldname +''; } } sLi += ''; } $('.ntmw_main_box ul').html(sLi); } //初始化 标签 $.ajax({ type:'get', url:'/admin/custom/ajaxcategory', cache:false, async:false, success:function(res){ data = res.data; var htmlstr = ''; for(var i=0;i'+data[i].name+''; } $('#ctag').append(htmlstr); $('#mustbe').html('约'+res.ids+'人'); if ($('#usercondition').val().length > 0){ $tagval = JSON.parse($('#usercondition').val()); $("#sex span[data-sex='"+$tagval.sex+"']").addClass('s_s_tag').siblings().removeClass('s_s_tag'); $("#mobile_system span[data-mobile_system='"+$tagval.mobile_system+"']").addClass('s_s_tag').siblings().removeClass('s_s_tag'); $("#ctag span[data-cid='"+$tagval.tag+"']").addClass('s_s_tag').siblings().removeClass('s_s_tag'); $("#consume span[data-fee='"+$tagval.consume+"']").addClass('s_s_tag').siblings().removeClass('s_s_tag'); $("#kandian span[data-kandian='"+$tagval.kandian+"']").addClass('s_s_tag').siblings().removeClass('s_s_tag'); // $("#subTime span[data-week='"+$tagval.subscribe_time+"']").addClass('s_s_tag').siblings().removeClass('s_s_tag'); if ($tagval.subscribe_time) { $("#subscribe_time1 span[data-fee='" + $tagval.subscribe_time + "']").addClass('s_s_tag').siblings().removeClass('s_s_tag'); $('#subscribe_time2').hide(); } else { $("#subscribe_time1 span").last().addClass('s_s_tag').siblings().removeClass('s_s_tag'); } }else{ var tagObj1 ={ sex:-1, mobile_system:0, tag:-1, consume:-1, kandian: -1, subscribe_time:-1, all:"0" }; var ucon1 = JSON.stringify(tagObj1); $('#usercondition').val(ucon1); } }, error:function(err){ } }); /** * 资源类型管理 */ $(document).on('click', "input[name='row[type]']", function () { var type = $(this).val(); if (type=='all'){ var tagObj = { all:"1" } }else{ var tagObj ={ sex:-1, mobile_system:0, tag:-1, consume:-1, kandian: -1, subscribe_time:-1, all:"0" } } var ucon = JSON.stringify(tagObj); $('#usercondition').val(ucon); $('.group-tag-type').addClass('hide'); $('.group-tag-type input').attr('disabled'); $('#group-tag-type-' + type).removeClass('hide'); $('#group-tag-type-' + type+' input').removeAttr('disabled'); }); if ($('#usercondition').val().length > 0) { $tagval = JSON.parse($('#usercondition').val()); if ($tagval.all == 1){ //选择所有用户 $('#type-all').attr('checked',true); var type = 'all'; $('.group-tag-type').addClass('hide'); $('.group-tag-type input').attr('disabled'); $('#group-tag-type-' + type).removeClass('hide'); $('#group-tag-type-' + type+' input').removeAttr('disabled'); } } //测试发送 var flag = 0; $('.test_fans_but').click(function(){ if(flag == 1){ return false; } flag = 1; var $imgTxtMain = $('.img_txt_main'); var reg = /^(http[s]?|ftp):\/\/[^\/\.]+?\..+\w/; //标题 if($.trim($('#title').val()).length == 0){ Toastr.error("标题不能为空"); flag = 0; return false; } //微信模板内容 if($.trim($('#select_ntmw').val()).length == 0){ Toastr.error("未填写模板内容"); flag = 0; return false; } //网址 if($.trim($('#f_url').val()).length == 0){ Toastr.error("跳转链接不能为空"); flag = 0; return false; } if($.trim($('#userId').val()) == ''){ Toastr.error("请填写测试粉丝ID"); flag = 0; return false; } if($.trim($('#userId').val()) == ''){ Toastr.error("请填写测试粉丝ID"); flag = 0; return false; } var sentData = { title:$('#title').val(), admin_id:$('#admin_id').val(), user_id:$('#userId').val(), message_html:$('#select_ntmw').val(), url:$('#f_url').val(), template_id:$('#select_template_id').val(), tpid:$('#select_ntmw_id').val() }; console.log(sentData); $.ajax({ type:'post', url:'/admin/templatemessage/sent', data:sentData, dataType:'json', cache:false, async:false, success:function(data){ console.log(data); flag = 0; if(data.errcode == 0){ issent = 1; Toastr.success('已送达'); }else{ Toastr.error('错误码:'+data.errcode+'错误信息:'+data.errmsg); } }, error:function(err){ flag = 0; } }) }); //发送消息时间 $(document).on('click','.s_time_box span',function(){ var $this = $(this); var nval = parseInt($this.attr('stime')); var ntime = Date.parse(new Date()); var nt = ntime + nval; $('#c-sendtime').val(GetRTime(nt)); }); function GetRTime(time){ var stime; time = new Date(time); var year = time.getYear() + 1900; var month = time.getMonth()+1; var day = time.getDate(); var hours = time.getHours(); var minutes = time.getMinutes(); var seconds = time.getSeconds(); stime = year + '-' + (month < 10 ? '0'+month : month) + '-' + (day < 10 ? '0'+day : day) + ' ' + (hours < 10 ? '0'+hours : hours) + ':' + (minutes < 10 ? '0'+minutes : minutes) + ':' + (seconds < 10 ? '0'+seconds : seconds); return stime; } var ontmwspan = ''; //选择模板 $(document).on('click','.ntmw_li_edit',function(){ var oThis=$(this); var oNextSpan = oThis.next('span'); var sColor = oNextSpan.css('color'); ontmwspan = oNextSpan; var shtml= '
\
' + ontmwspan.html() + '
\
字体颜色:
\
占位符用户昵称用户id用户vip到期时间微信公众号名称
\
'; layer.open({ type: 1, title:'', skin: 'layui-layer-rim', //加上边框 btn: ['保存'], content: shtml, yes: function(index, layero){ var $nuldiv = $('
'); var sHtmlReg=/<[^<>]+>/g; var sNtmwEditTextarea =$('.ntmw_edit_textarea').html(); $nuldiv.append(sNtmwEditTextarea); $nuldiv.find('strong[contenteditable="false"]').remove(); sNtmwEditTextarea =$nuldiv.html(); if(sHtmlReg.test(sNtmwEditTextarea)){ Toastr.error("您输入的内容包含特殊字符,请重新输入"); return false; } layer.close(index); var sTextareaColor = $('.ntmw_edit_textarea').css('color'); var sTextareaContent = $.trim($('.ntmw_edit_textarea').html()); oNextSpan.css('color',sTextareaColor).html(sTextareaContent); var $li = $('.ntmw_main_box ul li'); var sVal =JSON.parse($.trim($('#select_ntmw').val())); for(var i=0; i<$li.length; i++){ var aLi = sVal[i]; $lispan = $li.eq(i).find('span'); for(var j=0; j<$lispan.length; j++){ var $prev = $lispan.eq(j).prev(); if($prev.is('i')){ aLi[j].color = colorRGB2Hex($lispan.eq(j).css('color')); } aLi[j].fieldname = $lispan.eq(j).html(); } } $('#select_ntmw').val(JSON.stringify(sVal)); } }); //默认字体颜色 var $span = $('.ntmw_edit_color_box span'); for(var i=0; i<$span.length; i++){ var sNowSpanColor = $span.eq(i).css('backgroundColor'); if(sColor == sNowSpanColor){ $span.eq(i).addClass('active').siblings('span').removeClass('active'); break; } if(sColor == $span.eq(0).css('backgroundColor')){ $span.eq(0).addClass('active').siblings('span').removeClass('active'); break; } } $('.ntmw_edit_textarea').css('color',sColor); $('.ntmw_edit_textarea').append('\r'); $('.ntmw_edit_textarea').focus(); keepLastIndex($('.ntmw_edit_textarea').get(0)); }); //rgb转换未16进制 function colorRGB2Hex(color) { if(!/#/.test(color)){ var rgb = color.split(','); var r = parseInt(rgb[0].split('(')[1]); var g = parseInt(rgb[1]); var b = parseInt(rgb[2].split(')')[0]); var hex = "#" + ((1 << 24) + (r << 16) + (g << 8) + b).toString(16).slice(1); return hex; } return color; } //修改字体颜色 $(document).on('click','.ntmw_edit_color_box span',function(){ var $this = $(this); var sColor = $this.css('backgroundColor'); $this.addClass('active').siblings('span').removeClass('active'); $('.ntmw_edit_textarea').css('color',sColor); }); //添加占位符 var lastEditRange; $(document).on('click','.ntmw_edit_word_box strong',function(){ var $this = $(this); var sHtml = $this.prop("outerHTML"); var sTATxt = $.trim($('.ntmw_edit_textarea').html()) + ' ' + sHtml + ' \r'; var txtFocus = $('.ntmw_edit_textarea').get(0); var sTATxtLen = sTATxt.length - 1; $('.ntmw_edit_textarea').html(sTATxt); $this.blur(); keepLastIndex(txtFocus); }); //将光标放到最后面 function keepLastIndex(obj) { if(window.getSelection) {//ie11 10 9 ff safari obj.focus(); //解决ff不获取焦点无法定位问题 var range = window.getSelection();//创建range range.selectAllChildren(obj);//range 选择obj下所有子内容 range.collapseToEnd();//光标移至最后 }else if(document.selection) {//ie10 9 8 7 6 5 var range = document.selection.createRange();//创建选择对象 //var range = document.body.createTextRange(); range.moveToElementText(obj);//range定位到obj range.collapse(false);//光标移至最后 range.select(); } } //选择模板下拉切换 $(document).on('click','.ntmw_head_select li',function(){ var $this=$(this); var sTxt = $this.text(); var nIndex = $this.index(); $this.addClass('hover').siblings('li').removeClass('hover'); $('.ntmw_head_select strong').data('value',nIndex); $('.ntmw_head_select strong').text(sTxt); selectTemplate(nIndex); }); $(document).on('click','.ntmw_edit_word_box i',function(){ layer.open({ type: 1, title:'', skin: 'layui-layer-rim', //加上边框 btn: ['知道了'], content: '
\
模板:亲爱的用户昵称, 您的年费到期时间为用户vip到期时间
\
效果:亲爱的宁静致远,您的年费到期时间为2018-12-29 17:28
\
', yes: function(index, layero){ layer.close(index); } }); }) //修改url $(document).on('click','.img_txt_edit_url',function(){ var $this=$(this); Fast.api.open('referral/referral/select?one=1', '选择', { callback: function (data) { var data = data[0]; // console.log('展示title回调', data); $this.parent().siblings('input').val(data.source_url); } }); }); //修改book $(document).on('click','.img_txt_edit_book',function(){ var $this=$(this); Fast.api.open('book.book/select?one=1', '选择', { callback: function (data) { var data = data[0]; $this.parent().siblings('input').val(data.current_book_url); } }); }); } } }; return Controller; });