Merge remote-tracking branch 'origin/v1.8' into v1.8
This commit is contained in:
commit
223b88cfbb
|
@ -533,12 +533,15 @@ public class TestCaseService {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
for (int j = 0; j < jsonArray.size(); j++) {
|
if (CollectionUtils.isNotEmpty(jsonArray)) {
|
||||||
int num = j + 1;
|
for (int j = 0; j < jsonArray.size(); j++) {
|
||||||
step.append(num + "." + jsonArray.getJSONObject(j).getString("desc") + "\r\n");
|
int num = j + 1;
|
||||||
result.append(num + "." + jsonArray.getJSONObject(j).getString("result") + "\r\n");
|
step.append(num + "." + jsonArray.getJSONObject(j).getString("desc") + "\r\n");
|
||||||
|
result.append(num + "." + jsonArray.getJSONObject(j).getString("result") + "\r\n");
|
||||||
|
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
data.setStepDesc(step.toString());
|
data.setStepDesc(step.toString());
|
||||||
data.setStepResult(result.toString());
|
data.setStepResult(result.toString());
|
||||||
step.setLength(0);
|
step.setLength(0);
|
||||||
|
|
|
@ -16,32 +16,9 @@
|
||||||
ref="nodeTree">
|
ref="nodeTree">
|
||||||
|
|
||||||
<template v-slot:header>
|
<template v-slot:header>
|
||||||
<el-input :placeholder="$t('test_track.module.search')" v-model="condition.filterText" size="small">
|
<ms-search-bar
|
||||||
<template v-slot:append>
|
:condition="condition"
|
||||||
<el-dropdown v-if="!isReadOnly" size="small" split-button type="primary" class="ms-api-button" @click="handleCommand('add-api')"
|
:commands="operators"/>
|
||||||
v-tester
|
|
||||||
@command="handleCommand" trigger="click">
|
|
||||||
<el-button icon="el-icon-folder-add" @click="addScenario"></el-button>
|
|
||||||
<el-dropdown-menu slot="dropdown">
|
|
||||||
<el-dropdown-item command="add-scenario">{{ $t('api_test.automation.add_scenario') }}</el-dropdown-item>
|
|
||||||
<el-dropdown-item command="import">{{ $t('api_test.api_import.label') }}</el-dropdown-item>
|
|
||||||
<el-dropdown-item command="exports">
|
|
||||||
<el-dropdown placement="right-start" @command="chooseExportType">
|
|
||||||
<span>
|
|
||||||
{{ $t('report.export') }} <i class="el-icon-arrow-down el-icon--right"></i>
|
|
||||||
</span>
|
|
||||||
<el-dropdown-menu slot="dropdown">
|
|
||||||
<template>
|
|
||||||
<el-dropdown-item command="export">{{ $t('report.export_to_ms_format') }}</el-dropdown-item>
|
|
||||||
<el-dropdown-item command="exportJmx">{{ $t('report.export') }} JMETER 格式</el-dropdown-item>
|
|
||||||
</template>
|
|
||||||
</el-dropdown-menu>
|
|
||||||
</el-dropdown>
|
|
||||||
</el-dropdown-item>
|
|
||||||
</el-dropdown-menu>
|
|
||||||
</el-dropdown>
|
|
||||||
</template>
|
|
||||||
</el-input>
|
|
||||||
<module-trash-button v-if="!isReadOnly" :condition="condition" :exe="enableTrash"/>
|
<module-trash-button v-if="!isReadOnly" :condition="condition" :exe="enableTrash"/>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
|
@ -64,10 +41,12 @@
|
||||||
import {buildNodePath} from "../../definition/model/NodeTree";
|
import {buildNodePath} from "../../definition/model/NodeTree";
|
||||||
import ModuleTrashButton from "../../definition/components/module/ModuleTrashButton";
|
import ModuleTrashButton from "../../definition/components/module/ModuleTrashButton";
|
||||||
import ApiImport from "./common/ScenarioImport";
|
import ApiImport from "./common/ScenarioImport";
|
||||||
|
import MsSearchBar from "@/business/components/common/components/search/MsSearchBar";
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
name: 'MsApiScenarioModule',
|
name: 'MsApiScenarioModule',
|
||||||
components: {
|
components: {
|
||||||
|
MsSearchBar,
|
||||||
ApiImport,
|
ApiImport,
|
||||||
ModuleTrashButton,
|
ModuleTrashButton,
|
||||||
MsNodeTree,
|
MsNodeTree,
|
||||||
|
@ -105,6 +84,33 @@
|
||||||
data: [],
|
data: [],
|
||||||
currentModule: undefined,
|
currentModule: undefined,
|
||||||
moduleOptions: [],
|
moduleOptions: [],
|
||||||
|
operators: [
|
||||||
|
{
|
||||||
|
label: this.$t('api_test.automation.add_scenario'),
|
||||||
|
callback: this.addScenario
|
||||||
|
},
|
||||||
|
{
|
||||||
|
label: this.$t('api_test.api_import.label'),
|
||||||
|
callback: this.handleImport
|
||||||
|
},
|
||||||
|
{
|
||||||
|
label: this.$t('report.export'),
|
||||||
|
children: [
|
||||||
|
{
|
||||||
|
label: this.$t('report.export_to_ms_format') ,
|
||||||
|
callback: () => {
|
||||||
|
this.$emit('exportAPI');
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
label: this.$t('report.export') + 'JMETER 格式',
|
||||||
|
callback: () => {
|
||||||
|
this.$emit('exportJmx');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
mounted() {
|
mounted() {
|
||||||
|
@ -151,14 +157,19 @@
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
chooseExportType(e) {
|
handleImport() {
|
||||||
switch (e) {
|
if (this.projectId) {
|
||||||
case "export":
|
this.result = this.$get("/api/automation/module/list/" + this.projectId, response => {
|
||||||
this.$emit('exportAPI');
|
if (response.data != undefined && response.data != null) {
|
||||||
break;
|
this.data = response.data;
|
||||||
case "exportJmx":
|
let moduleOptions = [];
|
||||||
this.$emit('exportJmx');
|
this.data.forEach(node => {
|
||||||
break;
|
buildNodePath(node, {path: ''}, moduleOptions);
|
||||||
|
});
|
||||||
|
this.moduleOptions = moduleOptions
|
||||||
|
}
|
||||||
|
});
|
||||||
|
this.$refs.apiImport.open(this.currentModule);
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
list(projectId) {
|
list(projectId) {
|
||||||
|
|
|
@ -619,7 +619,10 @@
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
canExecWithOutEnv(type, path) {
|
canExecWithOutEnv(type, path) {
|
||||||
return type !== ELEMENT_TYPE.HTTPSamplerProxy ? !this.checkCanExec(type) : this.isHTTPFullPath(path);
|
if (type === ELEMENT_TYPE.HTTPSamplerProxy) {
|
||||||
|
return this.isHTTPFullPath(path);
|
||||||
|
}
|
||||||
|
return type === ELEMENT_TYPE.JSR223Processor ? true : !this.checkCanExec(type);
|
||||||
},
|
},
|
||||||
isHTTPFullPath(path) {
|
isHTTPFullPath(path) {
|
||||||
return path ? path.startsWith("http://") || path.startsWith("https://") : false;
|
return path ? path.startsWith("http://") || path.startsWith("https://") : false;
|
||||||
|
|
|
@ -531,7 +531,10 @@
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
canExecWithOutEnv(type, path) {
|
canExecWithOutEnv(type, path) {
|
||||||
return type !== ELEMENT_TYPE.HTTPSamplerProxy ? !this.checkCanExec(type) : this.isHTTPFullPath(path);
|
if (type === ELEMENT_TYPE.HTTPSamplerProxy) {
|
||||||
|
return this.isHTTPFullPath(path);
|
||||||
|
}
|
||||||
|
return type === ELEMENT_TYPE.JSR223Processor ? true : !this.checkCanExec(type);
|
||||||
},
|
},
|
||||||
isHTTPFullPath(path) {
|
isHTTPFullPath(path) {
|
||||||
return path ? path.startsWith("http://") || path.startsWith("https://") : false;
|
return path ? path.startsWith("http://") || path.startsWith("https://") : false;
|
||||||
|
|
|
@ -1,46 +1,23 @@
|
||||||
<template>
|
<template>
|
||||||
<div>
|
<div>
|
||||||
<el-select class="protocol-select" size="small" v-model="condition.protocol">
|
<el-row>
|
||||||
<el-option
|
<el-col class="protocol-col" :span="9">
|
||||||
v-for="item in options"
|
<el-select class="protocol-select" size="small" v-model="condition.protocol">
|
||||||
:key="item.value"
|
<el-option
|
||||||
:name="item.name"
|
v-for="item in options"
|
||||||
:value="item.value"
|
:key="item.value"
|
||||||
:disabled="item.disabled">
|
:name="item.name"
|
||||||
</el-option>
|
:value="item.value"
|
||||||
</el-select>
|
:disabled="item.disabled">
|
||||||
<el-input class="filter-input" :class="{'read-only': isReadOnly}" :placeholder="$t('test_track.module.search')" v-model="condition.filterText"
|
</el-option>
|
||||||
size="small">
|
</el-select>
|
||||||
<template v-slot:append>
|
</el-col>
|
||||||
<el-dropdown v-if="!isReadOnly" size="small" split-button type="primary" class="ms-api-button" @click="handleCommand('add-api')"
|
<el-col :span="15">
|
||||||
v-tester
|
<ms-search-bar
|
||||||
@command="handleCommand"
|
:condition="condition"
|
||||||
:hide-on-click='false'
|
:commands="operators"/>
|
||||||
trigger="click">
|
</el-col>
|
||||||
<el-button icon="el-icon-folder-add" @click="addApi"></el-button>
|
</el-row>
|
||||||
<el-dropdown-menu slot="dropdown">
|
|
||||||
<el-dropdown-item command="add-api">{{ $t('api_test.definition.request.title') }}</el-dropdown-item>
|
|
||||||
<el-dropdown-item command="debug">{{ $t('api_test.definition.request.fast_debug') }}</el-dropdown-item>
|
|
||||||
<el-dropdown-item command="import">{{ $t('api_test.api_import.label') }}</el-dropdown-item>
|
|
||||||
<el-dropdown-item command="export">
|
|
||||||
<el-dropdown placement="right-start" @command="chooseExportType">
|
|
||||||
<span>
|
|
||||||
{{ $t('report.export') }} <i class="el-icon-arrow-down el-icon--right"></i>
|
|
||||||
</span>
|
|
||||||
<el-dropdown-menu slot="dropdown">
|
|
||||||
<template>
|
|
||||||
<el-dropdown-item command="export-MS">{{ $t('report.export_to_ms_format') }}</el-dropdown-item>
|
|
||||||
<el-dropdown-item command="export-Swagger" v-show="condition.protocol=='HTTP'">
|
|
||||||
{{ $t('report.export_to_swagger3_format') }}
|
|
||||||
</el-dropdown-item>
|
|
||||||
</template>
|
|
||||||
</el-dropdown-menu>
|
|
||||||
</el-dropdown>
|
|
||||||
</el-dropdown-item>
|
|
||||||
</el-dropdown-menu>
|
|
||||||
</el-dropdown>
|
|
||||||
</template>
|
|
||||||
</el-input>
|
|
||||||
|
|
||||||
<module-trash-button v-if="!isReadOnly" :condition="condition" :exe="enableTrash"/>
|
<module-trash-button v-if="!isReadOnly" :condition="condition" :exe="enableTrash"/>
|
||||||
|
|
||||||
|
@ -60,14 +37,54 @@ import ApiImport from "../import/ApiImport";
|
||||||
import ModuleTrashButton from "./ModuleTrashButton";
|
import ModuleTrashButton from "./ModuleTrashButton";
|
||||||
import {buildNodePath} from "@/business/components/api/definition/model/NodeTree";
|
import {buildNodePath} from "@/business/components/api/definition/model/NodeTree";
|
||||||
import TemplateComponent from "../../../../track/plan/view/comonents/report/TemplateComponent/TemplateComponent";
|
import TemplateComponent from "../../../../track/plan/view/comonents/report/TemplateComponent/TemplateComponent";
|
||||||
|
import MsSearchBar from "@/business/components/common/components/search/MsSearchBar";
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
name: "ApiModuleHeader",
|
name: "ApiModuleHeader",
|
||||||
components: {TemplateComponent, ModuleTrashButton, ApiImport, MsAddBasisApi},
|
components: {MsSearchBar, TemplateComponent, ModuleTrashButton, ApiImport, MsAddBasisApi},
|
||||||
data() {
|
data() {
|
||||||
return {
|
return {
|
||||||
options: OPTIONS,
|
options: OPTIONS,
|
||||||
moduleOptions: {}
|
moduleOptions: {},
|
||||||
|
operators: [
|
||||||
|
{
|
||||||
|
label: this.$t('api_test.definition.request.title'),
|
||||||
|
callback: this.addApi
|
||||||
|
},
|
||||||
|
{
|
||||||
|
label: this.$t('api_test.definition.request.fast_debug'),
|
||||||
|
callback: () => {this.$emit('debug')}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
label: this.$t('api_test.api_import.label'),
|
||||||
|
callback: this.handleImport
|
||||||
|
},
|
||||||
|
{
|
||||||
|
label: this.$t('report.export'),
|
||||||
|
children: [
|
||||||
|
{
|
||||||
|
label: this.$t('report.export_to_ms_format') ,
|
||||||
|
callback: () => {
|
||||||
|
if (!this.projectId) {
|
||||||
|
this.$warning(this.$t('commons.check_project_tip'));
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
this.$emit('exportAPI', 'MS');
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
label: this.$t('report.export_to_swagger3_format'),
|
||||||
|
callback: () => {
|
||||||
|
if (!this.projectId) {
|
||||||
|
this.$warning(this.$t('commons.check_project_tip'));
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
this.$emit('exportAPI', 'Swagger');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
props: {
|
props: {
|
||||||
|
@ -96,50 +113,23 @@ export default {
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
|
handleImport() {
|
||||||
handleCommand(e) {
|
|
||||||
switch (e) {
|
|
||||||
case "debug":
|
|
||||||
this.$emit('debug');
|
|
||||||
break;
|
|
||||||
case "add-api":
|
|
||||||
this.addApi();
|
|
||||||
break;
|
|
||||||
case "add-module":
|
|
||||||
break;
|
|
||||||
case "import":
|
|
||||||
if (!this.projectId) {
|
|
||||||
this.$warning(this.$t('commons.check_project_tip'));
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
this.protocol = "HTTP";
|
|
||||||
this.result = this.$get("/api/module/list/" + this.projectId + "/" + this.condition.protocol, response => {
|
|
||||||
if (response.data != undefined && response.data != null) {
|
|
||||||
this.data = response.data;
|
|
||||||
let moduleOptions = [];
|
|
||||||
this.data.forEach(node => {
|
|
||||||
buildNodePath(node, {path: ''}, moduleOptions);
|
|
||||||
});
|
|
||||||
this.moduleOptions = moduleOptions
|
|
||||||
}
|
|
||||||
this.$refs.apiImport.open(this.moduleOptions);
|
|
||||||
});
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
},
|
|
||||||
chooseExportType(e) {
|
|
||||||
if (!this.projectId) {
|
if (!this.projectId) {
|
||||||
this.$warning(this.$t('commons.check_project_tip'));
|
this.$warning(this.$t('commons.check_project_tip'));
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
switch (e) {
|
this.protocol = "HTTP";
|
||||||
case "export-MS":
|
this.result = this.$get("/api/module/list/" + this.projectId + "/" + this.condition.protocol, response => {
|
||||||
this.$emit('exportAPI', 'MS');
|
if (response.data != undefined && response.data != null) {
|
||||||
break;
|
this.data = response.data;
|
||||||
case "export-Swagger":
|
let moduleOptions = [];
|
||||||
this.$emit('exportAPI', 'Swagger');
|
this.data.forEach(node => {
|
||||||
break;
|
buildNodePath(node, {path: ''}, moduleOptions);
|
||||||
}
|
});
|
||||||
|
this.moduleOptions = moduleOptions
|
||||||
|
}
|
||||||
|
this.$refs.apiImport.open(this.moduleOptions);
|
||||||
|
});
|
||||||
},
|
},
|
||||||
addApi() {
|
addApi() {
|
||||||
if (!this.projectId) {
|
if (!this.projectId) {
|
||||||
|
@ -168,6 +158,10 @@ export default {
|
||||||
height: 30px;
|
height: 30px;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.protocol-col {
|
||||||
|
min-width: 93px;
|
||||||
|
}
|
||||||
|
|
||||||
.read-only {
|
.read-only {
|
||||||
width: 150px !important;
|
width: 150px !important;
|
||||||
}
|
}
|
||||||
|
@ -176,5 +170,4 @@ export default {
|
||||||
width: 174px;
|
width: 174px;
|
||||||
padding-left: 3px;
|
padding-left: 3px;
|
||||||
}
|
}
|
||||||
|
|
||||||
</style>
|
</style>
|
||||||
|
|
|
@ -155,7 +155,7 @@ export default {
|
||||||
width: 100%;
|
width: 100%;
|
||||||
background: white;
|
background: white;
|
||||||
height: 100vh;
|
height: 100vh;
|
||||||
z-index: 999999;
|
z-index: 2;
|
||||||
}
|
}
|
||||||
|
|
||||||
.full-screen >>> .minder-container {
|
.full-screen >>> .minder-container {
|
||||||
|
|
|
@ -0,0 +1,78 @@
|
||||||
|
<template>
|
||||||
|
<el-input class="ms-search-bar" :placeholder="$t('test_track.module.search')" v-model="condition.filterText" size="small">
|
||||||
|
<template v-slot:append>
|
||||||
|
<el-dropdown>
|
||||||
|
<el-button type="primary">
|
||||||
|
<span class="tip-font">{{ $t('commons.more_operator') }}</span>
|
||||||
|
<i class="el-icon-arrow-down el-icon--right"/>
|
||||||
|
</el-button>
|
||||||
|
<el-dropdown-menu slot="dropdown">
|
||||||
|
<el-dropdown-item v-for="(item, index) in commands" :key="index" @click.native.stop="click(item)">
|
||||||
|
<span class="tip-font" v-if="!item.children">
|
||||||
|
{{ item.label }}
|
||||||
|
</span>
|
||||||
|
<el-dropdown placement="right-start" v-else>
|
||||||
|
<span class="tip-font">
|
||||||
|
{{ item.label }}
|
||||||
|
<i class="el-icon-arrow-down el-icon--right"></i>
|
||||||
|
</span>
|
||||||
|
<el-dropdown-menu slot="dropdown">
|
||||||
|
<template>
|
||||||
|
<el-dropdown-item v-for="(child, index) in item.children" :key="index" @click.native.stop="click(child)">
|
||||||
|
<span class="tip-font">
|
||||||
|
{{child.label}}
|
||||||
|
</span>
|
||||||
|
</el-dropdown-item>
|
||||||
|
</template>
|
||||||
|
</el-dropdown-menu>
|
||||||
|
</el-dropdown>
|
||||||
|
</el-dropdown-item>
|
||||||
|
</el-dropdown-menu>
|
||||||
|
</el-dropdown>
|
||||||
|
|
||||||
|
</template>
|
||||||
|
</el-input>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
export default {
|
||||||
|
name: "MsSearchBar",
|
||||||
|
props: {
|
||||||
|
condition: {
|
||||||
|
type: Object,
|
||||||
|
default() {
|
||||||
|
return {}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
commands: {
|
||||||
|
type: Array,
|
||||||
|
default() {
|
||||||
|
return [
|
||||||
|
{
|
||||||
|
label: this.$t('api_test.api_import.label'),
|
||||||
|
callback: () => {}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
click(item) {
|
||||||
|
if (item.callback) {
|
||||||
|
item.callback();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style scoped>
|
||||||
|
.tip-font {
|
||||||
|
font-size: 13px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.el-dropdown .el-button {
|
||||||
|
padding: 8px;
|
||||||
|
}
|
||||||
|
|
||||||
|
</style>
|
|
@ -14,22 +14,9 @@
|
||||||
@refresh="list"
|
@refresh="list"
|
||||||
ref="nodeTree">
|
ref="nodeTree">
|
||||||
<template v-slot:header>
|
<template v-slot:header>
|
||||||
<el-input :placeholder="$t('test_track.module.search')" v-model="condition.filterText" size="small">
|
<ms-search-bar
|
||||||
<template v-slot:append>
|
:condition="condition"
|
||||||
<el-dropdown size="small" split-button type="primary" class="ms-api-button"
|
:commands="operators"/>
|
||||||
@click="handleCommand('add-api')"
|
|
||||||
v-tester
|
|
||||||
@command="handleCommand">
|
|
||||||
<el-button icon="el-icon-folder-add" @click="addTestCase"></el-button>
|
|
||||||
<el-dropdown-menu slot="dropdown">
|
|
||||||
<el-dropdown-item command="add-testcase">{{ $t('test_track.case.create') }}</el-dropdown-item>
|
|
||||||
<el-dropdown-item command="import">{{ $t('api_test.api_import.label') }}</el-dropdown-item>
|
|
||||||
<el-dropdown-item command="export">{{ $t('api_test.export_config') }}</el-dropdown-item>
|
|
||||||
|
|
||||||
</el-dropdown-menu>
|
|
||||||
</el-dropdown>
|
|
||||||
</template>
|
|
||||||
</el-input>
|
|
||||||
</template>
|
</template>
|
||||||
</ms-node-tree>
|
</ms-node-tree>
|
||||||
<test-case-import @refreshAll="refreshAll" ref="testCaseImport"></test-case-import>
|
<test-case-import @refreshAll="refreshAll" ref="testCaseImport"></test-case-import>
|
||||||
|
@ -49,10 +36,11 @@ import NodeEdit from "./NodeEdit";
|
||||||
import MsNodeTree from "./NodeTree";
|
import MsNodeTree from "./NodeTree";
|
||||||
import TestCaseCreate from "@/business/components/track/case/components/TestCaseCreate";
|
import TestCaseCreate from "@/business/components/track/case/components/TestCaseCreate";
|
||||||
import TestCaseImport from "@/business/components/track/case/components/TestCaseImport";
|
import TestCaseImport from "@/business/components/track/case/components/TestCaseImport";
|
||||||
|
import MsSearchBar from "@/business/components/common/components/search/MsSearchBar";
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
name: "TestCaseNodeTree",
|
name: "TestCaseNodeTree",
|
||||||
components: {TestCaseImport, TestCaseCreate, MsNodeTree, NodeEdit},
|
components: {MsSearchBar, TestCaseImport, TestCaseCreate, MsNodeTree, NodeEdit},
|
||||||
data() {
|
data() {
|
||||||
return {
|
return {
|
||||||
defaultProps: {
|
defaultProps: {
|
||||||
|
@ -65,6 +53,20 @@ export default {
|
||||||
filterText: "",
|
filterText: "",
|
||||||
trashEnable: false
|
trashEnable: false
|
||||||
},
|
},
|
||||||
|
operators: [
|
||||||
|
{
|
||||||
|
label: this.$t('test_track.case.create'),
|
||||||
|
callback: this.addTestCase
|
||||||
|
},
|
||||||
|
{
|
||||||
|
label: this.$t('api_test.api_import.label'),
|
||||||
|
callback: this.handleImport
|
||||||
|
},
|
||||||
|
{
|
||||||
|
label: this.$t('api_test.export_config'),
|
||||||
|
callback: () => {this.$emit('exportTestCase')}
|
||||||
|
}
|
||||||
|
]
|
||||||
};
|
};
|
||||||
},
|
},
|
||||||
props: {
|
props: {
|
||||||
|
@ -109,24 +111,6 @@ export default {
|
||||||
refreshAll() {
|
refreshAll() {
|
||||||
this.$emit('refreshAll');
|
this.$emit('refreshAll');
|
||||||
},
|
},
|
||||||
handleCommand(e) {
|
|
||||||
switch (e) {
|
|
||||||
case "add-testcase":
|
|
||||||
this.addTestCase();
|
|
||||||
break;
|
|
||||||
case "import":
|
|
||||||
if (!this.projectId) {
|
|
||||||
this.$warning(this.$t('commons.check_project_tip'));
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
this.$refs.testCaseImport.open();
|
|
||||||
break;
|
|
||||||
case "export":
|
|
||||||
this.$emit('exportTestCase')
|
|
||||||
break;
|
|
||||||
|
|
||||||
}
|
|
||||||
},
|
|
||||||
list() {
|
list() {
|
||||||
if (this.projectId) {
|
if (this.projectId) {
|
||||||
this.result = this.$get("/case/node/list/" + this.projectId, response => {
|
this.result = this.$get("/case/node/list/" + this.projectId, response => {
|
||||||
|
@ -156,6 +140,13 @@ export default {
|
||||||
this.list();
|
this.list();
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
|
handleImport() {
|
||||||
|
if (!this.projectId) {
|
||||||
|
this.$warning(this.$t('commons.check_project_tip'));
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
this.$refs.testCaseImport.open();
|
||||||
|
},
|
||||||
remove(nodeIds) {
|
remove(nodeIds) {
|
||||||
this.$post("/case/node/delete", nodeIds, () => {
|
this.$post("/case/node/delete", nodeIds, () => {
|
||||||
this.list();
|
this.list();
|
||||||
|
|
|
@ -145,6 +145,7 @@ export default {
|
||||||
auth_redirect_tip: 'Jump to the authentication source page for authentication',
|
auth_redirect_tip: 'Jump to the authentication source page for authentication',
|
||||||
tag_tip: "Enter Enter to Add Label",
|
tag_tip: "Enter Enter to Add Label",
|
||||||
node_name_tip: "The name cannot contain'\\'",
|
node_name_tip: "The name cannot contain'\\'",
|
||||||
|
more_operator: "More operator",
|
||||||
table: {
|
table: {
|
||||||
select_tip: "Item {0} data is selected"
|
select_tip: "Item {0} data is selected"
|
||||||
},
|
},
|
||||||
|
|
|
@ -146,6 +146,7 @@ export default {
|
||||||
auth_redirect_tip: '即将跳转到认证源页面进行认证',
|
auth_redirect_tip: '即将跳转到认证源页面进行认证',
|
||||||
tag_tip: "输入回车添加标签",
|
tag_tip: "输入回车添加标签",
|
||||||
node_name_tip: "名称不能包含'\\'",
|
node_name_tip: "名称不能包含'\\'",
|
||||||
|
more_operator: "更多操作",
|
||||||
table: {
|
table: {
|
||||||
select_tip: "已选中 {0} 条数据"
|
select_tip: "已选中 {0} 条数据"
|
||||||
},
|
},
|
||||||
|
|
|
@ -146,6 +146,7 @@ export default {
|
||||||
auth_redirect_tip: '即將跳轉到認證源頁面進行認證',
|
auth_redirect_tip: '即將跳轉到認證源頁面進行認證',
|
||||||
tag_tip: "輸入回車添加標簽",
|
tag_tip: "輸入回車添加標簽",
|
||||||
node_name_tip: "名稱不能包含'\\'",
|
node_name_tip: "名稱不能包含'\\'",
|
||||||
|
more_operator: "更多操作",
|
||||||
table: {
|
table: {
|
||||||
select_tip: "已选中 {0} 条数据"
|
select_tip: "已选中 {0} 条数据"
|
||||||
},
|
},
|
||||||
|
|
Loading…
Reference in New Issue