作者 朱兆平

批量添加路由

... ... @@ -5,10 +5,12 @@
<!-- 搜素区域 -->
<el-row>
<el-col :span="24" align="left">
<el-button type="warning" size="medium" icon="el-icon-search" @click="loadRouter" :loading="loadingStatus">
<el-button type="warning" size="medium" icon="el-icon-search" @click="loadRouter"
:loading="loadingStatus">
加载已配置消息
</el-button>
<el-button type="primary" size="medium" icon="el-icon-plus" @click="batchAddRouter" :loading="loadingStatus">
<el-button type="primary" size="medium" icon="el-icon-plus" @click="batchAddRouter"
:loading="loadingStatus">
生成路由
</el-button>
</el-col>
... ... @@ -16,98 +18,102 @@
<el-divider></el-divider>
<el-row>
<div style="border: 6px solid #6F8294;">
<el-row style="margin: -2px">
<el-col :span="6">
<el-row class="bt">
<span>选择消息发送者</span>
</el-row>
<el-row>
<el-tree
:data="sndr"
show-checkbox
node-key="username"
:props="userProps"
ref="sndrTree"
@check-change="treeSndrCheckChange"
<el-row style="margin: -2px">
<el-col :span="6">
<el-row class="bt">
<span>选择消息发送者</span>
</el-row>
<el-row>
<el-tree
:data="sndr"
show-checkbox
node-key="username"
:props="userProps"
ref="sndrTree"
@check-change="treeSndrCheckChange"
>
</el-tree>
</el-row>
</el-col>
<el-col :span="6" align="center">
<el-row class="bt">
<span>选择要发送的消息类型</span>
</el-row>
<el-row>
<el-tree
:data="message_type"
show-checkbox
node-key="name"
default-expand-all
check-strictly
:props="defaultProps"
highlight-current
ref="typeTree"
@check-change="treeTypeCheckChange"
>
</el-tree>
</el-row>
</el-col>
<el-col :span="6">
<el-row class="bt">
<span>选择消息接收者</span>
</el-row>
<el-row>
<el-tree
:data="rcvr"
show-checkbox
node-key="id"
:props="userProps"
ref="rcvrTree"
@check-change="treeRcvrCheckChange"
>
</el-tree>
</el-row>
</el-col>
<el-col :span="6">
<el-row class="bt">
<span>消息路由配置其他属性</span>
</el-row>
<el-row>
<el-form :inline="true" :model="params" class="demo-form-inline" align="center" style="border:3px solid #6F8294;height: 800px;padding-top: 15px">
<el-form-item label="路由状态:">
<el-select v-model="params.status" placeholder="请选择" style="width: 150px" size="mini">
<el-option
v-for="item in status_options"
:key="item.value"
:label="item.label"
:value="item.value">
<span style="float: left">{{ item.label }}</span>
<span style="float: right; color: #8492a6; font-size: 13px">{{ item.value }}</span>
</el-option>
</el-select>
</el-form-item>
<el-form-item label="路由用途:">
<el-select v-model="params.usage" placeholder="请选择" style="width: 150px" size="mini">
<el-option
v-for="item in usage_options"
:key="item.value"
:label="item.label"
:value="item.value">
<span style="float: left">{{ item.label }}</span>
<span style="float: right; color: #8492a6; font-size: 13px">{{ item.value }}</span>
</el-option>
</el-select>
</el-form-item>
<el-form-item label="路由描述:">
<el-input type="textarea" v-model="params.des" style="width: 150px" size="mini"></el-input>
</el-form-item>
</el-form>
>
</el-tree>
</el-row>
</el-col>
<el-col :span="6" align="center">
<el-row class="bt">
<span>选择要发送的消息类型</span>
</el-row>
<el-row>
<el-tree
:data="message_type"
show-checkbox
node-key="name"
default-expand-all
check-strictly
:props="defaultProps"
highlight-current
ref="typeTree"
@check-change="treeTypeCheckChange"
>
</el-tree>
</el-row>
</el-col>
<el-col :span="6">
<el-row class="bt">
<span>选择消息接收者</span>
</el-row>
<el-row>
<el-tree
:data="rcvr"
show-checkbox
node-key="id"
:props="queueProps"
ref="rcvrTree"
@check-change="treeRcvrCheckChange"
>
</el-tree>
</el-row>
</el-col>
<el-col :span="6">
<el-row class="bt">
<span>消息路由配置其他属性</span>
</el-row>
<el-row>
<el-form :inline="true" :model="params" class="demo-form-inline" align="center"
style="border:3px solid #6F8294;height: 800px;padding-top: 15px">
<el-form-item label="路由状态:">
<el-select v-model="params.status" placeholder="请选择" style="width: 150px"
size="mini">
<el-option
v-for="item in status_options"
:key="item.value"
:label="item.label"
:value="item.value">
<span style="float: left">{{ item.label }}</span>
<span style="float: right; color: #8492a6; font-size: 13px">{{ item.value }}</span>
</el-option>
</el-select>
</el-form-item>
<el-form-item label="路由用途:">
<el-select v-model="params.usage" placeholder="请选择" style="width: 150px"
size="mini">
<el-option
v-for="item in usage_options"
:key="item.value"
:label="item.label"
:value="item.value">
<span style="float: left">{{ item.label }}</span>
<span style="float: right; color: #8492a6; font-size: 13px">{{ item.value }}</span>
</el-option>
</el-select>
</el-form-item>
<el-form-item label="路由描述:">
<el-input type="textarea" v-model="params.des" style="width: 150px"
size="mini"></el-input>
</el-form-item>
</el-form>
</el-row>
</el-col>
</el-row>
</el-col>
</el-row>
</div>
</div>
</el-row>
</el-card>
</el-main>
... ... @@ -115,7 +121,8 @@
</template>
<script>
import { getAlltype,api_batchAddRouter,loadRouterBySndr } from "../../api/message_bus";
import {getAlltype, api_batchAddRouter, loadRouterBySndr, selectBusQueueList} from "../../api/message_bus";
export default {
name: "Configure",
... ... @@ -125,7 +132,7 @@
sndr: [],
rcvr: [],
api_back: [],
params:{
params: {
sndr: '',
sndrs: [],
types: [],
... ... @@ -135,38 +142,44 @@
des: "",
ver: "1.0"
},
status_options:[
status_options: [
{
label: "启用",
value: 1
},
{
label:"关闭",
label: "关闭",
value: 0
}
],
usage_options:[
usage_options: [
{
label: "生产用",
value: 1
},
{
label:"测试用",
label: "测试用",
value: 2
}
],
message_type: [],
defaultProps: {
children: 'children',
label: function (data,node) {
return '[' + data.name+ ']' + data.des;
label: function (data, node) {
return '[' + data.name + ']' + data.des;
},
disabled: 'disabled'
},
userProps: {
children: 'children',
label: function (data, node) {
return '('+data.username + ')' + data.des;
return '(' + data.username + ')' + data.des;
}
},
queueProps:{
children: 'children',
label: function (data, node) {
return '(' + data.queueName + ')' + data.description;
}
}
}
... ... @@ -174,12 +187,12 @@
methods: {
typeFilterNode(treeList) {
let _this = this;
if (Array.isArray(treeList)){
treeList.forEach(function(item,index){
if (item.type == 1 || item.type==2){
if (Array.isArray(treeList)) {
treeList.forEach(function (item, index) {
if (item.type == 1 || item.type == 2) {
item.disabled = true;
}
if (item.children !== undefined){
if (item.children !== undefined) {
_this.typeFilterNode(item.children);
}
})
... ... @@ -187,7 +200,7 @@
},
getAllType() {
let _this =this;
let _this = this;
_this.loadingStatus = true;
getAlltype().then((response) => {
let res = response.data;
... ... @@ -210,7 +223,7 @@
/**
* 访问用户服务,绑定用户列表,按组搜索
*/
getUserInfo(){
getUserInfo() {
let userResponse = [{
id: 1,
username: "zp260",
... ... @@ -220,14 +233,13 @@
username: "test04",
des: "测试用户2"
},
{
id: 3,
username: "zp2505",
des: "测试用户3"
}
{
id: 3,
username: "zp2505",
des: "测试用户3"
}
];
this.sndr = userResponse;
this.rcvr = userResponse;
},
treeSndrCheckChange(data, checked, indeterminate) {
if (checked) {
... ... @@ -238,15 +250,15 @@
},
treeRcvrCheckChange(data, checked, indeterminate) {
if (checked) {
this.params.rcvrs.push(data.username);
this.params.rcvrs.push(data.queueName);
} else {
this.params.rcvrs.splice(this.params.rcvrs.contains(data.username), 1);
this.params.rcvrs.splice(this.params.rcvrs.contains(data.queueName), 1);
}
},
treeTypeCheckChange(data, checked, indeterminate) {
let mt = {
name:'',
type:0
name: '',
type: 0
};
mt.name = data.name;
mt.type = data.type;
... ... @@ -257,10 +269,10 @@
}
console.log(this.params.types);
},
loadRouter(){
loadRouter() {
let _this = this;
this.loadingStatus = true;
if(this.params.sndrs.length !== 1){
if (this.params.sndrs.length !== 1) {
this.$confirm('请选择单个发送者', '错误', {
confirmButtonText: '确定',
type: 'error',
... ... @@ -268,9 +280,9 @@
}).then(() => {
_this.loadingStatus = false;
}).catch(() => {
_this.loadingStatus = false;
});
}else{
} else {
let pam = {
sndr: _this.params.sndrs[0]
};
... ... @@ -293,21 +305,22 @@
)
}
},
loadRouterHandle(){
if (Array.isArray(this.api_back) && this.api_back.length>0){
loadRouterHandle() {
if (Array.isArray(this.api_back) && this.api_back.length > 0) {
let typeList = [];
this.api_back.forEach(function(routerItem,index){
typeList.push({name:routerItem.stype});
this.api_back.forEach(function (routerItem, index) {
typeList.push({name: routerItem.stype});
});
this.typeTreeSet(typeList);
}
},
typeTreeSet(typeList){
typeTreeSet(typeList) {
this.$refs.typeTree.setCheckedNodes(typeList);
},
batchAddRouter() {
let _this = this;
_this.loadingStatus = true;
//todo: 生产者列表,消费者列表,及路由类型判空后再访问接口
api_batchAddRouter(this.params).then(response => {
let res = response.data;
console.log(res)
... ... @@ -331,11 +344,33 @@
this.$refs.sndrTree.setCheckedKeys([]);
this.$refs.typeTree.setCheckedKeys([]);
this.$refs.rcvrTree.setCheckedKeys([]);
},
queue_getList() {
let queue_queryInfo = {
// 当前页数
pageNum: 1,
// 每页条数
pageSize: 100000
};
selectBusQueueList(queue_queryInfo).then((response) => {
let res = response.data;
if (res.code !== '200') {
// 关闭加载
return this.$message.error(res.msg);
}
// 获取列表数据
this.rcvr = res.data.list;
this.$message.success(res.msg);
}).catch(error => {
// 关闭加载
this.$message.error(error.toString());
});
}
},
mounted() {
this.getAllType();
this.getUserInfo();
this.queue_getList();
}
}
... ... @@ -348,14 +383,17 @@
color: #ffffff;
text-align: center
}
.el-col {
margin-right: 0px;
}
.el-tree {
padding-top: 15px;
border:3px solid #6F8294;
border: 3px solid #6F8294;
height: 800px
}
.el-row .el-col .el-row {
margin-top: 0px;
}
... ...