fix(测试跟踪): 功能用例新旧版本对比不可用
--bug=1018788 --user=陈建星 【测试跟踪】功能用例-新旧版本对比功能不可用 https://www.tapd.cn/55049933/s/1276070
This commit is contained in:
parent
85a51391f2
commit
87b77d37b1
|
@ -24,6 +24,7 @@
|
||||||
<script>
|
<script>
|
||||||
import {SYSTEM_FIELD_NAME_MAP} from "../../utils/table-constants";
|
import {SYSTEM_FIELD_NAME_MAP} from "../../utils/table-constants";
|
||||||
import CustomFiledComponent from "../template/CustomFiledComponent";
|
import CustomFiledComponent from "../template/CustomFiledComponent";
|
||||||
|
import {sortCustomFields} from "../../utils/custom_field";
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
name: "CustomFiledFormRow",
|
name: "CustomFiledFormRow",
|
||||||
|
@ -66,24 +67,7 @@ export default {
|
||||||
return SYSTEM_FIELD_NAME_MAP;
|
return SYSTEM_FIELD_NAME_MAP;
|
||||||
},
|
},
|
||||||
sortCustomFields() {
|
sortCustomFields() {
|
||||||
let total = 0;//定义total用于控制循环结束
|
return sortCustomFields(this.issueTemplate.customFields);
|
||||||
let customFields = this.issueTemplate.customFields;
|
|
||||||
for (let i = 0; total < customFields.length; total++) {
|
|
||||||
if (typeof (customFields[i].defaultValue) === 'string' || customFields[i].defaultValue instanceof String) {
|
|
||||||
try {
|
|
||||||
customFields[i].defaultValue = JSON.parse(customFields[i].defaultValue);
|
|
||||||
} catch (e) {
|
|
||||||
// nothing
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (customFields[i].type === 'richText') {
|
|
||||||
//循环到是0的位置就删除该元素0并且在arr末尾push进这个元素0,由于splice删除了该位置元素,所以i不用+1,下次循环仍然检查i位置的元素
|
|
||||||
customFields.push(customFields.splice(i, 1)[0]);
|
|
||||||
} else {
|
|
||||||
i++;//循环到不是0的位置就继续往后循环
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return customFields;
|
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -161,3 +161,23 @@ export function buildTestCaseOldFields(testCase) {
|
||||||
oldFields.set('用例等级', testCase.priority);
|
oldFields.set('用例等级', testCase.priority);
|
||||||
return oldFields;
|
return oldFields;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export function sortCustomFields(customFields) {
|
||||||
|
let total = 0;//定义total用于控制循环结束
|
||||||
|
for (let i = 0; total < customFields.length; total++) {
|
||||||
|
if (typeof (customFields[i].defaultValue) === 'string' || customFields[i].defaultValue instanceof String) {
|
||||||
|
try {
|
||||||
|
customFields[i].defaultValue = JSON.parse(customFields[i].defaultValue);
|
||||||
|
} catch (e) {
|
||||||
|
// nothing
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (customFields[i].type === 'richText') {
|
||||||
|
//循环到是0的位置就删除该元素0并且在arr末尾push进这个元素0,由于splice删除了该位置元素,所以i不用+1,下次循环仍然检查i位置的元素
|
||||||
|
customFields.push(customFields.splice(i, 1)[0]);
|
||||||
|
} else {
|
||||||
|
i++;//循环到不是0的位置就继续往后循环
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return customFields;
|
||||||
|
}
|
||||||
|
|
|
@ -1017,10 +1017,10 @@ export default {
|
||||||
let p1 = getTestCase(response.data.id);
|
let p1 = getTestCase(response.data.id);
|
||||||
let p2 = getTestCase(this.currentTestCaseInfo.id);
|
let p2 = getTestCase(this.currentTestCaseInfo.id);
|
||||||
let that = this;
|
let that = this;
|
||||||
Promise.all([p1, p2]).then(data => {
|
Promise.all([p1, p2]).then(r => {
|
||||||
if (data[0] && data[1]) {
|
if (r[0] && r[1]) {
|
||||||
that.newData = data[0].data.data;
|
that.newData = r[0].data;
|
||||||
that.oldData = data[1].data.data;
|
that.oldData = r[1].data;
|
||||||
that.newData.createTime = row.createTime;
|
that.newData.createTime = row.createTime;
|
||||||
that.oldData.createTime = this.$refs.versionHistory.versionOptions.filter(v => v.id === that.oldData.versionId)[0].createTime;
|
that.oldData.createTime = this.$refs.versionHistory.versionOptions.filter(v => v.id === that.oldData.versionId)[0].createTime;
|
||||||
that.newData.versionName = that.versionData.filter(v => v.id === that.newData.id)[0].versionName;
|
that.newData.versionName = that.versionData.filter(v => v.id === that.newData.id)[0].versionName;
|
||||||
|
|
|
@ -60,8 +60,10 @@
|
||||||
<el-form v-if="oldData.isFormAlive" :model="oldData.customFieldForm" :rules="oldData.customFieldRules"
|
<el-form v-if="oldData.isFormAlive" :model="oldData.customFieldForm" :rules="oldData.customFieldRules"
|
||||||
ref="oldCustomFieldForm"
|
ref="oldCustomFieldForm"
|
||||||
class="case-form">
|
class="case-form">
|
||||||
<custom-filed-form-item :form="oldData.customFieldForm" :form-label-width="oldData.formLabelWidth"
|
<custom-filed-form-row :form="oldData.customFieldForm"
|
||||||
:issue-template="oldData.testCaseTemplate" :is-public="isPublic"/>
|
:disabled="readOnly"
|
||||||
|
:default-open="defaultOpen"
|
||||||
|
:issue-template="oldData.testCaseTemplate"/>
|
||||||
</el-form>
|
</el-form>
|
||||||
|
|
||||||
<el-row v-if="oldData.isCustomNum">
|
<el-row v-if="oldData.isCustomNum">
|
||||||
|
@ -237,7 +239,7 @@ import MsFormDivider from "metersphere-frontend/src/components/MsFormDivider";
|
||||||
import MsInputTag from "metersphere-frontend/src/components/MsInputTag";
|
import MsInputTag from "metersphere-frontend/src/components/MsInputTag";
|
||||||
import {getCurrentProjectID, getCurrentUser} from "metersphere-frontend/src/utils/token";
|
import {getCurrentProjectID, getCurrentUser} from "metersphere-frontend/src/utils/token";
|
||||||
import {removeGoBackListener} from "metersphere-frontend/src/utils";
|
import {removeGoBackListener} from "metersphere-frontend/src/utils";
|
||||||
import {buildTestCaseOldFields, parseCustomField} from "metersphere-frontend/src/utils/custom_field";
|
import {buildTestCaseOldFields, parseCustomField, sortCustomFields} from "metersphere-frontend/src/utils/custom_field";
|
||||||
import TestCaseEditOtherInfo from "@/business/case/components/TestCaseEditOtherInfo";
|
import TestCaseEditOtherInfo from "@/business/case/components/TestCaseEditOtherInfo";
|
||||||
import TestCaseStepItem from "@/business/case/components/TestCaseStepItem";
|
import TestCaseStepItem from "@/business/case/components/TestCaseStepItem";
|
||||||
import StepChangeItem from "@/business/case/components/StepChangeItem";
|
import StepChangeItem from "@/business/case/components/StepChangeItem";
|
||||||
|
@ -250,7 +252,6 @@ import {useStore} from "@/store";
|
||||||
import {getProjectListAll, getProjectMemberOption} from "@/business/utils/sdk-utils";
|
import {getProjectListAll, getProjectMemberOption} from "@/business/utils/sdk-utils";
|
||||||
import {getTestTemplate} from "@/api/custom-field-template";
|
import {getTestTemplate} from "@/api/custom-field-template";
|
||||||
import {testCaseCommentList} from "@/api/test-case-comment";
|
import {testCaseCommentList} from "@/api/test-case-comment";
|
||||||
|
|
||||||
const {diff} = require("@/business/v_node_diff");
|
const {diff} = require("@/business/v_node_diff");
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
|
@ -407,8 +408,8 @@ export default {
|
||||||
this[prop].$get = this.$get;
|
this[prop].$get = this.$get;
|
||||||
let that = this;
|
let that = this;
|
||||||
getTestTemplate()
|
getTestTemplate()
|
||||||
.then((r) => {
|
.then((testCaseTemplate) => {
|
||||||
this[prop].testCaseTemplate = r.data;
|
this[prop].testCaseTemplate = testCaseTemplate;
|
||||||
initFuc(prop, () => {
|
initFuc(prop, () => {
|
||||||
that.reloadForm(prop);
|
that.reloadForm(prop);
|
||||||
});
|
});
|
||||||
|
@ -443,6 +444,7 @@ export default {
|
||||||
this[prop].module = this[prop].nodeId;
|
this[prop].module = this[prop].nodeId;
|
||||||
//设置自定义熟悉默认值
|
//设置自定义熟悉默认值
|
||||||
this[prop].customFieldForm = parseCustomField(this[prop], this[prop].testCaseTemplate, null, this[prop] ? buildTestCaseOldFields(this[prop]) : null);
|
this[prop].customFieldForm = parseCustomField(this[prop], this[prop].testCaseTemplate, null, this[prop] ? buildTestCaseOldFields(this[prop]) : null);
|
||||||
|
sortCustomFields(this[prop].testCaseTemplate.customFields);
|
||||||
},
|
},
|
||||||
setTestCaseExtInfo(prop) {
|
setTestCaseExtInfo(prop) {
|
||||||
this[prop] = {};
|
this[prop] = {};
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
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} 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 {getCurrentProjectID, getCurrentWorkspaceId, getCurrentUser} from "metersphere-frontend/src/utils/token";
|
export {getCurrentProjectID, getCurrentWorkspaceId, getCurrentUser} from "metersphere-frontend/src/utils/token";
|
||||||
export {hasLicense, hasPermissions, hasPermission} from "metersphere-frontend/src/utils/permission";
|
export {hasLicense, hasPermissions, hasPermission} from "metersphere-frontend/src/utils/permission";
|
||||||
export {get, post, downloadFile, fileDownloadGet, fileDownloadPost, fileUpload, generateShareUrl, generateModuleUrl} from "metersphere-frontend/src/plugins/request";
|
export {get, post, downloadFile, fileDownloadGet, fileDownloadPost, fileUpload, generateShareUrl, generateModuleUrl} from "metersphere-frontend/src/plugins/request";
|
||||||
|
|
Loading…
Reference in New Issue