Skip to content

Commit 22c7a1e

Browse files
committed
feat: 支持导入导出数据
1 parent fd82eeb commit 22c7a1e

File tree

4 files changed

+120
-2
lines changed

4 files changed

+120
-2
lines changed

dist-wrap/Cargo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
[package]
22
name = "rnacos-web-dist-wrap"
3-
version = "0.3.21"
3+
version = "0.3.22-beta"
44
edition = "2018"
55
authors = ["heqingpan <heqingpan@126.com>"]
66
license = "MIT/Apache-2.0"

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111
"vue3"
1212
],
1313
"private": true,
14-
"version": "0.3.21",
14+
"version": "0.3.22-beta",
1515
"type": "module",
1616
"scripts": {
1717
"dev": "vite",

src/pages/Transfer.vue

Lines changed: 107 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,107 @@
1+
<template>
2+
<div class="wrap">
3+
<div class="header">
4+
<div class="title">
5+
<span>数据迁移</span>
6+
</div>
7+
</div>
8+
<div class="content-wrap">
9+
<n-space vertical class="inner_wrap">
10+
<n-card title="导出" size="medium">
11+
<p>从r-nacos导出配置、命名空间、用户数据到文件</p>
12+
<br />
13+
<a ref="downloadEle" @click="download"
14+
><n-button type="info">导出数据</n-button></a
15+
>
16+
</n-card>
17+
<n-card title="导入" size="medium">
18+
<p>将迁移文件中的数据导入到r-nacos系统</p>
19+
<br />
20+
<n-upload
21+
action="/rnacos/api/console/transfer/import"
22+
:headers="uploadHeader"
23+
:show-file-list="false"
24+
@before-upload="doBeforeUpload"
25+
@finish="handlerUploadFinish"
26+
>
27+
<n-button type="info">导入数据</n-button>
28+
</n-upload>
29+
</n-card>
30+
</n-space>
31+
</div>
32+
</div>
33+
</template>
34+
35+
<script setup>
36+
import { defineComponent, ref } from 'vue';
37+
import qs from 'qs';
38+
39+
const uploadHeader = ref({});
40+
const downParams = ref({});
41+
const downloadEle = ref();
42+
43+
const download = () => {
44+
var paramStr = qs.stringify(downParams.value);
45+
var url = '/rnacos/api/console/transfer/export?' + paramStr;
46+
downloadEle.value.setAttribute('href', url);
47+
return true;
48+
};
49+
50+
const doBeforeUpload = () => {
51+
uploadHeader.value['import-config'] = '1';
52+
uploadHeader.value['import-user'] = '1';
53+
uploadHeader.value['import-cache'] = '0';
54+
};
55+
56+
const handlerUploadFinish = ({ event }) => {
57+
if (event.target.status == 200) {
58+
window.$message.info('上传成功');
59+
} else {
60+
window.$message.error('上传处理失败');
61+
}
62+
};
63+
</script>
64+
65+
<style scoped>
66+
.wrap {
67+
position: relative;
68+
width: 100%;
69+
height: 100%;
70+
background: #efefef;
71+
}
72+
73+
.content-wrap {
74+
padding: 10px 10px 10px 10px;
75+
background: #efefef;
76+
}
77+
78+
.form-container {
79+
display: flex;
80+
flex-direction: column;
81+
position: relative;
82+
background: #ffffff;
83+
border-radius: 8px;
84+
padding: 8px;
85+
}
86+
87+
.header {
88+
display: flex;
89+
flex-direction: row;
90+
align-items: center;
91+
height: 40px;
92+
border-bottom: #ccc 1px solid;
93+
background: #fff;
94+
}
95+
96+
.title {
97+
flex: 1 1 auto;
98+
font: 14/1.25;
99+
line-height: 30px;
100+
padding-left: 15px;
101+
}
102+
103+
.inner_wrap {
104+
width: 100%;
105+
flex: 1 1 auto;
106+
}
107+
</style>

src/route/routes.js

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ import Login from '@/pages/Login.vue';
1515
import UserListPage from '@/pages/UserListPage.vue';
1616
import NoPermission from '@/pages/NoPermission.vue';
1717
import About from '@/pages/About.vue';
18+
import Transfer from '@/pages/Transfer.vue';
1819
import { ServerOutline, CubeOutline, AppsSharp } from '@vicons/ionicons5';
1920

2021
export const routes = [
@@ -95,6 +96,12 @@ export const routes = [
9596
meta: { title: '命名空间管理' },
9697
component: NamespacePage
9798
},
99+
{
100+
path: '/manage/transfer',
101+
name: 'transfer',
102+
meta: { title: '数据迁移管理' },
103+
component: Transfer
104+
},
98105
{
99106
path: '/manage/user',
100107
name: 'user',
@@ -178,6 +185,10 @@ export const sideAllMenu = [
178185
name: '命名空间',
179186
path: '/manage/namespace'
180187
},
188+
{
189+
name: '数据迁移',
190+
path: '/manage/transfer'
191+
},
181192
{
182193
name: '集群信息',
183194
path: '/manage/cluster'

0 commit comments

Comments
 (0)