upgradeprojectreports.ui.js 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. /* 开始升级项目报告。*/
  2. window.startUpgradeReports = function(event, reportList, upgradingReportsText, nextText)
  3. {
  4. const $btn = $('#upgradeReportsBtn');
  5. if($btn.hasClass('is-finished')) return;
  6. event.preventDefault();
  7. const $progressBar = $('#upgradeReportsProgress').addClass('active').find('.progress-bar');
  8. $btn.attr('disabled', 'disabled').addClass('disabled').removeClass('primary').find('.text').text(upgradingReportsText);
  9. upgradeReports(reportList,
  10. {
  11. onProgress: (current, total) =>
  12. {
  13. $progressBar.css('width', (100 * current / total) + '%');
  14. $btn.find('.text').text(`${upgradingReportsText} (${current}/${total})`);
  15. }
  16. }).then(() =>
  17. {
  18. $btn.removeAttr('disabled').removeClass('disabled').addClass('primary is-finished').find('.text').text(nextText);
  19. $('#upgradeReportsProgress').removeClass('active')
  20. });
  21. };
  22. /* 更新升级项目报告进度。*/
  23. async function upgradeReports(reportList, options)
  24. {
  25. let current = 0;
  26. const total = reportList.length;
  27. const onProgress = options.onProgress;
  28. for(const report of reportList)
  29. {
  30. onProgress(current, total);
  31. await upgradeReport(report);
  32. await zui.delay(50);
  33. current ++;
  34. }
  35. onProgress(current, total);
  36. return reportList;
  37. }
  38. /* 升级项目报告。*/
  39. async function upgradeReport(report)
  40. {
  41. let result;
  42. await $.post($.createLink('upgrade', 'ajaxUpgradeProjectReport'), {data: report}, (res) =>
  43. {
  44. result = res.result === 'success' ? true : res.message;
  45. }, 'json');
  46. return result;
  47. }