feat: 接口测试报告批量删除

This commit is contained in:
shiziyuan9527 2020-08-31 17:18:25 +08:00
parent 98194ab778
commit 4203707ef5
7 changed files with 94 additions and 1 deletions

View File

@ -62,5 +62,10 @@ public class APIReportController {
return apiReportService.dashboardTests(SessionUtils.getCurrentWorkspaceId()); return apiReportService.dashboardTests(SessionUtils.getCurrentWorkspaceId());
} }
@PostMapping("/batch/delete")
public void deleteAPIReportBatch(@RequestBody DeleteAPIReportRequest reportRequest) {
apiReportService.deleteAPIReportBatch(reportRequest);
}
} }

View File

@ -3,9 +3,12 @@ package io.metersphere.api.dto;
import lombok.Getter; import lombok.Getter;
import lombok.Setter; import lombok.Setter;
import java.util.List;
@Setter @Setter
@Getter @Getter
public class DeleteAPIReportRequest { public class DeleteAPIReportRequest {
private String id; private String id;
private List<String> ids;
} }

View File

@ -147,4 +147,13 @@ public class APIReportService {
} }
public void deleteAPIReportBatch(DeleteAPIReportRequest reportRequest) {
ApiTestReportDetailExample apiTestReportDetailExample = new ApiTestReportDetailExample();
apiTestReportDetailExample.createCriteria().andReportIdIn(reportRequest.getIds());
apiTestReportDetailMapper.deleteByExample(apiTestReportDetailExample);
ApiTestReportExample apiTestReportExample = new ApiTestReportExample();
apiTestReportExample.createCriteria().andIdIn(reportRequest.getIds());
apiTestReportMapper.deleteByExample(apiTestReportExample);
}
} }

View File

