sending.vue 14.1 KB
<template>
    <section>
        <!--工具条-->
        <el-col :span="24" class="toolbar" style="padding-bottom: 0px;">
            <el-form :inline="true" :model="filters">
                <el-form-item>
                    <el-button type="success" @click="applyAdd()">新  增</el-button>
                </el-form-item>
            </el-form>
        </el-col>
        <!--列表-->
        <el-table :data="tableData" highlight-current-row  style="width: 100%;"
                  row-key="ruleId">
            <el-table-column width="80" prop="hostid" label="服务器ID"  >
            </el-table-column>
            <el-table-column width="240" prop="localdir" label="本地发送目录"  >
            </el-table-column>
            <el-table-column width="120" prop="destvr" label="目的地虚拟机" >
            </el-table-column>
            <el-table-column width="120" prop="routerkey" label="路由" >
            </el-table-column>
            <el-table-column width="120" prop="queue" label="队列">
            </el-table-column>
            <el-table-column width="120" prop="destchange" label="目的地交换">
            </el-table-column>
            <el-table-column width="120" prop="broadtype" label="广播类型" >
            </el-table-column>
            <el-table-column width="240" label="操作" fixed="right">
                <template slot-scope="scope">
                    <el-button type="success"  @click="firing(scope.row)">启动</el-button>
                    <el-button type="warning"  @click="suspend(scope.$index,scope.row)">暂停</el-button>
                    <el-button type="danger"  @click="batchRemove(scope.$index,scope.row)">删除</el-button>
                </template>
            </el-table-column>
        </el-table>
        <!--		分页-->
        <div class="block">
            <el-pagination
                    :current-page="filters.pageNum"
                    :page-sizes="[10, 50, 100, 500]"
                    :page-size="filters.pageSize"
                    layout="total, sizes, prev, pager, next, jumper"
                    :total="total"
                    @size-change="handleSizeChange"
                    @current-change="handleCurrentChange"
            />
        </div>
        <el-row>
            <el-dialog :title="dialogMap[dialogApply]" :visible.sync="apply_dialog" width="50%">
                <el-form  :model="addForm"  :rules="rules" ref="addForm" style="margin-top: 20px">
                    <el-row>
                        <el-col :span="11">
                            <el-form-item label="服务器ID" :label-width="formLabelWidth"  prop="hostid">
<!--                                <el-input v-model="addForm.hostid" autocomplete="off" size="small" style="width: 260px">-->
<!--                                </el-input>-->
                                <el-select v-model="addForm.hostid" clearable placeholder="请选择"
                                           style="width: 260px">
                                    <el-option
                                            v-for="item in hostid"
                                            :key="item.id"
                                            :label="item.hostid"
                                            :value="item.hostid">
                                    </el-option>
                                </el-select>
                            </el-form-item>
                        </el-col>
                    </el-row>
                    <el-row>
                        <el-col :span="12">
                            <el-form-item label="本地发送目录" :label-width="formLabelWidth"  prop="localdir">
                                <el-input v-model="addForm.localdir" autocomplete="off" size="small" style="width: 260px">
                                </el-input>
                            </el-form-item>
                        </el-col>
                    </el-row>
                    <el-row>
                        <el-col :span="11">
                            <el-form-item label="目的地虚拟机" :label-width="formLabelWidth"  prop="destvr">
                                <el-input v-model="addForm.destvr" autocomplete="off" size="small" style="width: 260px">
                                </el-input>
                            </el-form-item>
                        </el-col>
                    </el-row>
                    <el-row>
                        <el-col :span="12">
                            <el-form-item label="路由" :label-width="formLabelWidth"  prop="routerkey">
                                <el-input  v-model="addForm.routerkey" autocomplete="off" size="small" style="width: 260px">
                                </el-input>
                            </el-form-item>
                        </el-col>
                    </el-row>
                    <el-row>
                        <el-col :span="11">
                            <el-form-item label="队列" :label-width="formLabelWidth"  prop="queue">
                                <el-input v-model="addForm.queue" autocomplete="off" size="small" style="width: 260px">
                                </el-input>
                            </el-form-item>
                        </el-col>
                    </el-row>
                    <el-row>
                        <el-col :span="11">
                            <el-form-item label="目的地交换" :label-width="formLabelWidth"  prop="destchange">
                                <el-input v-model="addForm.destchange" autocomplete="off" size="small" style="width: 260px">
                                </el-input>
                            </el-form-item>
                        </el-col>
                    </el-row>
                    <el-row>
                        <el-col :span="11">
                            <el-form-item label="广播类型" :label-width="formLabelWidth"  prop="broadtype">
                                <el-input v-model="addForm.broadtype" autocomplete="off" size="small" style="width: 260px">
                                </el-input>
                            </el-form-item>
                        </el-col>
                    </el-row>
                </el-form>
                <div slot="footer" class="dialog-footer">
                    <el-button @click="apply_dialog = false" size="small">取 消</el-button>
                    <el-button type="primary" @click="dialogApply==='create'?add():edit()" size="small">提 交</el-button>
                </div>
            </el-dialog>
        </el-row>
        <el-dialog :visible.sync="tableData1_dialog" >
            <!--列表-->
            <el-table disabled :data="tableData1" highlight-current-row  style="width: 100%;"
                      row-key="ruleId">
                <el-table-column width="120" prop="hostid" label="服务器IP"  >
                </el-table-column>
                <el-table-column width="120" prop="port" label="端口"  >
                </el-table-column>
                <el-table-column width="120" prop="user" label="账号" >
                </el-table-column>
                <el-table-column width="120" prop="pass" label="密码" >
                </el-table-column>
            </el-table>
        </el-dialog>
    </section>
