refactor(性能测试): 优化性能测试报告页面的批量操作
This commit is contained in:
parent
820e98396d
commit
b9455c1507
|
@ -1,13 +1,13 @@
|
||||||
package io.metersphere.performance.controller.request;
|
package io.metersphere.performance.controller.request;
|
||||||
|
|
||||||
import lombok.Getter;
|
import io.metersphere.track.request.testplancase.TestPlanFuncCaseConditions;
|
||||||
import lombok.Setter;
|
import lombok.Data;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
@Getter
|
@Data
|
||||||
@Setter
|
|
||||||
public class DeleteReportRequest {
|
public class DeleteReportRequest {
|
||||||
|
|
||||||
private List<String> ids;
|
private List<String> ids;
|
||||||
|
private String projectId;
|
||||||
|
private TestPlanFuncCaseConditions condition;
|
||||||
}
|
}
|
||||||
|
|
|
@ -347,11 +347,20 @@ public class PerformanceReportService {
|
||||||
loadTestReportMapper.updateByPrimaryKeySelective(report);
|
loadTestReportMapper.updateByPrimaryKeySelective(report);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void deleteReportBatch(DeleteReportRequest reportRequest) {
|
public void deleteReportBatch(DeleteReportRequest request) {
|
||||||
List<String> ids = reportRequest.getIds();
|
ServiceUtils.getSelectAllIds(request, request.getCondition(),
|
||||||
|
(query) -> getLoadTestReportIds(request.getProjectId()));
|
||||||
|
|
||||||
|
List<String> ids = request.getIds();
|
||||||
ids.forEach(this::deleteReport);
|
ids.forEach(this::deleteReport);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private List<String> getLoadTestReportIds(String projectId) {
|
||||||
|
ReportRequest request = new ReportRequest();
|
||||||
|
request.setProjectId(projectId);
|
||||||
|
return this.getReportList(request).stream().map(LoadTestReport::getId).collect(Collectors.toList());
|
||||||
|
}
|
||||||
|
|
||||||
public List<ChartsData> getErrorChartData(String id) {
|
public List<ChartsData> getErrorChartData(String id) {
|
||||||
if (isReportError(id)) {
|
if (isReportError(id)) {
|
||||||
return Collections.emptyList();
|
return Collections.emptyList();
|
||||||
|
|
|
@ -6,22 +6,24 @@
|
||||||
<ms-table-header :condition.sync="condition" @search="search"
|
<ms-table-header :condition.sync="condition" @search="search"
|
||||||
:show-create="false"/>
|
:show-create="false"/>
|
||||||
</template>
|
</template>
|
||||||
|
<ms-table
|
||||||
<el-table v-loading="result.loading"
|
v-loading="result.loading"
|
||||||
border :data="tableData" class="adjust-table test-content"
|
:data="tableData"
|
||||||
@select-all="handleSelectAll"
|
:condition="condition"
|
||||||
@select="handleSelect"
|
:page-size="pageSize"
|
||||||
@sort-change="sort"
|
:total="total"
|
||||||
@filter-change="filter"
|
:operators="operators"
|
||||||
:height="screenHeight"
|
:screenHeight="screenHeight"
|
||||||
>
|
:field-key="tableHeaderKey"
|
||||||
<el-table-column
|
:remember-order="true"
|
||||||
type="selection"/>
|
row-key="id"
|
||||||
<el-table-column width="40" :resizable="false" align="center">
|
:row-order-group-id="projectId"
|
||||||
<template v-slot:default="scope">
|
:batch-operators="buttons"
|
||||||
<show-more-btn :is-show="scope.row.showMore" :buttons="buttons" :size="selectRows.size"/>
|
operator-width="130px"
|
||||||
</template>
|
:screen-height="screenHeight"
|
||||||
</el-table-column>
|
@refresh="search"
|
||||||
|
:disable-header-config="true"
|
||||||
|
ref="table">
|
||||||
<el-table-column
|
<el-table-column
|
||||||
prop="testName"
|
prop="testName"
|
||||||
:label="$t('report.test_name')"
|
:label="$t('report.test_name')"
|
||||||
|
@ -113,22 +115,7 @@
|
||||||
<ms-performance-report-status :row="row"/>
|
<ms-performance-report-status :row="row"/>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column
|
</ms-table>
|
||||||
min-width="130"
|
|
||||||
:label="$t('commons.operating')">
|
|
||||||
<template v-slot:default="scope">
|
|
||||||
<ms-table-operator-button :tip="$t('api_report.detail')" icon="el-icon-s-data"
|
|
||||||
v-permission="['PROJECT_PERFORMANCE_REPORT:READ']"
|
|
||||||
@exec="handleView(scope.row)" type="primary"/>
|
|
||||||
<ms-table-operator-button :tip="$t('load_test.report.diff')" icon="el-icon-s-operation"
|
|
||||||
v-permission="['PROJECT_PERFORMANCE_REPORT:READ+COMPARE']"
|
|
||||||
@exec="handleDiff(scope.row)" type="warning"/>
|
|
||||||
<ms-table-operator-button :tip="$t('api_report.delete')"
|
|
||||||
v-permission="['PROJECT_PERFORMANCE_REPORT:READ+DELETE']"
|
|
||||||
icon="el-icon-delete" @exec="handleDelete(scope.row)" type="danger"/>
|
|
||||||
</template>
|
|
||||||
</el-table-column>
|
|
||||||
</el-table>
|
|
||||||
<ms-table-pagination :change="initTableData" :current-page.sync="currentPage" :page-size.sync="pageSize"
|
<ms-table-pagination :change="initTableData" :current-page.sync="currentPage" :page-size.sync="pageSize"
|
||||||
:total="total"/>
|
:total="total"/>
|
||||||
</el-card>
|
</el-card>
|
||||||
|
@ -150,15 +137,17 @@ import ReportTriggerModeItem from "../../common/tableItem/ReportTriggerModeItem"
|
||||||
import {REPORT_CONFIGS} from "../../common/components/search/search-components";
|
import {REPORT_CONFIGS} from "../../common/components/search/search-components";
|
||||||
import MsTableHeader from "../../common/components/MsTableHeader";
|
import MsTableHeader from "../../common/components/MsTableHeader";
|
||||||
import ShowMoreBtn from "../../track/case/components/ShowMoreBtn";
|
import ShowMoreBtn from "../../track/case/components/ShowMoreBtn";
|
||||||
import {_filter, _sort, getLastTableSortField, saveLastTableSortField} from "@/common/js/tableUtils";
|
import {_filter, _sort, buildBatchParam, getLastTableSortField, saveLastTableSortField} from "@/common/js/tableUtils";
|
||||||
import MsDialogFooter from "@/business/components/common/components/MsDialogFooter";
|
import MsDialogFooter from "@/business/components/common/components/MsDialogFooter";
|
||||||
import SameTestReports from "@/business/components/performance/report/components/SameTestReports";
|
import SameTestReports from "@/business/components/performance/report/components/SameTestReports";
|
||||||
import MsRenameReportDialog from "@/business/components/common/components/report/MsRenameReportDialog";
|
import MsRenameReportDialog from "@/business/components/common/components/report/MsRenameReportDialog";
|
||||||
import MsTableColumn from "@/business/components/common/components/table/MsTableColumn";
|
import MsTableColumn from "@/business/components/common/components/table/MsTableColumn";
|
||||||
|
import MsTable from "@/business/components/common/components/table/MsTable";
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
name: "PerformanceTestReportList",
|
name: "PerformanceTestReportList",
|
||||||
components: {
|
components: {
|
||||||
|
MsTable,
|
||||||
SameTestReports,
|
SameTestReports,
|
||||||
MsDialogFooter,
|
MsDialogFooter,
|
||||||
MsTableHeader,
|
MsTableHeader,
|
||||||
|
@ -188,7 +177,6 @@ export default {
|
||||||
},
|
},
|
||||||
projectId: null,
|
projectId: null,
|
||||||
tableData: [],
|
tableData: [],
|
||||||
multipleSelection: [],
|
|
||||||
currentPage: 1,
|
currentPage: 1,
|
||||||
pageSize: 10,
|
pageSize: 10,
|
||||||
total: 0,
|
total: 0,
|
||||||
|
@ -216,6 +204,28 @@ export default {
|
||||||
name: this.$t('report.batch_delete'), handleClick: this.handleBatchDelete
|
name: this.$t('report.batch_delete'), handleClick: this.handleBatchDelete
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
|
operators: [
|
||||||
|
{
|
||||||
|
tip: this.$t('api_report.detail'),
|
||||||
|
icon: "el-icon-s-data",
|
||||||
|
exec: this.handleView,
|
||||||
|
type: 'primary',
|
||||||
|
permissions: ['PROJECT_PERFORMANCE_REPORT:READ']
|
||||||
|
},
|
||||||
|
{
|
||||||
|
tip: this.$t('load_test.report.diff'),
|
||||||
|
icon: "el-icon-s-operation",
|
||||||
|
type: "warning",
|
||||||
|
exec: this.handleDiff,
|
||||||
|
permissions: ['PROJECT_PERFORMANCE_REPORT:READ+COMPARE']
|
||||||
|
}, {
|
||||||
|
tip: this.$t('commons.delete'),
|
||||||
|
icon: "el-icon-delete",
|
||||||
|
type: "danger",
|
||||||
|
exec: this.handleDelete,
|
||||||
|
permissions: ['PROJECT_PERFORMANCE_REPORT:READ+DELETE']
|
||||||
|
}
|
||||||
|
],
|
||||||
selectRows: new Set(),
|
selectRows: new Set(),
|
||||||
versionFilters: [],
|
versionFilters: [],
|
||||||
versionOptions: [],
|
versionOptions: [],
|
||||||
|
@ -303,9 +313,6 @@ export default {
|
||||||
buildPagePath(path) {
|
buildPagePath(path) {
|
||||||
return path + "/" + this.currentPage + "/" + this.pageSize;
|
return path + "/" + this.currentPage + "/" + this.pageSize;
|
||||||
},
|
},
|
||||||
handleSelectionChange(val) {
|
|
||||||
this.multipleSelection = val;
|
|
||||||
},
|
|
||||||
handleRename(report) {
|
handleRename(report) {
|
||||||
this.$prompt(this.$t('commons.input_name'), '', {
|
this.$prompt(this.$t('commons.input_name'), '', {
|
||||||
confirmButtonText: this.$t('commons.confirm'),
|
confirmButtonText: this.$t('commons.confirm'),
|
||||||
|
@ -366,45 +373,19 @@ export default {
|
||||||
_filter(filters, this.condition);
|
_filter(filters, this.condition);
|
||||||
this.initTableData();
|
this.initTableData();
|
||||||
},
|
},
|
||||||
handleSelect(selection, row) {
|
|
||||||
if (this.selectRows.has(row)) {
|
|
||||||
this.$set(row, "showMore", false);
|
|
||||||
this.selectRows.delete(row);
|
|
||||||
} else {
|
|
||||||
this.$set(row, "showMore", true);
|
|
||||||
this.selectRows.add(row);
|
|
||||||
}
|
|
||||||
},
|
|
||||||
saveSortField(key, orders) {
|
saveSortField(key, orders) {
|
||||||
saveLastTableSortField(key, JSON.stringify(orders));
|
saveLastTableSortField(key, JSON.stringify(orders));
|
||||||
},
|
},
|
||||||
handleSelectAll(selection) {
|
|
||||||
if (selection.length > 0) {
|
|
||||||
this.tableData.forEach(item => {
|
|
||||||
this.$set(item, "showMore", true);
|
|
||||||
this.selectRows.add(item);
|
|
||||||
});
|
|
||||||
} else {
|
|
||||||
this.selectRows.clear();
|
|
||||||
this.tableData.forEach(row => {
|
|
||||||
this.$set(row, "showMore", false);
|
|
||||||
});
|
|
||||||
}
|
|
||||||
},
|
|
||||||
handleBatchDelete() {
|
handleBatchDelete() {
|
||||||
this.$alert(this.$t('report.delete_batch_confirm') + "?", '', {
|
this.$alert(this.$t('report.delete_batch_confirm') + "?", '', {
|
||||||
confirmButtonText: this.$t('commons.confirm'),
|
confirmButtonText: this.$t('commons.confirm'),
|
||||||
callback: (action) => {
|
callback: (action) => {
|
||||||
if (action === 'confirm') {
|
if (action === 'confirm') {
|
||||||
let ids = [];
|
let param = buildBatchParam(this, this.$refs.table.selectIds);
|
||||||
this.selectRows.forEach(row => {
|
this.result = this.$post("/performance/report/batch/delete", param, () => {
|
||||||
ids.push(row.id);
|
this.$success(this.$t('commons.delete_success'));
|
||||||
});
|
|
||||||
this.result = this.$post("/performance/report/batch/delete", {ids: ids}, () => {
|
|
||||||
this.initTableData();
|
this.initTableData();
|
||||||
});
|
});
|
||||||
|
|
||||||
this.$success(this.$t('commons.delete_success'));
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
|
|
Loading…
Reference in New Issue