From 1320bee1206f5778590e8fef16bdb61d5a98a62f Mon Sep 17 00:00:00 2001 From: tianshujie Date: Thu, 11 Sep 2025 11:46:29 +0800 Subject: [PATCH] * [task#149708,doing,1h] upgrade the interaction of the weekly report page. --- module/upgrade/js/upgradeweeklyreports.ui.js | 50 ++++++++++++++++++++ 1 file changed, 50 insertions(+) create mode 100644 module/upgrade/js/upgradeweeklyreports.ui.js diff --git a/module/upgrade/js/upgradeweeklyreports.ui.js b/module/upgrade/js/upgradeweeklyreports.ui.js new file mode 100644 index 0000000000..bae49751c8 --- /dev/null +++ b/module/upgrade/js/upgradeweeklyreports.ui.js @@ -0,0 +1,50 @@ +/* 开始升级周报。*/ +window.startUpgradeReports = function(event, reportList, upgradingReportsText, nextText) +{ + const $btn = $('#upgradeReportsBtn'); + if($btn.hasClass('is-finished')) return; + + event.preventDefault(); + const $progressBar = $('#upgradeReportsProgress').addClass('active').find('.progress-bar'); + $btn.attr('disabled', 'disabled').addClass('disabled').removeClass('primary').find('.text').text(upgradingReportsText); + upgradeReports(reportList, + { + onProgress: (current, total) => + { + $progressBar.css('width', (100 * current / total) + '%'); + $btn.find('.text').text(`${upgradingReportsText} (${current}/${total})`); + } + }).then(() => + { + $btn.removeAttr('disabled').removeClass('disabled').addClass('primary is-finished').find('.text').text(nextText); + $('#upgradeReportsProgress').removeClass('active') + }); +}; + +/* 更新升级周报进度。*/ +async function upgradeReports(reportList, options) +{ + let current = 0; + const total = reportList.length; + const onProgress = options.onProgress; + for(const report of reportList) + { + onProgress(current, total); + await upgradeReport(report); + await zui.delay(50); + current ++; + } + onProgress(current, total); + return reportList; +} + +/* 升级周报。*/ +async function upgradeReport(report) +{ + let result; + await $.post($.createLink('upgrade', 'ajaxUpgradeWeeklyReport'), {data: report}, (res) => + { + result = res.result === 'success' ? true : res.message; + }, 'json'); + return result; +}