快速定位我的用例
This commit is contained in:
parent
c640f4566e
commit
b6b0aca9e0
|
@ -3,6 +3,7 @@ package io.metersphere.base.mapper.ext;
|
||||||
import io.metersphere.base.domain.TestCase;
|
import io.metersphere.base.domain.TestCase;
|
||||||
import io.metersphere.controller.request.ReportRequest;
|
import io.metersphere.controller.request.ReportRequest;
|
||||||
import io.metersphere.controller.request.testcase.QueryTestCaseRequest;
|
import io.metersphere.controller.request.testcase.QueryTestCaseRequest;
|
||||||
|
import io.metersphere.controller.request.testplancase.QueryTestPlanCaseRequest;
|
||||||
import io.metersphere.dto.ReportDTO;
|
import io.metersphere.dto.ReportDTO;
|
||||||
import io.metersphere.dto.TestPlanCaseDTO;
|
import io.metersphere.dto.TestPlanCaseDTO;
|
||||||
import org.apache.ibatis.annotations.Param;
|
import org.apache.ibatis.annotations.Param;
|
||||||
|
@ -13,5 +14,5 @@ public interface ExtTestCaseMapper {
|
||||||
|
|
||||||
List<TestCase> getTestCaseNames(@Param("request") QueryTestCaseRequest request);
|
List<TestCase> getTestCaseNames(@Param("request") QueryTestCaseRequest request);
|
||||||
|
|
||||||
List<TestPlanCaseDTO> getTestPlanTestCases(@Param("request") QueryTestCaseRequest request);
|
List<TestPlanCaseDTO> getTestPlanTestCases(@Param("request") QueryTestPlanCaseRequest request);
|
||||||
}
|
}
|
||||||
|
|
|
@ -37,5 +37,8 @@
|
||||||
<if test="request.name != null">
|
<if test="request.name != null">
|
||||||
and t2.name like CONCAT('%', #{request.name},'%')
|
and t2.name like CONCAT('%', #{request.name},'%')
|
||||||
</if>
|
</if>
|
||||||
|
<if test="request.executor != null">
|
||||||
|
and t1.executor = #{request.executor}
|
||||||
|
</if>
|
||||||
</select>
|
</select>
|
||||||
</mapper>
|
</mapper>
|
|
@ -8,6 +8,7 @@ import io.metersphere.commons.utils.PageUtils;
|
||||||
import io.metersphere.commons.utils.Pager;
|
import io.metersphere.commons.utils.Pager;
|
||||||
import io.metersphere.controller.request.testcase.QueryTestCaseRequest;
|
import io.metersphere.controller.request.testcase.QueryTestCaseRequest;
|
||||||
import io.metersphere.controller.request.testcase.TestCaseBatchRequest;
|
import io.metersphere.controller.request.testcase.TestCaseBatchRequest;
|
||||||
|
import io.metersphere.controller.request.testplancase.QueryTestPlanCaseRequest;
|
||||||
import io.metersphere.dto.TestPlanCaseDTO;
|
import io.metersphere.dto.TestPlanCaseDTO;
|
||||||
import io.metersphere.service.TestPlanTestCaseService;
|
import io.metersphere.service.TestPlanTestCaseService;
|
||||||
import org.springframework.web.bind.annotation.*;
|
import org.springframework.web.bind.annotation.*;
|
||||||
|
@ -23,7 +24,7 @@ public class TestPlanTestCaseController {
|
||||||
TestPlanTestCaseService testPlanTestCaseService;
|
TestPlanTestCaseService testPlanTestCaseService;
|
||||||
|
|
||||||
@PostMapping("/list/{goPage}/{pageSize}")
|
@PostMapping("/list/{goPage}/{pageSize}")
|
||||||
public Pager<List<TestPlanCaseDTO>> getTestPlanCases(@PathVariable int goPage, @PathVariable int pageSize, @RequestBody QueryTestCaseRequest request){
|
public Pager<List<TestPlanCaseDTO>> getTestPlanCases(@PathVariable int goPage, @PathVariable int pageSize, @RequestBody QueryTestPlanCaseRequest request){
|
||||||
Page<Object> page = PageHelper.startPage(goPage, pageSize, true);
|
Page<Object> page = PageHelper.startPage(goPage, pageSize, true);
|
||||||
return PageUtils.setPageInfo(page, testPlanTestCaseService.getTestPlanCases(request));
|
return PageUtils.setPageInfo(page, testPlanTestCaseService.getTestPlanCases(request));
|
||||||
}
|
}
|
||||||
|
@ -43,6 +44,4 @@ public class TestPlanTestCaseController {
|
||||||
return testPlanTestCaseService.deleteTestCase(id);
|
return testPlanTestCaseService.deleteTestCase(id);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,39 @@
|
||||||
|
package io.metersphere.controller.request.testplancase;
|
||||||
|
|
||||||
|
import io.metersphere.base.domain.TestCase;
|
||||||
|
import io.metersphere.base.domain.TestPlanTestCase;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
public class QueryTestPlanCaseRequest extends TestPlanTestCase {
|
||||||
|
|
||||||
|
private List<Integer> nodeIds;
|
||||||
|
|
||||||
|
private String workspaceId;
|
||||||
|
|
||||||
|
private String name;
|
||||||
|
|
||||||
|
public String getName() {
|
||||||
|
return name;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setName(String name) {
|
||||||
|
this.name = name;
|
||||||
|
}
|
||||||
|
|
||||||
|
public List<Integer> getNodeIds() {
|
||||||
|
return nodeIds;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setNodeIds(List<Integer> nodeIds) {
|
||||||
|
this.nodeIds = nodeIds;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getWorkspaceId() {
|
||||||
|
return workspaceId;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setWorkspaceId(String workspaceId) {
|
||||||
|
this.workspaceId = workspaceId;
|
||||||
|
}
|
||||||
|
}
|
|
@ -7,6 +7,7 @@ import io.metersphere.base.mapper.ext.ExtTestCaseMapper;
|
||||||
import io.metersphere.commons.utils.BeanUtils;
|
import io.metersphere.commons.utils.BeanUtils;
|
||||||
import io.metersphere.controller.request.testcase.QueryTestCaseRequest;
|
import io.metersphere.controller.request.testcase.QueryTestCaseRequest;
|
||||||
import io.metersphere.controller.request.testcase.TestCaseBatchRequest;
|
import io.metersphere.controller.request.testcase.TestCaseBatchRequest;
|
||||||
|
import io.metersphere.controller.request.testplancase.QueryTestPlanCaseRequest;
|
||||||
import io.metersphere.dto.TestPlanCaseDTO;
|
import io.metersphere.dto.TestPlanCaseDTO;
|
||||||
import org.springframework.context.annotation.Bean;
|
import org.springframework.context.annotation.Bean;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
|
@ -25,11 +26,10 @@ public class TestPlanTestCaseService {
|
||||||
@Resource
|
@Resource
|
||||||
ExtTestCaseMapper extTestCaseMapper;
|
ExtTestCaseMapper extTestCaseMapper;
|
||||||
|
|
||||||
public List<TestPlanCaseDTO> getTestPlanCases(QueryTestCaseRequest request) {
|
public List<TestPlanCaseDTO> getTestPlanCases(QueryTestPlanCaseRequest request) {
|
||||||
return extTestCaseMapper.getTestPlanTestCases(request);
|
return extTestCaseMapper.getTestPlanTestCases(request);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
public void editTestCase(TestPlanTestCase testPlanTestCase) {
|
public void editTestCase(TestPlanTestCase testPlanTestCase) {
|
||||||
testPlanTestCase.setUpdateTime(System.currentTimeMillis());
|
testPlanTestCase.setUpdateTime(System.currentTimeMillis());
|
||||||
testPlanTestCaseMapper.updateByPrimaryKeySelective(testPlanTestCase);
|
testPlanTestCaseMapper.updateByPrimaryKeySelective(testPlanTestCase);
|
||||||
|
|
|
@ -0,0 +1,54 @@
|
||||||
|
<template>
|
||||||
|
|
||||||
|
|
||||||
|
<el-tooltip :disabled="disabled"
|
||||||
|
:content="tip"
|
||||||
|
placement="bottom"
|
||||||
|
:effect="effect">
|
||||||
|
|
||||||
|
<el-button @click="exec()"
|
||||||
|
circle
|
||||||
|
:type="type"
|
||||||
|
:icon="icon"
|
||||||
|
:size="size"/>
|
||||||
|
</el-tooltip>
|
||||||
|
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
export default {
|
||||||
|
name: "MsTipButton",
|
||||||
|
props: {
|
||||||
|
tip: String,
|
||||||
|
icon: {
|
||||||
|
type: String,
|
||||||
|
default: 'el-icon-question'
|
||||||
|
},
|
||||||
|
type: {
|
||||||
|
type: String,
|
||||||
|
default: null
|
||||||
|
},
|
||||||
|
effect: {
|
||||||
|
type: String,
|
||||||
|
default: 'dark'
|
||||||
|
},
|
||||||
|
size: {
|
||||||
|
type: String,
|
||||||
|
default: 'mini'
|
||||||
|
},
|
||||||
|
disabled: {
|
||||||
|
type: Boolean,
|
||||||
|
default: false
|
||||||
|
}
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
exec() {
|
||||||
|
this.$emit('click');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style scoped>
|
||||||
|
|
||||||
|
</style>
|
|
@ -1,5 +1,5 @@
|
||||||
<template>
|
<template>
|
||||||
<el-row type="flex" justify="start">
|
<el-row type="flex" justify="start" :gutter="20">
|
||||||
<el-col>
|
<el-col>
|
||||||
<el-button type="success" round
|
<el-button type="success" round
|
||||||
:icon="status == 'Pass' ? 'el-icon-check' : ''"
|
:icon="status == 'Pass' ? 'el-icon-check' : ''"
|
||||||
|
|
|
@ -6,7 +6,13 @@
|
||||||
<div>
|
<div>
|
||||||
<el-row type="flex" justify="end">
|
<el-row type="flex" justify="end">
|
||||||
<el-col>
|
<el-col>
|
||||||
<span class="title">{{$t('test_track.test_case')}}</span>
|
<span class="title">{{$t('test_track.test_case')}} </span>
|
||||||
|
<ms-tip-button v-if="!showMyTestCase"
|
||||||
|
:tip="'我的用例'"
|
||||||
|
icon="el-icon-s-custom" @click="searchMyTestCase"/>
|
||||||
|
<ms-tip-button v-if="showMyTestCase"
|
||||||
|
:tip="'全部用例'"
|
||||||
|
icon="el-icon-files" @click="searchMyTestCase"/>
|
||||||
</el-col>
|
</el-col>
|
||||||
|
|
||||||
<el-col :offset="8">
|
<el-col :offset="8">
|
||||||
|
@ -38,7 +44,7 @@
|
||||||
<el-input type="text" size="small" :placeholder="$t('load_test.search_by_name')"
|
<el-input type="text" size="small" :placeholder="$t('load_test.search_by_name')"
|
||||||
prefix-icon="el-icon-search"
|
prefix-icon="el-icon-search"
|
||||||
maxlength="60"
|
maxlength="60"
|
||||||
v-model="condition" @change="search" clearable/>
|
v-model="condition.name" @change="search" clearable/>
|
||||||
</span>
|
</span>
|
||||||
</el-col>
|
</el-col>
|
||||||
</el-row>
|
</el-row>
|
||||||
|
@ -157,15 +163,18 @@
|
||||||
import PlanNodeTree from './PlanNodeTree';
|
import PlanNodeTree from './PlanNodeTree';
|
||||||
import ExecutorEdit from './ExecutorEdit';
|
import ExecutorEdit from './ExecutorEdit';
|
||||||
import StatusEdit from './StatusEdit';
|
import StatusEdit from './StatusEdit';
|
||||||
|
import MsTipButton from '../../../../components/common/components/MsTipButton';
|
||||||
|
import {TokenKey} from '../../../../../common/js/constants';
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
name: "TestPlanTestCaseList",
|
name: "TestPlanTestCaseList",
|
||||||
components: {PlanNodeTree, StatusEdit, ExecutorEdit},
|
components: {PlanNodeTree, StatusEdit, ExecutorEdit, MsTipButton},
|
||||||
data() {
|
data() {
|
||||||
return {
|
return {
|
||||||
result: {},
|
result: {},
|
||||||
deletePath: "/test/case/delete",
|
deletePath: "/test/case/delete",
|
||||||
condition: "",
|
condition: {},
|
||||||
|
showMyTestCase: false,
|
||||||
tableData: [],
|
tableData: [],
|
||||||
multipleSelection: [],
|
multipleSelection: [],
|
||||||
currentPage: 1,
|
currentPage: 1,
|
||||||
|
@ -192,9 +201,8 @@
|
||||||
methods: {
|
methods: {
|
||||||
initTableData(nodeIds) {
|
initTableData(nodeIds) {
|
||||||
if (this.planId) {
|
if (this.planId) {
|
||||||
let param = {
|
let param = {};
|
||||||
name: this.condition,
|
Object.assign(param, this.condition);
|
||||||
};
|
|
||||||
param.nodeIds = nodeIds;
|
param.nodeIds = nodeIds;
|
||||||
param.planId = this.planId;
|
param.planId = this.planId;
|
||||||
this.result = this.$post(this.buildPagePath('/test/plan/case/list'), param, response => {
|
this.result = this.$post(this.buildPagePath('/test/plan/case/list'), param, response => {
|
||||||
|
@ -272,6 +280,16 @@
|
||||||
} else if (type === 'status'){
|
} else if (type === 'status'){
|
||||||
this.$refs.statusEdit.openStatusEdit();
|
this.$refs.statusEdit.openStatusEdit();
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
searchMyTestCase() {
|
||||||
|
this.showMyTestCase = !this.showMyTestCase;
|
||||||
|
if (this.showMyTestCase) {
|
||||||
|
let user = JSON.parse(localStorage.getItem(TokenKey));
|
||||||
|
this.condition.executor = user.id;
|
||||||
|
} else {
|
||||||
|
this.condition.executor = null;
|
||||||
|
}
|
||||||
|
this.initTableData();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -286,10 +304,4 @@
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/*.main-content {*/
|
|
||||||
/*margin: 0 auto;*/
|
|
||||||
/*width: 100%;*/
|
|
||||||
/*max-width: 1200px;*/
|
|
||||||
/*}*/
|
|
||||||
|
|
||||||
</style>
|
</style>
|
||||||
|
|
Loading…
Reference in New Issue