refactor(接口测试): 优化加载组件选择性初始化

This commit is contained in:
fit2-zhao 2022-03-18 15:57:47 +08:00 committed by fit2-zhao
parent 70e0499d38
commit a3aedf20ca
6 changed files with 340 additions and 275 deletions

View File

@ -520,6 +520,10 @@ export default {
this.isSave = false; this.isSave = false;
this.removeTab(targetName); this.removeTab(targetName);
} }
if (tab) {
tab.splice(0, 1);
tab = undefined;
}
if (this.tabs && this.tabs.length === 0) { if (this.tabs && this.tabs.length === 0) {
this.refreshAll(); this.refreshAll();
} }

View File

@ -621,11 +621,6 @@ export default {
}, },
openOrClose(node) { openOrClose(node) {
node.expanded = !node.expanded; node.expanded = !node.expanded;
if (node.expanded) {
this.nodeExpand(node.data);
} else {
this.nodeCollapse(node.data);
}
}, },
hideNode(node) { hideNode(node) {
node.isLeaf = true; node.isLeaf = true;

View File

@ -15,7 +15,15 @@
<el-row> <el-row>
<el-link class="ms-el-link" @click="batchAdd" style="color: #783887"> {{ $t("commons.batch_add") }}</el-link> <el-link class="ms-el-link" @click="batchAdd" style="color: #783887"> {{ $t("commons.batch_add") }}</el-link>
</el-row> </el-row>
<ms-api-key-value @editScenarioAdvance="editScenarioAdvance" :scenario-definition="scenarioDefinition" :show-desc="true" :is-read-only="isReadOnly" :isShowEnable="isShowEnable" :suggestions="headerSuggestions" :items="headers" :need-mock="true"/> <ms-api-key-value
@editScenarioAdvance="editScenarioAdvance"
:scenario-definition="scenarioDefinition"
:show-desc="true"
:is-read-only="isReadOnly"
:isShowEnable="isShowEnable"
:suggestions="headerSuggestions"
:items="headers"
:need-mock="true" v-if="activeName === 'headers'"/>
</el-tab-pane> </el-tab-pane>
<!--query 参数--> <!--query 参数-->
@ -30,7 +38,15 @@
<el-row> <el-row>
<el-link class="ms-el-link" @click="batchAdd" style="color: #783887"> {{ $t("commons.batch_add") }}</el-link> <el-link class="ms-el-link" @click="batchAdd" style="color: #783887"> {{ $t("commons.batch_add") }}</el-link>
</el-row> </el-row>
<ms-api-variable @editScenarioAdvance="editScenarioAdvance" :scenario-definition="scenarioDefinition" :with-mor-setting="true" :is-read-only="isReadOnly" :isShowEnable="isShowEnable" :parameters="request.arguments"/> <ms-api-variable
@editScenarioAdvance="editScenarioAdvance"
:scenario-definition="scenarioDefinition"
:with-mor-setting="true"
:is-read-only="isReadOnly"
:isShowEnable="isShowEnable"
:parameters="request.arguments"
v-if="activeName === 'parameters'"
/>
</el-tab-pane> </el-tab-pane>
<!--REST 参数--> <!--REST 参数-->
@ -46,12 +62,29 @@
<el-row> <el-row>
<el-link class="ms-el-link" @click="batchAdd" style="color: #783887"> {{ $t("commons.batch_add") }}</el-link> <el-link class="ms-el-link" @click="batchAdd" style="color: #783887"> {{ $t("commons.batch_add") }}</el-link>
</el-row> </el-row>
<ms-api-variable @editScenarioAdvance="editScenarioAdvance" :scenario-definition="scenarioDefinition" :with-mor-setting="true" :is-read-only="isReadOnly" :isShowEnable="isShowEnable" :parameters="request.rest"/> <ms-api-variable
@editScenarioAdvance="editScenarioAdvance"
:scenario-definition="scenarioDefinition"
:with-mor-setting="true"
:is-read-only="isReadOnly"
:isShowEnable="isShowEnable"
:parameters="request.rest"
v-if="activeName === 'rest'"
/>
</el-tab-pane> </el-tab-pane>
<!--请求体--> <!--请求体-->
<el-tab-pane v-if="isBodyShow" :label="$t('api_test.request.body')" name="body"> <el-tab-pane v-if="isBodyShow" :label="$t('api_test.request.body')" name="body">
<ms-api-body @editScenarioAdvance="editScenarioAdvance" :scenario-definition="scenarioDefinition" @headersChange="reloadBody" :is-read-only="isReadOnly" :isShowEnable="isShowEnable" :headers="headers" :body="request.body"/> <ms-api-body
@editScenarioAdvance="editScenarioAdvance"
:scenario-definition="scenarioDefinition"
@headersChange="reloadBody"
:is-read-only="isReadOnly"
:isShowEnable="isShowEnable"
:headers="headers"
:body="request.body"
v-if="activeName === 'body'"
/>
</el-tab-pane> </el-tab-pane>
<!-- 认证配置 --> <!-- 认证配置 -->
@ -60,11 +93,19 @@
<span>{{ $t('api_test.definition.request.auth_config') }}</span> <span>{{ $t('api_test.definition.request.auth_config') }}</span>
</el-tooltip> </el-tooltip>
<ms-api-auth-config :is-read-only="isReadOnly" :request="request"/> <ms-api-auth-config
:is-read-only="isReadOnly"
:request="request"
v-if="activeName === 'authConfig'"
/>
</el-tab-pane> </el-tab-pane>
<el-tab-pane :label="$t('api_test.definition.request.other_config')" name="advancedConfig"> <el-tab-pane :label="$t('api_test.definition.request.other_config')" name="advancedConfig">
<ms-api-advanced-config :is-read-only="isReadOnly" :request="request"/> <ms-api-advanced-config
:is-read-only="isReadOnly"
:request="request"
v-if="activeName === 'advancedConfig'"
/>
</el-tab-pane> </el-tab-pane>
<!-- 脚本步骤/断言步骤 --> <!-- 脚本步骤/断言步骤 -->
@ -75,7 +116,14 @@
<div class="el-step__icon-inner">{{ request.preSize }}</div> <div class="el-step__icon-inner">{{ request.preSize }}</div>
</div> </div>
</span> </span>
<ms-jmx-step :request="request" :apiId="request.id" :response="response" :tab-type="'pre'" ref="preStep"/> <ms-jmx-step
:request="request"
:apiId="request.id"
:response="response"
:tab-type="'pre'"
ref="preStep"
v-if="activeName === 'preOperate'"
/>
</el-tab-pane> </el-tab-pane>
<el-tab-pane :label="$t('api_test.definition.request.post_operation')" name="postOperate" v-if="showScript"> <el-tab-pane :label="$t('api_test.definition.request.post_operation')" name="postOperate" v-if="showScript">
<span class="item-tabs" effect="dark" placement="top-start" slot="label"> <span class="item-tabs" effect="dark" placement="top-start" slot="label">
@ -84,7 +132,14 @@
<div class="el-step__icon-inner">{{ request.postSize }}</div> <div class="el-step__icon-inner">{{ request.postSize }}</div>
</div> </div>
</span> </span>
<ms-jmx-step :request="request" :apiId="request.id" :response="response" :tab-type="'post'" ref="postStep"/> <ms-jmx-step
:request="request"
:apiId="request.id"
:response="response"
:tab-type="'post'"
ref="postStep"
v-if="activeName === 'postOperate'"
/>
</el-tab-pane> </el-tab-pane>
<el-tab-pane :label="$t('api_test.definition.request.assertions_rule')" name="assertionsRule" v-if="showScript"> <el-tab-pane :label="$t('api_test.definition.request.assertions_rule')" name="assertionsRule" v-if="showScript">
<span class="item-tabs" effect="dark" placement="top-start" slot="label"> <span class="item-tabs" effect="dark" placement="top-start" slot="label">
@ -93,7 +148,14 @@
<div class="el-step__icon-inner">{{ request.ruleSize }}</div> <div class="el-step__icon-inner">{{ request.ruleSize }}</div>
</div> </div>
</span> </span>
<ms-jmx-step :request="request" :apiId="request.id" :response="response" @reload="reloadBody" :tab-type="'assertionsRule'" ref="assertionsRule"/> <ms-jmx-step
:request="request"
:apiId="request.id"
:response="response"
@reload="reloadBody"
:tab-type="'assertionsRule'"
ref="assertionsRule"
v-if="activeName === 'assertionsRule'"/>
</el-tab-pane> </el-tab-pane>
</el-tabs> </el-tabs>
@ -239,15 +301,17 @@ export default {
hasPermission, hasPermission,
hasLicense, hasLicense,
tabClick() { tabClick() {
if (this.activeName === 'preOperate') { this.$nextTick(() => {
this.$refs.preStep.filter(); if (this.activeName === 'preOperate' && this.$refs.preStep) {
} this.$refs.preStep.filter();
if (this.activeName === 'postOperate') { }
this.$refs.postStep.filter(); if (this.activeName === 'postOperate' && this.$refs.postStep) {
} this.$refs.postStep.filter();
if (this.activeName === 'assertionsRule') { }
this.$refs.assertionsRule.filter(); if (this.activeName === 'assertionsRule' && this.$refs.assertionsRule) {
} this.$refs.assertionsRule.filter();
}
});
}, },
generate() { generate() {
if (this.request.body && (this.request.body.jsonSchema || this.request.body.raw)) { if (this.request.body && (this.request.body.jsonSchema || this.request.body.raw)) {

View File

@ -8,15 +8,15 @@
<!--query 参数--> <!--query 参数-->
<el-tab-pane name="parameters"> <el-tab-pane name="parameters">
<template v-slot:label> <template v-slot:label>
{{$t('api_test.definition.request.req_param')}} {{ $t('api_test.definition.request.req_param') }}
<ms-instructions-icon :content="$t('api_test.definition.request.tcp_parameter_tip')"/> <ms-instructions-icon :content="$t('api_test.definition.request.tcp_parameter_tip')"/>
</template> </template>
<ms-api-variable :is-read-only="isReadOnly" :parameters="request.parameters"/> <ms-api-variable :is-read-only="isReadOnly" :parameters="request.parameters" v-if="activeName === 'parameters'"/>
</el-tab-pane> </el-tab-pane>
<el-tab-pane :label="$t('api_test.definition.request.message_template')" name="request"> <el-tab-pane :label="$t('api_test.definition.request.message_template')" name="request">
<div class="send-request"> <div class="send-request">
<ms-code-edit mode="text" :read-only="isReadOnly" :data.sync="request.request" :modes="['text', 'json', 'xml', 'html']" theme="eclipse"/> <ms-code-edit v-if="activeName === 'request'" mode="text" :read-only="isReadOnly" :data.sync="request.request" :modes="['text', 'json', 'xml', 'html']" theme="eclipse"/>
</div> </div>
</el-tab-pane> </el-tab-pane>
@ -24,7 +24,7 @@
<jsr233-processor-content <jsr233-processor-content
:jsr223-processor="request.tcpPreProcessor" :jsr223-processor="request.tcpPreProcessor"
:is-pre-processor="true" :is-pre-processor="true"
:is-read-only="isReadOnly"/> :is-read-only="isReadOnly" v-if="activeName === 'script'"/>
</el-tab-pane> </el-tab-pane>
<el-tab-pane :label="$t('api_test.definition.request.other_config')" name="other" class="other-config"> <el-tab-pane :label="$t('api_test.definition.request.other_config')" name="other" class="other-config">
@ -110,256 +110,256 @@
</template> </template>
<script> <script>
import MsApiKeyValue from "../../ApiKeyValue"; import MsApiKeyValue from "../../ApiKeyValue";
import MsApiAssertions from "../../assertion/ApiAssertions"; import MsApiAssertions from "../../assertion/ApiAssertions";
import MsApiExtract from "../../extract/ApiExtract"; import MsApiExtract from "../../extract/ApiExtract";
import ApiRequestMethodSelect from "../../collapse/ApiRequestMethodSelect"; import ApiRequestMethodSelect from "../../collapse/ApiRequestMethodSelect";
import MsCodeEdit from "../../../../../common/components/MsCodeEdit"; import MsCodeEdit from "../../../../../common/components/MsCodeEdit";
import MsApiScenarioVariables from "../../ApiScenarioVariables"; import MsApiScenarioVariables from "../../ApiScenarioVariables";
import {createComponent} from "../../jmeter/components"; import {createComponent} from "../../jmeter/components";
import {Assertions, Extract} from "../../../model/ApiTestModel"; import {Assertions, Extract} from "../../../model/ApiTestModel";
import {parseEnvironment} from "../../../model/EnvironmentModel"; import {parseEnvironment} from "../../../model/EnvironmentModel";
import ApiEnvironmentConfig from "../../environment/ApiEnvironmentConfig"; import ApiEnvironmentConfig from "../../environment/ApiEnvironmentConfig";
import {API_STATUS} from "../../../model/JsonData"; import {API_STATUS} from "../../../model/JsonData";
import TCPSampler from "../../jmeter/components/sampler/tcp-sampler"; import TCPSampler from "../../jmeter/components/sampler/tcp-sampler";
import {getCurrentProjectID, getUUID} from "@/common/js/utils"; import {getCurrentProjectID, getUUID} from "@/common/js/utils";
import MsApiVariable from "../../ApiVariable"; import MsApiVariable from "../../ApiVariable";
import MsInstructionsIcon from "../../../../../common/components/MsInstructionsIcon"; import MsInstructionsIcon from "../../../../../common/components/MsInstructionsIcon";
import Jsr233ProcessorContent from "../../../../automation/scenario/common/Jsr233ProcessorContent"; import Jsr233ProcessorContent from "../../../../automation/scenario/common/Jsr233ProcessorContent";
import JSR223PreProcessor from "../../jmeter/components/pre-processors/jsr223-pre-processor"; import JSR223PreProcessor from "../../jmeter/components/pre-processors/jsr223-pre-processor";
import ApiDefinitionStepButton from "../components/ApiDefinitionStepButton"; import ApiDefinitionStepButton from "../components/ApiDefinitionStepButton";
import {TYPE_TO_C} from "@/business/components/api/automation/scenario/Setting"; import {TYPE_TO_C} from "@/business/components/api/automation/scenario/Setting";
export default { export default {
name: "TcpBasisParameters", name: "TcpBasisParameters",
components: { components: {
ApiDefinitionStepButton, ApiDefinitionStepButton,
Jsr233ProcessorContent, Jsr233ProcessorContent,
MsInstructionsIcon, MsInstructionsIcon,
MsApiVariable, MsApiVariable,
MsApiScenarioVariables, MsApiScenarioVariables,
MsCodeEdit, MsCodeEdit,
ApiRequestMethodSelect, MsApiExtract, MsApiAssertions, MsApiKeyValue, ApiEnvironmentConfig ApiRequestMethodSelect, MsApiExtract, MsApiAssertions, MsApiKeyValue, ApiEnvironmentConfig
},
props: {
request: {},
basisData: {},
moduleOptions: Array,
isReadOnly: {
type: Boolean,
default: false
}, },
props: { showScript: {
request: {}, type: Boolean,
basisData: {}, default: true,
moduleOptions: Array,
isReadOnly: {
type: Boolean,
default: false
},
showScript: {
type: Boolean,
default: true,
},
referenced: {
type: Boolean,
default: false,
},
}, },
data() { referenced: {
return { type: Boolean,
activeName: "parameters", default: false,
classes: TCPSampler.CLASSES, },
isReloadData: false, },
options: API_STATUS, data() {
currentProjectId: "", return {
connectEncodingArr:[ activeName: "parameters",
{ classes: TCPSampler.CLASSES,
'key':'UTF-8', isReloadData: false,
'value':'UTF-8', options: API_STATUS,
}, currentProjectId: "",
{ connectEncodingArr: [
'key':'GBK', {
'value':'GBK', 'key': 'UTF-8',
}, 'value': 'UTF-8',
],
rules: {
classname: [{required: true, message: "请选择TCPClient", trigger: 'change'}],
server: [{required: true, message: this.$t('api_test.request.tcp.server_cannot_be_empty'), trigger: 'blur'}],
port: [{required: true, message: this.$t('commons.port_cannot_be_empty'), trigger: 'change'}],
}, },
} {
}, 'key': 'GBK',
created() { 'value': 'GBK',
this.currentProjectId = getCurrentProjectID(); },
if (!this.request.parameters) { ],
this.$set(this.request, 'parameters', []); rules: {
this.request.parameters = []; classname: [{required: true, message: "请选择TCPClient", trigger: 'change'}],
} server: [{required: true, message: this.$t('api_test.request.tcp.server_cannot_be_empty'), trigger: 'blur'}],
if (!this.request.tcpPreProcessor) { port: [{required: true, message: this.$t('commons.port_cannot_be_empty'), trigger: 'change'}],
this.$set(this.request, 'tcpPreProcessor', new JSR223PreProcessor())
}
if(this.request.tcpPreProcessor){
this.request.tcpPreProcessor.clazzName = TYPE_TO_C.get(this.request.tcpPreProcessor.type);
}
if(!this.request.connectEncoding){
this.request.connectEncoding = "UTF-8";
}
this.getEnvironments();
},
methods: {
addPre() {
let jsr223PreProcessor = createComponent("JSR223PreProcessor");
this.request.hashTree.push(jsr223PreProcessor);
this.reload();
}, },
addPost() {
let jsr223PostProcessor = createComponent("JSR223PostProcessor");
this.request.hashTree.push(jsr223PostProcessor);
this.reload();
},
addAssertions() {
let assertions = new Assertions();
this.request.hashTree.push(assertions);
this.reload();
},
addExtract() {
let jsonPostProcessor = new Extract();
this.request.hashTree.push(jsonPostProcessor);
this.reload();
},
remove(row) {
let index = this.request.hashTree.indexOf(row);
this.request.hashTree.splice(index, 1);
this.reload();
},
copyRow(row) {
let obj =JSON.parse(JSON.stringify(row));
obj.id = getUUID();
this.request.hashTree.push(obj);
this.reload();
},
reload() {
this.isReloadData = true
this.$nextTick(() => {
this.isReloadData = false
})
},
validateApi() {
if (this.currentProjectId === null) {
this.$error(this.$t('api_test.select_project'), 2000);
return;
}
this.$refs['basicForm'].validate();
},
saveApi() {
this.basisData.method = this.basisData.protocol;
this.$emit('saveApi', this.basisData);
},
runTest() {
},
validate() {
if (this.currentProjectId === null) {
this.$error(this.$t('api_test.select_project'), 2000);
return;
}
this.$refs['request'].validate((valid) => {
if (valid) {
this.$emit('callback');
}
})
},
getEnvironments() {
if (this.currentProjectId) {
this.environments = [];
this.$get('/api/environment/list/' + this.currentProjectId, response => {
this.environments = response.data;
this.environments.forEach(environment => {
parseEnvironment(environment);
});
this.initDataSource();
});
}
},
openEnvironmentConfig() {
if (!this.currentProjectId) {
this.$error(this.$t('api_test.select_project'));
return;
}
this.$refs.environmentConfig.open(this.currentProjectId);
},
initDataSource() {
for (let i in this.environments) {
if (this.environments[i].id === this.request.environmentId) {
this.databaseConfigsOptions = [];
this.environments[i].config.databaseConfigs.forEach(item => {
this.databaseConfigsOptions.push(item);
})
break;
}
}
},
environmentChange(value) {
this.request.dataSource = undefined;
for (let i in this.environments) {
if (this.environments[i].id === value) {
this.databaseConfigsOptions = [];
this.environments[i].config.databaseConfigs.forEach(item => {
this.databaseConfigsOptions.push(item);
})
break;
}
}
},
environmentConfigClose() {
this.getEnvironments();
}
} }
},
created() {
this.currentProjectId = getCurrentProjectID();
if (!this.request.parameters) {
this.$set(this.request, 'parameters', []);
this.request.parameters = [];
}
if (!this.request.tcpPreProcessor) {
this.$set(this.request, 'tcpPreProcessor', new JSR223PreProcessor())
}
if (this.request.tcpPreProcessor) {
this.request.tcpPreProcessor.clazzName = TYPE_TO_C.get(this.request.tcpPreProcessor.type);
}
if (!this.request.connectEncoding) {
this.request.connectEncoding = "UTF-8";
}
this.getEnvironments();
},
methods: {
addPre() {
let jsr223PreProcessor = createComponent("JSR223PreProcessor");
this.request.hashTree.push(jsr223PreProcessor);
this.reload();
},
addPost() {
let jsr223PostProcessor = createComponent("JSR223PostProcessor");
this.request.hashTree.push(jsr223PostProcessor);
this.reload();
},
addAssertions() {
let assertions = new Assertions();
this.request.hashTree.push(assertions);
this.reload();
},
addExtract() {
let jsonPostProcessor = new Extract();
this.request.hashTree.push(jsonPostProcessor);
this.reload();
},
remove(row) {
let index = this.request.hashTree.indexOf(row);
this.request.hashTree.splice(index, 1);
this.reload();
},
copyRow(row) {
let obj = JSON.parse(JSON.stringify(row));
obj.id = getUUID();
this.request.hashTree.push(obj);
this.reload();
},
reload() {
this.isReloadData = true
this.$nextTick(() => {
this.isReloadData = false
})
},
validateApi() {
if (this.currentProjectId === null) {
this.$error(this.$t('api_test.select_project'), 2000);
return;
}
this.$refs['basicForm'].validate();
},
saveApi() {
this.basisData.method = this.basisData.protocol;
this.$emit('saveApi', this.basisData);
},
runTest() {
},
validate() {
if (this.currentProjectId === null) {
this.$error(this.$t('api_test.select_project'), 2000);
return;
}
this.$refs['request'].validate((valid) => {
if (valid) {
this.$emit('callback');
}
})
},
getEnvironments() {
if (this.currentProjectId) {
this.environments = [];
this.$get('/api/environment/list/' + this.currentProjectId, response => {
this.environments = response.data;
this.environments.forEach(environment => {
parseEnvironment(environment);
});
this.initDataSource();
});
}
},
openEnvironmentConfig() {
if (!this.currentProjectId) {
this.$error(this.$t('api_test.select_project'));
return;
}
this.$refs.environmentConfig.open(this.currentProjectId);
},
initDataSource() {
for (let i in this.environments) {
if (this.environments[i].id === this.request.environmentId) {
this.databaseConfigsOptions = [];
this.environments[i].config.databaseConfigs.forEach(item => {
this.databaseConfigsOptions.push(item);
})
break;
}
}
},
environmentChange(value) {
this.request.dataSource = undefined;
for (let i in this.environments) {
if (this.environments[i].id === value) {
this.databaseConfigsOptions = [];
this.environments[i].config.databaseConfigs.forEach(item => {
this.databaseConfigsOptions.push(item);
})
break;
}
}
},
environmentConfigClose() {
this.getEnvironments();
}
} }
}
</script> </script>
<style scoped> <style scoped>
.tcp >>> .el-input-number { .tcp >>> .el-input-number {
width: 100%; width: 100%;
} }
.send-request { .send-request {
padding: 0px 0; padding: 0px 0;
height: 300px; height: 300px;
border: 1px #DCDFE6 solid; border: 1px #DCDFE6 solid;
border-radius: 4px; border-radius: 4px;
width: 100%; width: 100%;
} }
.ms-left-cell { .ms-left-cell {
margin-top: 40px; margin-top: 40px;
} }
.ms-left-buttion { .ms-left-buttion {
margin: 6px 0px 8px 30px; margin: 6px 0px 8px 30px;
} }
/deep/ .el-form-item { /deep/ .el-form-item {
margin-bottom: 15px; margin-bottom: 15px;
} }
.ms-left-cell { .ms-left-cell {
margin-top: 40px; margin-top: 40px;
} }
.ms-left-buttion { .ms-left-buttion {
margin: 6px 0px 8px 30px; margin: 6px 0px 8px 30px;
} }
/deep/ .el-form-item { /deep/ .el-form-item {
margin-bottom: 15px; margin-bottom: 15px;
} }
/deep/ .instructions-icon { /deep/ .instructions-icon {
font-size: 14px !important; font-size: 14px !important;
} }
.request-tabs { .request-tabs {
margin: 10px; margin: 10px;
min-height: 200px; min-height: 200px;
} }
.other-config { .other-config {
padding: 15px; padding: 15px;
} }
</style> </style>

View File

@ -2,28 +2,28 @@
<div class="text-container" v-if="responseResult"> <div class="text-container" v-if="responseResult">
<el-tabs v-model="activeName" v-show="isActive"> <el-tabs v-model="activeName" v-show="isActive">
<el-tab-pane :label="$t('api_test.definition.request.response_body')" name="body" class="pane"> <el-tab-pane :label="$t('api_test.definition.request.response_body')" name="body" class="pane">
<ms-sql-result-table v-if="isSqlType" :body="responseResult.body"/> <ms-sql-result-table v-if="isSqlType && activeName === 'body'" :body="responseResult.body"/>
<ms-code-edit v-if="!isSqlType && isMsCodeEditShow" :mode="mode" :read-only="true" :modes="modes" :data.sync="responseResult.body" ref="codeEdit"/> <ms-code-edit v-if="!isSqlType && isMsCodeEditShow && activeName === 'body'" :mode="mode" :read-only="true" :modes="modes" :data.sync="responseResult.body" ref="codeEdit"/>
</el-tab-pane> </el-tab-pane>
<el-tab-pane :label="$t('api_test.definition.request.response_header')" name="headers" class="pane"> <el-tab-pane :label="$t('api_test.definition.request.response_header')" name="headers" class="pane">
<ms-code-edit :mode="'text'" :read-only="true" :data.sync="responseResult.headers"/> <ms-code-edit :mode="'text'" :read-only="true" :data.sync="responseResult.headers" v-if="activeName === 'headers'"/>
</el-tab-pane> </el-tab-pane>
<el-tab-pane :label="$t('api_test.definition.request.console')" name="console" class="pane"> <el-tab-pane :label="$t('api_test.definition.request.console')" name="console" class="pane">
<ms-code-edit :mode="'text'" :read-only="true" :data.sync="responseResult.console"/> <ms-code-edit :mode="'text'" :read-only="true" :data.sync="responseResult.console" v-if="activeName === 'console'"/>
</el-tab-pane> </el-tab-pane>
<el-tab-pane :label="$t('api_report.assertions')" name="assertions" class="pane assertions"> <el-tab-pane :label="$t('api_report.assertions')" name="assertions" class="pane assertions">
<ms-assertion-results :assertions="responseResult.assertions"/> <ms-assertion-results :assertions="responseResult.assertions" v-if="activeName === 'assertions'"/>
</el-tab-pane> </el-tab-pane>
<el-tab-pane :label="$t('api_test.request.extract.label')" name="label" class="pane"> <el-tab-pane :label="$t('api_test.request.extract.label')" name="label" class="pane">
<ms-code-edit :mode="'text'" :read-only="true" :data.sync="responseResult.vars"/> <ms-code-edit :mode="'text'" :read-only="true" :data.sync="responseResult.vars" v-if="activeName === 'label'"/>
</el-tab-pane> </el-tab-pane>
<el-tab-pane :label="$t('api_report.request_body')" name="request_body" class="pane"> <el-tab-pane :label="$t('api_report.request_body')" name="request_body" class="pane">
<ms-code-edit :mode="'text'" :read-only="true" :data.sync="reqMessages"/> <ms-code-edit :mode="'text'" :read-only="true" :data.sync="reqMessages" v-if="activeName === 'request_body'"/>
</el-tab-pane> </el-tab-pane>
<el-tab-pane v-if="activeName == 'body'" :disabled="true" name="mode" class="pane cookie"> <el-tab-pane v-if="activeName == 'body'" :disabled="true" name="mode" class="pane cookie">

View File

@ -257,20 +257,22 @@ export default {
return false; return false;
}, },
filter() { filter() {
let vars = [];
if (this.tabType === 'pre') {
vars = ["JSR223PreProcessor", "JDBCPreProcessor", "ConstantTimer"];
} else if (this.tabType === 'post') {
vars = ["JSR223PostProcessor", "JDBCPostProcessor", "Extract"];
} else {
vars = ["Assertions"];
}
this.$nextTick(() => { this.$nextTick(() => {
if (this.$refs.generalSteps && this.$refs.generalSteps.filter) { let vars = [];
this.$refs.generalSteps.filter(vars); if (this.tabType === 'pre') {
vars = ["JSR223PreProcessor", "JDBCPreProcessor", "ConstantTimer"];
} else if (this.tabType === 'post') {
vars = ["JSR223PostProcessor", "JDBCPostProcessor", "Extract"];
} else {
vars = ["Assertions"];
} }
this.$nextTick(() => {
if (this.$refs.generalSteps && this.$refs.generalSteps.filter) {
this.$refs.generalSteps.filter(vars);
}
});
this.sort();
}); });
this.sort();
}, },
addPre() { addPre() {
let jsr223PreProcessor = createComponent("JSR223PreProcessor"); let jsr223PreProcessor = createComponent("JSR223PreProcessor");