Commit e2bbb527 authored by 晓彤's avatar 晓彤

提交同数据库功能

parent b633c278
......@@ -63,3 +63,27 @@ export function clearData(dataInfo) {
params: dataInfo
})
}
// 获取数据库列表
export function getDataBaseList(dataInfo) {
return holmesRequest({
url: '/dbsync/dbs',
method: 'get',
params: dataInfo
})
}
// 根据数据库获取表信息
export function getTableByDataBase(dataInfo) {
return holmesRequest({
url: '/dbsync/tables',
method: 'get',
params: dataInfo
})
}
// 同步数据库
export function synDataBase(dataInfo) {
return holmesRequest({
url: '/dbsync/one',
method: 'get',
params: dataInfo
})
}
......@@ -31,6 +31,8 @@ import RepayCallback from '../views/vcc/RepayCallback'
// 添加报告页面
import ReportList from '../views/auto/ReportList'
import ReportDetail from '../views/auto/ReportDetail'
// 添加同步数据库功能
import SynDatabase from '../views/effect/SynDatabase'
const originalPush = Router.prototype.push
Router.prototype.push = function push(location) {
......@@ -55,8 +57,8 @@ const router = new Router({
// component: Login
// },
{
'path': '/home',
'redirect': '/main',
path: '/home',
redirect: '/main',
component: Home,
children: [
{
......@@ -152,39 +154,44 @@ const router = new Router({
component: EditScene
},
{
'path': '/jira/notify',
path: '/jira/notify',
component: JiraNotify
},
{
'path': '/vcc/risk',
path: '/vcc/risk',
component: RiskControl
},
{
'path': '/effect/clearcache',
path: '/effect/clearcache',
component: ClearCache
},
{
'path': '/effect/cleardata',
path: '/effect/cleardata',
component: ClearData
},
{
'path': '/vcc/repaycallback',
path: '/vcc/repaycallback',
component: RepayCallback
},
// 添加报告
{
'path': '/auto/ReportList',
path: '/auto/ReportList',
name: ReportList,
component: ReportList
},
{
'path': '/auto/ReportDetail',
path: '/auto/ReportDetail',
name: ReportDetail,
component: ReportDetail
},
// 添加同步数据库
{
path: '/effect/SynDatabase',
name: SynDatabase,
component: SynDatabase
}
]
}
]
})
export default router
......@@ -27,7 +27,6 @@
<!-- <el-table-column prop="method" label="请求方式" width="100px"></el-table-column> -->
<!-- <el-table-column prop="paramType" label="参数类型" width="80px"></el-table-column> -->
<el-table-column prop="createTime" label="创建时间" width="200px"></el-table-column>
<!-- <el-table-column prop="updateTime" label="修改时间" width="200px"></el-table-column> -->
<el-table-column label="操作">
<slot slot-scope="scope">
<el-button type="warning" icon="el-icon-edit" @click="editInterfaceFrom(scope.row)">编辑</el-button>
......
<template>
<div>
<el-card>
<!-- <span>同步数据库操作</span> -->
<el-form ref="databaseFromRef" :rules="rules" :model="databaseFrom" label-width="90px">
<el-form-item label="环 境:" prop="namespace">
<el-select v-model="databaseFrom.namespace" placeholder="请选择环境" style="width:280px">
<el-option v-for="item in namespaceList" :key="item.key" :label="item.desc" :value="item.key">
</el-option>
</el-select>
</el-form-item>
<el-form-item label="库 名:" prop="dataBaseName">
<el-select v-model="databaseFrom.dataBaseName" placeholder="请选择环境" style="width:280px" @change="selectChange" clearable>
<el-option v-for="item in dataBaseList" :key="item" :label="item" :value="item">
</el-option>
</el-select>
</el-form-item>
<el-form-item label="表 名:">
<el-select v-model="databaseFrom.tableName" placeholder="请选择环境" style="width:280px">
<el-option v-for="item in tableList" :key="item" :label="item" :value="item">
</el-option>
</el-select>
</el-form-item>
<el-form-item>
<el-button type="primary" @click="synBtn" style="margin-left:80px">开始同步</el-button>
</el-form-item>
</el-form>
</el-card>
</div>
</template>
<script>
import { getNamespaceList } from '@/api/getXyqbData'
import { getDataBaseList, getTableByDataBase, synDataBase } from '@/api/effect'
export default {
data() {
return {
databaseFrom: {
namespace: '',
dataBaseName: '',
tableName: ''
},
namespaceList: [],
dataBaseList: [],
tableList: [],
paramsFrom: {
namespace: '',
dbName: '',
tableName: ''
},
rules: {
namespace: [
{
required: true,
message: '环境不能为空!',
trigger: 'blur'
}
],
dataBaseName: [
{
required: true,
message: '库名描述不能为空!',
trigger: 'blur'
}
]
},
loadingOptions: {
text: '数据同步中,请耐心等待',
lock: true,
spinner: 'el-icon-loading',
background: 'rgba(0,0,0,0.7)'
}
}
},
created() {
this.getNamespaceList()
this.getDataBaseList()
},
methods: {
// 环境列表
getNamespaceList() {
getNamespaceList().then((resp) => {
this.namespaceList = resp.data.data
})
},
// 获取数据库列表
getDataBaseList() {
getDataBaseList().then((resp) => {
// console.log('返回值信息', resp)
this.dataBaseList = resp.data.data
})
},
// 下拉框选择
selectChange(e) {
// 根据数据库获取表信息
getTableByDataBase({ dbName: e }).then((resp) => {
this.tableList = resp.data.data
})
},
// 同步数据库按钮
synBtn() {
this.paramsFrom.namespace = this.databaseFrom.namespace
this.paramsFrom.dbName = this.databaseFrom.dataBaseName
this.paramsFrom.tableName = this.databaseFrom.tableName
// this.paramsFrom.namespace = 'fe'
// this.paramsFrom.dbName = 'msg'
// this.paramsFrom.tableName = 'all'
// console.log('参数信息', this.paramsFrom)
this.$refs.databaseFromRef.validate((valid) => {
if (!valid) {
return false
} else {
const Lloading = this.$loading.service(this.loadingOptions)
synDataBase(this.paramsFrom).then((resp) => {
if (resp.data.data.code === '0000') {
Lloading.close()
this.$message.success('数据同步成功!')
} else {
Lloading.close()
this.$message.error(resp.data.data.msg)
}
})
}
})
}
}
}
</script>
......@@ -103,6 +103,12 @@
"title": "数据清理",
"icon": "iconfont icon-Memcached",
"path": "/effect/cleardata"
},
{
"id": 6,
"title": "同步数据库",
"icon": "iconfont icon-cached",
"path": "/effect/SynDatabase"
}
]
},
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment