live.js 13 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280
  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: 'shopro/app/live/index' + location.search,
  8. add_url: 'shopro/app/live/add',
  9. edit_url: 'shopro/app/live/edit',
  10. detail_url: 'shopro/app/live/detail',
  11. del_url: 'shopro/app/live/del',
  12. multi_url: 'shopro/app/live/multi',
  13. table: 'shopro_live',
  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')},
  26. {field: 'name', title: __('Name')},
  27. {field: 'room_id', title: __('Room_id')},
  28. {field: 'live_status', title: __('Live_status'), searchList: {"101":__('Live_status 101'),"102":__('Live_status 102'),"103":__('Live_status 103'),"104":__('Live_status 104'),"105":__('Live_status 105'),"106":__('Live_status 106'),"107":__('Live_status 107')}, formatter: Table.api.formatter.status},
  29. {field: 'starttime', title: __('Starttime'), operate:'RANGE', addclass:'datetimerange', formatter: Table.api.formatter.datetime},
  30. {field: 'endtime', title: __('Endtime'), operate:'RANGE', addclass:'datetimerange', formatter: Table.api.formatter.datetime},
  31. {field: 'anchor_name', title: __('Anchor_name')},
  32. {field: 'share_img', title: __('Share_img'),events: Table.api.events.image,formatter: Table.api.formatter.image},
  33. {field: 'createtime', title: __('Createtime'), operate:'RANGE', addclass:'datetimerange', formatter: Table.api.formatter.datetime},
  34. {field: 'updatetime', title: __('Updatetime'), operate:'RANGE', addclass:'datetimerange', formatter: Table.api.formatter.datetime},
  35. {
  36. field: 'buttons',
  37. width: "120px",
  38. title: '操作',
  39. table: table,
  40. operate: false,
  41. buttons: [
  42. {
  43. name: 'status',
  44. title: '直播详情',
  45. text: '查看详情',
  46. classname: 'btn btn-xs btn-info btn-dialog',
  47. extend: 'data-area=\'["100%", "100%"]\'',
  48. url: function (row) {
  49. return 'shopro/app/live/detail?ids=' + row.id
  50. },
  51. success: function (data, ret) {
  52. Layer.alert(ret.msg + ",返回数据:" + JSON.stringify(data));
  53. },
  54. error: function (data, ret) {
  55. Layer.alert(ret.msg);
  56. return false;
  57. }
  58. },
  59. ],
  60. formatter: Table.api.formatter.buttons
  61. },
  62. ]
  63. ]
  64. });
  65. // 为表格绑定事件
  66. Table.api.bindevent(table);
  67. $("#refreshStatus").click(function(){
  68. Fast.api.ajax({
  69. url: 'shopro/app/live/syncLive',
  70. loading: true,
  71. data: {}
  72. }, function (ret, res) {
  73. setTimeout(function() {
  74. $(".btn-refresh").click()
  75. }, 1000);
  76. })
  77. })
  78. },
  79. detail: function () {
  80. Controller.api.bindevent();
  81. },
  82. select: function () {
  83. // 初始化表格参数配置
  84. Table.api.init({
  85. extend: {
  86. index_url: 'shopro/app/live/index',
  87. }
  88. });
  89. var idArr = [];
  90. var selectArr = [];
  91. var table = $("#table");
  92. table.on('check.bs.table uncheck.bs.table check-all.bs.table uncheck-all.bs.table', function (e, row) {
  93. if (e.type == 'check' || e.type == 'uncheck') {
  94. row = [row];
  95. } else {
  96. idArr = [];
  97. selectArr = [];
  98. }
  99. $.each(row, function (i, j) {
  100. if (e.type.indexOf("uncheck") > -1) {
  101. var index = idArr.indexOf(j.id);
  102. if (index > -1) {
  103. idArr.splice(index, 1);
  104. }
  105. if (indexall > -1) {
  106. selectArr.splice(index, 1);
  107. }
  108. } else {
  109. idArr.indexOf(j.url) == -1 && idArr.push(j.id);
  110. selectArr.indexOf(j) == -1 && selectArr.push(j);
  111. }
  112. });
  113. });
  114. // 初始化表格
  115. table.bootstrapTable({
  116. url: $.fn.bootstrapTable.defaults.extend.index_url,
  117. sortName: 'id',
  118. showToggle: false,
  119. showExport: false,
  120. columns: [
  121. [
  122. {checkbox: true},
  123. {field: 'id', title: __('Id')},
  124. {field: 'name', title: __('Name')},
  125. {field: 'room_id', title: __('Room_id')},
  126. {field: 'live_status', title: __('Live_status'), searchList: {"101":__('Live_status 101'),"102":__('Live_status 102'),"103":__('Live_status 103'),"104":__('Live_status 104'),"105":__('Live_status 105'),"106":__('Live_status 106'),"107":__('Live_status 107')}, formatter: Table.api.formatter.status},
  127. {field: 'starttime', title: __('Starttime'), operate:'RANGE', addclass:'datetimerange', formatter: Table.api.formatter.datetime},
  128. {field: 'endtime', title: __('Endtime'), operate:'RANGE', addclass:'datetimerange', formatter: Table.api.formatter.datetime},
  129. {field: 'anchor_name', title: __('Anchor_name')},
  130. {field: 'share_img', title: __('Share_img'),events: Table.api.events.image,formatter: Table.api.formatter.image},
  131. {field: 'createtime', title: __('Createtime'), operate:'RANGE', addclass:'datetimerange', formatter: Table.api.formatter.datetime},
  132. {field: 'updatetime', title: __('Updatetime'), operate:'RANGE', addclass:'datetimerange', formatter: Table.api.formatter.datetime},
  133. {
  134. field: 'operate', title: __('Operate'), events: {
  135. 'click .btn-chooseone': function (e, value, row, index) {
  136. var multiple = Backend.api.query('multiple');
  137. multiple = multiple == 'true' ? true : false;
  138. row.ids=row.id.toString()
  139. Fast.api.close({data: row, multiple: multiple});
  140. },
  141. }, formatter: function () {
  142. return '<a href="javascript:;" class="btn btn-danger btn-chooseone btn-xs"><i class="fa fa-check"></i> ' + __('Choose') + '</a>';
  143. }
  144. }
  145. ]
  146. ]
  147. });
  148. // 选中多个
  149. $(document).on("click", ".btn-choose-multi", function () {
  150. if (Backend.api.query('type') == 'decorate') {
  151. var multiple = Backend.api.query('multiple');
  152. multiple = multiple == 'true' ? true : false;
  153. Fast.api.close({
  154. data: selectArr,
  155. multiple: multiple
  156. });
  157. } else {
  158. let row = {}
  159. var multiple = Backend.api.query('multiple');
  160. multiple = multiple == 'true' ? true : false;
  161. row.ids = idArr.join(",")
  162. Fast.api.close({
  163. data: row,
  164. multiple: multiple
  165. });
  166. }
  167. // var multiple = Backend.api.query('multiple');
  168. // multiple = multiple == 'true' ? true : false;
  169. // let row={}
  170. // row.ids=idArr.join(",")
  171. // Fast.api.close({data: row, multiple: multiple});
  172. });
  173. // 为表格绑定事件
  174. Table.api.bindevent(table);
  175. //绑定TAB事件
  176. $('a[data-toggle="tab"]').on('shown.bs.tab', function (e) {
  177. var typeStr = $(this).attr("href").replace('#', '');
  178. var options = table.bootstrapTable('getOptions');
  179. options.pageNumber = 1;
  180. options.queryParams = function (params) {
  181. params.type = typeStr;
  182. return params;
  183. };
  184. table.bootstrapTable('refresh', {});
  185. return false;
  186. });
  187. require(['upload'], function (Upload) {
  188. Upload.api.plupload($("#toolbar .plupload"), function () {
  189. $(".btn-refresh").trigger("click");
  190. });
  191. });
  192. },
  193. recyclebin: function () {
  194. // 初始化表格参数配置
  195. Table.api.init({
  196. extend: {
  197. 'dragsort_url': ''
  198. }
  199. });
  200. var table = $("#table");
  201. // 初始化表格
  202. table.bootstrapTable({
  203. url: 'shopro/app/live/recyclebin' + location.search,
  204. pk: 'id',
  205. sortName: 'id',
  206. columns: [
  207. [
  208. {checkbox: true},
  209. {field: 'id', title: __('Id')},
  210. {field: 'name', title: __('Name'), align: 'left'},
  211. {
  212. field: 'deletetime',
  213. title: __('Deletetime'),
  214. operate: 'RANGE',
  215. addclass: 'datetimerange',
  216. formatter: Table.api.formatter.datetime
  217. },
  218. {
  219. field: 'operate',
  220. width: '130px',
  221. title: __('Operate'),
  222. table: table,
  223. events: Table.api.events.operate,
  224. buttons: [
  225. {
  226. name: 'Restore',
  227. text: __('Restore'),
  228. classname: 'btn btn-xs btn-info btn-ajax btn-restoreit',
  229. icon: 'fa fa-rotate-left',
  230. url: 'shopro/app/live/restore',
  231. refresh: true
  232. },
  233. {
  234. name: 'Destroy',
  235. text: __('Destroy'),
  236. classname: 'btn btn-xs btn-danger btn-ajax btn-destroyit',
  237. icon: 'fa fa-times',
  238. url: 'shopro/app/live/destroy',
  239. refresh: true
  240. }
  241. ],
  242. formatter: Table.api.formatter.operate
  243. }
  244. ]
  245. ]
  246. });
  247. // 为表格绑定事件
  248. Table.api.bindevent(table);
  249. },
  250. add: function () {
  251. Controller.api.bindevent();
  252. },
  253. edit: function () {
  254. Controller.api.bindevent();
  255. },
  256. api: {
  257. bindevent: function () {
  258. Form.api.bindevent($("form[role=form]"));
  259. }
  260. }
  261. };
  262. return Controller;
  263. });