allen 2 долоо хоног өмнө
parent
commit
0e70946912
42 өөрчлөгдсөн 541 нэмэгдсэн , 27 устгасан
  1. 6 1
      ips-admin/src/main/java/com/ips/system/controller/BizTrainingController.java
  2. 6 0
      ips-admin/src/main/java/com/ips/system/controller/ClassifyTestController.java
  3. 6 1
      ips-admin/src/main/java/com/ips/system/controller/DistillationController.java
  4. 6 0
      ips-admin/src/main/java/com/ips/system/controller/ExtractedFeaturesController.java
  5. 6 0
      ips-admin/src/main/java/com/ips/system/controller/PreprocessedController.java
  6. 6 0
      ips-admin/src/main/java/com/ips/system/controller/TimeFrequencyImagesController.java
  7. 2 0
      ips-admin/src/main/java/com/ips/system/mapper/BizTrainingMapper.java
  8. 2 0
      ips-admin/src/main/java/com/ips/system/mapper/ClassifyTestMapper.java
  9. 2 0
      ips-admin/src/main/java/com/ips/system/mapper/DistillationMapper.java
  10. 2 0
      ips-admin/src/main/java/com/ips/system/mapper/ExtractedFeaturesMapper.java
  11. 2 0
      ips-admin/src/main/java/com/ips/system/mapper/PreprocessedMapper.java
  12. 2 0
      ips-admin/src/main/java/com/ips/system/mapper/TimeFrequencyImagesMapper.java
  13. 2 0
      ips-admin/src/main/java/com/ips/system/service/IBizTrainingService.java
  14. 2 0
      ips-admin/src/main/java/com/ips/system/service/IClassifyTestService.java
  15. 2 0
      ips-admin/src/main/java/com/ips/system/service/IDistillationService.java
  16. 2 0
      ips-admin/src/main/java/com/ips/system/service/IExtractedFeaturesService.java
  17. 2 0
      ips-admin/src/main/java/com/ips/system/service/IPreprocessedService.java
  18. 2 0
      ips-admin/src/main/java/com/ips/system/service/ITimeFrequencyImagesService.java
  19. 5 0
      ips-admin/src/main/java/com/ips/system/service/impl/BizTrainingServiceImpl.java
  20. 5 0
      ips-admin/src/main/java/com/ips/system/service/impl/ClassifyTestServiceImpl.java
  21. 5 0
      ips-admin/src/main/java/com/ips/system/service/impl/DistillationServiceImpl.java
  22. 5 0
      ips-admin/src/main/java/com/ips/system/service/impl/ExtractedFeaturesServiceImpl.java
  23. 4 0
      ips-admin/src/main/java/com/ips/system/service/impl/PreprocessedServiceImpl.java
  24. 5 0
      ips-admin/src/main/java/com/ips/system/service/impl/TimeFrequencyImagesServiceImpl.java
  25. 5 0
      ips-admin/src/main/resources/mapper/biz/BizTrainingMapper.xml
  26. 5 0
      ips-admin/src/main/resources/mapper/biz/ClassifyTestMapper.xml
  27. 6 0
      ips-admin/src/main/resources/mapper/biz/DistillationMapper.xml
  28. 5 0
      ips-admin/src/main/resources/mapper/biz/ExtractedFeaturesMapper.xml
  29. 5 0
      ips-admin/src/main/resources/mapper/biz/PreprocessedMapper.xml
  30. 5 0
      ips-admin/src/main/resources/mapper/biz/TimeFrequencyImagesMapper.xml
  31. 8 0
      ips-ui/src/api/biz/distillation.js
  32. 8 0
      ips-ui/src/api/biz/features.js
  33. 8 0
      ips-ui/src/api/biz/images.js
  34. 33 25
      ips-ui/src/api/biz/preprocessed.js
  35. 8 0
      ips-ui/src/api/biz/test.js
  36. 8 0
      ips-ui/src/api/biz/training.js
  37. 58 0
      ips-ui/src/views/biz/distillation/index.vue
  38. 58 0
      ips-ui/src/views/biz/features/index.vue
  39. 58 0
      ips-ui/src/views/biz/images/index.vue
  40. 58 0
      ips-ui/src/views/biz/preprocessed/index.vue
  41. 58 0
      ips-ui/src/views/biz/test/index.vue
  42. 58 0
      ips-ui/src/views/biz/training/index.vue

+ 6 - 1
ips-admin/src/main/java/com/ips/system/controller/BizTrainingController.java

@@ -5,7 +5,6 @@ import javax.servlet.http.HttpServletResponse;
 
 import com.fasterxml.jackson.core.JsonProcessingException;
 import com.ips.common.utils.StringUtils;
