diff --git a/VideoAnalysis/WebUI/src/api/videoTask.ts b/VideoAnalysis/WebUI/src/api/videoTask.ts index 1160f28..396ded4 100644 --- a/VideoAnalysis/WebUI/src/api/videoTask.ts +++ b/VideoAnalysis/WebUI/src/api/videoTask.ts @@ -65,3 +65,11 @@ export const RunningTaskList = (data: any) => { data }); }; + + +/** 展示数据 */ +export const ErrorTaskList = (data: any) => { + return http.request("post", "/api/VideoTask/ErrorTaskList", { + data + }); +}; \ No newline at end of file diff --git a/VideoAnalysis/WebUI/src/router/modules/home.ts b/VideoAnalysis/WebUI/src/router/modules/home.ts index 7a131e6..ef5acac 100644 --- a/VideoAnalysis/WebUI/src/router/modules/home.ts +++ b/VideoAnalysis/WebUI/src/router/modules/home.ts @@ -27,7 +27,7 @@ export default { component: () => import("@/views/welcome/showTask.vue"), meta: { title: "预览任务", - showLink: false + showLink: false } }, { @@ -36,7 +36,16 @@ export default { component: () => import("@/views/welcome/runningTask.vue"), meta: { title: "进行中任务", - showLink: true + showLink: true + } + }, + { + path: "/welcome/errorTask", + name: "runningTask", + component: () => import("@/views/welcome/errorTask.vue"), + meta: { + title: "错误任务", + showLink: true } } ] diff --git a/VideoAnalysis/WebUI/src/views/welcome/errorTask.vue b/VideoAnalysis/WebUI/src/views/welcome/errorTask.vue new file mode 100644 index 0000000..45787fb --- /dev/null +++ b/VideoAnalysis/WebUI/src/views/welcome/errorTask.vue @@ -0,0 +1,41 @@ + + + diff --git a/VideoAnalysis/WebUI/src/views/welcome/index.vue b/VideoAnalysis/WebUI/src/views/welcome/index.vue index 840e516..510fdca 100644 --- a/VideoAnalysis/WebUI/src/views/welcome/index.vue +++ b/VideoAnalysis/WebUI/src/views/welcome/index.vue @@ -211,12 +211,30 @@ const stepData = ref([

任务详情

-
+
+ 错误信息 + {{ props.row.TaskInfo.lastEnum }} + {{ props.row.TaskInfo.progress }} +
+
+ {{ value }} +
+
+
+
进度
{{ props.row.TaskInfo.lastEnum }} {{ props.row.TaskInfo.progress }}
+
操作
@@ -247,15 +265,6 @@ const stepData = ref([ />
-
- 错误信息 -
{{ props.row.TaskInfo?.errorMessage }}
-
@@ -312,8 +321,11 @@ const stepData = ref([ margin-right: 10px; } .InfoEx .content { + line-height: 16px; padding: 5px; } +.InfoEx .content div { +} /* 关键:让某个网格项占满一行(跨所有列) */ .grid_item_full_width { grid-column: 1 / -1; /* 从第1列跨到最后一列 */ diff --git a/VideoAnalysisCore/Common/RedisExpand.cs b/VideoAnalysisCore/Common/RedisExpand.cs index 3a131b6..01c76c2 100644 --- a/VideoAnalysisCore/Common/RedisExpand.cs +++ b/VideoAnalysisCore/Common/RedisExpand.cs @@ -363,12 +363,13 @@ namespace VideoAnalysisCore.Common var oldTaskCount = Redis.LLen(RedisExpandKey.IDTask); //重试任务并发过多可能会导致程序崩溃 // 未能重新分析的中断任务 则单独开一个网页来处理 - if (oldTaskCount > 0 && oldTaskCount < 10) + if (oldTaskCount > 0 ) { var oldTaskArr = Redis.LRange(RedisExpandKey.IDTask, 0, oldTaskCount); //不自动清理未完成任务 等待执行完毕/失败后自动清理 //Redis.LTrim(RedisExpandKey.IDTask, 1, 0);//删除 redis 列表 - foreach (var oldTask in oldTaskArr) + //最多执行5个上次中断/或者未完成的任务 + foreach (var oldTask in oldTaskArr.Take(5)) { _ = Task.Run(async () => { diff --git a/VideoAnalysisCore/Controllers/VideoTaskController.cs b/VideoAnalysisCore/Controllers/VideoTaskController.cs index 32ad05a..f435c79 100644 --- a/VideoAnalysisCore/Controllers/VideoTaskController.cs +++ b/VideoAnalysisCore/Controllers/VideoTaskController.cs @@ -251,6 +251,7 @@ namespace VideoAnalysisCore.Controllers ComeFrom = s.ComeFrom, MediaUrl = s.MediaUrl, CreateTime = s.CreateTime, + ErrorMessage = s.ErrorMessage, }); RefAsync total = 0; var data = await sqlquery.ToPageListAsync(model.PageIndex + 1, model.PageSize, total); @@ -357,7 +358,7 @@ namespace VideoAnalysisCore.Controllers /// - /// 预览任务结果 + /// 执行中的任务 /// /// 查询模型 /// @@ -383,5 +384,34 @@ namespace VideoAnalysisCore.Controllers return new PageResult() { Data = data, Total = total }; } + + + /// + /// 错误的任务 + /// + /// 查询模型 + /// + [HttpPost] + public async Task ErrorTaskList([FromBody] QueryRequestBase model) + { + var sqlquery = base.BaseQuery(model) + .Where(s => s.ErrorMessage!=null && s.ErrorMessage !="") + .Select(s => new VideoTask + { + Id = s.Id, + TagId = s.TagId, + VideoType = s.VideoType, + LastEnum = s.LastEnum, + Subject = s.Subject, + ComeFrom = s.ComeFrom, + MediaUrl = s.MediaUrl, + ErrorMessage = s.ErrorMessage, + CreateTime = s.CreateTime, + }); + RefAsync total = 0; + var data = await sqlquery.ToPageListAsync(model.PageIndex + 1, model.PageSize, total); + return new PageResult() { Data = data, Total = total }; + + } } }