messagefeedback.js 5.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  1. define(['jquery', 'table', 'form'], function($, Table, Form) {
  2. function formatStatus(val) {
  3. var map = {0:'未处理', 1:'处理中', 2:'已处理', 9:'无效'};
  4. return map[val] || val;
  5. }
  6. function escapeAttr(value) {
  7. return String(value || '').replace(/&/g, '&amp;').replace(/"/g, '&quot;').replace(/</g, '&lt;').replace(/>/g, '&gt;');
  8. }
  9. var Controller = {
  10. index: function() {
  11. Table.init = { table_elem: '#currentTable', table_render_id: 'currentTable' };
  12. function getFilters() {
  13. return { keyword: $('#keyword').val(), feedback_type: $('#feedback_type').val(), lang: $('#lang').val(), status: $('#status').val(), ip: $('#ip').val(), source_page: $('#source_page').val(), createtime_start: $('#createtime_start').val(), createtime_end: $('#createtime_end').val() };
  14. }
  15. Table.render({
  16. init: Table.init,
  17. toolbar: ['refresh'],
  18. url: 'messagefeedback/index',
  19. cols: [[
  20. {type:'checkbox', width:50},
  21. {field:'id', width:80, title:'ID', sort:true},
  22. {field:'feedback_type_text', width:110, title:'反馈类型'},
  23. {field:'name', width:110, title:'姓名'},
  24. {field:'phone', width:140, title:'电话'},
  25. {field:'email', minWidth:180, title:'邮箱'},
  26. {field:'content', minWidth:260, title:'反馈内容'},
  27. {field:'lang', width:80, title:'语言'},
  28. {field:'status', width:100, title:'状态', templet:function(d){ return formatStatus(parseInt(d.status, 10)); }},
  29. {field:'admin_remark', minWidth:180, title:'备注'},
  30. {field:'source_page', minWidth:220, title:'来源页面'},
  31. {field:'privacy_agree', width:100, title:'隐私同意', templet:function(d){ return parseInt(d.privacy_agree,10) ? '已同意' : '未同意'; }},
  32. {field:'ip', width:140, title:'提交IP'},
  33. {field:'createtime', width:170, title:'提交时间', templet: Table.formatter.datetime},
  34. {field:'operate', title:'操作', width:250, fixed:'right', templet:function(d){
  35. return ''
  36. + '<a href="javascript:;" class="layui-btn layui-btn-xs" data-id="'+d.id+'" data-status="1" data-event="status">处理中</a>'
  37. + '<a href="javascript:;" class="layui-btn layui-btn-xs layui-btn-normal" data-id="'+d.id+'" data-status="2" data-event="status">已处理</a>'
  38. + '<a href="javascript:;" class="layui-btn layui-btn-xs layui-btn-warm" data-id="'+d.id+'" data-remark="'+escapeAttr(d.admin_remark || '')+'" data-event="remark">备注</a>'
  39. + '<a href="javascript:;" class="layui-btn layui-btn-xs layui-btn-danger" data-id="'+d.id+'" data-status="9" data-event="status">无效</a>';
  40. }}
  41. ]],
  42. page: {}
  43. });
  44. $('#searchBtn').on('click', function() { layui.table.reload('currentTable', { where: getFilters(), page: {curr: 1} }); });
  45. $('#resetBtn').on('click', function() { $('#keyword,#feedback_type,#lang,#status,#ip,#source_page,#createtime_start,#createtime_end').val(''); layui.form.render('select'); layui.table.reload('currentTable', { where: {}, page: {curr: 1} }); });
  46. $('#deleteBtn').on('click', function() {
  47. var rows = layui.table.checkStatus('currentTable').data || [];
  48. if (!rows.length) { layer.msg('请先勾选反馈记录'); return; }
  49. var ids = rows.map(function(i){ return i.id; });
  50. layer.confirm('确认删除选中的 ' + ids.length + ' 条反馈记录吗?此操作不可恢复。', {icon:3,title:'警告'}, function(index) {
  51. $.post('messagefeedback/del', {ids: ids}, function(res) { layer.msg(res.msg || (res.code===1 ? '删除成功' : '删除失败')); if (res.code === 1) layui.table.reload('currentTable'); }, 'json').fail(function(){ layer.msg('删除请求失败'); });
  52. layer.close(index);
  53. });
  54. });
  55. $(document).on('click', '[data-event="status"]', function() {
  56. $.post('messagefeedback/changeStatus', {id: $(this).data('id'), status: $(this).data('status')}, function(res) { layer.msg(res.msg || (res.code===1 ? '更新成功' : '更新失败')); if (res.code === 1) layui.table.reload('currentTable'); }, 'json').fail(function(){ layer.msg('状态更新失败'); });
  57. });
  58. $(document).on('click', '[data-event="remark"]', function() {
  59. var id = $(this).data('id');
  60. var oldRemark = $(this).data('remark') || '';
  61. layer.prompt({title:'填写处理备注', formType:2, value: oldRemark}, function(value, index) {
  62. $.post('messagefeedback/remark', {id: id, admin_remark: value}, function(res) { layer.msg(res.msg || (res.code===1 ? '保存成功' : '保存失败')); if (res.code === 1) layui.table.reload('currentTable'); }, 'json').fail(function(){ layer.msg('备注保存失败'); });
  63. layer.close(index);
  64. });
  65. });
  66. Table.api.bindevent();
  67. Form.api.bindevent($('form.layui-form'));
  68. }
  69. };
  70. return Controller;
  71. });