-import com.ips.system.domain.Distillation;
 import org.springframework.security.access.prepost.PreAuthorize;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.GetMapping;
@@ -139,4 +138,10 @@ public class BizTrainingController extends BaseController
             return error("获取详情失败");
         }
     }
+
+    @PreAuthorize("@ss.hasPermi('biz:training:add')")
+    @GetMapping(value = "/getTaskStatusIsChanged/{id}")
+    public AjaxResult getTaskStatusIsChanged(@PathVariable("id") Long id){
+        return success(bizTrainingService.getTaskStatusIsChanged(id));
+    }
 }

+ 6 - 0
ips-admin/src/main/java/com/ips/system/controller/ClassifyTestController.java

@@ -139,4 +139,10 @@ public class ClassifyTestController extends BaseController
             return error("获取详情失败");
         }
     }
+
+    @PreAuthorize("@ss.hasPermi('biz:test:add')")
+    @GetMapping(value = "/getTaskStatusIsChanged/{id}")
+    public AjaxResult getTaskStatusIsChanged(@PathVariable("id") Long id){
+        return success(classifyTestService.getTaskStatusIsChanged(id));
+    }
 }

+ 6 - 1
ips-admin/src/main/java/com/ips/system/controller/DistillationController.java

@@ -5,7 +5,6 @@ import javax.servlet.http.HttpServletResponse;
 
 import com.fasterxml.jackson.core.JsonProcessingException;
 import com.ips.common.utils.StringUtils;
-import com.ips.system.domain.ExtractedFeatures;
 import org.springframework.security.access.prepost.PreAuthorize;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.GetMapping;
@@ -139,4 +138,10 @@ public class DistillationController extends BaseController
             return error("获取详情失败");
         }
     }
+
+    @PreAuthorize("@ss.hasPermi('biz:distillation:add')")
+    @GetMapping(value = "/getTaskStatusIsChanged/{id}")
+    public AjaxResult getTaskStatusIsChanged(@PathVariable("id") Long id){
+        return success(distillationService.getTaskStatusIsChanged(id));
+    }
 }

+ 6 - 0
ips-admin/src/main/java/com/ips/system/controller/ExtractedFeaturesController.java

@@ -139,4 +139,10 @@ public class ExtractedFeaturesController extends BaseController
             return error("获取详情失败");
         }
     }
+
+    @PreAuthorize("@ss.hasPermi('biz:features:add')")
+    @GetMapping(value = "/getTaskStatusIsChanged/{id}")
+    public AjaxResult getTaskStatusIsChanged(@PathVariable("id") Long id){
+        return success(extractedFeaturesService.getTaskStatusIsChanged(id));
+    }
 }

+ 6 - 0
ips-admin/src/main/java/com/ips/system/controller/PreprocessedController.java

@@ -138,4 +138,10 @@ public class PreprocessedController extends BaseController
             return error("获取详情失败");
         }
     }
+
+    @PreAuthorize("@ss.hasPermi('biz:preprocessed:add')")
+    @GetMapping(value = "/getTaskStatusIsChanged/{id}")
+    public AjaxResult getTaskStatusIsChanged(@PathVariable("id") Long id){
+        return success(preprocessedService.getTaskStatusIsChanged(id));
+    }
 }

+ 6 - 0
ips-admin/src/main/java/com/ips/system/controller/TimeFrequencyImagesController.java

@@ -121,4 +121,10 @@ public class TimeFrequencyImagesController extends BaseController
             return error(errorMsg);
         }
     }
+
+    @PreAuthorize("@ss.hasPermi('biz:images:add')")
+    @GetMapping(value = "/getTaskStatusIsChanged/{id}")
+    public AjaxResult getTaskStatusIsChanged(@PathVariable("id") Long id){
+        return success(timeFrequencyImagesService.getTaskStatusIsChanged(id));
+    }
 }

+ 2 - 0
ips-admin/src/main/java/com/ips/system/mapper/BizTrainingMapper.java

@@ -58,4 +58,6 @@ public interface BizTrainingMapper
      * @return 结果
      */
     public int deleteBizTrainingByIds(Long[] ids);
+
+    Boolean getTaskStatusIsChanged(Long id);
 }

+ 2 - 0
ips-admin/src/main/java/com/ips/system/mapper/ClassifyTestMapper.java

@@ -58,4 +58,6 @@ public interface ClassifyTestMapper
      * @return 结果
      */
     public int deleteClassifyTestByIds(Long[] ids);
+
+    Boolean getTaskStatusIsChanged(Long id);
 }

+ 2 - 0
ips-admin/src/main/java/com/ips/system/mapper/DistillationMapper.java

