fix (接口自动化): 场景增加关闭校验,修复选择所有场景生成关系错误

This commit is contained in:
fit2-zhao 2021-10-25 15:01:26 +08:00 committed by fit2-zhao
parent 69b18e97c9
commit 5335609959
4 changed files with 92 additions and 9 deletions

View File

@ -38,4 +38,16 @@ public class QueryTestCaseRequest extends BaseQueryRequest {
private long createTime = 0; private long createTime = 0;
private long relevanceCreateTime = 0; private long relevanceCreateTime = 0;
private List<String> testCaseContainIds; private List<String> testCaseContainIds;
// 补充场景条件
private String excludeId;
private String moduleId;
private boolean recent = false;
private String executeStatus;
private boolean notInTestPlan;
//操作人
private String operator;
//操作时间
private Long operationTime;
} }

View File

@ -19,7 +19,7 @@
</ms-aside-container> </ms-aside-container>
<ms-main-container style="overflow: hidden"> <ms-main-container style="overflow: hidden">
<el-tabs v-model="activeName" @tab-click="addTab" @tab-remove="removeTab"> <el-tabs v-model="activeName" @tab-click="addTab" @tab-remove="closeConfirm">
<el-tab-pane <el-tab-pane
name="trash" name="trash"
:label="$t('commons.trash')" v-if="trashEnable"> :label="$t('commons.trash')" v-if="trashEnable">
@ -297,9 +297,30 @@ export default {
} }
}, },
handleTabClose() { handleTabClose() {
let message = "";
this.tabs.forEach(t => {
if (t && this.$store.state.scenarioMap.has(t.currentScenario.id) && this.$store.state.scenarioMap.get(t.currentScenario.id) > 1) {
message += t.currentScenario.name + "";
}
})
if (message !== "") {
this.$alert("场景[ " + message.substr(0, message.length - 1) + " ]未保存,是否确认关闭全部?", '', {
confirmButtonText: this.$t('commons.confirm'),
cancelButtonText: this.$t('commons.cancel'),
callback: (action) => {
if (action === 'confirm') {
this.$store.state.scenarioMap.clear();
this.tabs = []; this.tabs = [];
this.activeName = "default"; this.activeName = "default";
this.refresh(); this.refresh();
}
}
});
} else {
this.tabs = [];
this.activeName = "default";
this.refresh();
}
}, },
handleCommand(e) { handleCommand(e) {
switch (e) { switch (e) {
@ -323,6 +344,24 @@ export default {
this.activeName = "default"; this.activeName = "default";
} }
}, },
closeConfirm(targetName) {
let t = this.tabs.filter(tab => tab.name === targetName);
if (t && this.$store.state.scenarioMap.has(t[0].currentScenario.id) && this.$store.state.scenarioMap.get(t[0].currentScenario.id) > 1) {
this.$alert("场景[ " + t[0].currentScenario.name + " ]未保存,是否确认关闭?", '', {
confirmButtonText: this.$t('commons.confirm'),
cancelButtonText: this.$t('commons.cancel'),
callback: (action) => {
if (action === 'confirm') {
this.$store.state.scenarioMap.delete(t[0].currentScenario.id);
this.removeTab(targetName);
}
}
});
} else {
this.$store.state.scenarioMap.delete(t[0].currentScenario.id);
this.removeTab(targetName);
}
},
removeTab(targetName) { removeTab(targetName) {
this.tabs = this.tabs.filter(tab => tab.name !== targetName); this.tabs = this.tabs.filter(tab => tab.name !== targetName);
if (this.tabs.length > 0) { if (this.tabs.length > 0) {

View File

@ -462,6 +462,28 @@ export default {
runScenario: undefined, runScenario: undefined,
} }
}, },
watch: {
currentScenario: {
handler(val) {
if (val && this.$store.state.scenarioMap) {
let change = this.$store.state.scenarioMap.get(this.currentScenario.id);
change = change + 1;
this.$store.state.scenarioMap.set(this.currentScenario.id, change);
}
},
deep: true
},
scenarioDefinition: {
handler(newObj, oldObj) {
if (this.$store.state.scenarioMap) {
let change = this.$store.state.scenarioMap.get(this.currentScenario.id);
change = change + 1;
this.$store.state.scenarioMap.set(this.currentScenario.id, change);
}
},
deep: true
},
},
created() { created() {
if (!this.currentScenario.apiScenarioModuleId) { if (!this.currentScenario.apiScenarioModuleId) {
this.currentScenario.apiScenarioModuleId = ""; this.currentScenario.apiScenarioModuleId = "";
@ -486,6 +508,10 @@ export default {
if (!this.currentScenario.name) { if (!this.currentScenario.name) {
this.$refs.refFab.openMenu(); this.$refs.refFab.openMenu();
} }
if (!(this.$store.state.scenarioMap instanceof Map)) {
this.$store.state.scenarioMap = new Map();
}
this.$store.state.scenarioMap.set(this.currentScenario.id, 0);
}, },
directives: {OutsideClick}, directives: {OutsideClick},
computed: { computed: {
@ -494,7 +520,7 @@ export default {
}, },
}, },
methods: { methods: {
setDomain() { setDomain(flag) {
if (this.projectEnvMap && this.projectEnvMap.size > 0) { if (this.projectEnvMap && this.projectEnvMap.size > 0) {
let scenario = { let scenario = {
id: this.currentScenario.id, id: this.currentScenario.id,
@ -514,6 +540,9 @@ export default {
if (res.data) { if (res.data) {
let data = JSON.parse(res.data); let data = JSON.parse(res.data);
this.scenarioDefinition = data.hashTree; this.scenarioDefinition = data.hashTree;
if (!flag) {
this.$store.state.scenarioMap.set(this.currentScenario.id, 0);
}
} }
}) })
} }
@ -1276,6 +1305,7 @@ export default {
this.setParameter(); this.setParameter();
saveScenario(this.path, this.currentScenario, this.scenarioDefinition, this, (response) => { saveScenario(this.path, this.currentScenario, this.scenarioDefinition, this, (response) => {
this.$success(this.$t('commons.save_success')); this.$success(this.$t('commons.save_success'));
this.$store.state.scenarioMap.delete(this.currentScenario.id);
this.path = "/api/automation/update"; this.path = "/api/automation/update";
this.$store.state.pluginFiles = []; this.$store.state.pluginFiles = [];
if (response.data) { if (response.data) {
@ -1380,6 +1410,7 @@ export default {
if (this.scenarioDefinition) { if (this.scenarioDefinition) {
this.resetResourceId(this.scenarioDefinition); this.resetResourceId(this.scenarioDefinition);
} }
this.$store.state.scenarioMap.set(this.currentScenario.id, 0);
}) })
} }
}, },
@ -1475,7 +1506,7 @@ export default {
}, },
setProjectEnvMap(projectEnvMap) { setProjectEnvMap(projectEnvMap) {
this.projectEnvMap = projectEnvMap; this.projectEnvMap = projectEnvMap;
this.setDomain(); this.setDomain(true);
}, },
getWsProjects() { getWsProjects() {
this.$get("/project/listAll", res => { this.$get("/project/listAll", res => {

View File

@ -30,6 +30,7 @@ const state = {
// 当前项目是否勾选自定义ID // 当前项目是否勾选自定义ID
currentProjectIsCustomNum: false, currentProjectIsCustomNum: false,
testCaseTemplate: {}, testCaseTemplate: {},
scenarioMap: new Map(),
} }
const store = new Vuex.Store({ const store = new Vuex.Store({