diff --git a/backend/routes/task.go b/backend/routes/task.go
index 07105f2d..d1071881 100644
--- a/backend/routes/task.go
+++ b/backend/routes/task.go
@@ -100,6 +100,9 @@ func PutTask(c *gin.Context) {
return
}
+ // 任务ID
+ var taskIds []string
+
if reqBody.RunType == constants.RunTypeAllNodes {
// 所有节点
nodes, err := model.GetNodeList(nil)
@@ -115,10 +118,13 @@ func PutTask(c *gin.Context) {
UserId: services.GetCurrentUser(c).Id,
}
- if err := services.AddTask(t); err != nil {
+ id, err := services.AddTask(t);
+ if err != nil {
HandleError(http.StatusInternalServerError, c, err)
return
}
+
+ taskIds = append(taskIds, id)
}
} else if reqBody.RunType == constants.RunTypeRandom {
// 随机
@@ -127,10 +133,12 @@ func PutTask(c *gin.Context) {
Param: reqBody.Param,
UserId: services.GetCurrentUser(c).Id,
}
- if err := services.AddTask(t); err != nil {
+ id, err := services.AddTask(t);
+ if err != nil {
HandleError(http.StatusInternalServerError, c, err)
return
}
+ taskIds = append(taskIds, id)
} else if reqBody.RunType == constants.RunTypeSelectedNodes {
// 指定节点
for _, nodeId := range reqBody.NodeIds {
@@ -141,16 +149,19 @@ func PutTask(c *gin.Context) {
UserId: services.GetCurrentUser(c).Id,
}
- if err := services.AddTask(t); err != nil {
+ id, err := services.AddTask(t);
+ if err != nil {
HandleError(http.StatusInternalServerError, c, err)
return
}
+ taskIds = append(taskIds, id)
}
} else {
HandleErrorF(http.StatusInternalServerError, c, "invalid run_type")
return
}
- HandleSuccess(c)
+
+ HandleSuccessData(c, taskIds)
}
func DeleteTaskByStatus(c *gin.Context) {
diff --git a/backend/services/schedule.go b/backend/services/schedule.go
index a179b50f..1bf70e8a 100644
--- a/backend/services/schedule.go
+++ b/backend/services/schedule.go
@@ -37,7 +37,7 @@ func AddScheduleTask(s model.Schedule) func() {
UserId: s.UserId,
}
- if err := AddTask(t); err != nil {
+ if _, err := AddTask(t); err != nil {
return
}
}
@@ -49,7 +49,7 @@ func AddScheduleTask(s model.Schedule) func() {
Param: s.Param,
UserId: s.UserId,
}
- if err := AddTask(t); err != nil {
+ if _, err := AddTask(t); err != nil {
log.Errorf(err.Error())
debug.PrintStack()
return
@@ -65,7 +65,7 @@ func AddScheduleTask(s model.Schedule) func() {
UserId: s.UserId,
}
- if err := AddTask(t); err != nil {
+ if _, err := AddTask(t); err != nil {
return
}
}
diff --git a/backend/services/task.go b/backend/services/task.go
index f911159d..c71d344f 100644
--- a/backend/services/task.go
+++ b/backend/services/task.go
@@ -666,7 +666,7 @@ func CancelTask(id string) (err error) {
return nil
}
-func AddTask(t model.Task) error {
+func AddTask(t model.Task) (string, error) {
// 生成任务ID
id := uuid.NewV4()
t.Id = id.String()
@@ -683,17 +683,17 @@ func AddTask(t model.Task) error {
if err := model.AddTask(t); err != nil {
log.Errorf(err.Error())
debug.PrintStack()
- return err
+ return t.Id, err
}
// 加入任务队列
if err := AssignTask(t); err != nil {
log.Errorf(err.Error())
debug.PrintStack()
- return err
+ return t.Id, err
}
- return nil
+ return t.Id, nil
}
func GetTaskEmailMarkdownContent(t model.Task, s model.Spider) string {
diff --git a/frontend/src/components/Common/CrawlConfirmDialog.vue b/frontend/src/components/Common/CrawlConfirmDialog.vue
index d25bfaaa..6739ae9e 100644
--- a/frontend/src/components/Common/CrawlConfirmDialog.vue
+++ b/frontend/src/components/Common/CrawlConfirmDialog.vue
@@ -30,13 +30,22 @@
-
- 我已阅读并同意 《免责声明》 所有内容
+
+
+
+ 跳转到任务详情页
+
+
+
{{$t('Cancel')}}
- {{$t('Confirm')}}
+ {{$t('Confirm')}}
+
@@ -64,7 +73,8 @@ export default {
param: '',
nodeList: []
},
- isAllowDisclaimer: true
+ isAllowDisclaimer: true,
+ isRedirect: true
}
},
methods: {
@@ -72,20 +82,27 @@ export default {
this.$emit('close')
},
onConfirm () {
- this.$refs['form'].validate(res => {
- if (!res) return
+ this.$refs['form'].validate(async valid => {
+ if (!valid) return
- this.$store.dispatch('spider/crawlSpider', {
+ const res = await this.$store.dispatch('spider/crawlSpider', {
spiderId: this.spiderId,
nodeIds: this.form.nodeIds,
param: this.form.param,
runType: this.form.runType
})
- .then(() => {
- this.$message.success(this.$t('A task has been scheduled successfully'))
- })
+
+ const id = res.data.data[0]
+
+ this.$message.success(this.$t('A task has been scheduled successfully'))
+
this.$emit('close')
this.$st.sendEv('爬虫确认', '确认运行', this.form.runType)
+
+ if (this.isRedirect) {
+ this.$router.push('/tasks/' + id)
+ this.$st.sendEv('爬虫确认', '跳转到任务详情')
+ }
})
},
onClickDisclaimer () {
diff --git a/frontend/src/views/node/NodeDetail.vue b/frontend/src/views/node/NodeDetail.vue
index ba53dcb8..24b81b63 100644
--- a/frontend/src/views/node/NodeDetail.vue
+++ b/frontend/src/views/node/NodeDetail.vue
@@ -18,7 +18,7 @@
-
+
@@ -136,8 +136,8 @@ export default {
display: flex;
align-items: center;
position: absolute;
- right: 20px;
- margin-top: -7px;
+ right: 30px;
+ margin-top: 4px;
/*float: right;*/
z-index: 999;
}
@@ -147,6 +147,8 @@ export default {
}
.label {
+ color: #909399;
+ font-weight: 100;
width: 100px;
text-align: right;
}
diff --git a/frontend/src/views/task/TaskDetail.vue b/frontend/src/views/task/TaskDetail.vue
index 39aca864..a5eec74d 100644
--- a/frontend/src/views/task/TaskDetail.vue
+++ b/frontend/src/views/task/TaskDetail.vue
@@ -10,14 +10,12 @@
-
+
-
-
-
+