@@ -58,4 +58,6 @@ public interface DistillationMapper
      * @return 结果
      */
     public int deleteDistillationByIds(Long[] ids);
+
+    Boolean getTaskStatusIsChanged(Long id);
 }

+ 2 - 0
ips-admin/src/main/java/com/ips/system/mapper/ExtractedFeaturesMapper.java

@@ -58,4 +58,6 @@ public interface ExtractedFeaturesMapper
      * @return 结果
      */
     public int deleteExtractedFeaturesByIds(Long[] ids);
+
+    Boolean getTaskStatusIsChanged(Long id);
 }

+ 2 - 0
ips-admin/src/main/java/com/ips/system/mapper/PreprocessedMapper.java

@@ -58,4 +58,6 @@ public interface PreprocessedMapper
      * @return 结果
      */
     public int deletePreprocessedByIds(Long[] ids);
+
+    Boolean getTaskStatusIsChanged(Long id);
 }

+ 2 - 0
ips-admin/src/main/java/com/ips/system/mapper/TimeFrequencyImagesMapper.java

@@ -58,4 +58,6 @@ public interface TimeFrequencyImagesMapper
      * @return 结果
      */
     public int deleteTimeFrequencyImagesByIds(Long[] ids);
+
+    Boolean getTaskStatusIsChanged(Long id);
 }

+ 2 - 0
ips-admin/src/main/java/com/ips/system/service/IBizTrainingService.java

@@ -64,4 +64,6 @@ public interface IBizTrainingService
     String run(Long id) throws JsonProcessingException;
 
     BizTraining getResultDetails(Long id);
+
+    Boolean getTaskStatusIsChanged(Long id);
 }

+ 2 - 0
ips-admin/src/main/java/com/ips/system/service/IClassifyTestService.java

@@ -64,4 +64,6 @@ public interface IClassifyTestService
     ClassifyTest getResultDetails(Long id);
 
     String run(Long id) throws JsonProcessingException;
+
+    Boolean getTaskStatusIsChanged(Long id);
 }

+ 2 - 0
ips-admin/src/main/java/com/ips/system/service/IDistillationService.java

@@ -64,4 +64,6 @@ public interface IDistillationService
     String run(Long id) throws JsonProcessingException;
 
     Distillation getResultDetails(Long id);
+
+    Boolean getTaskStatusIsChanged(Long id);
 }

+ 2 - 0
ips-admin/src/main/java/com/ips/system/service/IExtractedFeaturesService.java

@@ -64,4 +64,6 @@ public interface IExtractedFeaturesService
     String run(Long id) throws JsonProcessingException;
 
     ExtractedFeatures getResultDetails(Long id);
+
+    Boolean getTaskStatusIsChanged(Long id);
 }

+ 2 - 0
ips-admin/src/main/java/com/ips/system/service/IPreprocessedService.java

@@ -64,4 +64,6 @@ public interface IPreprocessedService
     String run(Long id);
 
     Preprocessed getResultDetails(Long id);
+
+    Boolean getTaskStatusIsChanged(Long id);
 }

+ 2 - 0
ips-admin/src/main/java/com/ips/system/service/ITimeFrequencyImagesService.java

@@ -60,4 +60,6 @@ public interface ITimeFrequencyImagesService
     public int deleteTimeFrequencyImagesById(Long id);
 
     String run(Long id);
+
+    Boolean getTaskStatusIsChanged(Long id);
 }

+ 5 - 0
ips-admin/src/main/java/com/ips/system/service/impl/BizTrainingServiceImpl.java

@@ -180,4 +180,9 @@ public class BizTrainingServiceImpl implements IBizTrainingService {
 //        }
         return bizTraining;
     }
+
+    @Override
+    public Boolean getTaskStatusIsChanged(Long id) {
+        return bizTrainingMapper.getTaskStatusIsChanged(id);
+    }
 }

+ 5 - 0
ips-admin/src/main/java/com/ips/system/service/impl/ClassifyTestServiceImpl.java

@@ -186,4 +186,9 @@ public class ClassifyTestServiceImpl implements IClassifyTestService
 //        }
         return classifyTest;
     }
+
+    @Override
+    public Boolean getTaskStatusIsChanged(Long id) {
+        return classifyTestMapper.getTaskStatusIsChanged(id);
+    }
 }

+ 5 - 0
ips-admin/src/main/java/com/ips/system/service/impl/DistillationServiceImpl.java

@@ -185,4 +185,9 @@ public class DistillationServiceImpl implements IDistillationService
 //        }
         return distillation;
     }
+
+    @Override
+    public Boolean getTaskStatusIsChanged(Long id) {
+        return distillationMapper.getTaskStatusIsChanged(id);
+    }
 }

