<template lang='pug'> el-container(style="padding:0px;height:77.6vh;") el-header(style='height:42px;line-height:42px;border: 1px solid rgba(195, 195, 195, 1);background: #f4f4f4;') span.title-bold.title-left-color() 目标数据源管理 el-main.box_main el-card() div.tableCard() el-form(:inline="true" :model="dataForm" size="mini" ) el-form-item( label="数据源url:" ) el-input( v-model="dataForm.url" placeholder="数据源url" clearable) el-form-item( label="用户名:" ) el-input.input_width( v-model="dataForm.username" placeholder="数据源用户名" clearable) el-form-item(label="数据源ip:") el-input.input_width( v-model="dataForm.ip" placeholder="数据源ip" clearable) el-form-item( label="说明信息:") el-input.input_width( v-model="dataForm.detail" placeholder="说明信息" clearable) el-button(@click="getDataList" icon="el-icon-search" type="primary" size="mini") 查询 el-button(@click="reSet()" type="primary" size="mini" icon="el-icon-refresh-right") 重置 el-button( v-if="isAuth('sys:user:save')" style="float:right;" size="mini" icon="el-icon-plus" type="primary" @click="addOrUpdateHandle()") 新增 el-table(:data="dataList" @sort-change='sortChange' style="width:100%;" v-loading="dataListLoading" :stripe="true" :header-cell-style="{background:'#EEF8FF',color:'#333333'}") el-table-column( type='index', header-align='center', align='center', label='序号') template(scope="scope") span {{scope.$index+(pageIndex - 1) * pageSize + 1}} el-table-column( prop="url" header-align="center" align="center" label="数据源url" sortable='custom' width='300' show-overflow-tooltip) //template(slot-scope='scope') el-table-column( prop="username" header-align="center" align="center" label="用户名" sortable='custom') el-table-column( prop="password" header-align="center" align="center" label="密码" sortable='custom') el-table-column( prop="ip" header-align="center" align="center" label="数据源服务器ip" sortable='custom' width='200') el-table-column( prop="port" header-align="center" align="center" label="数据源端口" sortable='custom') el-table-column( prop="detail" header-align="center" align="center" label="说明信息" sortable='custom' show-overflow-tooltip width='200') //template(slot-scope='scope') font(:title="scope.row.url") {{scope.row.detail | ellipsis}} el-table-column( prop header-align="center" align="center" label="操作" width='200') template( slot-scope="scope") //el-button(type="success" plain size="mini" @click="queryHandle(scope.row)") 详情 el-button(type="text" size="mini" v-if="isAuth('sys:datasource:update')" @click="addOrUpdateHandle(scope.row)") 修改 el-button(type="text" size="mini" v-if="isAuth('sys:datasource:delete')" @click="deleteHandle(scope.row.id)") 删除 el-footer.box_footer el-pagination(@size-change="sizeChangeHandle" background @current-change="currentChangeHandle" :current-page="pageIndex" :page-sizes="[10, 20, 50, 100]" :page-size="pageSize" :total="totalPage" layout="total, sizes, prev, pager, next, jumper") //- 弹窗, 新增 / 修改 add-or-update(v-if="addOrUpdateVisible" ref="addOrUpdate" @refreshdatalist="getDataList") </template> <script> import AddOrUpdate from './datasource-add-or-update' export default { name: 'sys-datasource', filters: { ellipsis(value) { if (!value) return '' if (value.length > 55) { return value.slice(0, 55) + '...' } return value } }, data() { return { dataForm: {}, dataList: [], pageIndex: 1, pageSize: 10, totalPage: 0, dataListLoading: false, dataListSelections: [], resetPasswordVisible: false, addOrUpdateVisible: false, queryDetailVisible: false, configRoleVisible: false, allJob: [] } }, components: { AddOrUpdate // queryDetail, // configRole, // resetPassword }, watch: { totalPage() { //注意这个函数的名字必须和你监听data中的属性的名字一样,这样才能当你data中的属性发生变化时,触发这个函数 let pages = Math.ceil(this.totalPage / this.pageSize)//新数据总页数 //总页数小于当前页数则重新加载列表数据 if (pages < this.pageIndex) { this.pageIndex = pages || 1 this.getDataList()//获取表格数据的方法 } } }, created() { // this.getList() this.getDataList() // this.getAllJob() }, methods: { //重置 reSet() { this.pageIndex = 1 this.dataForm = {} this.getDataList() }, //排序 sortChange(column) { if (column.order === 'descending') { this.order = 'desc' } else { this.order = 'asc' } if (column.column.columnKey) { this.sort = column.column.columnKey } else { this.sort = column.prop } this.getDataList() }, // 获取数据列表 getDataList() { this.dataListLoading = true this.$http({ url: this.$http.rtAdornUrl('/sysDatasource/list'), method: 'post', data: { ...this.dataForm, page: this.pageIndex, size: this.pageSize, sort: this.sort, order: this.order } }).then(data => { // console.log('data', data) if (data && data.code === 0) { this.dataList = data.page.records this.totalPage = data.page.total } else { this.dataList = [] this.totalPage = 0 } this.dataListLoading = false }) }, // 每页数 sizeChangeHandle(val) { this.pageSize = val this.pageIndex = 1 this.getDataList() }, // 当前页 currentChangeHandle(val) { this.pageIndex = val this.getDataList() }, // 新增 / 修改 addOrUpdateHandle(id) { this.addOrUpdateVisible = true this.$nextTick(() => { this.$refs.addOrUpdate.init(id) }) }, // 删除 deleteHandle(id) { let ids = [id] this.$confirm(`确认删除用户?`, '提示', { confirmButtonText: '确定', cancelButtonText: '取消', type: 'warning', closeOnClickModal: false }).then(() => { this.$http({ url: this.$http.rtAdornUrl('/sysDatasource/delete'), method: 'post', data: { id: ids } }).then(data => { if (data && data.code === 0) { this.$message({ message: '操作成功', type: 'success', duration: 1500, onClose: () => { this.getDataList() } }) } else { this.$message.error(data.msg) } }) }).catch(() => { }) } } } </script> <style lang='scss'> </style>