From 47120c97cbd7d0e5f36f986e763c7f9c37272a6a Mon Sep 17 00:00:00 2001 From: shiziyuan9527 Date: Mon, 29 Mar 2021 22:41:29 +0800 Subject: [PATCH] =?UTF-8?q?refactor(=E5=9C=BA=E6=99=AF=E8=87=AA=E5=8A=A8?= =?UTF-8?q?=E5=8C=96):=20=E5=9B=9E=E9=80=80=E8=BF=90=E8=A1=8C=E7=8E=AF?= =?UTF-8?q?=E5=A2=83=E9=85=8D=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../automation/scenario/EditApiScenario.vue | 94 +++++-------------- .../scenario/maximize/MaximizeScenario.vue | 82 ++++------------ .../scenario/maximize/ScenarioHeader.vue | 2 - 3 files changed, 41 insertions(+), 137 deletions(-) diff --git a/frontend/src/business/components/api/automation/scenario/EditApiScenario.vue b/frontend/src/business/components/api/automation/scenario/EditApiScenario.vue index 67f1a0fc01..8978fd056a 100644 --- a/frontend/src/business/components/api/automation/scenario/EditApiScenario.vue +++ b/frontend/src/business/components/api/automation/scenario/EditApiScenario.vue @@ -114,9 +114,7 @@ + :project-list="projectList" ref="envPopover"/> {{$t('api_test.request.debug')}} @@ -202,10 +200,7 @@ + :currentScenario="currentScenario" :type="type" ref="maximizeScenario" @openScenario="openScenario"/> @@ -320,8 +315,6 @@ projectList: [], debugResult: new Map, drawer: false, - isHaveExec: false, - isExecWithOutEnv: true } }, created() { @@ -596,25 +589,9 @@ if (arr[i].type === ELEMENT_TYPE.LoopController && arr[i].loopType === "LOOP_COUNT" && arr[i].hashTree && arr[i].hashTree.length > 1) { arr[i].countController.proceed = true; } - - let type = arr[i].type; - const canExec = this.checkCanExec(type); - if (!this.isHaveExec) { - // 判断此步骤是否可执行 - this.isHaveExec = canExec; - } - if (canExec) { - const execWithOutEnv = this.canExecWithOutEnv(type, arr[i].url); - if (!execWithOutEnv) { - if (!arr[i].projectId) { - // 如果自身没有ID并且场景有ID则赋值场景ID,否则赋值当前项目ID - arr[i].projectId = scenarioProjectId ? scenarioProjectId : this.projectId; - } - this.projectIds.add(arr[i].projectId); - } - } - if (this.isExecWithOutEnv) { - this.isExecWithOutEnv = this.canExecWithOutEnv(type, arr[i].url) + if (!arr[i].projectId) { + // 如果自身没有ID并且场景有ID则赋值场景ID,否则赋值当前项目ID + arr[i].projectId = scenarioProjectId ? scenarioProjectId : this.projectId; } if (arr[i].hashTree != undefined && arr[i].hashTree.length > 0) { @@ -626,24 +603,7 @@ } } }, - canExecWithOutEnv(type, path) { - if (type === ELEMENT_TYPE.HTTPSamplerProxy) { - return this.isHTTPFullPath(path); - } - return type === ELEMENT_TYPE.JSR223Processor ? true : !this.checkCanExec(type); - }, - isHTTPFullPath(path) { - return path ? path.startsWith("http://") || path.startsWith("https://") : false; - }, - checkCanExec(type) { - const allCanExecType = ELEMENTS.get("AllCanExecType"); - const index = allCanExecType.indexOf(type); - return index !== -1; - }, sort() { - this.projectIds.clear(); - this.isHaveExec = false; - this.isExecWithOutEnv = true; for (let i in this.scenarioDefinition) { // 排序 this.scenarioDefinition[i].index = Number(i) + 1; @@ -657,22 +617,6 @@ this.scenarioDefinition[i].projectId = this.projectId; } - let type = this.scenarioDefinition[i].type; - const canExec = this.checkCanExec(type); - if (!this.isHaveExec) { - // 判断此步骤是否可执行 - this.isHaveExec = canExec; - } - if (canExec) { - const execWithOutEnv = this.canExecWithOutEnv(type, this.scenarioDefinition[i].url); - if (!execWithOutEnv) { - this.projectIds.add(this.scenarioDefinition[i].projectId); - } - } - if (this.isExecWithOutEnv) { - this.isExecWithOutEnv = this.canExecWithOutEnv(type, this.scenarioDefinition[i].url) - } - if (this.scenarioDefinition[i].hashTree != undefined && this.scenarioDefinition[i].hashTree.length > 0) { this.recursiveSorting(this.scenarioDefinition[i].hashTree, this.scenarioDefinition[i].projectId); } @@ -693,6 +637,7 @@ this.customizeRequest = {}; this.sort(); this.reload(); + this.initProjectIds(); }, addScenario(arr) { if (arr && arr.length > 0) { @@ -715,6 +660,7 @@ this.isBtnHide = false; this.sort(); this.reload(); + this.initProjectIds(); }, setApiParameter(item, refType, referenced) { let request = {}; @@ -756,6 +702,7 @@ this.isBtnHide = false; this.sort(); this.reload(); + this.initProjectIds(); }, getMaintainerOptions() { let workspaceId = localStorage.getItem(WORKSPACE_ID); @@ -782,6 +729,7 @@ hashTree.splice(index, 1); this.sort(); this.reload(); + this.initProjectIds(); } } }); @@ -812,19 +760,11 @@ }, runDebug() { /*触发执行操作*/ - if (!this.isHaveExec) { - this.$warning("无可执行步骤!"); + let sign = this.$refs.envPopover.checkEnv(); + if (!sign) { return; } - // 运行时是否需要检查环境 - if (!this.isExecWithOutEnv) { - let sign = this.$refs.envPopover.checkEnv(); - if (!sign) { - return; - } - } - this.$refs['currentScenario'].validate((valid) => { if (valid) { Promise.all([ @@ -1063,6 +1003,7 @@ } } this.sort(); + this.initProjectIds(); // this.getEnvironments(); }) } @@ -1132,8 +1073,19 @@ }) }, refReload() { + this.initProjectIds(); this.reload(); }, + initProjectIds() { + // 加载环境配置 + this.$nextTick(() => { + this.projectIds.clear(); + this.scenarioDefinition.forEach(data => { + let arr = jsonPath.query(data, "$..projectId"); + arr.forEach(a => this.projectIds.add(a)); + }) + }) + }, detailRefresh(result) { // 把执行结果分发给各个请求 this.debugResult = result; diff --git a/frontend/src/business/components/api/automation/scenario/maximize/MaximizeScenario.vue b/frontend/src/business/components/api/automation/scenario/maximize/MaximizeScenario.vue index f6d519954c..bd670d739f 100644 --- a/frontend/src/business/components/api/automation/scenario/maximize/MaximizeScenario.vue +++ b/frontend/src/business/components/api/automation/scenario/maximize/MaximizeScenario.vue @@ -164,7 +164,6 @@ type: String, scenarioDefinition: Array, envMap: Map, - projectList: Array }, components: { MsVariableList, @@ -225,10 +224,8 @@ response: {}, projectIds: new Set, projectEnvMap: new Map, - // projectList: [], + projectList: [], debugResult: new Map, - isHaveExec: false, - isExecWithOutEnv: true } }, created() { @@ -502,27 +499,8 @@ if (arr[i].type === ELEMENT_TYPE.LoopController && arr[i].loopType === "LOOP_COUNT" && arr[i].hashTree && arr[i].hashTree.length > 1) { arr[i].countController.proceed = true; } - let type = arr[i].type; - const canExec = this.checkCanExec(type); - if (!this.isHaveExec) { - // 判断此步骤是否可执行 - this.isHaveExec = canExec; - this.$emit("update:isHaveExec", canExec); - } - if (canExec) { - const execWithOutEnv = this.canExecWithOutEnv(type, arr[i].url); - if (!execWithOutEnv) { - if (!arr[i].projectId) { - // 如果自身没有ID并且场景有ID则赋值场景ID,否则赋值当前项目ID - arr[i].projectId = scenarioProjectId ? scenarioProjectId : this.projectId; - } - this.projectIds.add(arr[i].projectId); - this.$emit('update:projectIds', this.projectIds); - } - } - if (this.isExecWithOutEnv) { - this.isExecWithOutEnv = this.canExecWithOutEnv(type, arr[i].url); - this.$emit('update:isExecWithOutEnv', this.canExecWithOutEnv(type, arr[i].url)) + if (!arr[i].projectId) { + arr[i].projectId = scenarioProjectId ? scenarioProjectId : this.projectId; } if (arr[i].hashTree != undefined && arr[i].hashTree.length > 0) { this.recursiveSorting(arr[i].hashTree, arr[i].projectId); @@ -533,27 +511,7 @@ } } }, - canExecWithOutEnv(type, path) { - if (type === ELEMENT_TYPE.HTTPSamplerProxy) { - return this.isHTTPFullPath(path); - } - return type === ELEMENT_TYPE.JSR223Processor ? true : !this.checkCanExec(type); - }, - isHTTPFullPath(path) { - return path ? path.startsWith("http://") || path.startsWith("https://") : false; - }, - checkCanExec(type) { - const allCanExecType = ELEMENTS.get("AllCanExecType"); - const index = allCanExecType.indexOf(type); - return index !== -1; - }, sort() { - this.projectIds.clear(); - this.$emit('update:projectIds', this.projectIds); - this.isHaveExec = false; - this.isExecWithOutEnv = true; - this.$emit('update:isHaveExec', false); - this.$emit('update:isExecWithOutEnv', true); for (let i in this.scenarioDefinition) { // 排序 this.scenarioDefinition[i].index = Number(i) + 1; @@ -567,25 +525,6 @@ this.scenarioDefinition[i].projectId = this.projectId; } - let type = this.scenarioDefinition[i].type; - const canExec = this.checkCanExec(type); - if (!this.isHaveExec) { - // 判断此步骤是否可执行 - this.isHaveExec = canExec; - this.$emit('update:isHaveExec', canExec); - } - if (canExec) { - const execWithOutEnv = this.canExecWithOutEnv(type, this.scenarioDefinition[i].url); - if (!execWithOutEnv) { - this.projectIds.add(this.scenarioDefinition[i].projectId); - this.$emit('update:projectIds', this.projectIds); - } - } - if (this.isExecWithOutEnv) { - this.isExecWithOutEnv = this.canExecWithOutEnv(type, this.scenarioDefinition[i].url); - this.$emit('update:isExecWithOutEnv', this.canExecWithOutEnv(type, this.scenarioDefinition[i].url)); - } - if (this.scenarioDefinition[i].hashTree != undefined && this.scenarioDefinition[i].hashTree.length > 0) { this.recursiveSorting(this.scenarioDefinition[i].hashTree, this.scenarioDefinition[i].projectId); } @@ -606,6 +545,7 @@ this.customizeRequest = {}; this.sort(); this.reload(); + this.initProjectIds(); }, addScenario(arr) { if (arr && arr.length > 0) { @@ -623,6 +563,7 @@ } this.sort(); this.reload(); + this.initProjectIds(); this.scenarioVisible = false; }, setApiParameter(item, refType, referenced) { @@ -664,6 +605,7 @@ }); this.sort(); this.reload(); + this.initProjectIds(); }, openTagConfig() { if (!this.projectId) { @@ -684,6 +626,7 @@ hashTree.splice(index, 1); this.sort(); this.reload(); + this.initProjectIds(); } } }); @@ -980,8 +923,19 @@ refReload(data, node) { this.selectedTreeNode = data; this.selectedNode = node; + this.initProjectIds(); this.reload(); }, + initProjectIds() { + // 加载环境配置 + this.$nextTick(() => { + this.projectIds.clear(); + this.scenarioDefinition.forEach(data => { + let arr = jsonPath.query(data, "$..projectId"); + arr.forEach(a => this.projectIds.add(a)); + }) + }) + }, detailRefresh(result) { // 把执行结果分发给各个请求 this.debugResult = result; diff --git a/frontend/src/business/components/api/automation/scenario/maximize/ScenarioHeader.vue b/frontend/src/business/components/api/automation/scenario/maximize/ScenarioHeader.vue index e6382b985c..2588a23bb2 100644 --- a/frontend/src/business/components/api/automation/scenario/maximize/ScenarioHeader.vue +++ b/frontend/src/business/components/api/automation/scenario/maximize/ScenarioHeader.vue @@ -19,8 +19,6 @@ 共享cookie {{$t('api_test.request.debug')}}