+ 5 - 0
ips-admin/src/main/java/com/ips/system/service/impl/ExtractedFeaturesServiceImpl.java

@@ -181,4 +181,9 @@ public class ExtractedFeaturesServiceImpl implements IExtractedFeaturesService
         extractedFeatures.setParentFolderInfoDTOList(parentFolderInfoDTOList);
         return extractedFeatures;
     }
+
+    @Override
+    public Boolean getTaskStatusIsChanged(Long id) {
+        return extractedFeaturesMapper.getTaskStatusIsChanged(id);
+    }
 }

+ 4 - 0
ips-admin/src/main/java/com/ips/system/service/impl/PreprocessedServiceImpl.java

@@ -193,4 +193,8 @@ public class PreprocessedServiceImpl implements IPreprocessedService
         return preprocessed;
     }
 
+    @Override
+    public Boolean getTaskStatusIsChanged(Long id) {
+        return preprocessedMapper.getTaskStatusIsChanged(id);
+    }
 }

+ 5 - 0
ips-admin/src/main/java/com/ips/system/service/impl/TimeFrequencyImagesServiceImpl.java

@@ -172,4 +172,9 @@ public class TimeFrequencyImagesServiceImpl implements ITimeFrequencyImagesServi
         timeFrequencyImages.setEndTime(new Date());
         this.updateTimeFrequencyImages(timeFrequencyImages);
     }
+
+    @Override
+    public Boolean getTaskStatusIsChanged(Long id) {
+        return timeFrequencyImagesMapper.getTaskStatusIsChanged(id);
+    }
 }

+ 5 - 0
ips-admin/src/main/resources/mapper/biz/BizTrainingMapper.xml

@@ -131,4 +131,9 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             #{id}
         </foreach>
     </delete>
+    <select id="getTaskStatusIsChanged" parameterType="Long" resultType="boolean">
+        SELECT status != '1' AS isChanged
+        FROM biz_training
+        WHERE id = #{id}
+    </select>
 </mapper>

+ 5 - 0
ips-admin/src/main/resources/mapper/biz/ClassifyTestMapper.xml

@@ -136,4 +136,9 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             #{id}
         </foreach>
     </delete>
+    <select id="getTaskStatusIsChanged" parameterType="Long" resultType="boolean">
+        SELECT status != '1' AS isChanged
+        FROM biz_classify_test
+        WHERE id = #{id}
+    </select>
 </mapper>

+ 6 - 0
ips-admin/src/main/resources/mapper/biz/DistillationMapper.xml

@@ -131,4 +131,10 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             #{id}
         </foreach>
     </delete>
+
+    <select id="getTaskStatusIsChanged" parameterType="Long" resultType="boolean">
+        SELECT status != '1' AS isChanged
+        FROM biz_distillation
+        WHERE id = #{id}
+    </select>
 </mapper>

+ 5 - 0
ips-admin/src/main/resources/mapper/biz/ExtractedFeaturesMapper.xml

@@ -126,4 +126,9 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             #{id}
         </foreach>
     </delete>
+    <select id="getTaskStatusIsChanged" parameterType="Long" resultType="boolean">
+        SELECT status != '1' AS isChanged
+        FROM biz_extracted_features
+        WHERE id = #{id}
+    </select>
 </mapper>

+ 5 - 0
ips-admin/src/main/resources/mapper/biz/PreprocessedMapper.xml

@@ -126,4 +126,9 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             #{id}
         </foreach>
     </delete>
+    <select id="getTaskStatusIsChanged" parameterType="Long" resultType="boolean">
+        SELECT status != '1' AS isChanged
+        FROM biz_preprocessed
+        WHERE id = #{id}
+    </select>
 </mapper>

+ 5 - 0
ips-admin/src/main/resources/mapper/biz/TimeFrequencyImagesMapper.xml

@@ -123,4 +123,9 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             #{id}
         </foreach>
     </delete>
+    <select id="getTaskStatusIsChanged" parameterType="Long" resultType="boolean">
+        SELECT status != '1' AS isChanged
+        FROM biz_time_frequency_images
+        WHERE id = #{id}
+    </select>
 </mapper>

+ 8 - 0
ips-ui/src/api/biz/distillation.js

@@ -58,3 +58,11 @@ export function getResultDetails(id) {
     method: "get",
   });
 }
+
+// 获取运行结果详情
+export function getTaskStatusIsChanged(id) {
+  return request({
+    url: "/biz/distillation/getTaskStatusIsChanged/" + id,
+    method: "get",
+  });
+}

+ 8 - 0
ips-ui/src/api/biz/features.js

@@ -58,3 +58,11 @@ export function getResultDetails(id) {
     method: "get",
   });
 }
