fauser.js 17 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333
  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: 'qingdongams/synchronizate/fauser/index',
  8. table: 'fauser',
  9. }
  10. });
  11. var table = $("#table");
  12. // 初始化表格
  13. table.bootstrapTable({
  14. url: $.fn.bootstrapTable.defaults.extend.index_url,
  15. pk: 'id',
  16. sortName: 'user.id',
  17. columns: [
  18. [
  19. {checkbox: true,formatter: function (value, row, index) {
  20. if (row.user_status == 0) {
  21. return {
  22. disabled: false,
  23. };
  24. } else {
  25. return {
  26. disabled: true,
  27. }
  28. }
  29. }},
  30. {field: 'username', title: __('Username'), operate: 'LIKE'},
  31. {field: 'nickname', title: __('Nickname'), operate: 'LIKE'},
  32. {field: 'email', title: __('Email'), operate: 'LIKE'},
  33. {field: 'mobile', title: __('手机号'), operate: 'LIKE'},
  34. {field: 'avatar', title: __('头像'), events: Table.api.events.image, formatter: Table.api.formatter.image, operate: false},
  35. {field: 'level', title: __('级别'), operate: 'BETWEEN', sortable: true},
  36. {field: 'user_status', title: __('状态'), formatter: Table.api.formatter.status, searchList: {0: __('未同步'), 1: __('已同步')}, operate: false},
  37. {field: 'operate', title: __('Operate'), table: table, events: Table.api.events.operate, formatter: Table.api.formatter.buttons,
  38. buttons: [
  39. {
  40. name: 'detail',
  41. text: __('同步'),
  42. title: __('同步'),
  43. classname: 'records btn-dialog',
  44. extend:'data-area=["90%","90%"]',
  45. url: 'qingdongams/synchronizate/fauser/edit',
  46. visible: function (row) {
  47. if(row.user_status == 1){
  48. return false;
  49. }
  50. //返回true时按钮显示,返回false隐藏
  51. return true;
  52. }
  53. }
  54. ]
  55. } ]
  56. ]
  57. });
  58. //批量操作
  59. $(document).on("click", ".batch", function () {
  60. var ids = Table.api.selectedids(table);
  61. var page = table.bootstrapTable('getData');
  62. var all = table.bootstrapTable('getOptions').totalRows;
  63. Layer.confirm("请选择同步的选项", {
  64. title : '批量同步',
  65. btn : ["选中项(" + ids.length + "条)", "全部(" + all + "条)"],
  66. success : function (layero, index) {
  67. $(".layui-layer-btn a", layero).addClass("layui-layer-btn0");
  68. }
  69. , yes : function (index, layero) {
  70. if (ids.length == 0) {
  71. Layer.alert('数据为空');
  72. return true;
  73. }
  74. Fast.api.open('qingdongams/synchronizate/fauser/batch?type=1&id='+ids.join(","), '批量同步', {
  75. callback:function(value){
  76. },
  77. area:['80%', '80%']
  78. });
  79. Layer.close(index);
  80. return true;
  81. }
  82. ,
  83. btn2 : function (index, layero) {
  84. Fast.api.open('qingdongams/synchronizate/fauser/batch?type=2&id='+ids.join(","), '批量同步', {
  85. callback:function(value){
  86. },
  87. area:['80%', '80%']
  88. });
  89. Layer.close(index);
  90. return true;
  91. }
  92. })
  93. });
  94. // 为表格绑定事件
  95. Table.api.bindevent(table);
  96. },
  97. edit: function () {
  98. $(document).on('change', "input[name='row[types]']", function() {
  99. var type = $(this).val();
  100. $('#type').val(type)
  101. var params = {type:type};
  102. if(type == 1){
  103. $('.qd_th').html('线索字段名称');
  104. }else{
  105. $('.qd_th').html('客户字段名称');
  106. }
  107. //来源
  108. $.ajax({url:"qingdongams/synchronizate/fauser/source",data:params,success:function(result){
  109. if(result.code == 1){
  110. var data = result.data;
  111. var length = data.length;
  112. var html='';
  113. for(var i=0;i<length;i++){
  114. html +='<option value="'+data[i]+'">'+data[i]+'</option>';
  115. }
  116. $('select.sources').html(html);
  117. $(".selectpicker").selectpicker('refresh');
  118. }
  119. }});
  120. var parent = $('#num').val();
  121. $.ajax({url:"qingdongams/synchronizate/fauser/fieldinfo",data:params,success:function(result){
  122. if(result.code == 1){
  123. var data = result.data;
  124. var length = data.length;
  125. var html ='<option value="" style="text-align: center;text-align-last: center;direction: rtl;">无</option>';
  126. for(var i=0;i<length;i++){
  127. html +='<option data-id="'+parent+'" value="'+data[i].id+'">'+data[i].config.label+'</option>';
  128. }
  129. for(var i=0;i<20;i++){
  130. $('select.customerinfo_'+i).html(html);
  131. $(".selectpicker").selectpicker('refresh');
  132. }
  133. }
  134. }});
  135. });
  136. $(document).on('click', ".qd_append", function() {
  137. var num = $('#num').val();
  138. var parent = parseInt(num)+parseInt(1);
  139. $('#num').val(parent);
  140. var info = '<tr class="qd_tr_'+parent+'" style="">\n' +
  141. ' <td style="text-align: center; vertical-align: middle;text-align-last: center; ">\n' +
  142. ' <select name="" data-id="'+parent+'" class="form-control userinfo_'+parent+' selectpicker userinfos" >\n' +
  143. ' </select>\n' +
  144. ' </td>\n' +
  145. ' <td style="text-align: center; vertical-align: middle;text-align-last: center; ">\n' +
  146. ' <select name="" data-id="'+parent+'" class="form-control customerinfo_'+parent+' selectpicker customerinfos" >\n' +
  147. ' </select>\n' +
  148. ' </td>\n' +
  149. ' <td style="text-align: center; vertical-align: middle;text-align-last: center; ">\n' +
  150. ' <button type="button" data-id="'+parent+'" class="btn btn-danger qd_del">删除</button>\n' +
  151. ' </td>\n' +
  152. ' </tr>';
  153. $('.qd_tr').append(info);
  154. var type = $("input[name='row[type]']").val();
  155. var params = {type:type};
  156. //自定义客户线索
  157. $.ajax({url:"qingdongams/synchronizate/fauser/fieldinfo",data:params,success:function(result){
  158. if(result.code == 1){
  159. var data = result.data;
  160. var length = data.length;
  161. var html ='<option value="" style="text-align: center;text-align-last: center;direction: rtl;">无</option>';
  162. for(var i=0;i<length;i++){
  163. html +='<option data-id="'+parent+'" value="'+data[i].id+'">'+data[i].config.label+'</option>';
  164. }
  165. $('select.customerinfo_'+parent).html(html);
  166. $(".selectpicker").selectpicker('refresh');
  167. }
  168. }});
  169. //自定义会员
  170. $.ajax({url:"qingdongams/synchronizate/fauser/fielduser",data:'',success:function(result){
  171. if(result.code == 1){
  172. var datas = result.data;
  173. var lengths = datas.length;
  174. var userhtml ='<option value="" style="text-align: center;text-align-last: center;direction: rtl;">无</option>';
  175. for(var i=0;i<lengths;i++){
  176. userhtml +='<option data-id="'+parent+'" value="'+datas[i].key+'">'+datas[i].value+'</option>';
  177. }
  178. $('select.userinfo_'+parent).html(userhtml);
  179. $(".selectpicker").selectpicker('refresh');
  180. }
  181. }});
  182. });
  183. $(document).on('click', ".qd_del", function() {
  184. var num = $(this).data('id');
  185. $('.qd_tr_'+num).remove()
  186. });
  187. $(document).on('change', ".customerinfos", function() {
  188. var username = $(this).val();
  189. var num = $(this).data('id');
  190. if(username){
  191. $(this).attr('name','rows['+username+'][customer][]');
  192. $('.userinfo_'+num).attr('name','rows['+username+'][user][]');
  193. }
  194. });
  195. Controller.api.bindevent();
  196. },
  197. batch: function () {
  198. $(document).on('change', "input[name='row[types]']", function() {
  199. var type = $(this).val();
  200. $('#type').val(type)
  201. var params = {type:type};
  202. if(type == 1){
  203. $('.qd_th').html('线索字段名称');
  204. }else{
  205. $('.qd_th').html('客户字段名称');
  206. }
  207. //来源
  208. $.ajax({url:"qingdongams/synchronizate/fauser/source",data:params,success:function(result){
  209. if(result.code == 1){
  210. var data = result.data;
  211. var length = data.length;
  212. var html='';
  213. for(var i=0;i<length;i++){
  214. html +='<option value="'+data[i]+'">'+data[i]+'</option>';
  215. }
  216. $('select.sources').html(html);
  217. $(".selectpicker").selectpicker('refresh');
  218. }
  219. }});
  220. var parent = $('#num').val();
  221. $.ajax({url:"qingdongams/synchronizate/fauser/fieldinfo",data:params,success:function(result){
  222. if(result.code == 1){
  223. var data = result.data;
  224. var length = data.length;
  225. var html ='<option value="" style="text-align: center;text-align-last: center;direction: rtl;">无</option>';
  226. for(var i=0;i<length;i++){
  227. html +='<option data-id="'+parent+'" value="'+data[i].id+'">'+data[i].config.label+'</option>';
  228. }
  229. for(var i=0;i<20;i++){
  230. $('select.customerinfo_'+i).html(html);
  231. $(".selectpicker").selectpicker('refresh');
  232. }
  233. }
  234. }});
  235. });
  236. $(document).on('click', ".qd_append", function() {
  237. var num = $('#num').val();
  238. var parent = parseInt(num)+parseInt(1);
  239. $('#num').val(parent);
  240. var info = '<tr class="qd_tr_'+parent+'" style="">\n' +
  241. ' <td style="text-align: center; vertical-align: middle;text-align-last: center; ">\n' +
  242. ' <select name="" data-id="'+parent+'" class="form-control userinfo_'+parent+' selectpicker userinfos" >\n' +
  243. ' </select>\n' +
  244. ' </td>\n' +
  245. ' <td style="text-align: center; vertical-align: middle;text-align-last: center; ">\n' +
  246. ' <select name="" data-id="'+parent+'" class="form-control customerinfo_'+parent+' selectpicker customerinfos" >\n' +
  247. ' </select>\n' +
  248. ' </td>\n' +
  249. ' <td style="text-align: center; vertical-align: middle;text-align-last: center; ">\n' +
  250. ' <button type="button" data-id="'+parent+'" class="btn btn-danger qd_del">删除</button>\n' +
  251. ' </td>\n' +
  252. ' </tr>';
  253. $('.qd_tr').append(info);
  254. var type = $("input[name='row[type]']").val();
  255. var params = {type:type};
  256. //自定义客户线索
  257. $.ajax({url:"qingdongams/synchronizate/fauser/fieldinfo",data:params,success:function(result){
  258. if(result.code == 1){
  259. var data = result.data;
  260. var length = data.length;
  261. var html ='<option value="" style="text-align: center;text-align-last: center;direction: rtl;">无</option>';
  262. for(var i=0;i<length;i++){
  263. html +='<option data-id="'+parent+'" value="'+data[i].id+'">'+data[i].config.label+'</option>';
  264. }
  265. $('select.customerinfo_'+parent).html(html);
  266. $(".selectpicker").selectpicker('refresh');
  267. }
  268. }});
  269. //自定义会员
  270. $.ajax({url:"qingdongams/synchronizate/fauser/fielduser",data:'',success:function(result){
  271. if(result.code == 1){
  272. var datas = result.data;
  273. var lengths = datas.length;
  274. var userhtml ='<option value="" style="text-align: center;text-align-last: center;direction: rtl;">无</option>';
  275. for(var i=0;i<lengths;i++){
  276. userhtml +='<option data-id="'+parent+'" value="'+datas[i].key+'">'+datas[i].value+'</option>';
  277. }
  278. $('select.userinfo_'+parent).html(userhtml);
  279. $(".selectpicker").selectpicker('refresh');
  280. }
  281. }});
  282. });
  283. $(document).on('click', ".qd_del", function() {
  284. var num = $(this).data('id');
  285. $('.qd_tr_'+num).remove()
  286. });
  287. $(document).on('change', ".customerinfos", function() {
  288. var username = $(this).val();
  289. var num = $(this).data('id');
  290. if(username){
  291. $(this).attr('name','rows['+username+'][customer][]');
  292. $('.userinfo_'+num).attr('name','rows['+username+'][user][]');
  293. }
  294. });
  295. Controller.api.bindevent();
  296. },
  297. api: {
  298. bindevent: function () {
  299. Form.api.bindevent($("form[role=form]"));
  300. }
  301. }
  302. };
  303. return Controller;
  304. });