+
@@ -161,4 +168,8 @@
.el-autocomplete {
width: 100%;
}
+
+ i:hover {
+ color: #783887;
+ }
diff --git a/frontend/src/business/components/api/definition/components/ApiVariable.vue b/frontend/src/business/components/api/definition/components/ApiVariable.vue
index d5f1a133c9..b8f5830e7e 100644
--- a/frontend/src/business/components/api/definition/components/ApiVariable.vue
+++ b/frontend/src/business/components/api/definition/components/ApiVariable.vue
@@ -3,85 +3,83 @@
{{ description }}
-
-
@@ -94,11 +92,11 @@
import MsApiVariableAdvance from "./ApiVariableAdvance";
import MsApiBodyFileUpload from "./body/ApiBodyFileUpload";
import {REQUIRED} from "../model/JsonData";
- import MsDraggable from 'vuedraggable'
+ import Vue from 'vue';
export default {
name: "MsApiVariable",
- components: {MsApiBodyFileUpload, MsApiVariableAdvance, MsDraggable},
+ components: {MsApiBodyFileUpload, MsApiVariableAdvance},
props: {
keyPlaceholder: String,
valuePlaceholder: String,
@@ -125,7 +123,6 @@
return {
currentItem: null,
requireds: REQUIRED,
- keyValues: [],
}
},
computed: {
@@ -137,6 +134,25 @@
}
},
methods: {
+ moveBottom(index) {
+ if (this.parameters.length < 2 || index === this.parameters.length - 2) {
+ return;
+ }
+ let thisRow = this.parameters[index];
+ let nextRow = this.parameters[index + 1];
+ Vue.set(this.parameters, index + 1, thisRow);
+ Vue.set(this.parameters, index, nextRow)
+ },
+ moveTop(index) {
+ if (index === 0) {
+ return;
+ }
+ let thisRow = this.parameters[index];
+ let lastRow = this.parameters[index - 1];
+ Vue.set(this.parameters, index - 1, thisRow);
+ Vue.set(this.parameters, index, lastRow)
+
+ },
remove: function (index) {
// 移除整行输入控件及内容
this.parameters.splice(index, 1);
@@ -204,21 +220,6 @@
item.contentType = 'text/plain';
}
},
- endChange(env) {
- if (env.newIndex == env.oldIndex) {
- return;
- }
- let newItem = this.keyValues[env.newIndex];
- let oldItem = this.keyValues[env.oldIndex];
- this.$set(this.keyValues, env.oldIndex, oldItem);
- this.$set(this.keyValues, env.newIndex, newItem)
- this.parameters.forEach(item => {
- this.parameters.splice(0);
- })
- this.keyValues.forEach(item => {
- this.parameters.push(item);
- })
- }
},
created() {
if (this.parameters.length === 0 || this.parameters[this.parameters.length - 1].name) {
@@ -230,7 +231,6 @@
contentType: 'text/plain'
}));
}
- this.keyValues = this.parameters;
}
}
diff --git a/frontend/src/business/components/api/definition/components/case/ApiCaseItem.vue b/frontend/src/business/components/api/definition/components/case/ApiCaseItem.vue
index e1cfe6c7e5..2d6a40ffbe 100644
--- a/frontend/src/business/components/api/definition/components/case/ApiCaseItem.vue
+++ b/frontend/src/business/components/api/definition/components/case/ApiCaseItem.vue
@@ -85,7 +85,7 @@
{{ $t('api_test.definition.request.req_param') }}
-
+
diff --git a/frontend/src/business/components/api/definition/components/debug/DebugHttpPage.vue b/frontend/src/business/components/api/definition/components/debug/DebugHttpPage.vue
index 10b5287bec..7bef849ff2 100644
--- a/frontend/src/business/components/api/definition/components/debug/DebugHttpPage.vue
+++ b/frontend/src/business/components/api/definition/components/debug/DebugHttpPage.vue
@@ -26,7 +26,7 @@
{{$t('api_test.definition.request.req_param')}}
-
+
{{$t('api_test.definition.request.res_param')}}
diff --git a/frontend/src/business/components/api/definition/components/environment/EnvironmentHttpConfig.vue b/frontend/src/business/components/api/definition/components/environment/EnvironmentHttpConfig.vue
index 91b4d256f9..6f98ce26ac 100644
--- a/frontend/src/business/components/api/definition/components/environment/EnvironmentHttpConfig.vue
+++ b/frontend/src/business/components/api/definition/components/environment/EnvironmentHttpConfig.vue
@@ -49,8 +49,13 @@
},
methods: {
validateSocket(socket) {
- // if (!socket) return true;
- if (socket !== ''){
+ if (!socket) {
+ this.httpConfig.domain = socket;
+ this.httpConfig.port = '';
+ this.httpConfig.socket = socket;
+ return true;
+ }
+
let urlStr = this.httpConfig.protocol + '://' + socket;
let url = {};
try {
@@ -67,13 +72,6 @@
this.httpConfig.socket = this.httpConfig.domain + path;
}
return true;
- }else {
- this.httpConfig.domain = socket;
- this.httpConfig.port = '';
- this.httpConfig.socket = socket;
- return true;
- }
-
},
validate() {
let isValidate = false;
diff --git a/frontend/src/business/components/api/definition/components/list/ApiList.vue b/frontend/src/business/components/api/definition/components/list/ApiList.vue
index 429e4aaee0..fed69a9dc9 100644
--- a/frontend/src/business/components/api/definition/components/list/ApiList.vue
+++ b/frontend/src/business/components/api/definition/components/list/ApiList.vue
@@ -317,6 +317,15 @@
case 'coverage':
this.condition.apiCaseCoverage = 'coverage';
break;
+ case 'Prepare':
+ this.condition.filters.status = [this.selectDataRange];
+ break;
+ case 'Completed':
+ this.condition.filters.status = [this.selectDataRange];
+ break;
+ case 'Underway':
+ this.condition.filters.status = [this.selectDataRange];
+ break;
}
if (this.condition.projectId) {
this.result = this.$post("/api/definition/list/" + this.currentPage + "/" + this.pageSize, this.condition, response => {
diff --git a/frontend/src/business/components/api/definition/components/list/ApiStatus.vue b/frontend/src/business/components/api/definition/components/list/ApiStatus.vue
index 5b5cfe132d..5e039365b5 100644
--- a/frontend/src/business/components/api/definition/components/list/ApiStatus.vue
+++ b/frontend/src/business/components/api/definition/components/list/ApiStatus.vue
@@ -3,7 +3,7 @@
-
+
diff --git a/frontend/src/business/components/api/definition/components/runtest/RunTestHTTPPage.vue b/frontend/src/business/components/api/definition/components/runtest/RunTestHTTPPage.vue
index 363ad44b8c..3104935d8a 100644
--- a/frontend/src/business/components/api/definition/components/runtest/RunTestHTTPPage.vue
+++ b/frontend/src/business/components/api/definition/components/runtest/RunTestHTTPPage.vue
@@ -43,7 +43,7 @@
{{$t('api_test.definition.request.req_param')}}
-
+
diff --git a/frontend/src/business/components/api/definition/model/ApiTestModel.js b/frontend/src/business/components/api/definition/model/ApiTestModel.js
index 236c002008..8136994191 100644
--- a/frontend/src/business/components/api/definition/model/ApiTestModel.js
+++ b/frontend/src/business/components/api/definition/model/ApiTestModel.js
@@ -1024,9 +1024,9 @@ export class LoopController extends Controller {
this.type = "LoopController";
this.active = false;
this.loopType = "LOOP_COUNT";
- this.countController = {loops: 0, interval: 0, proceed: true};
- this.forEachController = {inputVal: "", returnVal: "", interval: 0};
- this.whileController = {variable: "", operator: "", value: "", timeout: 0};
+ this.countController = {loops: 0, interval: 0, proceed: true, requestResult: {}};
+ this.forEachController = {inputVal: "", returnVal: "", interval: 0, requestResult: {}};
+ this.whileController = {variable: "", operator: "", value: "", timeout: 0, requestResult: {}};
this.hashTree = [];
this.set(options);
}
diff --git a/frontend/src/business/components/api/definition/model/EnvironmentModel.js b/frontend/src/business/components/api/definition/model/EnvironmentModel.js
index 2be5d57666..0462553e13 100644
--- a/frontend/src/business/components/api/definition/model/EnvironmentModel.js
+++ b/frontend/src/business/components/api/definition/model/EnvironmentModel.js
@@ -64,11 +64,11 @@ export class HttpConfig extends BaseConfig {
constructor(options = {}) {
super();
- this.socket = undefined;
- this.domain = undefined;
+ this.socket = '';
+ this.domain = '';
this.headers = [];
this.protocol = 'https';
- this.port = undefined;
+ this.port = '';
this.set(options);
this.sets({headers: KeyValue}, options);
diff --git a/frontend/src/business/components/api/test/components/processor/Jsr233Processor.vue b/frontend/src/business/components/api/test/components/processor/Jsr233Processor.vue
index fd86a3a750..7cd6c957b0 100644
--- a/frontend/src/business/components/api/test/components/processor/Jsr233Processor.vue
+++ b/frontend/src/business/components/api/test/components/processor/Jsr233Processor.vue
@@ -93,11 +93,13 @@ export default {
],
isCodeEditAlive: true,
languages: [
- 'beanshell', "python"
+ 'beanshell', "python", "groovy", "javascript"
],
codeEditModeMap: {
beanshell: 'java',
- python: 'python'
+ python: 'python',
+ groovy: 'java',
+ javascript: 'javascript',
}
}
},
diff --git a/frontend/src/business/components/api/test/components/request/ApiDubboRequestForm.vue b/frontend/src/business/components/api/test/components/request/ApiDubboRequestForm.vue
index eda7204d61..9cc19b2f99 100644
--- a/frontend/src/business/components/api/test/components/request/ApiDubboRequestForm.vue
+++ b/frontend/src/business/components/api/test/components/request/ApiDubboRequestForm.vue
@@ -65,7 +65,7 @@
import MsDubboRegistryCenter from "@/business/components/api/test/components/request/dubbo/RegistryCenter";
import MsDubboConfigCenter from "@/business/components/api/test/components/request/dubbo/ConfigCenter";
import MsDubboConsumerService from "@/business/components/api/test/components/request/dubbo/ConsumerAndService";
- import MsJsr233Processor from "../../../automation/scenario/component/Jsr233Processor";
+ import MsJsr233Processor from "../processor/Jsr233Processor";
export default {
name: "MsApiDubboRequestForm",
diff --git a/frontend/src/business/components/api/test/components/request/ApiHttpRequestForm.vue b/frontend/src/business/components/api/test/components/request/ApiHttpRequestForm.vue
index 989cf34dfe..be5323ec39 100644
--- a/frontend/src/business/components/api/test/components/request/ApiHttpRequestForm.vue
+++ b/frontend/src/business/components/api/test/components/request/ApiHttpRequestForm.vue
@@ -94,7 +94,7 @@ import ApiRequestMethodSelect from "../collapse/ApiRequestMethodSelect";
import {REQUEST_HEADERS} from "@/common/js/constants";
import MsApiVariable from "@/business/components/api/test/components/ApiVariable";
import MsApiAdvancedConfig from "../ApiAdvancedConfig";
-import MsJsr233Processor from "../../../automation/scenario/component/Jsr233Processor";
+import MsJsr233Processor from "../processor/Jsr233Processor";
export default {
name: "MsApiHttpRequestForm",
diff --git a/frontend/src/business/components/api/test/components/request/ApiSqlRequestForm.vue b/frontend/src/business/components/api/test/components/request/ApiSqlRequestForm.vue
index 32a7d9574f..d0f23d63b0 100644
--- a/frontend/src/business/components/api/test/components/request/ApiSqlRequestForm.vue
+++ b/frontend/src/business/components/api/test/components/request/ApiSqlRequestForm.vue
@@ -78,7 +78,7 @@
import MsDubboConsumerService from "@/business/components/api/test/components/request/dubbo/ConsumerAndService";
import MsCodeEdit from "../../../../common/components/MsCodeEdit";
import MsApiScenarioVariables from "../ApiScenarioVariables";
- import MsJsr233Processor from "../../../automation/scenario/component/Jsr233Processor";
+ import MsJsr233Processor from "../processor/Jsr233Processor";
export default {
name: "MsApiSqlRequestForm",
diff --git a/frontend/src/business/components/api/test/components/request/ApiTcpRequestForm.vue b/frontend/src/business/components/api/test/components/request/ApiTcpRequestForm.vue
index e2b43d9901..c46815d06c 100644
--- a/frontend/src/business/components/api/test/components/request/ApiTcpRequestForm.vue
+++ b/frontend/src/business/components/api/test/components/request/ApiTcpRequestForm.vue
@@ -120,7 +120,7 @@ import {Scenario, TCPConfig, TCPRequest} from "@/business/components/api/test/mo
import MsApiAssertions from "@/business/components/api/test/components/assertion/ApiAssertions";
import MsApiExtract from "@/business/components/api/test/components/extract/ApiExtract";
import MsCodeEdit from "@/business/components/common/components/MsCodeEdit";
-import MsJsr233Processor from "../../../automation/scenario/component/Jsr233Processor";
+import MsJsr233Processor from "../processor/Jsr233Processor";
export default {
name: "MsApiTcpRequestForm",
diff --git a/frontend/src/business/components/track/case/components/TestCaseEdit.vue b/frontend/src/business/components/track/case/components/TestCaseEdit.vue
index e98c8ff9c1..b517936329 100644
--- a/frontend/src/business/components/track/case/components/TestCaseEdit.vue
+++ b/frontend/src/business/components/track/case/components/TestCaseEdit.vue
@@ -9,7 +9,9 @@
- {{operationType == 'edit' ? ( readOnly ? $t('test_track.case.view_case') : $t('test_track.case.edit_case')) : $t('test_track.case.create')}}
+ {{
+ operationType == 'edit' ? (readOnly ? $t('test_track.case.view_case') : $t('test_track.case.edit_case')) : $t('test_track.case.create')
+ }}
@@ -82,7 +84,7 @@
-
+
@@ -318,6 +320,7 @@ export default {
result: ''
}],
remark: '',
+ tags: [],
},
moduleOptions: [],
maintainerOptions: [],
@@ -350,7 +353,8 @@ export default {
],
testCase: {},
testCases: [],
- index: 0
+ index: 0,
+ showInputTag: true,
};
},
props: {
@@ -416,6 +420,7 @@ export default {
this.form.type = 'functional';
this.form.method = 'manual';
this.form.maintainer = user.id;
+ this.form.tags = [];
this.getSelectOptions();
this.reload();
}
@@ -441,6 +446,7 @@ export default {
});
},
getTestCase(index) {
+ this.showInputTag = false;
let testCase = this.testCases[index];
this.result = this.$get('/test/case/get/' + testCase.id, response => {
let testCase = response.data;
@@ -448,6 +454,9 @@ export default {
this.setTestCaseExtInfo(testCase);
this.getSelectOptions();
this.reload();
+ this.$nextTick(() => {
+ this.showInputTag = true
+ })
})
},
setFormData(testCase) {
@@ -459,7 +468,7 @@ export default {
this.form.module = testCase.nodeId;
this.getFileMetaData(testCase);
},
- setTestCaseExtInfo (testCase) {
+ setTestCaseExtInfo(testCase) {
this.testCase = {};
if (testCase) {
// 复制 不查询评论
diff --git a/frontend/src/business/components/track/common/NodeTree.vue b/frontend/src/business/components/track/common/NodeTree.vue
index 4100d799e8..5bc8e3c02e 100644
--- a/frontend/src/business/components/track/common/NodeTree.vue
+++ b/frontend/src/business/components/track/common/NodeTree.vue
@@ -137,12 +137,6 @@ export default {
return false;
},
filter(val) {
- if (!val) {
- val = this.filterText;
- } else {
- // 记录condition 的 filterText
- this.filterText = val;
- }
this.$nextTick(() => {
this.$refs.tree.filter(val);
});
diff --git a/frontend/src/business/components/track/common/tableItems/plan/PlanStatusTableItem.vue b/frontend/src/business/components/track/common/tableItems/plan/PlanStatusTableItem.vue
index 0721190c41..786cb030cc 100644
--- a/frontend/src/business/components/track/common/tableItems/plan/PlanStatusTableItem.vue
+++ b/frontend/src/business/components/track/common/tableItems/plan/PlanStatusTableItem.vue
@@ -3,12 +3,14 @@
+