+
+// 获取运行结果详情
+export function getTaskStatusIsChanged(id) {
+  return request({
+    url: "/biz/features/getTaskStatusIsChanged/" + id,
+    method: "get",
+  });
+}

+ 8 - 0
ips-ui/src/api/biz/images.js

@@ -50,3 +50,11 @@ export function run(id) {
     method: "get",
   });
 }
+
+// 获取运行结果详情
+export function getTaskStatusIsChanged(id) {
+  return request({
+    url: "/biz/images/getTaskStatusIsChanged/" + id,
+    method: "get",
+  });
+}

+ 33 - 25
ips-ui/src/api/biz/preprocessed.js

@@ -1,60 +1,68 @@
-import request from '@/utils/request'
+import request from "@/utils/request";
 
 // 查询数据预处理列表
 export function listPreprocessed(query) {
   return request({
-    url: '/biz/preprocessed/list',
-    method: 'get',
-    params: query
-  })
+    url: "/biz/preprocessed/list",
+    method: "get",
+    params: query,
+  });
 }
 
 // 查询数据预处理详细
 export function getPreprocessed(id) {
   return request({
-    url: '/biz/preprocessed/' + id,
-    method: 'get'
-  })
+    url: "/biz/preprocessed/" + id,
+    method: "get",
+  });
 }
 
 // 新增数据预处理
 export function addPreprocessed(data) {
   return request({
-    url: '/biz/preprocessed',
-    method: 'post',
-    data: data
-  })
+    url: "/biz/preprocessed",
+    method: "post",
+    data: data,
+  });
 }
 
 // 修改数据预处理
 export function updatePreprocessed(data) {
   return request({
-    url: '/biz/preprocessed',
-    method: 'put',
-    data: data
-  })
+    url: "/biz/preprocessed",
+    method: "put",
+    data: data,
+  });
 }
 
 // 删除数据预处理
 export function delPreprocessed(id) {
   return request({
-    url: '/biz/preprocessed/' + id,
-    method: 'delete'
-  })
+    url: "/biz/preprocessed/" + id,
+    method: "delete",
+  });
 }
 
 // 运行数据预处理
 export function run(id) {
   return request({
-    url: '/biz/preprocessed/run/' + id,
-    method: 'get'
-  })
+    url: "/biz/preprocessed/run/" + id,
+    method: "get",
+  });
 }
 
 // 获取运行结果详情
 export function getResultDetails(id) {
   return request({
-    url: '/biz/preprocessed/getResultDetails/' + id,
-    method: 'get'
-  })
+    url: "/biz/preprocessed/getResultDetails/" + id,
+    method: "get",
+  });
+}
+
+// 获取运行结果详情
+export function getTaskStatusIsChanged(id) {
+  return request({
+    url: "/biz/preprocessed/getTaskStatusIsChanged/" + id,
+    method: "get",
+  });
 }

+ 8 - 0
ips-ui/src/api/biz/test.js

@@ -58,3 +58,11 @@ export function getResultDetails(id) {
     method: "get",
   });
 }
+
+// 获取运行结果详情
+export function getTaskStatusIsChanged(id) {
+  return request({
+    url: "/biz/test/getTaskStatusIsChanged/" + id,
+    method: "get",
+  });
+}

+ 8 - 0
ips-ui/src/api/biz/training.js

@@ -58,3 +58,11 @@ export function getResultDetails(id) {
     method: "get",
   });
 }
+
+// 获取运行结果详情
+export function getTaskStatusIsChanged(id) {
+  return request({
+    url: "/biz/training/getTaskStatusIsChanged/" + id,
+    method: "get",
+  });
+}

+ 58 - 0
ips-ui/src/views/biz/distillation/index.vue

@@ -299,6 +299,7 @@ import {
   updateDistillation,
   run,
   getResultDetails,
+  getTaskStatusIsChanged,
 } from "@/api/biz/distillation";
 
 import FolderPicker from "@/components/FolderPicker";
@@ -363,6 +364,8 @@ export default {
       logDialogVisible: false,
       currentLogUrl: "",
       dialogTitle: "",
+      runningTaskId: null,
+      taskPollingInterval: null,
     };
   },
   created() {
@@ -444,6 +447,8 @@ export default {
       const id = row.id;
       run(id).then((response) => {
         alert("任务开始运行!");
+        this.getList();
+        this.runTaskAndPollStatus(id);
       });
     },
     /** 提交按钮 */
@@ -538,6 +543,59 @@ export default {
         this.$message.error(`打开文件夹出错: ${error.message}`);
       }
     },
