user_question.js 5.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113
  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: 'user_question/index' + location.search,
  8. add_url: 'user_question/add',
  9. edit_url: 'user_question/edit',
  10. del_url: 'user_question/del',
  11. multi_url: 'user_question/multi',
  12. import_url: 'user_question/import',
  13. table: 'user_question',
  14. }
  15. });
  16. var table = $("#table");
  17. // 初始化表格
  18. table.bootstrapTable({
  19. url: $.fn.bootstrapTable.defaults.extend.index_url,
  20. pk: 'id',
  21. sortName: 'id',
  22. columns: [
  23. [
  24. {checkbox: true},
  25. {field: 'id', title: __('Id')},
  26. {field: 'type', title: __('Type'),searchList:{'decide':'判断题','choose':'选择题','vote':'投票','wenda':'问答'},formatter:Table.api.formatter.label},
  27. {field: 'title', title: __('Title')},
  28. {field: 'items', title: __('Items'), operate: 'LIKE',formatter: (a,b)=>{
  29. if(b.type==='choose'||b.type==='decide'){
  30. let ele=[]
  31. Object.keys(a).forEach(idx=>{
  32. if(b.item_type==='image'){
  33. ele.push(`<a href="${a[idx]}" target="_blank">${idx}:<img src="${a[idx]}" style="max-width: 50px;max-height: 50px;" alt=""/></a>`)
  34. }else{
  35. ele.push(`<p style="display: block;">${idx}:${a[idx]}</p>`)
  36. }
  37. })
  38. return ele.join(' ')
  39. }else{
  40. return ''
  41. }
  42. }},
  43. {field: 'key', title: __('Key'),formatter: (a,b)=>{
  44. return a
  45. }},
  46. {field: 'created_at', title: __('Created_at'),formatter: Table.api.formatter.datetime,addClass:'datetimerange',operate: 'range'},
  47. {field: 'operate', title: __('Operate'), table: table, events: Table.api.events.operate, formatter: Table.api.formatter.operate}
  48. ]
  49. ]
  50. });
  51. // 为表格绑定事件
  52. Table.api.bindevent(table);
  53. $('.btn-add').data('area',['100%','100%'])
  54. },
  55. add: function () {
  56. Controller.api.bindevent();
  57. $('.item-type input[type=radio]').on('change',function (){
  58. console.log(this)
  59. })
  60. $('#item').html($(`#item-decide`).html())
  61. $('#type input').on('change',function (){
  62. let type=$(this).val()
  63. $('#item').html($(`#item-${type}`).html())
  64. Controller.api.bindevent();
  65. })
  66. $(document).on('click','.add-item',function (){
  67. let ele=$('.item-type-txt-example>div').clone()
  68. ele.find('input').val('')
  69. ele.find('input[type=checkbox]').attr('checked',false)
  70. ele.append(`<button type="button" class="btn btn-danger" onclick="$(this).parent().remove()">删除</button>`)
  71. ele=ele[0].outerHTML.replaceAll('$idx',Date.now())
  72. $(this).parent().append(ele)
  73. Controller.api.bindevent();
  74. })
  75. $(document).on('click','.add-item-image',function (){
  76. let ele=$('.item-type-image-example').clone()
  77. ele.find('input').val('')
  78. ele.find('input[type=checkbox]').attr('checked',false)
  79. ele.removeClass('hidden')
  80. ele.removeClass('item-type-image-example')
  81. ele=ele[0].outerHTML.replaceAll('$idx',Date.now())
  82. $(this).parent().append(ele)
  83. Controller.api.bindevent();
  84. })
  85. $(document).on('change','.item-type input',function (){
  86. let type=$(this).val()
  87. if(type==='txt'){
  88. $('.item-type-txt').removeClass('hidden')
  89. $('.item-type-image').addClass('hidden')
  90. $('.item-type-image input[type=checkbox]').attr('checked',false)
  91. }else{
  92. $('.item-type-txt').addClass('hidden')
  93. $('.item-type-image').removeClass('hidden')
  94. $('.item-type-txt input[type=checkbox]').attr('checked',false)
  95. }
  96. Controller.api.bindevent();
  97. })
  98. },
  99. edit: function () {
  100. Controller.api.bindevent();
  101. },
  102. api: {
  103. bindevent: function () {
  104. Form.api.bindevent($("form[role=form]"));
  105. }
  106. }
  107. };
  108. return Controller;
  109. });