many.js 15 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329
  1. define(['jquery', 'bootstrap', 'backend', 'table', 'form', 'clipboard'], function ($, undefined, Backend, Table, Form, Clipboard) {
  2. var Controller = {
  3. index: function () {
  4. // 初始化表格参数配置
  5. Table.api.init({
  6. extend: {
  7. index_url: 'referral/many/index',
  8. add_url: 'referral/many/add',
  9. edit_url: 'referral/many/edit',
  10. del_url: 'referral/many/del',
  11. multi_url: 'referral/many/multi',
  12. push_url: 'referral/many/push',
  13. table: 'referral_many',
  14. },
  15. showColumns:false,
  16. showToggle:false,
  17. showExport:true,
  18. searchFormVisible: true,
  19. search:false,
  20. });
  21. var table = $("#table");
  22. // 初始化表格
  23. table.bootstrapTable({
  24. url: $.fn.bootstrapTable.defaults.extend.index_url,
  25. pk: 'id',
  26. sortName: 'id',
  27. columns: [
  28. [
  29. {checkbox: true},
  30. {field: 'id', title: __('Id')},
  31. {field: 'admin_id', title: __('Admin_id'), visible: false, operate: false},
  32. {field: 'title', title: __('Title'),operate: 'LIKE %...%'},
  33. {field: 'referral_book_name', title: '书籍名称', formatter: Controller.api.referral_book_name, operate: false},
  34. {field: 'referral_title', title: '推广标题列表', formatter: Controller.api.referral_title, operate: false},
  35. {field: 'referral_list', title: '链接列表', formatter: Controller.api.referral_list, operate: false},
  36. {field: 'referral_ids', title: __('Referral_ids'), visible: false, operate: false},
  37. {
  38. field: 'short_url_type',
  39. title: __('Short_url_type'),
  40. visible: false,
  41. searchList: {
  42. "short_url_type 1": __('Short_url_type 1'),
  43. "short_url_type 2": __('Short_url_type 2')
  44. }, operate: false
  45. },
  46. {field: 'short_url_type_text', title: __('Short_url_type'), operate: false},
  47. {field: 'push_json', title: __('Push_json'), formatter: Controller.api.push_json, operate: false},
  48. {
  49. field: 'state',
  50. title: __('State'),
  51. visible: false,
  52. searchList: {"state 0": __('State 0'), "state 1": __('State 1')}, operate: false
  53. },
  54. {field: 'state_text', title: __('State'), operate: false},
  55. {
  56. field: 'createtime',
  57. title: __('Createtime'),
  58. operate: 'RANGE',
  59. addclass: 'datetimerange',
  60. formatter: Table.api.formatter.datetime
  61. },
  62. {
  63. field: 'updatetime',
  64. title: __('Updatetime'),
  65. visible: false,
  66. operate: false,
  67. addclass: 'datetimerange',
  68. formatter: Table.api.formatter.datetime
  69. },
  70. {
  71. field: 'copy',
  72. title: '复制',
  73. formatter: Controller.api.copy,
  74. operate: false
  75. },
  76. {
  77. field: 'push',
  78. title: '推送',
  79. visible: (Config.group == 3),
  80. formatter: Controller.api.push,
  81. operate: false
  82. },
  83. {
  84. field: 'operate',
  85. title: __('Operate'),
  86. table: table,
  87. events: Table.api.events.operate,
  88. formatter: Table.api.formatter.operate
  89. }
  90. ]
  91. ],
  92. exportOptions: {
  93. type: 'excel',
  94. fileName:'推广链接多条',
  95. ignoreColumn: [0,1,10,11,12],
  96. onMsoNumberFormat: function(cell, row, col) {
  97. return (row > 0 && col == 1) ? '\\@' : '';
  98. }}
  99. });
  100. // 为表格绑定事件
  101. Table.api.bindevent(table);
  102. var clipboard = new Clipboard('.many_index_copy', {
  103. target: function (trigger) {
  104. var stxt = trigger.getAttribute('data-copy-html');
  105. trigger = document.querySelector('#many_copy_dom');
  106. $('#many_copy_dom').html(decodeURIComponent(stxt));
  107. return trigger;
  108. }
  109. });
  110. clipboard.on('success',function (data) {
  111. Toastr.success('复制成功');
  112. }).on('error',function (data) {
  113. Toastr.error('复制失败');
  114. });
  115. // 弹窗绑定
  116. $(document).on('click','.layer-open',function () {
  117. Fast.api.open($(this).attr('href'), $(this).attr('title'), {});
  118. return false;
  119. })
  120. },
  121. add: function () {
  122. Controller.api.bindevent();
  123. },
  124. edit: function () {
  125. Controller.api.bindevent();
  126. },
  127. push: function () {
  128. Controller.api.bindevent();
  129. },
  130. api: {
  131. bindevent: function () {
  132. Form.api.bindevent($("form[role=form]"));
  133. //弹出选择
  134. $(document).on('click', '.img_txt_add_but', function () {
  135. Fast.api.open('referral/referral/select', '选择', {
  136. callback: function (data) {
  137. var sVal = $('#group-type-' + getListType() + ' input').val();
  138. var sid = sVal;
  139. var sids = ',' + sVal;
  140. for (var i = 0; i < data.length; i++) {
  141. var ssut = '书城首页';
  142. if (data[i]['type'] == 1 || data[i]['type'] == 3) {
  143. ssut = data[i]['book']['title'] ? data[i]['book']['title']:data[i]['book']['name'];
  144. }
  145. if (sids.indexOf(',' + data[i]['id'] + ',') < 0) {
  146. var sLi = '<div class="img_txt_one img_txt_main" url_id="' + data[i]['id'] + '">\
  147. <i class="fa fa-trash img_txt_edit_tit" title="删除"></i>\
  148. <div class="img_txt_one_tit">\
  149. <div class="img_txt_one_h3"><p>' + ssut + '</p></div>\
  150. <a href="javascript:;">' + data[i]["short_url_" + getListType()] + '</a>\
  151. </div>\
  152. </div>';
  153. $('#group-type-' + getListType() + ' .img_txt_list').append($(sLi));
  154. sid += data[i]['id'] + ',';
  155. }
  156. }
  157. $('#group-type-' + getListType() + ' input').val(sid);
  158. }
  159. });
  160. });
  161. /**
  162. * 获取当前选中的类型
  163. */
  164. function getListType() {
  165. if ($("#add-form")[0]['row[short_url_type]'].value == 1) {
  166. return 'qq';
  167. } else {
  168. return 'weibo';
  169. }
  170. }
  171. /**
  172. * 资源类型管理
  173. */
  174. $(document).on('click', "input[name='row[short_url_type]']", function () {
  175. var type = $(this).attr('sval');
  176. $('.group-type').addClass('hide');
  177. $('.group-type input').attr('disabled', '');
  178. $('#group-type-' + type).removeClass('hide');
  179. $('#group-type-' + type + ' input').removeAttr('disabled');
  180. });
  181. //删除短链接
  182. $(document).on('click', '.img_txt_main i', function () {
  183. var $this = $(this);
  184. var sId = $this.parent().attr('url_id') + ',';
  185. var sval = $('#group-type-' + getListType() + ' input').val();
  186. sval = sval.replace(sId, '');
  187. $this.parent().remove();
  188. $('#group-type-' + getListType() + ' input').val(sval);
  189. });
  190. var clipboard = new Clipboard('.many_copy', {
  191. target: function(trigger) {
  192. trigger = document.querySelector('#many_copy_dom');
  193. var stit = $('#title').val() + '<br><br>';
  194. var $li = $('#group-type-' + getListType() + ' .img_txt_list .img_txt_one');
  195. var stxt = stit;
  196. if ($('#title').val().length <= 0) {
  197. Toastr.error('标题不能为空');
  198. return trigger;
  199. }
  200. if ($li.length <= 0) {
  201. Toastr.error('请添加推广短链接');
  202. return trigger;
  203. }
  204. for (var i = 0; i < $li.length; i++) {
  205. stxt += $li.eq(i).find('p').text() + '<br>';
  206. stxt += '<a href="' + $li.eq(i).find('a').text() + '">' + $li.eq(i).find('a').text() + '</a><br>';
  207. }
  208. $('#many_copy_dom').html(stxt);
  209. Toastr.success('复制成功');
  210. return trigger;
  211. }
  212. });
  213. clipboard.on('error',function (data) {
  214. Toastr.error('复制失败');
  215. })
  216. },
  217. referral_book_name: function (value, row, index) {
  218. var html = [];
  219. var str = '';
  220. value = row.referral_list;
  221. for (i in value) {
  222. if (value[i].type == 1 || value[i].type == 3) {
  223. str = value[i].book.name;
  224. } else {
  225. str = '书城首页';
  226. }
  227. html.push(str);
  228. }
  229. return html.join('<br>');
  230. },
  231. referral_title: function (value, row, index) {
  232. var html = [];
  233. var str = '';
  234. value = row.referral_list;
  235. for (i in value) {
  236. if (value[i].type == 1 || value[i].type == 3) {
  237. str = value[i].book.title ? value[i].book.title : value[i].book.name;
  238. str = str.substr(0, 12);
  239. } else {
  240. str = '书城首页';
  241. }
  242. html.push(str);
  243. }
  244. return html.join('<br>');
  245. },
  246. referral_list: function (value, row, index) {
  247. var html = [];
  248. var str = '';
  249. for (i in value) {
  250. // if (value[i].type == 1) {
  251. // str = '<i style="color: blue;">'+value[i].book.name+'</i>';
  252. // if(value[i].book.title){
  253. // str = str + ' ' + value[i].book.title;
  254. // }
  255. // } else {
  256. // str = '书城首页';
  257. // }
  258. if(Config.open_wechat_share == 1){
  259. str = value[i].skin_url;
  260. }else{
  261. if (row.short_url_type == 1) {
  262. // str = str + '&nbsp;&nbsp;' + value[i].short_url_qq;
  263. str = value[i].short_url_qq;
  264. } else {
  265. // str = str + '&nbsp;&nbsp;' + value[i].short_url_weibo;
  266. str = value[i].short_url_weibo;
  267. }
  268. }
  269. html.push(str);
  270. }
  271. return html.join('<br>');
  272. },
  273. push_json: function (value, row, index) {
  274. if (!value) {
  275. return '无';
  276. }
  277. var html = [];
  278. for (i in value) {
  279. html.push((html.length ? '<br>' : '') + '时间:&nbsp;' + value[i].time);
  280. str = '推送代理:&nbsp;';
  281. agentNames = [];
  282. for (n in value[i].agent_list) {
  283. agentNames.push(value[i].agent_list[n].nickname);
  284. }
  285. str = str + agentNames.join('、');
  286. html.push(str);
  287. }
  288. return html.join('<br>');
  289. },
  290. copy: function (value, row, index) {
  291. var html = [];
  292. html.push(row.title);
  293. html.push('<br>');
  294. for (i in row.referral_list) {
  295. if (row.referral_list[i].type == 1 || row.referral_list[i].type == 3) {
  296. html.push(row.referral_list[i].book.title ? row.referral_list[i].book.title : row.referral_list[i].book.name);
  297. } else {
  298. html.push('书城首页');
  299. }
  300. if(Config.open_wechat_share == 1){
  301. html.push('<a href="' + ( row.referral_list[i].skin_url) + '">' + ( row.referral_list[i].skin_url) + '</a>');
  302. }else {
  303. html.push('<a href="' + (row.short_url_type == 1 ? row.referral_list[i].short_url_qq : row.referral_list[i].short_url_weibo) + '">' + (row.short_url_type == 1 ? row.referral_list[i].short_url_qq : row.referral_list[i].short_url_weibo) + '</a>');
  304. }
  305. }
  306. return '<a href="javascript:;" class="btn btn-xs btn-primary many_index_copy" title="复制链接列表" data-copy-html="' + encodeURIComponent(html.join('<br>')) + '"><i class="fa fa-copy"></i> 复制</a>';
  307. },
  308. push: function (value, row, index) {
  309. html = [];
  310. html.push('<a href="/admin/referral/many/push?id=' + row.id + '" class="layer-open btn btn-xs btn-warning" data-toggle="tooltip" title="推送给代理">推送</a>');
  311. return html.join('&nbsp;&nbsp;');
  312. }
  313. }
  314. };
  315. return Controller;
  316. });