browse.ui.js 2.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192
  1. $(document).off('click', '.batch-btn').on('click', '.batch-btn', function()
  2. {
  3. const dtable = zui.DTable.query($(this).target);
  4. const checkedList = dtable.$.getChecks();
  5. if(!checkedList.length) return;
  6. const url = $(this).data('url');
  7. const form = new FormData();
  8. checkedList.forEach((id) => form.append('ticketIDList[]', id));
  9. if($(this).hasClass('ajax-btn'))
  10. {
  11. $.ajaxSubmit({url, data:form});
  12. }
  13. else
  14. {
  15. postAndLoadPage(url, form);
  16. }
  17. });
  18. window.firstRendered = false;
  19. window.toggleCheckRows = function(idList)
  20. {
  21. if(!idList?.length || firstRendered) return;
  22. firstRendered = true;
  23. const dtable = zui.DTable.query($('#tickets'));
  24. dtable.$.toggleCheckRows(idList.split(','), true);
  25. }
  26. window.checkedChange = function(changes)
  27. {
  28. if(!this._checkedRows) this._checkedRows = {};
  29. Object.keys(changes).forEach((rowID) =>
  30. {
  31. const row = this.getRowInfo(rowID);
  32. if(row !== undefined) this._checkedRows[rowID] = row.data;
  33. });
  34. }
  35. window.insertListToDoc = function()
  36. {
  37. const dtable = zui.DTable.query($('#tickets'));
  38. const myTable = dtable.$;
  39. const checkedList = Object.keys(myTable.state.checkedRows);
  40. if(!checkedList.length) return;
  41. let {cols} = dtable.options;
  42. const data = checkedList.map(rowID => myTable._checkedRows[rowID]);
  43. const docID = getDocApp()?.docID;
  44. const url = $.createLink('doc', 'buildZentaoList', `docID=${docID}&type=ticket&blockID=${blockID}`);
  45. const formData = new FormData();
  46. formData.append('cols', JSON.stringify(cols));
  47. formData.append('data', JSON.stringify(data));
  48. formData.append('idList', checkedList.join(','));
  49. formData.append('url', insertListLink);
  50. $.post(url, formData, function(resp)
  51. {
  52. resp = JSON.parse(resp);
  53. if(resp.result == 'success')
  54. {
  55. const oldBlockID = resp.oldBlockID;
  56. const newBlockID = resp.newBlockID;
  57. zui.Modal.hide();
  58. window.insertZentaoList && window.insertZentaoList('ticket', newBlockID, null, oldBlockID) ;
  59. }
  60. });
  61. }
  62. /**
  63. * 来源列显示额外的内容。
  64. * Display extra content in the title column.
  65. *
  66. * @param object result
  67. * @param object info
  68. * @access public
  69. * @return object
  70. */
  71. window.onRenderCell = function(result, {row, col})
  72. {
  73. if(result && col.name == 'title')
  74. {
  75. const module = this.options.modules[row.data.module];
  76. if(module) result.unshift({html: '<span class="label gray-pale rounded-full whitespace-nowrap w-auto">' + module + '</span>'}); // 添加模块标签
  77. }
  78. if(result && col.name == 'feedbackTip' && row.data.feedbackTip != '')
  79. {
  80. if(typeof result[0].props != 'undefined') result[0].props.className = 'overflow-hidden';
  81. result.push({html: '<span class="label primary-pale whitespace-nowrap w-auto">' + feedbackLang + '</span>'}); // 添加反馈标签
  82. }
  83. return result;
  84. }