group.js 20 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446
  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/user/group/index',
  8. add_url: 'send/user/group/add',
  9. edit_url: 'send/user/group/edit',
  10. del_url: 'send/user/group/del',
  11. multi_url: 'send/user/group/multi',
  12. table: 'send_user_group',
  13. }
  14. });
  15. var table = $("#table");
  16. // 初始化表格
  17. table.bootstrapTable({
  18. url: $.fn.bootstrapTable.defaults.extend.index_url,
  19. pk: 'id',
  20. sortName: 'id',
  21. search:false,
  22. columns: [
  23. [
  24. {checkbox: true},
  25. {field: 'id', title: __('ID'), operate:false},
  26. {field: 'group_name', title: __('Group_name'), operate:'LIKE'},
  27. {field: 'group_type', title: __('Group_type'), visible:false, operate:false},
  28. {field: 'user_ids', title: __('User_ids'), visible:false, operate:false},
  29. {field: 'user_json', title: __('User_json'), visible:false, operate:false},
  30. {
  31. field: 'status',
  32. title: __('Status'),
  33. searchList: {'0': '失效', '1': '有效'},
  34. formatter: function (value, row, index) {
  35. var html = '';
  36. if(row.status){
  37. html += '<span>有效</span>';
  38. }else{
  39. html += '<span style="color: red">失效</span>';
  40. }
  41. return html;
  42. }
  43. },
  44. {field: 'is_del', title: __('Is_del'), visible:false, operate:false},
  45. {field: 'createtime', title: __('Createtime'), operate:false, addclass:'datetimerange', formatter: Table.api.formatter.datetime},
  46. {field: 'updatetime', title: __('Updatetime'), operate:false, addclass:'datetimerange', visible:false, formatter: Table.api.formatter.datetime},
  47. {
  48. field: 'operate',
  49. title: __('Operate'),
  50. table: table,
  51. events: Table.api.events.operate,
  52. formatter: function (value, row, index) {
  53. var html = '';
  54. html += '<a style="margin-right: 2%" href="/admin/send/user/group/detail/ids/'+ row.id +'" class="btn btn-xs btn-success btn-detail">详情</a>';
  55. if (row.status) {
  56. html += '<a href="javascript:;" data-id="' + row.id + '" data-status="' + row.status + '" class="btn btn-xs btn-danger btn-lapse">失效</a>&nbsp;&nbsp;';
  57. } else {
  58. html += '<a href="javascript:;" data-id="' + row.id + '" data-status="' + row.status + '" class="btn btn-xs btn-success btn-lapse">有效</a>&nbsp;&nbsp;';
  59. }
  60. html += '<a href="/admin/send/user/group/edit/ids/'+ row.id +'" class="btn btn-xs btn-success btn-editone" title="" data-table-id="table" data-field-index="8" data-row-index="0" data-button-index="1"><i class="fa fa-pencil"></i></a>';
  61. html += '<a href="javascript:;" class="btn btn-xs btn-danger btn-delone" data-table-id="table"><i class="fa fa-trash"></i></a>';
  62. return html;
  63. }
  64. }
  65. ]
  66. ]
  67. });
  68. // 为表格绑定事件
  69. Table.api.bindevent(table);
  70. //btn-detail
  71. $(document).on('click','.btn-detail',function () {
  72. Fast.api.open($(this).attr('href'), '详情', {});
  73. return false;
  74. });
  75. // 失效 | 有效
  76. $(document).on('click','.btn-lapse',function(){
  77. var group_id = $(this).data('id');
  78. var group_status = $(this).data('status');
  79. var status_text = '确定要失效处理吗?';
  80. if (!group_status) {
  81. status_text = '确定要设置为有效吗?';
  82. }
  83. Layer.confirm(status_text, function (idx) {
  84. $.post(
  85. 'send/user/group/ajaxvalidate',
  86. {
  87. 'ids': group_id
  88. },
  89. function (data) {
  90. Layer.close(idx);
  91. window.location.reload();
  92. }
  93. );
  94. });
  95. });
  96. //生效
  97. $('.btn-validbatch').on('click', function () {
  98. var ids = Table.api.selectedids(table);
  99. Layer.confirm(
  100. '确定要把选中的' + ids.length + '项改为生效吗?',
  101. { icon: 3, title: __('Warning'), offset: 0, shadeClose: true },
  102. function () {
  103. $.ajax({
  104. url: 'send/user/group/validbatch',
  105. type: "post",
  106. data: {
  107. ids: ids,
  108. status: 1
  109. },
  110. success: function () {
  111. layer.msg('操作成功');
  112. table.bootstrapTable('refresh');
  113. }
  114. });
  115. }
  116. );
  117. });
  118. //失效
  119. $('.btn-invalidbatch').on('click', function () {
  120. var ids = Table.api.selectedids(table);
  121. Layer.confirm(
  122. '确定要把选中的' + ids.length + '项改为失效吗?',
  123. { icon: 3, title: __('Warning'), offset: 0, shadeClose: true },
  124. function () {
  125. $.ajax({
  126. url: 'send/user/group/validbatch',
  127. type: "post",
  128. data: {
  129. ids: ids,
  130. status: 0
  131. },
  132. success: function () {
  133. layer.msg('操作成功');
  134. table.bootstrapTable('refresh');
  135. }
  136. });
  137. }
  138. );
  139. });
  140. },
  141. add: function () {
  142. Controller.api.bindevent();
  143. require(['upload'], function (Upload) {
  144. Upload.api.plupload($("#btn-stock-file"), function (data, ret) {
  145. Fast.api.ajax({
  146. url: '/admin/send/user/group/idimport',
  147. data: {file: data.url},
  148. }, function (data, ret) {
  149. var user_ids = $("#c-user_ids").val();
  150. user_ids = user_ids + ',' + data;
  151. $("#c-user_ids").val(user_ids);
  152. //table1.bootstrapTable('refresh');
  153. },function (data, ret) {
  154. var user_ids = $("#c-user_ids").val();
  155. user_ids = user_ids + ',' + data;
  156. $("#c-user_ids").val(user_ids);
  157. });
  158. });
  159. });
  160. },
  161. edit: function () {
  162. Controller.api.bindevent();
  163. require(['upload'], function (Upload) {
  164. Upload.api.plupload($("#btn-stock-file"), function (data, ret) {
  165. Fast.api.ajax({
  166. url: '/admin/send/user/group/idimport',
  167. data: {file: data.url},
  168. }, function (data, ret) {
  169. var user_ids = $("#c-user_ids").val();
  170. user_ids = user_ids + ',' + data;
  171. $("#c-user_ids").val(user_ids);
  172. //table1.bootstrapTable('refresh');
  173. },function (data, ret) {
  174. var user_ids = $("#c-user_ids").val();
  175. user_ids = user_ids + ',' + data;
  176. $("#c-user_ids").val(user_ids);
  177. });
  178. });
  179. });
  180. },
  181. ajaxcategoryslect: function () {
  182. // 初始化表格参数配置
  183. Table.api.init({
  184. extend: {
  185. index_url: 'send/user/group/ajaxcategoryslect',
  186. },
  187. showColumns:false,
  188. showToggle:false,
  189. showExport:false,
  190. searchFormVisible: true,
  191. search:false,
  192. });
  193. var table = $("#table");
  194. // 初始化表格
  195. table.bootstrapTable({
  196. url: $.fn.bootstrapTable.defaults.extend.index_url,
  197. sortName: 'idx',
  198. columns: [
  199. [
  200. {checkbox: true},
  201. {field: 'id', title: 'ID',operate:false},
  202. {field: 'sex', title:'频道',formatter:Controller.api.formatter.sex_text,searchList:{'1':'男频','2':'女频'}},
  203. {field: 'name', title: '分类名称',operate:'LIKE'},
  204. {field: 'createtime', title: '创建时间',formatter: Table.api.formatter.datetime, operate:false},
  205. {field: 'operate', title: __('Operate'), events: {
  206. 'click .btn-chooseone': function (e, value, row, index) {
  207. Fast.api.close([row]);
  208. },
  209. }, formatter: function () {
  210. return '<a href="javascript:;" class="btn btn-danger btn-chooseone btn-xs"><i class="fa fa-check"></i> ' + __('Choose') + '</a>';
  211. }}
  212. ]
  213. ]
  214. });
  215. // 为表格绑定事件
  216. Table.api.bindevent(table);
  217. //获取选中数据
  218. $(document).on('click', "#btn-chooseone", function () {
  219. var ids = Table.api.selectedids(table);
  220. var senddata = [];
  221. for ( var i = ids.length - 1; i >= 0 ; i-- ) {
  222. sendbefore = [];
  223. sendbefore['id'] = ids[i];
  224. senddata[i]=sendbefore;
  225. }
  226. Fast.api.close(senddata);
  227. });
  228. //批量添加
  229. //btn-choice-list
  230. $('.btn-choice-list').click(function(){
  231. var ids = Table.api.selectedids(table);
  232. var data = [];
  233. $(ids).each(function(idx, value){
  234. data.push(Table.api.getrowdata(table, idx ));
  235. });
  236. Fast.api.close(data)
  237. });
  238. },
  239. api: {
  240. bindevent: function () {
  241. Form.api.bindevent($("form[role=form]"));
  242. //切换选取规则
  243. $(document).on('click', "input[name='row[group_type]']", function () {
  244. var type = $(this).val();
  245. $('.group-type').addClass('hide');
  246. $('.group-type input').attr('disabled');
  247. $('#group-type-' + type).removeClass('hide');
  248. $('#group-type-' + type + ' input').removeAttr('disabled');
  249. });
  250. // 基础属性
  251. $(document).on('click', ".baseTypeClass", function () {
  252. var baseTypeIndex = $(this).data('index');
  253. if ($(this).is(':checked')) {
  254. $("#baseType-" + baseTypeIndex).removeClass('hide');
  255. } else {
  256. $("#baseType-" + baseTypeIndex).addClass('hide');
  257. }
  258. });
  259. // 充值属性
  260. $(document).on('click', ".rechargePropertyClass", function () {
  261. var rechargePropertyIndex = $(this).data('index');
  262. if ($(this).is(':checked')) {
  263. $("#rechargeProperty-" + rechargePropertyIndex).removeClass('hide');
  264. } else {
  265. $("#rechargeProperty-" + rechargePropertyIndex).addClass('hide');
  266. }
  267. });
  268. // 阅读属性
  269. $(document).on('click', ".readPropertyClass", function () {
  270. var readPropertyIndex = $(this).data('index');
  271. if ($(this).is(':checked')) {
  272. $("#readProperty-" + readPropertyIndex).removeClass('hide');
  273. } else {
  274. $("#readProperty-" + readPropertyIndex).addClass('hide');
  275. }
  276. });
  277. // 消费属性
  278. $(document).on('click', ".consumerPropertyClass", function () {
  279. var consumerPropertyIndex = $(this).data('index');
  280. if ($(this).is(':checked')) {
  281. $("#consumerProperty-" + consumerPropertyIndex).removeClass('hide');
  282. } else {
  283. $("#consumerProperty-" + consumerPropertyIndex).addClass('hide');
  284. }
  285. });
  286. var refreshtags = function (data){
  287. Layer.closeAll();
  288. var read_book_categories = $("#hid-read_book_categories").val();
  289. var html = '';
  290. for (var index in data) {
  291. // region
  292. var obj = data[index];
  293. html += '<ul class="ul-item">';
  294. html += '<li class="id">' + (parseInt(index) + 1) + '</li>';
  295. if (obj.sex == '2') {
  296. html += '<li class="z">女频</li>';
  297. } else {
  298. html += '<li class="z">男频</li>';
  299. }
  300. html += '<li class="name">' + obj.name + '</li>';
  301. html += '<li class="d read-category-del" data-id="' + obj.id + '"><span class="li-span-del">删除</span></li>';
  302. html += '</ul>';
  303. read_book_categories = read_book_categories+','+obj.id;
  304. //endregion
  305. }
  306. $(".none-category").addClass('hide');
  307. $(".book-category-selected-list").append(html);
  308. $("#hid-read_book_categories").val(read_book_categories);
  309. setOrder('.book-category-selected-list');
  310. };
  311. var refreshconsumercategory = function (data){
  312. Layer.closeAll();
  313. var consumer_book_categories = $("#hid-consumer_book_categories").val();
  314. var html = '';
  315. for (var index in data) {
  316. // region
  317. var obj = data[index];
  318. html += '<ul class="ul-item">';
  319. html += '<li class="id">' + (parseInt(index) + 1) + '</li>';
  320. if (obj.sex == '2') {
  321. html += '<li class="z">女频</li>';
  322. } else {
  323. html += '<li class="z">男频</li>';
  324. }
  325. html += '<li class="name">' + obj.name + '</li>';
  326. html += '<li class="d consumer-category-del li-del" data-id="' + obj.id + '"><span class="li-span-del">删除</span></li>';
  327. html += '</ul>';
  328. consumer_book_categories = consumer_book_categories + ',' + obj.id;
  329. // endregion
  330. }
  331. $(".none-consumer-category").addClass('hide');
  332. $(".book-consumer-category-selected-list").append(html);
  333. $("#hid-consumer_book_categories").val(consumer_book_categories);
  334. setOrder('.book-consumer-category-selected-list');
  335. };
  336. var refreshBook = function (data) {
  337. Layer.closeAll();
  338. $('#c-book_id').val(data[0].id);
  339. };
  340. //阅读属性-阅读书籍分类
  341. $(document).on('click', "#select-readbooks", function () {
  342. parent.Backend.api.open($(this).attr("href") + "?action=book", __('Select'), {callback: refreshtags});
  343. return false;
  344. });
  345. //消费属性-阅读书籍分类
  346. $(document).on('click', "#select-consumer_book_category", function () {
  347. parent.Backend.api.open($(this).attr("href") + "?action=book", __('Select'), {callback: refreshconsumercategory});
  348. return false;
  349. });
  350. //选择书籍
  351. $(document).on('click', "#select-resources", function () {
  352. parent.Backend.api.open($(this).attr("href") + "?action=book", __('Select'), {callback: refreshBook});
  353. return false;
  354. });
  355. // 对li 排序
  356. function setOrder(class_name){
  357. $(class_name).find('.ul-item').each(function(index, item){
  358. var index = $(item).index() - 1;
  359. $(item).find('li').eq(0).text(index);
  360. });
  361. }
  362. // 阅读书籍分类 - 删除
  363. $(document).on('click', ".read-category-del", function () {
  364. var hid_category_str = $("#hid-read_book_categories").val();
  365. var hid_category_arr = hid_category_str.split(',');
  366. var target_id = $(this).data('id');
  367. var new_category_str = '';
  368. $.each(hid_category_arr, function(index, j){
  369. if(j != target_id) {
  370. new_category_str += j + ',';
  371. }
  372. });
  373. $(this).parent('ul').remove();
  374. $("#hid-read_book_categories").val(new_category_str);
  375. setOrder('.book-category-selected-list');
  376. });
  377. // 消费书籍分类 - 删除
  378. $(document).on('click', ".consumer-category-del", function () {
  379. console.log('aaa');
  380. var hid_category_str = $("#hid-consumer_book_categories").val();
  381. var hid_category_arr = hid_category_str.split(',');
  382. var target_id = $(this).data('id');
  383. var new_category_str = '';
  384. $.each(hid_category_arr, function(index, j){
  385. if(j != target_id) {
  386. new_category_str += j + ',';
  387. }
  388. });
  389. $(this).parent('ul').remove();
  390. $("#hid-consumer_book_categories").val(new_category_str);
  391. setOrder('.book-consumer-category-selected-list');
  392. });
  393. },
  394. formatter: {
  395. sex_text: function(value,row,index){
  396. if(row.sex == '2'){
  397. return '女频';
  398. }else{
  399. return '男频';
  400. }
  401. },
  402. status_text: function(value,row,index){
  403. if(row.status){
  404. return '有效';
  405. }else{
  406. return '失效';
  407. }
  408. },
  409. },
  410. }
  411. };
  412. return Controller;
  413. });