Переглянути джерело

fix (1.34.2 -> 1.34.3): 修复软件包下载进度显示问题

- 在 DownloadProgressModal 中修复进度百分比计算,直接使用 percentage 值而不进行额外转换
- 简化进度条显示逻辑,移除 installing 状态下的特殊处理
- 在 VersionUpdateService 中改进下载进度状态管理,支持首次进度消息的正确初始化
- 增强调试日志输出,便于问题排查
- 在 AppContent 中添加下载进度模态框显示的日志记录

改动文件:
- src/components/DownloadProgressModal.tsx
- src/pages/index/index.tsx
- src/services/VersionUpdateService.ts
dengdx 2 тижнів тому
батько
коміт
a0583e1ab2

+ 5 - 0
CHANGELOG.md

@@ -2,6 +2,11 @@
 
 本项目的所有重要变更都将记录在此文件中。
 
+## [1.34.3] - 2025-12-29 21:55
+
+### 修复
+- 修复软件包下载进度显示问题,进度百分比计算和状态管理优化
+
 ## [1.34.2] - 2025-12-29 19:43
 
 ### 修复 (Fixed)

+ 1 - 1
package.json

@@ -1,6 +1,6 @@
 {
   "name": "zsis",
-  "version": "1.34.2",
+  "version": "1.34.3",
   "private": true,
   "description": "医学成像系统",
   "main": "main.js",

+ 2 - 2
src/components/DownloadProgressModal.tsx

@@ -46,7 +46,7 @@ const DownloadProgressModal: React.FC<DownloadProgressModalProps> = ({
   }
 
   // 计算进度百分比
-  const progressPercent = downloadProgress ? Math.round(downloadProgress.percentage * 100) : 0;
+  const progressPercent = downloadProgress ? downloadProgress.percentage : 0;
 
   // 格式化速度显示
   const formatSpeed = (speed: number): string => {
@@ -147,7 +147,7 @@ const DownloadProgressModal: React.FC<DownloadProgressModalProps> = ({
         {/* 进度条 */}
         <div>
           <Progress
-            percent={status === 'installing' ? 100 : progressPercent}
+            percent={progressPercent}
             status={getProgressStatus()}
             strokeColor={error ? '#ff4d4f' : status === 'completed' ? '#52c41a' : undefined}
             showInfo={status !== 'installing'}

+ 1 - 0
src/pages/index/index.tsx

@@ -38,6 +38,7 @@ const AppContent: React.FC = () => {
   React.useEffect(() => {
     if (updateStatus === 'downloading') {
       setShowVersionUpdateModal(false);
+      console.log('[AppContent] 显示下载进度模态框');
       setShowDownloadProgressModal(true);
     } else if (updateStatus === 'completed' || updateStatus === 'idle') {
       setShowDownloadProgressModal(false);

+ 12 - 4
src/services/VersionUpdateService.ts

@@ -96,10 +96,11 @@ class VersionUpdateService {
       // 调用下载API
       await downloadPackage(version);
 
+      console.log('[VersionUpdateService] 设置状态为下载中');
       // 设置状态为下载中
       store.dispatch(setUpdateStatus('downloading'));
 
-      console.log('下载已开始,等待进度消息...');
+      console.log('[VersionUpdateService] 下载已开始,等待进度消息...');
     } catch (error) {
       console.error('启动下载失败:', error);
       store.dispatch(setUpdateError(error instanceof Error ? error.message : '启动下载失败'));
@@ -111,7 +112,7 @@ class VersionUpdateService {
    */
   private handleMqttDownloadMessage(message: MqttDownloadMessage): void {
     try {
-      console.log('收到下载进度消息:', message);
+      console.log('[VersionUpdateService] 收到下载进度消息:', message);
 
       // 转换数据格式
       const progress: DownloadProgress = {
@@ -124,8 +125,15 @@ class VersionUpdateService {
         message: message.msg,
       };
 
-      // 更新Redux状态
-      store.dispatch(updateDownloadProgress(progress));
+      // 检查是否需要初始化下载进度状态
+      const currentState = store.getState().versionUpdate;
+      if (!currentState.downloadProgress) {
+        // 如果是第一条消息,初始化下载进度
+        store.dispatch(setDownloadProgress(progress));
+      } else {
+        // 更新现有进度
+        store.dispatch(updateDownloadProgress(progress));
+      }
 
       // 处理不同状态
       switch (message.status) {