RouterManage.vue 13.5 KB
<template>
    <el-container>
        <el-main>
            <el-card style="background-color: #F5F7FA">
                <!-- 搜素区域 -->
                    <el-row>
                        <el-col :span="5">
                            <el-input v-model="umb_queryInfo.sndr"
                                      size="medium"
                                      placeholder="帐户名称" clearable>
                                <template  slot="prepend" ><i class="el-icon-user"></i>帐户名称</template>
                            </el-input>
                        </el-col>
                        <el-col :span="5">
                            <el-input v-model="umb_queryInfo.btype"
                                      size="medium"
                                      placeholder="消息大类" clearable>
                                <template  slot="prepend"><i class="el-icon-s-platform"></i>消息大类</template>
                            </el-input>
                        </el-col>
                        <el-col :span="5">
                            <el-input v-model="umb_queryInfo.stype"
                                      size="medium"
                                      placeholder="消息子类" clearable>
                                <template  slot="prepend"><i class="el-icon-s-operation"></i>消息子类</template>
                            </el-input>
                        </el-col>
                        <el-col :span="5">
                            <el-button type="warning" size="medium" icon="el-icon-search" @click="queryRouterList">
                                查询
                            </el-button>
                            <el-button type="primary" size="medium" icon="el-icon-plus" @click="dialogFormVisible = true">
                                添加
                            </el-button>
                        </el-col>
                    </el-row>
                    <el-row>
                        <el-col :span="24">
                            <el-table
                                    :data="umb_queryData.tableData"
                                    border size="small"
                                    :header-cell-style="{background:'#6F8294',color:'#FFFFFF'}"
                                    style="border-radius: 10px 10px 0px 0px;line-height: 25px;">
                                <el-table-column
                                        prop="sndr"
                                        label="帐户名称"
                                        width="150"
                                        align="center"
                                >
                                </el-table-column>
                                <el-table-column
                                        prop="btype"
                                        label="消息大类"
                                        width="120"
                                        align="center"
                                >
                                </el-table-column>
                                <el-table-column
                                        prop="stype"
                                        label="消息子类"
                                        width="120"
                                        align="center"
                                >
                                </el-table-column>
                                <el-table-column
                                        prop="rcvr_topic"
                                        label="订阅者"
                                        width="250"
                                        align="center"
                                >
                                    <template slot-scope="scope">
                                        <div v-for="reciver in scope.row.rcvrList" v-bind:key="reciver.id">
                                            {{reciver.rcvrTopic}}<!--,{{reciver.filterList.filter}}-->
                                            <el-button type="text" size="mini" @click="addReceiverFiletery(reciver.id)">增加过滤</el-button>
                                            <!-- <div v-for="filters in reciver.filterList">{{filters.filter}}</div>-->
                                        </div>
                                    </template>
                                </el-table-column>
                                <el-table-column
                                        prop="filter"
                                        label="过滤规则"
                                        width="450"
                                        align="center"
                                >
                                    <template slot-scope="scope">
                                        <div v-for="reciver in scope.row.rcvrList">
                                            <!-- {{reciver.rcvrTopic}},{{reciver.filterList.filter}}-->
                                            <div v-for="filters in reciver.filterList">[{{reciver.rcvrTopic}}]:{{filters.filter}}</div>
                                        </div>
                                    </template>
                                </el-table-column>
                                <el-table-column label="操作" width="250px"  align="center" fixed="right">
                                    <template slot-scope="scope">
                                        <el-button type="danger" size="mini" @click="delRouter(scope.$index,scope.row)">删除</el-button>
                                    </template>
                                </el-table-column>
                            </el-table>
                        </el-col>
                    </el-row>
                    <el-row>
                    <div class="block">
                        <el-pagination
                                @size-change="handleSizeChange"
                                @current-change="handleCurrentChange"
                                :current-page="umb_queryInfo.pageNum"
                                :page-sizes="[100, 200, 300, 400]"
                                :page-size="umb_queryInfo.pageSize"
                                layout="total, sizes, prev, pager, next, jumper"
                                :total="umb_queryData.total">
                        </el-pagination>
                    </div>
                </el-row>
                <el-row>
                    <el-dialog title="路由消息添加" :visible.sync="dialogFormVisible" width="50%" style="margin-top: -20px" text-align="center">
                        <el-form :model="ruleForm" :rules="rules" ref="ruleForm" label-width="145px"
                                 class="demo-ruleForm" style="margin-top: -10px ;margin-left: -150px"  align="center" >
                            <el-form-item label="" prop="sndr">
                                <el-input v-model="ruleForm.sndr" style="width:300px" size="small">
                                    <template  slot="prepend" >账户名称</template>
                                </el-input>
                            </el-form-item>
                            <el-form-item label="" prop="btype">
                                <el-input v-model="ruleForm.btype" style="width:300px" size="small">
                                    <template  slot="prepend" >消息大类</template>
                                </el-input>
                            </el-form-item>
                            <el-form-item label="" prop="stype">
                                <el-input v-model="ruleForm.stype" style="width:300px" size="small">
                                    <template  slot="prepend" >消息子类</template>
                                </el-input>
                            </el-form-item>
                        </el-form>
                        <Queue v-on:getQueueListEvent="getQueueInfo"></Queue>
                        <div slot="footer" class="dialog-footer" align="center">
                            <el-button @click="dialogFormVisible = false" size="medium"
                                       style="width: 100px;background-color: #6F8294;color: #ffffff">取 消</el-button>
                            <el-button type="primary" size="medium" style="width: 100px" @click="submitForm('ruleForm')">确 定</el-button>
                        </div>

                    </el-dialog>
                </el-row>
            </el-card>
        </el-main>
    </el-container>
