提交 02280431 编写于 作者: S shiziyuan9527

测试计划关联用例增加优先级和类型并支持筛选

上级 39121f0f
......@@ -3,7 +3,7 @@
<mapper namespace="io.metersphere.base.mapper.ext.ExtTestCaseMapper">
<select id="getTestCaseNames" resultType="io.metersphere.base.domain.TestCase">
select test_case.id, test_case.name
select test_case.id, test_case.name, test_case.priority, test_case.type
from test_case
<where>
<if test="request.projectId != null">
......@@ -16,6 +16,16 @@
</foreach>
</if>
<if test="request.filters != null and request.filters.size() > 0">
<foreach collection="request.filters.entrySet()" index="key" item="values">
<if test="values != null and values.size() > 0">
and test_case.${key} in
<foreach collection="values" item="value" separator="," open="(" close=")">
#{value}
</foreach>
</if>
</foreach>
</if>
</where>
ORDER BY test_case.update_time DESC
</select>
......
......@@ -21,6 +21,7 @@
<el-main class="case-content" v-loading="result.loading">
<el-table
:data="testCases"
@filter-change="filter"
row-key="id"
@select-all="handleSelectAll"
@select="handleSelectionChange"
......@@ -38,6 +39,26 @@
{{scope.row.name}}
</template>
</el-table-column>
<el-table-column
prop="priority"
:filters="priorityFilters"
column-key="priority"
:label="$t('test_track.case.priority')"
show-overflow-tooltip>
<template v-slot:default="scope">
<priority-table-item :value="scope.row.priority"/>
</template>
</el-table-column>
<el-table-column
prop="type"
:filters="typeFilters"
column-key="type"
:label="$t('test_track.case.type')"
show-overflow-tooltip>
<template v-slot:default="scope">
<type-table-item :value="scope.row.type"/>
</template>
</el-table-column>
</el-table>
</el-main>
</el-container>
......@@ -56,10 +77,13 @@
import NodeTree from '../../../common/NodeTree';
import MsDialogFooter from '../../../../common/components/MsDialogFooter'
import PriorityTableItem from "../../../common/tableItems/planview/PriorityTableItem";
import TypeTableItem from "../../../common/tableItems/planview/TypeTableItem";
import {_filter} from "../../../../../../common/js/utils";
export default {
name: "TestCaseRelevance",
components: {NodeTree, MsDialogFooter},
components: {NodeTree, MsDialogFooter, PriorityTableItem, TypeTableItem},
data() {
return {
result: {},
......@@ -69,7 +93,19 @@
selectIds: new Set(),
treeNodes: [],
selectNodeIds: [],
selectNodeNames: []
selectNodeNames: [],
condition: {},
priorityFilters: [
{text: 'P0', value: 'P0'},
{text: 'P1', value: 'P1'},
{text: 'P2', value: 'P2'},
{text: 'P3', value: 'P3'}
],
typeFilters: [
{text: this.$t('commons.functional'), value: 'functional'},
{text: this.$t('commons.performance'), value: 'performance'},
{text: this.$t('commons.api'), value: 'api'}
]
};
},
props: {
......@@ -90,11 +126,11 @@
this.initData();
this.dialogFormVisible = true;
},
saveCaseRelevance(){
saveCaseRelevance() {
let param = {};
param.planId = this.planId;
param.testCaseIds = [...this.selectIds];
this.$post('/test/plan/relevance' , param, () => {
this.$post('/test/plan/relevance', param, () => {
this.selectIds.clear();
this.$success(this.$t('commons.save_success'));
this.dialogFormVisible = false;
......@@ -104,12 +140,14 @@
getCaseNames() {
let param = {};
if (this.planId) {
param.planId = this.planId;
// param.planId = this.planId;
this.condition.planId = this.planId;
}
if (this.selectNodeIds && this.selectNodeIds.length > 0){
param.nodeIds = this.selectNodeIds;
if (this.selectNodeIds && this.selectNodeIds.length > 0) {
// param.nodeIds = this.selectNodeIds;
this.condition.nodeIds = this.selectNodeIds;
}
this.result = this.$post('/test/case/name', param, response => {
this.result = this.$post('/test/case/name', this.condition, response => {
this.testCases = response.data;
this.testCases.forEach(item => {
item.checked = false;
......@@ -117,7 +155,7 @@
});
},
handleSelectAll(selection) {
if(selection.length > 0){
if (selection.length > 0) {
this.testCases.forEach(item => {
this.selectIds.add(item.id);
});
......@@ -126,7 +164,7 @@
}
},
handleSelectionChange(selection, row) {
if(this.selectIds.has(row.id)){
if (this.selectIds.has(row.id)) {
this.selectIds.delete(row.id);
} else {
this.selectIds.add(row.id);
......@@ -154,7 +192,11 @@
this.selectIds.clear();
this.selectNodeIds = [];
this.selectNodeNames = [];
}
},
filter(filters) {
_filter(filters, this.condition);
this.initData();
},
}
}
</script>
......@@ -165,16 +207,18 @@
display: none;
color: black;
}
.tb-edit .current-row .el-input {
display: block;
}
.tb-edit .current-row .el-input+span {
.tb-edit .current-row .el-input + span {
display: none;
}
.node-tree{
.node-tree {
margin-right: 10px;
}
......@@ -189,10 +233,12 @@
height: 100%;
/*border: 1px solid #EBEEF5;*/
}
.tree-aside {
min-height: 300px;
max-height: 100%;
}
.main-content {
min-height: 300px;
height: 100%;
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册