自动化测试执行日志和操作日志功能
This commit is contained in:
@@ -120,8 +120,9 @@ public class TestTaskController extends BaseController {
|
|||||||
@PostMapping("/run")
|
@PostMapping("/run")
|
||||||
public AjaxResult run(@RequestBody IDQO qo) {
|
public AjaxResult run(@RequestBody IDQO qo) {
|
||||||
// 异步执行任务
|
// 异步执行任务
|
||||||
|
String username = SecurityUtils.getUsername();
|
||||||
CompletableFuture.runAsync(() -> {
|
CompletableFuture.runAsync(() -> {
|
||||||
testTaskService.executeTestTaskById(qo.getId(), 2, null, jmeterHomePath, SecurityUtils.getUsername());
|
testTaskService.executeTestTaskById(qo.getId(), 2, null, jmeterHomePath, username);
|
||||||
});
|
});
|
||||||
return toAjax(true);
|
return toAjax(true);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -42,7 +42,7 @@ public class TestTaskLog extends BaseEntity
|
|||||||
private String operUser;
|
private String operUser;
|
||||||
|
|
||||||
/** 操作时间 */
|
/** 操作时间 */
|
||||||
@JsonFormat(pattern = "yyyy-MM-dd")
|
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
|
||||||
@Excel(name = "操作时间", width = 30, dateFormat = "yyyy-MM-dd")
|
@Excel(name = "操作时间", width = 30, dateFormat = "yyyy-MM-dd")
|
||||||
private Date operTime;
|
private Date operTime;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -30,13 +30,13 @@ public class TestTaskResult extends BaseEntity
|
|||||||
private Long taskId;
|
private Long taskId;
|
||||||
|
|
||||||
/** 触发时间 */
|
/** 触发时间 */
|
||||||
@JsonFormat(pattern = "yyyy-MM-dd")
|
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
|
||||||
@Excel(name = "触发时间", width = 30, dateFormat = "yyyy-MM-dd")
|
@Excel(name = "触发时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
|
||||||
private Date triggerTime;
|
private Date triggerTime;
|
||||||
|
|
||||||
/** 执行时间 */
|
/** 执行时间 */
|
||||||
@JsonFormat(pattern = "yyyy-MM-dd")
|
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
|
||||||
@Excel(name = "执行时间", width = 30, dateFormat = "yyyy-MM-dd")
|
@Excel(name = "执行时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
|
||||||
private Date startTime;
|
private Date startTime;
|
||||||
|
|
||||||
/** 触发方式:1-定时任务;2-手动 */
|
/** 触发方式:1-定时任务;2-手动 */
|
||||||
|
|||||||
@@ -1,60 +1,44 @@
|
|||||||
<template>
|
<template>
|
||||||
<div>
|
<div>
|
||||||
<div class="refresh">
|
<!-- <div class="refresh">-->
|
||||||
<div class="refresh-icon">
|
<!-- <div class="refresh-icon">-->
|
||||||
<i class="el-icon-refresh"></i>
|
<!-- <i class="el-icon-refresh"></i>-->
|
||||||
<span>刷新</span>
|
<!-- <span>刷新</span>-->
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<!-- <div class="chart-container">-->
|
|
||||||
<!-- <div class="chart-instance">-->
|
|
||||||
<!-- <div>定时任务执行记录</div>-->
|
|
||||||
<!-- <lineChart />-->
|
|
||||||
<!-- </div>-->
|
<!-- </div>-->
|
||||||
<!-- </div>-->
|
<!-- </div>-->
|
||||||
|
<!-- <div class="chart-container">-->
|
||||||
|
<!-- <div class="chart-instance">-->
|
||||||
|
<!-- <div>定时任务执行记录</div>-->
|
||||||
|
<!-- <lineChart />-->
|
||||||
|
<!-- </div>-->
|
||||||
|
<!-- </div>-->
|
||||||
<div class="table-content">
|
<div class="table-content">
|
||||||
<el-table :data="tableData" border style="width: 100%">
|
<el-table :data="tableData" border style="width: 100%">
|
||||||
<el-table-column prop="triggerTime" label="触发时间"> </el-table-column>
|
<el-table-column prop="triggerTime" label="触发时间"> </el-table-column>
|
||||||
<el-table-column prop="startTime" label="开始时间"> </el-table-column>
|
<el-table-column prop="startTime" label="开始时间"> </el-table-column>
|
||||||
<el-table-column prop="triggerMethod" label="触发方式">
|
<el-table-column prop="triggerType" label="触发方式" :formatter="row => ['','定时任务', '手动'][row.triggerType]">
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column prop="environment" label="执行环境"> </el-table-column>
|
<el-table-column prop="resultDesc" label="情况描述"> </el-table-column>
|
||||||
<el-table-column label="状态">
|
<el-table-column prop="status" label="状态" :formatter="row => ['','成功', '失败'][row.status]">
|
||||||
<template slot-scope="scope">
|
|
||||||
<div class="status-cell">
|
|
||||||
<span class="status-icon success"></span>
|
|
||||||
<span class="status-text">{{ scope.row.status }}</span>
|
|
||||||
</div>
|
|
||||||
</template>
|
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column label="发送状态">
|
<el-table-column prop="sendStatus" label="发送状态" :formatter="row => ['未发送','已发送'][row.sendStatus]">
|
||||||
<template slot-scope="scope">
|
|
||||||
<div class="status-cell">
|
|
||||||
<span class="status-icon pending"></span>
|
|
||||||
<span class="status-text">{{ scope.row.sendStatus }}</span>
|
|
||||||
</div>
|
|
||||||
</template>
|
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column prop="executionTime" label="执行耗时">
|
<el-table-column prop="costTime" label="执行耗时(毫秒)">
|
||||||
</el-table-column>
|
|
||||||
<el-table-column fixed="right" label="操作">
|
|
||||||
<template slot-scope="scope">
|
|
||||||
<el-button @click="handleClick(scope.row)" type="text" size="small">查看</el-button>
|
|
||||||
</template>
|
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
|
<!-- <el-table-column fixed="right" label="操作">-->
|
||||||
|
<!-- <template slot-scope="scope">-->
|
||||||
|
<!-- <el-button @click="handleClick(scope.row)" type="text" size="small">查看</el-button>-->
|
||||||
|
<!-- </template>-->
|
||||||
|
<!-- </el-table-column>-->
|
||||||
</el-table>
|
</el-table>
|
||||||
<div class="pagination">
|
<div>
|
||||||
<el-pagination
|
<pagination
|
||||||
background
|
v-show="total > 0"
|
||||||
@size-change="handleSizeChange"
|
:total="total"
|
||||||
@current-change="handleCurrentChange"
|
:page.sync="queryParams.pageNum"
|
||||||
:current-page="currentPage"
|
:limit.sync="queryParams.pageSize"
|
||||||
:page-sizes="[100, 200, 300, 400]"
|
@pagination="getData"
|
||||||
:page-size="100"
|
/>
|
||||||
layout="total, sizes, prev, pager, next, jumper"
|
|
||||||
:total="400"
|
|
||||||
>
|
|
||||||
</el-pagination>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -62,25 +46,36 @@
|
|||||||
|
|
||||||
<script>
|
<script>
|
||||||
import lineChart from "./lineChart.vue";
|
import lineChart from "./lineChart.vue";
|
||||||
|
import {taskResultListByTaskId} from "@/api/test/task";
|
||||||
export default {
|
export default {
|
||||||
components: {
|
components: {
|
||||||
lineChart,
|
lineChart,
|
||||||
},
|
},
|
||||||
|
mounted() {
|
||||||
|
// 在这里进行数据预处理
|
||||||
|
this.getData();
|
||||||
|
},
|
||||||
data() {
|
data() {
|
||||||
return {
|
return {
|
||||||
value: "",
|
value: "",
|
||||||
tableData: [],
|
tableData: [],
|
||||||
currentPage: 1,
|
total: 0,
|
||||||
|
queryParams: {
|
||||||
|
pageNum: 1,
|
||||||
|
pageSize: 10,
|
||||||
|
id: null,
|
||||||
|
},
|
||||||
};
|
};
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
handleClick(row) {
|
getData() {
|
||||||
this.$router.push({
|
this.tableData=[]
|
||||||
name: "Report",
|
this.queryParams.id = this.$route.query.id;
|
||||||
});
|
taskResultListByTaskId(this.queryParams).then(res => {
|
||||||
|
this.tableData = res.rows;
|
||||||
|
this.total = res.total;
|
||||||
|
})
|
||||||
},
|
},
|
||||||
handleSizeChange() {},
|
|
||||||
handleCurrentChange() {},
|
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
</script>
|
</script>
|
||||||
|
|||||||
@@ -1,73 +1,71 @@
|
|||||||
<template>
|
<template>
|
||||||
<div>
|
<div>
|
||||||
<!-- 时间选择组件 -->
|
<!-- 时间选择组件 -->
|
||||||
<div class="filter-container">
|
<!-- <div class="filter-container">-->
|
||||||
<el-date-picker
|
<!-- <el-date-picker-->
|
||||||
v-model="dateRange"
|
<!-- v-model="dateRange"-->
|
||||||
type="daterange"
|
<!-- type="daterange"-->
|
||||||
range-separator="~"
|
<!-- range-separator="~"-->
|
||||||
start-placeholder="开始日期"
|
<!-- start-placeholder="开始日期"-->
|
||||||
end-placeholder="结束日期"
|
<!-- end-placeholder="结束日期"-->
|
||||||
value-format="yyyy-MM-dd"
|
<!-- value-format="yyyy-MM-dd"-->
|
||||||
:default-value="['2025-02-16', '2025-02-19']"
|
<!-- :default-value="['', '']"-->
|
||||||
>
|
<!-- >-->
|
||||||
</el-date-picker>
|
<!-- </el-date-picker>-->
|
||||||
</div>
|
<!-- </div>-->
|
||||||
|
|
||||||
<!-- 表格 -->
|
<!-- 表格 -->
|
||||||
<el-table :data="tableData" border style="width: 100%">
|
<el-table :data="tableData" border style="width: 100%">
|
||||||
<el-table-column type="index" label="序号"> </el-table-column>
|
<el-table-column type="index" label="序号"> </el-table-column>
|
||||||
<el-table-column prop="operationTime" label="操作时间"> </el-table-column>
|
<el-table-column prop="operTime" label="操作时间"> </el-table-column>
|
||||||
<el-table-column prop="operator" label="操作人"> </el-table-column>
|
<el-table-column prop="operUser" label="操作人"> </el-table-column>
|
||||||
<el-table-column>
|
<el-table-column prop="operType" label="操作类型"> </el-table-column>
|
||||||
<template #header>
|
<el-table-column prop="operDetail" label="操作描述"> </el-table-column>
|
||||||
<span>ID</span>
|
|
||||||
<i class="el-icon-warning-outline" style="margin-left: 10px"></i>
|
|
||||||
</template>
|
|
||||||
<template slot-scope="scope">
|
|
||||||
<span>{{ scope.row.id }}</span>
|
|
||||||
<el-tooltip content="ID提示信息" placement="top">
|
|
||||||
<i
|
|
||||||
class="el-icon-info"
|
|
||||||
style="margin-left: 6px; color: #909399"
|
|
||||||
></i>
|
|
||||||
</el-tooltip>
|
|
||||||
</template>
|
|
||||||
</el-table-column>
|
|
||||||
<el-table-column>
|
|
||||||
<template #header>
|
|
||||||
<span>名称</span>
|
|
||||||
<i class="el-icon-warning-outline" style="margin-left: 10px"></i>
|
|
||||||
</template>
|
|
||||||
<template slot-scope="scope">
|
|
||||||
<span>{{ scope.row.name }}</span>
|
|
||||||
<el-tooltip content="名称提示信息" placement="top">
|
|
||||||
<i
|
|
||||||
class="el-icon-info"
|
|
||||||
style="margin-left: 6px; color: #909399"
|
|
||||||
></i>
|
|
||||||
</el-tooltip>
|
|
||||||
</template>
|
|
||||||
</el-table-column>
|
|
||||||
<el-table-column prop="operationType" label="操作类型"> </el-table-column>
|
|
||||||
</el-table>
|
</el-table>
|
||||||
|
<div>
|
||||||
|
<pagination
|
||||||
|
v-show="total > 0"
|
||||||
|
:total="total"
|
||||||
|
:page.sync="queryParams.pageNum"
|
||||||
|
:limit.sync="queryParams.pageSize"
|
||||||
|
@pagination="getData"
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
|
import {taskLogListByTaskId} from "@/api/test/task";
|
||||||
export default {
|
export default {
|
||||||
name: "operationRecords",
|
name: "operationRecords",
|
||||||
|
mounted() {
|
||||||
|
// 在这里进行数据预处理
|
||||||
|
// console.log(this.taskId);
|
||||||
|
this.getData();
|
||||||
|
},
|
||||||
data() {
|
data() {
|
||||||
return {
|
return {
|
||||||
// 时间选择组件的默认值
|
// 时间选择组件的默认值
|
||||||
dateRange: ["2025-02-16", "2025-02-19"],
|
dateRange: ["", ""],
|
||||||
// 表格数据(暂时为空)
|
// 表格数据(暂时为空)
|
||||||
|
value: "",
|
||||||
tableData: [],
|
tableData: [],
|
||||||
|
total: 0,
|
||||||
|
queryParams: {
|
||||||
|
pageNum: 1,
|
||||||
|
pageSize: 10,
|
||||||
|
id: null,
|
||||||
|
},
|
||||||
};
|
};
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
handleClick(row) {
|
getData() {
|
||||||
console.log(row);
|
this.tableData=[]
|
||||||
|
this.queryParams.id = this.$route.query.id;
|
||||||
|
taskLogListByTaskId(this.queryParams).then(res => {
|
||||||
|
this.tableData = res.rows;
|
||||||
|
this.total = res.total;
|
||||||
|
})
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
|||||||
Reference in New Issue
Block a user