</template>
<script>
    import {queRouter, deleteRouter, addRouter,api_addReceiverFileter} from "../../api/message_bus";
    import Queue from "@/views/bus/Queue";
    export default {
        components: { Queue },
        data(){
            return{
                dialogFormVisible:false,
                ruleForm:{
                   sndr:undefined,
                   btype:undefined,
                   stype:undefined,
                   rcvrList:[
                       {
                           rcvrTopic:undefined,
                           filterList:{
                               filter: undefined,
                               filterValue: undefined
                            }
                       }
                   ],


                },
                rules: {
                    sndr: [
                        { required: true, message: '请输入账户名称', trigger: 'blur' },
                        { min: 3, max: 10, message: '长度在 3 到 10 个字符', trigger: 'blur' }
                    ],
                    btype: [
                        { required: true, message: '请输入消息大类', trigger: 'blur' }
                    ],
                    stype: [
                        { required: true, message: '请输入消息子类', trigger: 'blur' }
                    ]
                },
                user_cloud: {
                    cloudUserList: [],
                    queryInfo: {
                        pageNum: 1,
                        pageSize: 10000,
                    }
                },
                umb_queryInfo: {
                    // 用户名称
                    sndr: undefined,
                    // 消息大类
                    btype: undefined,
                    // 消息子类
                    stype: undefined,
                    // 当前页数
                    pageNum: 1,
                    // 每页条数
                    pageSize: 10

                },
                umb_queryData: {
                    tableData: [],
                    total:0
                },
                receiverFilterForm: {
                    filter: undefined,
                    type: 'REGULAR',
                    messageRouterReciverId: ''
                }

            }
        },
        methods: {
            handleSizeChange(val) {
                this.umb_queryInfo.pageSize=val;
                this.queryRouterList();
            },
            handleCurrentChange(val) {
                this.umb_queryInfo.pageNum=val;
                this.queryRouterList();
            },
            queryRouterList(){
                queRouter(this.umb_queryInfo).then((response) => {
                    let res = response.data;
                    this.umb_queryData.tableData=res.data.list;
                    this.umb_queryData.total=res.data.total;
                }).catch(error => {

                });
            },
            delRouter(index,row){
                // 弹框询问是否删除?
                this.$confirm('此操作永久删除该消息收发记录, 是否继续?', '警告', {
                        confirmButtonText: '确定删除',
                        cancelButtonText: '取消',
                        type: 'warning'
                    }
                ).then(() => {
                    deleteRouter({id:row.id}).then((response) => {
                        let res = response.data;
                        this.$message.success(res.msg);
                        this.queryRouterList();
                    }).catch(error => {
                        this.$message.error(res.msg);
                    });
                }).catch(() => {
                });
            },
            submitForm(formName){
                this.$refs[formName].validate((valid) => {
                    if (valid) {
                        addRouter(this.ruleForm).then((response) => {
                            let res = response.data;
                            this.dialogFormVisible=false;
                            this.$message.success(res.msg);
                            this.queryRouterList();
                        }).catch(error => {
                            this.$message.error(res.msg);
                        });
                    } else {
                        console.log('error submit!!');
                        return false;
                    }
                });
            },
            getQueueInfo:function (queueInfo) {
                let _this = this;
                _this.ruleForm.rcvrList =[];
                let reciverList = queueInfo;
                if (reciverList.length>0){
                    reciverList.forEach(function (queue) {
                        let selectQueue = {};
                        selectQueue.rcvrTopic = queue.queueName
                        _this.ruleForm.rcvrList.push(selectQueue);
                    })
                }
                console.log(_this.ruleForm.rcvrList);
            },
            addReceiverFileter:function (receiverId) {
                let _this = this;
                _this.receiverFilterForm.messageRouterReciverId = receiverId;
            }
        }
    }
</script>
<style scoped></style>