Merge branch 'main' of https://github.com/metersphere/metersphere
This commit is contained in:
commit
4588a6914e
|
@ -125,7 +125,7 @@ public class ElementUtil {
|
||||||
boolean isRepository = false;
|
boolean isRepository = false;
|
||||||
BodyFile file = item.getFiles().get(0);
|
BodyFile file = item.getFiles().get(0);
|
||||||
boolean isRef = StringUtils.equalsIgnoreCase(file.getStorage(), StorageConstants.FILE_REF.name());
|
boolean isRef = StringUtils.equalsIgnoreCase(file.getStorage(), StorageConstants.FILE_REF.name());
|
||||||
String path = StringUtils.join(BODY_FILE_DIR, File.pathSeparator, item.getFiles().get(0).getId(), "_", item.getFiles().get(0).getName());
|
String path = StringUtils.join(BODY_FILE_DIR, File.separator, item.getFiles().get(0).getId(), "_", item.getFiles().get(0).getName());
|
||||||
if (StringUtils.equalsIgnoreCase(file.getStorage(), StorageConstants.FILE_REF.name())) {
|
if (StringUtils.equalsIgnoreCase(file.getStorage(), StorageConstants.FILE_REF.name())) {
|
||||||
fileId = file.getFileId();
|
fileId = file.getFileId();
|
||||||
FileMetadata fileMetadata = fileMetadataService.getFileMetadataById(fileId);
|
FileMetadata fileMetadata = fileMetadataService.getFileMetadataById(fileId);
|
||||||
|
|
|
@ -74,14 +74,11 @@ public class ApiScenarioEnvService {
|
||||||
List<Boolean> hasFullUrlList = new ArrayList<>();
|
List<Boolean> hasFullUrlList = new ArrayList<>();
|
||||||
for (MsTestElement testElement : hashTree) {
|
for (MsTestElement testElement : hashTree) {
|
||||||
this.formatElement(testElement, env, hasFullUrlList);
|
this.formatElement(testElement, env, hasFullUrlList);
|
||||||
if (CollectionUtils.isNotEmpty(testElement.getHashTree()) && !hasFullUrlList.contains(false)) {
|
if (CollectionUtils.isNotEmpty(testElement.getHashTree())) {
|
||||||
getHashTree(testElement.getHashTree(), env, hasFullUrlList);
|
getHashTree(testElement.getHashTree(), env, hasFullUrlList);
|
||||||
}
|
}
|
||||||
if (hasFullUrlList.contains(false)) {
|
|
||||||
env.setFullUrl(false);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
env.setFullUrl(!hasFullUrlList.contains(false));
|
||||||
return env;
|
return env;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -92,12 +89,9 @@ public class ApiScenarioEnvService {
|
||||||
tree = tree.stream().filter(item -> item.isEnable()).collect(Collectors.toList());
|
tree = tree.stream().filter(item -> item.isEnable()).collect(Collectors.toList());
|
||||||
for (MsTestElement element : tree) {
|
for (MsTestElement element : tree) {
|
||||||
this.formatElement(element, env, hasFullUrlList);
|
this.formatElement(element, env, hasFullUrlList);
|
||||||
if (CollectionUtils.isNotEmpty(element.getHashTree()) && !hasFullUrlList.contains(false)) {
|
if (CollectionUtils.isNotEmpty(element.getHashTree())) {
|
||||||
getHashTree(element.getHashTree(), env, hasFullUrlList);
|
getHashTree(element.getHashTree(), env, hasFullUrlList);
|
||||||
}
|
}
|
||||||
if (hasFullUrlList.contains(false)) {
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
LogUtil.error(e);
|
LogUtil.error(e);
|
||||||
|
|
|
@ -439,11 +439,16 @@ public class TestPlanApiCaseService {
|
||||||
try {
|
try {
|
||||||
responseObj = JSON.parseMap(execResult.getContent());
|
responseObj = JSON.parseMap(execResult.getContent());
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
|
LogUtil.error("转换content失败!", e);
|
||||||
}
|
}
|
||||||
if (StringUtils.isNotEmpty(execResult.getEnvConfig())) {
|
if (StringUtils.isNotEmpty(execResult.getEnvConfig())) {
|
||||||
responseObj.put("envName", apiDefinitionService.getEnvNameByEnvConfig(execResult.getProjectId(), execResult.getEnvConfig()));
|
responseObj.put("envName", apiDefinitionService.getEnvNameByEnvConfig(execResult.getProjectId(), execResult.getEnvConfig()));
|
||||||
}
|
}
|
||||||
item.setResponse(responseObj.toString());
|
/*
|
||||||
|
* 之前这里的写法是responseObj.toString()。
|
||||||
|
* 猜测是fastjson转换之后,只是单纯的把JSONObject改成了map。所以这里放进去的不是json格式的数据
|
||||||
|
*/
|
||||||
|
item.setResponse(JSON.toJSONString(responseObj));
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
|
@ -147,7 +147,7 @@ export default {
|
||||||
};
|
};
|
||||||
},
|
},
|
||||||
created() {
|
created() {
|
||||||
this.getEnvironments();
|
this.getEnvironments(null, 'created');
|
||||||
},
|
},
|
||||||
computed: {
|
computed: {
|
||||||
projectId() {
|
projectId() {
|
||||||
|
@ -235,7 +235,7 @@ export default {
|
||||||
this.initDataSource(undefined, undefined, targetDataSourceName);
|
this.initDataSource(undefined, undefined, targetDataSourceName);
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
getEnvironments(environmentId) {
|
getEnvironments(environmentId, isCreated) {
|
||||||
let envId = '';
|
let envId = '';
|
||||||
let id = this.request.projectId ? this.request.projectId : this.projectId;
|
let id = this.request.projectId ? this.request.projectId : this.projectId;
|
||||||
let scenarioEnvId = this.scenarioId !== '' ? this.scenarioId + '_' + id : id;
|
let scenarioEnvId = this.scenarioId !== '' ? this.scenarioId + '_' + id : id;
|
||||||
|
@ -262,7 +262,11 @@ export default {
|
||||||
envId = this.request.refEevMap.get(id);
|
envId = this.request.refEevMap.get(id);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (envId === this.request.originalEnvironmentId && this.request.originalDataSourceId) {
|
if (
|
||||||
|
envId === this.request.originalEnvironmentId &&
|
||||||
|
this.request.originalDataSourceId &&
|
||||||
|
isCreated !== 'created'
|
||||||
|
) {
|
||||||
this.request.dataSourceId = this.request.originalDataSourceId;
|
this.request.dataSourceId = this.request.originalDataSourceId;
|
||||||
}
|
}
|
||||||
let targetDataSourceName = '';
|
let targetDataSourceName = '';
|
||||||
|
|
|
@ -24,8 +24,8 @@ const message = {
|
||||||
title: '显示设置',
|
title: '显示设置',
|
||||||
logo: '系统 LOGO',
|
logo: '系统 LOGO',
|
||||||
loginLogo: '登录页左上角 LOGO',
|
loginLogo: '登录页左上角 LOGO',
|
||||||
loginImage: '登陆页面右侧图片',
|
loginImage: '登录页面右侧图片',
|
||||||
loginTitle: '登陆页面提示信息',
|
loginTitle: '登录页面提示信息',
|
||||||
pageTitle: '页面 Title',
|
pageTitle: '页面 Title',
|
||||||
sysTitle: '系统名称',
|
sysTitle: '系统名称',
|
||||||
theme_style: '主题风格设置',
|
theme_style: '主题风格设置',
|
||||||
|
|
|
@ -24,8 +24,8 @@ const message = {
|
||||||
title: '顯示設置',
|
title: '顯示設置',
|
||||||
logo: '系統 LOGO',
|
logo: '系統 LOGO',
|
||||||
loginLogo: '登錄頁左上角 LOGO',
|
loginLogo: '登錄頁左上角 LOGO',
|
||||||
loginImage: '登陸頁面右側圖片',
|
loginImage: '登錄頁面右側圖片',
|
||||||
loginTitle: '登陸頁面提示信息',
|
loginTitle: '登錄頁面提示信息',
|
||||||
pageTitle: '頁面 Title',
|
pageTitle: '頁面 Title',
|
||||||
sysTitle: '系統名稱',
|
sysTitle: '系統名稱',
|
||||||
theme_style: '主題風格設置',
|
theme_style: '主題風格設置',
|
||||||
|
|
|
@ -16,6 +16,7 @@ import {getPageDate, getPageInfo} from "metersphere-frontend/src/utils/tableUtil
|
||||||
import {TEST_PLAN_RELEVANCE_FUNC_CONFIGS} from "metersphere-frontend/src/components/search/search-components";
|
import {TEST_PLAN_RELEVANCE_FUNC_CONFIGS} from "metersphere-frontend/src/components/search/search-components";
|
||||||
import FunctionalRelevance from "@/business/plan/view/comonents/functional/FunctionalRelevance";
|
import FunctionalRelevance from "@/business/plan/view/comonents/functional/FunctionalRelevance";
|
||||||
import {addTestCaseRelationship, getTestCaseNodesByCaseFilter, testCaseRelationshipRelateList} from "@/api/testCase";
|
import {addTestCaseRelationship, getTestCaseNodesByCaseFilter, testCaseRelationshipRelateList} from "@/api/testCase";
|
||||||
|
import {parseTag} from "@/business/utils/sdk-utils";
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
name: "RelationshipFunctionalRelevance",
|
name: "RelationshipFunctionalRelevance",
|
||||||
|
@ -86,10 +87,7 @@ export default {
|
||||||
.then(response => {
|
.then(response => {
|
||||||
getPageDate(response, this.page);
|
getPageDate(response, this.page);
|
||||||
let data = this.page.data;
|
let data = this.page.data;
|
||||||
data.forEach(item => {
|
parseTag(data);
|
||||||
item.checked = false;
|
|
||||||
item.tags = JSON.parse(item.tags);
|
|
||||||
});
|
|
||||||
})
|
})
|
||||||
},
|
},
|
||||||
getTreeNodes(vueObj) {
|
getTreeNodes(vueObj) {
|
||||||
|
|
|
@ -114,7 +114,7 @@ import {
|
||||||
} from "metersphere-frontend/src/components/search/search-components";
|
} from "metersphere-frontend/src/components/search/search-components";
|
||||||
import MsSearch from "metersphere-frontend/src/components/search/MsSearch";
|
import MsSearch from "metersphere-frontend/src/components/search/MsSearch";
|
||||||
import ApiListContainer from "@/business/plan/view/comonents/api/ApiListContainer";
|
import ApiListContainer from "@/business/plan/view/comonents/api/ApiListContainer";
|
||||||
import {buildBatchParam, hasLicense, isProjectVersionEnable} from "@/business/utils/sdk-utils";
|
import {buildBatchParam, hasLicense, isProjectVersionEnable, parseTag} from "@/business/utils/sdk-utils";
|
||||||
import PriorityTableItem from "@/business/common/tableItems/planview/PriorityTableItem";
|
import PriorityTableItem from "@/business/common/tableItems/planview/PriorityTableItem";
|
||||||
import {apiDefinitionGet} from "@/api/remote/api/api-definition";
|
import {apiDefinitionGet} from "@/api/remote/api/api-definition";
|
||||||
import {testPlanApiCaseRelevanceList} from "@/api/remote/plan/test-plan-api-case";
|
import {testPlanApiCaseRelevanceList} from "@/api/remote/plan/test-plan-api-case";
|
||||||
|
@ -246,11 +246,7 @@ export default {
|
||||||
this.loading = false;
|
this.loading = false;
|
||||||
this.total = response.data.itemCount;
|
this.total = response.data.itemCount;
|
||||||
this.tableData = response.data.listObject;
|
this.tableData = response.data.listObject;
|
||||||
this.tableData.forEach(item => {
|
parseTag(this.tableData);
|
||||||
if (item.tags && item.tags.length > 0) {
|
|
||||||
item.tags = JSON.parse(item.tags);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
clear() {
|
clear() {
|
||||||
|
|
|
@ -593,9 +593,7 @@ export default {
|
||||||
// 这里先打开报告,建立 websock
|
// 这里先打开报告,建立 websock
|
||||||
// 否则可能执行完了才建立 websock,拿不到结果
|
// 否则可能执行完了才建立 websock,拿不到结果
|
||||||
this.$refs.apiCaseResult.open(reportId);
|
this.$refs.apiCaseResult.open(reportId);
|
||||||
setTimeout(() => {
|
run(row.id, reportId);
|
||||||
run(row.id, reportId);
|
|
||||||
}, 3000);
|
|
||||||
},
|
},
|
||||||
handleTestEnd(reportId) {
|
handleTestEnd(reportId) {
|
||||||
if (this.runningReport.has(reportId)) {
|
if (this.runningReport.has(reportId)) {
|
||||||
|
|
|
@ -18,6 +18,7 @@ import FunctionalRelevance from "@/business/plan/view/comonents/functional/Funct
|
||||||
import {testPlanRelevance} from "@/api/remote/plan/test-plan";
|
import {testPlanRelevance} from "@/api/remote/plan/test-plan";
|
||||||
import {testCaseRelateList} from "@/api/testCase";
|
import {testCaseRelateList} from "@/api/testCase";
|
||||||
import {testCaseNodeListPlanRelate} from "@/api/test-case-node";
|
import {testCaseNodeListPlanRelate} from "@/api/test-case-node";
|
||||||
|
import {parseTag} from "@/business/utils/sdk-utils";
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
name: "TestPlanFunctionalRelevance",
|
name: "TestPlanFunctionalRelevance",
|
||||||
|
@ -88,9 +89,9 @@ export default {
|
||||||
this.page.loading = false;
|
this.page.loading = false;
|
||||||
getPageDate(response, this.page);
|
getPageDate(response, this.page);
|
||||||
let data = this.page.data;
|
let data = this.page.data;
|
||||||
|
parseTag(this.page.data);
|
||||||
data.forEach(item => {
|
data.forEach(item => {
|
||||||
item.checked = false;
|
item.checked = false;
|
||||||
item.tags = JSON.parse(item.tags);
|
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
export {operationConfirm, removeGoBackListener, handleCtrlSEvent, byteToSize, resizeTextarea,
|
export {operationConfirm, removeGoBackListener, handleCtrlSEvent, byteToSize, resizeTextarea,
|
||||||
getTypeByFileName, strMapToObj, getUUID, windowPrint} from "metersphere-frontend/src/utils";
|
getTypeByFileName, strMapToObj, getUUID, windowPrint, parseTag} from "metersphere-frontend/src/utils";
|
||||||
export {parseCustomFilesForList, getCustomFieldFilter, buildBatchParam} from "metersphere-frontend/src/utils/tableUtils";
|
export {parseCustomFilesForList, getCustomFieldFilter, buildBatchParam} from "metersphere-frontend/src/utils/tableUtils";
|
||||||
export {sortCustomFields, parseCustomField, buildCustomFields} from "metersphere-frontend/src/utils/custom_field";
|
export {sortCustomFields, parseCustomField, buildCustomFields} from "metersphere-frontend/src/utils/custom_field";
|
||||||
export {getCurrentProjectID, getCurrentWorkspaceId, getCurrentUser, setCurrentProjectID} from "metersphere-frontend/src/utils/token";
|
export {getCurrentProjectID, getCurrentWorkspaceId, getCurrentUser, setCurrentProjectID} from "metersphere-frontend/src/utils/token";
|
||||||
|
|
|
@ -250,6 +250,9 @@ export default {
|
||||||
},
|
},
|
||||||
workspaceId() {
|
workspaceId() {
|
||||||
return getCurrentWorkspaceId();
|
return getCurrentWorkspaceId();
|
||||||
|
},
|
||||||
|
isToDo() {
|
||||||
|
return !this.isFocus && !this.isCreation;
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
created() {
|
created() {
|
||||||
|
@ -262,8 +265,8 @@ export default {
|
||||||
getIssuePartTemplateWithProject((template) => {
|
getIssuePartTemplateWithProject((template) => {
|
||||||
this.initFields(template);
|
this.initFields(template);
|
||||||
this.page.result.loading = false;
|
this.page.result.loading = false;
|
||||||
|
this.getIssues();
|
||||||
});
|
});
|
||||||
this.getIssues();
|
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
|
@ -300,6 +303,9 @@ export default {
|
||||||
item.filters = this.columns[item.id].filters;
|
item.filters = this.columns[item.id].filters;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
if (this.isToDo && item.id === '状态') {
|
||||||
|
item.filters = item.filters.filter(i => i.value !== 'closed')
|
||||||
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
this.fields = fields;
|
this.fields = fields;
|
||||||
|
@ -350,17 +356,7 @@ export default {
|
||||||
|
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
if (this.page.condition.filters) {
|
this.addDefaultStatusFilter();
|
||||||
this.page.condition.filters.status = ["new"];
|
|
||||||
} else {
|
|
||||||
this.page.condition.filters = {status: ["new"]};
|
|
||||||
}
|
|
||||||
this.page.condition.combine = {
|
|
||||||
creator: {
|
|
||||||
operator: "current user",
|
|
||||||
value: "current user",
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
this.page.condition.workspaceId = getCurrentWorkspaceId();
|
this.page.condition.workspaceId = getCurrentWorkspaceId();
|
||||||
this.page.condition.orders = getLastTableSortField(this.tableHeaderKey);
|
this.page.condition.orders = getLastTableSortField(this.tableHeaderKey);
|
||||||
|
@ -382,6 +378,34 @@ export default {
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
addDefaultStatusFilter() {
|
||||||
|
this.page.condition.combine = {
|
||||||
|
creator: {
|
||||||
|
operator: "current user",
|
||||||
|
value: "current user",
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (this.isToDo) {
|
||||||
|
let statusFieldId = null;
|
||||||
|
this.issueTemplate.customFields.forEach(field => {
|
||||||
|
if (field.name === '状态') {
|
||||||
|
statusFieldId = field.id;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
if (statusFieldId) {
|
||||||
|
this.page.condition.combine.customs = [
|
||||||
|
{
|
||||||
|
id: statusFieldId,
|
||||||
|
operator: 'not in',
|
||||||
|
value:[
|
||||||
|
'closed'
|
||||||
|
],
|
||||||
|
type: 'select'
|
||||||
|
}
|
||||||
|
];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
initCustomFieldValue() {
|
initCustomFieldValue() {
|
||||||
if (this.fields.length <= 0) {
|
if (this.fields.length <= 0) {
|
||||||
return;
|
return;
|
||||||
|
|
Loading…
Reference in New Issue