fix: 测试用例版本管理完成了一些功能&修复了一些bug

This commit is contained in:
zhangdahai112 2022-01-21 00:38:03 +08:00 committed by fit2-zhao
parent 294b5401c5
commit 97196c9a82
42 changed files with 588 additions and 115 deletions

View File

@ -140,11 +140,22 @@
</select>
<select id="relevanceApiList" resultType="io.metersphere.api.dto.definition.ApiTestCaseDTO">
SELECT
atc.id, atc.project_id , atc.name , atc.num , atc.priority , atc.tags
from api_test_case atc
left join test_case_test tct on atc.id = tct.test_id
inner join api_definition ad on ad.id = atc.api_definition_id
where tct.test_id is NULL and atc.status != 'Trash'
atc.id,
atc.project_id,
atc. NAME,
atc.num,
atc.priority,
atc.tags,
project_version.id versionId,
project_version.name versionName
FROM
api_test_case atc
LEFT JOIN test_case_test tct ON atc.id = tct.test_id
INNER JOIN api_definition ad ON ad.id = atc.api_definition_id
INNER JOIN project_version on atc.project_id = project_version.project_id and atc.version_id = project_version.id
WHERE
tct.test_id IS NULL
AND atc. STATUS != 'Trash'
<if test="request.protocol != null and request.protocol!=''">
and ad.protocol = #{request.protocol}
</if>
@ -169,6 +180,28 @@
<property name="objectKey" value="request.combine.tags"/>
</include>
</if>
<if test="request.versionId != null">
and ad.version_id = #{request.versionId}
</if>
<if test="request.refId != null">
and ad.ref_id = #{request.refId}
</if>
<if test="request.versionId == null and request.refId == null and request.id == null">
AND (
ad.version_id = (SELECT project_version.id
FROM api_definition tmp
JOIN project_version
ON tmp.project_id = project_version.project_id AND tmp.version_id = project_version.id AND latest = TRUE
WHERE ref_id = ad.ref_id
LIMIT 1)
OR
ad.version_id = (SELECT tmp.version_id
FROM api_definition tmp
WHERE ref_id = ad.ref_id
ORDER BY tmp.update_time DESC
LIMIT 1)
)
</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">
@ -185,6 +218,12 @@
#{value}
</foreach>
</when>
<when test="key=='version_id'">
and atc.version_id in
<foreach collection="values" item="value" separator="," open="(" close=")">
#{value}
</foreach>
</when>
</choose>
</if>
</foreach>
@ -368,10 +407,24 @@
</sql>
<select id="relevanceScenarioList" resultType="io.metersphere.api.dto.automation.ApiScenarioDTO">
SELECT
atc.id, atc.project_id , atc.name , atc.num , atc.`level`, atc.step_total, atc.status, atc.tags
from api_scenario atc
left join test_case_test tct on atc.id = tct.test_id
where tct.test_id is NULL and atc.status != 'Trash'
atc.id,
atc.project_id,
atc. NAME,
atc.num,
atc.`level`,
atc.step_total,
atc. STATUS,
atc.tags,
project_version.id versionId,
project_version.name versionName
FROM
api_scenario atc
LEFT JOIN test_case_test tct ON atc.id = tct.test_id
LEFT JOIN project_version ON atc.project_id = project_version.project_id
AND project_version.id = atc.version_id
WHERE
tct.test_id IS NULL
AND atc. STATUS != 'Trash'
<if test="request.projectId != null and request.projectId!=''">
and atc.project_id = #{request.projectId}
</if>
@ -386,6 +439,30 @@
#{nodeId}
</foreach>
</if>
<if test="request.versionId != null">
and atc.version_id = #{request.versionId}
</if>
<if test="request.refId != null">
and atc.ref_id = #{request.refId}
</if>
<if test="request.versionId == null and request.refId == null and request.id == null">
AND (
atc.version_id = (SELECT project_version.id
FROM api_scenario tmp
JOIN project_version
ON tmp.project_id = project_version.project_id AND tmp.version_id = project_version.id AND latest = TRUE
WHERE ref_id = atc.ref_id
LIMIT 1)
OR
atc.version_id = (SELECT tmp.version_id
FROM api_scenario tmp
WHERE ref_id = atc.ref_id
GROUP BY ref_id
HAVING max(latest) = 0
ORDER BY tmp.update_time DESC
LIMIT 1)
)
</if>
<if test="request.combine != null">
<include refid="scenarioCombine">
<property name="condition" value="request.combine"/>
@ -393,14 +470,42 @@
<property name="objectKey" value="request.combine.tags"/>
</include>
</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">
<choose>
<when test="key=='version_id'">
and atc.version_id in
<foreach collection="values" item="value" separator="," open="(" close=")">
#{value}
</foreach>
</when>
</choose>
</if>
</foreach>
</if>
<include refid="io.metersphere.base.mapper.ext.ExtBaseMapper.orders"/>
</select>
<select id="relevanceLoadList" resultType="io.metersphere.dto.LoadTestDTO">
SELECT
atc.id, atc.project_id , atc.name , atc.num , atc.status, atc.create_time, atc.update_time
from load_test atc
left join test_case_test tct on atc.id = tct.test_id
where tct.test_id is NULL and atc.status != 'Trash'
atc.id,
atc.project_id,
atc. NAME,
atc.num,
atc. STATUS,
atc.create_time,
atc.update_time,
project_version.name versionName,
project_version.id versionId
FROM
load_test atc
LEFT JOIN test_case_test tct ON atc.id = tct.test_id
LEFT JOIN project_version ON atc.project_id = project_version.project_id
AND atc.version_id = project_version.id
WHERE
tct.test_id IS NULL
AND atc. STATUS != 'Trash'
<if test="request.projectId != null and request.projectId!=''">
and atc.project_id = #{request.projectId}
</if>
@ -408,6 +513,30 @@
and (atc.name like CONCAT('%', #{request.name},'%')
or atc.num like CONCAT('%', #{request.name},'%'))
</if>
<if test="request.versionId != null">
and atc.version_id = #{request.versionId}
</if>
<if test="request.refId != null">
and atc.ref_id = #{request.refId}
</if>
<if test="request.versionId == null and request.refId == null and request.id == null">
AND (
atc.version_id = (SELECT project_version.id
FROM load_test tmp
JOIN project_version
ON tmp.project_id = project_version.project_id AND tmp.version_id = project_version.id AND latest = TRUE
WHERE ref_id = atc.ref_id
LIMIT 1)
OR
atc.version_id = (SELECT tmp.version_id
FROM load_test tmp
WHERE ref_id = atc.ref_id
GROUP BY ref_id
HAVING max(latest) = 0
ORDER BY tmp.update_time DESC
LIMIT 1)
)
</if>
<if test="request.combine != null">
<include refid="loadCaseCombine">
<property name="condition" value="request.combine"/>
@ -415,6 +544,20 @@
<property name="objectKey" value="request.combine.tags"/>
</include>
</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">
<choose>
<when test="key=='version_id'">
and atc.version_id in
<foreach collection="values" item="value" separator="," open="(" close=")">
#{value}
</foreach>
</when>
</choose>
</if>
</foreach>
</if>
<include refid="io.metersphere.base.mapper.ext.ExtBaseMapper.orders"/>
</select>
<update id="updateByExampleSelective" parameterType="map">

View File

@ -125,7 +125,7 @@ public interface ExtTestCaseMapper {
Long getPreOrder(@Param("projectId") String projectId, @Param("baseOrder") Long baseOrder);
List<TestCase> getTestCase(@Param("request") QueryTestCaseRequest request);
List<TestCaseDTO> getTestCase(@Param("request") QueryTestCaseRequest request);
List<RelationshipGraphData.Node> getTestCaseForGraph(@Param("ids") Set<String> ids);

View File

@ -831,10 +831,23 @@
</if>
order by `order` desc limit 1;
</select>
<select id="getTestCase" resultType="io.metersphere.base.domain.TestCase">
select test_case.id, test_case.name, test_case.priority, test_case.type, test_case.review_status,
test_case.num, test_case.custom_num, test_case.tags, test_case.create_time, test_case.update_time
from test_case as test_case
<select id="getTestCase" resultType="io.metersphere.track.dto.TestCaseDTO">
SELECT
test_case.id,
test_case. NAME,
test_case.priority,
test_case.type,
test_case.review_status,
test_case.num,
test_case.custom_num,
test_case.tags,
test_case.create_time,
test_case.update_time,
project_version.name versionName,
project_version.id versionId
FROM
test_case AS test_case
left join project_version on project_version.project_id = test_case.project_id and project_version.id = test_case.version_id
<include refid="notInQueryWhereCondition"></include>
<include refid="io.metersphere.base.mapper.ext.ExtBaseMapper.orders"/>
</select>

View File

@ -11,4 +11,5 @@ public class RelationshipEdgeDTO extends RelationshipEdge {
private String status;
private String creator;
private String versionId;
private String versionName;
}

View File

@ -9,4 +9,6 @@ import lombok.Setter;
public class TestCaseTestDao extends TestCaseTest {
private String name;
private String num;
private String projectName;
private String versionName;
}

View File

@ -140,7 +140,7 @@ public class TestCaseController {
}
@PostMapping("/relationship/relate/{goPage}/{pageSize}")
public Pager<List<TestCase>> getRelationshipRelateList(@PathVariable int goPage, @PathVariable int pageSize, @RequestBody QueryTestCaseRequest request) {
public Pager<List<TestCaseDTO>> getRelationshipRelateList(@PathVariable int goPage, @PathVariable int pageSize, @RequestBody QueryTestCaseRequest request) {
return testCaseService.getRelationshipRelateList(request, goPage, pageSize);
}

View File

@ -164,6 +164,8 @@ public class TestCaseService {
private RelationshipEdgeMapper relationshipEdgeMapper;
@Resource
private ExtProjectVersionMapper extProjectVersionMapper;
@Resource
private ProjectVersionMapper projectVersionMapper;
private void setNode(TestCaseWithBLOBs testCase) {
if (StringUtils.isEmpty(testCase.getNodeId()) || "default-module".equals(testCase.getNodeId())) {
@ -1187,7 +1189,7 @@ public class TestCaseService {
for (TestCaseExcelData model : datas) {
List<Object> list = new ArrayList<>();
Map<String,String> customDataMaps = Optional.ofNullable(model.getCustomDatas()).orElse(new HashMap<>());
Map<String, String> customDataMaps = Optional.ofNullable(model.getCustomDatas()).orElse(new HashMap<>());
for (String head : headList) {
if (StringUtils.equalsAnyIgnoreCase(head, "ID")) {
@ -1220,7 +1222,7 @@ public class TestCaseService {
list.add(model.getStepModel());
} else if (StringUtils.equalsAnyIgnoreCase(head, "Priority", "用例等級", "用例等级")) {
list.add(model.getPriority());
} else if(StringUtils.equalsAnyIgnoreCase(head,"Case status","用例状态","用例狀態")){
} else if (StringUtils.equalsAnyIgnoreCase(head, "Case status", "用例状态", "用例狀態")) {
list.add(model.getStatus());
} else if (StringUtils.equalsAnyIgnoreCase(head, "Maintainer(ID)", "责任人(ID)", "維護人(ID)")) {
list.add(model.getMaintainer());
@ -2218,29 +2220,51 @@ public class TestCaseService {
List<LoadTest> apiLoadTests = performanceTestService.getLoadCaseByIds(
getTestIds(testCaseTests, "performance")
);
List<String> projectIds = apiCases.stream().map(c -> c.getProjectId()).collect(Collectors.toList());
projectIds.addAll(apiScenarios.stream().map(s -> s.getProjectId()).collect(Collectors.toList()));
projectIds.addAll(apiLoadTests.stream().map(s -> s.getProjectId()).collect(Collectors.toList()));
projectIds = projectIds.stream().distinct().collect(Collectors.toList());
List<String> versionIds = apiCases.stream().map(c -> c.getVersionId()).collect(Collectors.toList());
versionIds.addAll(apiScenarios.stream().map(s -> s.getVersionId()).collect(Collectors.toList()));
versionIds.addAll(apiLoadTests.stream().map(l -> l.getVersionId()).collect(Collectors.toList()));
versionIds = versionIds.stream().distinct().collect(Collectors.toList());
ProjectExample projectExample = new ProjectExample();
projectExample.createCriteria().andIdIn(projectIds);
List<Project> projects = projectMapper.selectByExample(projectExample);
Map<String, String> projectNameMap = projects.stream().collect(Collectors.toMap(Project::getId, Project::getName));
ProjectVersionExample versionExample = new ProjectVersionExample();
versionExample.createCriteria().andIdIn(versionIds);
List<ProjectVersion> projectVersions = projectVersionMapper.selectByExample(versionExample);
Map<String, String> verisonNameMap = projectVersions.stream().collect(Collectors.toMap(ProjectVersion::getId, ProjectVersion::getName));
List<TestCaseTestDao> testCaseTestList = new ArrayList<>();
apiCases.forEach(item -> {
getTestCaseTestDaoList("testcase", item.getNum(), item.getName(), item.getId(),
getTestCaseTestDaoList("testcase", item.getNum(), item.getName(), item.getId(), projectNameMap.get(item.getProjectId()), verisonNameMap.get(item.getVersionId()),
testCaseTestList, testCaseTestsMap);
});
apiScenarios.forEach(item -> {
getTestCaseTestDaoList("automation", item.getNum(), item.getName(), item.getId(),
getTestCaseTestDaoList("automation", item.getNum(), item.getName(), item.getId(), projectNameMap.get(item.getProjectId()), verisonNameMap.get(item.getVersionId()),
testCaseTestList, testCaseTestsMap);
});
apiLoadTests.forEach(item -> {
getTestCaseTestDaoList("performance", item.getNum(), item.getName(), item.getId(),
getTestCaseTestDaoList("performance", item.getNum(), item.getName(), item.getId(), projectNameMap.get(item.getProjectId()), verisonNameMap.get(item.getVersionId()),
testCaseTestList, testCaseTestsMap);
});
return testCaseTestList;
}
public void getTestCaseTestDaoList(String type, Object num, String name, String testId,
public void getTestCaseTestDaoList(String type, Object num, String name, String testId, String projectName, String versionName,
List<TestCaseTestDao> testCaseTestList, Map<String, TestCaseTest> testCaseTestsMap) {
TestCaseTestDao testCaseTestDao = new TestCaseTestDao();
BeanUtils.copyBean(testCaseTestDao, testCaseTestsMap.get(testId));
testCaseTestDao.setNum(num.toString());
testCaseTestDao.setName(name);
testCaseTestDao.setTestType(type);
testCaseTestDao.setProjectName(projectName);
testCaseTestDao.setVersionName(versionName);
testCaseTestList.add(testCaseTestDao);
}
@ -2283,7 +2307,7 @@ public class TestCaseService {
testCaseMapper::updateByPrimaryKeySelective);
}
public Pager<List<TestCase>> getRelationshipRelateList(QueryTestCaseRequest request, int goPage, int pageSize) {
public Pager<List<TestCaseDTO>> getRelationshipRelateList(QueryTestCaseRequest request, int goPage, int pageSize) {
setDefaultOrder(request);
List<String> relationshipIds = relationshipEdgeService.getRelationshipIds(request.getId());
request.setTestCaseContainIds(relationshipIds);
@ -2301,6 +2325,15 @@ public class TestCaseService {
example.createCriteria().andIdIn(ids).andStatusNotEqualTo("Trash");
List<TestCaseWithBLOBs> testCaseList = testCaseMapper.selectByExampleWithBLOBs(example);
buildUserInfo(testCaseList);
Map<String, String> verionNameMap = new HashMap<>();
List<String> versionIds = testCaseList.stream().map(TestCase::getVersionId).collect(Collectors.toList());
if (CollectionUtils.isNotEmpty(versionIds)) {
ProjectVersionRequest pvr = new ProjectVersionRequest();
pvr.setProjectId(testCaseList.get(0).getProjectId());
List<ProjectVersionDTO> projectVersions = extProjectVersionMapper.selectProjectVersionList(pvr);
verionNameMap = projectVersions.stream().collect(Collectors.toMap(ProjectVersionDTO::getId, ProjectVersionDTO::getName));
}
Map<String, TestCase> caseMap = testCaseList.stream().collect(Collectors.toMap(TestCase::getId, i -> i));
List<RelationshipEdgeDTO> results = new ArrayList<>();
for (RelationshipEdge relationshipEdge : relationshipEdges) {
@ -2320,6 +2353,7 @@ public class TestCaseService {
relationshipEdgeDTO.setTargetNum(testCase.getNum());
relationshipEdgeDTO.setTargetCustomNum(testCase.getCustomNum());
relationshipEdgeDTO.setStatus(testCase.getStatus());
relationshipEdgeDTO.setVersionName(verionNameMap.get(testCase.getVersionId()));
results.add(relationshipEdgeDTO);
}
return results;

View File

@ -11,6 +11,7 @@
<api-table-list
:table-data="tableData"
:version-filters="versionFilters"
:version-enable="versionEnable"
:project-id="projectId"
:condition="condition"
:select-node-ids="selectNodeIds"
@ -92,6 +93,10 @@ export default {
projectId: String,
planId: String,
isTestPlan: Boolean,
versionEnable: {
type: Boolean,
default: false
}
},
created() {
this.condition.versionId = this.currentVersion;

View File

@ -184,7 +184,7 @@ export default {
},
projectId: String,
planId: String,
isTestPlan: Boolean
isTestPlan: Boolean,
},
created() {
this.condition.versionId = this.currentVersion;

View File

@ -93,19 +93,16 @@ export default {
options: [],
value: '',
versionOptions: {},
versionEnable: false,
};
},
props: {
apiDefinitionId: String,
readOnly: Boolean,
relationshipType: String,
versionEnable: Boolean,
},
created() {
this.getProjectVersions();
this.$get('/project/version/enable/' + getCurrentProjectID(), response => {
this.versionEnable = response.data;
});
},
methods: {
getTableData() {

View File

@ -13,7 +13,6 @@
operator-width="170px"
@refresh="initTable"
ref="apitable">
<ms-table-column
prop="num"
label="ID"

View File

@ -9,11 +9,13 @@
class="pre-list"
:read-only="readOnly" :title="resourceType === 'TEST_CASE' ? $t('commons.relationship.pre_case') : $t('commons.relationship.pre_api')"
relationship-type="PRE" :resource-id="resourceId"
:version-enable="versionEnable"
@setCount="setPreCount"
:resource-type="resourceType" ref="preRelationshipList"/>
<relationship-list
class="post-list"
:read-only="readOnly"
:version-enable="versionEnable"
:title="resourceType === 'TEST_CASE' ? $t('commons.relationship.post_case') : $t('commons.relationship.post_api')"
relationship-type="POST" :resource-id="resourceId"
@setCount="setPostCount"
@ -38,7 +40,8 @@ export default {
props: [
'resourceId',
'resourceType',
'readOnly'
'readOnly',
'versionEnable',
],
data() {
return {

View File

@ -9,6 +9,7 @@
:case-id="resourceId"
:read-only="readOnly"
:relationship-type="relationshipType"
:version-enable="versionEnable"
@setCount="setCount"
@deleteRelationship="handleDelete"
ref="testCaseRelationshipList"/>
@ -18,6 +19,7 @@
:read-only="readOnly"
:api-definition-id="resourceId"
:relationship-type="relationshipType"
:version-enable="versionEnable"
@setCount="setCount"
@deleteRelationship="handleDelete"
ref="testCaseRelationshipList"/>
@ -53,7 +55,8 @@ export default {
readOnly: Boolean,
relationshipType: String,
title: String,
resourceType: String
resourceType: String,
versionEnable: Boolean,
},
methods: {
getTableData() {

View File

@ -35,6 +35,7 @@
:tree-nodes="treeNodes"
:trash-enable="true"
:current-version="currentTrashVersion"
:version-enable="versionEnable"
@refreshTable="refresh"
@testCaseEdit="editTestCase"
@testCaseCopy="copyTestCase"
@ -55,6 +56,7 @@
:tree-nodes="treeNodes"
:trash-enable="false"
:public-enable="true"
:version-enable="versionEnable"
@refreshTable="refresh"
@testCaseEdit="editTestCase"
@testCaseEditShow="editTestCaseShow"
@ -88,6 +90,7 @@
:trash-enable="false"
:public-enable="false"
:current-version="currentVersion"
:version-enable="versionEnable"
@refreshTable="refresh"
@testCaseEdit="editTestCase"
@testCaseCopy="copyTestCase"
@ -118,6 +121,7 @@
<div class="ms-api-scenario-div" v-if="!showPublic">
<test-case-edit
:currentTestCaseInfo="item.testCaseInfo"
:version-enable="versionEnable"
@refresh="refreshTable"
@caseEdit="handleCaseCreateOrEdit($event,'edit')"
@caseCreate="handleCaseCreateOrEdit($event,'add')"
@ -135,6 +139,7 @@
<div class="ms-api-scenario-div" v-if="showPublic">
<test-case-edit-show
:currentTestCaseInfo="item.testCaseInfo"
:version-enable="versionEnable"
@refresh="refreshTable"
@caseEdit="handleCaseCreateOrEdit($event,'edit')"
@caseCreate="handleCaseCreateOrEdit($event,'add')"
@ -191,7 +196,14 @@ import SelectMenu from "../common/SelectMenu";
import MsContainer from "../../common/components/MsContainer";
import MsAsideContainer from "../../common/components/MsAsideContainer";
import MsMainContainer from "../../common/components/MsMainContainer";
import {getCurrentProjectID, getCurrentWorkspaceId, getUUID, hasPermission, setCurTabId} from "@/common/js/utils";
import {
hasLicense,
getCurrentProjectID,
getCurrentWorkspaceId,
getUUID,
hasPermission,
setCurTabId
} from "@/common/js/utils";
import TestCaseNodeTree from "../common/TestCaseNodeTree";
import MsTabButton from "@/business/components/common/components/MsTabButton";
@ -238,6 +250,7 @@ export default {
tmpPath: null,
currentVersion: null,
currentTrashVersion: null,
versionEnable: false
};
},
mounted() {
@ -248,6 +261,7 @@ export default {
} else {
this.init(this.$route);
}
this.checkVersionEnable();
},
beforeRouteLeave(to, from, next) {
if (this.$store.state.isTestCaseMinderChanged) {
@ -671,7 +685,17 @@ export default {
vh.loading = false;
});
});
}
},
checkVersionEnable() {
if (!this.projectId) {
return;
}
if (hasLicense()) {
this.$get('/project/version/enable/' + this.projectId, response => {
this.versionEnable = response.data;
});
}
},
}
};
</script>

View File

@ -5,6 +5,7 @@
:get-table-data="getTestCases"
:get-node-tree="getTreeNodes"
:save="saveCaseRelevance"
:version-enable="versionEnable"
ref="functionalRelevance">
</functional-relevance>
</template>
@ -35,6 +36,7 @@ export default {
type: String
},
relationshipType: String,
versionEnable: Boolean
},
watch: {
caseId() {

View File

@ -21,6 +21,7 @@
:current-protocol="currentProtocol"
:select-node-ids="selectNodeIds"
:project-id="projectId"
:versionEnable="versionEnable"
ref="apiCaseList"/>
</test-case-relevance-base>
@ -52,6 +53,10 @@ export default {
props: {
caseId: {
type: String
},
versionEnable: {
type: Boolean,
default: false
}
},
methods: {

View File

@ -114,7 +114,7 @@
<ms-form-divider :title="$t('test_track.case.other_info')"/>
<test-case-edit-other-info :read-only="readOnly" :project-id="projectIds" :form="form"
:label-width="formLabelWidth" :case-id="form.id" ref="otherInfo"/>
:label-width="formLabelWidth" :case-id="form.id" :version-enable="versionEnable" ref="otherInfo"/>
<el-row style="margin-top: 10px" v-if="type!=='add'">
<el-col :span="20" :offset="1">{{ $t('test_track.review.comment') }}:
@ -313,7 +313,7 @@ export default {
newData: null,
selectedOtherInfo: null,
currentProjectId: "" ,
casePublic: false
casePublic: false,
};
},
props: {
@ -332,7 +332,8 @@ export default {
type: Boolean,
default: false,
},
activeName: String
activeName: String,
versionEnable: Boolean,
},
computed: {
projectIds() {

View File

@ -6,7 +6,7 @@
</el-row>
</el-tab-pane>
<el-tab-pane :label="$t('test_track.case.relate_test')" name="relateTest">
<test-case-test-relate :read-only="readOnly" :case-id="caseId" ref="relateTest"/>
<test-case-test-relate :read-only="readOnly" :case-id="caseId" :version-enable="versionEnable" ref="relateTest"/>
</el-tab-pane>
<el-tab-pane :label="$t('test_track.related_requirements')" name="demand">
@ -37,7 +37,7 @@
<template v-slot:label>
<tab-pane-count :title="$t('commons.relationship.name')" :count="relationshipCount"/>
</template>
<dependencies-list @setCount="setRelationshipCount" :read-only="readOnly" :resource-id="caseId" resource-type="TEST_CASE" ref="relationship"/>
<dependencies-list @setCount="setRelationshipCount" :read-only="readOnly" :resource-id="caseId" :version-enable="versionEnable" resource-type="TEST_CASE" ref="relationship"/>
</el-tab-pane>
<el-tab-pane :label="$t('test_track.case.attachment')" name="attachment">
@ -90,7 +90,7 @@ export default {
DependenciesList,
TestCaseTestRelate,
FormRichTextItem, TestCaseIssueRelate, TestCaseAttachment, MsRichText, TestCaseRichText},
props: ['form', 'labelWidth', 'caseId', 'readOnly', 'projectId', 'isTestPlan', 'planId'],
props: ['form', 'labelWidth', 'caseId', 'readOnly', 'projectId', 'isTestPlan', 'planId', 'versionEnable'],
data() {
return {
result: {},

View File

@ -144,6 +144,7 @@
</ms-table-column>
<ms-table-column
v-if="versionEnable"
:label="$t('project.version.name')"
:field="item"
:fields-width="fieldsWidth"
@ -493,6 +494,10 @@ export default {
default: false,
},
currentVersion: String,
versionEnable: {
type: Boolean,
default: false
}
},
computed: {
projectId() {

View File

@ -8,6 +8,7 @@
<test-case-relate-load-list
:project-id="projectId"
:versionEnable="versionEnable"
ref="apiCaseList"/>
</test-case-relevance-base>
@ -42,6 +43,10 @@ export default {
props: {
caseId: {
type: String
},
versionEnable: {
type: Boolean,
default: false
}
},
methods: {

View File

@ -1,59 +1,74 @@
<template>
<div>
<el-input :placeholder="$t('commons.search_by_name_or_id')" @blur="initTable"
@keyup.enter.native="initTable" class="search-input" size="small" v-model="condition.name"/>
<el-input :placeholder="$t('commons.search_by_name_or_id')" @blur="initTable"
@keyup.enter.native="initTable" class="search-input" size="small" v-model="condition.name"/>
<ms-table-adv-search-bar :condition.sync="condition" class="adv-search-bar"
v-if="condition.components !== undefined && condition.components.length > 0"
@search="initTable"/>
<ms-table v-loading="result.loading" :data="tableData" :select-node-ids="selectNodeIds" :condition="condition" :page-size="pageSize"
:total="total"
:showSelectAll="false"
:screenHeight="screenHeight"
@refresh="initTable"
ref="table">
<ms-table-adv-search-bar :condition.sync="condition" class="adv-search-bar"
v-if="condition.components !== undefined && condition.components.length > 0"
@search="initTable"/>
<version-select v-xpack :project-id="projectId" @changeVersion="changeVersion" margin-right="20"
class="search-input"/>
<ms-table-column
prop="num"
label="ID"
width="100px"
sortable=true>
</ms-table-column>
<ms-table v-loading="result.loading" :data="tableData" :select-node-ids="selectNodeIds" :condition="condition"
:page-size="pageSize"
:total="total"
:showSelectAll="false"
:screenHeight="screenHeight"
@refresh="initTable"
ref="table">
<ms-table-column
prop="name"
:label="$t('test_track.case.name')"/>
<ms-table-column
prop="num"
label="ID"
width="100px"
sortable=true>
</ms-table-column>
<ms-table-column
prop="priority"
:filters="priorityFilters"
column-key="priority"
:label="$t('test_track.case.priority')">
<template v-slot:default="scope">
<priority-table-item :value="scope.row.priority"/>
</template>
</ms-table-column>
<ms-table-column prop="tags" width="120px" :label="$t('commons.tag')">
<template v-slot:default="scope">
<ms-tag v-for="(itemName,index) in scope.row.tags" :key="index" type="success" effect="plain"
:content="itemName" style="margin-left: 0px; margin-right: 2px"></ms-tag>
</template>
</ms-table-column>
<!-- <ms-table-column-->
<!-- prop="path"-->
<!-- width="180px"-->
<!-- :label="'API'+ $t('api_test.definition.api_path')"/>-->
<ms-table-column
prop="name"
:label="$t('test_track.case.name')"/>
<!-- <ms-table-column-->
<!-- sortable="custom"-->
<!-- prop="casePath"-->
<!-- width="180px"-->
<!-- :label="$t('api_test.definition.request.case')+ $t('api_test.definition.api_path')"/>-->
<ms-table-column
v-if="versionEnable"
:label="$t('project.version.name')"
:filters="versionFilters"
min-width="100px"
prop="versionId">
<template v-slot:default="scope">
<span>{{ scope.row.versionName }}</span>
</template>
</ms-table-column>
<ms-table-column
prop="priority"
:filters="priorityFilters"
column-key="priority"
:label="$t('test_track.case.priority')">
<template v-slot:default="scope">
<priority-table-item :value="scope.row.priority"/>
</template>
</ms-table-column>
<ms-table-column prop="tags" width="120px" :label="$t('commons.tag')">
<template v-slot:default="scope">
<ms-tag v-for="(itemName,index) in scope.row.tags" :key="index" type="success" effect="plain"
:content="itemName" style="margin-left: 0px; margin-right: 2px"></ms-tag>
</template>
</ms-table-column>
<!-- <ms-table-column-->
<!-- prop="path"-->
<!-- width="180px"-->
<!-- :label="'API'+ $t('api_test.definition.api_path')"/>-->
<!-- <ms-table-column-->
<!-- sortable="custom"-->
<!-- prop="casePath"-->
<!-- width="180px"-->
<!-- :label="$t('api_test.definition.request.case')+ $t('api_test.definition.api_path')"/>-->
</ms-table>
<ms-table-pagination :change="initTable" :current-page.sync="currentPage" :page-size.sync="pageSize"
:total="total"/>
</ms-table>
<ms-table-pagination :change="initTable" :current-page.sync="currentPage" :page-size.sync="pageSize"
:total="total"/>
<table-select-count-bar :count="selectRows.size"/>
@ -72,7 +87,9 @@ import TableSelectCountBar from "@/business/components/api/automation/scenario/a
import {TEST_CASE_RELEVANCE_API_CASE_CONFIGS} from "@/business/components/common/components/search/search-components";
import MsTableAdvSearchBar from "@/business/components/common/components/search/MsTableAdvSearchBar";
import MsTag from "@/business/components/common/components/MsTag";
import {getCurrentProjectID} from "@/common/js/utils";
import {getCurrentProjectID, hasLicense} from "@/common/js/utils";
const requireComponent = require.context('@/business/components/xpack/', true, /\.vue$/);
const VersionSelect = requireComponent.keys().length > 0 ? requireComponent("./version/VersionSelect.vue") : {};
export default {
name: "TestCaseRelateApiList",
@ -83,7 +100,8 @@ export default {
MsTable,
MsTableColumn,
MsTableAdvSearchBar,
MsTag
MsTag,
'VersionSelect': VersionSelect.default,
},
data() {
return {
@ -104,15 +122,21 @@ export default {
currentPage: 1,
pageSize: 10,
total: 0,
versionFilters: []
}
},
props: {
currentProtocol: String,
selectNodeIds: Array,
projectId: String,
versionEnable: {
type: Boolean,
default: false
}
},
created: function () {
this.initTable();
this.getVersionOptions();
},
watch: {
selectNodeIds() {
@ -176,6 +200,19 @@ export default {
this.$refs.table.clearSelectRows();
}
},
getVersionOptions() {
if (hasLicense()) {
this.$get('/project/version/get-project-versions/' + getCurrentProjectID(), response => {
this.versionFilters = response.data.map(u => {
return {text: u.name, value: u.id};
});
});
}
},
changeVersion(currentVersion) {
this.condition.versionId = currentVersion || null;
this.initTable();
}
},
}
</script>

View File

@ -6,6 +6,10 @@
<ms-table-adv-search-bar :condition.sync="condition" class="adv-search-bar"
v-if="condition.components !== undefined && condition.components.length > 0"
@search="initTable"/>
<version-select v-xpack :project-id="projectId" @changeVersion="changeVersion" margin-right="20"
class="search-input"/>
<ms-table v-loading="result.loading" :data="tableData" :condition="condition" :page-size="pageSize"
:total="total"
:showSelectAll="false"
@ -24,6 +28,17 @@
prop="name"
:label="$t('commons.name')"/>
<ms-table-column
v-if="versionEnable"
:label="$t('project.version.name')"
:filters="versionFilters"
min-width="100px"
prop="versionId">
<template v-slot:default="scope">
<span>{{ scope.row.versionName }}</span>
</template>
</ms-table-column>
<ms-table-column
prop="status"
:label="$t('commons.status')"
@ -67,6 +82,9 @@ import TableSelectCountBar from "@/business/components/api/automation/scenario/a
import MsPerformanceTestStatus from "@/business/components/performance/test/PerformanceTestStatus";
import MsTableAdvSearchBar from "@/business/components/common/components/search/MsTableAdvSearchBar";
import {TEST_CASE_RELEVANCE_LOAD_CASE} from "@/business/components/common/components/search/search-components";
const requireComponent = require.context('@/business/components/xpack/', true, /\.vue$/);
const VersionSelect = requireComponent.keys().length > 0 ? requireComponent("./version/VersionSelect.vue") : {};
import {hasLicense, getCurrentProjectID} from "@/common/js/utils";
export default {
name: "TestCaseRelateLoadList",
@ -77,6 +95,7 @@ export default {
MsTable,
MsTableColumn,
MsTableAdvSearchBar,
'VersionSelect': VersionSelect.default,
},
data() {
return {
@ -89,13 +108,16 @@ export default {
currentPage: 1,
pageSize: 10,
total: 0,
versionFilters: [],
}
},
props: {
projectId: String,
versionEnable: Boolean,
},
created: function () {
this.initTable();
this.getVersionOptions();
},
watch: {
projectId() {
@ -141,6 +163,20 @@ export default {
this.$refs.table.clearSelectRows();
}
},
getVersionOptions() {
if (hasLicense()) {
this.$get('/project/version/get-project-versions/' + getCurrentProjectID(), response => {
this.versionOptions = response.data;
this.versionFilters = response.data.map(u => {
return {text: u.name, value: u.id};
});
});
}
},
changeVersion(currentVersion) {
this.condition.versionId = currentVersion || null;
this.initTable();
}
},
}
</script>

View File

@ -6,6 +6,10 @@
<ms-table-adv-search-bar :condition.sync="condition" class="adv-search-bar"
v-if="condition.components !== undefined && condition.components.length > 0"
@search="initTable"/>
<version-select v-xpack :project-id="projectId" @changeVersion="changeVersion" margin-left="-100"
class="search-input"/>
<ms-table v-loading="result.loading" :data="tableData" :select-node-ids="selectNodeIds" :condition="condition" :page-size="pageSize"
:total="total"
:showSelectAll="false"
@ -38,6 +42,17 @@
prop="name"
:label="$t('api_test.automation.scenario_name')"/>
<ms-table-column
v-if="versionEnable"
:label="$t('project.version.name')"
:filters="versionFilters"
min-width="100px"
prop="versionId">
<template v-slot:default="scope">
<span>{{ scope.row.versionName }}</span>
</template>
</ms-table-column>
<ms-table-column
prop="level"
sortable
@ -86,6 +101,9 @@ import PlanStatusTableItem from "@/business/components/track/common/tableItems/p
import MsTableAdvSearchBar from "@/business/components/common/components/search/MsTableAdvSearchBar";
import MsTag from "@/business/components/common/components/MsTag";
import {TEST_CASE_RELEVANCE_API_CASE_CONFIGS} from "@/business/components/common/components/search/search-components";
import {hasLicense, getCurrentProjectID} from "@/common/js/utils";
const requireComponent = require.context('@/business/components/xpack/', true, /\.vue$/);
const VersionSelect = requireComponent.keys().length > 0 ? requireComponent("./version/VersionSelect.vue") : {};
export default {
name: "TestCaseRelateScenarioList",
@ -97,7 +115,8 @@ export default {
MsTable,
MsTableColumn,
MsTableAdvSearchBar,
MsTag
MsTag,
'VersionSelect': VersionSelect.default,
},
data() {
return {
@ -116,14 +135,17 @@ export default {
currentPage: 1,
pageSize: 10,
total: 0,
versionFilters: []
}
},
props: {
selectNodeIds: Array,
projectId: String,
versionEnable: Boolean,
},
created: function () {
this.initTable();
this.getVersionOptions();
},
watch: {
selectNodeIds() {
@ -178,6 +200,20 @@ export default {
this.$refs.table.clearSelectRows();
}
},
getVersionOptions() {
if (hasLicense()) {
this.$get('/project/version/get-project-versions/' + getCurrentProjectID(), response => {
this.versionOptions = response.data;
this.versionFilters = response.data.map(u => {
return {text: u.name, value: u.id};
});
});
}
},
changeVersion(currentVersion) {
this.condition.versionId = currentVersion || null;
this.initTable();
}
},
}
</script>

View File

@ -39,6 +39,16 @@
:label="$t('commons.name')"
min-width="120"/>
<ms-table-column
v-if="versionEnable"
prop="versionId"
:label="$t('commons.version')"
min-width="120px">
<template v-slot:default="scope">
<span>{{ scope.row.versionName }}</span>
</template>
</ms-table-column>
<ms-table-column
prop="creator"
:label="$t('commons.create_user')"
@ -69,6 +79,7 @@
<relationship-functional-relevance
:case-id="caseId"
:version-enable="versionEnable"
@refresh="getTableData"
:relationship-type="relationshipType"
ref="testCaseRelevance"/>
@ -108,6 +119,7 @@ export default {
caseId: String,
readOnly: Boolean,
relationshipType: String,
versionEnable: Boolean,
},
computed: {
isCustomNum() {

View File

@ -20,6 +20,7 @@
<test-case-relate-scenario-list
:select-node-ids="selectNodeIds"
:project-id="projectId"
:versionEnable="versionEnable"
ref="apiCaseList"/>
</test-case-relevance-base>
@ -54,7 +55,11 @@ export default {
props: {
caseId: {
type: String
}
},
versionEnable: {
type: Boolean,
default: false
},
},
methods: {
open() {

View File

@ -29,6 +29,15 @@
prop="name"
:label="$t('test_track.case.name')"/>
<ms-table-column
prop="projectName"
:label="$t('commons.project')"/>
<ms-table-column
v-if="versionEnable"
prop="versionName"
:label="$t('commons.version')"/>
<ms-table-column
:label="$t('test_resource_pool.type')"
prop="type">
@ -40,16 +49,19 @@
<test-case-api-relate
:case-id="caseId"
:versionEnable="versionEnable"
@refresh="initTable"
ref="apiCaseRelevance"/>
<test-case-scenario-relate
:case-id="caseId"
:versionEnable="versionEnable"
@refresh="initTable"
ref="apiScenarioRelevance"/>
<test-case-load-relate
:case-id="caseId"
:versionEnable="versionEnable"
@refresh="initTable"
ref="loadRelevance"/>
@ -87,7 +99,7 @@ export default {
],
}
},
props: ['caseId', 'readOnly'],
props: ['caseId', 'readOnly', 'versionEnable'],
watch: {
caseId() {
this.initTable();

View File

@ -21,12 +21,13 @@
</ms-test-plan-header-bar>
<test-plan-functional v-if="activeIndex === 'functional'" :redirectCharType="redirectCharType"
:clickType="clickType" :plan-id="planId" ref="testPlanFunctional"/>
:clickType="clickType" :plan-id="planId" :version-enable="versionEnable"
ref="testPlanFunctional"/>
<test-plan-api v-if="activeIndex === 'api'" :redirectCharType="redirectCharType" :clickType="clickType"
:plan-id="planId"/>
:plan-id="planId" :version-enable="versionEnable"/>
<test-plan-load v-if="activeIndex === 'load'" :redirectCharType="redirectCharType" :clickType="clickType"
:plan-id="planId"/>
<test-plan-report-content v-if="activeIndex === 'report'" :plan-id="planId"/>
:plan-id="planId" :version-enable="versionEnable"/>
<test-plan-report-content v-if="activeIndex === 'report'" :plan-id="planId" :version-enable="versionEnable"/>
<is-change-confirm
:title="'请保存脑图'"
@ -50,7 +51,7 @@ import MsTestPlanHeaderBar from "./comonents/head/TestPlanHeaderBar";
import TestPlanFunctional from "./comonents/functional/TestPlanFunctional";
import TestPlanApi from "./comonents/api/TestPlanApi";
import TestPlanLoad from "@/business/components/track/plan/view/comonents/load/TestPlanLoad";
import {getCurrentProjectID} from "@/common/js/utils";
import {getCurrentProjectID, hasLicense} from "@/common/js/utils";
import TestPlanReportContent from "@/business/components/track/plan/view/comonents/report/detail/TestPlanReportContent";
import IsChangeConfirm from "@/business/components/common/components/IsChangeConfirm";
@ -75,7 +76,9 @@ export default {
redirectCharType: '',
//-
clickType: '',
tmpActiveIndex: ''
tmpActiveIndex: '',
versionEnable: false,
projectId: null
};
},
computed: {
@ -105,6 +108,8 @@ export default {
this.$router.push('/track/plan/all');
}
});
this.projectId = getCurrentProjectID();
this.checkVersionEnable();
},
mounted() {
this.getTestPlans();
@ -166,7 +171,17 @@ export default {
this.$nextTick(() => {
this.isMenuShow = true;
});
}
},
checkVersionEnable() {
if (!this.projectId) {
return;
}
if (hasLicense()) {
this.$get('/project/version/enable/' + this.projectId, response => {
this.versionEnable = response.data;
});
}
},
},
};
</script>

View File

@ -26,6 +26,7 @@
:is-test-plan="true"
:plan-id="planId"
:versionFilters="versionFilters"
:version-enable="versionEnable"
@isApiListEnableChange="isApiListEnableChange"
ref="apiList">
<template v-slot:version>
@ -41,6 +42,7 @@
:project-id="projectId"
:is-test-plan="true"
:versionFilters="versionFilters"
:version-enable="versionEnable"
:plan-id="planId"
@isApiListEnableChange="isApiListEnableChange"
ref="apiCaseList">
@ -91,6 +93,10 @@
props: {
planId: {
type: String
},
versionEnable: {
type: Boolean,
default: false
}
},
watch: {

View File

@ -47,6 +47,7 @@
:select-node-ids="selectNodeIds"
:trash-enable="trashEnable"
:is-case-relevance="true"
:version-enable="versionEnable"
:model="'plan'"
:plan-id="planId"
:clickType="clickType"
@ -58,6 +59,7 @@
v-if="model === 'scenario'"
:select-node-ids="selectNodeIds"
:trash-enable="trashEnable"
:version-enable="versionEnable"
:plan-id="planId"
:clickType="clickType"
@refresh="refreshTree"
@ -70,6 +72,7 @@
@refresh="refresh"
:plan-id="planId"
:model="model"
:version-enable="versionEnable"
ref="apiCaseRelevance"/>
<test-case-scenario-relevance
@ -122,7 +125,8 @@
props: [
'planId',
'redirectCharType',
'clickType'
'clickType',
'versionEnable',
],
mounted() {
this.checkRedirectCharType();

View File

@ -12,7 +12,6 @@
@setEnvironment="setEnvironment"
v-if="isPlanModel"/>
</template>
<ms-table
v-loading="result.loading"
:data="tableData"
@ -32,7 +31,6 @@
row-key="id"
ref="table">
<span v-for="(item) in fields" :key="item.key">
<ms-table-column :field="item" prop="num"
:fields-width="fieldsWidth"
sortable label="ID" min-width="80"/>
@ -41,6 +39,7 @@
:label="$t('test_track.case.name')"/>
<ms-table-column
v-if="versionEnable"
prop="versionId"
:field="item"
:filters="versionFilters"
@ -322,7 +321,8 @@ export default {
},
planId: String,
reviewId: String,
clickType: String
clickType: String,
versionEnable: Boolean,
},
created: function () {
this.getMaintainerOptions();

View File

@ -22,6 +22,7 @@
<version-select v-xpack :project-id="projectId" @changeVersion="changeVersion" margin-right="20"/>
</template>
</ms-table-header>
<ms-table
v-loading="page.result.loading"
:data="page.data"
@ -49,6 +50,7 @@
<ms-table-column prop="name" :label="$t('commons.name')"/>
<ms-table-column
v-if="versionEnable"
prop="versionId"
:filters="versionFilters"
:label="$t('commons.version')"
@ -177,7 +179,11 @@ export default {
multipleProject: {
type: Boolean,
default: true
}
},
versionEnable: {
type: Boolean,
default: false
},
},
watch: {
selectNodeIds() {

View File

@ -58,6 +58,7 @@
min-width="120px"/>
<ms-table-column
v-if="versionEnable"
prop="versionId"
:field="item"
:filters="versionFilters"
@ -408,7 +409,11 @@ export default {
selectNodeIds: {
type: Array
},
currentVersion: null
currentVersion: null,
versionEnable: {
type: Boolean,
default: false
},
},
computed: {
editTestPlanTestCaseOrder() {

View File

@ -30,6 +30,7 @@
:plan-id="planId"
:clickType="clickType"
:select-node-ids="selectNodeIds"
:version-enable="versionEnable"
ref="testPlanTestCaseList"/>
<test-plan-minder
:tree-nodes="treeNodes"
@ -45,6 +46,7 @@
<test-plan-functional-relevance
@refresh="refresh"
:plan-id="planId"
:version-enable="versionEnable"
ref="testCaseRelevance"/>
<is-change-confirm
@ -98,7 +100,8 @@ export default {
props: [
'planId',
'redirectCharType',
'clickType'
'clickType',
'versionEnable',
],
mounted() {
this.initData();

View File

@ -5,6 +5,7 @@
:get-node-tree="getTreeNodes"
:is-test-plan="true"
:save="saveCaseRelevance"
:version-enable="versionEnable"
ref="functionalRelevance">
</functional-relevance>
</template>
@ -32,7 +33,11 @@ export default {
props: {
planId: {
type: String
}
},
versionEnable: {
type: Boolean,
default: false
},
},
watch: {
planId() {

View File

@ -45,6 +45,7 @@
</el-table-column>
<el-table-column
v-if="versionEnable"
prop="versionId"
:column-key="'versionId'"
:filters="versionFilters"
@ -153,7 +154,10 @@ export default {
},
reviewId: {
type: String
}
},
versionEnable: {
type: Boolean
},
},
watch: {
planId() {

View File

@ -15,6 +15,7 @@
:clickType="clickType"
:select-project-id="selectProjectId"
:select-parent-nodes="selectParentNodes"
:version-enable="versionEnable"
@relevanceCase="openTestCaseRelevanceDialog"
ref="testPlanLoadCaseList"/>
</template>
@ -22,6 +23,7 @@
<test-case-load-relevance
@refresh="refresh"
:plan-id="planId"
:version-enable="versionEnable"
ref="testCaseLoadRelevance"/>
</ms-test-plan-common-component>
</template>
@ -54,7 +56,8 @@ export default {
props: [
'planId',
'redirectCharType',
'clickType'
'clickType',
'versionEnable',
],
watch: {
planId() {

View File

@ -46,6 +46,7 @@
sortable>
</ms-table-column>
<ms-table-column
v-if="versionEnable"
prop="versionId"
:field="item"
:filters="versionFilters"
@ -237,6 +238,7 @@ export default {
planId: String,
reviewId: String,
clickType: String,
versionEnable: Boolean,
},
computed: {
editTestPlanLoadCaseOrder() {

View File

@ -17,7 +17,8 @@
</template>
</ms-test-plan-header-bar>
<test-review-function v-if="activeIndex === 'functional'" :redirectCharType="redirectCharType"
:clickType="clickType" :review-id="reviewId" ref="testReviewFunction"/>
:clickType="clickType" :review-id="reviewId" :version-enable="versionEnable"
ref="testReviewFunction"/>
</div>
</template>
@ -35,6 +36,7 @@ import MsTestPlanHeaderBar from "@/business/components/track/plan/view/comonents
import TestReviewFunction from "@/business/components/track/review/view/components/TestReviewFunction";
import TestReviewApi from "@/business/components/track/review/view/components/TestReviewApi";
import TestReviewLoad from "@/business/components/track/review/view/components/TestReviewLoad";
import {getCurrentProjectID, hasLicense} from "@/common/js/utils";
export default {
name: "TestCaseReviewView",
@ -65,6 +67,8 @@ export default {
redirectCharType: '',
//-
clickType: '',
projectId: null,
versionEnable: false,
}
},
computed: {
@ -85,6 +89,7 @@ export default {
mounted() {
this.initData();
this.openTestCaseEdit(this.$route.path);
this.checkVersionEnable();
},
beforeRouteLeave(to, from, next) {
if (!this.$refs.testReviewFunction) {
@ -122,6 +127,7 @@ export default {
}
},
initData() {
this.projectId = getCurrentProjectID();
this.getTestReviews();
this.getNodeTreeByReviewId();
},
@ -170,7 +176,17 @@ export default {
this.$nextTick(() => {
this.isMenuShow = true;
});
}
},
checkVersionEnable() {
if (!this.projectId) {
return;
}
if (hasLicense()) {
this.$get('/project/version/enable/' + this.projectId, response => {
this.versionEnable = response.data;
});
}
},
}
}
</script>

View File

@ -30,6 +30,7 @@
:review-id="reviewId"
:clickType="clickType"
:current-version="currentVersion"
:version-enable="versionEnable"
ref="testPlanTestCaseList"/>
<test-review-minder
:tree-nodes="treeNodes"
@ -98,6 +99,7 @@ export default {
'reviewId',
'redirectCharType',
'clickType',
'versionEnable',
],
mounted() {
this.getNodeTreeByReviewId()

View File

@ -16,12 +16,14 @@
:clickType="clickType"
:select-project-id="selectProjectId"
:select-parent-nodes="selectParentNodes"
:version-enable="versionEnable"
@relevanceCase="openTestCaseRelevanceDialog"
ref="testPlanLoadCaseList"/>
</template>
<test-case-load-relevance
@refresh="refresh"
:review-id="reviewId"
:version-enable="versionEnable"
ref="testCaseLoadRelevance"/>
</ms-test-plan-common-component>
@ -32,6 +34,8 @@ import MsTestPlanCommonComponent from "@/business/components/track/plan/view/com
import NodeTree from "@/business/components/track/common/NodeTree";
import TestPlanLoadCaseList from "@/business/components/track/plan/view/comonents/load/TestPlanLoadCaseList";
import TestCaseLoadRelevance from "@/business/components/track/plan/view/comonents/load/TestCaseLoadRelevance";
import {hasLicense} from "@/common/js/utils";
export default {
name: "TestReviewLoad",
components: {
@ -46,7 +50,9 @@ export default {
selectNodeIds: [],
selectParentNodes: [],
selectProjectId: "",
projectId: null,
treeNodes: [],
versionEnable: false,
}
},
props: [
@ -61,6 +67,7 @@ export default {
},
mounted() {
this.initData();
this.checkVersionEnable();
},
methods: {
refresh() {
@ -90,6 +97,16 @@ export default {
});
}
},
checkVersionEnable() {
if (!this.projectId) {
return;
}
if (hasLicense()) {
this.$get('/project/version/enable/' + this.projectId, response => {
this.versionEnable = response.data;
});
}
},
}
}
</script>

View File

@ -16,7 +16,6 @@
@refresh="initTableData"/>
<status-edit ref="statusEdit" :plan-id="reviewId"
:select-ids="new Set(Array.from(this.selectRows).map(row => row.id))" @refresh="initTableData"/>
<ms-table
v-loading="result.loading"
:field-key="tableHeaderKey"
@ -55,6 +54,7 @@
min-width="120px"/>
<ms-table-column
v-if="versionEnable"
prop="versionId"
:field="item"
:filters="versionFilters"
@ -293,6 +293,10 @@ export default {
},
currentVersion: {
type: String
},
versionEnable: {
type: Boolean,
default: false
}
},
watch: {

View File

@ -147,6 +147,7 @@ export let CUSTOM_TABLE_HEADER = {
TEST_PLAN_API_CASE: [
{id: 'num', key: '1', label: 'commons.id'},
{id: 'name', key: '2', label: 'api_test.definition.api_name'},
{id: 'versionId', key: 'd', label: 'commons.version'},
{id: 'priority', key: '3', label: 'test_track.case.priority'},
{id: 'path', key: '4', label: 'api_test.definition.api_path'},
{id: 'createUser', key: '5', label: 'api_test.creator'},
@ -161,7 +162,7 @@ export let CUSTOM_TABLE_HEADER = {
TEST_PLAN_LOAD_CASE: [
{id: 'num', key: '1', label: 'commons.id'},
{id: 'caseName', key: '2', label: 'commons.name'},
{id: 'versionId', key: '9', label: 'project.version.name', xpack: true},
{id: 'versionId', key: '9', label: 'commons.version'},
{id: 'projectName', key: '3', label: 'load_test.project_name'},
{id: 'userName', key: '4', label: 'load_test.user_name'},
{id: 'createTime', key: '5', label: 'commons.create_time'},