fix(测试跟踪): 测试计划用例不显示下一页用例名称

--bug=1010551 --user=陈建星 测试计划-功能用例执行用例时,翻页时不显示下一页用例名称 https://www.tapd.cn/55049933/s/1109313
This commit is contained in:
chenjianxing 2022-02-23 21:09:35 +08:00 committed by jianxing
parent aac1261bb9
commit f3d2310680
8 changed files with 128 additions and 50 deletions

View File

@ -25,8 +25,6 @@ public interface ExtTestCaseMapper {
int moduleCount(@Param("request") QueryTestCaseRequest request);
List<TestCaseDTO> listIds(@Param("request") QueryTestCaseRequest request);
List<TestCaseDTO> listByMethod(@Param("request") QueryTestCaseRequest request);
List<TestCaseDTO> listByTestCaseIds(@Param("request") TestCaseBatchRequest request);

View File

@ -336,20 +336,6 @@
<include refid="queryWhereCondition"/>
GROUP BY node_id
</select>
<select id="listIds" resultType="io.metersphere.track.dto.TestCaseDTO">
select
<if test="request.selectFields != null and request.selectFields.size() > 0">
<foreach collection="request.selectFields" item="field" separator=",">
${field}
</foreach>
</if>
<if test="request.selectFields == null or request.selectFields.size() == 0">
<include refid="io.metersphere.base.mapper.TestCaseMapper.Base_Column_List"/>
</if>
from test_case left join project on test_case.project_id = project.id
<include refid="queryWhereConditionWidthProject"/>
<include refid="io.metersphere.base.mapper.ext.ExtBaseMapper.orders"/>
</select>
<select id="listByMethod" resultType="io.metersphere.track.dto.TestCaseDTO">
select load_test.id, load_test.name, load_test.project_id,'性能测试' as type, project_version.name as version_name
from load_test inner join project_version on project_version.project_id = load_test.project_id and project_version.id = load_test.version_id

View File

@ -1,28 +1,38 @@
<template>
<span class="previous-next-button">
<span class="head-right-tip" v-if="countNum === total">
{{ $t('test_track.plan_view.pre_case') }} : {{list[index - 1] ? list[index - 1].name : ''}}
<span v-if="countNum === total"
class="head-right-tip">
{{ $t('test_track.plan_view.pre_case') }} : {{list[index - 1] ? list[index - 1].name : (prePageData ? prePageData.name : '')}}
</span>
<span class="head-right-tip" v-if="countNum !== total">
{{ $t('test_track.plan_view.next_case') }} : {{list[index + 1] ? list[index + 1].name : ''}}
<span
v-else
class="head-right-tip">
{{ $t('test_track.plan_view.next_case') }} : {{list[index + 1] ? list[index + 1].name : (nextPageData ? nextPageData.name : '')}}
</span>
<el-button plain size="mini" icon="el-icon-arrow-up" :disabled="countNum <= 1" @click="handlePre()"/>
<el-button
plain
size="mini"
icon="el-icon-arrow-up"
:disabled="countNum <= 1"
@click="handlePre()"/>
<span>
{{ countNum }}/{{ total }}
</span>
<el-button plain size="mini" icon="el-icon-arrow-down" :disabled="countNum >= total" @click="handleNext()"/>
<el-button
plain
size="mini"
icon="el-icon-arrow-down"
:disabled="countNum >= total"
@click="handleNext()"/>
</span>
</template>
<script>
export default {
name: "MsPreviousNextButton",
data() {
return {
countNum: 1
}
},
props: {
list: {
type: Array,
@ -59,20 +69,22 @@ export default {
default() {
return 0
}
}
},
nextPageData: Object,
prePageData: Object
},
watch: {
index() {
this.countNum = this.pageSize * (this.pageNum - 1) + this.index + 1;
computed: {
countNum() {
return this.pageSize * (this.pageNum - 1) + this.index + 1;
}
},
methods: {
handlePre() {
this.$emit('pre');
},
handleNext() {
this.$emit('next');
}
handlePre() {
this.$emit('pre');
},
handleNext() {
this.$emit('next');
}
}
}
</script>

View File

@ -33,6 +33,8 @@
:page-size="pageSize"
:page-total="pageTotal"
:total="total"
:next-page-data="nextPageData"
:pre-page-data="prePageData"
@pre="handlePre"
@next="saveCase(true, true)"
:list="testCases"/>
@ -228,7 +230,9 @@ export default {
pageSize: {
type: Number,
default: 1
}
},
nextPageData: Object,
prePageData: Object
},
computed: {
projectId() {

View File

@ -250,6 +250,8 @@
:search-param.sync="condition"
:page-num="currentPage"
:page-size="pageSize"
:next-page-data="nextPageData"
:pre-page-data="prePageData"
@nextPage="nextPage"
@prePage="prePage"
@refresh="initTableData"
@ -300,6 +302,7 @@ import {getProjectMember} from "@/network/user";
import {getTestTemplate} from "@/network/custom-field-template";
import {editTestPlanTestCaseOrder} from "@/network/test-plan";
import {SYSTEM_FIELD_NAME_MAP} from "@/common/js/table-constants";
import {getTestPlanTestCase} from "@/network/testCase";
export default {
name: "FunctionalTestCaseList",
@ -329,6 +332,8 @@ export default {
condition: {
components: TEST_PLAN_TEST_CASE_CONFIGS
},
nextPageData: null,
prePageData: null,
enableOrderDrag: true,
showMyTestCase: false,
tableData: [],
@ -518,8 +523,7 @@ export default {
}
this.condition.projectId = getCurrentProjectID();
if (this.planId) {
this.result = this.$post(this.buildPagePath('/test/plan/case/list'), this.condition, response => {
let data = response.data;
getTestPlanTestCase(this.currentPage, this.pageSize, this.condition, (data) => {
this.total = data.itemCount;
this.tableData = data.listObject;
for (let i = 0; i < this.tableData.length; i++) {
@ -532,10 +536,40 @@ export default {
this.$set(this.tableData[i], "issuesContent", JSON.parse(this.tableData[i].issues));
}
}
// tableData
this.getPreData();
if (callback) {
callback();
}
});
this.getNexPageData();
}
},
getNexPageData() {
getTestPlanTestCase(this.currentPage * this.pageSize + 1, 1, this.condition, (data) => {
if (data.listObject && data.listObject.length > 0) {
this.nextPageData = {
name: data.listObject[0].name
}
} else {
this.nextPageData = null;
}
});
},
getPreData() {
//
if (this.currentPage > 1 && this.tableData.length === 1) {
getTestPlanTestCase((this.currentPage - 1) * this.pageSize, 1, this.condition, (data) => {
if (data.listObject && data.listObject.length > 0) {
this.prePageData = {
name: data.listObject[0].name
}
} else {
this.prePageData = null;
}
});
}
},
autoCheckStatus() {

View File

@ -35,9 +35,11 @@
:page-size="pageSize"
:page-total="pageTotal"
:total="total"
:next-page-data="nextPageData"
:pre-page-data="prePageData"
:list="testCases"
@pre="handlePre"
@next="handleNext"
:list="testCases"/>
@next="handleNext"/>
<el-divider direction="vertical"></el-divider>
@ -232,7 +234,9 @@ export default {
pageSize: {
type: Number,
default: 1
}
},
nextPageData: Object,
prePageData: Object
},
computed: {
projectId() {

View File

@ -156,12 +156,14 @@
:search-param="condition"
:page-num="currentPage"
:page-size="pageSize"
@nextPage="nextPage"
@prePage="prePage"
@refresh="initTableData"
:next-page-data="nextPageData"
:pre-page-data="prePageData"
:test-cases="tableData"
:is-read-only="isReadOnly"
:total="total"
@nextPage="nextPage"
@prePage="prePage"
@refresh="initTableData"
@refreshTable="search"/>
@ -203,7 +205,7 @@ import HeaderLabelOperate from "@/business/components/common/head/HeaderLabelOpe
import MsTableHeaderSelectPopover from "@/business/components/common/components/table/MsTableHeaderSelectPopover";
import MsTableColumn from "@/business/components/common/components/table/MsTableColumn";
import MsTable from "@/business/components/common/components/table/MsTable";
import {editTestReviewTestCaseOrder} from "@/network/testCase";
import {editTestReviewTestCaseOrder, getTestPlanTestCase, getTestReviewTestCase} from "@/network/testCase";
import {getCurrentProjectID, hasLicense} from "@/common/js/utils";
export default {
@ -229,6 +231,8 @@ export default {
result: {},
condition: {},
tableData: [],
nextPageData: null,
prePageData: null,
currentPage: 1,
pageSize: 10,
total: 0,
@ -379,17 +383,45 @@ export default {
this.condition.nodeIds = this.selectNodeIds;
if (this.reviewId) {
this.result = this.$post(this.buildPagePath('/test/review/case/list'), this.condition, response => {
let data = response.data;
getTestReviewTestCase(this.currentPage, this.pageSize, this.condition, (data) => {
this.total = data.itemCount;
this.tableData = data.listObject;
// tableData
this.getPreData();
this.tableClear();
if (callback) {
callback();
}
});
this.getNexPageData();
}
},
getNexPageData() {
getTestReviewTestCase(this.currentPage * this.pageSize + 1, 1, this.condition, (data) => {
if (data.listObject && data.listObject.length > 0) {
this.nextPageData = {
name: data.listObject[0].name
}
} else {
this.nextPageData = null;
}
});
},
getPreData() {
//
if (this.currentPage > 1 && this.tableData.length === 1) {
getTestReviewTestCase((this.currentPage - 1) * this.pageSize, 1, this.condition, (data) => {
if (data.listObject && data.listObject.length > 0) {
this.prePageData = {
name: data.listObject[0].name
}
} else {
this.prePageData = null;
}
});
}
},
showDetail(row, event, column) {
this.isReadOnly = true;

View File

@ -74,3 +74,11 @@ export function getRelationshipCase(id, relationshipType, callback) {
export function getRelationshipCountCase(id, callback) {
return baseGet('/test/case/relationship/case/count/' + id + '/', callback);
}
export function getTestPlanTestCase(pageNum, pageSize, param, callback) {
return basePost('/test/plan/case/list/' + pageNum + '/' + pageSize, param, callback);
}
export function getTestReviewTestCase(pageNum, pageSize, param, callback) {
return basePost('/test/review/case/list/' + pageNum + '/' + pageSize, param, callback);
}