</template>
<script>
    import {
        listSendConfigs,
        insertSendConfig,
        deleteSendConfig,
        addsendtask,
        removesendTask,
        listRabbitConfigs
    } from '../../api/configuration';
    export default {
        data() {
            return {
                filters: {
                    pageNum: 1,
                    pageSize: 10
                },
                total: 0,
                tableData: [],
                hostid:[],
                tableData1: [],
                tableData1_dialog:false,
                dialogMap: {
                    update: '编辑',
                    create: '新增'
                },
                dis: undefined,
                dialogApply: 'create',
                apply_dialog: false,
                addForm: {
                    hostid:'',
                    localdir: '',
                    destvr: '',
                    routerkey: '',
                    queue: '',
                    destchange:'',
                    broadtype:'',
                    id:'',
                    del: '',
                    durability: '',
                    internal: 'false',
                    status:'',
                },
                formLabelWidth: '200px',
                rules: {
                },

            }
        },
        mounted() {
            this.getList();
        },
        methods: {
            //分页
            handleSizeChange(val) {
                this.filters.pageSize = val
                this.getList()
            },
            handleCurrentChange(val) {
                this.filters.pageNum = val
                this.getList()
            },
            //获取列表
            getList() {
                const _this = this
                listSendConfigs().then((response) => {
                    const res = response.data
                    if (res.code !== '200') {
                        return _this.$message.error('获取消息收发记录,失败!')
                    }
                    // 获取列表数据
                    _this.tableData = res.data
                    // 获取列表的总记录数
                    _this.total = res.data.total
                    _this.$message.success('获取消息收发记录,成功!')
                }).catch(error => {
                    // 关闭加载
                    _this.$message.error(error.toString())
                })
            },
            // 添加对话框,打开事件
            applyAdd() {
                this.hostid=[];
                const _this = this
                listRabbitConfigs().then((response) => {
                    const res = response.data
                    if (res.code !== '200') {
                        return _this.$message.error('获取消息收发记录,失败!')
                    }
                    // 获取列表数据
                    _this.tableData1 = res.data
                    _this.hostid=_this.tableData1;
                    _this.$message.success('获取消息收发记录,成功!')
                }).catch(error => {
                    // 关闭加载
                    _this.$message.error(error.toString())
                })
                this.addForm = {
                    hostid:'',
                    localdir: '',
                    destvr: '',
                    routerkey: '',
                    queue: '',
                    destchange:'',
                    broadtype:'',
                    id:'',
                    del: '',
                    durability: '',
                    internal: 'false',
                    status:'',
                };
                this.dialogApply= 'create';
                this.dis= 'create';
                this.apply_dialog = true;
            },
            // 添加功能
            add() {
                this.$refs.addForm.validate(valid => {
                    // 未通过,表单预校验
                    if (!valid) return;
                    insertSendConfig(this.addForm).then((response) => {
                        let res = response.data;
                        // 添加失败
                        if (res.code !== '200') {
                            return this.$message.error(res.msg);
                        }
                        // 添加,成功
                        this.$message.success(res.msg);
                        // 隐藏对话框
                        this.apply_dialog = false;
                        // 刷新列表
                        this.getList();
                    }).catch(error => {
                        this.$message.error(error.toString());
                    });
                })
            },
            // 启动功能
            firing() {
                // 弹框询问是否删除?
                this.$confirm(' 是否继续?', '警告', {
                        confirmButtonText: '确定启动',
                        cancelButtonText: '取消',
                        type: 'warning'
                    }
                ).then(() => {
                    addsendtask({row:this.row}).then((response) => {
                        const res = response.data
                        this.$message.success(res.msg)
                        this.getList()
                    }).catch(error => {
                        this.$message.error(error)
                    })
                }).catch(() => {
                })

            },
            //暂停
            suspend(index,row) {
                // 弹框询问是否删除?
                this.$confirm(' 是否继续?', '警告', {
                        confirmButtonText: '确定暂停',
                        cancelButtonText: '取消',
                        type: 'warning'
                    }
                ).then(() => {
                    removesendTask({id:row.id}).then((response) => {
                        const res = response.data
                        this.$message.success(res.msg)
                        this.getList()
                    }).catch(error => {
                        this.$message.error(error)
                    })
                }).catch(() => {
                })
            },
            //删除
            batchRemove(index,row) {
                // 弹框询问是否删除?
                this.$confirm('此操作永久删除该消息, 是否继续?', '警告', {
                        confirmButtonText: '确定删除',
                        cancelButtonText: '取消',
                        type: 'warning'
                    }
                ).then(() => {
                    deleteSendConfig({id:row.id}).then((response) => {
                        const res = response.data
                        this.$message.success(res.msg)
                        this.getList()
                    }).catch(error => {
                        this.$message.error(error)
                    })
                }).catch(() => {
                })
            },
        },


    }
</script>