imagetextmedia.js 21 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470
  1. define(['jquery', 'bootstrap', 'backend', 'table', 'form', 'template', 'custommain'], function ($, undefined, Backend, Table, Form, Template, Custommain) {
  2. var Controller = {
  3. index: function () {
  4. // 初始化表格参数配置
  5. Table.api.init({
  6. extend: {
  7. index_url: 'messagecustom/imagetextmedia/index?table=' + Config.table + '&table_status=' + Config.table_status,
  8. },
  9. searchFormVisible: true,
  10. search: false
  11. });
  12. var table = $("#table");
  13. // 初始化表格
  14. table.bootstrapTable({
  15. url: $.fn.bootstrapTable.defaults.extend.index_url,
  16. pk: 'id',
  17. sortName: 'id',
  18. clickToSelect: false,
  19. pageSize: 12, //每页的记录行数(*)
  20. pageList: [12, 36, 72, 120], //可供选择的每页的行数(*)
  21. columns: [Controller.api.showFilterColumns(table)],
  22. onLoadSuccess: function () { //加载成功时执行
  23. $('#table td').attr('rowspan', '1000');
  24. }
  25. });
  26. // 为表格绑定事件
  27. Table.api.bindevent(table);
  28. //tooltip
  29. $(document).on('mouseover', '#table td', function () {
  30. $('.wxb-card-list-scroll .anticon').tooltip();
  31. $('[rel="popover"]').popover({
  32. trigger: 'manual',
  33. placement: 'top',
  34. html: true,
  35. content: function () {
  36. var ids = $(this).data('rowid');
  37. /*jshint multistr: true*/
  38. /*return '<div class="msg_popover_but_box">\
  39. <a href="javascript:;" class="btn-multi-ajax" data-href="/admin/messagecustom/imagetextmedia/multisendmessage?table=media&ids=' + ids + '&official_type=0">群发服务号</a>\
  40. <a href="javascript:;" class="btn-multi-ajax" data-href="/admin/messagecustom/imagetextmedia/multisendmessage?table=media&ids=' + ids + '&official_type=1">群发订阅号</a>\
  41. </div>';*/
  42. return '<div class="msg_popover_but_box">\
  43. <a href="javascript:;" class="btn-multi-ajax" data-href="/admin/messagecustom/imagetextmedia/multisendmessage?table=media&ids=' + ids + '&official_type=0">群发服务号</a>\
  44. </div>';
  45. }
  46. }).on("mouseenter", function () {
  47. var _this = this;
  48. $(this).popover("show");
  49. $(this).siblings(".popover").on("mouseleave", function () {
  50. $(_this).popover('hide');
  51. });
  52. }).on("mouseleave", function () {
  53. var _this = this;
  54. setTimeout(function () {
  55. if (!$(".popover:hover").length) {
  56. $(_this).popover("hide");
  57. }
  58. }, 100);
  59. });
  60. });
  61. //群发消息
  62. $(document).on('click', '.btn-multi-ajax', function () {
  63. var stxt = $(this).text();
  64. var multi_url = $(this).attr('data-href');
  65. Fast.api.open(multi_url, stxt, {
  66. callback: function (data) {
  67. if(!data) return false;
  68. var data = data[0];
  69. console.log(data);
  70. }
  71. });
  72. });
  73. //删除
  74. $(document).on('click', '.btn-del-ajax', function () {
  75. var del_url = $(this).attr('data-href');
  76. layer.confirm("确定删除此项?", {
  77. icon: 3,
  78. title: "温馨提示",
  79. shadeClose: true
  80. }, function (index) {
  81. layer.close(index);
  82. $.get(del_url, {}, function (data) {
  83. if (data.code) {
  84. var msg = data.msg != '' ? data.msg : '操作成功';
  85. Toastr.success(msg);
  86. table.bootstrapTable('refresh');
  87. } else {
  88. var msg = data.msg != '' ? data.msg : '操作失败';
  89. Toastr.error(msg);
  90. }
  91. });
  92. }, function () {
  93. layer.close();
  94. });
  95. });
  96. // 打开详情页面
  97. $(document).on('click', '.btn-view-ajax', function () {
  98. Fast.api.open($(this).attr('data-href'), '查看详情', {});
  99. });
  100. //消息图文素材库编辑列表
  101. $(document).on('click', '.anticon-title-edit', function () {
  102. var $this = $(this);
  103. var sid = $this.data('id');
  104. var stit = $this.parents('li').find('.article-item-title').text();
  105. layer.open({
  106. type: 1,
  107. title: false,
  108. maxmin: false,
  109. area: ['auto', 'auto'],
  110. btn: ['确认', '取消'],
  111. shadeClose: true,
  112. resize: false,
  113. skin: 'layui-layer-rim',
  114. content: '<div class="anticon_edit_box">\
  115. <div class="anticon_edit_select_tit_box">\
  116. <strong>当前标题:</strong>\
  117. <p>' + stit + '</p>\
  118. <a href="javascript:;"><i class="fa fa-pencil"></i></a>\
  119. </div>\
  120. <div class="anticon_edit_input_tit_box">\
  121. <strong>修改为:</strong>\
  122. <div class="anticon_edit_input_tit"><input type="text" value="' + stit + '" /></div>\
  123. </div>\
  124. </div>',
  125. yes: function (index, layero) {
  126. var stit = $(layero.selector + ' p').text();
  127. var sinputtit = $(layero.selector + ' input').val();
  128. if (sinputtit) {
  129. stit = sinputtit;
  130. }
  131. //sid 列表id stit 修改的标题内容
  132. // 修改Title
  133. $.ajax({
  134. type: 'get',
  135. url: './messagecustom/imagetextmedia/edittitle?ids=' + sid + '&title=' + stit,
  136. success: function (data) {
  137. $this.parents('li').find('.article-item-title').text(data.data);
  138. }
  139. })
  140. layer.close(index);
  141. },
  142. btn2: function (index, node) {
  143. layer.close(index)
  144. }
  145. });
  146. });
  147. //修改 弹窗 title
  148. $(document).on('click', '.anticon_edit_select_tit_box a', function () {
  149. var $this = $(this);
  150. Fast.api.open('manage/title/select', '选择标题', {
  151. callback: function (data) {
  152. $this.siblings('p').text(data.title);
  153. $this.parents('.anticon_edit_box').find('input').val(data.title);
  154. }
  155. });
  156. });
  157. //修改封面
  158. $(document).on('click', '.anticon-cover-edit', function () {
  159. var $this = $(this);
  160. var sid = $this.data('id');
  161. var stit = $this.parents('li').find('.article-item-cover');
  162. Fast.api.open('manage/cover/select', '选择', {
  163. callback: function (data) {
  164. $.ajax({
  165. type: 'get',
  166. url: './messagecustom/imagetextmedia/editcover?ids=' + sid + '&cover=' + data.image,
  167. success: function (data) {
  168. $this.parents('li').find('.article-item-cover').css('background-image', 'url(' + data.data + ')');
  169. }
  170. })
  171. }
  172. });
  173. });
  174. //修改图文内容
  175. $(document).on('click', '.anticon-novel-edit', function () {
  176. console.log('修改图文内容');
  177. var $this = $(this);
  178. var nIndex = $this.parents('li').index();
  179. var sid = $this.data('id');
  180. $.ajax({
  181. type: 'get',
  182. url: 'messagecustom/imagetextmedia/getmediamessage?ids=' + sid,
  183. success: function (data) {
  184. console.log('AAA');
  185. console.log(data);
  186. console.log('BBB');
  187. if (!data.code) {
  188. Fast.api.open('custom/editimagetext?media_id=' + data.data.media_id, '修改内容', {
  189. callback: function (data) {
  190. var data = data;
  191. $.ajax({
  192. type: 'get',
  193. url: 'messagecustom/imagetextmedia/editLink?ids=' + sid + '&message_json=' + encodeURIComponent(JSON.stringify(data)),
  194. success: function (data) {
  195. if (data.code == 0) {
  196. Toastr.success('成功');
  197. } else {
  198. Toastr.error('失败');
  199. }
  200. }
  201. })
  202. }
  203. });
  204. }
  205. },
  206. error:function(data){
  207. console.log('Error');
  208. console.log(data);
  209. }
  210. })
  211. });
  212. },
  213. //图文客服消息 群发 订阅号 服务号
  214. multisendmessage: function () {
  215. var acc_type = $("#acc_type_hid").val(); // 标记:群发订阅号 群发服务号
  216. if(acc_type){
  217. //发送订阅号验证
  218. $("#add-form").data("validator-options", {
  219. ignore: ':hidden',
  220. beforeSubmit: function (form) {
  221. var senddyhradioval = $('#dyhradio input').val();
  222. var other_tips = $(":checked[name^='row[sub_id]']", $("#add-form"));
  223. if($('#dyhradio input').length){
  224. if(other_tips.length <= 0){
  225. Toastr.error("请选择需要发送的订阅号");
  226. return false;
  227. }
  228. if(senddyhradioval < other_tips.length){
  229. Toastr.error("最多可选择发送" + senddyhradioval + '个订阅号');
  230. return false;
  231. }
  232. }
  233. }
  234. });
  235. Controller.api.bindevent();
  236. }
  237. //测试发送
  238. $('.test_fans_but').click(function(){
  239. Custommain.fans_send_message();
  240. });
  241. },
  242. //查看详情
  243. viewdetail: function () {
  244. // 初始化表格参数配置
  245. Table.api.init({
  246. extend: {
  247. getimage_url: window.location.href,
  248. },
  249. search: false,
  250. showToggle: false,
  251. showColumns: false,
  252. showExport: false,
  253. commonSearch: false
  254. });
  255. var table = $("#table");
  256. //当表格数据加载完成时
  257. table.on('load-success.bs.table', function (e, data) {
  258. //这里可以获取从服务端获取的JSON数据
  259. //console.log(data);
  260. //这里我们手动设置底部的值
  261. //$("#money").text(data.extend.money);
  262. //$("#price").text(data.extend.price);
  263. });
  264. // 初始化表格
  265. table.bootstrapTable({
  266. url: $.fn.bootstrapTable.defaults.extend.getimage_url,
  267. pk: 'id',
  268. sortName: 'id',
  269. columns: [Controller.api.getimagelist(table)]
  270. });
  271. // 为表格绑定事件
  272. Table.api.bindevent(table);
  273. },
  274. api: {
  275. showFilterColumns: function (table) {
  276. var cols = new Array();
  277. cols.push({
  278. field: 'id',
  279. title: "素材ID",
  280. visible: false
  281. });
  282. cols.push({
  283. field: 'message_json$[*].book_name',
  284. title: "书籍名称",
  285. visible: false,
  286. operate: 'LIKE %...%'
  287. });
  288. cols.push({
  289. field: 'id',
  290. operate: false,
  291. formatter: Controller.api.formatter.showStyle
  292. });
  293. return cols;
  294. },
  295. getimagelist: function (table) {
  296. var cols = new Array();
  297. cols.push({
  298. field: 'title',
  299. title: "标题",
  300. operate: false
  301. });
  302. cols.push({
  303. field: 'image',
  304. title: "图片",
  305. operate: false,
  306. formatter: Controller.api.formatter.showImage
  307. });
  308. cols.push({
  309. field: 'push',
  310. title: "推广类型",
  311. operate: false,
  312. formatter: Controller.api.formatter.showPushType
  313. });
  314. cols.push({
  315. field: 'type',
  316. title: "链接类型",
  317. operate: false,
  318. formatter: Controller.api.formatter.showType
  319. });
  320. /*cols.push({
  321. field: 'book_id',
  322. title: "书籍ID",
  323. operate: false
  324. });*/
  325. cols.push({
  326. field: 'book_name',
  327. title: "书籍名称/活动名称/菜单名称",
  328. operate: false
  329. });
  330. cols.push({
  331. field: '',
  332. title: "推广位置",
  333. operate: false,
  334. formatter: Controller.api.formatter.showPosition
  335. });
  336. //cols.push({field: 'book_id', title:"阅读原文连接"});
  337. return cols;
  338. },
  339. bindevent: function () {
  340. Custommain.checkbox_relation('#dyhradio', '#dyhcheck');
  341. Form.api.bindevent($("form[role=form]"),
  342. function (data) {
  343. Fast.api.close(data);
  344. },
  345. function (data) {
  346. }
  347. );
  348. $(document).on('click', '.btn-close', function () {
  349. Fast.api.close();
  350. });
  351. //修改发送消息时间
  352. $(document).on('click', '.s_time_box span', function () {
  353. var $this = $(this);
  354. var nval = parseInt($this.attr('stime'));
  355. var ntime = Date.parse(new Date());
  356. var nt = ntime + nval;
  357. $('#c-sendtime').val(GetRTime(nt));
  358. });
  359. function GetRTime(time) {
  360. var stime;
  361. time = new Date(time);
  362. var year = time.getYear() + 1900;
  363. var month = time.getMonth() + 1;
  364. var day = time.getDate();
  365. var hours = time.getHours();
  366. var minutes = time.getMinutes();
  367. var seconds = time.getSeconds();
  368. stime = year + '-' +
  369. (month < 10 ? '0' + month : month) + '-' +
  370. (day < 10 ? '0' + day : day) + ' ' +
  371. (hours < 10 ? '0' + hours : hours) + ':' +
  372. (minutes < 10 ? '0' + minutes : minutes) + ':' +
  373. (seconds < 10 ? '0' + seconds : seconds);
  374. return stime;
  375. }
  376. },
  377. formatter: {
  378. showImage: function (value, row, index) {
  379. return '<img style="height:100px;" src="' + value + '"/>';
  380. },
  381. showType: function (value, row, index) {
  382. var type_arr = ['书籍', '活动', '继续阅读', '菜单'];
  383. return type_arr[value];
  384. },
  385. showPosition: function (value, row, index) {
  386. return index + 1;
  387. },
  388. showPushType: function (value, row, index) {
  389. var push_arr = ['外推', '内推'];
  390. return push_arr[value];
  391. },
  392. showStyle: function (value, row, index) {
  393. var message_data = JSON.parse(row.message_json).shift();
  394. /*jshint multistr: true */
  395. var html = '<div class="wxb-card-list-scroll"><div class="wxb-card-item"><div class="wxb-card-item-inner"><div class="item-header"><div>';
  396. html += '<div class="tweets-card-title"><p>素材id:' + row.id + '</p></div>';
  397. html += '<div class="tweets-card-title"><p>创建时间:' + Table.api.formatter.datetime(row.createtime, row, index) + '</p></div>';
  398. html += '<div class="tweets-card-title"><p>修改时间:' + Table.api.formatter.datetime(row.updatetime, row, index) + '</p></div>';
  399. /*var offical_type = parseInt(row.official_account_type) == 1 ? '订阅号' : '服务号';
  400. var send_color = '';
  401. var send_text = '';
  402. switch (parseInt(row.status)) {
  403. case 0:
  404. send_color = 'red';
  405. send_text = '待发送';
  406. break;
  407. case 1:
  408. send_color = '#FF9900';
  409. send_text = '群发中';
  410. break;
  411. case 2:
  412. send_color = '#88d743';
  413. send_text = '已群发';
  414. break;
  415. }
  416. html += '<div class="tweets-card-title"><p style="color:' + send_color + '">发送时间:' + Table.api.formatter.datetime(row.sendtime, row, index) + ' ' + send_text + '</p></div>';
  417. html += '<div class="tweets-card-title"><p>群发类型:' + offical_type + '</p></div>';*/
  418. html += '</div></div><ul class="article-list"><li> <a class="article-item">';
  419. html += '<div class="novel-img article-item-cover" style="background-image: url(' + message_data.image + ');"></div>';
  420. html += '<p class="article-item-title">' + message_data.title + '</p>';
  421. html += '</a><div class="article-actions">';
  422. html += '<div> <span class="action-item"> <i class="anticon anticon-title-edit" style="font-size: 17px;" data-id="' + row.id + '" data-toggle="tooltip" data-original-title="修改标题"></i> </span> <span class="action-item"> <i class="anticon anticon-cover-edit" data-toggle="tooltip" data-original-title="修改封面" data-id="' + row.id + '"></i> </span> <span class="action-item"> <i class="anticon anticon-novel-edit" style="font-size: 13px;" data-toggle="tooltip" data-original-title="编辑链接" data-id="' + row.id + '"></i> </span> <span class="action-item action-item-up"> <i class="anticon anticon-arrow-up" data-toggle="tooltip" data-original-title="上移"></i> </span> <span class="action-item action-item-down"> <i class="anticon anticon-arrow-down" data-toggle="tooltip" data-original-title="下移"></i> </span></div>';
  423. html += '</div></li></ul><ul class="footer-btns">';
  424. html += '<li><a class="btn-del-ajax" href="javascript:void(0);" data-href="/admin/messagecustom/imagetextmedia/del?table=media&ids=' + row.id + '">删除</a></li>';
  425. html += '<li><a class="btn-view-ajax" href="javascript:void(0);" data-href="/admin/messagecustom/imagetextmedia/viewdetail?ids=' + row.id + '">查看详情</a></li>';
  426. html += '<li><a rel="popover" data-rowid="' + row.id + '">群发</a></li>';
  427. html += '</ul></div></div></div>';
  428. return html;
  429. }
  430. }
  431. }
  432. };
  433. return Controller;
  434. });