Merge branch 'v1.7' of https://github.com/metersphere/metersphere into v1.7
This commit is contained in:
commit
b136576c40
|
@ -33,4 +33,6 @@ public class ApiBatchRequest extends ApiDefinitionWithBLOBs {
|
||||||
|
|
||||||
private List<String> unSelectIds;
|
private List<String> unSelectIds;
|
||||||
|
|
||||||
|
private String moduleId;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -42,10 +42,10 @@ public class MsIfController extends MsTestElement {
|
||||||
private IfController ifController() {
|
private IfController ifController() {
|
||||||
IfController ifController = new IfController();
|
IfController ifController = new IfController();
|
||||||
ifController.setEnabled(true);
|
ifController.setEnabled(true);
|
||||||
ifController.setName(this.getLabelName());
|
ifController.setName(StringUtils.isEmpty(this.getName()) ? "IfController" : this.getName());
|
||||||
ifController.setCondition(this.getCondition());
|
|
||||||
ifController.setProperty(TestElement.TEST_CLASS, IfController.class.getName());
|
ifController.setProperty(TestElement.TEST_CLASS, IfController.class.getName());
|
||||||
ifController.setProperty(TestElement.GUI_CLASS, SaveService.aliasToClass("IfControllerPanel"));
|
ifController.setProperty(TestElement.GUI_CLASS, SaveService.aliasToClass("IfControllerPanel"));
|
||||||
|
ifController.setCondition(this.getCondition());
|
||||||
ifController.setEvaluateAll(false);
|
ifController.setEvaluateAll(false);
|
||||||
ifController.setUseExpression(true);
|
ifController.setUseExpression(true);
|
||||||
return ifController;
|
return ifController;
|
||||||
|
|
|
@ -60,6 +60,18 @@ public class TestResult {
|
||||||
item.getSubRequestResults().forEach(subItem -> {
|
item.getSubRequestResults().forEach(subItem -> {
|
||||||
subItem.setName(item.getName());
|
subItem.setName(item.getName());
|
||||||
});
|
});
|
||||||
|
} else {
|
||||||
|
if (requestResultMap.containsKey(result.getName())) {
|
||||||
|
requestResultMap.get(result.getName()).add(item);
|
||||||
|
} else {
|
||||||
|
List<RequestResult> requestResults = new LinkedList<>();
|
||||||
|
requestResults.add(item);
|
||||||
|
requestResultMap.put(result.getName(), requestResults);
|
||||||
|
}
|
||||||
|
item.getSubRequestResults().forEach(subItem -> {
|
||||||
|
subItem.setName(item.getName());
|
||||||
|
});
|
||||||
|
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,4 +1,5 @@
|
||||||
<template>
|
<template>
|
||||||
|
<div>
|
||||||
<ms-container v-if="renderComponent">
|
<ms-container v-if="renderComponent">
|
||||||
<ms-aside-container>
|
<ms-aside-container>
|
||||||
<ms-api-module
|
<ms-api-module
|
||||||
|
@ -9,6 +10,7 @@
|
||||||
@debug="debug"
|
@debug="debug"
|
||||||
@saveAsEdit="editApi"
|
@saveAsEdit="editApi"
|
||||||
@setModuleOptions="setModuleOptions"
|
@setModuleOptions="setModuleOptions"
|
||||||
|
@setNodeTree="setNodeTree"
|
||||||
@enableTrash="enableTrash"
|
@enableTrash="enableTrash"
|
||||||
:type="'edit'"
|
:type="'edit'"
|
||||||
ref="nodeTree"/>
|
ref="nodeTree"/>
|
||||||
|
@ -25,6 +27,8 @@
|
||||||
<!-- 列表集合 -->
|
<!-- 列表集合 -->
|
||||||
<ms-api-list
|
<ms-api-list
|
||||||
v-if="item.type === 'list' && isApiListEnable"
|
v-if="item.type === 'list' && isApiListEnable"
|
||||||
|
:module-tree="nodeTree"
|
||||||
|
:module-options="moduleOptions"
|
||||||
:current-protocol="currentProtocol"
|
:current-protocol="currentProtocol"
|
||||||
:visible="visible"
|
:visible="visible"
|
||||||
:currentRow="currentRow"
|
:currentRow="currentRow"
|
||||||
|
@ -102,8 +106,12 @@
|
||||||
</template>
|
</template>
|
||||||
</el-tab-pane>
|
</el-tab-pane>
|
||||||
</el-tabs>
|
</el-tabs>
|
||||||
|
|
||||||
|
|
||||||
</ms-main-container>
|
</ms-main-container>
|
||||||
</ms-container>
|
</ms-container>
|
||||||
|
|
||||||
|
</div>
|
||||||
</template>
|
</template>
|
||||||
<script>
|
<script>
|
||||||
import MsApiList from './components/list/ApiList';
|
import MsApiList from './components/list/ApiList';
|
||||||
|
@ -177,7 +185,7 @@
|
||||||
currentModule: null,
|
currentModule: null,
|
||||||
selectNodeIds: [],
|
selectNodeIds: [],
|
||||||
currentApi: {},
|
currentApi: {},
|
||||||
moduleOptions: {},
|
moduleOptions: [],
|
||||||
trashEnable: false,
|
trashEnable: false,
|
||||||
apiTabs: [{
|
apiTabs: [{
|
||||||
title: this.$t('api_test.definition.api_title'),
|
title: this.$t('api_test.definition.api_title'),
|
||||||
|
@ -187,7 +195,8 @@
|
||||||
}],
|
}],
|
||||||
isApiListEnable: true,
|
isApiListEnable: true,
|
||||||
syncTabs: [],
|
syncTabs: [],
|
||||||
projectId: ""
|
projectId: "",
|
||||||
|
nodeTree: []
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
mounted() {
|
mounted() {
|
||||||
|
@ -215,6 +224,7 @@
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
|
|
||||||
changeRedirectParam(redirectIDParam) {
|
changeRedirectParam(redirectIDParam) {
|
||||||
this.redirectID = redirectIDParam;
|
this.redirectID = redirectIDParam;
|
||||||
},
|
},
|
||||||
|
@ -394,6 +404,10 @@
|
||||||
setModuleOptions(data) {
|
setModuleOptions(data) {
|
||||||
this.moduleOptions = data;
|
this.moduleOptions = data;
|
||||||
},
|
},
|
||||||
|
setNodeTree(data) {
|
||||||
|
this.nodeTree = data;
|
||||||
|
console.log( this.nodeTree)
|
||||||
|
},
|
||||||
changeSelectDataRangeAll(tableType) {
|
changeSelectDataRangeAll(tableType) {
|
||||||
this.$route.params.dataSelectRange = 'all';
|
this.$route.params.dataSelectRange = 'all';
|
||||||
},
|
},
|
||||||
|
|
|
@ -0,0 +1,127 @@
|
||||||
|
<template>
|
||||||
|
<div v-if="dialogVisible" class="batch-move" v-loading="result.loading">
|
||||||
|
<el-dialog :title="this.$t('test_track.case.select_catalog')"
|
||||||
|
:visible.sync="dialogVisible"
|
||||||
|
:before-close="close"
|
||||||
|
:destroy-on-close="true"
|
||||||
|
width="20%"
|
||||||
|
>
|
||||||
|
<div>
|
||||||
|
<el-input :placeholder="$t('test_track.module.search')" v-model="filterText" size="small"/>
|
||||||
|
<el-tree
|
||||||
|
class="filter-tree node-tree"
|
||||||
|
:data="treeNodes"
|
||||||
|
node-key="id"
|
||||||
|
:filter-node-method="filterNode"
|
||||||
|
:expand-on-click-node="false"
|
||||||
|
highlight-current
|
||||||
|
style="overflow: auto"
|
||||||
|
@node-click="nodeClick"
|
||||||
|
ref="tree"
|
||||||
|
>
|
||||||
|
<template v-slot:default="{node}">
|
||||||
|
<span>
|
||||||
|
<span class="node-icon">
|
||||||
|
<i class="el-icon-folder"/>
|
||||||
|
</span>
|
||||||
|
<span class="node-title">{{node.label}}</span>
|
||||||
|
</span>
|
||||||
|
</template>
|
||||||
|
</el-tree>
|
||||||
|
</div>
|
||||||
|
<template v-slot:footer>
|
||||||
|
<ms-dialog-footer
|
||||||
|
@cancel="close"
|
||||||
|
@confirm="save"/>
|
||||||
|
</template>
|
||||||
|
</el-dialog>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
|
||||||
|
import MsDialogFooter from "@/business/components/common/components/MsDialogFooter";
|
||||||
|
export default {
|
||||||
|
name: "CaseBatchMove",
|
||||||
|
components: {
|
||||||
|
MsDialogFooter
|
||||||
|
|
||||||
|
},
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
treeNodes: [],
|
||||||
|
selectIds: [],
|
||||||
|
selectNode: {},
|
||||||
|
dialogVisible: false,
|
||||||
|
currentKey: "",
|
||||||
|
moduleOptions: [],
|
||||||
|
filterText: "",
|
||||||
|
result: {},
|
||||||
|
}
|
||||||
|
},
|
||||||
|
watch: {
|
||||||
|
filterText(val) {
|
||||||
|
this.$refs.tree.filter(val);
|
||||||
|
console.log( this.treeNodes)
|
||||||
|
}
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
open(treeNodes, selectIds, moduleOptions) {
|
||||||
|
|
||||||
|
this.dialogVisible = true;
|
||||||
|
this.treeNodes = treeNodes;
|
||||||
|
this.selectIds = selectIds;
|
||||||
|
this.moduleOptions = moduleOptions;
|
||||||
|
|
||||||
|
},
|
||||||
|
save() {
|
||||||
|
if (!this.currentKey) {
|
||||||
|
this.$warning(this.$t('test_track.case.input_module'));
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
let param = {};
|
||||||
|
param.nodeId = this.currentKey;
|
||||||
|
if (this.moduleOptions) {
|
||||||
|
this.moduleOptions.forEach(item => {
|
||||||
|
if (item.id === this.currentKey) {
|
||||||
|
param.nodePath = item.path;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
param.ids = this.selectIds;
|
||||||
|
this.$emit('moveSave', param);
|
||||||
|
},
|
||||||
|
refresh() {
|
||||||
|
this.$emit("refresh");
|
||||||
|
},
|
||||||
|
close() {
|
||||||
|
this.filterText = "";
|
||||||
|
this.dialogVisible = false;
|
||||||
|
this.selectNode = {};
|
||||||
|
},
|
||||||
|
filterNode(value, data) {
|
||||||
|
if (!value) return true;
|
||||||
|
return data.label.indexOf(value) !== -1;
|
||||||
|
},
|
||||||
|
nodeClick() {
|
||||||
|
this.currentKey = this.$refs.tree.getCurrentKey();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style scoped>
|
||||||
|
.node-title {
|
||||||
|
width: 0;
|
||||||
|
text-overflow: ellipsis;
|
||||||
|
white-space: nowrap;
|
||||||
|
flex: 1 1 auto;
|
||||||
|
padding: 0 5px;
|
||||||
|
overflow: hidden;
|
||||||
|
}
|
||||||
|
|
||||||
|
.batch-move {
|
||||||
|
height: 500px;
|
||||||
|
}
|
||||||
|
|
||||||
|
</style>
|
File diff suppressed because it is too large
Load Diff
|
@ -126,6 +126,7 @@
|
||||||
buildNodePath(node, {path: ''}, moduleOptions);
|
buildNodePath(node, {path: ''}, moduleOptions);
|
||||||
});
|
});
|
||||||
this.$emit('setModuleOptions', moduleOptions);
|
this.$emit('setModuleOptions', moduleOptions);
|
||||||
|
this.$emit('setNodeTree', this.data);
|
||||||
if (this.$refs.nodeTree) {
|
if (this.$refs.nodeTree) {
|
||||||
this.$refs.nodeTree.filter(this.condition.filterText);
|
this.$refs.nodeTree.filter(this.condition.filterText);
|
||||||
}
|
}
|
||||||
|
|
|
@ -114,9 +114,7 @@ export default {
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
phone: [
|
phone: [
|
||||||
{required: true, message: this.$t('user.input_phone'), trigger: 'blur'},
|
|
||||||
{
|
{
|
||||||
required: false,
|
|
||||||
pattern: PHONE_REGEX,
|
pattern: PHONE_REGEX,
|
||||||
message: this.$t('member.mobile_number_format_is_incorrect'),
|
message: this.$t('member.mobile_number_format_is_incorrect'),
|
||||||
trigger: 'blur'
|
trigger: 'blur'
|
||||||
|
|
|
@ -399,9 +399,7 @@ export default {
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
phone: [
|
phone: [
|
||||||
{required: true, message: this.$t('user.input_phone'), trigger: 'blur'},
|
|
||||||
{
|
{
|
||||||
required: true,
|
|
||||||
pattern: PHONE_REGEX,
|
pattern: PHONE_REGEX,
|
||||||
message: this.$t('user.mobile_number_format_is_incorrect'),
|
message: this.$t('user.mobile_number_format_is_incorrect'),
|
||||||
trigger: 'blur'
|
trigger: 'blur'
|
||||||
|
|
|
@ -583,6 +583,7 @@ export default {
|
||||||
create_info: 'Create',
|
create_info: 'Create',
|
||||||
update_info: 'Update',
|
update_info: 'Update',
|
||||||
batch_edit: "Batch edit",
|
batch_edit: "Batch edit",
|
||||||
|
batch_move:"Batch move",
|
||||||
path_valid_info: "The request path is invalid",
|
path_valid_info: "The request path is invalid",
|
||||||
other_config: "Other Config",
|
other_config: "Other Config",
|
||||||
message_template: "Message Template",
|
message_template: "Message Template",
|
||||||
|
|
|
@ -584,6 +584,7 @@ export default {
|
||||||
create_info: '创建',
|
create_info: '创建',
|
||||||
update_info: '更新',
|
update_info: '更新',
|
||||||
batch_edit: "批量编辑",
|
batch_edit: "批量编辑",
|
||||||
|
batch_move:"批量移动",
|
||||||
path_valid_info: "请求路径无效",
|
path_valid_info: "请求路径无效",
|
||||||
other_config: "其他设置",
|
other_config: "其他设置",
|
||||||
message_template: "报文模版",
|
message_template: "报文模版",
|
||||||
|
|
|
@ -583,6 +583,7 @@ export default {
|
||||||
create_info: '創建',
|
create_info: '創建',
|
||||||
update_info: '更新',
|
update_info: '更新',
|
||||||
batch_edit: "批量編輯",
|
batch_edit: "批量編輯",
|
||||||
|
batch_move:"批量移動",
|
||||||
path_valid_info: "請求路徑無效",
|
path_valid_info: "請求路徑無效",
|
||||||
other_config: "其他設置",
|
other_config: "其他設置",
|
||||||
message_template: "報文模版",
|
message_template: "報文模版",
|
||||||
|
|
Loading…
Reference in New Issue