custommain.js 14 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342
  1. //素材管理
  2. define(['jquery'], function ($) {
  3. $(".choose-type").on("click", function () {
  4. var index = $(this).val();
  5. if (index == 0) {
  6. $("#select_0").removeClass('hide');
  7. $("#select_1").addClass('hide');
  8. } else if (index == 1) {
  9. $("#select_1").removeClass('hide');
  10. $("#select_0").addClass('hide');
  11. }
  12. });
  13. $(document).on('click', '.js_choose_channel', function () {
  14. var group_list = $(".js_selected_group_id").val();
  15. Fast.api.open('/admin/vip/admin/group/select?not_in_ids='+group_list, '分组列表', {
  16. callback: function (data) {
  17. var count = $(".channel_count").val() || 0;
  18. if (data.length > 0) {
  19. $(".channel-list").removeClass('hide');
  20. var html = "";
  21. for(var i =1; i<= data.length; i++) {
  22. var index = parseInt(count) + i;
  23. var j = i-1;
  24. var group_id = data[j].id;
  25. group_list += group_id + ',';
  26. var group_name = data[j].name;
  27. var createtime = data[j].create_time;
  28. var updatetime = data[j].update_time;
  29. $(".channel_count").val(index);
  30. html += ' <tr class="tr-'+index+'" data-index="'+index+'">\n' +
  31. ' <td class="channel-list-td">'+index+'</td>\n' +
  32. ' <td class="channel-list-td">\n' +
  33. ' <div class="link_txt">'+group_name+'</div>\n' +
  34. ' </td>\n' +
  35. ' <td class="channel-list-td">\n' +
  36. ' <div class="link_txt">'+createtime+'</div>\n' +
  37. ' </td>\n' +
  38. ' <td class="channel-list-td">\n' +
  39. ' <div class="link_txt">'+updatetime+'</div>\n' +
  40. ' </td>\n' +
  41. ' <td class="channel-list-td">\n' +
  42. ' <div class="link_txt channle_del" data-tid="'+index+'" data-channelid="'+group_id+'"><a href="javascript:;">删除</a></div>\n' +
  43. ' </td>\n' +
  44. ' </tr>';
  45. }
  46. $(".channel-list-body").append(html);
  47. $(".js_selected_group_id").val(group_list);
  48. }
  49. }
  50. });
  51. });
  52. $(document).on('click', '.channle_del', function () {
  53. var channelid = $(this).data('channelid');
  54. var index = $(this).data('tid');
  55. $(".tr-"+index).remove();
  56. var channel_list = $(".js_selected_group_id").val();
  57. var list = channel_list.split(',');
  58. var list1 = '';
  59. var count = 0;
  60. if (list.length > 0) {
  61. for (var i = 0; i < list.length; i++) {
  62. if (list[i] != channelid && list[i]) {
  63. list1 += list[i] + ',';
  64. count++;
  65. }
  66. }
  67. }
  68. $(".js_selected_group_id").val(list1);
  69. $(".channel_count").val(count);
  70. });
  71. var time_format = function(fmt){
  72. var time = new Date();
  73. var o = {
  74. "M+" : time.getMonth()+1, //月份
  75. "d+" : time.getDate(), //日
  76. "h+" : time.getHours(), //小时
  77. "m+" : time.getMinutes(), //分
  78. "s+" : time.getSeconds(), //秒
  79. "q+" : Math.floor((time.getMonth()+3)/3), //季度
  80. "S" : time.getMilliseconds() //毫秒
  81. };
  82. if(/(y+)/.test(fmt))
  83. fmt=fmt.replace(RegExp.$1, (time.getFullYear()+"").substr(4 - RegExp.$1.length));
  84. for(var k in o)
  85. if(new RegExp("("+ k +")").test(fmt))
  86. fmt = fmt.replace(RegExp.$1, (RegExp.$1.length==1) ? (o[k]) : (("00"+ o[k]).substr((""+ o[k]).length)));
  87. return fmt;
  88. }
  89. var extractValuesFromObj = function(obj){
  90. var result = [];
  91. for(var i in obj){
  92. result.push(obj[i]);
  93. }
  94. return result;
  95. }
  96. return {
  97. //粉丝推送测试
  98. fans_send_message: function () {
  99. var sentData = {
  100. admin_id: [],
  101. sub_id: [],
  102. user_id: '',
  103. cdata: '',
  104. msg_type: '',
  105. group_id: '',
  106. is_group: '',
  107. };
  108. if ($('.msg_type').val() == '') {
  109. Toastr.error("请提供消息类型");
  110. return false;
  111. }
  112. sentData.msg_type = $('.msg_type').val();
  113. sentData.official_type = $('input[name="official_type"]').val();
  114. if ($.trim($('#userId').val()) == '') {
  115. Toastr.error("请填写测试粉丝ID");
  116. return false;
  117. }
  118. sentData.user_id = $.trim($('#userId').val());
  119. if($('#dyhcheck input[name^="row[sub_id]"]').length){
  120. if($('#dyhcheck input[name^="row[sub_id]"]:checked').length){
  121. sentData['sub_id'] = [];
  122. $('#dyhcheck input[name^="row[sub_id]"]:checked').each(function(index, item){
  123. sentData['sub_id'].push($(item).val());
  124. });
  125. }else{
  126. Toastr.error("请至少选择一个我订阅号");
  127. return false;
  128. }
  129. }
  130. try {
  131. if (sentData.msg_type == 1) {
  132. if ($(".textarea_txt_hidden_input").length) {
  133. var scdata = $(".textarea_txt_hidden_input").val();
  134. if (!scdata || JSON.parse(scdata).length == 0) {
  135. Toastr.error("请编辑消息内容");
  136. return false;
  137. }
  138. sentData.cdata = scdata;
  139. }
  140. } else {
  141. if ($(".img_txt_hidden_input").length) {
  142. var scdata = $(".img_txt_hidden_input").val();
  143. if (!scdata || JSON.parse(scdata).length == 0) {
  144. Toastr.error("请编辑消息内容");
  145. return false;
  146. }
  147. sentData.cdata = scdata;
  148. }
  149. }
  150. } catch (e) {
  151. Toastr.error("请编辑消息内容");
  152. return false;
  153. }
  154. var url;
  155. if ($(".choose-type:checked").val() == 1) {
  156. if ($('#admin_id').val() !== undefined) {
  157. url = '/admin/custom/sent';
  158. } else {
  159. url = '/admin/vipcustom/createcustom/sent';
  160. }
  161. sentData.admin_id = ['1', '2'];
  162. sentData.is_group = 1;
  163. sentData.group_id = $(".js_selected_group_id").val();
  164. if (sentData.group_id.length == 0) {
  165. Toastr.error("请至少选择一个分组");
  166. return false;
  167. }
  168. } else {
  169. //渠道商的逻辑
  170. if ($('#admin_id').val() !== undefined) {
  171. url = '/admin/custom/sent';
  172. sentData.admin_id.push($('#admin_id').val());
  173. } else {
  174. url = '/admin/vipcustom/createcustom/sent';
  175. //订阅号
  176. if ($('#c-name').length) {
  177. sentData.admin_id.push($('#c-name').val());
  178. //服务号
  179. } else {
  180. sentData.admin_id = [];
  181. $('#dyhcheck input:checked').each(function (item, dom) {
  182. sentData.admin_id.push($(dom).val());
  183. });
  184. }
  185. }
  186. if (sentData.admin_id.length == 0) {
  187. Toastr.error("请至少选择一个服务号");
  188. return false;
  189. }
  190. }
  191. $.ajax({
  192. type: 'post',
  193. url: url + location.search,
  194. data: sentData,
  195. dataType: 'json',
  196. cache: false,
  197. async: false,
  198. success: function (data) {
  199. if (data.error == 0) {
  200. Toastr.success(data.msg);
  201. } else {
  202. Toastr.error(data.msg);
  203. }
  204. },
  205. error: function (err) {
  206. Toastr.error(err.msg);
  207. }
  208. })
  209. },
  210. //多选框关联,p_dom与c_dom为css选择器。适用p_dom下只有一个checkbox,c_dom下有多个checkbox的情况
  211. //如果p_dom下的checkbox变化,则将c_dom中的checkbox同步
  212. //如果c_dom下的checkbox变化,如果c_dom下的checkbox为全部选中,则将p_dom下的checkbox更新为选中,否则为未选中状态
  213. checkbox_relation: function (p_dom, c_dom) {
  214. var p = $(p_dom).find('input:checkbox');
  215. var c = $(c_dom).find('input:checkbox');
  216. c.change(function () {
  217. $(p_dom).find('input:checkbox').prop('checked', $(c_dom).find('input:checkbox:checked').length == $(c_dom).find('input:checkbox').length);
  218. });
  219. p.change(function () {
  220. $(c_dom).find('input:checkbox').prop('checked', $(p_dom).find('input:checkbox').prop('checked'));
  221. });
  222. //初始化状态
  223. $(p_dom).find('input:checkbox').prop('checked', $(c_dom).find('input:checkbox:checked').length == $(c_dom).find('input:checkbox').length);
  224. },
  225. /**
  226. * @param desc 客服消息说明
  227. * @returns {string}
  228. */
  229. get_channel_book_name: function () {
  230. var acc_type = $('input[name="acc_type"]').val();
  231. var desc = '文字客服消息';
  232. if (acc_type == 0) {
  233. desc = '图文客服消息';
  234. }
  235. if ($('input[name="book[push]"]:checked').val() == 1) {
  236. var result = [
  237. time_format('yyyy.MM.dd'),//时间
  238. $('#c-book_book_name').val(),//书名
  239. '内推',//推送类型
  240. $('#select_book_id').attr('data-sex_text'),//频道名
  241. desc
  242. ];
  243. $('input[name="book[channel_name]"]').val(result.join('+'));
  244. } else {
  245. $('input[name="book[channel_name]"]').val('');
  246. }
  247. },
  248. /**
  249. * desc 客服消息类型
  250. * @returns {string}
  251. */
  252. get_channel_other_name:function(){
  253. var acc_type = $('input[name="acc_type"]').val();
  254. var desc = '文字客服消息';
  255. if (acc_type == 0) {
  256. desc = '图文客服消息';
  257. }
  258. var title = '';
  259. switch ($('input[name="row[imgtxt_type]"]:checked').val()) {
  260. case '1':
  261. title = $('#c-activity_activity_id option:selected').text();
  262. break;
  263. case '2':
  264. title = '继续阅读';
  265. break;
  266. case '3':
  267. title = $('#c-menu_menu_id option:selected').text();
  268. break;
  269. }
  270. $('.group-type:visible').find('input[name$="[channel_name]"]').val([
  271. time_format('yyyy.MM.dd'),
  272. title,
  273. desc
  274. ].join("+"));
  275. },
  276. bind_form_validation: function(){
  277. $("#addimagetext-form-box,#addimagetext-form").data("validator-options", {
  278. ignore: ':hidden',
  279. beforeSubmit: function (form) {
  280. var check_list = [
  281. 'c-book_title',
  282. 'c-book_image',
  283. 'select_book_id',
  284. 'c-book_channel_name',
  285. 'c-activity_title',
  286. 'c-recent_title',
  287. 'c-menu_title',
  288. 'c-activity_image',
  289. 'c-activity_activity_id',
  290. 'c-menu_menu_id',
  291. 'c-recent_image',
  292. 'c-menu_image',
  293. 'c-book_guide_chapter_idx',
  294. 'c-activity_channel_name',
  295. 'c-no_url_title',
  296. 'c-recent_channel_name',
  297. 'c-menu_channel_name',
  298. 'c-daily_url_title',
  299. 'c-daily_url_image',
  300. 'c-daily_url_url'
  301. ];
  302. var msg = '';
  303. $.each(check_list, function (index, item) {
  304. if($('#' + item).closest('.form-group').parent().hasClass('hide')){
  305. return true;
  306. }
  307. if ($('.group-type:visible #' + item).length && !$('.group-type:visible #' + item).val()) {
  308. msg = $('[for="'+item+'"]').first().text();
  309. msg = msg.substr(0,msg.length-1);
  310. return false;
  311. }
  312. });
  313. if(msg){
  314. Toastr.error('请添加' + msg);
  315. return false;
  316. }
  317. }
  318. });
  319. },
  320. //返回当前是否可编辑
  321. check_waiting_send_editable: function (send_time) {
  322. var time_span = 600;//10分钟
  323. var editable_time = new Date().getTime() / 1000 + time_span;
  324. return send_time > editable_time;
  325. }
  326. };
  327. });