cooperation.js 10 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184
  1. define(['jquery', 'table', 'form', 'layui'], function($, Table, Form, layui) {
  2. var Element = layui.element;
  3. Yzn.config.openArea = ['780px', '640px'];
  4. function formatStatus(val) {
  5. var map = {0: '未处理', 1: '已跟进', 2: '已转化', 9: '无效'};
  6. return map[val] || val;
  7. }
  8. function formatOptionType(val) {
  9. var map = {country_region: '大洲/区域', country: '国家/地区', industry: '行业'};
  10. return map[val] || val || '-';
  11. }
  12. function getLeadFilters() {
  13. return {
  14. keyword: $('#keyword').val(),
  15. country: $('#country').val(),
  16. industry: $('#industry').val(),
  17. lang: $('#lang').val(),
  18. status: $('#status').val(),
  19. createtime_start: $('#createtime_start').val(),
  20. createtime_end: $('#createtime_end').val()
  21. };
  22. }
  23. function getOptionFilters() {
  24. return {
  25. type: $('#option_type').val() || 'country',
  26. lang: $('#option_lang').val(),
  27. status: $('#option_status').val()
  28. };
  29. }
  30. function getCurrentOptionType() {
  31. return $('#option_type').val() || 'country';
  32. }
  33. function currentOptionTitle() {
  34. return formatOptionType(getCurrentOptionType());
  35. }
  36. var Controller = {
  37. index: function() {
  38. Table.init = { table_elem: '#currentTable', table_render_id: 'currentTable' };
  39. Table.render({
  40. init: Table.init,
  41. toolbar: ['refresh'],
  42. url: 'cooperation/index',
  43. cols: [[
  44. {type:'checkbox', width:50},
  45. {field:'id', width:80, title:'ID', sort:true},
  46. {field:'name', width:120, title:'姓名'},
  47. {field:'phone', width:150, title:'电话'},
  48. {field:'email', minWidth:200, title:'邮箱'},
  49. {field:'company', minWidth:180, title:'公司名称'},
  50. {field:'country', width:140, title:'国家/地区'},
  51. {field:'industry', width:140, title:'行业'},
  52. {field:'content', minWidth:260, title:'咨询内容'},
  53. {field:'lang', width:90, title:'语言'},
  54. {field:'status', width:100, title:'状态', templet:function(d){ return formatStatus(parseInt(d.status, 10)); }},
  55. {field:'admin_remark', minWidth:180, title:'备注'},
  56. {field:'source_page', minWidth:220, title:'来源页面'},
  57. {field:'privacy_agree', width:100, title:'隐私同意', templet:function(d){ return parseInt(d.privacy_agree,10) ? '已同意' : '未同意'; }},
  58. {field:'privacy_agree_time', width:170, title:'同意时间', templet:function(d){ return d.privacy_agree_time ? Table.formatter.datetime.call(this, d.privacy_agree_time) : '-'; }},
  59. {field:'ip', width:140, title:'提交IP'},
  60. {field:'createtime', width:170, title:'提交时间', templet: Table.formatter.datetime},
  61. {field:'operate', title:'操作', width:260, fixed:'right', templet:function(d){
  62. return ''
  63. + '<a href="javascript:;" class="layui-btn layui-btn-xs" data-id="'+d.id+'" data-status="1" data-event="status">已跟进</a>'
  64. + '<a href="javascript:;" class="layui-btn layui-btn-xs layui-btn-normal" data-id="'+d.id+'" data-status="2" data-event="status">已转化</a>'
  65. + '<a href="javascript:;" class="layui-btn layui-btn-xs layui-btn-warm" data-id="'+d.id+'" data-remark="'+(d.admin_remark || '')+'" data-event="remark">备注</a>'
  66. + '<a href="javascript:;" class="layui-btn layui-btn-xs layui-btn-danger" data-id="'+d.id+'" data-status="9" data-event="status">无效</a>';
  67. }}
  68. ]],
  69. page: {}
  70. });
  71. $('#searchBtn').on('click', function() {
  72. layui.table.reload('currentTable', { where: getLeadFilters(), page: {curr: 1} });
  73. });
  74. $('#resetBtn').on('click', function() {
  75. $('#keyword,#country,#industry,#lang,#status,#createtime_start,#createtime_end').val('');
  76. layui.form.render('select');
  77. layui.table.reload('currentTable', { where: {}, page: {curr: 1} });
  78. });
  79. $('#deleteBtn').on('click', function() {
  80. var rows = layui.table.checkStatus('currentTable').data || [];
  81. if (!rows.length) { layer.msg('请先勾选留资记录'); return; }
  82. var ids = rows.map(function(i){ return i.id; });
  83. layer.confirm('确认删除选中的 ' + ids.length + ' 条留资记录吗?此操作不可恢复。', {icon:3,title:'警告'}, function(index) {
  84. $.post('cooperation/del', {ids: ids}, function(res) {
  85. layer.msg(res.msg || (res.code===1 ? '删除成功' : '删除失败'));
  86. if (res.code === 1) layui.table.reload('currentTable');
  87. }, 'json').fail(function(){ layer.msg('删除请求失败'); });
  88. layer.close(index);
  89. });
  90. });
  91. $(document).on('click', '[data-event="status"]', function() {
  92. var id = $(this).data('id');
  93. var status = $(this).data('status');
  94. $.post('cooperation/changeStatus', {id: id, status: status}, function(res) {
  95. layer.msg(res.msg || (res.code===1 ? '更新成功' : '更新失败'));
  96. if (res.code === 1) layui.table.reload('currentTable');
  97. }, 'json').fail(function(){ layer.msg('状态更新失败'); });
  98. });
  99. $(document).on('click', '[data-event="remark"]', function() {
  100. var id = $(this).data('id');
  101. var oldRemark = $(this).data('remark') || '';
  102. layer.prompt({title:'填写跟进备注', formType:2, value: oldRemark}, function(value, index) {
  103. $.post('cooperation/remark', {id: id, admin_remark: value}, function(res) {
  104. layer.msg(res.msg || (res.code===1 ? '保存成功' : '保存失败'));
  105. if (res.code === 1) layui.table.reload('currentTable');
  106. }, 'json').fail(function(){ layer.msg('备注保存失败'); });
  107. layer.close(index);
  108. });
  109. });
  110. Table.api.bindevent();
  111. Form.api.bindevent($('form.layui-form'));
  112. layui.form.render('select');
  113. },
  114. options: function() {
  115. Table.init = { table_elem: '#optionTable', table_render_id: 'optionTable' };
  116. Table.render({
  117. init: Table.init,
  118. toolbar: ['refresh'],
  119. url: 'cooperation/options',
  120. cols: [[
  121. {type:'checkbox', width:50},
  122. {field:'id', width:80, title:'ID', sort:true},
  123. {field:'lang', width:100, title:'语言'},
  124. {field:'title', minWidth:180, title:'显示名称'},
  125. {field:'value', minWidth:140, title:'提交值'},
  126. {field:'parent_value', minWidth:140, title:'所属大洲/区域'},
  127. {field:'listorder', width:100, title:'排序', sort:true},
  128. {field:'status', width:100, title:'状态', templet:function(d){ return parseInt(d.status,10) ? '启用' : '禁用'; }},
  129. {field:'updatetime', width:170, title:'更新时间', templet:function(d){ return d.updatetime ? Table.formatter.datetime.call(this, d.updatetime) : '-'; }},
  130. {field:'operate', title:'操作', width:110, fixed:'right', templet:function(d){
  131. return '<a href="javascript:;" class="layui-btn layui-btn-xs" data-id="'+d.id+'" data-event="editOption">编辑</a>';
  132. }}
  133. ]],
  134. page: {},
  135. where: getOptionFilters()
  136. });
  137. $('#optionSearchBtn').on('click', function() {
  138. layui.table.reload('optionTable', { where: getOptionFilters(), page: {curr: 1} });
  139. });
  140. Element.on('tab(cooperationOptionTabs)', function(data) {
  141. var type = $(this).data('type');
  142. if (!type) { return; }
  143. $('#option_type').val(type);
  144. layui.table.reload('optionTable', { where: getOptionFilters(), page: {curr: 1} });
  145. });
  146. $('#optionResetBtn').on('click', function() {
  147. $('#option_lang,#option_status').val('');
  148. layui.form.render('select');
  149. layui.table.reload('optionTable', { where: getOptionFilters(), page: {curr: 1} });
  150. });
  151. $('#addOptionBtn').on('click', function() {
  152. Yzn.api.open('cooperation/addOption?type=' + getCurrentOptionType(), '新增' + currentOptionTitle(), {area: Yzn.config.openArea});
  153. });
  154. $('#deleteOptionBtn').on('click', function() {
  155. var rows = layui.table.checkStatus('optionTable').data || [];
  156. if (!rows.length) { layer.msg('请先勾选选项'); return; }
  157. var ids = rows.map(function(i){ return i.id; });
  158. layer.confirm('确认删除选中的 ' + ids.length + ' 个选项吗?', {icon:3,title:'警告'}, function(index) {
  159. $.post('cooperation/delOption', {ids: ids}, function(res) {
  160. layer.msg(res.msg || (res.code===1 ? '删除成功' : '删除失败'));
  161. if (res.code === 1) layui.table.reload('optionTable');
  162. }, 'json').fail(function(){ layer.msg('删除请求失败'); });
  163. layer.close(index);
  164. });
  165. });
  166. $(document).on('click', '[data-event="editOption"]', function() {
  167. Yzn.api.open('cooperation/editOption?id=' + $(this).data('id'), '编辑' + currentOptionTitle(), {area: Yzn.config.openArea});
  168. });
  169. Table.api.bindevent();
  170. Form.api.bindevent($('form.layui-form'));
  171. },
  172. addoption: function() {
  173. Form.api.bindevent($('form.layui-form'));
  174. },
  175. editoption: function() {
  176. Form.api.bindevent($('form.layui-form'));
  177. }
  178. };
  179. return Controller;
  180. });