+    // 运行任务并开始轮询状态
+    runTaskAndPollStatus(id) {
+      this.runningTaskId = id;
+      try {
+        // 开始轮询任务状态
+        this.startPollingTaskStatus(id);
+      } catch (error) {
+        console.error("运行任务失败:", error);
+        this.clearPollingInterval();
+        throw error;
+      }
+    },
+
+    // 开始轮询任务状态
+    startPollingTaskStatus(id) {
+      // 先清除可能存在的已有定时器
+      this.clearPollingInterval();
+
+      // 立即查询一次状态
+      this.checkTaskStatus(id);
+
+      // 设置定时器,每3秒查询一次
+      this.taskPollingInterval = setInterval(() => {
+        this.checkTaskStatus(id);
+      }, 3000);
+    },
+
+    // 查询任务状态
+    checkTaskStatus(id) {
+      try {
+        getTaskStatusIsChanged(id).then((response) => {
+          if (response.data) {
+            // 这里根据你的实际状态判断
+            // 状态变化,更新列表并停止轮询
+            this.getList();
+            this.clearPollingInterval();
+            alert("任务已完成!");
+          }
+        });
+      } catch (error) {
+        console.error("查询任务状态失败:", error);
+        this.clearPollingInterval();
+      }
+    },
+
+    // 清除轮询定时器
+    clearPollingInterval() {
+      if (this.taskPollingInterval) {
+        clearInterval(this.taskPollingInterval);
+        this.taskPollingInterval = null;
+        this.runningTask = {};
+      }
+    },
   },
 };
 </script>

+ 58 - 0
ips-ui/src/views/biz/features/index.vue

@@ -329,6 +329,7 @@ import {
   updateFeatures,
   run,
   getResultDetails,
+  getTaskStatusIsChanged,
 } from "@/api/biz/features";
 
 import FolderPicker from "@/components/FolderPicker";
@@ -391,6 +392,8 @@ export default {
       currentLogUrl: "",
       dialogTitle: "",
       detailsUrl: "",
+      runningTaskId: null,
+      taskPollingInterval: null,
     };
   },
   created() {
@@ -472,6 +475,8 @@ export default {
       const id = row.id;
       run(id).then((response) => {
         alert("任务开始运行!");
+        this.getList();
+        this.runTaskAndPollStatus(id);
       });
     },
     /** 提交按钮 */
@@ -552,6 +557,59 @@ export default {
       this.dialogTitle = "日志";
       this.logDialogVisible = true;
     },
+    // 运行任务并开始轮询状态
+    runTaskAndPollStatus(id) {
+      this.runningTaskId = id;
+      try {
+        // 开始轮询任务状态
+        this.startPollingTaskStatus(id);
+      } catch (error) {
+        console.error("运行任务失败:", error);
+        this.clearPollingInterval();
+        throw error;
+      }
+    },
+
+    // 开始轮询任务状态
+    startPollingTaskStatus(id) {
+      // 先清除可能存在的已有定时器
+      this.clearPollingInterval();
+
+      // 立即查询一次状态
+      this.checkTaskStatus(id);
+
+      // 设置定时器,每3秒查询一次
+      this.taskPollingInterval = setInterval(() => {
+        this.checkTaskStatus(id);
+      }, 3000);
+    },
+
+    // 查询任务状态
+    checkTaskStatus(id) {
+      try {
+        getTaskStatusIsChanged(id).then((response) => {
+          if (response.data) {
+            // 这里根据你的实际状态判断
+            // 状态变化,更新列表并停止轮询
+            this.getList();
+            this.clearPollingInterval();
+            alert("任务已完成!");
+          }
+        });
+      } catch (error) {
+        console.error("查询任务状态失败:", error);
+        this.clearPollingInterval();
+      }
+    },
+
+    // 清除轮询定时器
+    clearPollingInterval() {
+      if (this.taskPollingInterval) {
+        clearInterval(this.taskPollingInterval);
+        this.taskPollingInterval = null;
+        this.runningTask = {};
+      }
+    },
   },
 };
 </script>

+ 58 - 0
ips-ui/src/views/biz/images/index.vue

@@ -244,6 +244,7 @@ import {
   addImages,
   updateImages,
   run,
+  getTaskStatusIsChanged,
 } from "@/api/biz/images";
 import { getOptionsByType } from "@/api/biz/config";
 import FolderPicker from "@/components/FolderPicker";
