提交 ffdf8ef8 编写于 作者: C Captain.B

Merge branch 'dev' of github.com:fit2cloudrd/metersphere-server into dev

......@@ -124,11 +124,17 @@ public class TestCaseNodeService {
testCases.forEach(testCase -> {
StringBuilder path = new StringBuilder(testCase.getNodePath());
List<String> list = Arrays.asList(path.toString().split("/"));
list.set(request.getLevel(), request.getName());
List<String> pathLists = Arrays.asList(path.toString().split("/"));
if (request.getLevel() <= pathLists.size()) {
pathLists.set(request.getLevel(), request.getName());
} else {
pathLists.add(request.getName());
}
path.delete( 0, path.length());
for (int i = 1; i < list.size(); i++) {
path = path.append("/").append(list.get(i));
for (int i = 1; i < pathLists.size(); i++) {
path = path.append("/").append(pathLists.get(i));
}
testCase.setNodePath(path.toString());
});
......
<template>
<el-card class="table-card" v-loading="result.loading">
<template v-slot:header>
<span class="title">{{$t('api_report.title')}}</span>
</template>
<el-table :data="tableData" class="table-content">
<el-table-column :label="$t('commons.name')" width="150" show-overflow-tooltip>
<template v-slot:default="scope">
<el-link type="info" @click="link(scope.row)">{{ scope.row.name }}</el-link>
</template>
</el-table-column>
<el-table-column width="250" :label="$t('commons.create_time')">
<template v-slot:default="scope">
<span>{{ scope.row.createTime | timestampFormatDate }}</span>
</template>
</el-table-column>
<el-table-column width="250" :label="$t('commons.update_time')">
<template v-slot:default="scope">
<span>{{ scope.row.updateTime | timestampFormatDate }}</span>
</template>
</el-table-column>
<el-table-column prop="status" :label="$t('commons.status')">
<template v-slot:default="{row}">
<ms-api-report-status :row="row"/>
</template>
</el-table-column>
</el-table>
</el-card>
</template>
<script>
import MsApiReportStatus from "../report/ApiReportStatus";
export default {
name: "MsApiReportRecentList",
components: {MsApiReportStatus},
data() {
return {
result: {},
tableData: [],
loading: false
}
},
methods: {
search() {
this.result = this.$get("/api/report/recent/5", response => {
this.tableData = response.data;
});
},
link(row) {
this.$router.push({
path: '/api/report/view/' + row.id,
})
}
},
created() {
this.search();
}
}
</script>
<style scoped>
</style>
<template>
<div>
<h1>API测试首页</h1>
</div>
<ms-container>
<ms-main-container>
<el-row :gutter="20">
<el-col :span="12">
<ms-api-test-recent-list/>
</el-col>
<el-col :span="12">
<ms-api-report-recent-list/>
</el-col>
</el-row>
</ms-main-container>
</ms-container>
</template>
<script>
export default {
name: "ApiTestHome"
}
import MsContainer from "../../common/components/MsContainer";
import MsMainContainer from "../../common/components/MsMainContainer";
import MsApiTestRecentList from "./ApiTestRecentList";
import MsApiReportRecentList from "./ApiReportRecentList";
export default {
name: "ApiTestHome",
components: {MsApiReportRecentList, MsApiTestRecentList, MsMainContainer, MsContainer}
}
</script>
<style scoped>
......
<template>
<el-card class="table-card" v-loading="result.loading">
<template v-slot:header>
<span class="title">{{$t('api_test.title')}}</span>
</template>
<el-table :data="tableData" class="table-content">
<el-table-column :label="$t('commons.name')" width="150" show-overflow-tooltip>
<template v-slot:default="scope">
<el-link type="info" @click="link(scope.row)">{{ scope.row.name }}</el-link>
</template>
</el-table-column>
<el-table-column prop="projectName" :label="$t('load_test.project_name')" width="150" show-overflow-tooltip/>
<el-table-column width="250" :label="$t('commons.create_time')">
<template v-slot:default="scope">
<span>{{ scope.row.createTime | timestampFormatDate }}</span>
</template>
</el-table-column>
<el-table-column width="250" :label="$t('commons.update_time')">
<template v-slot:default="scope">
<span>{{ scope.row.updateTime | timestampFormatDate }}</span>
</template>
</el-table-column>
<el-table-column prop="status" :label="$t('commons.status')">
<template v-slot:default="{row}">
<ms-api-test-status :row="row"/>
</template>
</el-table-column>
</el-table>
</el-card>
</template>
<script>
import MsApiTestStatus from "../test/ApiTestStatus";
export default {
name: "MsApiTestRecentList",
components: {MsApiTestStatus},
data() {
return {
result: {},
tableData: [],
loading: false
}
},
methods: {
search() {
this.result = this.$get("/api/recent/5", response => {
this.tableData = response.data;
});
},
link(row) {
this.$router.push({
path: '/api/test/edit?id=' + row.id,
})
}
},
created() {
this.search();
}
}
</script>
<style scoped>
</style>
<template>
<div class="container" v-loading="result.loading">
<div class="main-content">
<el-card class="table-card">
<ms-container>
<ms-main-container>
<el-card class="table-card" v-loading="result.loading">
<template v-slot:header>
<ms-table-header :condition.sync="condition" @search="search" :title="$t('commons.test')"
<ms-table-header :condition.sync="condition" @search="search" :title="$t('api_report.title')"
:show-create="false"/>
</template>
<el-table :data="tableData" class="table-content">
<el-table-column
prop="name"
:label="$t('commons.name')"
width="150"
show-overflow-tooltip>
<el-table-column prop="name" :label="$t('commons.name')" width="150" show-overflow-tooltip>
</el-table-column>
<!-- <el-table-column-->
<!-- prop="description"-->
<!-- :label="$t('commons.description')"-->
<!-- show-overflow-tooltip>-->
<!-- </el-table-column>-->
<el-table-column
width="250"
:label="$t('commons.create_time')">
<el-table-column width="250" :label="$t('commons.create_time')">
<template v-slot:default="scope">
<span>{{ scope.row.createTime | timestampFormatDate }}</span>
</template>
</el-table-column>
<el-table-column
width="250"
:label="$t('commons.update_time')">
<el-table-column width="250" :label="$t('commons.update_time')">
<template v-slot:default="scope">
<span>{{ scope.row.updateTime | timestampFormatDate }}</span>
</template>
</el-table-column>
<el-table-column
prop="status"
:label="$t('commons.status')">
<el-table-column prop="status" :label="$t('commons.status')">
<template v-slot:default="{row}">
<el-tag size="mini" type="info" v-if="row.status === 'Saved'">
{{ row.status }}
</el-tag>
<el-tag size="mini" type="primary" v-else-if="row.status === 'Starting'">
{{ row.status }}
</el-tag>
<el-tag size="mini" type="success" v-else-if="row.status === 'Running'">
{{ row.status }}
</el-tag>
<el-tag size="mini" type="warning" v-else-if="row.status === 'Reporting'">
{{ row.status }}
</el-tag>
<el-tag size="mini" type="info" v-else-if="row.status === 'Completed'">
{{ row.status }}
</el-tag>
<el-tooltip placement="top" v-else-if="row.status === 'Error'" effect="light">
<template v-slot:content>
<div>{{row.description}}</div>
</template>
<el-tag size="mini" type="danger">
{{ row.status }}
</el-tag>
</el-tooltip>
<span v-else>
{{ row.status }}
</span>
<ms-api-report-status :row="row"/>
</template>
</el-table-column>
<el-table-column
width="150"
:label="$t('commons.operating')">
<el-table-column width="150" :label="$t('commons.operating')">
<template v-slot:default="scope">
<el-button @click="handleView(scope.row)" type="primary" icon="el-icon-s-data" size="mini" circle/>
<el-button @click="handleDelete(scope.row)" type="danger" icon="el-icon-delete" size="mini" circle/>
......@@ -76,21 +34,23 @@
<ms-table-pagination :change="search" :current-page.sync="currentPage" :page-size.sync="pageSize"
:total="total"/>
</el-card>
</div>
</div>
</ms-main-container>
</ms-container>
</template>
<script>
import MsTablePagination from "../../common/pagination/TablePagination";
import MsTableHeader from "../../common/components/MsTableHeader";
import MsContainer from "../../common/components/MsContainer";
import MsMainContainer from "../../common/components/MsMainContainer";
import MsApiReportStatus from "./ApiReportStatus";
export default {
components: {MsTableHeader, MsTablePagination},
components: {MsApiReportStatus, MsMainContainer, MsContainer, MsTableHeader, MsTablePagination},
data() {
return {
result: {},
condition: {name: ""},
projectId: null,
tableData: [],
multipleSelection: [],
currentPage: 1,
......
<template>
<div>
<el-tag size="mini" type="primary" v-if="row.status === 'Starting'">
{{ row.status }}
</el-tag>
<el-tag size="mini" type="success" v-else-if="row.status === 'Running'">
{{ row.status }}
</el-tag>
<el-tag size="mini" type="warning" v-else-if="row.status === 'Reporting'">
{{ row.status }}
</el-tag>
<el-tooltip placement="top" v-else-if="row.status === 'Error'" effect="light">
<template v-slot:content>
<div>{{row.description}}</div>
</template>
<el-tag size="mini" type="danger">
{{ row.status }}
</el-tag>
</el-tooltip>
<el-tag size="mini" type="info">
{{ row.status }}
</el-tag>
</div>
</template>
<script>
export default {
name: "MsApiReportStatus",
props: {
row: Object
}
}
</script>
<style scoped>
</style>
......@@ -75,7 +75,7 @@
}
.scenario-result + .scenario-result {
border-top: 1px solid #EBEEF5;
border-top: 1px solid #DCDFE6;
}
.scenario-result .info {
......
<template>
<div class="container" v-loading="result.loading">
<div class="main-content">
<el-card class="table-card">
<ms-container>
<ms-main-container>
<el-card class="table-card" v-loading="result.loading">
<template v-slot:header>
<ms-table-header :condition.sync="condition" @search="search" :title="$t('commons.test')"
<ms-table-header :condition.sync="condition" @search="search" :title="$t('api_test.title')"
@create="create" :createTip="$t('load_test.create')"/>
</template>
<el-table :data="tableData" class="table-content">
<el-table-column
prop="name"
:label="$t('commons.name')"
width="150"
show-overflow-tooltip>
<el-table-column prop="name" :label="$t('commons.name')" width="150" show-overflow-tooltip>
</el-table-column>
<!-- <el-table-column-->
<!-- prop="description"-->
<!-- :label="$t('commons.description')"-->
<!-- show-overflow-tooltip>-->
<!-- </el-table-column>-->
<el-table-column
prop="projectName"
:label="$t('load_test.project_name')"
width="150"
show-overflow-tooltip>
<el-table-column prop="projectName" :label="$t('load_test.project_name')" width="150" show-overflow-tooltip>
</el-table-column>
<el-table-column
width="250"
:label="$t('commons.create_time')">
<el-table-column width="250" :label="$t('commons.create_time')">
<template v-slot:default="scope">
<span>{{ scope.row.createTime | timestampFormatDate }}</span>
</template>
</el-table-column>
<el-table-column
width="250"
:label="$t('commons.update_time')">
<el-table-column width="250" :label="$t('commons.update_time')">
<template v-slot:default="scope">
<span>{{ scope.row.updateTime | timestampFormatDate }}</span>
</template>
</el-table-column>
<el-table-column
prop="status"
:label="$t('commons.status')">
<el-table-column prop="status" :label="$t('commons.status')">
<template v-slot:default="{row}">
<el-tag size="mini" type="info" v-if="row.status === 'Saved'">
{{ row.status }}
</el-tag>
<el-tag size="mini" type="primary" v-else-if="row.status === 'Starting'">
{{ row.status }}
</el-tag>
<el-tag size="mini" type="success" v-else-if="row.status === 'Running'">
{{ row.status }}
</el-tag>
<el-tag size="mini" type="warning" v-else-if="row.status === 'Reporting'">
{{ row.status }}
</el-tag>
<el-tag size="mini" type="info" v-else-if="row.status === 'Completed'">
{{ row.status }}
</el-tag>
<el-tooltip placement="top" v-else-if="row.status === 'Error'" effect="light">
<template v-slot:content>
<div>{{row.description}}</div>
</template>
<el-tag size="mini" type="danger">
{{ row.status }}
</el-tag>
</el-tooltip>
<span v-else>
{{ row.status }}
</span>
<ms-api-test-status :row="row"/>
</template>
</el-table-column>
<el-table-column
width="150"
:label="$t('commons.operating')">
<el-table-column width="150" :label="$t('commons.operating')">
<template v-slot:default="scope">
<ms-table-operator @editClick="handleEdit(scope.row)" @deleteClick="handleDelete(scope.row)"/>
</template>
......@@ -81,17 +35,20 @@
<ms-table-pagination :change="search" :current-page.sync="currentPage" :page-size.sync="pageSize"
:total="total"/>
</el-card>
</div>
</div>
</ms-main-container>
</ms-container>
</template>
<script>
import MsTablePagination from "../../common/pagination/TablePagination";
import MsTableHeader from "../../common/components/MsTableHeader";
import MsTableOperator from "../../common/components/MsTableOperator";
import MsContainer from "../../common/components/MsContainer";
import MsMainContainer from "../../common/components/MsMainContainer";
import MsApiTestStatus from "./ApiTestStatus";
export default {
components: {MsTableHeader, MsTablePagination, MsTableOperator},
components: {MsApiTestStatus, MsMainContainer, MsContainer, MsTableHeader, MsTablePagination, MsTableOperator},
data() {
return {
result: {},
......
<template>
<div>
<el-tag size="mini" type="primary" v-if="row.status === 'Starting'">
{{ row.status }}
</el-tag>
<el-tag size="mini" type="success" v-else-if="row.status === 'Running'">
{{ row.status }}
</el-tag>
<el-tag size="mini" type="warning" v-else-if="row.status === 'Reporting'">
{{ row.status }}
</el-tag>
<el-tooltip placement="top" v-else-if="row.status === 'Error'" effect="light">
<template v-slot:content>
<div>{{row.description}}</div>
</template>
<el-tag size="mini" type="danger">
{{ row.status }}
</el-tag>
</el-tooltip>
<el-tag size="mini" type="info">
{{ row.status }}
</el-tag>
</div>
</template>
<script>
export default {
name: "MsApiTestStatus",
props: {
row: Object
}
}
</script>
<style scoped>
</style>
<template>
<div v-loading="result.loading" class="container">
<div class="main-content">
<el-card>
<ms-container>
<ms-main-container>
<el-card v-loading="result.loading">
<el-row>
<el-col :span="16">
<el-row>
......@@ -51,8 +51,8 @@
</el-tabs>
</el-card>
</div>
</div>
</ms-main-container>
</ms-container>
</template>
<script>
......@@ -60,6 +60,8 @@
import MsReportLogDetails from './components/LogDetails';
import MsReportRequestStatistics from './components/RequestStatistics';
import MsReportTestOverview from './components/TestOverview';
import MsContainer from "../../common/components/MsContainer";
import MsMainContainer from "../../common/components/MsMainContainer";
export default {
name: "PerformanceReportView",
......@@ -67,7 +69,9 @@
MsReportErrorLog,
MsReportLogDetails,
MsReportRequestStatistics,
MsReportTestOverview
MsReportTestOverview,
MsContainer,
MsMainContainer
},
data() {
return {
......
<template>
<div class="container" v-loading="result.loading">
<div class="main-content">
<el-card class="table-card">
<ms-container>
<ms-main-container>
<el-card class="table-card" v-loading="result.loading">
<template v-slot:header>
<div>
<el-row type="flex" justify="space-between" align="middle">
......@@ -84,17 +83,18 @@
<ms-table-pagination :change="initTableData" :current-page.sync="currentPage" :page-size.sync="pageSize"
:total="total"/>
</el-card>
</div>
</div>
</ms-main-container>
</ms-container>
</template>
<script>
import MsTablePagination from "../../common/pagination/TablePagination";
import MsContainer from "../../common/components/MsContainer";
import MsMainContainer from "../../common/components/MsMainContainer";
export default {
name: "PerformanceTestReport",
components: {MsTablePagination},
components: {MsTablePagination, MsContainer, MsMainContainer},
created: function () {
this.initTableData();
},
......
<template>
<div class="container" v-loading="result.loading">
<div class="main-content">
<el-card>
<ms-container>
<ms-main-container>
<el-card v-loading="result.loading">
<el-row>
<el-col :span="10">
<el-input :placeholder="$t('load_test.input_name')" v-model="testPlan.name" class="input-with-select">
......@@ -37,21 +37,25 @@
</el-tab-pane>
</el-tabs>
</el-card>
</div>
</div>
</ms-main-container>
</ms-container>
</template>
<script>
import PerformanceBasicConfig from "./components/PerformanceBasicConfig";
import PerformancePressureConfig from "./components/PerformancePressureConfig";
import PerformanceAdvancedConfig from "./components/PerformanceAdvancedConfig";
import MsContainer from "../../common/components/MsContainer";
import MsMainContainer from "../../common/components/MsMainContainer";
export default {
name: "EditPerformanceTestPlan",
components: {
PerformancePressureConfig,
PerformanceBasicConfig,
PerformanceAdvancedConfig
PerformanceAdvancedConfig,
MsContainer,
MsMainContainer
},
data() {
return {
......
<template>
<div class="container" v-loading="result.loading">
<div class="main-content">
<el-card class="table-card">
<ms-container>
<ms-main-container>
<el-card class="table-card" v-loading="result.loading">
<template v-slot:header>
<div>
<el-row type="flex" justify="space-between" align="middle">
......@@ -85,16 +85,23 @@
<ms-table-pagination :change="initTableData" :current-page.sync="currentPage" :page-size.sync="pageSize"
:total="total"/>
</el-card>
</div>
</div>
</ms-main-container>
</ms-container>
</template>
<script>
import MsTablePagination from "../../common/pagination/TablePagination";
import MsTableOperator from "../../common/components/MsTableOperator";
import MsContainer from "../../common/components/MsContainer";
import MsMainContainer from "../../common/components/MsMainContainer";
export default {
components: {MsTablePagination, MsTableOperator},
components: {
MsTablePagination,
MsTableOperator,
MsContainer,
MsMainContainer
},
data() {
return {
result: {},
......
......@@ -9,7 +9,7 @@
<el-table :data="items" style="width: 100%">
<el-table-column prop="name" :label="$t('commons.name')"/>
<el-table-column prop="description" :label="$t('commons.description')"/>
<el-table-column prop="workspaceName" label="所属工作空间"/>
<el-table-column prop="workspaceName" :label="$t('project.owning_workspace')"/>
<el-table-column>
<template v-slot:default="scope">
<ms-table-operator @editClick="edit(scope.row)" @deleteClick="del(scope.row)"/>
......
......@@ -35,7 +35,7 @@
padding: 20px;
}
.ms-main-container {
ms-main-container {
height: calc(100vh - 40px);
}
......
......@@ -12,10 +12,10 @@
<!--Personal information menu-->
<el-table :data="tableData" style="width: 100%">
<el-table-column prop="id" label="ID"/>
<el-table-column prop="name" :label="$t('commons.username')" width="120"/>
<el-table-column prop="name" :label="$t('commons.username')"/>
<el-table-column prop="email" :label="$t('commons.email')"/>
<el-table-column prop="phone" :label="$t('commons.phone')"/>
<el-table-column prop="createTime" :label="$t('commons.create_time')" width="180">
<el-table-column prop="createTime" :label="$t('commons.create_time')">
<template v-slot:default="scope">
<span>{{ scope.row.createTime | timestampFormatDate }}</span>
</template>
......
......@@ -8,7 +8,6 @@
</template>
<!-- system menu organization table-->
<el-table :data="tableData" style="width: 100%">
<el-table-column type="selection" width="55"/>
<el-table-column prop="name" :label="$t('commons.name')"/>
<el-table-column prop="description" :label="$t('commons.description')"/>
<el-table-column :label="$t('commons.member')">
......
......@@ -8,12 +8,11 @@
</template>
<el-table :data="tableData" style="width: 100%">
<el-table-column type="selection" width="55"/>
<el-table-column prop="id" label="ID"/>
<el-table-column prop="name" :label="$t('commons.username')" width="120"/>
<el-table-column prop="name" :label="$t('commons.username')"/>
<el-table-column prop="email" :label="$t('commons.email')"/>
<el-table-column prop="phone" :label="$t('commons.phone')"/>
<el-table-column prop="status" :label="$t('commons.status')" width="100">
<el-table-column prop="status" :label="$t('commons.status')">
<template v-slot:default="scope">
<el-switch v-model="scope.row.status"
active-color="#13ce66"
......
......@@ -212,6 +212,7 @@ export default {
'download_log_file': 'Download',
},
api_test: {
title: "Test",
save_and_run: "Save and Run",
run: "Run",
running: "Running",
......@@ -273,6 +274,7 @@ export default {
}
},
api_report: {
title: "Report",
request: "Request",
request_body: "Body",
request_headers: "Headers",
......
......@@ -212,6 +212,7 @@ export default {
'pressure_prediction_chart': '压力预估图',
},
api_test: {
title: "测试",
save_and_run: "保存并执行",
run: "执行",
running: "正在执行",
......@@ -273,6 +274,7 @@ export default {
}
},
api_report: {
title: "报告",
request: "请求",
request_body: "请求内容",
request_headers: "请求头",
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册