This commit is contained in:
chenjianxing 2021-02-01 18:51:26 +08:00
commit b136576c40
12 changed files with 706 additions and 509 deletions

View File

@ -33,4 +33,6 @@ public class ApiBatchRequest extends ApiDefinitionWithBLOBs {
private List<String> unSelectIds; private List<String> unSelectIds;
private String moduleId;
} }

View File

@ -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;

View File

@ -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());
});
} }
}); });
} }

View File

@ -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';
}, },

View File

@ -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>

View File

@ -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);
} }

View File

@ -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'

View File

@ -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'

View File

@ -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",

View File

@ -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: "报文模版",

View File

@ -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: "報文模版",