@@ -297,6 +298,8 @@ export default {
       logDialogVisible: false,
       currentLogUrl: "",
       dialogTitle: "",
+      runningTaskId: null,
+      taskPollingInterval: null,
     };
   },
   created() {
@@ -451,6 +454,8 @@ export default {
       run(id).then((response) => {
         alert("任务开始运行!");
       });
+      this.getList();
+      this.runTaskAndPollStatus(id);
     },
     openFolder(row) {
       try {
@@ -463,6 +468,59 @@ export default {
         this.$message.error(`打开文件夹出错: ${error.message}`);
       }
     },
+    // 运行任务并开始轮询状态
+    runTaskAndPollStatus(id) {
+      this.runningTaskId = id;
+      try {
+        // 开始轮询任务状态
+        this.startPollingTaskStatus(id);
+      } catch (error) {
+        console.error("运行任务失败:", error);
+        this.clearPollingInterval();
+        throw error;
+      }
+    },
+
+    // 开始轮询任务状态
+    startPollingTaskStatus(id) {
+      // 先清除可能存在的已有定时器
+      this.clearPollingInterval();
+
+      // 立即查询一次状态
+      this.checkTaskStatus(id);
+
+      // 设置定时器,每3秒查询一次
+      this.taskPollingInterval = setInterval(() => {
+        this.checkTaskStatus(id);
+      }, 3000);
+    },
+
+    // 查询任务状态
+    checkTaskStatus(id) {
+      try {
+        getTaskStatusIsChanged(id).then((response) => {
+          if (response.data) {
+            // 这里根据你的实际状态判断
+            // 状态变化,更新列表并停止轮询
+            this.getList();
+            this.clearPollingInterval();
+            alert("任务已完成!");
+          }
+        });
+      } catch (error) {
+        console.error("查询任务状态失败:", error);
+        this.clearPollingInterval();
+      }
+    },
+
+    // 清除轮询定时器
+    clearPollingInterval() {
+      if (this.taskPollingInterval) {
+        clearInterval(this.taskPollingInterval);
+        this.taskPollingInterval = null;
+        this.runningTask = {};
+      }
+    },
   },
 };
 </script>

+ 58 - 0
ips-ui/src/views/biz/preprocessed/index.vue

@@ -469,6 +469,7 @@ import {
   updatePreprocessed,
   run,
   getResultDetails,
+  getTaskStatusIsChanged,
 } from "@/api/biz/preprocessed";
 import { getStatic } from "@/api/biz/common";
 import { getOptionsByType } from "@/api/biz/config";
@@ -529,6 +530,8 @@ export default {
       currentLogUrl: "",
       dialogTitle: "",
       showParamsDialog: false,
+      runningTaskId: null,
+      taskPollingInterval: null,
     };
   },
   created() {
@@ -611,6 +614,8 @@ export default {
       run(id).then((response) => {
         alert("任务开始运行!");
       });
+      this.getList();
+      this.runTaskAndPollStatus(id);
     },
     /** 提交按钮 */
     submitForm() {
@@ -705,6 +710,59 @@ export default {
       this.dialogTitle = "日志";
       this.logDialogVisible = true;
     },
+    // 运行任务并开始轮询状态
+    runTaskAndPollStatus(id) {
+      this.runningTaskId = id;
+      try {
+        // 开始轮询任务状态
+        this.startPollingTaskStatus(id);
+      } catch (error) {
+        console.error("运行任务失败:", error);
+        this.clearPollingInterval();
+        throw error;
+      }
+    },
+
+    // 开始轮询任务状态
+    startPollingTaskStatus(id) {
+      // 先清除可能存在的已有定时器
+      this.clearPollingInterval();
+
+      // 立即查询一次状态
+      this.checkTaskStatus(id);
+
+      // 设置定时器,每3秒查询一次
+      this.taskPollingInterval = setInterval(() => {
+        this.checkTaskStatus(id);
+      }, 3000);
+    },
+
+    // 查询任务状态
+    checkTaskStatus(id) {
+      try {
+        getTaskStatusIsChanged(id).then((response) => {
+          if (response.data) {
+            // 这里根据你的实际状态判断
+            // 状态变化,更新列表并停止轮询
+            this.getList();
+            this.clearPollingInterval();
+            alert("任务已完成!");
+          }
+        });
+      } catch (error) {
+        console.error("查询任务状态失败:", error);
+        this.clearPollingInterval();
+      }
+    },
+
+    // 清除轮询定时器
+    clearPollingInterval() {
+      if (this.taskPollingInterval) {
+        clearInterval(this.taskPollingInterval);
+        this.taskPollingInterval = null;
+        this.runningTask = {};
+      }
+    },
   },
 };
 </script>

+ 58 - 0
ips-ui/src/views/biz/test/index.vue

@@ -302,6 +302,7 @@ import {
   updateTest,
   run,
   getResultDetails,
+  getTaskStatusIsChanged,
 } from "@/api/biz/test";
 import { getStatic } from "@/api/biz/common";
 import { getOptionsByType } from "@/api/biz/config";
