group.js 23 KB

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