riku
2023-12-26 aa1f56d5ef2d48b980a2fab3e88379efbe09b0d1
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
<template>
  <el-card shadow="never" :body-style="{ padding: 0 }">
    <template #header>
      <el-row justify="space-between">
        <div>
          <div><el-text tag="b" size="large">自动评估任务</el-text></div>
          <el-text size="small" type="info">显示当前正在进行的自动评估任务状态</el-text>
        </div>
        <el-button
          icon="Refresh"
          type="primary"
          size="default"
          :loading="loading"
          @click="fetchTask"
          >刷新任务</el-button
        >
      </el-row>
      <el-row>
        <el-button type="default" size="default" @click="newTestTask">新增测试任务</el-button>
        <el-button type="default" size="default" @click="startNewTestTask"
          >新建并运行一个测试任务</el-button
        >
        <el-button type="default" size="default" @click="shutDownTask"
          >强制关闭所有测试任务</el-button
        >
      </el-row>
    </template>
    <el-scrollbar height="70vh" class="scrollbar">
      <template v-for="(v, i) in taskList" :key="i">
        <FYBgTaskCard
          :model="v"
          @start="startTask"
          @shutDown="shutDownTask"
          @remove="removeTask"
          @gotoResult="gotoResult"
        ></FYBgTaskCard>
      </template>
    </el-scrollbar>
  </el-card>
</template>
<script>
/**
 * 自动评估任务管理
 */
import { useFetchData } from '@/composables/fetchData';
import bgtaskApi from '@/api/fysp/bgtaskApi';
import { enumBgTask, BG_TASK_TYPE } from '@/enum/bgTask';
 
export default {
  setup() {
    const { loading, fetchData } = useFetchData();
    return { loading, fetchData };
  },
  data() {
    return {
      taskList: [],
      taskIndex: 0
    };
  },
  methods: {
    _getParam(taskStatus) {
      return {
        type: taskStatus.type,
        id: taskStatus.id
      };
    },
    fetchTask() {
      this.fetchData((page, pageSize) => {
        return bgtaskApi
          .fetchTaskStatus({
            type: BG_TASK_TYPE.TEST.name
          })
          .then((res) => {
            this.taskList = res.data;
          });
      });
    },
    startTask(taskStatus) {
      this.fetchData((page, pageSize) => {
        return bgtaskApi.startTask(this._getParam(taskStatus)).then((res) => {
          this.taskList = this.taskList.concat(res.data);
        });
      });
    },
    newTestTask() {
      this.fetchData((page, pageSize) => {
        return bgtaskApi.newTestTask(`Test-Task-${++this.taskIndex}`).then((res) => {
          this.taskList = this.taskList.concat(res.data);
        });
      });
    },
    startNewTestTask() {
      this.fetchData((page, pageSize) => {
        return bgtaskApi.startNewTestTask(`Test-Task-${++this.taskIndex}`).then((res) => {
          this.taskList = this.taskList.concat(res.data);
        });
      });
    },
    shutDownTask(taskStatus) {
      this.fetchData((page, pageSize) => {
        return bgtaskApi.shutDownTask(this._getParam(taskStatus)).then((res) => {
          res.data.forEach((e) => {
            let v = this.taskList.find((value) => {
              return value.id == e.id;
            });
            const i = this.taskList.indexOf(v);
            this.taskList[i] = e;
          });
        });
      });
    },
    removeTask(taskStatus){
 
    },
    gotoResult(taskStatus) {
 
    }
  },
};
</script>
<style scoped>
.scrollbar {
  padding: 8px;
}
</style>