@ -8,7 +8,16 @@
:show-create="false"/> :show-create="false"/>
</template> </template>
<el-table border :data="tableData" class="adjust-table table-content" @sort-change="sort" <el-table border :data="tableData" class="adjust-table table-content" @sort-change="sort"
@select-all="handleSelectAll"
@select="handleSelect"
@filter-change="filter" @row-click="handleView"> @filter-change="filter" @row-click="handleView">
<el-table-column
type="selection"/>
<el-table-column width="40" :resizable="false" align="center">
<template v-slot:default="scope">
<show-more-btn :is-show="scope.row.showMore" :buttons="buttons" :size="selectRows.size"/>
</template>
</el-table-column>
<el-table-column :label="$t('commons.name')" width="200" show-overflow-tooltip prop="name"> <el-table-column :label="$t('commons.name')" width="200" show-overflow-tooltip prop="name">
</el-table-column> </el-table-column>
<el-table-column prop="testName" :label="$t('api_report.test_name')" width="200" show-overflow-tooltip/> <el-table-column prop="testName" :label="$t('api_report.test_name')" width="200" show-overflow-tooltip/>
@ -59,12 +68,13 @@ import MsTableOperatorButton from "../../common/components/MsTableOperatorButton
import ReportTriggerModeItem from "../../common/tableItem/ReportTriggerModeItem"; 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 {ApiEvent, LIST_CHANGE} from "@/business/components/common/head/ListEvent"; import {ApiEvent, LIST_CHANGE} from "@/business/components/common/head/ListEvent";
import ShowMoreBtn from "../../track/case/components/ShowMoreBtn";
export default { export default {
components: { components: {
ReportTriggerModeItem, ReportTriggerModeItem,
MsTableOperatorButton, MsTableOperatorButton,
MsApiReportStatus, MsMainContainer, MsContainer, MsTableHeader, MsTablePagination MsApiReportStatus, MsMainContainer, MsContainer, MsTableHeader, MsTablePagination, ShowMoreBtn
}, },
data() { data() {
return { return {
@ -92,6 +102,12 @@ export default {
{text: this.$t('commons.trigger_mode.schedule'), value: 'SCHEDULE'}, {text: this.$t('commons.trigger_mode.schedule'), value: 'SCHEDULE'},
{text: this.$t('commons.trigger_mode.api'), value: 'API'} {text: this.$t('commons.trigger_mode.api'), value: 'API'}
], ],
buttons: [
{
name: this.$t('api_report.batch_delete'), handleClick: this.handleBatchDelete
}
],
selectRows: new Set(),
} }
}, },
@ -147,6 +163,60 @@ export default {
_filter(filters, this.condition); _filter(filters, this.condition);
this.init(); this.init();
}, },
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);
}
let arr = Array.from(this.selectRows);
// 1
if (this.selectRows.size === 1) {
this.$set(arr[0], "showMore", false);
} else if (this.selectRows.size === 2) {
arr.forEach(row => {
this.$set(row, "showMore", true);
})
}
},
handleSelectAll(selection) {
if (selection.length > 0) {
if (selection.length === 1) {
this.selectRows.add(selection[0]);
} else {
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() {
this.$alert(this.$t('api_report.delete_batch_confirm') + "", '', {
confirmButtonText: this.$t('commons.confirm'),
callback: (action) => {
if (action === 'confirm') {
let ids = Array.from(this.selectRows).map(row => row.id);
this.$post('/api/report/batch/delete', {ids: ids}, () => {
this.selectRows.clear();
this.$success(this.$t('commons.delete_success'));
this.search();
// 广 head
ApiEvent.$emit(LIST_CHANGE);
});
}
}
});
}
}, },

View File

@ -520,6 +520,7 @@ export default {
request_cookie: "Cookie", request_cookie: "Cookie",
response: "Response", response: "Response",
delete_confirm: 'Confirm delete : ', delete_confirm: 'Confirm delete : ',
delete_batch_confirm: 'Confirm batch delete report',
scenario_name: "Scenario name", scenario_name: "Scenario name",
response_time: "Response time(ms)", response_time: "Response time(ms)",
latency: "Latency", latency: "Latency",
@ -542,6 +543,7 @@ export default {
sub_result: "Sub Result", sub_result: "Sub Result",
detail: "Report detail", detail: "Report detail",
delete: "Delete report", delete: "Delete report",
batch_delete: "Delete reports in bulk",
running: "The test is running", running: "The test is running",
not_exist: "Test report does not exist", not_exist: "Test report does not exist",
}, },

View File

@ -522,6 +522,7 @@ export default {
request_cookie: "Cookie", request_cookie: "Cookie",
response: "响应", response: "响应",
delete_confirm: '确认删除报告: ', delete_confirm: '确认删除报告: ',
delete_batch_confirm: '确认批量删除报告',
scenario_name: "场景名称", scenario_name: "场景名称",
response_time: "响应时间(ms)", response_time: "响应时间(ms)",
latency: "网络延迟", latency: "网络延迟",
@ -544,6 +545,7 @@ export default {
sub_result: "子请求", sub_result: "子请求",
detail: "报告详情", detail: "报告详情",
delete: "删除报告", delete: "删除报告",
batch_delete: "批量删除报告",
running: "测试执行中", running: "测试执行中",
not_exist: "测试报告不存在", not_exist: "测试报告不存在",
}, },

View File

@ -520,6 +520,7 @@ export default {
request_cookie: "Cookie", request_cookie: "Cookie",
response: "響應", response: "響應",
delete_confirm: '確認删除報告:', delete_confirm: '確認删除報告:',
delete_batch_confirm: '確認批量刪除報告',
scenario_name: "場景名稱", scenario_name: "場景名稱",
response_time: "回應時間ms", response_time: "回應時間ms",
latency: "網路延遲", latency: "網路延遲",
@ -542,6 +543,7 @@ export default {
sub_result: "子請求", sub_result: "子請求",
detail: "報告詳情", detail: "報告詳情",
delete: "刪除報告", delete: "刪除報告",
batch_delete: "批量刪除報告",
running: "測試執行中", running: "測試執行中",
not_exist: "測試報告不存在", not_exist: "測試報告不存在",
}, },