diff --git a/ui/src/components/CountDown/CountDown.vue b/ui/src/components/CountDown/CountDown.vue
deleted file mode 100644
index 575dd4aa7e4..00000000000
--- a/ui/src/components/CountDown/CountDown.vue
+++ /dev/null
@@ -1,102 +0,0 @@
-
-
- {{ lastTime | format }}
-
-
-
-
-
-
diff --git a/ui/src/components/CountDown/index.js b/ui/src/components/CountDown/index.js
deleted file mode 100644
index 35e954f28b5..00000000000
--- a/ui/src/components/CountDown/index.js
+++ /dev/null
@@ -1,3 +0,0 @@
-import CountDown from './CountDown'
-
-export default CountDown
diff --git a/ui/src/components/Ellipsis/Ellipsis.vue b/ui/src/components/Ellipsis/Ellipsis.vue
deleted file mode 100644
index 5d59200871f..00000000000
--- a/ui/src/components/Ellipsis/Ellipsis.vue
+++ /dev/null
@@ -1,64 +0,0 @@
-
diff --git a/ui/src/components/Ellipsis/index.js b/ui/src/components/Ellipsis/index.js
deleted file mode 100644
index 91e3ff4f702..00000000000
--- a/ui/src/components/Ellipsis/index.js
+++ /dev/null
@@ -1,3 +0,0 @@
-import Ellipsis from './Ellipsis'
-
-export default Ellipsis
diff --git a/ui/src/components/FooterToolbar/FooterToolBar.vue b/ui/src/components/FooterToolbar/FooterToolBar.vue
deleted file mode 100644
index 512e661fee3..00000000000
--- a/ui/src/components/FooterToolbar/FooterToolBar.vue
+++ /dev/null
@@ -1,57 +0,0 @@
-
-
-
-
-
-
-
diff --git a/ui/src/components/FooterToolbar/index.js b/ui/src/components/FooterToolbar/index.js
deleted file mode 100644
index a0bf1459a0d..00000000000
--- a/ui/src/components/FooterToolbar/index.js
+++ /dev/null
@@ -1,4 +0,0 @@
-import FooterToolBar from './FooterToolBar'
-import './index.less'
-
-export default FooterToolBar
diff --git a/ui/src/components/FooterToolbar/index.less b/ui/src/components/FooterToolbar/index.less
deleted file mode 100644
index fc0493e994f..00000000000
--- a/ui/src/components/FooterToolbar/index.less
+++ /dev/null
@@ -1,23 +0,0 @@
-@import "../../style/variables/prefixes";
-
-@footer-toolbar-prefix-cls: ~"@{ant-pro-prefix}-footer-toolbar";
-
-.@{footer-toolbar-prefix-cls} {
- position: fixed;
- width: 100%;
- bottom: 0;
- right: 0;
- height: 56px;
- line-height: 56px;
- box-shadow: 0 -1px 2px rgba(0, 0, 0, 0.03);
- background: #fff;
- border-top: 1px solid #e8e8e8;
- padding: 0 24px;
- z-index: 9;
-
- &:after {
- content: "";
- display: block;
- clear: both;
- }
-}
\ No newline at end of file
diff --git a/ui/src/components/NumberInfo/NumberInfo.vue b/ui/src/components/NumberInfo/NumberInfo.vue
deleted file mode 100644
index d9b3f194fe3..00000000000
--- a/ui/src/components/NumberInfo/NumberInfo.vue
+++ /dev/null
@@ -1,106 +0,0 @@
-
-
-
- {{ typeof subTitle === 'string' ? subTitle : subTitle() }}
-
-
- {{ total }}
-
- {{ subTotal }}
-
-
-
-
-
-
-
-
-
diff --git a/ui/src/components/NumberInfo/index.js b/ui/src/components/NumberInfo/index.js
deleted file mode 100644
index 659a2f38614..00000000000
--- a/ui/src/components/NumberInfo/index.js
+++ /dev/null
@@ -1,3 +0,0 @@
-import NumberInfo from './NumberInfo'
-
-export default NumberInfo
diff --git a/ui/src/components/NumberInfo/index.less b/ui/src/components/NumberInfo/index.less
deleted file mode 100644
index 85a8d37c626..00000000000
--- a/ui/src/components/NumberInfo/index.less
+++ /dev/null
@@ -1,56 +0,0 @@
-@import '~ant-design-vue/lib/style/themes/default';
-@import '../../style/variables/prefixes';
-
-@numberInfo-prefix-cls: ~"@{ant-pro-prefix}-number-info";
-
-.@{numberInfo-prefix-cls} {
-
- .ant-pro-number-info-subtitle {
- color: @text-color-secondary;
- font-size: @font-size-base;
- height: 22px;
- line-height: 22px;
- overflow: hidden;
- text-overflow: ellipsis;
- word-break: break-all;
- white-space: nowrap;
- }
-
- .number-info-value {
- margin-top: 4px;
- font-size: 0;
- overflow: hidden;
- text-overflow: ellipsis;
- word-break: break-all;
- white-space: nowrap;
-
- & > span {
- color: @heading-color;
- display: inline-block;
- line-height: 32px;
- height: 32px;
- font-size: 24px;
- margin-right: 32px;
- }
-
- .sub-total {
- color: @text-color-secondary;
- font-size: @font-size-lg;
- vertical-align: top;
- margin-right: 0;
- i {
- font-size: 12px;
- transform: scale(0.82);
- margin-left: 4px;
- }
- :global {
- .anticon-caret-up {
- color: @red-6;
- }
- .anticon-caret-down {
- color: @green-6;
- }
- }
- }
- }
-}
\ No newline at end of file
diff --git a/ui/src/components/Result/Result.vue b/ui/src/components/Result/Result.vue
deleted file mode 100644
index cd25a962525..00000000000
--- a/ui/src/components/Result/Result.vue
+++ /dev/null
@@ -1,90 +0,0 @@
-
-
-
-
{{ title }}
-
{{ description }}
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/ui/src/components/Result/index.js b/ui/src/components/Result/index.js
deleted file mode 100644
index 51cb3b2a1cc..00000000000
--- a/ui/src/components/Result/index.js
+++ /dev/null
@@ -1,2 +0,0 @@
-import Result from './Result.vue'
-export default Result
diff --git a/ui/src/components/Tree/Tree.jsx b/ui/src/components/Tree/Tree.jsx
deleted file mode 100644
index e5a2a113919..00000000000
--- a/ui/src/components/Tree/Tree.jsx
+++ /dev/null
@@ -1,124 +0,0 @@
-import { Menu, Icon, Input } from 'ant-design-vue'
-
-const { Item, ItemGroup, SubMenu } = Menu
-const { Search } = Input
-
-export default {
- name: 'Tree',
- props: {
- dataSource: {
- type: Array,
- required: true
- },
- openKeys: {
- type: Array,
- default: () => []
- },
- search: {
- type: Boolean,
- default: false
- }
- },
- created () {
- this.localOpenKeys = this.openKeys.slice(0)
- },
- data () {
- return {
- localOpenKeys: []
- }
- },
- methods: {
- handlePlus (item) {
- this.$emit('add', item)
- },
- handleTitleClick (...args) {
- this.$emit('titleClick', { args })
- },
-
- renderSearch () {
- return (
-
- )
- },
- renderIcon (icon) {
- return icon && () || null
- },
- renderMenuItem (item) {
- return (
- -
- { this.renderIcon(item.icon) }
- { item.title }
- this.handlePlus(item) } }}>
-
- )
- },
- renderItem (item) {
- return item.children ? this.renderSubItem(item, item.key) : this.renderMenuItem(item, item.key)
- },
- renderItemGroup (item) {
- const childrenItems = item.children.map(o => {
- return this.renderItem(o, o.key)
- })
-
- return (
-
-
- { item.title }
-
-
-
- 新增
- 合并
- 移除
-
-
-
- { childrenItems }
-
- )
- },
- renderSubItem (item, key) {
- const childrenItems = item.children && item.children.map(o => {
- return this.renderItem(o, o.key)
- })
-
- const title = (
-
- { this.renderIcon(item.icon) }
- { item.title }
-
- )
-
- if (item.group) {
- return this.renderItemGroup(item)
- }
- // titleClick={this.handleTitleClick(item)}
- return (
-
- { title }
- { childrenItems }
-
- )
- }
- },
- render () {
- const { dataSource, search } = this.$props
-
- // this.localOpenKeys = openKeys.slice(0)
- const list = dataSource.map(item => {
- return this.renderItem(item)
- })
-
- return (
-
- { search ? this.renderSearch() : null }
-
-
- )
- }
-}
diff --git a/ui/src/components/Trend/Trend.vue b/ui/src/components/Trend/Trend.vue
deleted file mode 100644
index ccefc6ee6ec..00000000000
--- a/ui/src/components/Trend/Trend.vue
+++ /dev/null
@@ -1,73 +0,0 @@
-
-
-
-
-
-
-
diff --git a/ui/src/components/Trend/index.js b/ui/src/components/Trend/index.js
deleted file mode 100644
index 9f14228060e..00000000000
--- a/ui/src/components/Trend/index.js
+++ /dev/null
@@ -1,3 +0,0 @@
-import Trend from './Trend.vue'
-
-export default Trend
diff --git a/ui/src/components/Trend/index.less b/ui/src/components/Trend/index.less
deleted file mode 100644
index b21405a1e6f..00000000000
--- a/ui/src/components/Trend/index.less
+++ /dev/null
@@ -1,43 +0,0 @@
-@import '~ant-design-vue/lib/style/themes/default';
-@import '../../style/variables/prefixes';
-
-@trend-prefix-cls: ~"@{ant-pro-prefix}-trend";
-
-.@{trend-prefix-cls} {
- display: inline-block;
- font-size: @font-size-base;
- line-height: 22px;
-
- .up,
- .down {
- margin-left: 4px;
- position: relative;
- top: 1px;
-
- i {
- font-size: 12px;
- transform: scale(0.83);
- }
- }
-
- .item-text {
- display: inline-block;
- margin-left: 8px;
- color: rgba(0,0,0,.85);
- }
-
- .up {
- color: @red-6;
- }
- .down {
- color: @green-6;
- top: -1px;
- }
-
- &.reverse-color .up {
- color: @green-6;
- }
- &.reverse-color .down {
- color: @red-6;
- }
-}
\ No newline at end of file
diff --git a/ui/src/components/_util/util.js b/ui/src/components/_util/util.js
deleted file mode 100644
index 0ec2d069087..00000000000
--- a/ui/src/components/_util/util.js
+++ /dev/null
@@ -1,32 +0,0 @@
-/**
- * components util
- */
-
-export function filterEmpty (children = []) {
- return children.filter(c => c.tag || (c.text && c.text.trim() !== ''))
-}
-
-export const getStrFullLength = (str = '') =>
- str.split('').reduce((pre, cur) => {
- const charCode = cur.charCodeAt(0)
- if (charCode >= 0 && charCode <= 128) {
- return pre + 1
- }
- return pre + 2
- }, 0)
-
-export const cutStrByFullLength = (str = '', maxLength) => {
- let showLength = 0
- return str.split('').reduce((pre, cur) => {
- const charCode = cur.charCodeAt(0)
- if (charCode >= 0 && charCode <= 128) {
- showLength += 1
- } else {
- showLength += 2
- }
- if (showLength <= maxLength) {
- return pre + cur
- }
- return pre
- }, '')
-}
diff --git a/ui/src/components/chart/Bar.vue b/ui/src/components/chart/Bar.vue
deleted file mode 100644
index ec5b0f53b47..00000000000
--- a/ui/src/components/chart/Bar.vue
+++ /dev/null
@@ -1,73 +0,0 @@
-
-
-
{{ title }}
-
-
-
-
-
-
-
-
-
-
-
diff --git a/ui/src/components/chart/Liquid.vue b/ui/src/components/chart/Liquid.vue
deleted file mode 100644
index db82735e1e5..00000000000
--- a/ui/src/components/chart/Liquid.vue
+++ /dev/null
@@ -1,76 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/ui/src/components/chart/MiniArea.vue b/ui/src/components/chart/MiniArea.vue
deleted file mode 100644
index 880cf1c97d7..00000000000
--- a/ui/src/components/chart/MiniArea.vue
+++ /dev/null
@@ -1,73 +0,0 @@
-
-
-
-
-
-
-
diff --git a/ui/src/components/chart/MiniBar.vue b/ui/src/components/chart/MiniBar.vue
deleted file mode 100644
index cb63f120057..00000000000
--- a/ui/src/components/chart/MiniBar.vue
+++ /dev/null
@@ -1,73 +0,0 @@
-
-
-
-
-
-
-
diff --git a/ui/src/components/chart/MiniProgress.vue b/ui/src/components/chart/MiniProgress.vue
deleted file mode 100644
index 0b0a7baa3e8..00000000000
--- a/ui/src/components/chart/MiniProgress.vue
+++ /dev/null
@@ -1,93 +0,0 @@
-
-
-
-
-
-
-
diff --git a/ui/src/components/chart/Radar.vue b/ui/src/components/chart/Radar.vue
deleted file mode 100644
index 214aaae5afa..00000000000
--- a/ui/src/components/chart/Radar.vue
+++ /dev/null
@@ -1,73 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/ui/src/components/chart/RankList.vue b/ui/src/components/chart/RankList.vue
deleted file mode 100644
index 0f16d0a20e0..00000000000
--- a/ui/src/components/chart/RankList.vue
+++ /dev/null
@@ -1,74 +0,0 @@
-
-
-
{{ title }}
-
- -
- {{ index + 1 }}
- {{ item.name }}
- {{ item.total }}
-
-
-
-
-
-
-
-
diff --git a/ui/src/components/chart/TransferBar.vue b/ui/src/components/chart/TransferBar.vue
deleted file mode 100644
index 7acacbccaf4..00000000000
--- a/ui/src/components/chart/TransferBar.vue
+++ /dev/null
@@ -1,81 +0,0 @@
-
-
-
{{ title }}
-
-
-
-
-
-
-
-
-
-
-
diff --git a/ui/src/components/chart/Trend.vue b/ui/src/components/chart/Trend.vue
deleted file mode 100644
index 435427329e9..00000000000
--- a/ui/src/components/chart/Trend.vue
+++ /dev/null
@@ -1,86 +0,0 @@
-
-
- {{ term }}
-
{{ rate }}%
-
-
-
-
-
-
-
diff --git a/ui/src/components/chart/chart.less b/ui/src/components/chart/chart.less
deleted file mode 100644
index 4ac179822c1..00000000000
--- a/ui/src/components/chart/chart.less
+++ /dev/null
@@ -1,10 +0,0 @@
-.antv-chart-mini {
- position: relative;
- width: 100%;
-
- .chart-wrapper {
- position: absolute;
- bottom: -28px;
- width: 100%;
- }
-}
\ No newline at end of file
diff --git a/ui/src/components/tools/HeaderNotice.vue b/ui/src/components/header/HeaderNotice.vue
similarity index 100%
rename from ui/src/components/tools/HeaderNotice.vue
rename to ui/src/components/header/HeaderNotice.vue
diff --git a/ui/src/components/tools/Logo.vue b/ui/src/components/header/Logo.vue
similarity index 94%
rename from ui/src/components/tools/Logo.vue
rename to ui/src/components/header/Logo.vue
index e1a9b2352cc..aa6611874a4 100644
--- a/ui/src/components/tools/Logo.vue
+++ b/ui/src/components/header/Logo.vue
@@ -6,7 +6,7 @@
-
-
diff --git a/ui/src/components/tools/HeadInfo.vue b/ui/src/components/tools/HeadInfo.vue
deleted file mode 100644
index 50892e4b5a9..00000000000
--- a/ui/src/components/tools/HeadInfo.vue
+++ /dev/null
@@ -1,69 +0,0 @@
-
-
-
{{ title }}
-
{{ content }}
-
-
-
-
-
-
-
diff --git a/ui/src/components/tools/TwoStepCaptcha.vue b/ui/src/components/tools/TwoStepCaptcha.vue
deleted file mode 100644
index 01302b434c6..00000000000
--- a/ui/src/components/tools/TwoStepCaptcha.vue
+++ /dev/null
@@ -1,89 +0,0 @@
-
-
-
- 两步验证
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/ui/src/components/tools/setting.js b/ui/src/components/tools/setting.js
deleted file mode 100644
index c801a8f75fc..00000000000
--- a/ui/src/components/tools/setting.js
+++ /dev/null
@@ -1,94 +0,0 @@
-import { message } from 'ant-design-vue/es'
-
-let lessNodesAppended
-
-const colorList = [
- {
- key: '薄暮', color: '#F5222D'
- },
- {
- key: '火山', color: '#FA541C'
- },
- {
- key: '日暮', color: '#FAAD14'
- },
- {
- key: '明青', color: '#13C2C2'
- },
- {
- key: '极光绿', color: '#52C41A'
- },
- {
- key: '拂晓蓝(默认)', color: '#1890FF'
- },
- {
- key: '极客蓝', color: '#2F54EB'
- },
- {
- key: '酱紫', color: '#722ED1'
- }
-]
-
-const updateTheme = primaryColor => {
- // Don't compile less in production!
- /* if (process.env.NODE_ENV === 'production') {
- return;
- } */
- // Determine if the component is remounted
- if (!primaryColor) {
- return
- }
- const hideMessage = message.loading('正在编译主题!', 0)
- function buildIt () {
- if (!window.less) {
- return
- }
- setTimeout(() => {
- window.less
- .modifyVars({
- '@primary-color': primaryColor
- })
- .then(() => {
- hideMessage()
- })
- .catch(() => {
- message.error('Failed to update theme')
- hideMessage()
- })
- }, 200)
- }
- if (!lessNodesAppended) {
- // insert less.js and color.less
- const lessStyleNode = document.createElement('link')
- const lessConfigNode = document.createElement('script')
- const lessScriptNode = document.createElement('script')
- lessStyleNode.setAttribute('rel', 'stylesheet/less')
- lessStyleNode.setAttribute('href', '/color.less')
- lessConfigNode.innerHTML = `
- window.less = {
- async: true,
- env: 'production',
- javascriptEnabled: true
- };
- `
- lessScriptNode.src = 'https://gw.alipayobjects.com/os/lib/less.js/3.8.1/less.min.js'
- lessScriptNode.async = true
- lessScriptNode.onload = () => {
- buildIt()
- lessScriptNode.onload = null
- }
- document.body.appendChild(lessStyleNode)
- document.body.appendChild(lessConfigNode)
- document.body.appendChild(lessScriptNode)
- lessNodesAppended = true
- } else {
- buildIt()
- }
-}
-
-const updateInvertedMode = invertedMode => {
- invertedMode = true
- invertedMode ? document.body.classList.add('layout-inverted-mode') : document.body.classList.remove('layout-inverted-mode')
-}
-
-export { updateTheme, colorList, updateInvertedMode }
diff --git a/ui/src/components/view/FormView.vue b/ui/src/components/view/FormView.vue
index 2873017382a..4a1916b27ab 100644
--- a/ui/src/components/view/FormView.vue
+++ b/ui/src/components/view/FormView.vue
@@ -67,7 +67,7 @@
diff --git a/ui/src/layouts/BasicLayout.vue b/ui/src/layouts/BasicLayout.vue
index c73f6c9105f..7b6e9a74c70 100644
--- a/ui/src/layouts/BasicLayout.vue
+++ b/ui/src/layouts/BasicLayout.vue
@@ -9,7 +9,7 @@