message.js 59 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333
  1. define(['jquery', 'bootstrap', 'backend', 'table', 'form'], function ($, undefined, Backend, Table, Form) {
  2. var Controller = {
  3. index: function () {
  4. // 初始化表格参数配置
  5. Table.api.init({
  6. extend: {
  7. index_url: 'send/message/message/index',
  8. add_url: 'send/message/message/add',
  9. edit_url: 'send/message/message/edit',
  10. del_url: 'send/message/message/del',
  11. multi_url: 'send/message/message/multi',
  12. add_with_material_url: 'send/message/message/add_with_material'+Config.ids,
  13. table: 'send_message',
  14. }
  15. });
  16. var table = $("#table");
  17. // 初始化表格
  18. table.bootstrapTable({
  19. url: $.fn.bootstrapTable.defaults.extend.index_url,
  20. pk: 'id',
  21. sortName: 'id',
  22. columns: [
  23. [
  24. {checkbox: true},
  25. {field: 'id', title: __('Id'),operate:false},
  26. {field: 'message_name', title: __('消息名称'),operate:'LIKE'},
  27. {field: 'message_type', title: __('Message_type'), visible:false, searchList: {"1":__('文本类型'),"2":__('图文类型'),"3":__('图片消息')}},
  28. {field: 'message_type_text', title: __('Message_type'), operate:false},
  29. {field: 'subscription_type', title: __('Subscription_type'), visible:false, searchList: {"1":__('全部公众号'),"2":__('指定公众号')}},
  30. {field: 'subscription_type_text', title: __('Subscription_type'), operate:false},
  31. {field: 'send_time', title: __('Send_time'), operate:false, addclass:'datetimerange', formatter: Table.api.formatter.datetime},
  32. {
  33. field: 'send_status',
  34. title: __('Send_status'),
  35. visible:false,
  36. searchList: {
  37. "1":__('等待素材处理'),
  38. "2":__('素材处理中'),
  39. "3":__('素材处理完成待发送'),
  40. "4":__('发送中'),
  41. "5":__('发送完成'),
  42. "6":__('发送失败(消息内容过期)'),
  43. "7":__('已删除微信历史消息'),
  44. "8":__('发送失败(接收人数小于2)')
  45. }
  46. },
  47. {field: 'send_status_text', title: __('Send_status'), operate:false},
  48. {field: 'message_status', title: __('Message_status'), visible:false, searchList: {"1":__('有效'),"2":__('失效'),"3":__('已删除')}},
  49. {field: 'message_status_text', title: __('Message_status'), operate:false},
  50. {
  51. field: 'operate',
  52. title: __('Operate'),
  53. table: table,
  54. events: Table.api.events.operate,
  55. buttons: [
  56. {
  57. name: 'detail',
  58. text: __('消息预览'),
  59. title: __('消息预览'),
  60. classname: 'btn btn-xs btn-primary btn-dialog',
  61. icon: '',
  62. url: '/admin/send/message/message/message_preview',
  63. callback: function (data) {
  64. },
  65. visible: function (row) {
  66. if(row.message_status == 3){
  67. return false;
  68. }
  69. //返回true时按钮显示,返回false隐藏
  70. return true;
  71. }
  72. },
  73. {
  74. name: 'list',
  75. text: __('查看公众号列表'),
  76. title: __('查看公众号列表'),
  77. classname: 'btn btn-xs btn-primary btn-dialog',
  78. icon: '',
  79. url: '/admin/send/message/subscriptionlist/subscriptions_list?in_ids={row.subscription_ids}',
  80. callback: function (data) {
  81. Layer.alert("接收到回传数据:" + JSON.stringify(data), {title: "回传数据"});
  82. },
  83. visible: function (row) {
  84. if(row.message_status == 3){
  85. return false;
  86. }
  87. if(row.subscription_type == 2){
  88. return true;
  89. }
  90. //返回true时按钮显示,返回false隐藏
  91. return false;
  92. }
  93. },
  94. {
  95. name: '失效',
  96. text: '失效',
  97. title: '失效',
  98. classname: 'btn btn-xs btn-danger btn-ajax',
  99. url: '/admin/send/message/message/do_status/message_status/2',
  100. confirm: '确定要把选中项改为失效吗?',
  101. success: function (data, ret) {
  102. table.bootstrapTable('refresh');
  103. //如果需要阻止成功提示,则必须使用return false;
  104. //return false;
  105. },
  106. error: function (data, ret) {
  107. Layer.alert(ret.msg);
  108. return false;
  109. },
  110. visible: function (row) {
  111. if(row.message_status>1){
  112. return false;
  113. }
  114. if(row.send_status != 1 && row.send_status !=2 && row.message_status!=3 && row.send_status!=2){
  115. return false;
  116. }
  117. //返回true时按钮显示,返回false隐藏
  118. return true;
  119. }
  120. },
  121. {
  122. name: 'ajax',
  123. text: __('删除微信历史消息'),
  124. title: __('删除微信历史消息'),
  125. classname: 'btn btn-xs btn-danger btn-magic btn-ajax',
  126. icon: '',
  127. url: '/admin/send/message/message/del_wx_previous_news/send_status/7',
  128. confirm: '确认删除微信历史消息吗?',
  129. success: function (data, ret) {
  130. table.bootstrapTable('refresh');
  131. //如果需要阻止成功提示,则必须使用return false;
  132. //return false;
  133. },
  134. error: function (data, ret) {
  135. Layer.alert(ret.msg);
  136. return false;
  137. },
  138. visible: function (row) {
  139. if(row.message_status==3){
  140. return false;
  141. }
  142. if(row.send_status == 5 && row.group_type==0 && row.message_type==2){
  143. return true;
  144. }
  145. //返回true时按钮显示,返回false隐藏
  146. return false;
  147. }
  148. },
  149. {
  150. name: '已删除微信历史消息',
  151. text: __('已删除微信历史消息'),
  152. title: __('已删除微信历史消息'),
  153. classname: 'btn btn-xs btn-danger btn-magic',
  154. icon: '',
  155. visible: function (row) {
  156. if(row.message_status==3){
  157. return false;
  158. }
  159. if(row.send_status == 7){
  160. return true;
  161. }
  162. //返回true时按钮显示,返回false隐藏
  163. return false;
  164. },
  165. disable: true
  166. },
  167. {
  168. name: '修改',
  169. text: '修改',
  170. title: '修改',
  171. classname: 'btn btn-xs btn-success btn-ajax',
  172. url: '/admin/send/message/message/verifyedit',
  173. success: function (data) {
  174. Fast.api.open('/admin/send/message/message/edit/ids/'+data,'修改');
  175. return false;
  176. },
  177. error: function (data, ret) {
  178. Layer.msg(ret.msg);
  179. return false;
  180. },
  181. visible: function (row) {
  182. if(row.message_status==3){
  183. return false;
  184. }
  185. if(row.message_status==2){
  186. return true;
  187. }
  188. if(row.send_status == 1){
  189. return true;
  190. }
  191. return false;
  192. }
  193. },
  194. ],
  195. formatter: Table.api.formatter.buttons
  196. }
  197. ]
  198. ]
  199. });
  200. // 为表格绑定事件
  201. Table.api.bindevent(table);
  202. //生效
  203. $('.btn-effective').on('click',function () {
  204. var ids = Table.api.selectedids(table);
  205. Layer.confirm(
  206. '确定要把选中的'+ids.length+'项改为生效吗?',
  207. {icon: 3, title: __('Warning'), offset: 0, shadeClose: true},
  208. function () {
  209. $.ajax({
  210. url:'send/message/message/do_status',
  211. type:"post",
  212. data: {
  213. ids:ids,
  214. message_status:1
  215. },
  216. success:function(data){
  217. if(data.code == 0){
  218. Layer.msg(data.msg);
  219. return false;
  220. }else{
  221. layer.msg('操作成功');
  222. table.bootstrapTable('refresh');
  223. }
  224. }
  225. });
  226. }
  227. );
  228. });
  229. //失效
  230. $('.btn-invalid').on('click',function () {
  231. var ids = Table.api.selectedids(table);
  232. Layer.confirm(
  233. '确定要把选中的'+ids.length+'项改为失效吗?',
  234. {icon: 3, title: __('Warning'), offset: 0, shadeClose: true},
  235. function () {
  236. $.ajax({
  237. url:'send/message/message/do_status',
  238. type:"post",
  239. data: {
  240. ids:ids,
  241. message_status:2
  242. },
  243. success:function(data){
  244. if(data.code == 0){
  245. Layer.msg(data.msg);
  246. return false;
  247. }else{
  248. layer.msg('操作成功');
  249. table.bootstrapTable('refresh');
  250. }
  251. }
  252. });
  253. }
  254. );
  255. });
  256. //批量删除
  257. $('.btn-batch-del').on('click',function () {
  258. var ids = Table.api.selectedids(table);
  259. Layer.confirm(
  260. '确定要删除选中的'+ids.length+'项吗?',
  261. {icon: 3, title: __('Warning'), offset: 0, shadeClose: true},
  262. function () {
  263. $.ajax({
  264. url:'send/message/message/do_status',
  265. type:"post",
  266. data: {
  267. ids:ids,
  268. message_status:3
  269. },
  270. success:function(){
  271. layer.msg('操作成功');
  272. table.bootstrapTable('refresh');
  273. }
  274. });
  275. }
  276. );
  277. });
  278. },
  279. add: function () {
  280. //公众号
  281. $('.n-all').on('click',function(){
  282. $('.o-add-subcription-list').addClass('hidden');
  283. $('.o-add-subcription-table').addClass('hidden');
  284. $('#subscription_ids').val('');
  285. // 点击清空指定公众号列表
  286. window.gzhHtmlArr = [];
  287. window.gzhIdArr = [];
  288. $('#subscription_ids').val('');
  289. $('#gzh_table').find('tbody').empty();
  290. });
  291. $('.n-some').on('click',function(){
  292. $('.o-add-subcription-list').removeClass('hidden');
  293. $('.o-add-subcription-table').removeClass('hidden');
  294. });
  295. $('.btn-add-subscription-list').on('click',function () {
  296. Fast.api.open(
  297. '/admin/send/message/subscriptionlist/index?not_in_ids='+$('#subscription_ids').val(),
  298. '添加公众号'
  299. );
  300. });
  301. //用户组
  302. $('.btn-add-user-group').on('click',function () {
  303. Fast.api.open(
  304. '/admin/send/message/usergroup/index?not_in_ids='+$('#user_group_ids').val(),
  305. '添加用户群组'
  306. );
  307. return false;
  308. });
  309. // 公众号删除
  310. $('#gzh_table').on('click' , '.gzh_del_btn' , function(e){
  311. var tmpId = $(e.target).data('id');
  312. var tmpIndex = -1;
  313. $(window.gzhHtmlArr).each(function(index, item){
  314. if(item.admin_id == tmpId){
  315. tmpIndex = index;
  316. }
  317. });
  318. // 修改val
  319. window.gzhIdArr.splice(tmpIndex , 1);
  320. $('#subscription_ids').val(window.gzhIdArr.join(','));
  321. // 修改html
  322. window.gzhHtmlArr.splice(tmpIndex , 1);
  323. $(e.target).parent().parent().remove();
  324. });
  325. // 用户群组删除
  326. $('#yhz_table').on('click' , '.user_group_del_btn', function (e) {
  327. $('#user_group_ids').val("");
  328. $(e.target).parent().parent().remove();
  329. window.PUserGroup ={};
  330. window.PUserGroupId = -1;
  331. });
  332. window.lastMsgTypeValue = '0';
  333. $('#c-message_type').on('click' , '[type=radio]', function(e){
  334. if(window.lastMsgTypeValue == e.target.value)return;
  335. window.msgEditData = undefined;
  336. window.msgIsEditing = false;
  337. window.msgEditIndex = -1;
  338. window.msgData = {type:'' , data:[]};
  339. $(window.document).find('#message_type_add_btn').show();
  340. window.lastMsgTypeValue = e.target.value;
  341. window.imgtext_chapter_id = "";
  342. window.imgtext_activity_id_edit = "";
  343. window.imgtext_book_id = "";
  344. $('.message_type_content_contianer').empty();
  345. $('.toggleContainer').empty();
  346. window.toggleData = undefined;
  347. });
  348. // 添加消息按钮呼出弹窗
  349. $('#message_type_add_btn').on('click' , function(){
  350. if(typeof(window.msgData) !=="undefined" && window.msgData.data.length >= 8){
  351. layer.alert("添加不能超出8条!");
  352. return;
  353. }
  354. var url = '';
  355. var title = '';
  356. var val = 1;
  357. var radios = $('#c-message_type [type=radio]');
  358. radios.each(function(index , ele){
  359. if(ele.checked == true){
  360. val = ele.value;
  361. }
  362. });
  363. switch (val) {
  364. case '1':
  365. url = '/admin/send/message/text/add';
  366. title = '文本消息';
  367. break;
  368. case '2':
  369. url = '/admin/send/message/imgtext/add';
  370. title = '图文消息';
  371. break;
  372. case '3':
  373. url = '/admin/send/message/img/add';
  374. title = '图片消息';
  375. break;
  376. default :
  377. url = '/admin/send/message/text/add';
  378. title = '文本消息';
  379. break;
  380. };
  381. window.msgEditData = undefined;
  382. window.msgIsEditing = false;
  383. window.msgEditIndex = -1;
  384. Fast.api.open(url, title, {
  385. callback: function (data) {
  386. //$this.find('img').attr('src',data.image);
  387. }
  388. });
  389. return false;
  390. });
  391. // 消息删除功能
  392. $('.message_type_content_contianer').on('click' , '.preview_del' , function(e){
  393. var debtn = $(e.target);
  394. var delIndex = debtn.data('index');
  395. window.msgData.data.splice(delIndex , 1);
  396. var newHtml= "";
  397. if(window.msgData.type == "imgtext"){
  398. $(window.msgData.data).each(function(index , item){
  399. if(index == 0){
  400. newHtml+= '<div class="msg_preview h180" data-index="'+index+'">' +
  401. ' <img class="preview_img_imgtext" src="'+item.cover+'" alt="" >' +
  402. '<div class="preview_handler" style="background: rgba(0,0,0,.3);">' +
  403. '<h3 class="preview_imgtext_title" >'+item.title+'</h3>' +
  404. '<a href="javascript:;" class="preview_del" data-index="'+index+'">删除</a>' +
  405. '<a href="javascript:;" class="preview_edit" data-index="'+index+'">编辑</a>' +
  406. '</div>' +
  407. '</div>';
  408. }else{
  409. newHtml+= '<div class="msg_preview h180" data-index="'+index+'">' +
  410. '<img class="msg_preview_img2" src="'+item.cover+'" alt="" style="float: right;">' +
  411. '<h3 class="msg_preview_title2" >'+item.title+'</h3>' +
  412. '<div class="preview_handler" >' +
  413. '<a href="javascript:;" class="preview_del" data-index="'+index+'">删除</a>' +
  414. '<a href="javascript:;" class="preview_edit" data-index="'+index+'">编辑</a>' +
  415. '</div>' +
  416. '</div>';
  417. }
  418. });
  419. }else if(window.msgData.type == 'text'){
  420. $(window.msgData.data).each(function(index , item){
  421. newHtml+= ''+
  422. '<div class="msg_preview_text" data-index="'+index+'">' +
  423. '<div class="preview_handler" >' +
  424. '<p class="msg_preview_title3">'+ item.content +'</p>'+
  425. '<a href="javascript:;" class="preview_del" data-index="'+index+'">删除</a>' +
  426. '<a href="javascript:;" class="preview_edit" data-index="'+index+'">编辑</a>' +
  427. '</div>' +
  428. '</div>';
  429. });
  430. }else if(window.msgData.type == 'img'){
  431. $(window.msgData.data).each(function(index , item){
  432. newHtml+= ''+
  433. '<div class="msg_preview" data-index="'+index+'">' +
  434. '<img class="msg_preview_img3" src="'+item.img_path+'" alt="" >' +
  435. '<div class="preview_handler" >' +
  436. '<a href="javascript:;" class="preview_del" data-index="'+index+'">删除</a>' +
  437. '<a href="javascript:;" class="preview_edit" data-index="'+index+'">编辑</a>' +
  438. '</div>' +
  439. '</div>';
  440. });
  441. };
  442. $('.message_type_content_contianer').html(newHtml);
  443. $("#message_content").val(JSON.stringify(window.msgData.data));
  444. // if(window.msgData.data.length < 8){
  445. // $(window.document).find('#message_type_add_btn').show();
  446. // }
  447. if(window.msgData.type == 'img' && window.msgData.data.length > 0){
  448. $(window.document).find('#message_type_add_btn').hide();
  449. }else{
  450. if(window.msgData.data.length < 8){
  451. $(window.document).find('#message_type_add_btn').show();
  452. }else{
  453. $(window.document).find('#message_type_add_btn').hide();
  454. }
  455. }
  456. });
  457. // 消息编辑功能
  458. $('.message_type_content_contianer').on('click' , '.preview_edit' , function(e){
  459. var url = '';
  460. var title = '';
  461. var val = 1;
  462. var radios = $('#c-message_type [type=radio]');
  463. radios.each(function(index , ele){
  464. if(ele.checked == true){
  465. val = ele.value;
  466. }
  467. });
  468. switch (val) {
  469. case '1':
  470. url = '/admin/send/message/text/add';
  471. title = '文本消息';
  472. break;
  473. case '2':
  474. url = '/admin/send/message/imgtext/add';
  475. title = '图文消息';
  476. break;
  477. case '3':
  478. url = '/admin/send/message/img/add';
  479. title = '图片消息';
  480. break;
  481. default :
  482. url = '/admin/send/message/text/add';
  483. title = '文本消息';
  484. break;
  485. };
  486. var editBtn = $(e.target);
  487. var editIndex =editBtn.data('index');
  488. var editData = window.msgData.data[editIndex];
  489. window.msgEditData = editData;
  490. window.msgIsEditing = true;
  491. window.msgEditIndex = editIndex;
  492. // 呼出 子页
  493. Fast.api.open(url, title, {
  494. callback: function (data) {
  495. // $this.find('img').attr('src',data.image);
  496. }
  497. });
  498. return false;
  499. });
  500. // 添加测试公众号
  501. $('.btn-add-test-subscription-list').on('click',function(){
  502. Fast.api.open(
  503. '/admin/send/message/subscriptionlist/test_user?not_in_ids='+$('#test_channel_id').val(),
  504. '添加测试公众号'
  505. );
  506. });
  507. // 测试用户
  508. $('.btn-test_user').on('click',function(){
  509. if($('.message_type_1').is(':checked')){
  510. var itemsHtml = '';
  511. if(typeof(window.msgData) !=="undefined"){
  512. window.msgData.data.forEach(function (item,number) {
  513. if(item.hasOwnProperty('url')){
  514. itemsHtml += '';
  515. itemsHtml += '<a href="' + item.url + '">';
  516. itemsHtml += item.content;
  517. itemsHtml += "</a>";
  518. }else{
  519. itemsHtml += item.content;
  520. }
  521. });
  522. if(itemsHtml.length>290){
  523. Layer.msg('文本最大字符不得超过290个字符');
  524. return false;
  525. }
  526. }
  527. }
  528. if($('#test_channel_id').length>0){
  529. if($('#test_channel_id').val()==''){
  530. Layer.msg('渠道ID不能为空');
  531. return;
  532. }
  533. }
  534. if($('#c-test_message').length<=0){
  535. Layer.msg('测试用户ID不能为空');
  536. return;
  537. }
  538. if(!$('.message_type_1').is(':checked') && !$('.message_type_2').is(':checked') && !$('.message_type_3').is(':checked')){
  539. Layer.msg('消息类型不能为空');
  540. return;
  541. }
  542. var message_type = 0;
  543. if($('.message_type_1').is(':checked')){
  544. message_type = 1;
  545. }else if($('.message_type_2').is(':checked')){
  546. message_type = 2;
  547. }else if($('.message_type_3').is(':checked')){
  548. message_type = 3;
  549. }
  550. if(typeof(window.msgData) == "undefined"){
  551. Layer.msg('消息内容不能为空');
  552. return;
  553. }
  554. if(window.msgData.data.length==0){
  555. Layer.msg('消息内容不能为空');
  556. return;
  557. }
  558. if($('#test_channel_id').length>0){
  559. var datas = {
  560. message_type:message_type,
  561. user_id:$('#c-test_message').val(),
  562. message_content : window.msgData.data,
  563. channel_id:$('#test_channel_id').val(),
  564. }
  565. }else{
  566. var datas = {
  567. message_type:message_type,
  568. user_id:$('#c-test_message').val(),
  569. message_content : window.msgData.data,
  570. }
  571. }
  572. Layer.confirm(
  573. '确定要给该用户发送测试消息吗?',
  574. {icon: 3, title: __('Warning'), offset: 0, shadeClose: true},
  575. function () {
  576. layer.closeAll('dialog');
  577. $.ajax({
  578. url:'send/message/message/testmessagetouser',
  579. type:"post",
  580. data: datas,
  581. success:function(data){
  582. if(data.code == 1){
  583. layer.msg('发送完成');
  584. return false;
  585. }else{
  586. layer.msg(data.msg);
  587. return false;
  588. }
  589. }
  590. });
  591. }
  592. );
  593. });
  594. // 测试公众号删除
  595. $('#gzh_table1').on('click', '.gzh_del_btn1' , function(e){
  596. $('#test_channel_id').val("");
  597. $(e.target).parent().parent().remove();
  598. });
  599. // 提交
  600. $("#mater_submit").click(function(){
  601. if(typeof(window.msgData) == 'undefined' ||window.msgData.data.length===0){
  602. Layer.msg('消息内容不能为空');
  603. return false;
  604. }
  605. switch (window.lastMsgTypeValue) {
  606. case '1':
  607. window.toggleData.forEach(function(item , index){
  608. if(item.type == 'text')window.msgData = item;
  609. })
  610. break;
  611. case '2':
  612. window.toggleData.forEach(function(item , index){
  613. if(item.type == 'imgtext')window.msgData = item;
  614. })
  615. break;
  616. case '3':
  617. window.toggleData.forEach(function(item , index){
  618. if(item.type == 'img')window.msgData = item;
  619. })
  620. break;
  621. }
  622. if($('.message_type_1').is(':checked')) {
  623. var itemsHtml = '';
  624. if(typeof(window.msgData) !=="undefined") {
  625. window.msgData.data.forEach(function (item, number) {
  626. if (item.hasOwnProperty('url')) {
  627. itemsHtml += '';
  628. itemsHtml += '<a href="' + item.url + '">';
  629. itemsHtml += item.content;
  630. itemsHtml += "</a>";
  631. } else {
  632. itemsHtml += item.content;
  633. }
  634. });
  635. if (itemsHtml.length > 290) {
  636. Layer.msg('文本最大字符不得超过290个字符');
  637. return false;
  638. }
  639. }
  640. }
  641. $("#message_content").val(JSON.stringify(window.msgData.data));
  642. });
  643. Controller.api.bindevent();
  644. },
  645. edit: function (){
  646. //初始化
  647. // 公众号数据
  648. $(function(){
  649. window.gzhIdArr = $("#subscription_ids").val().split(',');
  650. window.gzhHtmlArr = [];
  651. $('input.gzhHtmlArr').each(function(index, item){
  652. window.gzhHtmlArr.push(JSON.parse(item.value));
  653. });
  654. // 消息数据
  655. window.msgData = {type:'' , data:[]};
  656. window.toggleData = [];
  657. var msgTypeValue = $('#c-message_type').find(".msg_hidden_type").val();
  658. var tempArr = $('#c-message_type').find(".msg_hidden_data").val();
  659. window.lastMsgTypeValue = msgTypeValue;
  660. if (msgTypeValue == '2') {
  661. window.msgData.type = "imgtext";
  662. window.toggleData = [
  663. { type: "text", data: [] },
  664. window.msgData,
  665. { type: "img", data: [] },
  666. ];
  667. } else if (msgTypeValue == '3') {
  668. window.msgData.type = "img";
  669. window.toggleData = [
  670. { type: "text", data: [] },
  671. { type: "imgtext", data: [] },
  672. window.msgData,
  673. ]
  674. if( tempArr && (JSON.parse(tempArr)).length != 0 ){
  675. $('.message_type_add_btn_contianer').hide();
  676. }
  677. } else {
  678. window.msgData.type = "text";
  679. window.toggleData = [
  680. window.msgData,
  681. { type: "img", data: [] },
  682. { type: "imgtext", data: [] },
  683. ]
  684. };
  685. window.msgData.data = JSON.parse($('#c-message_type').find(".msg_hidden_data").val());
  686. // 添加按钮显示隐藏
  687. $('#material_content_arr_length').val() < 8 ? $('#message_type_add_btn').show() : $('#message_type_add_btn').hide();
  688. if($('.select1').length>0 && $('.select1').is(':checked')){
  689. $('.subscription_ids').val('');
  690. }
  691. if($('.select2').length>0 && $('.select2').is(':checked')){
  692. $('.o-add-subcription-list').removeClass('hidden');
  693. $('.o-add-subcription-table').removeClass('hidden');
  694. }
  695. });
  696. //公众号
  697. $('.n-all').on('click',function(){
  698. $('.o-add-subcription-list').addClass('hidden');
  699. $('.o-add-subcription-table').addClass('hidden');
  700. $('#subscription_ids').val('');
  701. // 点击清空指定公众号列表
  702. window.gzhHtmlArr = [];
  703. window.gzhIdArr = [];
  704. $('#subscription_ids').val('');
  705. $('#gzh_table').find('tbody').empty();
  706. });
  707. $('.n-some').on('click',function(){
  708. $('.o-add-subcription-list').removeClass('hidden');
  709. $('.o-add-subcription-table').removeClass('hidden');
  710. });
  711. $('.btn-add-subscription-list').on('click',function () {
  712. Fast.api.open(
  713. '/admin/send/message/subscriptionlist/index?not_in_ids='+$('#subscription_ids').val(),
  714. '添加公众号'
  715. );
  716. });
  717. //用户组
  718. $('.btn-add-user-group').on('click',function () {
  719. Fast.api.open(
  720. '/admin/send/message/usergroup/index?not_in_ids='+$('#user_group_ids').val(),
  721. '添加用户群组'
  722. );
  723. return false;
  724. });
  725. // 公众号删除
  726. $('#gzh_table').on('click' , '.gzh_del_btn' , function(e){
  727. var tempId = $(e.target).data('id')+'';
  728. var tempIndex = window.gzhIdArr.indexOf(tempId);
  729. // 修改val
  730. window.gzhIdArr.splice(tempIndex , 1);
  731. $('#subscription_ids').val(window.gzhIdArr.join(','));
  732. // 修改html
  733. $(e.target).parent().parent().remove();
  734. });
  735. // 用户群组删除
  736. $('#yhz_table').on('click' , '.user_group_del_btn', function (e) {
  737. $('#selected_user_group_ids').val("");
  738. $(e.target).parent().parent().remove();
  739. window.PUserGroup ={};
  740. window.PUserGroupId = -1;
  741. });
  742. // 消息类型切换
  743. $('#c-message_type').on('click' , '[type=radio]', function(e){
  744. debugger
  745. if(window.lastMsgTypeValue == e.target.value)return;
  746. $('.message_type_add_btn_contianer').show();
  747. window.msgEditData = undefined;
  748. window.msgIsEditing = false;
  749. window.msgEditIndex = -1;
  750. window.lastMsgTypeValue = e.target.value;
  751. window.imgtext_chapter_id = "";
  752. window.imgtext_activity_id_edit = "";
  753. window.imgtext_book_id = "";
  754. $(".toggleContainer").hide();
  755. $('.message_type_content_contianer').empty();
  756. switch (window.lastMsgTypeValue) {
  757. case "1":
  758. $(".text_container").show();
  759. window.toggleData.forEach(function (item, index) {
  760. if (item.type == 'text') window.msgData = item;
  761. })
  762. break;
  763. case "2":
  764. $(".imgtext_container").show();
  765. window.toggleData.forEach(function (item, index) {
  766. if (item.type == 'imgtext') window.msgData = item;
  767. })
  768. break;
  769. case "3":
  770. $(".img_container").show();
  771. window.toggleData.forEach(function (item, index) {
  772. if (item.type == 'img') window.msgData = item;
  773. })
  774. break;
  775. }
  776. // if(window.msgData.data.length < 8){
  777. // $(window.document).find('#message_type_add_btn').show();
  778. // }
  779. if(window.msgData.type == 'img' && window.msgData.data.length > 0){
  780. $(window.document).find('#message_type_add_btn').hide();
  781. }else{
  782. if(window.msgData.data.length < 8){
  783. $(window.document).find('#message_type_add_btn').show();
  784. }else{
  785. $(window.document).find('#message_type_add_btn').hide();
  786. }
  787. }
  788. });
  789. // 添加消息按钮呼出弹窗
  790. $('#message_type_add_btn').on('click' , function(){
  791. if(typeof(window.msgData) !=="undefined" && window.msgData.data.length >= 8){
  792. layer.alert("添加不能超出8条!");
  793. return;
  794. }
  795. var url = '';
  796. var title = '';
  797. var val = 1;
  798. var radios = $('#c-message_type [type=radio]');
  799. radios.each(function(index , ele){
  800. if(ele.checked == true){
  801. val = ele.value;
  802. }
  803. });
  804. switch (val) {
  805. case '1':
  806. url = '/admin/send/message/text/add';
  807. title = '文本消息';
  808. break;
  809. case '2':
  810. url = '/admin/send/message/imgtext/add';
  811. title = '图文消息';
  812. break;
  813. case '3':
  814. url = '/admin/send/message/img/add';
  815. title = '图片消息';
  816. break;
  817. default :
  818. url = '/admin/send/message/text/add';
  819. title = '文本消息';
  820. break;
  821. }
  822. window.msgEditData = undefined;
  823. window.msgIsEditing = false;
  824. window.msgEditIndex = -1;
  825. Fast.api.open(url, title, {
  826. // callback: function (data) {
  827. // $this.find('img').attr('src',data.image);
  828. // }
  829. });
  830. return false;
  831. });
  832. // 消息删除
  833. $('.message_type_content_contianer').on('click' , '.preview_del' , function(e){
  834. switch (window.lastMsgTypeValue) {
  835. case '1':
  836. window.toggleData.forEach(function(item , index){
  837. if(item.type == 'text')window.msgData = item;
  838. })
  839. break;
  840. case '2':
  841. window.toggleData.forEach(function(item , index){
  842. if(item.type == 'imgtext')window.msgData = item;
  843. })
  844. break;
  845. case '3':
  846. window.toggleData.forEach(function(item , index){
  847. if(item.type == 'img')window.msgData = item;
  848. })
  849. break;
  850. }
  851. var debtn = $(e.target);
  852. var delIndex = debtn.data('index');
  853. window.msgData.data.splice(delIndex , 1);
  854. var newHtml= "";
  855. if(window.msgData.type == "imgtext"){
  856. $(window.msgData.data).each(function(index , item){
  857. if(index == 0){
  858. newHtml+= '<div class="msg_preview h180" data-index="'+index+'">' +
  859. ' <img class="preview_img_imgtext" src="'+item.cover+'" alt="" >' +
  860. '<div class="preview_handler" style="background: rgba(0,0,0,.3);">' +
  861. '<h3 class="preview_imgtext_title" >'+item.title+'</h3>' +
  862. '<a href="javascript:;" class="preview_del" data-index="'+index+'">删除</a>' +
  863. '<a href="javascript:;" class="preview_edit" data-index="'+index+'">编辑</a>' +
  864. '</div>' +
  865. '</div>';
  866. }else{
  867. newHtml+= '<div class="msg_preview h180" data-index="'+index+'">' +
  868. '<img class="msg_preview_img2" src="'+item.cover+'" alt="" style="float: right;">' +
  869. '<h3 class="msg_preview_title2" >'+item.title+'</h3>' +
  870. '<div class="preview_handler" >' +
  871. '<a href="javascript:;" class="preview_del" data-index="'+index+'">删除</a>' +
  872. '<a href="javascript:;" class="preview_edit" data-index="'+index+'">编辑</a>' +
  873. '</div>' +
  874. '</div>';
  875. }
  876. });
  877. $('.message_type_content_contianer .imgtext_container').html(newHtml);
  878. }else if(window.msgData.type == 'text'){
  879. $(window.msgData.data).each(function(index , item){
  880. newHtml+= ''+
  881. '<div class="msg_preview_text" data-index="'+index+'">' +
  882. '<div class="preview_handler" >' +
  883. '<p class="msg_preview_title3">'+ item.content +'</p>'+
  884. '<a href="javascript:;" class="preview_del" data-index="'+index+'">删除</a>' +
  885. '<a href="javascript:;" class="preview_edit" data-index="'+index+'">编辑</a>' +
  886. '</div>' +
  887. '</div>';
  888. });
  889. $('.message_type_content_contianer .text_container').html(newHtml);
  890. }else if(window.msgData.type == 'img'){
  891. $(window.msgData.data).each(function(index , item){
  892. newHtml+= ''+
  893. '<div class="msg_preview" data-index="'+index+'">' +
  894. '<img class="msg_preview_img3" src="'+item.img_path+'" alt="" >' +
  895. '<div class="preview_handler" >' +
  896. '<a href="javascript:;" class="preview_del" data-index="'+index+'">删除</a>' +
  897. '<a href="javascript:;" class="preview_edit" data-index="'+index+'">编辑</a>' +
  898. '</div>' +
  899. '</div>';
  900. });
  901. $('.message_type_content_contianer .img_container').html(newHtml);
  902. };
  903. // if(window.msgData.data.length < 8){
  904. // $(window.document).find('#message_type_add_btn').show();
  905. // }
  906. if(window.msgData.type == 'img' && window.msgData.data.length > 0){
  907. $(window.document).find('#message_type_add_btn').hide();
  908. }else{
  909. if(window.msgData.data.length < 8){
  910. $(window.document).find('#message_type_add_btn').show();
  911. }else{
  912. $(window.document).find('#message_type_add_btn').hide();
  913. }
  914. }
  915. });
  916. // 消息编辑功能
  917. $('.message_type_content_contianer').on('click' , '.preview_edit' , function(e){
  918. var url = '';
  919. var title = '';
  920. var val = 1;
  921. var radios = $('#c-message_type [type=radio]');
  922. radios.each(function(index , ele){
  923. if(ele.checked == true){
  924. val = ele.value;
  925. }
  926. });
  927. switch (val) {
  928. case '1':
  929. url = '/admin/send/message/text/add';
  930. title = '文本消息';
  931. break;
  932. case '2':
  933. url = '/admin/send/message/imgtext/add';
  934. title = '图文消息';
  935. break;
  936. case '3':
  937. url = '/admin/send/message/img/add';
  938. title = '图片消息';
  939. break;
  940. default :
  941. url = '/admin/send/message/text/add';
  942. title = '文本消息';
  943. break;
  944. };
  945. switch (window.lastMsgTypeValue) {
  946. case '1':
  947. window.toggleData.forEach(function(item , index){
  948. if(item.type == 'text')window.msgData = item;
  949. })
  950. break;
  951. case '2':
  952. window.toggleData.forEach(function(item , index){
  953. if(item.type == 'imgtext')window.msgData = item;
  954. })
  955. break;
  956. case '3':
  957. window.toggleData.forEach(function(item , index){
  958. if(item.type == 'img')window.msgData = item;
  959. })
  960. break;
  961. }
  962. var editBtn = $(e.target);
  963. var editIndex =editBtn.data('index');
  964. var editData = window.msgData.data[editIndex];
  965. window.msgEditData = editData;
  966. window.msgIsEditing = true;
  967. window.msgEditIndex = editIndex;
  968. // 呼出 子页
  969. Fast.api.open(url, title, {
  970. callback: function (data) {
  971. // $this.find('img').attr('src',data.image);
  972. }
  973. });
  974. return false;
  975. });
  976. // 添加测试公众号
  977. $('.btn-add-test-subscription-list').on('click',function(){
  978. Fast.api.open(
  979. '/admin/send/message/subscriptionlist/test_user?not_in_ids='+$('#test_channel_id').val(),
  980. '添加测试公众号'
  981. );
  982. });
  983. // 测试用户
  984. $('.btn-test_user').on('click',function(){
  985. if($('.message_type_1').is(':checked')) {
  986. var itemsHtml = '';
  987. if(typeof(window.msgData) !=="undefined") {
  988. window.msgData.data.forEach(function (item, number) {
  989. if (item.hasOwnProperty('url')) {
  990. itemsHtml += '';
  991. itemsHtml += '<a href="' + item.url + '">';
  992. itemsHtml += item.content;
  993. itemsHtml += "</a>";
  994. } else {
  995. itemsHtml += item.content;
  996. }
  997. });
  998. if (itemsHtml.length > 290) {
  999. Layer.msg('文本最大字符不得超过290个字符');
  1000. return false;
  1001. }
  1002. }
  1003. }
  1004. if($('#test_channel_id').length>0){
  1005. if($('#test_channel_id').val()==''){
  1006. Layer.msg('渠道ID不能为空');
  1007. return;
  1008. }
  1009. }
  1010. if($('#c-test_message').length<=0){
  1011. Layer.msg('测试用户ID不能为空');
  1012. return;
  1013. }
  1014. if(!$('.message_type_1').is(':checked') && !$('.message_type_2').is(':checked') && !$('.message_type_3').is(':checked')){
  1015. Layer.msg('消息类型不能为空');
  1016. return;
  1017. }
  1018. var message_type = 0;
  1019. if($('.message_type_1').is(':checked')){
  1020. message_type = 1;
  1021. }else if($('.message_type_2').is(':checked')){
  1022. message_type = 2;
  1023. }else if($('.message_type_3').is(':checked')){
  1024. message_type = 3;
  1025. }
  1026. if(typeof(window.msgData) == "undefined"){
  1027. Layer.msg('消息内容不能为空');
  1028. return;
  1029. }
  1030. if($('#test_channel_id').length>0){
  1031. var datas = {
  1032. message_type:message_type,
  1033. user_id:$('#c-test_message').val(),
  1034. message_content : window.msgData.data,
  1035. channel_id:$('#test_channel_id').val(),
  1036. }
  1037. }else{
  1038. var datas = {
  1039. message_type:message_type,
  1040. user_id:$('#c-test_message').val(),
  1041. message_content : window.msgData.data,
  1042. }
  1043. }
  1044. Layer.confirm(
  1045. '确定要给该用户发送测试消息吗?',
  1046. {icon: 3, title: __('Warning'), offset: 0, shadeClose: true},
  1047. function () {
  1048. layer.closeAll('dialog');
  1049. $.ajax({
  1050. url:'send/message/message/testmessagetouser',
  1051. type:"post",
  1052. data: datas,
  1053. success:function(data){
  1054. if(data.code == 1){
  1055. layer.msg('发送完成');
  1056. return false;
  1057. }else{
  1058. layer.msg(data.msg);
  1059. return false;
  1060. }
  1061. }
  1062. });
  1063. }
  1064. );
  1065. });
  1066. // 测试公众号删除
  1067. $('#gzh_table1').on('click', '.gzh_del_btn1' , function(e){
  1068. $('#test_channel_id').val("");
  1069. $(e.target).parent().parent().remove();
  1070. });
  1071. // 提交
  1072. $("#mater_submit").click(function(){
  1073. if(typeof(window.msgData) == 'undefined' ||window.msgData.data.length===0){
  1074. Layer.msg('消息内容不能为空');
  1075. return false;
  1076. }
  1077. switch (window.lastMsgTypeValue) {
  1078. case '1':
  1079. window.toggleData.forEach(function(item , index){
  1080. if(item.type == 'text')window.msgData = item;
  1081. })
  1082. break;
  1083. case '2':
  1084. window.toggleData.forEach(function(item , index){
  1085. if(item.type == 'imgtext')window.msgData = item;
  1086. })
  1087. break;
  1088. case '3':
  1089. window.toggleData.forEach(function(item , index){
  1090. if(item.type == 'img')window.msgData = item;
  1091. })
  1092. break;
  1093. }
  1094. if($('.message_type_1').is(':checked')) {
  1095. var itemsHtml = '';
  1096. if(typeof(window.msgData) !=="undefined") {
  1097. window.msgData.data.forEach(function (item, number) {
  1098. if (item.hasOwnProperty('url')) {
  1099. itemsHtml += '';
  1100. itemsHtml += '<a href="' + item.url + '">';
  1101. itemsHtml += item.content;
  1102. itemsHtml += "</a>";
  1103. } else {
  1104. itemsHtml += item.content;
  1105. }
  1106. });
  1107. if (itemsHtml.length > 290) {
  1108. Layer.msg('文本最大字符不得超过290个字符');
  1109. return false;
  1110. }
  1111. }
  1112. }
  1113. $("#message_content").val(JSON.stringify(window.msgData.data))
  1114. })
  1115. Controller.api.bindevent();
  1116. },
  1117. message_preview: function () {
  1118. Controller.api.bindevent();
  1119. },
  1120. add_with_material: function () {
  1121. //公众号
  1122. $('.n-all').on('click',function(){
  1123. $('.o-add-subcription-list').addClass('hidden');
  1124. $('.o-add-subcription-table').addClass('hidden');
  1125. $('#subscription_ids').val('');
  1126. // 点击清空指定公众号列表
  1127. window.gzhHtmlArr = [];
  1128. window.gzhIdArr = [];
  1129. $('#subscription_ids').val('');
  1130. $('#gzh_table').find('tbody').empty();
  1131. });
  1132. $('.n-some').on('click',function(){
  1133. $('.o-add-subcription-list').removeClass('hidden');
  1134. $('.o-add-subcription-table').removeClass('hidden');
  1135. });
  1136. $('.btn-add-subscription-list').on('click',function () {
  1137. Fast.api.open(
  1138. '/admin/send/message/subscriptionlist/index?not_in_ids='+$('#subscription_ids').val(),
  1139. '添加公众号'
  1140. );
  1141. });
  1142. //用户组
  1143. $('.btn-add-user-group').on('click',function () {
  1144. Fast.api.open(
  1145. '/admin/send/message/usergroup/index?not_in_ids='+$('#user_group_ids').val(),
  1146. '添加用户群组'
  1147. );
  1148. return false;
  1149. });
  1150. // 公众号删除
  1151. $('#gzh_table').on('click' , '.gzh_del_btn' , function(e){
  1152. var tmpId = $(e.target).data('id');
  1153. var tmpIndex = -1;
  1154. $(window.gzhHtmlArr).each(function(index, item){
  1155. if(item.admin_id == tmpId){
  1156. tmpIndex = index;
  1157. }
  1158. });
  1159. // 修改val
  1160. window.gzhIdArr.splice(tmpIndex , 1);
  1161. $('#subscription_ids').val(window.gzhIdArr.join(','));
  1162. // 修改html
  1163. window.gzhHtmlArr.splice(tmpIndex , 1);
  1164. $(e.target).parent().parent().remove();
  1165. });
  1166. // 用户群组删除
  1167. $('#yhz_table').on('click' , '.user_group_del_btn', function (e) {
  1168. $('#user_group_ids').val("");
  1169. $(e.target).parent().parent().remove();
  1170. window.PUserGroup ={};
  1171. window.PUserGroupId = -1;
  1172. });
  1173. // 添加测试公众号
  1174. $('.btn-add-test-subscription-list').on('click',function(){
  1175. Fast.api.open(
  1176. '/admin/send/message/subscriptionlist/test_user?not_in_ids='+$('#test_channel_id').val(),
  1177. '添加测试公众号'
  1178. );
  1179. });
  1180. // 测试用户
  1181. $('.btn-test_user').on('click',function(){
  1182. if($('#test_channel_id').length>0){
  1183. if($('#test_channel_id').val()==''){
  1184. Layer.msg('渠道ID不能为空');
  1185. return;
  1186. }
  1187. }
  1188. if($('#c-test_message').length<=0){
  1189. Layer.msg('测试用户ID不能为空');
  1190. return;
  1191. }
  1192. if($('#test_channel_id').length>0){
  1193. var datas = {
  1194. user_id:$('#c-test_message').val(),
  1195. message_id : $('#message_content').val(),
  1196. channel_id:$('#test_channel_id').val(),
  1197. }
  1198. }else{
  1199. var datas = {
  1200. user_id:$('#c-test_message').val(),
  1201. message_id : $('#message_content').val(),
  1202. }
  1203. }
  1204. Layer.confirm(
  1205. '确定要给该用户发送测试消息吗?',
  1206. {icon: 3, title: __('Warning'), offset: 0, shadeClose: true},
  1207. function () {
  1208. layer.closeAll('dialog');
  1209. $.ajax({
  1210. url:'send/message/message/testmessagetouser',
  1211. type:"post",
  1212. data: datas,
  1213. success:function(data){
  1214. if(data.code == 1){
  1215. layer.msg('发送完成');
  1216. return false;
  1217. }else{
  1218. layer.msg(data.msg);
  1219. return false;
  1220. }
  1221. }
  1222. });
  1223. }
  1224. );
  1225. });
  1226. // 测试公众号删除
  1227. $('#gzh_table1').on('click', '.gzh_del_btn1' , function(e){
  1228. $('#test_channel_id').val("");
  1229. $(e.target).parent().parent().remove();
  1230. });
  1231. Controller.api.bindevent();
  1232. },
  1233. api: {
  1234. bindevent: function () {
  1235. Form.api.bindevent($("form[role=form]"));
  1236. }
  1237. }
  1238. };
  1239. return Controller;
  1240. });