@@ -365,6 +366,8 @@ export default {
       logDialogVisible: false,
       currentLogUrl: "",
       dialogTitle: "",
+      runningTaskId: null,
+      taskPollingInterval: null,
     };
   },
   created() {
@@ -447,6 +450,8 @@ export default {
       run(id).then((response) => {
         alert("任务开始运行!");
       });
+      this.getList();
+      this.runTaskAndPollStatus(id);
     },
     /** 提交按钮 */
     submitForm() {
@@ -540,6 +545,59 @@ export default {
         this.$message.error(`打开文件夹出错: ${error.message}`);
       }
     },
+    // 运行任务并开始轮询状态
+    runTaskAndPollStatus(id) {
+      this.runningTaskId = id;
+      try {
+        // 开始轮询任务状态
+        this.startPollingTaskStatus(id);
+      } catch (error) {
+        console.error("运行任务失败:", error);
+        this.clearPollingInterval();
+        throw error;
+      }
+    },
+
+    // 开始轮询任务状态
+    startPollingTaskStatus(id) {
+      // 先清除可能存在的已有定时器
+      this.clearPollingInterval();
+
+      // 立即查询一次状态
+      this.checkTaskStatus(id);
+
+      // 设置定时器,每3秒查询一次
+      this.taskPollingInterval = setInterval(() => {
+        this.checkTaskStatus(id);
+      }, 3000);
+    },
+
+    // 查询任务状态
+    checkTaskStatus(id) {
+      try {
+        getTaskStatusIsChanged(id).then((response) => {
+          if (response.data) {
+            // 这里根据你的实际状态判断
+            // 状态变化,更新列表并停止轮询
+            this.getList();
+            this.clearPollingInterval();
+            alert("任务已完成!");
+          }
+        });
+      } catch (error) {
+        console.error("查询任务状态失败:", error);
+        this.clearPollingInterval();
+      }
+    },
+
+    // 清除轮询定时器
+    clearPollingInterval() {
+      if (this.taskPollingInterval) {
+        clearInterval(this.taskPollingInterval);
+        this.taskPollingInterval = null;
+        this.runningTask = {};
+      }
+    },
   },
 };
 </script>

+ 58 - 0
ips-ui/src/views/biz/training/index.vue

@@ -299,6 +299,7 @@ import {
   updateTraining,
   run,
   getResultDetails,
+  getTaskStatusIsChanged,
 } from "@/api/biz/training";
 import { getStatic } from "@/api/biz/common";
 import { getOptionsByType } from "@/api/biz/config";
@@ -362,6 +363,8 @@ export default {
       logDialogVisible: false,
       currentLogUrl: "",
       dialogTitle: "",
+      runningTaskId: null,
+      taskPollingInterval: null,
     };
   },
   created() {
@@ -444,6 +447,8 @@ export default {
       run(id).then((response) => {
         alert("任务开始运行!");
       });
+      this.getList();
+      this.runTaskAndPollStatus(id);
     },
     /** 提交按钮 */
     submitForm() {
@@ -537,6 +542,59 @@ export default {
         this.$message.error(`打开文件夹出错: ${error.message}`);
       }
     },
+    // 运行任务并开始轮询状态
+    runTaskAndPollStatus(id) {
+      this.runningTaskId = id;
+      try {
+        // 开始轮询任务状态
+        this.startPollingTaskStatus(id);
+      } catch (error) {
+        console.error("运行任务失败:", error);
+        this.clearPollingInterval();
+        throw error;
+      }
+    },
+
+    // 开始轮询任务状态
+    startPollingTaskStatus(id) {
+      // 先清除可能存在的已有定时器
+      this.clearPollingInterval();
+
+      // 立即查询一次状态
+      this.checkTaskStatus(id);
+
+      // 设置定时器,每3秒查询一次
+      this.taskPollingInterval = setInterval(() => {
+        this.checkTaskStatus(id);
+      }, 3000);
+    },
+
+    // 查询任务状态
+    checkTaskStatus(id) {
+      try {
+        getTaskStatusIsChanged(id).then((response) => {
+          if (response.data) {
+            // 这里根据你的实际状态判断
+            // 状态变化,更新列表并停止轮询
+            this.getList();
+            this.clearPollingInterval();
+            alert("任务已完成!");
+          }
+        });
+      } catch (error) {
+        console.error("查询任务状态失败:", error);
+        this.clearPollingInterval();
+      }
+    },
+
+    // 清除轮询定时器
+    clearPollingInterval() {
+      if (this.taskPollingInterval) {
+        clearInterval(this.taskPollingInterval);
+        this.taskPollingInterval = null;
+        this.runningTask = {};
+      }
+    },
   },
 };
 </script>