From a50877a294030c702cdd629bd92bad0d0ddc4d9e Mon Sep 17 00:00:00 2001
From: fengxiang <110431245@qq.com>
Date: Wed, 11 Jul 2018 21:49:38 +0800
Subject: [PATCH] Revert "Revert "框架调整""

---
 src/app/routes/home-page/home-page/home-page.component.ts   |   15 ++
 src/app/routes/routes.module.ts                             |   30 ----
 src/assets/tmp/img/No3.png                                  |    0 
 src/assets/tmp/i18n/zh-CN.json                              |    4 
 src/assets/tmp/img/logo_30x30.png                           |    0 
 src/app/routes/home-page/home-page-routing.module.ts        |   11 +
 src/app/routes/home-page/home-page/home-page.component.less |    0 
 src/index.html                                              |    2 
 src/app/routes/home-page/home-page.module.ts                |   13 ++
 src/assets/tmp/img/No1.png                                  |    0 
 src/assets/tmp/img/logo.png                                 |    0 
 src/assets/tmp/img/logo_100x40.png                          |    0 
 src/assets/tmp/img/map_coordinates.png                      |    0 
 src/assets/tmp/img/zorro.svg                                |   34 +++++
 src/assets/tmp/img/No5.png                                  |    0 
 src/app/layout/default/header/header.component.html         |   30 ++--
 /dev/null                                                   |   63 ----------
 src/app/routes/routes-routing.module.ts                     |   80 +------------
 .angulardoc.json                                            |    4 
 src/assets/tmp/app-data.json                                |    4 
 src/assets/tmp/img/No2.png                                  |    0 
 src/assets/tmp/img/logo_44x44.png                           |    0 
 src/app/routes/home-page/home-page/home-page.component.html |   25 ++++
 src/assets/tmp/img/No4.png                                  |    0 
 24 files changed, 131 insertions(+), 184 deletions(-)

diff --git a/.angulardoc.json b/.angulardoc.json
new file mode 100644
index 0000000..196a55c
--- /dev/null
+++ b/.angulardoc.json
@@ -0,0 +1,4 @@
+{
+  "repoId": "3487b7a8-09dc-4dc4-9640-d5a366812785",
+  "lastSync": 0
+}
\ No newline at end of file
diff --git a/src/app/layout/default/header/header.component.html b/src/app/layout/default/header/header.component.html
index 510865d..72ca2b9 100644
--- a/src/app/layout/default/header/header.component.html
+++ b/src/app/layout/default/header/header.component.html
@@ -1,7 +1,7 @@
 <div class="logo">
   <a [routerLink]="['/']">
-    <img class="expanded" src="./assets/logo-full.svg" alt="{{settings.app.name}}" style="max-height:40px;" />
-    <img class="collapsed" src="./assets/logo.svg" alt="{{settings.app.name}}" style="max-height:30px;" />
+    <img class="expanded" src="./assets/tmp/img/logo_100x40.png" alt="{{settings.app.name}}" style="max-height:40px;" />
+    <img class="collapsed" src="./assets/tmp/img/logo_30x30.png" alt="{{settings.app.name}}" style="max-height:30px;" />
   </a>
 </div>
 <div class="top-nav-wrap">
@@ -13,38 +13,38 @@
       </div>
     </li>
     <!-- Github Page -->
-    <li>
+    <!-- <li>
       <a class="item" href="//github.com/cipchk/ng-alain" target="_blank">
         <i class="anticon anticon-github"></i>
       </a>
-    </li>
+    </li> -->
     <!-- Lock Page -->
-    <li class="hidden-xs">
+    <!-- <li class="hidden-xs">
       <div class="item" [routerLink]="['/lock']">
         <i class="anticon anticon-lock"></i>
       </div>
-    </li>
+    </li> -->
     <!-- Search Button -->
-    <li class="header-search__btn" (click)="searchToggleChange()">
+    <!-- <li class="header-search__btn" (click)="searchToggleChange()">
       <div class="item">
         <i class="anticon anticon-search"></i>
       </div>
-    </li>
+    </li> -->
   </ul>
-  <header-search class="header-search" [toggleChange]="searchToggleStatus"></header-search>
+  <!-- <header-search class="header-search" [toggleChange]="searchToggleStatus"></header-search> -->
   <ul class="top-nav">
     <!-- Notify -->
-    <li>
+    <!-- <li>
       <header-notify></header-notify>
-    </li>
+    </li> -->
     <!-- Task -->
-    <li class="hidden-xs">
+    <!-- <li class="hidden-xs">
       <header-task></header-task>
-    </li>
+    </li> -->
     <!-- App Icons -->
-    <li class="hidden-xs">
+    <!-- <li class="hidden-xs">
       <header-icon></header-icon>
-    </li>
+    </li> -->
     <!-- Settings -->
     <li class="hidden-xs">
       <nz-dropdown nzTrigger="click" nzPlacement="bottomRight">
diff --git a/src/app/routes/callback/callback.component.ts b/src/app/routes/callback/callback.component.ts
deleted file mode 100644
index 33392ad..0000000
--- a/src/app/routes/callback/callback.component.ts
+++ /dev/null
@@ -1,35 +0,0 @@
-import { Component, OnInit } from '@angular/core';
-import { ActivatedRoute, Router } from '@angular/router';
-import { SocialService } from '@delon/auth';
-
-@Component({
-  selector: 'app-callback',
-  template: ``,
-  providers: [SocialService],
-})
-export class CallbackComponent implements OnInit {
-  type: string;
-
-  constructor(
-    private socialService: SocialService,
-    private route: ActivatedRoute,
-    private router: Router,
-  ) {}
-
-  ngOnInit(): void {
-    this.route.params.subscribe(params => {
-      this.type = params['type'];
-      this.mockModel();
-    });
-  }
-
-  private mockModel() {
-    this.socialService.callback({
-      token: '123456789',
-      name: 'cipchk',
-      email: `${this.type}@${this.type}.com`,
-      id: 10000,
-      time: +new Date(),
-    });
-  }
-}
diff --git a/src/app/routes/dashboard/analysis/analysis.component.html b/src/app/routes/dashboard/analysis/analysis.component.html
deleted file mode 100644
index 2b95509..0000000
--- a/src/app/routes/dashboard/analysis/analysis.component.html
+++ /dev/null
@@ -1,226 +0,0 @@
-<page-header></page-header>
-<div nz-row [nzGutter]="24" class="pt-lg">
-  <div nz-col nzXs="24" nzSm="12" nzMd="12" nzLg="6">
-    <g2-card [title]="'������������'" total="�� 126,560" contentHeight="44px" [action]="action1" [footer]="footer1">
-      <ng-template #action1>
-        <nz-tooltip [nzTitle]="'������������'">
-          <i nz-tooltip class="anticon anticon-info-circle-o"></i>
-        </nz-tooltip>
-      </ng-template>
-      <trend flag="up" style="display:block; margin-top:2px;">���������
-        <span class="pl-sm">12%</span>
-      </trend>
-      <trend flag="down">���������
-        <span class="pl-sm">11%</span>
-      </trend>
-      <ng-template #footer1>
-        <p class="text-truncate mb0">���������������
-          <span class="ml-sm">���12,423</span>
-        </p>
-      </ng-template>
-    </g2-card>
-  </div>
-  <div nz-col nzXs="24" nzSm="12" nzMd="12" nzLg="6">
-    <g2-card [title]="'���������'" total="8,848" contentHeight="46px" [action]="action2" [footer]="footer2">
-      <ng-template #action2>
-        <nz-tooltip [nzTitle]="'������������'">
-          <i nz-tooltip class="anticon anticon-info-circle-o"></i>
-        </nz-tooltip>
-      </ng-template>
-      <g2-mini-area color="#975FE4" height="46" [data]="data.visitData"></g2-mini-area>
-      <ng-template #footer2>
-        <p class="text-truncate mb0">������������
-          <span class="ml-sm">1,234</span>
-        </p>
-      </ng-template>
-    </g2-card>
-  </div>
-  <div nz-col nzXs="24" nzSm="12" nzMd="12" nzLg="6">
-    <g2-card [title]="'������������'" total="6,560" contentHeight="46px" [action]="action3" [footer]="footer3">
-      <ng-template #action3>
-        <nz-tooltip [nzTitle]="'������������'">
-          <i nz-tooltip class="anticon anticon-info-circle-o"></i>
-        </nz-tooltip>
-      </ng-template>
-      <g2-mini-bar height="46" [data]="data.visitData"></g2-mini-bar>
-      <ng-template #footer3>
-        <p class="text-truncate mb0">���������
-          <span class="ml-sm">60%</span>
-        </p>
-      </ng-template>
-    </g2-card>
-  </div>
-  <div nz-col nzXs="24" nzSm="12" nzMd="12" nzLg="6">
-    <g2-card [title]="'������������������'" total="78%" contentHeight="46px" [action]="action4" [footer]="footer4">
-      <ng-template #action4>
-        <nz-tooltip [nzTitle]="'������������'">
-          <i nz-tooltip class="anticon anticon-info-circle-o"></i>
-        </nz-tooltip>
-      </ng-template>
-      <g2-mini-progress height="46" percent="78" strokeWidth="8" target="80" color="#13C2C2"></g2-mini-progress>
-      <ng-template #footer4>
-        <div class="d-flex justify-content-between">
-          <trend flag="up">���������
-            <span class="pl-sm">12%</span>
-          </trend>
-          <trend flag="down">���������
-            <span class="pl-sm">11%</span>
-          </trend>
-        </div>
-      </ng-template>
-    </g2-card>
-  </div>
-</div>
-<nz-card [nzLoading]="loading" [nzBordered]="false" class="ant-card__body-nopadding sales-card">
-  <nz-tabset [nzTabBarExtraContent]="extraTemplate">
-    <nz-tab nzTitle="���������">
-      <div nz-row>
-        <div nz-col nzXs="24" nzSm="24" nzMd="12" nzLg="16">
-          <div class="bar">
-            <g2-bar height="295" [title]="'���������������'" [data]="data.salesData"></g2-bar>
-          </div>
-        </div>
-        <div nz-col nzXs="24" nzSm="24" nzMd="12" nzLg="8">
-          <div class="rank-list">
-            <h4 class="rank-title">���������������������</h4>
-            <ul>
-              <li *ngFor="let i of rankingListData; let idx = index">
-                <div>
-                  <span class="icon" [ngClass]="{'active': idx < 3}">{{idx+1}}</span>
-                  {{i.title}}
-                </div>
-                <span>{{i.total | number: '3.0'}}</span>
-              </li>
-            </ul>
-          </div>
-        </div>
-      </div>
-    </nz-tab>
-    <nz-tab nzTitle="���������">
-      <div nz-row>
-        <div nz-col nzXs="24" nzSm="24" nzMd="12" nzLg="16">
-          <div class="bar">
-            <g2-bar height="295" [title]="'���������������'" [data]="data.salesData"></g2-bar>
-          </div>
-        </div>
-        <div nz-col nzXs="24" nzSm="24" nzMd="12" nzLg="8">
-          <div class="rank-list">
-            <h4 class="rank-title">���������������������</h4>
-            <ul>
-              <li *ngFor="let i of rankingListData; let idx = index">
-                <div>
-                  <span class="icon" [ngClass]="{'active': idx < 3}">{{idx+1}}</span>
-                  {{i.title}}
-                </div>
-                <span>{{i.total | number: '3.0'}}</span>
-              </li>
-            </ul>
-          </div>
-        </div>
-      </div>
-    </nz-tab>
-    <ng-template #extraTemplate>
-      <div class="sales-extra-wrap">
-        <div class="sales-extra">
-          <a (click)="setDate('today')">������</a>
-          <a (click)="setDate('week')">������</a>
-          <a (click)="setDate('month')">������</a>
-          <a (click)="setDate('year')">������</a>
-        </div>
-        <nz-range-picker [(ngModel)]="date_range" style="display:inline-block; width: 256px;"></nz-range-picker>
-      </div>
-    </ng-template>
-  </nz-tabset>
-</nz-card>
-<div nz-row [nzGutter]="24">
-  <div nz-col nzXs="24" nzSm="24" nzMd="24" nzLg="12">
-    <nz-card [nzLoading]="loading" [nzBordered]="false" nzTitle="������������������" [nzExtra]="extraOp">
-      <ng-template #extraOp>
-        <nz-dropdown>
-          <i class="anticon anticon-ellipsis" nz-dropdown></i>
-          <ul nz-menu>
-            <li nz-menu-item>���������</li>
-            <li nz-menu-item>���������</li>
-          </ul>
-        </nz-dropdown>
-      </ng-template>
-      <div nz-row [nzGutter]="64">
-        <div nz-col nzXs="24" nzSm="12" class="mb-md">
-          <number-info total="12,321" subTotal="17.1" status="up" [subTitle]="subTitle">
-            <ng-template #subTitle>
-              ���������������
-              <nz-tooltip [nzTitle]="'������������'">
-                <i nz-tooltip class="anticon anticon-info-circle-o ml-sm"></i>
-              </nz-tooltip>
-            </ng-template>
-          </number-info>
-          <g2-mini-area [line]="true" height="45" [data]="data.visitData2"></g2-mini-area>
-        </div>
-        <div nz-col nzXs="24" nzSm="12" class="mb-md">
-          <number-info subTitle="������������������" total="2.7" subTotal="26.2" status="down"></number-info>
-          <g2-mini-area [line]="true" height="45" [data]="data.visitData2"></g2-mini-area>
-        </div>
-      </div>
-      <simple-table [data]="data.searchData" [columns]="searchColumn" size="small" ps="5" [toTopInChange]="false">
-        <ng-template st-row="range" let-i>
-          <trend [flag]="i.status === 1 ? 'down' : 'up'">
-            <span>{{i.range}}%</span>
-          </trend>
-        </ng-template>
-      </simple-table>
-    </nz-card>
-  </div>
-  <div nz-col nzXs="24" nzSm="24" nzMd="24" nzLg="12">
-    <nz-card [nzLoading]="loading" [nzBordered]="false" nzTitle="���������������������" [nzBodyStyle]="{'padding.px': 24}" [nzExtra]="extra"
-      class="sales-card" style="min-height: 482px;">
-      <ng-template #extra>
-        <div class="sales-card-extra">
-          <nz-dropdown>
-            <i class="anticon anticon-icon-group" nz-dropdown nzType="ellipsis"></i>
-            <ul nz-menu>
-              <li nz-menu-item>���������</li>
-              <li nz-menu-item>���������</li>
-            </ul>
-          </nz-dropdown>
-          <div class="sales-type-radio">
-            <nz-radio-group [(ngModel)]="salesType" (ngModelChange)="changeSaleType()">
-              <label nz-radio-button [nzValue]="'all'">
-                <span>������������</span>
-              </label>
-              <label nz-radio-button [nzValue]="'online'">
-                <span>������</span>
-              </label>
-              <label nz-radio-button [nzValue]="'offline'">
-                <span>������</span>
-              </label>
-            </nz-radio-group>
-          </div>
-        </div>
-      </ng-template>
-      <h4 class="margin:8px 0 32px 0;">���������</h4>
-      <g2-pie [hasLegend]="true" subTitle="���������" [height]="248" [lineWidth]="4" [total]="salesTotal" [data]="salesPieData" [valueFormat]="handlePieValueFormat">
-      </g2-pie>
-    </nz-card>
-  </div>
-</div>
-<nz-card [nzLoading]="loading" [nzBordered]="false" [nzBodyStyle]="{'padding': '0 0 32px'}" class="offline-card mt-lg">
-  <nz-tabset [(nzSelectedIndex)]="_activeTab" (nzSelectChange)="_tabChange($event)">
-    <nz-tab *ngFor="let tab of data.offlineData; let i = index;" [nzTitle]="nzTabHeading">
-      <ng-template #nzTabHeading>
-        <div nz-row [nzGutter]="8" style="width: 138px; margin: 8px 0;">
-          <div nz-col [nzSpan]="12">
-            <number-info [title]="tab.name" subTitle="���������" gap="2" [total]="(tab.cvr * 100) + '%'" [theme]="i !== _activeTab && 'light'"></number-info>
-          </div>
-          <div nz-col [nzSpan]="12" style="padding-top: 36px;">
-            <g2-pie [animate]="false" [color]="i !== _activeTab && '#BDE4FF'" [inner]="0.55" [tooltip]="false" [padding]="[0, 0, 0, 0]"
-              [percent]="tab.cvr * 100" [height]="64">
-            </g2-pie>
-          </div>
-        </div>
-      </ng-template>
-      <div class="px-lg">
-        <g2-timeline [data]="tab.chart" [titleMap]="{ y1: '���������', y2: '������������' }"></g2-timeline>
-      </div>
-    </nz-tab>
-  </nz-tabset>
-</nz-card>
diff --git a/src/app/routes/dashboard/analysis/analysis.component.less b/src/app/routes/dashboard/analysis/analysis.component.less
deleted file mode 100644
index 8487fe6..0000000
--- a/src/app/routes/dashboard/analysis/analysis.component.less
+++ /dev/null
@@ -1,135 +0,0 @@
-@import 'node_modules/@delon/theme/styles/default';
-:host ::ng-deep {
-  .icon-group {
-    transition: color 0.32s;
-    color: @text-color-secondary;
-    cursor: pointer;
-    margin-left: 16px;
-    &:hover {
-      color: @text-color;
-    }
-  }
-  .rank-list {
-    padding: 0 32px 32px 72px;
-    ul {
-      margin-top: 25px;
-    }
-    li {
-      zoom: 1;
-      margin-top: 16px;
-      display: flex;
-      justify-content: space-between;
-      .icon {
-        background-color: #f5f5f5;
-        border-radius: 20px;
-        display: inline-block;
-        font-size: 12px;
-        font-weight: 600;
-        margin-right: 24px;
-        height: 20px;
-        line-height: 20px;
-        width: 20px;
-        text-align: center;
-      }
-      .active {
-        background-color: #314659;
-        color: #fff;
-      }
-    }
-  }
-  .sales-extra {
-    display: inline-block;
-    margin-right: 24px;
-    a {
-      margin-left: 24px;
-    }
-  }
-  .sales-card {
-    .bar {
-      padding: 0 0 32px 32px;
-    }
-    .rank {
-      padding: 0 32px 32px 72px;
-    }
-    .ant-tabs-tab {
-      padding-top: 16px;
-      padding-bottom: 14px;
-      line-height: 24px;
-    }
-    .ant-tabs-extra-content {
-      padding-right: 24px;
-      line-height: 55px;
-    }
-    .ant-card-head {
-      position: relative;
-    }
-  }
-  .sales-card-extra {
-    height: 68px;
-  }
-  .sales-type-radio {
-    position: absolute;
-    left: 24px;
-    bottom: 15px;
-  }
-  .offline-card {
-    .ant-tabs-ink-bar {
-      bottom: auto;
-    }
-    .ant-tabs-bar {
-      border-bottom: none;
-    }
-    .ant-tabs-nav-container-scrolling {
-      padding-left: 40px;
-      padding-right: 40px;
-    }
-    .ant-tabs-tab-prev-icon:before {
-      position: relative;
-      left: 6px;
-    }
-    .ant-tabs-tab-next-icon:before {
-      position: relative;
-      right: 6px;
-    }
-  }
-  .trend-text {
-    margin-left: 8px;
-    color: @heading-color;
-  }
-
-  @media screen and (max-width: @screen-lg) {
-    .sales-extra {
-      display: none;
-    }
-    .rank-list {
-      li {
-        span:first-child {
-          margin-right: 8px;
-        }
-      }
-    }
-  }
-
-  @media screen and (max-width: @screen-md) {
-    .rank-title {
-      margin-top: 16px;
-    }
-    .sales-card .bar {
-      padding: 16px;
-    }
-  }
-
-  @media screen and (max-width: @screen-sm) {
-    .sales-extra-wrap {
-      display: none;
-    }
-    .sales-card {
-      .ant-tabs-content {
-        padding-top: 30px;
-      }
-    }
-  }
-  .ant-table-pagination {
-    margin-bottom: 0;
-  }
-}
diff --git a/src/app/routes/dashboard/analysis/analysis.component.ts b/src/app/routes/dashboard/analysis/analysis.component.ts
deleted file mode 100644
index fa81d14..0000000
--- a/src/app/routes/dashboard/analysis/analysis.component.ts
+++ /dev/null
@@ -1,88 +0,0 @@
-import { Component, OnInit } from '@angular/core';
-import { NzMessageService } from 'ng-zorro-antd';
-import { SimpleTableColumn } from '@delon/abc';
-import { getTimeDistance, yuan } from '@delon/util';
-import { _HttpClient } from '@delon/theme';
-
-@Component({
-  selector: 'app-dashboard-analysis',
-  templateUrl: './analysis.component.html',
-  styleUrls: ['./analysis.component.less'],
-})
-export class DashboardAnalysisComponent implements OnInit {
-  data: any = {
-    salesData: [],
-    offlineData: [],
-  };
-  loading = true;
-  date_range: Date[] = [];
-  rankingListData: any[] = Array(7)
-    .fill({})
-    .map((item, i) => {
-      return {
-        title: `��������� ${i} ������`,
-        total: 323234,
-      };
-    });
-  searchColumn: SimpleTableColumn[] = [
-    { title: '������', index: 'index' },
-    {
-      title: '���������������',
-      index: 'keyword',
-      click: (item: any) => this.msg.success(item.keyword),
-    },
-    {
-      type: 'number',
-      title: '���������',
-      index: 'count',
-      sorter: (a, b) => a.count - b.count,
-    },
-    {
-      type: 'number',
-      title: '���������',
-      index: 'range',
-      render: 'range',
-      sorter: (a, b) => a.range - b.range,
-    },
-  ];
-
-  constructor(private http: _HttpClient, public msg: NzMessageService) {}
-
-  ngOnInit() {
-    this.http.get('/chart').subscribe((res: any) => {
-      res.offlineData.forEach((item: any) => {
-        item.chart = Object.assign([], res.offlineChartData);
-      });
-      this.data = res;
-      this.loading = false;
-      this.changeSaleType();
-    });
-  }
-
-  setDate(type: any) {
-    this.date_range = getTimeDistance(type);
-  }
-
-  salesType = 'all';
-  salesPieData: any;
-  salesTotal = 0;
-  changeSaleType() {
-    this.salesPieData =
-      this.salesType === 'all'
-        ? this.data.salesTypeData
-        : this.salesType === 'online'
-          ? this.data.salesTypeDataOnline
-          : this.data.salesTypeDataOffline;
-    if (this.salesPieData)
-      this.salesTotal = this.salesPieData.reduce((pre, now) => now.y + pre, 0);
-  }
-
-  handlePieValueFormat(value: any) {
-    return yuan(value);
-  }
-
-  _activeTab = 0;
-  _tabChange(value: any) {
-    console.log('tab', this._activeTab, value);
-  }
-}
diff --git a/src/app/routes/dashboard/monitor/monitor.component.html b/src/app/routes/dashboard/monitor/monitor.component.html
deleted file mode 100644
index f3acdf5..0000000
--- a/src/app/routes/dashboard/monitor/monitor.component.html
+++ /dev/null
@@ -1,78 +0,0 @@
-<div nz-row [nzGutter]="24" class="pt-lg">
-  <div nz-col nzXs="24" nzSm="24" nzMd="24" nzLg="18">
-    <nz-card nzTitle="������������������������" [nzBordered]="false" class="mb-lg">
-      <div nz-row>
-        <div nz-col nzXs="24" nzSm="12" nzMd="6">
-          <number-info subTitle="������������������" [total]="'124,543,233'" suffix="���"></number-info>
-        </div>
-        <div nz-col nzXs="24" nzSm="12" nzMd="6">
-          <number-info subTitle="���������������������" [total]="'92%'"></number-info>
-        </div>
-        <div nz-col nzXs="24" nzSm="12" nzMd="6">
-          <number-info subTitle="������������������" [total]="lastTotalTime">
-            <ng-template #lastTotalTime>
-              <count-down [target]="30"></count-down>
-            </ng-template>
-          </number-info>
-        </div>
-        <div nz-col nzXs="24" nzSm="12" nzMd="6">
-          <number-info subTitle="������������������" [total]="234" suffix="���"></number-info>
-        </div>
-      </div>
-      <div class="map-chart">
-        <nz-tooltip [nzTitle]="'������������������'">
-          <img nz-tooltip src="https://gw.alipayobjects.com/zos/rmsportal/HBWnDEUXCnGnGrRfrpKa.png" alt="map" />
-        </nz-tooltip>
-      </div>
-    </nz-card>
-  </div>
-  <div nz-col nzXs="24" nzSm="24" nzMd="24" nzLg="6">
-    <nz-card nzTitle="������������������" [nzBordered]="false" class="mb-lg">
-      <div class="active-chart">
-        <number-info subTitle="������������" total="������������������"></number-info>
-        <g2-mini-area [animate]="false" [line]="true" [borderWidth]="2" [height]="84" [yAxis]="activeYAxis" [data]="activeData"></g2-mini-area>
-        <ng-container *ngIf="activeData?.length > 0">
-          <div class="active-grid">
-            <p>{{activeStat.max}} ������</p>
-            <p>{{activeStat.min}} ������</p>
-          </div>
-          <div class="active-legend">
-            <span>00:00</span>
-            <span>{{activeStat.t1}}</span>
-            <span>{{activeStat.t2}}</span>
-          </div>
-        </ng-container>
-      </div>
-    </nz-card>
-    <nz-card nzTitle="������������" [nzBordered]="false" [nzBodyStyle]="{'text-align': 'center'}" class="mb-lg">
-      <g2-gauge [title]="'���������'" [height]="180" [percent]="87" [format]="couponFormat"></g2-gauge>
-    </nz-card>
-  </div>
-</div>
-<div nz-row [nzGutter]="24">
-  <div nz-col nzXs="24" nzSm="24" nzLg="12" class="mb-lg">
-    <nz-card nzTitle="���������������" [nzBordered]="false" class="pie-card">
-      <div nz-row [nzGutter]="4" style="padding:16px 0">
-        <div nz-col [nzSpan]="8">
-          <g2-pie [animate]="false" [percent]="28" subTitle="������������" total="28%" [height]="128" [lineWidth]="2"></g2-pie>
-        </div>
-        <div nz-col [nzSpan]="8">
-          <g2-pie [animate]="false" color="#5DDECF" [percent]="22" subTitle="������" total="22%" [height]="128" [lineWidth]="2"></g2-pie>
-        </div>
-        <div nz-col [nzSpan]="8">
-          <g2-pie [animate]="false" color="#2FC25B" [percent]="32" subTitle="������" total="32%" [height]="128" [lineWidth]="2"></g2-pie>
-        </div>
-      </div>
-    </nz-card>
-  </div>
-  <div nz-col nzXs="24" nzSm="24" nzLg="6" class="mb-lg">
-    <nz-card nzTitle="������������" [nzBordered]="false" [nzBodyStyle]="{'overflow': 'hidden'}">
-      <g2-tag-cloud [data]="tags" [height]="165"></g2-tag-cloud>
-    </nz-card>
-  </div>
-  <div nz-col nzXs="24" nzSm="24" nzLg="6" class="mb-lg">
-    <nz-card nzTitle="������������" [nzBordered]="false" [nzBodyStyle]="{'overflow': 'hidden'}">
-      <g2-water-wave [title]="'������������������'" [percent]="34" [height]="165"></g2-water-wave>
-    </nz-card>
-  </div>
-</div>
diff --git a/src/app/routes/dashboard/monitor/monitor.component.less b/src/app/routes/dashboard/monitor/monitor.component.less
deleted file mode 100644
index 3da2ad8..0000000
--- a/src/app/routes/dashboard/monitor/monitor.component.less
+++ /dev/null
@@ -1,58 +0,0 @@
-@import 'node_modules/@delon/theme/styles/default';
-:host ::ng-deep {
-  .map-chart {
-    padding-top: 24px;
-    height: 457px;
-    text-align: center;
-    img {
-      display: inline-block;
-      max-width: 100%;
-      max-height: 437px;
-    }
-  }
-  .pie-card {
-    .pie-stat {
-      font-size: 24px !important;
-    }
-  }
-  .active-chart {
-    position: relative;
-    g2-mini-area {
-      margin-top: 32px;
-    }
-    .active-grid {
-      p {
-        position: absolute;
-        top: 80px;
-      }
-      p:last-child {
-        top: 115px;
-      }
-    }
-    .active-legend {
-      position: relative;
-      font-size: 0;
-      margin-top: 8px;
-      height: 20px;
-      line-height: 20px;
-      span {
-        display: inline-block;
-        font-size: 12px;
-        text-align: center;
-        width: 33.33%;
-      }
-      span:first-child {
-        text-align: left;
-      }
-      span:last-child {
-        text-align: right;
-      }
-    }
-  }
-
-  @media screen and (max-width: @screen-lg) {
-    .map-chart {
-      height: auto;
-    }
-  }
-}
diff --git a/src/app/routes/dashboard/monitor/monitor.component.ts b/src/app/routes/dashboard/monitor/monitor.component.ts
deleted file mode 100644
index ef25f13..0000000
--- a/src/app/routes/dashboard/monitor/monitor.component.ts
+++ /dev/null
@@ -1,99 +0,0 @@
-import { Component, OnInit, OnDestroy } from '@angular/core';
-import { NzMessageService } from 'ng-zorro-antd';
-import { zip } from 'rxjs';
-import { getTimeDistance, yuan } from '@delon/util';
-import { _HttpClient } from '@delon/theme';
-
-@Component({
-  selector: 'app-dashboard-monitor',
-  templateUrl: './monitor.component.html',
-  styleUrls: ['./monitor.component.less'],
-})
-export class DashboardMonitorComponent implements OnInit, OnDestroy {
-  data: any = {};
-  tags = [];
-  loading = true;
-  q: any = {
-    start: null,
-    end: null,
-  };
-
-  constructor(private http: _HttpClient, public msg: NzMessageService) {}
-
-  ngOnInit() {
-    zip(this.http.get('/chart'), this.http.get('/chart/tags')).subscribe(
-      ([res, tags]: [any, any]) => {
-        this.data = res;
-        tags.list[
-          Math.floor(Math.random() * tags.list.length) + 1
-        ].value = 1000;
-        this.tags = tags.list;
-        this.loading = false;
-      },
-    );
-
-    // active chart
-    this.genActiveData();
-    this.activeTime$ = setInterval(() => this.genActiveData(), 1000);
-  }
-
-  // region: active chart
-
-  activeTime$: any;
-
-  activeYAxis = {
-    tickCount: 3,
-    tickLine: false,
-    labels: false,
-    title: false,
-    line: false,
-  };
-
-  activeData: any[] = [];
-
-  activeStat = {
-    max: 0,
-    min: 0,
-    t1: '',
-    t2: '',
-  };
-
-  genActiveData() {
-    const activeData = [];
-    for (let i = 0; i < 24; i += 1) {
-      activeData.push({
-        x: `${i.toString().padStart(2, '0')}:00`,
-        y: i * 50 + Math.floor(Math.random() * 200),
-      });
-    }
-    this.activeData = activeData;
-    // stat
-    this.activeStat.max = [...activeData].sort()[activeData.length - 1].y + 200;
-    this.activeStat.min = [...activeData].sort()[
-      Math.floor(activeData.length / 2)
-    ].y;
-    this.activeStat.t1 = activeData[Math.floor(activeData.length / 2)].x;
-    this.activeStat.t2 = activeData[activeData.length - 1].x;
-  }
-
-  // endregion
-
-  couponFormat(val: any) {
-    switch (parseInt(val, 10)) {
-      case 20:
-        return '���';
-      case 40:
-        return '���';
-      case 60:
-        return '���';
-      case 80:
-        return '���';
-      default:
-        return '';
-    }
-  }
-
-  ngOnDestroy(): void {
-    if (this.activeTime$) clearInterval(this.activeTime$);
-  }
-}
diff --git a/src/app/routes/dashboard/v1/v1.component.html b/src/app/routes/dashboard/v1/v1.component.html
deleted file mode 100644
index 69c7e2b..0000000
--- a/src/app/routes/dashboard/v1/v1.component.html
+++ /dev/null
@@ -1,150 +0,0 @@
-<div class="content__title">
-  <h1>
-    Dashboard
-    <small>Welcome !</small>
-  </h1>
-</div>
-<quick-menu>
-  <nz-list [nzBordered]="false" [nzSplit]="false">
-    <nz-list-item>
-      <a routerLink="/">Home</a>
-    </nz-list-item>
-    <nz-list-item>
-      <a routerLink="/widgets">Widgets</a>
-    </nz-list-item>
-    <nz-list-item>
-      <a routerLink="/style/typography">typography</a>
-    </nz-list-item>
-    <nz-list-item>
-      <a routerLink="/style/gridmasonry">gridmasonry</a>
-    </nz-list-item>
-    <nz-list-item>
-      <a routerLink="/pro/result/success">success result</a>
-    </nz-list-item>
-  </nz-list>
-</quick-menu>
-<div nz-row nzGutter="16">
-  <div nz-col nzXs="24" nzSm="12" nzMd="6" class="mb-md">
-    <div nz-row nzType="flex" nzAlign="middle" class="bg-primary rounded-md">
-      <div nz-col nzSpan="12" class="p-md text-white">
-        <div class="h2 mt0">123,456</div>
-        <p class="text-nowrap mb0">Website Traffics</p>
-      </div>
-      <div nz-col nzSpan="12">
-        <g2-mini-bar height="35" color="#fff" borderWidth="3" [padding]="[36, 30, 30, 30]" [data]="webSite"></g2-mini-bar>
-      </div>
-    </div>
-  </div>
-  <div nz-col nzXs="24" nzSm="12" nzMd="6" class="mb-md">
-    <div nz-row nzType="flex" nzAlign="middle" class="bg-success rounded-md">
-      <div nz-col nzSpan="12" class="p-md text-white">
-        <div class="h2 mt0">234,567K</div>
-        <p class="text-nowrap mb0">Website Impressions</p>
-      </div>
-      <div nz-col nzSpan="12">
-        <g2-mini-bar height="35" color="#fff" borderWidth="3" [padding]="[36, 30, 30, 30]" [data]="webSite"></g2-mini-bar>
-      </div>
-    </div>
-  </div>
-  <div nz-col nzXs="24" nzSm="12" nzMd="6" class="mb-md">
-    <div nz-row nzType="flex" nzAlign="middle" class="bg-orange rounded-md">
-      <div nz-col nzSpan="12" class="p-md text-white">
-        <div class="h2 mt0">$458,778</div>
-        <p class="text-nowrap mb0">Total Sales</p>
-      </div>
-      <div nz-col nzSpan="12">
-        <g2-mini-bar height="35" color="#fff" borderWidth="3" [padding]="[36, 30, 30, 30]" [data]="webSite"></g2-mini-bar>
-      </div>
-    </div>
-  </div>
-  <div nz-col nzXs="24" nzSm="12" nzMd="6" class="mb-md">
-    <div nz-row nzType="flex" nzAlign="middle" class="bg-magenta rounded-md">
-      <div nz-col nzSpan="12" class="p-md text-white">
-        <div class="h2 mt0">456</div>
-        <p class="text-nowrap mb0">Support Tickets</p>
-      </div>
-      <div nz-col nzSpan="12">
-        <g2-mini-bar height="35" color="#fff" borderWidth="3" [padding]="[36, 30, 30, 30]" [data]="webSite"></g2-mini-bar>
-      </div>
-    </div>
-  </div>
-</div>
-<div nz-row nzGutter="16">
-  <div nz-col nzXs="24" nzMd="12">
-    <nz-card [nzBordered]="false" [nzTitle]="title">
-      <ng-template #title>
-        Sales Statistics
-        <small class="text-sm font-weight-normal">Business Expectations & Retail Sales Statistics</small>
-      </ng-template>
-      <g2-bar height="275" [data]="salesData"></g2-bar>
-    </nz-card>
-  </div>
-  <div nz-col nzXs="24" nzMd="12">
-    <nz-card [nzTitle]="title" [nzBordered]="false">
-      <ng-template #title>
-        Growth Rate
-        <small class="text-sm font-weight-normal">Business Expectations & Retail Sales Statistics</small>
-      </ng-template>
-      <g2-timeline [data]="offlineChartData" [height]="239" [padding]="[0, 0, 0, 0]" [titleMap]="{ y1: '���������', y2: '������������' }"></g2-timeline>
-    </nz-card>
-  </div>
-</div>
-<div nz-row nzGutter="16">
-  <div nz-col nzXs="24" nzMd="12">
-    <nz-card [nzBordered]="false" class="ant-card__img">
-      <img class="img" src="//os.alipayobjects.com/rmsportal/GhjqstwSgxBXrZS.png">
-      <div class="p-md">
-        <h3>ANT DESIGN</h3>
-        <p class="text-grey">A UI Design Language</p>
-        <ol class="list-styled text-lg pt-md">
-          <li>Designed by experienced team, and showcase dozens of inspiring projects.</li>
-          <li>Provide solutions for usual problems that may be encountered while developing enterprise-like complex UIs.</li>
-          <li>Dozens of flexible and practical reusable components that increase your productivity.</li>
-        </ol>
-        <p class="pt-md">
-          <a class="text-grey" href="//ng.ant.design" target="_blank">View Site...</a>
-        </p>
-      </div>
-    </nz-card>
-  </div>
-  <div nz-col nzXs="24" nzMd="12">
-    <nz-card [nzTitle]="title" [nzBordered]="false" class="ant-card__body-nopadding">
-      <ng-template #title>
-        Recent Posts
-        <small class="text-sm font-weight-normal">Venenatis portauam Inceptos ameteiam</small>
-      </ng-template>
-      <div nz-row [nzType]="'flex'" [nzJustify]="'center'" [nzAlign]="'middle'" class="py-sm bg-grey-lighter-h point" *ngFor="let item of todoData">
-        <div nz-col [nzSpan]="4" class="text-center">
-          <nz-avatar [nzSrc]="'./assets/tmp/img/' + item.avatar + '.png'"></nz-avatar>
-        </div>
-        <div nz-col [nzSpan]="20">
-          <strong>{{item.name}}</strong>
-          <p class="mb0">{{item.content}}</p>
-        </div>
-      </div>
-    </nz-card>
-  </div>
-  <div nz-col nzXs="24" nzMd="12">
-    <nz-card nzTitle="Todo lists" [nzBordered]="false" class="ant-card__body-nopadding">
-      <div nz-row [nzType]="'flex'" [nzJustify]="'center'" [nzAlign]="'middle'" class="py-sm bg-grey-lighter-h point" *ngFor="let item of todoData">
-        <div nz-col [nzSpan]="4" class="text-center">
-          <nz-avatar [nzSrc]="'./assets/tmp/img/' + item.avatar + '.png'"></nz-avatar>
-        </div>
-        <div nz-col [nzSpan]="18">
-          <strong>{{item.name}}</strong>
-          <p [class.text-deleted]="item.completed" class="mb0">{{item.content}}</p>
-        </div>
-        <div nz-col [nzSpan]="2" class="text-right pr-md">
-          <nz-dropdown [nzPlacement]="'topRight'">
-            <i nz-dropdown class="icon-options-vertical"></i>
-            <ul nz-menu>
-              <li nz-menu-item *ngIf="item.completed" (click)="item.completed=false">Active</li>
-              <li nz-menu-item *ngIf="!item.completed" (click)="item.completed=true">Completed</li>
-              <li nz-menu-item (click)="todoData.splice(todoData.indexOf(item), 1)">Delted</li>
-            </ul>
-          </nz-dropdown>
-        </div>
-      </div>
-    </nz-card>
-  </div>
-</div>
diff --git a/src/app/routes/dashboard/v1/v1.component.spec.ts b/src/app/routes/dashboard/v1/v1.component.spec.ts
deleted file mode 100644
index 7854384..0000000
--- a/src/app/routes/dashboard/v1/v1.component.spec.ts
+++ /dev/null
@@ -1,16 +0,0 @@
-import { TestBed, TestModuleMetadata } from '@angular/core/testing';
-import { setUpTestBed } from '@testing/common.spec';
-
-import { DashboardV1Component } from './v1.component';
-
-describe('Comoponent: DashboardV1', () => {
-  setUpTestBed(<TestModuleMetadata>{
-    declarations: [DashboardV1Component],
-  });
-
-  it('should create an instance', () => {
-    const fixture = TestBed.createComponent(DashboardV1Component);
-    const comp = fixture.debugElement.componentInstance;
-    expect(comp).toBeTruthy();
-  });
-});
diff --git a/src/app/routes/dashboard/v1/v1.component.ts b/src/app/routes/dashboard/v1/v1.component.ts
deleted file mode 100644
index ccf0158..0000000
--- a/src/app/routes/dashboard/v1/v1.component.ts
+++ /dev/null
@@ -1,62 +0,0 @@
-import { NzMessageService } from 'ng-zorro-antd';
-import { Component, OnInit } from '@angular/core';
-import { _HttpClient } from '@delon/theme';
-
-@Component({
-  selector: 'app-dashboard-v1',
-  templateUrl: './v1.component.html',
-})
-export class DashboardV1Component implements OnInit {
-  constructor(private http: _HttpClient, public msg: NzMessageService) {}
-
-  todoData: any[] = [
-    {
-      completed: true,
-      avatar: '1',
-      name: '���������',
-      content: `������������������������������������������`,
-    },
-    {
-      completed: false,
-      avatar: '2',
-      name: '������������',
-      content: `���������������������������������������`,
-    },
-    {
-      completed: false,
-      avatar: '3',
-      name: 'cipchk',
-      content: `this world was never meant for one as beautiful as you.`,
-    },
-    {
-      completed: false,
-      avatar: '4',
-      name: 'Kent',
-      content: `my heart is beating with hers`,
-    },
-    {
-      completed: false,
-      avatar: '5',
-      name: 'Are you',
-      content: `They always said that I love beautiful girl than my friends`,
-    },
-    {
-      completed: false,
-      avatar: '6',
-      name: 'Forever',
-      content: `Walking through green fields ���sunshine in my eyes.`,
-    },
-  ];
-
-  webSite: any[] = [];
-  salesData: any[] = [];
-  offlineChartData: any[] = [];
-
-  ngOnInit() {
-    this.http.get('/chart').subscribe((res: any) => {
-      this.webSite = res.visitData.slice(0, 10);
-      this.salesData = res.salesData;
-      this.offlineChartData = res.offlineChartData;
-    });
-  }
-}
diff --git a/src/app/routes/dashboard/workplace/workplace.component.html b/src/app/routes/dashboard/workplace/workplace.component.html
deleted file mode 100644
index 5b5e68b..0000000
--- a/src/app/routes/dashboard/workplace/workplace.component.html
+++ /dev/null
@@ -1,111 +0,0 @@
-<page-header>
-  <ng-template #breadcrumb>
-    <nz-breadcrumb>
-      <nz-breadcrumb-item>
-        <a [routerLink]="['/']">������</a>
-      </nz-breadcrumb-item>
-      <nz-breadcrumb-item>
-        <a [routerLink]="['/']">Dashboard</a>
-      </nz-breadcrumb-item>
-      <nz-breadcrumb-item>���������</nz-breadcrumb-item>
-    </nz-breadcrumb>
-  </ng-template>
-  <ng-template #content>
-    <div class="page-header">
-      <div class="avatar">
-        <nz-avatar nzSrc="https://gw.alipayobjects.com/zos/rmsportal/lctvVCLfRpYCkYxAsiVQ.png"></nz-avatar>
-      </div>
-      <div class="desc">
-        <div class="desc-title">���������������������������������</div>
-        <div>��������� | ���������������������������������������������������������������</div>
-      </div>
-    </div>
-  </ng-template>
-  <ng-template #extra>
-    <div class="page-extra">
-      <div>
-        <p>���������</p>
-        <p>56</p>
-      </div>
-      <div>
-        <p>���������������</p>
-        <p>8
-          <span> / 24</span>
-        </p>
-      </div>
-      <div>
-        <p>������������</p>
-        <p>2,223</p>
-      </div>
-    </div>
-  </ng-template>
-</page-header>
-<div nz-row [nzGutter]="24">
-  <div nz-col nzXs="24" nzSm="24" nzMd="16">
-    <nz-card nzTitle="������������������" [nzBordered]="false" [nzLoading]="loading" class="ant-card__body-nopadding mb-lg project-list">
-      <ng-template #extra>
-        <a (click)="msg.success('to')">������������</a>
-      </ng-template>
-      <div *ngFor="let item of notice" nz-card-grid class="project-grid">
-        <nz-card [nzBordered]="false" class="ant-card__body-nopadding mb0">
-          <nz-card-meta [nzTitle]="noticeTitle" [nzDescription]="item.description">
-            <ng-template #noticeTitle>
-              <div class="card-title">
-                <nz-avatar [nzSrc]="item.logo" [nzSize]="'small'"></nz-avatar>
-                <a (click)="msg.info('to' + item.href)">{{item.title}}</a>
-              </div>
-            </ng-template>
-          </nz-card-meta>
-          <div class="project-item">
-            <a (click)="msg.info('show user: ' + item.member)">{{item.member}}</a>
-            <span *ngIf="item.updatedAt" class="datetime" title="{{item.updatedAt}}">
-              {{item.updatedAt | _date: 'fn' }}
-            </span>
-          </div>
-        </nz-card>
-      </div>
-    </nz-card>
-    <nz-card nzTitle="������" [nzBordered]="false" [nzLoading]="loading" class="ant-card__body-nopadding mb-lg active-card">
-      <nz-list nzSize="large" class="activities">
-        <nz-list-item *ngFor="let item of activities">
-          <nz-list-item-meta [nzAvatar]="item.user.avatar" [nzTitle]="activeTitle" [nzDescription]="activeDescription">
-            <ng-template #activeTitle>
-              <a (click)="msg.success(item.user.name)" class="username">{{item.user.name}}</a>
-              &nbsp;
-              <span class="event" [innerHTML]="item.template"></span>
-            </ng-template>
-            <ng-template #activeDescription>
-              <span class="datetime" title="{{item.updatedAt}}">{{item.updatedAt | _date: 'fn'}}</span>
-            </ng-template>
-          </nz-list-item-meta>
-        </nz-list-item>
-      </nz-list>
-    </nz-card>
-  </div>
-  <div nz-col nzXs="24" nzSm="24" nzMd="8">
-    <nz-card nzTitle="������������ / ������������" [nzBordered]="false" class="ant-card__body-nopadding mb-lg">
-      <div class="links">
-        <a *ngFor="let item of links" (click)="msg.success(item.title)">{{item.title}}</a>
-        <button nz-button (click)="links.push({title: 'new titel', href: 'href'})" [nzType]="'dashed'" [nzSize]="'small'">
-          <i class="anticon anticon-plus"></i>
-          <span>������</span>
-        </button>
-      </div>
-    </nz-card>
-    <nz-card nzTitle="XX ������" [nzBordered]="false" [nzLoading]="loading" class="mb-lg">
-      <g2-radar [data]="radarData" [height]="343" [hasLegend]="true"></g2-radar>
-    </nz-card>
-    <nz-card nzTitle="������" [nzBordered]="false" [nzBodyStyle]="{'padding-top.px': 12, 'padding-bottom.px': 12 }" class="mb-lg">
-      <div class="members">
-        <div nz-row [nzGutter]="48">
-          <div nz-col [nzSpan]="12" *ngFor="let i of members">
-            <a (click)="msg.success(i.title)">
-              <nz-avatar [nzSrc]="i.logo" [nzSize]="'small'"></nz-avatar>
-              <span class="member">{{i.title}}</span>
-            </a>
-          </div>
-        </div>
-      </div>
-    </nz-card>
-  </div>
-</div>
diff --git a/src/app/routes/dashboard/workplace/workplace.component.less b/src/app/routes/dashboard/workplace/workplace.component.less
deleted file mode 100644
index d8dfe1f..0000000
--- a/src/app/routes/dashboard/workplace/workplace.component.less
+++ /dev/null
@@ -1,240 +0,0 @@
-@import 'node_modules/@delon/theme/styles/default';
-:host ::ng-deep {
-  .page-header {
-    display: flex;
-    .avatar {
-      flex: 0 1 72px;
-      margin-bottom: 8px;
-      .ant-avatar {
-        border-radius: 72px;
-        display: block;
-        width: 72px;
-        height: 72px;
-      }
-    }
-    .desc {
-      position: relative;
-      top: 4px;
-      margin-left: 24px;
-      flex: 1 1 auto;
-      color: @text-color-secondary;
-      line-height: 22px;
-      .desc-title {
-        font-size: 20px;
-        line-height: 28px;
-        font-weight: 500;
-        color: @heading-color;
-        margin-bottom: 12px;
-      }
-    }
-  }
-  .page-extra {
-    .clearfix();
-    float: right;
-    white-space: nowrap;
-    & > div {
-      padding: 0 32px;
-      position: relative;
-      display: inline-block;
-      & > p:first-child {
-        color: @text-color-secondary;
-        font-size: @font-size-base;
-        line-height: 22px;
-        margin-bottom: 4px;
-      }
-      & > p {
-        color: @heading-color;
-        font-size: 30px;
-        line-height: 38px;
-        margin: 0;
-        & > span {
-          color: @text-color-secondary;
-          font-size: 20px;
-        }
-      }
-      &:after {
-        background-color: @border-color-split;
-        position: absolute;
-        top: 8px;
-        right: 0;
-        width: 1px;
-        height: 40px;
-        content: '';
-      }
-    }
-    & > div:last-child {
-      padding-right: 0;
-      &:after {
-        display: none;
-      }
-    }
-  }
-  .project-list {
-    .ant-card-meta-description {
-      color: @text-color-secondary;
-      height: 44px;
-      line-height: 22px;
-      overflow: hidden;
-    }
-    .card-title {
-      font-size: 0;
-      a {
-        color: @heading-color;
-        margin-left: 12px;
-        line-height: 24px;
-        height: 24px;
-        display: inline-block;
-        vertical-align: top;
-        font-size: @font-size-base;
-        &:hover {
-          color: @primary-color;
-        }
-      }
-    }
-    .project-grid {
-      width: 33.33%;
-    }
-    .project-item {
-      display: flex;
-      margin-top: 8px;
-      overflow: hidden;
-      font-size: 12px;
-      height: 20px;
-      line-height: 20px;
-      .textOverflow();
-      a {
-        color: @text-color-secondary;
-        display: inline-block;
-        flex: 1 1 0;
-        .textOverflow();
-        &:hover {
-          color: @primary-color;
-        }
-      }
-      .datetime {
-        color: @disabled-color;
-        flex: 0 0 auto;
-        float: right;
-      }
-    }
-  }
-  .activities {
-    padding: 0 24px 8px;
-    .username {
-      color: @text-color;
-    }
-    .event {
-      font-weight: normal;
-    }
-  }
-  .members {
-    a {
-      display: block;
-      margin: 12px 0;
-      line-height: 24px;
-      height: 24px;
-      .textOverflow();
-      .member {
-        font-size: @font-size-base;
-        color: @text-color;
-        line-height: 24px;
-        max-width: 100px;
-        vertical-align: top;
-        margin-left: 12px;
-        transition: all 0.3s;
-        display: inline-block;
-        .textOverflow();
-      }
-      &:hover {
-        span {
-          color: @primary-color;
-        }
-      }
-    }
-  }
-  .datetime {
-    color: @disabled-color;
-  }
-  .links {
-    padding: 20px 0 8px 24px;
-    font-size: 0;
-    > a {
-      color: @text-color;
-      display: inline-block;
-      font-size: @font-size-base;
-      margin-bottom: 13px;
-      width: 25%;
-      &:hover {
-        color: @primary-color;
-      }
-    }
-  }
-
-  @media screen and (max-width: @screen-xl) and (min-width: @screen-lg) {
-    .active-card {
-      margin-bottom: 24px;
-    }
-    .members {
-      margin-bottom: 0;
-    }
-    .page-extra {
-      margin-left: -44px;
-      & > div {
-        padding: 0 16px;
-      }
-    }
-  }
-
-  @media screen and (max-width: @screen-lg) {
-    .active-card {
-      margin-bottom: 24px;
-    }
-    .members {
-      margin-bottom: 0;
-    }
-    .page-extra {
-      float: none;
-      margin-right: 0;
-      & > div {
-        padding: 0 16px;
-        text-align: left;
-        &:after {
-          display: none;
-        }
-      }
-    }
-  }
-
-  @media screen and (max-width: @screen-md) {
-    .page-extra {
-      margin-left: -16px;
-    }
-    .project-list {
-      .project-grid {
-        width: 50%;
-      }
-    }
-  }
-
-  @media screen and (max-width: @screen-sm) {
-    .page-header {
-      display: block;
-      .desc {
-        margin-left: 0;
-      }
-    }
-    .page-extra {
-      & > div {
-        float: none;
-      }
-    }
-  }
-
-  @media screen and (max-width: @screen-xs) {
-    .project-list {
-      .project-grid {
-        width: 100%;
-      }
-    }
-  }
-}
diff --git a/src/app/routes/dashboard/workplace/workplace.component.ts b/src/app/routes/dashboard/workplace/workplace.component.ts
deleted file mode 100644
index 2e366e0..0000000
--- a/src/app/routes/dashboard/workplace/workplace.component.ts
+++ /dev/null
@@ -1,114 +0,0 @@
-import { Component, OnInit, OnDestroy } from '@angular/core';
-import { zip } from 'rxjs';
-import { NzMessageService } from 'ng-zorro-antd';
-import { getTimeDistance, yuan } from '@delon/util';
-import { _HttpClient } from '@delon/theme';
-import { JWTTokenModel } from '@delon/auth';
-
-@Component({
-  selector: 'app-dashboard-workplace',
-  templateUrl: './workplace.component.html',
-  styleUrls: ['./workplace.component.less'],
-})
-export class DashboardWorkplaceComponent implements OnInit, OnDestroy {
-  notice: any[] = [];
-  activities: any[] = [];
-  radarData: any[] = [];
-  loading = true;
-
-  // region: mock data
-  links = [
-    {
-      title: '���������',
-      href: '',
-    },
-    {
-      title: '���������',
-      href: '',
-    },
-    {
-      title: '���������',
-      href: '',
-    },
-    {
-      title: '���������',
-      href: '',
-    },
-    {
-      title: '���������',
-      href: '',
-    },
-    {
-      title: '���������',
-      href: '',
-    },
-  ];
-  members = [
-    {
-      id: 'members-1',
-      title: '���������������',
-      logo:
-        'https://gw.alipayobjects.com/zos/rmsportal/WdGqmHpayyMjiEhcKoVE.png',
-      link: '',
-    },
-    {
-      id: 'members-2',
-      title: '���������������',
-      logo:
-        'https://gw.alipayobjects.com/zos/rmsportal/zOsKZmFRdUtvpqCImOVY.png',
-      link: '',
-    },
-    {
-      id: 'members-3',
-      title: '������������',
-      logo:
-        'https://gw.alipayobjects.com/zos/rmsportal/dURIMkkrRFpPgTuzkwnB.png',
-      link: '',
-    },
-    {
-      id: 'members-4',
-      title: '���������������',
-      logo:
-        'https://gw.alipayobjects.com/zos/rmsportal/sfjbOqnsXXJgNCjCzDBL.png',
-      link: '',
-    },
-    {
-      id: 'members-5',
-      title: '������������������',
-      logo:
-        'https://gw.alipayobjects.com/zos/rmsportal/siCrBXXhmvTQGWPNLBow.png',
-      link: '',
-    },
-  ];
-  // endregion
-
-  constructor(private http: _HttpClient, public msg: NzMessageService) {}
-
-  ngOnInit() {
-    this.http.get('user-context').subscribe(
-      res => {
-          console.log(res);
-      }
-    );
-    zip(
-      this.http.get('/chart'),
-      this.http.get('/api/notice'),
-      this.http.get('/api/activities'),
-    ).subscribe(([chart, notice, activities]: [any, any, any]) => {
-      this.radarData = chart.radarData;
-      this.notice = notice;
-      this.activities = activities.map((item: any) => {
-        item.template = item.template
-          .split(/@\{([^{}]*)\}/gi)
-          .map((key: string) => {
-            if (item[key]) return `<a>${item[key].name}</a>`;
-            return key;
-          });
-        return item;
-      });
-      this.loading = false;
-    });
-  }
-
-  ngOnDestroy(): void {}
-}
diff --git a/src/app/routes/data-v/data-v-routing.module.ts b/src/app/routes/data-v/data-v-routing.module.ts
deleted file mode 100644
index 71efc39..0000000
--- a/src/app/routes/data-v/data-v-routing.module.ts
+++ /dev/null
@@ -1,11 +0,0 @@
-import { NgModule } from '@angular/core';
-import { Routes, RouterModule } from '@angular/router';
-import { RelationComponent } from './relation/relation.component';
-
-const routes: Routes = [{ path: 'relation', component: RelationComponent }];
-
-@NgModule({
-  imports: [RouterModule.forChild(routes)],
-  exports: [RouterModule],
-})
-export class DataVRoutingModule {}
diff --git a/src/app/routes/data-v/data-v.module.ts b/src/app/routes/data-v/data-v.module.ts
deleted file mode 100644
index 532fa85..0000000
--- a/src/app/routes/data-v/data-v.module.ts
+++ /dev/null
@@ -1,11 +0,0 @@
-import { NgModule } from '@angular/core';
-import { SharedModule } from '@shared/shared.module';
-
-import { DataVRoutingModule } from './data-v-routing.module';
-import { RelationComponent } from './relation/relation.component';
-
-@NgModule({
-  imports: [SharedModule, DataVRoutingModule],
-  declarations: [RelationComponent],
-})
-export class DataVModule {}
diff --git a/src/app/routes/data-v/relation/relation.component.html b/src/app/routes/data-v/relation/relation.component.html
deleted file mode 100644
index e69de29..0000000
--- a/src/app/routes/data-v/relation/relation.component.html
+++ /dev/null
diff --git a/src/app/routes/data-v/relation/relation.component.ts b/src/app/routes/data-v/relation/relation.component.ts
deleted file mode 100644
index a0fa4a7..0000000
--- a/src/app/routes/data-v/relation/relation.component.ts
+++ /dev/null
@@ -1,169 +0,0 @@
-import { Component, OnDestroy, ViewEncapsulation, OnInit } from '@angular/core';
-import { _HttpClient } from '@delon/theme';
-
-@Component({
-  selector: 'app-data-v-relation',
-  templateUrl: './relation.component.html',
-  styleUrls: ['./relation.component.less'],
-})
-export class RelationComponent implements OnInit, OnDestroy {
-  ecIntance: any;
-
-  options: any = {
-    title: {
-      text: 'User Releaction',
-    },
-    tooltip: {},
-    animationDurationUpdate: 1500,
-    animationEasingUpdate: 'quinticInOut',
-    series: [
-      {
-        type: 'graph',
-        layout: 'force',
-        symbolSize: 60,
-        focusNodeAdjacency: true,
-        roam: true,
-        categories: [
-          {
-            name: 'User',
-          },
-        ],
-        label: {
-          normal: {
-            show: true,
-            textStyle: {
-              fontSize: 12,
-            },
-          },
-        },
-        force: {
-          repulsion: 2000,
-          gravity: 0.3,
-        },
-        edgeSymbol: ['circle', 'arrow'],
-        edgeSymbolSize: [4, 10],
-        draggable: true,
-        tooltip: {
-          triggerOn: 'click',
-          formatter: item => {
-            if (item.dataType === 'node')
-              return `${item.data.name}���${item.data.arg}`;
-            return item.name;
-          },
-        },
-        data: Array(20)
-          .fill({})
-          .map((v, i) => {
-            return {
-              name: 'User' + i,
-              arg: i + 10,
-              category: 0,
-            };
-          }),
-        links: [
-          {
-            source: 'User0',
-            target: 'User1',
-          },
-          {
-            source: 'User0',
-            target: 'User2',
-          },
-          {
-            source: 'User0',
-            target: 'User3',
-          },
-          {
-            source: 'User1',
-            target: 'User4',
-          },
-          {
-            source: 'User2',
-            target: 'User5',
-          },
-          {
-            source: 'User3',
-            target: 'User6',
-          },
-          {
-            source: 'User4',
-            target: 'User7',
-          },
-          {
-            source: 'User5',
-            target: 'User8',
-          },
-          {
-            source: 'User6',
-            target: 'User9',
-          },
-          {
-            source: 'User1',
-            target: 'User10',
-          },
-          {
-            source: 'User1',
-            target: 'User11',
-          },
-          {
-            source: 'User11',
-            target: 'User12',
-          },
-          {
-            source: 'User11',
-            target: 'User13',
-          },
-          {
-            source: 'User11',
-            target: 'User14',
-          },
-          {
-            source: 'User11',
-            target: 'User15',
-          },
-          {
-            source: 'User11',
-            target: 'User16',
-          },
-          {
-            source: 'User11',
-            target: 'User17',
-          },
-          {
-            source: 'User11',
-            target: 'User18',
-          },
-          {
-            source: 'User11',
-            target: 'User19',
-          },
-        ],
-        lineStyle: {
-          normal: {
-            opacity: 0.7,
-            width: 1,
-            curveness: 0.1,
-          },
-        },
-      },
-    ],
-  };
-
-  constructor(private http: _HttpClient) {}
-
-  chartInit(ec) {
-    this.ecIntance = ec;
-  }
-
-  ngOnInit() {
-    window.addEventListener('resize', () => this.resize);
-  }
-
-  private resize() {
-    if (this.ecIntance) this.ecIntance.resize();
-  }
-
-  ngOnDestroy(): void {
-    window.removeEventListener('resize', () => this.resize);
-  }
-}
diff --git a/src/app/routes/delon/acl/acl.component.html b/src/app/routes/delon/acl/acl.component.html
deleted file mode 100644
index c8964f1..0000000
--- a/src/app/routes/delon/acl/acl.component.html
+++ /dev/null
@@ -1,43 +0,0 @@
-<div class="content__title">
-  <h1>
-    ACL ������������
-    <small>������������������������������ACLService���������������������������������������������������������������������������������������������������ACLService���Route Guard���������������������</small>
-  </h1>
-</div>
-<page-header [title]="'asdfasdf'"></page-header>
-<nz-card nzTitle="������">
-  klsjdf
-</nz-card>
-<div nz-row [nzGutter]="8">
-  <div nz-col [nzSpan]="24">
-    <nz-card nzTitle="������������">
-      ACL���������������{{ aclSrv.data | json }}
-      <button nz-button [acl]="'role-a'">role-a</button>
-      <button nz-button [acl]="'role-b'" class="ml-sm">role-b</button>
-    </nz-card>
-  </div>
-</div>
-<div nz-row [nzGutter]="8">
-  <div nz-col [nzSpan]="8">
-    <nz-card nzTitle="������">
-      <button nz-button (click)="toggleFull()">
-        <span>{{ full ? '������' : '������'}}������</span>
-      </button>
-      <p class="pt-md">������������������������������������������������������</p>
-    </nz-card>
-  </div>
-  <div nz-col [nzSpan]="8">
-    <nz-card nzTitle="������[role-a]">
-      <button nz-button (click)="toggleRoleA()">
-        <span>{{ roleA.length > 0 ? '������' : '������'}}������</span>
-      </button>
-    </nz-card>
-  </div>
-  <div nz-col [nzSpan]="8">
-    <nz-card nzTitle="������[role-b]">
-      <button nz-button (click)="toggleRoleB()">
-        <span>{{ roleB.length > 0 ? '������' : '������'}}������</span>
-      </button>
-    </nz-card>
-  </div>
-</div>
diff --git a/src/app/routes/delon/acl/acl.component.spec.ts b/src/app/routes/delon/acl/acl.component.spec.ts
deleted file mode 100644
index 9a4e9d3..0000000
--- a/src/app/routes/delon/acl/acl.component.spec.ts
+++ /dev/null
@@ -1,16 +0,0 @@
-import { TestBed, TestModuleMetadata } from '@angular/core/testing';
-import { setUpTestBed } from '@testing/common.spec';
-
-import { ACLComponent } from './acl.component';
-
-describe('Comoponent: ACL', () => {
-  setUpTestBed(<TestModuleMetadata>{
-    declarations: [ACLComponent],
-  });
-
-  it('should create an instance', () => {
-    const fixture = TestBed.createComponent(ACLComponent);
-    const comp = fixture.debugElement.componentInstance;
-    expect(comp).toBeTruthy();
-  });
-});
diff --git a/src/app/routes/delon/acl/acl.component.ts b/src/app/routes/delon/acl/acl.component.ts
deleted file mode 100644
index 9b0b471..0000000
--- a/src/app/routes/delon/acl/acl.component.ts
+++ /dev/null
@@ -1,41 +0,0 @@
-import { Component } from '@angular/core';
-import { ACLService } from '@delon/acl';
-import { MenuService } from '@delon/theme';
-
-@Component({
-  selector: 'app-acl',
-  templateUrl: './acl.component.html',
-})
-export class ACLComponent {
-  full = true;
-  roleA = '';
-  roleB = '';
-
-  constructor(public aclSrv: ACLService, private menuSrv: MenuService) {}
-
-  private reMenu() {
-    this.menuSrv.resume();
-  }
-
-  toggleFull() {
-    this.full = !this.full;
-    this.aclSrv.setFull(this.full);
-    this.reMenu();
-  }
-
-  toggleRoleA() {
-    this.full = false;
-    this.roleA = this.roleA === 'role-a' ? '' : 'role-a';
-    this.aclSrv.setFull(this.full);
-    this.aclSrv.setRole([this.roleA]);
-    this.reMenu();
-  }
-
-  toggleRoleB() {
-    this.full = false;
-    this.roleB = this.roleB === 'role-b' ? '' : 'role-b';
-    this.aclSrv.setFull(this.full);
-    this.aclSrv.setRole([this.roleB]);
-    this.reMenu();
-  }
-}
diff --git a/src/app/routes/delon/cache/cache.component.html b/src/app/routes/delon/cache/cache.component.html
deleted file mode 100644
index 911ae01..0000000
--- a/src/app/routes/delon/cache/cache.component.html
+++ /dev/null
@@ -1,10 +0,0 @@
-<div class="content__title">
-  <h1>
-    Cache ������,
-    <a href="http://ng-alain.com/components/cache" target="_blank">Document</a>
-  </h1>
-</div>
-<nz-card nzTitle="Service">
-  <button nz-button (click)="set()">������</button>
-  <button nz-button (click)="get()" class="ml-sm">������</button>
-</nz-card>
diff --git a/src/app/routes/delon/cache/cache.component.ts b/src/app/routes/delon/cache/cache.component.ts
deleted file mode 100644
index be31179..0000000
--- a/src/app/routes/delon/cache/cache.component.ts
+++ /dev/null
@@ -1,24 +0,0 @@
-import { Component, OnInit } from '@angular/core';
-import { NzMessageService } from 'ng-zorro-antd';
-import { CacheService } from '@delon/cache';
-
-@Component({
-  selector: 'app-cache',
-  templateUrl: './cache.component.html',
-  styles: [],
-})
-export class CacheComponent implements OnInit {
-  KEY = 'user';
-
-  constructor(public cache: CacheService, public msg: NzMessageService) {}
-
-  ngOnInit() {}
-
-  set() {
-    this.cache.set(this.KEY, +new Date());
-  }
-
-  get() {
-    this.msg.success(this.cache.getNone(this.KEY));
-  }
-}
diff --git a/src/app/routes/delon/delon-routing.module.ts b/src/app/routes/delon/delon-routing.module.ts
deleted file mode 100644
index 3bd0ddc..0000000
--- a/src/app/routes/delon/delon-routing.module.ts
+++ /dev/null
@@ -1,61 +0,0 @@
-import { NgModule } from '@angular/core';
-import { Routes, RouterModule } from '@angular/router';
-import { ACLGuard } from '@delon/acl';
-
-import { SimpleTableComponent } from './simple-table/simple-table.component';
-import { UtilComponent } from './util/util.component';
-import { PrintComponent } from './print/print.component';
-import { ACLComponent } from './acl/acl.component';
-import { GuardComponent } from './guard/guard.component';
-import { GuardLeaveComponent } from './guard/leave.component';
-import { GuardAuthComponent } from './guard/auth.component';
-import { GuardAdminComponent } from './guard/admin.component';
-import { CanLeaveProvide } from './guard/can-leave.provide';
-import { CacheComponent } from './cache/cache.component';
-import { DownFileComponent } from './downfile/downfile.component';
-import { XlsxComponent } from './xlsx/xlsx.component';
-import { ZipComponent } from './zip/zip.component';
-import { DelonFormComponent } from './form/form.component';
-import { QRComponent } from './qr/qr.component';
-
-const routes: Routes = [
-  { path: 'simple-table', component: SimpleTableComponent },
-  { path: 'util', component: UtilComponent },
-  { path: 'print', component: PrintComponent },
-  { path: 'acl', component: ACLComponent },
-  {
-    path: 'guard',
-    component: GuardComponent,
-    children: [
-      {
-        path: 'leave',
-        component: GuardLeaveComponent,
-        canDeactivate: [CanLeaveProvide],
-      },
-      {
-        path: 'auth',
-        component: GuardAuthComponent,
-        canActivate: [ACLGuard],
-        data: { guard: 'user1' },
-      },
-      {
-        path: 'admin',
-        component: GuardAdminComponent,
-        canActivate: [ACLGuard],
-        data: { guard: 'admin' },
-      },
-    ],
-  },
-  { path: 'cache', component: CacheComponent },
-  { path: 'qr', component: QRComponent },
-  { path: 'downfile', component: DownFileComponent },
-  { path: 'xlsx', component: XlsxComponent },
-  { path: 'zip', component: ZipComponent },
-  { path: 'form', component: DelonFormComponent },
-];
-
-@NgModule({
-  imports: [RouterModule.forChild(routes)],
-  exports: [RouterModule],
-})
-export class DelonRoutingModule {}
diff --git a/src/app/routes/delon/delon.module.ts b/src/app/routes/delon/delon.module.ts
deleted file mode 100644
index a143429..0000000
--- a/src/app/routes/delon/delon.module.ts
+++ /dev/null
@@ -1,48 +0,0 @@
-import { NgModule } from '@angular/core';
-import { CommonModule } from '@angular/common';
-import { SharedModule } from '@shared/shared.module';
-
-import { DelonRoutingModule } from './delon-routing.module';
-
-import { SimpleTableComponent } from './simple-table/simple-table.component';
-import { UtilComponent } from './util/util.component';
-import { PrintComponent } from './print/print.component';
-import { ACLComponent } from './acl/acl.component';
-import { CanLeaveProvide } from './guard/can-leave.provide';
-import { GuardComponent } from './guard/guard.component';
-import { GuardLeaveComponent } from './guard/leave.component';
-import { GuardAdminComponent } from './guard/admin.component';
-import { GuardAuthComponent } from './guard/auth.component';
-import { CacheComponent } from './cache/cache.component';
-import { DownFileComponent } from './downfile/downfile.component';
-import { XlsxComponent } from './xlsx/xlsx.component';
-import { ZipComponent } from './zip/zip.component';
-import { DelonFormComponent } from './form/form.component';
-import { QRComponent } from './qr/qr.component';
-
-const COMPONENT = [
-  SimpleTableComponent,
-  UtilComponent,
-  PrintComponent,
-  ACLComponent,
-  GuardComponent,
-  GuardLeaveComponent,
-  GuardAdminComponent,
-  GuardAuthComponent,
-  CacheComponent,
-  DownFileComponent,
-  XlsxComponent,
-  ZipComponent,
-  DelonFormComponent,
-  QRComponent,
-];
-
-const COMPONENT_NOROUNT = [];
-
-@NgModule({
-  imports: [CommonModule, SharedModule, DelonRoutingModule],
-  providers: [CanLeaveProvide],
-  declarations: [...COMPONENT, ...COMPONENT_NOROUNT],
-  entryComponents: COMPONENT_NOROUNT,
-})
-export class DelonModule {}
diff --git a/src/app/routes/delon/downfile/downfile.component.html b/src/app/routes/delon/downfile/downfile.component.html
deleted file mode 100644
index 35f4f69..0000000
--- a/src/app/routes/delon/downfile/downfile.component.html
+++ /dev/null
@@ -1,6 +0,0 @@
-<div class="content__title">
-  <h1>Download a file</h1>
-</div>
-<nz-card nzTitle="DEMO">
-  <button nz-button *ngFor="let i of fileTypes" class="mr-sm" down-file [http-data]="data" http-url="assets/tmp/demo{{i}}" file-name="demo������">{{i}}</button>
-</nz-card>
diff --git a/src/app/routes/delon/downfile/downfile.component.spec.ts b/src/app/routes/delon/downfile/downfile.component.spec.ts
deleted file mode 100644
index 5e1bf7e..0000000
--- a/src/app/routes/delon/downfile/downfile.component.spec.ts
+++ /dev/null
@@ -1,16 +0,0 @@
-import { TestBed, TestModuleMetadata } from '@angular/core/testing';
-import { setUpTestBed } from '@testing/common.spec';
-
-import { DownFileComponent } from './downfile.component';
-
-describe('Comoponent: DownFile', () => {
-  setUpTestBed(<TestModuleMetadata>{
-    declarations: [DownFileComponent],
-  });
-
-  it('should create an instance', () => {
-    const fixture = TestBed.createComponent(DownFileComponent);
-    const comp = fixture.debugElement.componentInstance;
-    expect(comp).toBeTruthy();
-  });
-});
diff --git a/src/app/routes/delon/downfile/downfile.component.ts b/src/app/routes/delon/downfile/downfile.component.ts
deleted file mode 100644
index 5a0b795..0000000
--- a/src/app/routes/delon/downfile/downfile.component.ts
+++ /dev/null
@@ -1,14 +0,0 @@
-import { Component } from '@angular/core';
-
-@Component({
-  selector: 'app-down-file',
-  templateUrl: './downfile.component.html',
-})
-export class DownFileComponent {
-  fileTypes = ['.xlsx', '.docx', '.pptx', '.pdf'];
-
-  data = {
-    otherdata: 1,
-    time: new Date(),
-  };
-}
diff --git a/src/app/routes/delon/form/form.component.html b/src/app/routes/delon/form/form.component.html
deleted file mode 100644
index 0025e21..0000000
--- a/src/app/routes/delon/form/form.component.html
+++ /dev/null
@@ -1,5 +0,0 @@
-<page-header [title]="'Page Name'"></page-header>
-<nz-card>
-  <sf mode="search" [schema]="searchSchema" [formData]="params" (formSubmit)="st.reset($event)" (formReset)="st.reset(params)"></sf>
-  <simple-table #st [data]="url" [columns]="columns" [extraParams]="params"></simple-table>
-</nz-card>
diff --git a/src/app/routes/delon/form/form.component.ts b/src/app/routes/delon/form/form.component.ts
deleted file mode 100644
index 4773622..0000000
--- a/src/app/routes/delon/form/form.component.ts
+++ /dev/null
@@ -1,32 +0,0 @@
-import { Component, OnInit, ViewChild } from '@angular/core';
-import { _HttpClient } from '@delon/theme';
-import { SimpleTableColumn, SimpleTableComponent } from '@delon/abc';
-import { SFSchema } from '@delon/form';
-
-@Component({
-  selector: 'app-delon-form',
-  templateUrl: './form.component.html',
-})
-export class DelonFormComponent implements OnInit {
-  params: any = {};
-  url = `/user`;
-  @ViewChild('st') st: SimpleTableComponent;
-  searchSchema: SFSchema = {
-    properties: {
-      no: {
-        type: 'string',
-        title: '������',
-      },
-    },
-  };
-  columns: SimpleTableColumn[] = [
-    { title: '������', index: 'no' },
-    { title: '������������', type: 'number', index: 'callNo' },
-    { title: '������', type: 'img', width: '50px', index: 'avatar' },
-    { title: '������', type: 'date', index: 'updatedAt' },
-  ];
-
-  constructor(private http: _HttpClient) {}
-
-  ngOnInit() {}
-}
diff --git a/src/app/routes/delon/guard/admin.component.ts b/src/app/routes/delon/guard/admin.component.ts
deleted file mode 100644
index 3a0aae6..0000000
--- a/src/app/routes/delon/guard/admin.component.ts
+++ /dev/null
@@ -1,9 +0,0 @@
-import { Component } from '@angular/core';
-
-@Component({
-  selector: 'app-guard-admin',
-  template: `
-    <p>������������admin������</p>
-  `,
-})
-export class GuardAdminComponent {}
diff --git a/src/app/routes/delon/guard/auth.component.ts b/src/app/routes/delon/guard/auth.component.ts
deleted file mode 100644
index fcb335e..0000000
--- a/src/app/routes/delon/guard/auth.component.ts
+++ /dev/null
@@ -1,9 +0,0 @@
-import { Component } from '@angular/core';
-
-@Component({
-  selector: 'app-guard-auth',
-  template: `
-    <p>������������user1������</p>
-  `,
-})
-export class GuardAuthComponent {}
diff --git a/src/app/routes/delon/guard/can-leave.provide.ts b/src/app/routes/delon/guard/can-leave.provide.ts
deleted file mode 100644
index 1d50dac..0000000
--- a/src/app/routes/delon/guard/can-leave.provide.ts
+++ /dev/null
@@ -1,38 +0,0 @@
-import { Injectable } from '@angular/core';
-import {
-  CanDeactivate,
-  ActivatedRouteSnapshot,
-  RouterStateSnapshot,
-} from '@angular/router';
-import { GuardComponent } from './guard.component';
-import { Observable } from 'rxjs';
-import { NzModalService } from 'ng-zorro-antd';
-
-@Injectable()
-export class CanLeaveProvide implements CanDeactivate<GuardComponent> {
-  constructor(private confirmSrv: NzModalService) {}
-
-  canDeactivate(
-    component: GuardComponent,
-    currentRoute: ActivatedRouteSnapshot,
-    currentState: RouterStateSnapshot,
-    nextState?: RouterStateSnapshot,
-  ): boolean | Observable<boolean> | Promise<boolean> {
-    return new Observable(observer => {
-      this.confirmSrv.confirm({
-        nzTitle: '���������������������',
-        nzContent: '���������������������������������������������������������������������',
-        nzOkText: '������',
-        nzCancelText: '������',
-        nzOnOk: () => {
-          observer.next(true);
-          observer.complete();
-        },
-        nzOnCancel: () => {
-          observer.next(false);
-          observer.complete();
-        },
-      });
-    });
-  }
-}
diff --git a/src/app/routes/delon/guard/guard.component.html b/src/app/routes/delon/guard/guard.component.html
deleted file mode 100644
index 892c463..0000000
--- a/src/app/routes/delon/guard/guard.component.html
+++ /dev/null
@@ -1,33 +0,0 @@
-<div class="content__title">
-  <h1>
-    ������������
-  </h1>
-</div>
-<nz-button-group>
-  <button nz-button [routerLink]="['/delon/guard/leave']">
-    <span>���������������</span>
-  </button>
-</nz-button-group>
-<nz-button-group class="ml-sm">
-  <button nz-button (click)="setRole(true)">
-    <span>���������������</span>
-  </button>
-  <button nz-button (click)="setRole('user1')">
-    <span>������������1</span>
-  </button>
-  <button nz-button (click)="setRole('user2')">
-    <span>������������2</span>
-  </button>
-</nz-button-group>
-<nz-button-group class="ml-sm">
-  <button nz-button [routerLink]="['/delon/guard/auth']">
-    <span>������user1</span>
-  </button>
-  <button nz-button [routerLink]="['/delon/guard/admin']">
-    <span>���������������</span>
-  </button>
-</nz-button-group>
-<p class="mb-lg">
-  ������ACL���������{{ aclSrv.data | json }}
-</p>
-<router-outlet></router-outlet>
diff --git a/src/app/routes/delon/guard/guard.component.spec.ts b/src/app/routes/delon/guard/guard.component.spec.ts
deleted file mode 100644
index cb8ee27..0000000
--- a/src/app/routes/delon/guard/guard.component.spec.ts
+++ /dev/null
@@ -1,17 +0,0 @@
-import { TestBed, TestModuleMetadata } from '@angular/core/testing';
-import { setUpTestBed } from '@testing/common.spec';
-
-import { GuardComponent } from './guard.component';
-
-describe('Comoponent: Guard', () => {
-  setUpTestBed(<TestModuleMetadata>{
-    declarations: [GuardComponent],
-    providers: [],
-  });
-
-  it('should create an instance', () => {
-    const fixture = TestBed.createComponent(GuardComponent);
-    const comp = fixture.debugElement.componentInstance;
-    expect(comp).toBeTruthy();
-  });
-});
diff --git a/src/app/routes/delon/guard/guard.component.ts b/src/app/routes/delon/guard/guard.component.ts
deleted file mode 100644
index be2efd4..0000000
--- a/src/app/routes/delon/guard/guard.component.ts
+++ /dev/null
@@ -1,23 +0,0 @@
-import { MenuService } from '@delon/theme';
-import { Router } from '@angular/router';
-import { Component } from '@angular/core';
-import { ACLService } from '@delon/acl';
-
-@Component({
-  selector: 'app-guard',
-  templateUrl: './guard.component.html',
-})
-export class GuardComponent {
-  constructor(
-    public aclSrv: ACLService,
-    private menuSrv: MenuService,
-    private router: Router,
-  ) {}
-
-  setRole(value: string | boolean) {
-    this.aclSrv.setFull(typeof value === 'boolean' ? value : false);
-    this.aclSrv.set({ role: [value as string] });
-    this.menuSrv.resume();
-    this.router.navigate(['/delon/guard']);
-  }
-}
diff --git a/src/app/routes/delon/guard/leave.component.ts b/src/app/routes/delon/guard/leave.component.ts
deleted file mode 100644
index 37bdba9..0000000
--- a/src/app/routes/delon/guard/leave.component.ts
+++ /dev/null
@@ -1,12 +0,0 @@
-import { Component } from '@angular/core';
-
-@Component({
-  selector: 'app-guard-leave',
-  template: `
-    <p>���������������������</p>
-    <button nz-button [nzType]="'primary'" [routerLink]="['/logics/guard']">
-      <span>������������</span>
-    </button>
-    `,
-})
-export class GuardLeaveComponent {}
diff --git a/src/app/routes/delon/print/print.component.html b/src/app/routes/delon/print/print.component.html
deleted file mode 100644
index 5a17ff1..0000000
--- a/src/app/routes/delon/print/print.component.html
+++ /dev/null
@@ -1,61 +0,0 @@
-<div class="content__title">
-  <h1>Lodop������
-    <small>������������������
-      <a href="http://ng-alain.com/components/lodop" target="_blank">ng-alain.com</a>
-    </small>
-  </h1>
-</div>
-<nz-card>
-  <nz-alert *ngIf="error" [nzType]="'warning'" [nzMessage]="message">
-    <ng-template #message>
-      ������������
-      <a href="http://c-lodop.com/download.html" target="_blank">Lodop������</a>���
-    </ng-template>
-  </nz-alert>
-  <form *ngIf="!error" nz-form>
-    <nz-form-item nz-row>
-      <nz-form-label nz-col [nzSm]="6">���������������</nz-form-label>
-      <nz-form-control nz-col [nzSm]="18">
-        <nz-input-group>
-          <div nz-col [nzSpan]="16">
-            <input nz-input nzPlaceHolder="https://localhost:8443/CLodopfuncs.js" [(ngModel)]="cog.url" name="url">
-          </div>
-          <div nz-col [nzSpan]="8">
-            <button nz-button (click)="reload(null)">���������������������</button>
-          </div>
-        </nz-input-group>
-      </nz-form-control>
-    </nz-form-item>
-    <nz-form-item nz-row>
-      <nz-form-label nz-col [nzSm]="6">���������</nz-form-label>
-      <nz-form-control nz-col [nzSm]="18">
-        <nz-select style="width:90%;" nzPlaceHolder="������������������" nzShowSearch nzAllowClear [(ngModel)]="cog.printer" name="printer" (ngModelChange)="changePinter($event)">
-          <nz-option *ngFor="let name of pinters" [nzLabel]="name" [nzValue]="name">
-          </nz-option>
-        </nz-select>
-      </nz-form-control>
-    </nz-form-item>
-    <nz-form-item nz-row>
-      <nz-form-label nz-col [nzSm]="6">������������</nz-form-label>
-      <nz-form-control nz-col [nzSm]="18">
-        <nz-select style="width:90%;" nzPlaceHolder="���������������������" nzShowSearch nzAllowClear [(ngModel)]="cog.paper" name="paper">
-          <nz-option *ngFor="let name of papers" [nzLabel]="name" [nzValue]="name">
-          </nz-option>
-        </nz-select>
-      </nz-form-control>
-    </nz-form-item>
-    <nz-form-item nz-row>
-      <nz-form-label nz-col [nzSm]="6">������������</nz-form-label>
-      <nz-form-control nz-col [nzSm]="18">
-        <textarea nz-input [(ngModel)]="cog.html" name="html" nzAutosize></textarea>
-        <div nz-form-extra>������HTML������������������������������������</div>
-      </nz-form-control>
-    </nz-form-item>
-    <nz-form-item nz-row>
-      <nz-form-control nz-col [nzSm]="18" [nzOffset]="6">
-        <button nz-button (click)="print(true)" [nzLoading]="printing">������������</button>
-        <button nz-button (click)="print()" [nzLoading]="printing">������������</button>
-      </nz-form-control>
-    </nz-form-item>
-  </form>
-</nz-card>
diff --git a/src/app/routes/delon/print/print.component.ts b/src/app/routes/delon/print/print.component.ts
deleted file mode 100644
index 98ef0d6..0000000
--- a/src/app/routes/delon/print/print.component.ts
+++ /dev/null
@@ -1,79 +0,0 @@
-import { Component } from '@angular/core';
-import { NzMessageService, NzNotificationService } from 'ng-zorro-antd';
-import { Lodop, LodopService } from '@delon/abc';
-
-@Component({
-  selector: 'app-print',
-  templateUrl: './print.component.html',
-})
-export class PrintComponent {
-  cog: any = {
-    url: 'https://localhost:8443/CLodopfuncs.js',
-    printer: '',
-    paper: '',
-    html: `
-      <h1>Title</h1>
-      <p>���~���@#���%������&*������������sdilfjnvn</p>
-      <p>���~���@#���%������&*������������sdilfjnvn</p>
-      <p>���~���@#���%������&*������������sdilfjnvn</p>
-      <p>���~���@#���%������&*������������sdilfjnvn</p>
-      <p>���~���@#���%������&*������������sdilfjnvn</p>
-    `,
-  };
-  error = false;
-  lodop: Lodop = null;
-  pinters: any[] = [];
-  papers: string[] = [];
-  constructor(
-    public lodopSrv: LodopService,
-    private msg: NzMessageService,
-    private notify: NzNotificationService,
-  ) {
-    this.lodopSrv.lodop.subscribe(({ lodop, ok }) => {
-      if (!ok) {
-        this.error = true;
-        return;
-      }
-      this.error = false;
-      this.msg.success(`���������������������`);
-      this.lodop = lodop;
-      this.pinters = this.lodopSrv.printer;
-    });
-  }
-
-  reload(options: any = { url: 'https://localhost:8443/CLodopfuncs.js' }) {
-    this.pinters = [];
-    this.papers = [];
-    this.cog.printer = '';
-    this.cog.paper = '';
-
-    this.lodopSrv.cog = Object.assign({}, this.cog, options);
-    this.error = false;
-    if (options === null) this.lodopSrv.reset();
-  }
-
-  changePinter(name: string) {
-    this.papers = this.lodop.GET_PAGESIZES_LIST(name, '\n').split('\n');
-  }
-
-  printing = false;
-  print(isPrivew = false) {
-    const LODOP = this.lodop;
-    LODOP.PRINT_INITA(10, 20, 810, 610, '������C-Lodop���������������������');
-    LODOP.SET_PRINTER_INDEXA(this.cog.printer);
-    LODOP.SET_PRINT_PAGESIZE(0, 0, 0, this.cog.paper);
-    LODOP.ADD_PRINT_TEXT(
-      1,
-      1,
-      300,
-      200,
-      '������������������������������������������������������',
-    );
-    LODOP.ADD_PRINT_TEXT(20, 10, '90%', '95%', this.cog.html);
-    LODOP.SET_PRINT_STYLEA(0, 'ItemType', 4);
-    LODOP.NewPageA();
-    LODOP.ADD_PRINT_HTM(20, 10, '90%', '95%', this.cog.html);
-    if (isPrivew) LODOP.PREVIEW();
-    else LODOP.PRINT();
-  }
-}
diff --git a/src/app/routes/delon/qr/qr.component.html b/src/app/routes/delon/qr/qr.component.html
deleted file mode 100644
index 4fd22d9..0000000
--- a/src/app/routes/delon/qr/qr.component.html
+++ /dev/null
@@ -1,76 +0,0 @@
-<div class="content__title">
-  <h1>���������
-    <a href="//ng-alain.com/components/qr" target="_blank">Document</a>
-  </h1>
-</div>
-<nz-card>
-  <nz-row [nzGutter]="24">
-    <nz-col [nzSpan]="8" class="text-center">
-      <qr [value]="value" [background]="background" [backgroundAlpha]="backgroundAlpha" [foreground]="foreground" [foregroundAlpha]="foregroundAlpha"
-        [level]="level" [mime]="mime" [padding]="padding" [size]="size" style="border:1px solid #999"></qr>
-    </nz-col>
-    <nz-col [nzSpan]="16">
-      <form nz-form>
-        <nz-form-item>
-          <nz-form-label [nzSpan]="8">������</nz-form-label>
-          <nz-form-control [nzSpan]="16">
-            <nz-input-group>
-              <div nz-col nzSpan="12">
-                <input nz-input type="color" [(ngModel)]="background" [ngModelOptions]="{standalone: true}">
-              </div>
-              <div nz-col nzSpan="12">
-                <nz-input-number [(ngModel)]="backgroundAlpha" [nzMin]="0" [nzMax]="1" [nzStep]="0.1" [ngModelOptions]="{standalone: true}"></nz-input-number>
-              </div>
-            </nz-input-group>
-          </nz-form-control>
-        </nz-form-item>
-        <nz-form-item>
-          <nz-form-label [nzSpan]="8">������</nz-form-label>
-          <nz-form-control [nzSpan]="16">
-            <nz-input-group>
-              <div nz-col nzSpan="12">
-                <input nz-input type="color" [(ngModel)]="foreground" [ngModelOptions]="{standalone: true}">
-              </div>
-              <div nz-col nzSpan="12">
-                <nz-input-number [(ngModel)]="foregroundAlpha" [nzMin]="0" [nzMax]="1" [nzStep]="0.1" [ngModelOptions]="{standalone: true}"></nz-input-number>
-              </div>
-            </nz-input-group>
-          </nz-form-control>
-        </nz-form-item>
-        <nz-form-item>
-          <nz-form-label [nzSpan]="8">������</nz-form-label>
-          <nz-form-control [nzSpan]="16">
-            <nz-select [(ngModel)]="level" [ngModelOptions]="{standalone: true}">
-              <nz-option nzValue="L" nzLabel="L"></nz-option>
-              <nz-option nzValue="M" nzLabel="M"></nz-option>
-              <nz-option nzValue="Q" nzLabel="Q"></nz-option>
-              <nz-option nzValue="H" nzLabel="H"></nz-option>
-            </nz-select>
-          </nz-form-control>
-        </nz-form-item>
-        <nz-form-item>
-          <nz-form-label [nzSpan]="8">Mime</nz-form-label>
-          <nz-form-control [nzSpan]="16">
-            <nz-select [(ngModel)]="mime" [ngModelOptions]="{standalone: true}">
-              <nz-option nzValue="image/png" nzLabel="image/png"></nz-option>
-              <nz-option nzValue="image/jpeg" nzLabel="image/jpeg"></nz-option>
-              <nz-option nzValue="image/gif" nzLabel="image/gif"></nz-option>
-            </nz-select>
-          </nz-form-control>
-        </nz-form-item>
-        <nz-form-item>
-          <nz-form-label [nzSpan]="8">���������</nz-form-label>
-          <nz-form-control [nzSpan]="16">
-            <nz-input-number [(ngModel)]="padding" [ngModelOptions]="{standalone: true}" [nzMin]="0" [nzMax]="100"></nz-input-number>px
-          </nz-form-control>
-        </nz-form-item>
-        <nz-form-item>
-          <nz-form-label [nzSpan]="8">������</nz-form-label>
-          <nz-form-control [nzSpan]="16">
-            <nz-input-number [(ngModel)]="size" [ngModelOptions]="{standalone: true}" [nzMin]="100" [nzMax]="1000" [nzStep]="padding"></nz-input-number>px
-          </nz-form-control>
-        </nz-form-item>
-      </form>
-    </nz-col>
-  </nz-row>
-</nz-card>
diff --git a/src/app/routes/delon/qr/qr.component.ts b/src/app/routes/delon/qr/qr.component.ts
deleted file mode 100644
index a75a274..0000000
--- a/src/app/routes/delon/qr/qr.component.ts
+++ /dev/null
@@ -1,17 +0,0 @@
-import { Component } from '@angular/core';
-
-@Component({
-  selector: 'app-qr',
-  templateUrl: './qr.component.html',
-})
-export class QRComponent {
-  value = 'https://ng-alain.com/';
-  background = 'white';
-  backgroundAlpha = 1.0;
-  foreground = 'black';
-  foregroundAlpha = 1.0;
-  level = 'L';
-  mime = 'image/png';
-  padding = 10;
-  size = 220;
-}
diff --git a/src/app/routes/delon/simple-table/simple-table.component.html b/src/app/routes/delon/simple-table/simple-table.component.html
deleted file mode 100644
index dea8663..0000000
--- a/src/app/routes/delon/simple-table/simple-table.component.html
+++ /dev/null
@@ -1,52 +0,0 @@
-<div class="content__title">
-  <h1>
-    Fullscreen Table
-    <small>������
-      <a href="//ng-alain.com/components/simple-table" target="_blank">simple-table</a>���
-      <a href="//ng-alain.com/components/full-content" target="_blank">full-content</a> ��������������� nz-table ���������������������������������������������������������������������������������������������������������������</small>
-  </h1>
-</div>
-<full-content (fullscreenChange)="fullChange($event)">
-  <nz-card>
-    <div nz-row class="mb-md">
-      <div nz-col nzSpan="12">
-        <form nz-form [nzLayout]="'inline'">
-          <nz-form-item>
-            <nz-form-label nzFor="userid">User ID</nz-form-label>
-            <nz-form-control>
-              <input nz-input [(ngModel)]="args.userid" name="userid" id="userid">
-            </nz-form-control>
-          </nz-form-item>
-          <nz-form-item>
-            <nz-form-control>
-              <button nz-button [nzType]="'primary'" (click)="st.load()" [nzLoading]="http.loading">Search</button>
-              <button nz-button (click)="st.load({_allow_anonymous: true})" [disabled]="http.loading">Clear</button>
-            </nz-form-control>
-          </nz-form-item>
-        </form>
-      </div>
-      <div nz-col nzSpan="12">
-        <div class="text-right">
-          <nz-dropdown>
-            <button nz-button nz-dropdown>
-              <span>Export</span>
-              <i class="anticon anticon-down"></i>
-            </button>
-            <ul nz-menu>
-              <li nz-menu-item>Excel</li>
-              <li nz-menu-item>JSON</li>
-              <li nz-menu-item>PNG</li>
-            </ul>
-          </nz-dropdown>
-          <button nz-button [nzType]="'default'" full-toggle class="ml-sm">Full</button>
-        </div>
-      </div>
-    </div>
-    <simple-table #st [data]="url" [extraParams]="args" [resReName]="{list: 'results' }" [total]="total" [ps]="ps" [columns]="columns"
-      [scroll]="scroll">
-      <ng-template st-row="events" let-item let-index="index">
-        <g2-mini-bar height="15" theme="mini" color="#999" borderWidth="3" [padding]="[0, 0, 0, 0]" [data]="events"></g2-mini-bar>
-      </ng-template>
-    </simple-table>
-  </nz-card>
-</full-content>
diff --git a/src/app/routes/delon/simple-table/simple-table.component.ts b/src/app/routes/delon/simple-table/simple-table.component.ts
deleted file mode 100644
index 99b5aea..0000000
--- a/src/app/routes/delon/simple-table/simple-table.component.ts
+++ /dev/null
@@ -1,74 +0,0 @@
-import { Component, OnInit, OnDestroy } from '@angular/core';
-import { NzMessageService } from 'ng-zorro-antd';
-import { map } from 'rxjs/operators';
-import {
-  SimpleTableChange,
-  SimpleTableColumn,
-  SimpleTableButton,
-} from '@delon/abc';
-import { _HttpClient } from '@delon/theme';
-
-@Component({
-  selector: 'app-simple-table',
-  templateUrl: './simple-table.component.html',
-})
-export class SimpleTableComponent implements OnInit {
-  ps = 20;
-  total = 200; // mock total
-  args: any = { _allow_anonymous: true };
-  url = `https://api.randomuser.me/?results=20`;
-  events: any[] = [];
-  scroll = { y: '230px' };
-  columns: SimpleTableColumn[] = [
-    { title: 'id', index: 'id.value', type: 'checkbox' },
-    { title: 'Avatar', index: 'picture.thumbnail', type: 'img', width: '80px' },
-    {
-      title: 'Name',
-      index: 'name.first',
-      width: '150px',
-      format: (item: any) => `${item.name.first} ${item.name.last}`,
-      type: 'link',
-      click: (item: any) => this.message.info(`${item.name.first}`),
-    },
-    { title: 'Email', index: 'email' },
-    {
-      title: 'Gender',
-      index: 'gender',
-      type: 'yn',
-      ynTruth: 'female',
-      ynYes: '���',
-      ynNo: '���',
-      width: '120px',
-    },
-    { title: 'Events', render: 'events', width: '90px' },
-    { title: 'Registered', index: 'registered', type: 'date', width: '150px' },
-    {
-      title: 'Actions',
-      width: '120px',
-      buttons: <SimpleTableButton[]>[
-        {
-          text: 'Edit',
-          click: (item: any) => this.message.info(`edit [${item.id.value}]`),
-          if: (item: any) => item.gender === 'female',
-        },
-        {
-          text: 'Delete',
-          type: 'del',
-          click: (item: any) => this.message.info(`deleted [${item.id.value}]`),
-        },
-      ],
-    },
-  ];
-
-  constructor(public http: _HttpClient, private message: NzMessageService) {}
-
-  ngOnInit(): void {
-    this.http
-      .get('/chart/visit')
-      .subscribe((res: any[]) => (this.events = res.slice(0, 8)));
-  }
-
-  fullChange(val: boolean) {
-    this.scroll = val ? { y: '350px' } : { y: '230px' };
-  }
-}
diff --git a/src/app/routes/delon/util/util.component.html b/src/app/routes/delon/util/util.component.html
deleted file mode 100644
index 704437b..0000000
--- a/src/app/routes/delon/util/util.component.html
+++ /dev/null
@@ -1,54 +0,0 @@
-<div class="content__title">
-  <h1>
-    ���������
-    <small>@delon/util ���������������</small>
-  </h1>
-</div>
-<nz-row [nzGutter]="16">
-  <nz-col [nzSpan]="12">
-    <nz-card nzTitle="������������">
-      <nz-card nzType="inner" nzTitle="format">
-        <form nz-form>
-          <nz-form-item>
-            <nz-form-label [nzSm]="8">String</nz-form-label>
-            <nz-form-control [nzSm]="16">
-              <input nz-input [(ngModel)]="format_str" [ngModelOptions]="{standalone: true}">
-            </nz-form-control>
-          </nz-form-item>
-          <nz-form-item>
-            <nz-form-label [nzSm]="8">Object</nz-form-label>
-            <nz-form-control [nzSm]="16">
-              <input nz-input [(ngModel)]="format_obj" [ngModelOptions]="{standalone: true}">
-            </nz-form-control>
-          </nz-form-item>
-          <nz-form-item>
-            <nz-form-control [nzSpan]="16" [nzOffset]="8">
-              <button (click)="onFormat()" nz-button>Run</button>
-            </nz-form-control>
-          </nz-form-item>
-          <nz-form-item>
-            <nz-form-label [nzSm]="8">Result</nz-form-label>
-            <nz-form-control [nzSm]="16">
-              {{format_res}}
-            </nz-form-control>
-          </nz-form-item>
-        </form>
-      </nz-card>
-      <nz-card nzType="inner" nzTitle="yuan">
-        <nz-row [nzGutter]="16">
-          <nz-col [nzSpan]="12">
-            <input type="number" nz-input [(ngModel)]="yuan_str" (ngModelChange)="onYuan($event)">
-          </nz-col>
-          <nz-col [nzSpan]="12">
-            <div [innerHTML]="yuan_res"></div>
-          </nz-col>
-        </nz-row>
-      </nz-card>
-    </nz-card>
-  </nz-col>
-  <nz-col [nzSpan]="12">
-    <nz-card nzTitle="���������">
-      <button nz-button (click)="onCopy()">Copy</button>
-    </nz-card>
-  </nz-col>
-</nz-row>
diff --git a/src/app/routes/delon/util/util.component.ts b/src/app/routes/delon/util/util.component.ts
deleted file mode 100644
index 6dff141..0000000
--- a/src/app/routes/delon/util/util.component.ts
+++ /dev/null
@@ -1,47 +0,0 @@
-import { Component } from '@angular/core';
-import { NzMessageService } from 'ng-zorro-antd';
-import { copy, format, yuan } from '@delon/util';
-
-@Component({
-  selector: 'app-util',
-  templateUrl: './util.component.html',
-})
-export class UtilComponent {
-  constructor(public messageSrv: NzMessageService) {}
-
-  // region: string
-
-  format_str = 'this is ${name}';
-  format_res = '';
-  format_obj = JSON.stringify({ name: 'asdf' });
-  onFormat() {
-    let obj = null;
-    try {
-      obj = JSON.parse(this.format_obj);
-    } catch {
-      this.messageSrv.error(`������������ JSON.parse ������`);
-      return;
-    }
-    this.format_res = format(this.format_str, obj, true);
-  }
-
-  // yuan
-  yuan_str: any;
-  yuan_res: string;
-  onYuan(value: string) {
-    this.yuan_res = yuan(value);
-  }
-
-  // endregion
-
-  // region: other
-
-  content = `time ${+new Date()}
-
-    ���������@#���%������&*`;
-  onCopy() {
-    copy(`time ${+new Date()}`).then(() => this.messageSrv.success(`success`));
-  }
-
-  // endregion
-}
diff --git a/src/app/routes/delon/xlsx/xlsx.component.html b/src/app/routes/delon/xlsx/xlsx.component.html
deleted file mode 100644
index 4b07860..0000000
--- a/src/app/routes/delon/xlsx/xlsx.component.html
+++ /dev/null
@@ -1,14 +0,0 @@
-<div class="content__title">
-  <h1>Import & Export excel file,
-    <a href="//ng-alain.com/components/xlsx" target="_blank">Document</a>
-  </h1>
-</div>
-<nz-card nzTitle="Import">
-  <button nz-button (click)="url()">Via Url</button>
-  <input type="file" (change)="change($event)" multiple="false" class="ml-sm" />
-  <p class="mt-sm">result: {{data | json}}</p>
-</nz-card>
-<nz-card nzTitle="Export">
-  <button nz-button (click)="download()">Export</button>
-  <simple-table [data]="users" [ps]="3" [columns]="columns" class="mt-sm"></simple-table>
-</nz-card>
diff --git a/src/app/routes/delon/xlsx/xlsx.component.ts b/src/app/routes/delon/xlsx/xlsx.component.ts
deleted file mode 100644
index c67a0bf..0000000
--- a/src/app/routes/delon/xlsx/xlsx.component.ts
+++ /dev/null
@@ -1,50 +0,0 @@
-import { Component, OnInit } from '@angular/core';
-import { XlsxService, SimpleTableColumn } from '@delon/abc';
-
-@Component({
-  selector: 'app-xlsx',
-  templateUrl: './xlsx.component.html',
-})
-export class XlsxComponent {
-  constructor(private xlsx: XlsxService) {}
-  data: any;
-  url() {
-    this.xlsx.import(`./assets/tmp/demo.xlsx`).then(res => (this.data = res));
-  }
-
-  change(e: Event) {
-    const file = (e.target as HTMLInputElement).files[0];
-    this.xlsx.import(file).then(res => (this.data = res));
-  }
-
-  users: any[] = Array(100)
-    .fill({})
-    .map((item: any, idx: number) => {
-      return {
-        id: idx + 1,
-        name: `name ${idx + 1}`,
-        age: Math.ceil(Math.random() * 10) + 20,
-      };
-    });
-
-  columns: SimpleTableColumn[] = [
-    { title: '������', index: 'id', type: 'checkbox' },
-    { title: '������', index: 'name' },
-    { title: '������', index: 'age' },
-  ];
-
-  download() {
-    const data = [this.columns.map(i => i.title)];
-    this.users.forEach(i =>
-      data.push(this.columns.map(c => i[c.index as string])),
-    );
-    this.xlsx.export({
-      sheets: [
-        {
-          data: data,
-          name: 'sheet name',
-        },
-      ],
-    });
-  }
-}
diff --git a/src/app/routes/delon/zip/zip.component.html b/src/app/routes/delon/zip/zip.component.html
deleted file mode 100644
index f2cf5b5..0000000
--- a/src/app/routes/delon/zip/zip.component.html
+++ /dev/null
@@ -1,38 +0,0 @@
-<div class="content__title">
-  <h1>Read & Write zip file,
-    <a href="//ng-alain.com/components/zip" target="_blank">Document</a>
-  </h1>
-</div>
-<nz-card nzTitle="������">
-  <button nz-button (click)="url()">Via Url</button>
-  <input type="file" (change)="change($event)" multiple="false" class="ml-sm" />
-  <ol>
-    <li *ngFor="let i of list">{{i | json}}</li>
-  </ol>
-</nz-card>
-<nz-card nzTitle="������" *ngIf="instance">
-  <button nz-button (click)="data.push({})" [nzType]="'primary'">new</button>
-  <button nz-button (click)="download()" class="ml-sm">download</button>
-  <nz-table [nzData]="data" [nzFrontPagination]="false" [nzShowPagination]="false" class="mt-sm">
-    <thead>
-      <tr>
-        <th>
-          <span>path</span>
-        </th>
-        <th>
-          <span>url</span>
-        </th>
-      </tr>
-    </thead>
-    <tbody>
-      <tr *ngFor="let i of data; let index = index">
-        <td>
-          <input nz-input [(ngModel)]="i.path" name="path{{index}}">
-        </td>
-        <td>
-          <input nz-input [(ngModel)]="i.url" name="url{{index}}">
-        </td>
-      </tr>
-    </tbody>
-  </nz-table>
-</nz-card>
diff --git a/src/app/routes/delon/zip/zip.component.ts b/src/app/routes/delon/zip/zip.component.ts
deleted file mode 100644
index ddbd814..0000000
--- a/src/app/routes/delon/zip/zip.component.ts
+++ /dev/null
@@ -1,71 +0,0 @@
-import { Component, OnInit } from '@angular/core';
-import { ZipService } from '@delon/abc';
-import * as JSZip from 'jszip';
-import { NzMessageService } from 'ng-zorro-antd';
-
-@Component({
-  selector: 'app-zip',
-  templateUrl: './zip.component.html',
-})
-export class ZipComponent {
-  constructor(private zip: ZipService, private msg: NzMessageService) {
-    this.zip.create().then(ret => (this.instance = ret));
-  }
-
-  // region: read
-
-  list: any;
-  private format(data: any) {
-    const files = data.files;
-    this.list = Object.keys(files).map(key => {
-      return {
-        name: key,
-        dir: files[key].dir,
-        date: files[key].date,
-      };
-    });
-  }
-
-  url() {
-    this.zip.read(`./assets/tmp/demo.zip`).then(res => this.format(res));
-  }
-
-  change(e: Event) {
-    const file = (e.target as HTMLInputElement).files[0];
-    this.zip.read(file).then(res => this.format(res));
-  }
-
-  // endregion
-
-  // region: write
-
-  instance: JSZip = null;
-  data: { path: string; url: string }[] = [
-    { path: 'demo.docx', url: 'http://ng-alain.com/assets/demo.docx' },
-    {
-      path: '���������������.zip',
-      url: 'https://wximg.gtimg.com/shake_tv/mina/standard_logo.zip',
-    },
-  ];
-
-  download() {
-    const promises: Promise<any>[] = [];
-    this.data.forEach(item => {
-      promises.push(this.zip.pushUrl(this.instance, item.path, item.url));
-    });
-    Promise.all(promises).then(
-      () => {
-        this.zip.save(this.instance).then(() => {
-          this.msg.success('download success');
-          this.data = [];
-        });
-      },
-      (error: any) => {
-        console.warn(error);
-        this.msg.error(JSON.stringify(error));
-      },
-    );
-  }
-
-  // endregion
-}
diff --git a/src/app/routes/exception/403.component.ts b/src/app/routes/exception/403.component.ts
deleted file mode 100644
index 8355d3b..0000000
--- a/src/app/routes/exception/403.component.ts
+++ /dev/null
@@ -1,12 +0,0 @@
-import { Component } from '@angular/core';
-import { NzModalService } from 'ng-zorro-antd';
-
-@Component({
-  selector: 'exception-403',
-  template: `<exception type="403" style="min-height: 500px; height: 80%;"></exception>`,
-})
-export class Exception403Component {
-  constructor(modalSrv: NzModalService) {
-    modalSrv.closeAll();
-  }
-}
diff --git a/src/app/routes/exception/404.component.ts b/src/app/routes/exception/404.component.ts
deleted file mode 100644
index 50f8baf..0000000
--- a/src/app/routes/exception/404.component.ts
+++ /dev/null
@@ -1,12 +0,0 @@
-import { Component } from '@angular/core';
-import { NzModalService } from 'ng-zorro-antd';
-
-@Component({
-  selector: 'exception-404',
-  template: `<exception type="404" style="min-height: 500px; height: 80%;"></exception>`,
-})
-export class Exception404Component {
-  constructor(modalSrv: NzModalService) {
-    modalSrv.closeAll();
-  }
-}
diff --git a/src/app/routes/exception/500.component.ts b/src/app/routes/exception/500.component.ts
deleted file mode 100644
index 4614dbb..0000000
--- a/src/app/routes/exception/500.component.ts
+++ /dev/null
@@ -1,12 +0,0 @@
-import { Component } from '@angular/core';
-import { NzModalService } from 'ng-zorro-antd';
-
-@Component({
-  selector: 'exception-500',
-  template: `<exception type="500" style="min-height: 500px; height: 80%;"></exception>`,
-})
-export class Exception500Component {
-  constructor(modalSrv: NzModalService) {
-    modalSrv.closeAll();
-  }
-}
diff --git a/src/app/routes/extras/extras-routing.module.ts b/src/app/routes/extras/extras-routing.module.ts
deleted file mode 100644
index b9416f8..0000000
--- a/src/app/routes/extras/extras-routing.module.ts
+++ /dev/null
@@ -1,18 +0,0 @@
-import { NgModule } from '@angular/core';
-import { Routes, RouterModule } from '@angular/router';
-
-import { HelpCenterComponent } from './helpcenter/helpcenter.component';
-import { ExtrasSettingsComponent } from './settings/settings.component';
-import { ExtrasPoiComponent } from './poi/poi.component';
-
-const routes: Routes = [
-  { path: 'helpcenter', component: HelpCenterComponent },
-  { path: 'settings', component: ExtrasSettingsComponent },
-  { path: 'poi', component: ExtrasPoiComponent },
-];
-
-@NgModule({
-  imports: [RouterModule.forChild(routes)],
-  exports: [RouterModule],
-})
-export class ExtrasRoutingModule {}
diff --git a/src/app/routes/extras/extras.module.ts b/src/app/routes/extras/extras.module.ts
deleted file mode 100644
index 294c4a0..0000000
--- a/src/app/routes/extras/extras.module.ts
+++ /dev/null
@@ -1,24 +0,0 @@
-import { NgModule } from '@angular/core';
-import { Routes, RouterModule } from '@angular/router';
-import { SharedModule } from '@shared/shared.module';
-
-import { ExtrasRoutingModule } from './extras-routing.module';
-
-import { HelpCenterComponent } from './helpcenter/helpcenter.component';
-import { ExtrasSettingsComponent } from './settings/settings.component';
-import { ExtrasPoiComponent } from './poi/poi.component';
-import { ExtrasPoiEditComponent } from './poi/edit/edit.component';
-
-const COMPONENTS_NOROUNT = [ExtrasPoiEditComponent];
-
-@NgModule({
-  imports: [SharedModule, ExtrasRoutingModule],
-  declarations: [
-    HelpCenterComponent,
-    ExtrasSettingsComponent,
-    ExtrasPoiComponent,
-    ...COMPONENTS_NOROUNT,
-  ],
-  entryComponents: COMPONENTS_NOROUNT,
-})
-export class ExtrasModule {}
diff --git a/src/app/routes/extras/helpcenter/helpcenter.component.html b/src/app/routes/extras/helpcenter/helpcenter.component.html
deleted file mode 100644
index 5d7a10d..0000000
--- a/src/app/routes/extras/helpcenter/helpcenter.component.html
+++ /dev/null
@@ -1,94 +0,0 @@
-<div class="text-center pb-lg">
-  <h1 class="py-md mt-sm">������������</h1>
-  <div>������������������������������������</div>
-</div>
-<div class="text-center">
-  <nz-input-group nzCompact nzSize="large">
-    <input [(ngModel)]="q" placeholder="���������������������������������������������������������������" style="width: 50%;" nz-input>
-    <nz-select [(ngModel)]="type" nzSize="large" style="width:20%;">
-      <nz-option [nzLabel]="'������'" [nzValue]="''"></nz-option>
-      <nz-option [nzLabel]="'������������'" [nzValue]="'������������'"></nz-option>
-      <nz-option [nzLabel]="'���������CDN'" [nzValue]="'���������CDN'"></nz-option>
-      <nz-option [nzLabel]="'������������'" [nzValue]="'������������'"></nz-option>
-      <nz-option [nzLabel]="'���������'" [nzValue]="'���������'"></nz-option>
-    </nz-select>
-    <button nz-button [nzType]="'primary'" (click)="search()" nzSize="large">
-      <span>������</span>
-    </button>
-  </nz-input-group>
-  <div class="py-sm text-grey-dark">
-    ���������������
-    <a class="ml-sm" (click)="quick('���������������������')">���������������������</a>
-    <a class="ml-sm" (click)="quick('���������������')">���������������</a>
-    <a class="ml-sm" (click)="quick('������������')">������������</a>
-    <a class="ml-sm" (click)="quick('������������������')">������������������</a>
-    <a class="ml-sm" (click)="quick('������������������')">������������������</a>
-    <a class="ml-sm" (click)="quick('������������')">������������</a>
-  </div>
-</div>
-<nz-row [nzGutter]="16" class="py-lg">
-  <nz-col [nzXs]="12" [nzMd]="8">
-    <nz-card>
-      <a (click)="msg.info('������������')" class="d-block text-center text-primary">
-        <i class="anticon anticon-rocket display-1 mb-md"></i>
-        <h2 class="mb0">������������</h2>
-      </a>
-    </nz-card>
-  </nz-col>
-  <nz-col [nzXs]="12" [nzMd]="8">
-    <nz-card>
-      <a (click)="msg.info('���������CDN')" class="d-block text-center text-red">
-        <i class="anticon anticon-hdd display-1 mb-md"></i>
-        <h2 class="mb0">���������CDN</h2>
-      </a>
-    </nz-card>
-  </nz-col>
-  <nz-col [nzXs]="12" [nzMd]="8">
-    <nz-card>
-      <a (click)="msg.info('������������')" class="d-block text-center text-orange">
-        <i class="anticon anticon-user display-1 mb-md"></i>
-        <h2 class="mb0">������������</h2>
-      </a>
-    </nz-card>
-  </nz-col>
-  <nz-col [nzXs]="12" [nzMd]="8">
-    <nz-card>
-      <a (click)="msg.info('���������')" class="d-block text-center text-purple">
-        <i class="anticon anticon-database display-1 mb-md"></i>
-        <h2 class="mb0">���������</h2>
-      </a>
-    </nz-card>
-  </nz-col>
-  <nz-col [nzXs]="12" [nzMd]="8">
-    <nz-card>
-      <a (click)="msg.info('���������������')" class="d-block text-center text-cyan">
-        <i class="anticon anticon-api display-1 mb-md"></i>
-        <h2 class="mb0">���������������</h2>
-      </a>
-    </nz-card>
-  </nz-col>
-  <nz-col [nzXs]="12" [nzMd]="8">
-    <nz-card>
-      <a (click)="msg.info('������')" class="d-block text-center text-teal">
-        <i class="anticon anticon-global display-1 mb-md"></i>
-        <h2 class="mb0">������</h2>
-      </a>
-    </nz-card>
-  </nz-col>
-  <nz-col [nzXs]="12" [nzMd]="8">
-    <nz-card>
-      <a (click)="msg.info('������������')" class="d-block text-center text-pink">
-        <i class="anticon anticon-appstore-o display-1 mb-md"></i>
-        <h2 class="mb0">������������</h2>
-      </a>
-    </nz-card>
-  </nz-col>
-  <nz-col [nzXs]="12" [nzMd]="8">
-    <nz-card>
-      <a (click)="msg.info('���������������')" class="d-block text-center text-success">
-        <i class="anticon anticon-tool display-1 mb-md"></i>
-        <h2 class="mb0">���������������</h2>
-      </a>
-    </nz-card>
-  </nz-col>
-</nz-row>
diff --git a/src/app/routes/extras/helpcenter/helpcenter.component.spec.ts b/src/app/routes/extras/helpcenter/helpcenter.component.spec.ts
deleted file mode 100644
index c87127f..0000000
--- a/src/app/routes/extras/helpcenter/helpcenter.component.spec.ts
+++ /dev/null
@@ -1,16 +0,0 @@
-import { TestBed, TestModuleMetadata } from '@angular/core/testing';
-import { setUpTestBed } from '@testing/common.spec';
-
-import { HelpCenterComponent } from './helpcenter.component';
-
-describe('Comoponent: HelpCenter', () => {
-  setUpTestBed(<TestModuleMetadata>{
-    declarations: [HelpCenterComponent],
-  });
-
-  it('should create an instance', () => {
-    const fixture = TestBed.createComponent(HelpCenterComponent);
-    const comp = fixture.debugElement.componentInstance;
-    expect(comp).toBeTruthy();
-  });
-});
diff --git a/src/app/routes/extras/helpcenter/helpcenter.component.ts b/src/app/routes/extras/helpcenter/helpcenter.component.ts
deleted file mode 100644
index 6db10a7..0000000
--- a/src/app/routes/extras/helpcenter/helpcenter.component.ts
+++ /dev/null
@@ -1,22 +0,0 @@
-import { NzMessageService } from 'ng-zorro-antd';
-import { Component } from '@angular/core';
-
-@Component({
-  selector: 'app-helpcenter',
-  templateUrl: './helpcenter.component.html',
-})
-export class HelpCenterComponent {
-  type = '';
-  q = '';
-
-  quick(key: string) {
-    this.q = key;
-    this.search();
-  }
-
-  search() {
-    this.msg.success(`���������${this.q}`);
-  }
-
-  constructor(public msg: NzMessageService) {}
-}
diff --git a/src/app/routes/extras/poi/edit/edit.component.html b/src/app/routes/extras/poi/edit/edit.component.html
deleted file mode 100644
index f67a40e..0000000
--- a/src/app/routes/extras/poi/edit/edit.component.html
+++ /dev/null
@@ -1,87 +0,0 @@
-<div class="modal-header">
-  <div class="modal-title">{{i.id > 0 ? '������' : '������'}}-���������������HTML���������������������</div>
-</div>
-<form #f="ngForm" (ngSubmit)="save()" nz-form>
-  <nz-form-item class="mb-sm">
-    <nz-form-label nzSpan="4">���������������</nz-form-label>
-    <nz-form-control nzSpan="8">
-      {{i.user_id}}
-      <a (click)="msgSrv.info('find')">������������</a>
-    </nz-form-control>
-  </nz-form-item>
-  <nz-form-item class="mb-sm">
-    <nz-form-label nzSpan="4">������������</nz-form-label>
-    <nz-form-control nzSpan="8">
-      <input nz-input [(ngModel)]="i.name" name="name" maxlength="30" required />
-      <p nz-form-explain>���������������������������������������������������������������������������������������������������������</p>
-    </nz-form-control>
-    <nz-form-label nzSpan="4">������������</nz-form-label>
-    <nz-form-control nzSpan="8">
-      <input nz-input [(ngModel)]="i.branch_name" name="branch_name" maxlength="20" required />
-      <p nz-form-explain>������������������������������������������������������������������������������������������</p>
-    </nz-form-control>
-  </nz-form-item>
-  <nz-form-item class="mb-sm">
-    <nz-form-label nzSpan="4">���������</nz-form-label>
-    <nz-form-control nzSpan="8">
-      <input nz-input [(ngModel)]="i.geo" name="geo" maxlength="50" required />
-    </nz-form-control>
-    <nz-form-label nzSpan="4">������������</nz-form-label>
-    <nz-form-control nzSpan="8">
-      <input nz-input [(ngModel)]="i.address" name="address" maxlength="50" required />
-    </nz-form-control>
-  </nz-form-item>
-  <nz-form-item class="mb-sm">
-    <nz-form-label nzSpan="4">������</nz-form-label>
-    <nz-form-control nzSpan="8">
-      <input nz-input [(ngModel)]="i.lat" name="lat" required />
-    </nz-form-control>
-    <nz-form-label nzSpan="4">������</nz-form-label>
-    <nz-form-control nzSpan="8">
-      <input nz-input [(ngModel)]="i.lng" name="lng" required />
-    </nz-form-control>
-  </nz-form-item>
-  <nz-form-item class="mb-sm">
-    <nz-form-label nzSpan="4">������</nz-form-label>
-    <nz-form-control nzSpan="8">
-      <input nz-input [(ngModel)]="i.tel" name="tel" maxlength="30" required />
-    </nz-form-control>
-    <nz-form-label nzSpan="4">������������</nz-form-label>
-    <nz-form-control nzSpan="8">
-      <nz-select [(ngModel)]="i.categories" name="categories" required [nzAllowClear]="false">
-        <nz-option *ngFor="let i of cat" [nzLabel]="i" [nzValue]="i">
-        </nz-option>
-      </nz-select>
-    </nz-form-control>
-  </nz-form-item>
-  <nz-form-item class="mb-sm">
-    <nz-form-label nzSpan="4">���������</nz-form-label>
-    <nz-form-control nzSpan="8">
-      <input nz-input [(ngModel)]="i.recommend" name="recommend" maxlength="200" placeholder="200���������" />
-    </nz-form-control>
-    <nz-form-label nzSpan="4">������������</nz-form-label>
-    <nz-form-control nzSpan="8">
-      <input nz-input [(ngModel)]="i.special" name="special" maxlength="50" placeholder="50���������" />
-    </nz-form-control>
-  </nz-form-item>
-  <nz-form-item class="mb-sm">
-    <nz-form-label nzSpan="4">������������</nz-form-label>
-    <nz-form-control nzSpan="8">
-      <input nz-input [(ngModel)]="i.introduction" name="introduction" maxlength="300" placeholder="300���������" />
-    </nz-form-control>
-    <nz-form-label nzSpan="4">������������</nz-form-label>
-    <nz-form-control nzSpan="8">
-      <input nz-input [(ngModel)]="i.open_time" name="open_time" maxlength="30" placeholder="30���������" />
-    </nz-form-control>
-  </nz-form-item>
-  <nz-form-item class="mb-sm">
-    <nz-form-label nzSpan="4">������������</nz-form-label>
-    <nz-form-control nzSpan="8">
-      <nz-input-number [(ngModel)]="i.avg_price" name="avg_price" [nzMin]="0" [nzStep]="10"></nz-input-number>
-    </nz-form-control>
-  </nz-form-item>
-  <div class="modal-footer">
-    <button nz-button type="button" (click)="close()">������</button>
-    <button nz-button [disabled]="!f.form.valid || !f.form.dirty" [nzLoading]="http.loading" [nzType]="'primary'">������</button>
-  </div>
-</form>
diff --git a/src/app/routes/extras/poi/edit/edit.component.ts b/src/app/routes/extras/poi/edit/edit.component.ts
deleted file mode 100644
index dbf6863..0000000
--- a/src/app/routes/extras/poi/edit/edit.component.ts
+++ /dev/null
@@ -1,39 +0,0 @@
-import { NzMessageService, NzModalRef } from 'ng-zorro-antd';
-import { HttpClient } from '@angular/common/http';
-import { Component, OnInit } from '@angular/core';
-import { _HttpClient } from '@delon/theme';
-
-@Component({
-  selector: 'app-extras-poi-edit',
-  templateUrl: './edit.component.html',
-})
-export class ExtrasPoiEditComponent implements OnInit {
-  i: any;
-  cat: string[] = ['������', '������,������', '������,������,���������'];
-
-  constructor(
-    private modal: NzModalRef,
-    public msgSrv: NzMessageService,
-    public http: _HttpClient,
-  ) {}
-
-  ngOnInit() {
-    if (this.i.id > 0) {
-      this.http
-        .get('./assets/tmp/pois.json')
-        .subscribe((res: any) => (this.i = res.data[0]));
-    }
-  }
-
-  save() {
-    this.http.get('./assets/tmp/pois.json').subscribe(() => {
-      this.msgSrv.success('���������������������������������������������');
-      this.modal.close(true);
-      this.close();
-    });
-  }
-
-  close() {
-    this.modal.destroy();
-  }
-}
diff --git a/src/app/routes/extras/poi/poi.component.html b/src/app/routes/extras/poi/poi.component.html
deleted file mode 100644
index dbe7296..0000000
--- a/src/app/routes/extras/poi/poi.component.html
+++ /dev/null
@@ -1,37 +0,0 @@
-<div class="content__title">
-  <h1>������
-    <small>������
-      <code>.simple-table</code> ������������������������������������������</small>
-  </h1>
-  <button nz-button (click)="add()" [nzType]="'primary'">������</button>
-</div>
-<form nz-form [nzLayout]="'inline'" class="search-form">
-  <nz-form-item>
-    <nz-form-control>
-      <nz-select [(ngModel)]="s.s" name="s" [nzAllowClear]="false">
-        <nz-option nzValue="" nzLabel="������������"></nz-option>
-        <nz-option nzValue="1" nzLabel="������"></nz-option>
-        <nz-option nzValue="2" nzLabel="���������"></nz-option>
-        <nz-option nzValue="3" nzLabel="���������"></nz-option>
-        <nz-option nzValue="10" nzLabel="���������"></nz-option>
-        <nz-option nzValue="11" nzLabel="���������"></nz-option>
-      </nz-select>
-    </nz-form-control>
-  </nz-form-item>
-  <nz-form-item>
-    <nz-form-control>
-      <input nz-input [(ngModel)]="s.user_id" name="user_id" nzPlaceHolder="������������">
-    </nz-form-control>
-  </nz-form-item>
-  <nz-form-item>
-    <nz-form-control>
-      <input nz-input [(ngModel)]="s.q" name="q" nzPlaceHolder="���������������������">
-    </nz-form-control>
-  </nz-form-item>
-  <nz-form-item>
-    <nz-form-control>
-      <button nz-button (click)="st.reset(s)">������</button>
-    </nz-form-control>
-  </nz-form-item>
-</form>
-<simple-table #st class="simple-table" [columns]="columns" [data]="url" [extraParams]="s"></simple-table>
diff --git a/src/app/routes/extras/poi/poi.component.ts b/src/app/routes/extras/poi/poi.component.ts
deleted file mode 100644
index 614424c..0000000
--- a/src/app/routes/extras/poi/poi.component.ts
+++ /dev/null
@@ -1,51 +0,0 @@
-import { Component, ViewChild } from '@angular/core';
-import { NzMessageService } from 'ng-zorro-antd';
-import { ModalHelper } from '@delon/theme';
-import { SimpleTableComponent, SimpleTableColumn } from '@delon/abc';
-import { ExtrasPoiEditComponent } from './edit/edit.component';
-
-@Component({
-  selector: 'app-extras-poi',
-  templateUrl: './poi.component.html',
-})
-export class ExtrasPoiComponent {
-  @ViewChild('st') st: SimpleTableComponent;
-  s: any = {
-    pi: 1,
-    ps: 10,
-    s: '',
-  };
-  url = '/pois';
-  columns: SimpleTableColumn[] = [
-    { title: '������', index: 'id', width: '100px' },
-    { title: '������������', index: 'name' },
-    { title: '���������', index: 'branch_name' },
-    { title: '������', index: 'status_str', width: '100px' },
-    {
-      title: '������',
-      width: '180px',
-      buttons: [
-        {
-          text: '������',
-          type: 'modal',
-          component: ExtrasPoiEditComponent,
-          paramName: 'i',
-          click: () => this.msg.info('���������������������������������'),
-        },
-        { text: '������', click: () => this.msg.info('click photo') },
-        { text: '������SKU', click: () => this.msg.info('click sku') },
-      ],
-    },
-  ];
-
-  constructor(public msg: NzMessageService, private modal: ModalHelper) {}
-
-  add() {
-    this.modal
-      .static(ExtrasPoiEditComponent, { i: { id: 0 } })
-      .subscribe(() => {
-        this.st.load();
-        this.msg.info('���������������������������������');
-      });
-  }
-}
diff --git a/src/app/routes/extras/settings/settings.component.html b/src/app/routes/extras/settings/settings.component.html
deleted file mode 100644
index 484896d..0000000
--- a/src/app/routes/extras/settings/settings.component.html
+++ /dev/null
@@ -1,204 +0,0 @@
-<nz-row [nzGutter]="24" class="py-lg">
-  <nz-col [nzSpan]="6">
-    <nz-card nzTitle="Personal settings" class="ant-card__body-nopadding">
-      <a (click)="active=1" class="d-block py-sm px-md" [ngClass]="{'bg-primary-light text-white':active===1}">Profile</a>
-      <a (click)="active=2" class="d-block py-sm px-md" [ngClass]="{'bg-primary-light text-white':active===2}">Account</a>
-      <a (click)="active=3" class="d-block py-sm px-md" [ngClass]="{'bg-primary-light text-white':active===3}">Emails</a>
-      <a (click)="active=4" class="d-block py-sm px-md" [ngClass]="{'bg-primary-light text-white':active===4}">Notifications</a>
-    </nz-card>
-    <nz-card nzTitle="Developer settings" class="ant-card__body-nopadding">
-      <a (click)="active=5" class="d-block py-sm px-md" [ngClass]="{'bg-primary-light text-white':active===5}">OAuth applications</a>
-      <a (click)="active=6" class="d-block py-sm px-md" [ngClass]="{'bg-primary-light text-white':active===6}">Personal access tokens</a>
-    </nz-card>
-  </nz-col>
-  <nz-col [nzSpan]="18">
-    <nz-card nzTitle="Public profile" *ngIf="active===1">
-      <nz-row [nzGutter]="64">
-        <nz-col [nzSpan]="16">
-          <form nz-form [formGroup]="profileForm" (ngSubmit)="profileSave($event, profileForm.value)" [nzLayout]="'vertical'">
-            <nz-form-item>
-              <nz-form-label nzFor="name" nzRequired>name</nz-form-label>
-              <nz-form-control>
-                <input nz-input formControlName="name" id="name">
-                <div *ngIf="name.invalid && (name.dirty || name.touched)">
-                  <nz-form-explain *ngIf="name.errors.required">required</nz-form-explain>
-                  <nz-form-explain *ngIf="name.errors.pattern">must match pattern [-_a-zA-Z0-9]</nz-form-explain>
-                </div>
-              </nz-form-control>
-            </nz-form-item>
-            <nz-form-item>
-              <nz-form-label nzFor="email">email</nz-form-label>
-              <nz-form-control>
-                <nz-select formControlName="email">
-                  <nz-option [nzLabel]="'Select a verified email to display'" [nzValue]="''"></nz-option>
-                  <nz-option [nzLabel]="'cipchk@qq.com'" [nzValue]="'cipchk@qq.com'"></nz-option>
-                </nz-select>
-                <nz-form-explain>You can manage verified email addresses in your
-                  <a (click)="active=3">email settings</a>.</nz-form-explain>
-              </nz-form-control>
-            </nz-form-item>
-            <nz-form-item>
-              <nz-form-label nzFor="bio">Bio</nz-form-label>
-              <nz-form-control>
-                <textarea nz-input formControlName="bio" id="bio" placeholder="Tell us a little bit about yourself"></textarea>
-                <nz-form-explain>You can
-                  <strong>@mention</strong> other users and organizations to link to them.</nz-form-explain>
-              </nz-form-control>
-            </nz-form-item>
-            <nz-form-item>
-              <nz-form-label nzFor="url">URL</nz-form-label>
-              <nz-form-control>
-                <input nz-input formControlName="url" id="url">
-              </nz-form-control>
-            </nz-form-item>
-            <nz-form-item>
-              <nz-form-label nzFor="company">Company</nz-form-label>
-              <nz-form-control>
-                <input nz-input formControlName="company" id="company">
-                <nz-form-explain>You can
-                  <strong>@mention</strong> your company's GitHub organization to link it.</nz-form-explain>
-              </nz-form-control>
-            </nz-form-item>
-            <nz-form-item class="border-top-1 mt-md pt-md">
-              <nz-form-label nzFor="location">Location</nz-form-label>
-              <nz-form-control>
-                <input nz-input formControlName="location" id="location">
-              </nz-form-control>
-            </nz-form-item>
-            <nz-form-item>
-              <nz-form-control>
-                <button nz-button [nzType]="'primary'" [disabled]="profileForm.invalid">Update profile</button>
-              </nz-form-control>
-            </nz-form-item>
-          </form>
-        </nz-col>
-        <nz-col [nzSpan]="8">
-          <h4>Profile picture</h4>
-          <img src="./assets/tmp/img/avatar.jpg" style="width: 100%;">
-          <nz-upload nzAction="https://jsonplaceholder.typicode.com/posts/" class="d-block mt-md text-center">
-            <button nz-button>Upload new picture</button>
-          </nz-upload>
-        </nz-col>
-      </nz-row>
-    </nz-card>
-    <nz-card nzTitle="Change password" *ngIf="active===2">
-      <nz-row [nzGutter]="64">
-        <nz-col [nzSpan]="16">
-          <form nz-form [nzLayout]="'vertical'">
-            <nz-form-item>
-              <nz-form-label nzFor="old_password" nzRequired>Old password</nz-form-label>
-              <nz-form-control>
-                <input nz-input [(ngModel)]="pwd.old_password" name="old_password" id="old_password" type="password" required>
-              </nz-form-control>
-            </nz-form-item>
-            <nz-form-item>
-              <nz-form-label nzFor="new_password" nzRequired>New password</nz-form-label>
-              <nz-form-control>
-                <input nz-input [(ngModel)]="pwd.new_password" name="new_password" id="new_password" type="password" required>
-              </nz-form-control>
-            </nz-form-item>
-            <nz-form-item>
-              <nz-form-label nzRequired nzFor="confirm_new_password">Confirm new password</nz-form-label>
-              <nz-form-control>
-                <input nz-input [(ngModel)]="pwd.confirm_new_password" name="confirm_new_password" id="confirm_new_password" type="password"
-                  required>
-              </nz-form-control>
-            </nz-form-item>
-            <nz-form-item>
-              <nz-form-control>
-                <button nz-button (click)="pwdSave()" [nzType]="'primary'">Update profile</button>
-                <a class="pl-sm" [routerLink]="['/forget']">I forgot my password</a>
-              </nz-form-control>
-            </nz-form-item>
-          </form>
-        </nz-col>
-      </nz-row>
-      <h2 class="py-md mt-lg border-bottom-1">Change username</h2>
-      <p class="py-sm">Changing your username can have unintended side effects.</p>
-      <button nz-button (click)="msg.info('to change username page')">
-        <span>Change username</span>
-      </button>
-    </nz-card>
-    <nz-card nzTitle="Email" *ngIf="active===3">
-      <nz-row class="border-1 p-md rounded-sm" [nzType]="'flex'" [nzJustify]="'center'" [nzAlign]="'middle'">
-        <nz-col [nzSpan]="12">
-          cipchk@qq.com
-          <nz-tooltip [nzTitle]="'This email will be used for account-related notifications (e.g. account changes, password resets, billing receipts) as well as any web-based GitHub operations (e.g. edits and merges).'">
-            <span nz-tooltip>
-              <nz-tag [nzColor]="'#28a745'">Primary</nz-tag>
-            </span>
-          </nz-tooltip>
-          <nz-tooltip [nzTitle]="'This email will be used as the \'from\' address for web-based GitHub operations.'">
-            <span nz-tooltip>
-              <nz-tag [nzColor]="'#959da5'">Public</nz-tag>
-            </span>
-          </nz-tooltip>
-        </nz-col>
-        <nz-col [nzSpan]="12" class="text-right">
-          <i class="anticon anticon-delete text-lg"></i>
-        </nz-col>
-      </nz-row>
-      <h4 class="pt-md mb-sm">Add email address</h4>
-      <input nz-input style="width: 200px;" class="mr-sm">
-      <button nz-button (click)="msg.info('add')">Add</button>
-      <h4 class="border-top-1 py-md mt-md">Primary email address</h4>
-      <p class="mb-md">cipchk@qq.com will be used for account-related notifications and for web-based GitHub operations (e.g. edits and merges).</p>
-      <nz-select [(ngModel)]="primary_email" class="mr-sm">
-        <nz-option [nzLabel]="'cipchk@qq.com'" [nzValue]="'cipchk@qq.com'"></nz-option>
-      </nz-select>
-      <button nz-button (click)="msg.info('save')">Save</button>
-    </nz-card>
-    <nz-card nzTitle="Notifications" *ngIf="active===4">
-      <p class="pb-md">Choose how you receive notifications. These notification settings apply to the repositories you���re watching.</p>
-      <nz-list nzBordered>
-        <nz-list-item class="d-block">
-          <h4>Automatically watch repositories</h4>
-          <p class="py-sm">When you���re given push access to a repository, automatically receive notifications for it.</p>
-          <label nz-checkbox [ngModel]="true">Automatically watch</label>
-        </nz-list-item>
-        <nz-list-item class="d-block">
-          <h4>Participating</h4>
-          <p class="py-sm">Notifications for the conversations you are participating in, or if someone cites you with an @mention.</p>
-          <label nz-checkbox [ngModel]="true">Email</label>
-          <label nz-checkbox [ngModel]="true">Web</label>
-        </nz-list-item>
-        <nz-list-item class="d-block">
-          <h4>Watching</h4>
-          <p class="py-sm">Notifications for all repositories or conversations you���re watching.</p>
-          <label nz-checkbox [ngModel]="true">Email</label>
-          <label nz-checkbox [ngModel]="true">Web</label>
-        </nz-list-item>
-      </nz-list>
-    </nz-card>
-    <nz-card class="ant-card__body-nopadding" *ngIf="active===5" [nzBordered]="false">
-      <div class="border rounded-md text-center p-lg bg-grey-lighter">
-        <h3>No OAuth applications</h3>
-        <p class="py-md">OAuth applications are used to access the GitHub API. Read the docs to find out more.</p>
-        <button nz-button (click)="msg.info('Register a new application')" [nzType]="'primary'">
-          Register a new application
-        </button>
-      </div>
-    </nz-card>
-    <nz-card nzTitle="Personal access tokens" [nzExtra]="extra" *ngIf="active===6">
-      <ng-template #extra>
-        <button nz-button (click)="msg.info('Generate new token')" [nzSize]="'small'">Generate new token</button>
-        <button nz-button (click)="msg.info('Revoke all')" [nzSize]="'small'" [nzType]="'danger'" class="ml-sm">Revoke all</button>
-      </ng-template>
-      <p>Tokens you have generated that can be used to access the GitHub API.</p>
-      <nz-list nzBordered class="mt-sm">
-        <nz-list-item>
-          <nz-col [nzSpan]="12">
-            <strong>octotree</strong> ��� repo
-          </nz-col>
-          <nz-col [nzSpan]="12" class="text-right">
-            Last used within the last day
-            <nz-button-group>
-              <button nz-button>Edit</button>
-              <button nz-button [nzType]="'danger'">Delete</button>
-            </nz-button-group>
-          </nz-col>
-        </nz-list-item>
-      </nz-list>
-    </nz-card>
-  </nz-col>
-</nz-row>
diff --git a/src/app/routes/extras/settings/settings.component.spec.ts b/src/app/routes/extras/settings/settings.component.spec.ts
deleted file mode 100644
index 7bb9ac1..0000000
--- a/src/app/routes/extras/settings/settings.component.spec.ts
+++ /dev/null
@@ -1,16 +0,0 @@
-import { TestBed, TestModuleMetadata } from '@angular/core/testing';
-import { setUpTestBed } from '@testing/common.spec';
-
-import { ExtrasSettingsComponent } from './settings.component';
-
-describe('Comoponent: ExtrasSetting', () => {
-  setUpTestBed(<TestModuleMetadata>{
-    declarations: [ExtrasSettingsComponent],
-  });
-
-  it('should create an instance', () => {
-    const fixture = TestBed.createComponent(ExtrasSettingsComponent);
-    const comp = fixture.debugElement.componentInstance;
-    expect(comp).toBeTruthy();
-  });
-});
diff --git a/src/app/routes/extras/settings/settings.component.ts b/src/app/routes/extras/settings/settings.component.ts
deleted file mode 100644
index 487d0e9..0000000
--- a/src/app/routes/extras/settings/settings.component.ts
+++ /dev/null
@@ -1,64 +0,0 @@
-import { NzMessageService } from 'ng-zorro-antd';
-import { Component, OnInit } from '@angular/core';
-import { FormBuilder, FormGroup, Validators } from '@angular/forms';
-
-@Component({
-  selector: 'app-extras-settings',
-  templateUrl: './settings.component.html',
-})
-export class ExtrasSettingsComponent implements OnInit {
-  active = 1;
-  profileForm: FormGroup;
-  pwd = {
-    old_password: '',
-    new_password: '',
-    confirm_new_password: '',
-  };
-  // Email
-  primary_email = 'cipchk@qq.com';
-
-  constructor(fb: FormBuilder, public msg: NzMessageService) {
-    this.profileForm = fb.group({
-      name: [
-        null,
-        Validators.compose([
-          Validators.required,
-          Validators.pattern(`^[-_a-zA-Z0-9]{4,20}$`),
-        ]),
-      ],
-      email: '',
-      bio: [null, Validators.maxLength(160)],
-      url: '',
-      company: '',
-      location: '',
-    });
-  }
-
-  get name() {
-    return this.profileForm.get('name');
-  }
-
-  profileSave(event, value) {
-    console.log('profile value', value);
-  }
-
-  pwdSave() {
-    if (!this.pwd.old_password) {
-      return this.msg.error('invalid old password');
-    }
-    if (!this.pwd.new_password) {
-      return this.msg.error('invalid new password');
-    }
-    if (!this.pwd.confirm_new_password) {
-      return this.msg.error('invalid confirm new password');
-    }
-    console.log('pwd value', this.pwd);
-  }
-
-  ngOnInit() {
-    this.profileForm.patchValue({
-      name: 'cipchk',
-      email: 'cipchk@qq.com',
-    });
-  }
-}
diff --git a/src/app/routes/home-page/home-page-routing.module.ts b/src/app/routes/home-page/home-page-routing.module.ts
new file mode 100644
index 0000000..5b20053
--- /dev/null
+++ b/src/app/routes/home-page/home-page-routing.module.ts
@@ -0,0 +1,11 @@
+import { NgModule } from '@angular/core';
+import { HomePageComponent } from './home-page/home-page.component';
+import { Routes, RouterModule } from '@angular/router';
+
+const routes: Routes = [{ path: '', component: HomePageComponent }];
+
+@NgModule({
+  imports: [RouterModule.forChild(routes)],
+  exports: [RouterModule],
+})
+export class HomePageRoutingModule { }
diff --git a/src/app/routes/home-page/home-page.module.ts b/src/app/routes/home-page/home-page.module.ts
new file mode 100644
index 0000000..9af96bc
--- /dev/null
+++ b/src/app/routes/home-page/home-page.module.ts
@@ -0,0 +1,13 @@
+import { NgModule } from '@angular/core';
+import { Routes, RouterModule } from '@angular/router';
+import { SharedModule } from '@shared/shared.module';
+import { HomePageRoutingModule } from './home-page-routing.module';
+import { HomePageComponent } from './home-page/home-page.component';
+
+@NgModule({
+  imports: [
+    SharedModule, HomePageRoutingModule
+  ],
+  declarations: [HomePageComponent]
+})
+export class HomePageModule { }
diff --git a/src/app/routes/home-page/home-page/home-page.component.html b/src/app/routes/home-page/home-page/home-page.component.html
new file mode 100644
index 0000000..3a45c9b
--- /dev/null
+++ b/src/app/routes/home-page/home-page/home-page.component.html
@@ -0,0 +1,25 @@
+<div class="content__title">
+  <h1>������������</h1>
+</div>
+<div nz-row [nzGutter]="24" class="pt-lg">
+  <div nz-col nzXs="24" nzSm="12" nzMd="12" nzLg="8">
+    <g2-card [title]="'AQI������'" total="126,560" contentHeight="44px" [action]="action1" [footer]="footer1">
+      <ng-template #action1>
+        <nz-tooltip [nzTitle]="'������'">
+            <i class="anticon anticon-sync"></i>
+        </nz-tooltip>
+      </ng-template>
+      <trend flag="up" style="display:block; margin-top:2px;">���������
+        <span class="pl-sm">12%</span>
+      </trend>
+      <trend flag="down">���������
+        <span class="pl-sm">11%</span>
+      </trend>
+      <ng-template #footer1>
+        <p class="text-truncate mb0">���������������
+          <span class="ml-sm">���12,423</span>
+        </p>
+      </ng-template>
+    </g2-card>
+  </div>
+</div>
diff --git a/src/app/routes/data-v/relation/relation.component.less b/src/app/routes/home-page/home-page/home-page.component.less
similarity index 100%
rename from src/app/routes/data-v/relation/relation.component.less
rename to src/app/routes/home-page/home-page/home-page.component.less
diff --git a/src/app/routes/home-page/home-page/home-page.component.ts b/src/app/routes/home-page/home-page/home-page.component.ts
new file mode 100644
index 0000000..a269aea
--- /dev/null
+++ b/src/app/routes/home-page/home-page/home-page.component.ts
@@ -0,0 +1,15 @@
+import { Component, OnInit } from '@angular/core';
+
+@Component({
+  selector: 'app-home-page',
+  templateUrl: './home-page.component.html',
+  styleUrls: ['./home-page.component.less']
+})
+export class HomePageComponent implements OnInit {
+
+  constructor() { }
+
+  ngOnInit() {
+  }
+
+}
diff --git a/src/app/routes/passport/lock/lock.component.html b/src/app/routes/passport/lock/lock.component.html
deleted file mode 100644
index ced40d1..0000000
--- a/src/app/routes/passport/lock/lock.component.html
+++ /dev/null
@@ -1,29 +0,0 @@
-<div class="wrapper">
-  <div class="abs-center width-lg">
-    <div class="py-lg text-center">
-      <nz-avatar [nzSrc]="settings.user.avatar" nzIcon="anticon anticon-user" nzSize="large"></nz-avatar>
-    </div>
-    <nz-card [nzBordered]="false">
-      <p class="mb-sm">������������������������������</p>
-      <form nz-form [formGroup]="f" (ngSubmit)="submit()" role="form">
-        <nz-form-item>
-          <nz-form-control>
-            <nz-input-group nzSize="large" nzSuffixIcon="anticon anticon-lock">
-              <input type="password" nz-input formControlName="password">
-            </nz-input-group>
-            <nz-form-explain *ngIf="f.get('password').dirty && f.get('password').errors">This field is required</nz-form-explain>
-          </nz-form-control>
-        </nz-form-item>
-        <nz-row nzType="flex" nzAlign="middle">
-          <nz-col [nzOffset]="12" [nzSpan]="12" style="text-align:right;">
-            <button nz-button nzSize="large" [disabled]="!f.valid" nzType="primary">������</button>
-          </nz-col>
-        </nz-row>
-      </form>
-    </nz-card>
-    <div class="p-lg text-center text-sm">
-      &copy; {{ settings.app.year }} - {{ settings.app.name }}
-      <br> {{ settings.app.description }}
-    </div>
-  </div>
-</div>
diff --git a/src/app/routes/passport/lock/lock.component.spec.ts b/src/app/routes/passport/lock/lock.component.spec.ts
deleted file mode 100644
index a4daab7..0000000
--- a/src/app/routes/passport/lock/lock.component.spec.ts
+++ /dev/null
@@ -1,16 +0,0 @@
-import { TestBed, TestModuleMetadata } from '@angular/core/testing';
-import { setUpTestBed } from '@testing/common.spec';
-
-import { UserLockComponent } from './lock.component';
-
-describe('Pages: lock', () => {
-  setUpTestBed(<TestModuleMetadata>{
-    declarations: [UserLockComponent],
-  });
-
-  it('should create an instance', () => {
-    const fixture = TestBed.createComponent(UserLockComponent);
-    const comp = fixture.debugElement.componentInstance;
-    expect(comp).toBeTruthy();
-  });
-});
diff --git a/src/app/routes/passport/lock/lock.component.ts b/src/app/routes/passport/lock/lock.component.ts
deleted file mode 100644
index 1da2f35..0000000
--- a/src/app/routes/passport/lock/lock.component.ts
+++ /dev/null
@@ -1,35 +0,0 @@
-import { Router } from '@angular/router';
-import { Component } from '@angular/core';
-import { FormGroup, FormBuilder, Validators } from '@angular/forms';
-import { SettingsService } from '@delon/theme';
-
-@Component({
-  selector: 'passport-lock',
-  templateUrl: './lock.component.html',
-})
-export class UserLockComponent {
-  f: FormGroup;
-
-  constructor(
-    public settings: SettingsService,
-    fb: FormBuilder,
-    private router: Router,
-  ) {
-    this.f = fb.group({
-      password: [null, Validators.required],
-    });
-  }
-
-  submit() {
-    // tslint:disable-next-line:forin
-    for (const i in this.f.controls) {
-      this.f.controls[i].markAsDirty();
-      this.f.controls[i].updateValueAndValidity();
-    }
-    if (this.f.valid) {
-      console.log('Valid!');
-      console.log(this.f.value);
-      this.router.navigate(['dashboard']);
-    }
-  }
-}
diff --git a/src/app/routes/passport/login/login.component.html b/src/app/routes/passport/login/login.component.html
deleted file mode 100644
index a2d3319..0000000
--- a/src/app/routes/passport/login/login.component.html
+++ /dev/null
@@ -1,70 +0,0 @@
-<form nz-form [formGroup]="form" (ngSubmit)="submit()" role="form">
-  <nz-tabset [nzAnimated]="false" class="tabs" (nzSelectChange)="switch($event)">
-    <nz-tab nzTitle="������������������">
-      <nz-alert *ngIf="error" [nzType]="'error'" [nzMessage]="error" [nzShowIcon]="true" class="mb-lg"></nz-alert>
-      <nz-form-item>
-        <nz-form-control>
-          <nz-input-group nzSize="large" nzPrefixIcon="anticon anticon-user">
-            <input nz-input formControlName="userName" placeholder="admin">
-          </nz-input-group>
-          <nz-form-explain *ngIf="userName.dirty && userName.errors">������������������������������������������</nz-form-explain>
-        </nz-form-control>
-      </nz-form-item>
-      <nz-form-item>
-        <nz-form-control>
-          <nz-input-group nzSize="large" nzPrefixIcon="anticon anticon-lock">
-            <input nz-input type="password" formControlName="password" placeholder="888888">
-          </nz-input-group>
-          <nz-form-explain *ngIf="password.dirty && password.errors">
-            ������������������
-          </nz-form-explain>
-        </nz-form-control>
-      </nz-form-item>
-    </nz-tab>
-    <nz-tab nzTitle="���������������">
-      <nz-form-item>
-        <nz-form-control>
-          <nz-input-group nzSize="large" nzPrefixIcon="anticon anticon-user">
-            <input nz-input formControlName="mobile" placeholder="���������">
-          </nz-input-group>
-          <nz-form-explain *ngIf="mobile.dirty && mobile.errors">������������������������������������������</nz-form-explain>
-        </nz-form-control>
-      </nz-form-item>
-      <nz-form-item>
-        <nz-form-control>
-          <nz-row [nzGutter]="8">
-            <nz-col [nzSpan]="16">
-              <nz-input-group nzSize="large" nzPrefixIcon="anticon anticon-mail">
-                <input nz-input formControlName="captcha" placeholder="���������">
-              </nz-input-group>
-              <nz-form-explain *ngIf="mobile.dirty && mobile.errors">
-                ���������������������
-              </nz-form-explain>
-            </nz-col>
-            <nz-col [nzSpan]="8">
-              <button nz-button nzSize="large" (click)="getCaptcha()" [disabled]="count" class="ant-btn__block">{{ count ? count + 's' : '���������������' }}</button>
-            </nz-col>
-          </nz-row>
-        </nz-form-control>
-      </nz-form-item>
-    </nz-tab>
-  </nz-tabset>
-  <nz-form-item>
-    <nz-col [nzSpan]="12">
-      <label nz-checkbox formControlName="remember">������������</label>
-    </nz-col>
-    <nz-col [nzSpan]="12" class="text-right">
-      <a class="forgot" (click)="msg.error('���������������')">���������������</a>
-    </nz-col>
-  </nz-form-item>
-  <nz-form-item>
-    <button nz-button type="submit" nzType="primary" nzSize="large" [nzLoading]="loading" class="ant-btn__block">������</button>
-  </nz-form-item>
-</form>
-<div class="other">
-  ������������������
-  <i title="in fact Auth0 via window" (click)="open('auth0', 'window')" class="anticon anticon-alipay-circle icon"></i>
-  <i title="in fact Github via redirect" (click)="open('taobao')" class="anticon anticon-taobao-circle icon"></i>
-  <i title="���������������" (click)="open('weibo', 'window')" class="anticon anticon-weibo-circle icon"></i>
-  <a class="register" routerLink="/passport/register">������������</a>
-</div>
diff --git a/src/app/routes/passport/login/login.component.less b/src/app/routes/passport/login/login.component.less
deleted file mode 100644
index 3d9450c..0000000
--- a/src/app/routes/passport/login/login.component.less
+++ /dev/null
@@ -1,42 +0,0 @@
-@import 'node_modules/@delon/theme/styles/default';
-:host {
-  display: block;
-  width: 368px;
-  margin: 0 auto;
-  ::ng-deep {
-    .ant-tabs .ant-tabs-bar {
-      border-bottom: 0;
-      margin-bottom: 24px;
-      text-align: center;
-    }
-    .ant-tabs-tab {
-      font-size: 16px;
-      line-height: 24px;
-    }
-    .ant-input-affix-wrapper .ant-input:not(:first-child) {
-      padding-left: 34px;
-    }
-    .icon {
-      font-size: 24px;
-      color: rgba(0, 0, 0, 0.2);
-      margin-left: 16px;
-      vertical-align: middle;
-      cursor: pointer;
-      transition: color 0.3s;
-      &:hover {
-        color: @primary-color;
-      }
-    }
-    .other {
-      text-align: left;
-      margin-top: 24px;
-      line-height: 22px;
-      nz-tooltip {
-        vertical-align: middle;
-      }
-      .register {
-        float: right;
-      }
-    }
-  }
-}
diff --git a/src/app/routes/passport/login/login.component.ts b/src/app/routes/passport/login/login.component.ts
deleted file mode 100644
index f856d42..0000000
--- a/src/app/routes/passport/login/login.component.ts
+++ /dev/null
@@ -1,181 +0,0 @@
-import { SettingsService } from '@delon/theme';
-import { Component, OnDestroy, Inject, Optional } from '@angular/core';
-import { Router } from '@angular/router';
-import { FormGroup, FormBuilder, Validators } from '@angular/forms';
-import { NzMessageService, NzModalService } from 'ng-zorro-antd';
-import {
-  SocialService,
-  SocialOpenType,
-  TokenService,
-  DA_SERVICE_TOKEN,
-} from '@delon/auth';
-import { ReuseTabService } from '@delon/abc';
-import { environment } from '@env/environment';
-import { StartupService } from '@core/startup/startup.service';
-
-@Component({
-  selector: 'passport-login',
-  templateUrl: './login.component.html',
-  styleUrls: ['./login.component.less'],
-  providers: [SocialService],
-})
-export class UserLoginComponent implements OnDestroy {
-  form: FormGroup;
-  error = '';
-  type = 0;
-  loading = false;
-
-  constructor(
-    fb: FormBuilder,
-    private router: Router,
-    public msg: NzMessageService,
-    private modalSrv: NzModalService,
-    private settingsService: SettingsService,
-    private socialService: SocialService,
-    @Optional()
-    @Inject(ReuseTabService)
-    private reuseTabService: ReuseTabService,
-    @Inject(DA_SERVICE_TOKEN) private tokenService: TokenService,
-    private startupSrv: StartupService,
-  ) {
-    this.form = fb.group({
-      userName: [null, [Validators.required, Validators.minLength(5)]],
-      password: [null, Validators.required],
-      mobile: [null, [Validators.required, Validators.pattern(/^1\d{10}$/)]],
-      captcha: [null, [Validators.required]],
-      remember: [true],
-    });
-    modalSrv.closeAll();
-  }
-
-  // region: fields
-
-  get userName() {
-    return this.form.controls.userName;
-  }
-  get password() {
-    return this.form.controls.password;
-  }
-  get mobile() {
-    return this.form.controls.mobile;
-  }
-  get captcha() {
-    return this.form.controls.captcha;
-  }
-
-  // endregion
-
-  switch(ret: any) {
-    this.type = ret.index;
-  }
-
-  // region: get captcha
-
-  count = 0;
-  interval$: any;
-
-  getCaptcha() {
-    this.count = 59;
-    this.interval$ = setInterval(() => {
-      this.count -= 1;
-      if (this.count <= 0) clearInterval(this.interval$);
-    }, 1000);
-  }
-
-  // endregion
-
-  submit() {
-    this.error = '';
-    if (this.type === 0) {
-      this.userName.markAsDirty();
-      this.userName.updateValueAndValidity();
-      this.password.markAsDirty();
-      this.password.updateValueAndValidity();
-      if (this.userName.invalid || this.password.invalid) return;
-    } else {
-      this.mobile.markAsDirty();
-      this.mobile.updateValueAndValidity();
-      this.captcha.markAsDirty();
-      this.captcha.updateValueAndValidity();
-      if (this.mobile.invalid || this.captcha.invalid) return;
-    }
-    // mock http
-    this.loading = true;
-    setTimeout(() => {
-      this.loading = false;
-      if (this.type === 0) {
-        if (
-          this.userName.value !== 'admin' ||
-          this.password.value !== '888888'
-        ) {
-          this.error = `���������������������`;
-          return;
-        }
-      }
-
-      // ������������������������
-      this.reuseTabService.clear();
-      // ������Token������
-      this.tokenService.set({
-        token: '123456789',
-        name: this.userName.value,
-        email: `cipchk@qq.com`,
-        id: 10000,
-        time: +new Date(),
-      });
-      // ������������ StartupService ��������������������� User ���������������������
-      // this.startupSrv.load().then(() => this.router.navigate(['/']));
-      // ������������������
-      this.router.navigate(['/']);
-    }, 1000);
-  }
-
-  // region: social
-
-  open(type: string, openType: SocialOpenType = 'href') {
-    let url = ``;
-    let callback = ``;
-    if (environment.production)
-      callback = 'https://cipchk.github.io/ng-alain/callback/' + type;
-    else callback = 'http://localhost:4200/callback/' + type;
-    switch (type) {
-      case 'auth0':
-        url = `//cipchk.auth0.com/login?client=8gcNydIDzGBYxzqV0Vm1CX_RXH-wsWo5&redirect_uri=${decodeURIComponent(
-          callback,
-        )}`;
-        break;
-      case 'github':
-        url = `//github.com/login/oauth/authorize?client_id=9d6baae4b04a23fcafa2&response_type=code&redirect_uri=${decodeURIComponent(
-          callback,
-        )}`;
-        break;
-      case 'weibo':
-        url = `https://api.weibo.com/oauth2/authorize?client_id=1239507802&response_type=code&redirect_uri=${decodeURIComponent(
-          callback,
-        )}`;
-        break;
-    }
-    if (openType === 'window') {
-      this.socialService
-        .login(url, '/', {
-          type: 'window',
-        })
-        .subscribe(res => {
-          if (res) {
-            this.settingsService.setUser(res);
-            this.router.navigateByUrl('/');
-          }
-        });
-    } else {
-      this.socialService.login(url, '/', {
-        type: 'href',
-      });
-    }
-  }
-
-  // endregion
-
-  ngOnDestroy(): void {
-    if (this.interval$) clearInterval(this.interval$);
-  }
-}
diff --git a/src/app/routes/passport/register-result/register-result.component.html b/src/app/routes/passport/register-result/register-result.component.html
deleted file mode 100644
index 4e6eade..0000000
--- a/src/app/routes/passport/register-result/register-result.component.html
+++ /dev/null
@@ -1,7 +0,0 @@
-<result type="success" [title]="title" description="������������������������������������������������������������24������������������������������������������������������������������������">
-  <ng-template #title>
-    <div class="title">���������������ng-alain@example.com ������������</div>
-  </ng-template>
-  <button (click)="msg.success('email')" nz-button nzSize="large" [nzType]="'primary'">������������</button>
-  <button routerLink="/" nz-button nzSize="large">������������</button>
-</result>
diff --git a/src/app/routes/passport/register-result/register-result.component.ts b/src/app/routes/passport/register-result/register-result.component.ts
deleted file mode 100644
index 3228896..0000000
--- a/src/app/routes/passport/register-result/register-result.component.ts
+++ /dev/null
@@ -1,10 +0,0 @@
-import { Component } from '@angular/core';
-import { NzMessageService } from 'ng-zorro-antd';
-
-@Component({
-  selector: 'passport-register-result',
-  templateUrl: './register-result.component.html'
-})
-export class UserRegisterResultComponent {
-  constructor(public msg: NzMessageService) {}
-}
diff --git a/src/app/routes/passport/register/register.component.html b/src/app/routes/passport/register/register.component.html
deleted file mode 100644
index 5d31b5c..0000000
--- a/src/app/routes/passport/register/register.component.html
+++ /dev/null
@@ -1,85 +0,0 @@
-<h3>������</h3>
-<form nz-form [formGroup]="form" (ngSubmit)="submit()" role="form">
-  <nz-alert *ngIf="error" [nzType]="'error'" [nzMessage]="error" [nzShowIcon]="true" class="mb-lg"></nz-alert>
-  <nz-form-item>
-    <nz-form-control>
-      <nz-input-group nzSize="large" nzAddonBeforeIcon="anticon anticon-user">
-        <input nz-input formControlName="mail" placeholder="������">
-      </nz-input-group>
-      <ng-container *ngIf="mail.dirty && mail.errors">
-        <nz-form-explain *ngIf="mail.errors?.required">������������������������</nz-form-explain>
-        <nz-form-explain *ngIf="mail.errors?.email">���������������������������</nz-form-explain>
-      </ng-container>
-    </nz-form-control>
-  </nz-form-item>
-  <nz-form-item>
-    <nz-form-control>
-      <nz-popover [nzPlacement]="'right'" [nzTrigger]="'focus'" [(nzVisible)]="visible" nzOverlayClassName="register-password-cdk"
-        [nzOverlayStyle]="{'width.px': 240}">
-        <nz-input-group nzSize="large" nz-popover nzAddonBeforeIcon="anticon anticon-lock">
-          <input nz-input type="password" formControlName="password" placeholder="������6���������������������������">
-        </nz-input-group>
-        <nz-form-explain *ngIf="password.dirty && password.errors">������������������</nz-form-explain>
-        <ng-template #nzTemplate>
-          <div style="padding: 4px 0;">
-            <ng-container [ngSwitch]="status">
-              <div *ngSwitchCase="'ok'" class="success">������������</div>
-              <div *ngSwitchCase="'pass'" class="warning">������������</div>
-              <div *ngSwitchDefault class="error">���������������</div>
-            </ng-container>
-            <div class="progress-{{status}}">
-              <nz-progress [nzPercent]="progress" [nzStatus]="passwordProgressMap[status]" [nzStrokeWidth]="6" [nzShowInfo]="false"></nz-progress>
-            </div>
-            <p class="mt-sm">��������������� 6 ������������������������������������������������������</p>
-          </div>
-        </ng-template>
-      </nz-popover>
-    </nz-form-control>
-  </nz-form-item>
-  <nz-form-item>
-    <nz-form-control>
-      <nz-input-group nzSize="large" nzAddonBeforeIcon="anticon anticon-lock">
-        <input nz-input type="password" formControlName="confirm" placeholder="������������">
-      </nz-input-group>
-      <ng-container *ngIf="confirm.dirty && confirm.errors">
-        <nz-form-explain *ngIf="confirm.errors?.required">������������������</nz-form-explain>
-        <nz-form-explain *ngIf="confirm.errors?.equar">���������������������������������</nz-form-explain>
-      </ng-container>
-    </nz-form-control>
-  </nz-form-item>
-  <nz-form-item>
-    <nz-form-control>
-      <nz-input-group nzSize="large" [nzAddOnBefore]="addOnBeforeTemplate">
-        <ng-template #addOnBeforeTemplate>
-          <nz-select formControlName="mobilePrefix" style="width: 100px;">
-            <nz-option [nzLabel]="'+86'" [nzValue]="'+86'"></nz-option>
-            <nz-option [nzLabel]="'+87'" [nzValue]="'+87'"></nz-option>
-          </nz-select>
-        </ng-template>
-        <input formControlName="mobile" nz-input>
-      </nz-input-group>
-      <nz-form-explain *ngIf="mobile.dirty && mobile.errors">���������������������</nz-form-explain>
-    </nz-form-control>
-  </nz-form-item>
-  <nz-form-item>
-    <nz-form-control>
-      <nz-row [nzGutter]="8">
-        <nz-col [nzSpan]="16">
-          <nz-input-group nzSize="large" nzAddonBeforeIcon="anticon anticon-mail">
-            <input nz-input formControlName="captcha" placeholder="���������">
-          </nz-input-group>
-          <nz-form-explain *ngIf="captcha.dirty && captcha.errors">���������������������</nz-form-explain>
-        </nz-col>
-        <nz-col [nzSpan]="8">
-          <button nz-button nzSize="large" (click)="getCaptcha()" [disabled]="count" class="ant-btn__block">{{ count ? count + 's' : '���������������' }}</button>
-        </nz-col>
-      </nz-row>
-    </nz-form-control>
-  </nz-form-item>
-  <nz-form-item>
-    <button nz-button nzType="primary" nzSize="large" type="submit" [nzLoading]="loading" class="submit">
-      <span>������</span>
-    </button>
-    <a class="login" routerLink="/passport/login">������������������������</a>
-  </nz-form-item>
-</form>
diff --git a/src/app/routes/passport/register/register.component.less b/src/app/routes/passport/register/register.component.less
deleted file mode 100644
index 507b597..0000000
--- a/src/app/routes/passport/register/register.component.less
+++ /dev/null
@@ -1,42 +0,0 @@
-@import 'node_modules/@delon/theme/styles/default';
-:host {
-  display: block;
-  width: 368px;
-  margin: 0 auto;
-  ::ng-deep {
-    h3 {
-      font-size: 16px;
-      margin-bottom: 20px;
-    }
-    .submit {
-      width: 50%;
-    }
-    .login {
-      float: right;
-      line-height: @btn-height-lg;
-    }
-  }
-}
-::ng-deep {
-  .register-password-cdk {
-    .success,
-    .warning,
-    .error {
-      transition: color 0.3s;
-    }
-    .success {
-      color: @success-color;
-    }
-    .warning {
-      color: @warning-color;
-    }
-    .error {
-      color: @error-color;
-    }
-    .progress-pass > .progress {
-      .ant-progress-bg {
-        background-color: @warning-color;
-      }
-    }
-  }
-}
diff --git a/src/app/routes/passport/register/register.component.ts b/src/app/routes/passport/register/register.component.ts
deleted file mode 100644
index 3745053..0000000
--- a/src/app/routes/passport/register/register.component.ts
+++ /dev/null
@@ -1,133 +0,0 @@
-import { Component, OnDestroy } from '@angular/core';
-import { Router } from '@angular/router';
-import {
-  FormGroup,
-  FormBuilder,
-  Validators,
-  FormControl,
-} from '@angular/forms';
-import { NzMessageService } from 'ng-zorro-antd';
-
-@Component({
-  selector: 'passport-register',
-  templateUrl: './register.component.html',
-  styleUrls: ['./register.component.less'],
-})
-export class UserRegisterComponent implements OnDestroy {
-  form: FormGroup;
-  error = '';
-  type = 0;
-  loading = false;
-  visible = false;
-  status = 'pool';
-  progress = 0;
-  passwordProgressMap = {
-    ok: 'success',
-    pass: 'normal',
-    pool: 'exception',
-  };
-
-  constructor(
-    fb: FormBuilder,
-    private router: Router,
-    public msg: NzMessageService,
-  ) {
-    this.form = fb.group({
-      mail: [null, [Validators.email]],
-      password: [
-        null,
-        [
-          Validators.required,
-          Validators.minLength(6),
-          UserRegisterComponent.checkPassword.bind(this),
-        ],
-      ],
-      confirm: [
-        null,
-        [
-          Validators.required,
-          Validators.minLength(6),
-          UserRegisterComponent.passwordEquar,
-        ],
-      ],
-      mobilePrefix: ['+86'],
-      mobile: [null, [Validators.required, Validators.pattern(/^1\d{10}$/)]],
-      captcha: [null, [Validators.required]],
-    });
-  }
-
-  static checkPassword(control: FormControl) {
-    if (!control) return null;
-    const self: any = this;
-    self.visible = !!control.value;
-    if (control.value && control.value.length > 9) self.status = 'ok';
-    else if (control.value && control.value.length > 5) self.status = 'pass';
-    else self.status = 'pool';
-
-    if (self.visible)
-      self.progress =
-        control.value.length * 10 > 100 ? 100 : control.value.length * 10;
-  }
-
-  static passwordEquar(control: FormControl) {
-    if (!control || !control.parent) return null;
-    if (control.value !== control.parent.get('password').value) {
-      return { equar: true };
-    }
-    return null;
-  }
-
-  // region: fields
-
-  get mail() {
-    return this.form.controls.mail;
-  }
-  get password() {
-    return this.form.controls.password;
-  }
-  get confirm() {
-    return this.form.controls.confirm;
-  }
-  get mobile() {
-    return this.form.controls.mobile;
-  }
-  get captcha() {
-    return this.form.controls.captcha;
-  }
-
-  // endregion
-
-  // region: get captcha
-
-  count = 0;
-  interval$: any;
-
-  getCaptcha() {
-    this.count = 59;
-    this.interval$ = setInterval(() => {
-      this.count -= 1;
-      if (this.count <= 0) clearInterval(this.interval$);
-    }, 1000);
-  }
-
-  // endregion
-
-  submit() {
-    this.error = '';
-    for (const i in this.form.controls) {
-      this.form.controls[i].markAsDirty();
-      this.form.controls[i].updateValueAndValidity();
-    }
-    if (this.form.invalid) return;
-    // mock http
-    this.loading = true;
-    setTimeout(() => {
-      this.loading = false;
-      this.router.navigate(['/passport/register-result']);
-    }, 1000);
-  }
-
-  ngOnDestroy(): void {
-    if (this.interval$) clearInterval(this.interval$);
-  }
-}
diff --git a/src/app/routes/pro/form/advanced-form/advanced-form.component.html b/src/app/routes/pro/form/advanced-form/advanced-form.component.html
deleted file mode 100644
index 37b5748..0000000
--- a/src/app/routes/pro/form/advanced-form/advanced-form.component.html
+++ /dev/null
@@ -1,218 +0,0 @@
-<page-header [title]="'������������'">
-  ������������������������������������������������������������������������������������������������������������������������������������������
-</page-header>
-<form nz-form [formGroup]="form" (ngSubmit)="_submitForm()" [nzLayout]="'vertical'">
-  <nz-card [nzBordered]="false" nzTitle="������������">
-    <nz-row nzGutter="16">
-      <nz-col nzLg="6" nzMd="12" nzSm="24">
-        <nz-form-item>
-          <nz-form-label nzFor="name">���������</nz-form-label>
-          <nz-form-control>
-            <input nz-input formControlName="name" id="name" placeholder="���������������������">
-            <nz-form-explain *ngIf="(name.dirty || name.touched) && name.errors?.required">
-              ���������������������
-            </nz-form-explain>
-          </nz-form-control>
-        </nz-form-item>
-      </nz-col>
-      <nz-col [nzXl]="{span:6, offset:2}" [nzLg]="{span:8}" [nzMd]="{span:12}" nzSm="24">
-        <nz-form-item>
-          <nz-form-label>������������</nz-form-label>
-          <nz-form-control>
-            <nz-input-group nzAddOnBefore="http://" nzAddOnAfter=".com">
-              <input nz-input formControlName="url" placeholder="���������">
-            </nz-input-group>
-            <nz-form-explain *ngIf="(url.dirty || url.touched) && url.errors?.required">
-              ���������������������
-            </nz-form-explain>
-          </nz-form-control>
-        </nz-form-item>
-      </nz-col>
-      <nz-col [nzXl]="{span:8, offset:2}" [nzLg]="{span:10}" [nzMd]="{span:24}" nzSm="24">
-        <nz-form-item>
-          <nz-form-label>���������������</nz-form-label>
-          <nz-form-control>
-            <nz-select formControlName="owner" [nzPlaceHolder]="'������������������'" [nzShowSearch]="true">
-              <nz-option *ngFor="let i of users" [nzLabel]="i.label" [nzValue]="i.value"></nz-option>
-            </nz-select>
-            <nz-form-explain *ngIf="(owner.dirty || owner.touched) && owner.errors?.required">
-              ������������������
-            </nz-form-explain>
-          </nz-form-control>
-        </nz-form-item>
-      </nz-col>
-    </nz-row>
-    <nz-row nzGutter="16">
-      <nz-col nzLg="6" nzMd="12" nzSm="24">
-        <nz-form-item>
-          <nz-form-label>���������</nz-form-label>
-          <nz-form-control>
-            <nz-select formControlName="approver" [nzPlaceHolder]="'������������������'" [nzShowSearch]="true">
-              <nz-option *ngFor="let i of users" [nzLabel]="i.label" [nzValue]="i.value">
-              </nz-option>
-            </nz-select>
-            <nz-form-explain *ngIf="(approver.dirty || approver.touched) && approver.errors?.required">
-              ������������������
-            </nz-form-explain>
-          </nz-form-control>
-        </nz-form-item>
-      </nz-col>
-      <nz-col [nzXl]="{span:6, offset:2}" [nzLg]="{span:8}" [nzMd]="{span:12}" nzSm="24">
-        <nz-form-item>
-          <nz-form-label>������������</nz-form-label>
-          <nz-form-control>
-            <nz-range-picker formControlName="date_range" [nzStyle]="{width: '100%'}"></nz-range-picker>
-          </nz-form-control>
-        </nz-form-item>
-      </nz-col>
-      <nz-col [nzXl]="{span:8, offset:2}" [nzLg]="{span:10}" [nzMd]="{span:24}" nzSm="24">
-        <nz-form-item>
-          <nz-form-label>������������</nz-form-label>
-          <nz-form-control>
-            <nz-select formControlName="type" [nzShowSearch]="true" [nzPlaceHolder]="'���������������������'">
-              <nz-option [nzLabel]="'������'" [nzValue]="'private'"></nz-option>
-              <nz-option [nzLabel]="'������'" [nzValue]="'public'"></nz-option>
-            </nz-select>
-            <nz-form-explain *ngIf="(type.dirty || type.touched) && type.errors?.required">
-              ���������������������
-            </nz-form-explain>
-          </nz-form-control>
-        </nz-form-item>
-      </nz-col>
-    </nz-row>
-  </nz-card>
-  <nz-card [nzBordered]="false" nzTitle="������������">
-    <nz-row nzGutter="16">
-      <nz-col nzLg="6" nzMd="12" nzSm="24">
-        <nz-form-item>
-          <nz-form-label>���������</nz-form-label>
-          <nz-form-control>
-            <input nz-input formControlName="name2" placeholder="������������������">
-            <nz-form-explain *ngIf="(name2.dirty || name2.touched) && name2.errors?.required">
-              ������������������
-            </nz-form-explain>
-          </nz-form-control>
-        </nz-form-item>
-      </nz-col>
-      <nz-col [nzXl]="{span:6, offset:2}" [nzLg]="{span:8}" [nzMd]="{span:12}" nzSm="24">
-        <nz-form-item>
-          <nz-form-label>������������</nz-form-label>
-          <nz-form-control>
-            <textarea nz-input formControlName="summary" [nzAutosize]="true" placeholder="���������������������"></textarea>
-            <nz-form-explain *ngIf="(summary.dirty || summary.touched) && summary.errors?.required">
-              ���������������������
-            </nz-form-explain>
-          </nz-form-control>
-        </nz-form-item>
-      </nz-col>
-      <nz-col [nzXl]="{span:8, offset:2}" [nzLg]="{span:10}" [nzMd]="{span:24}" nzSm="24">
-        <nz-form-item>
-          <nz-form-label>���������</nz-form-label>
-          <nz-form-control>
-            <nz-select formControlName="owner2" [nzPlaceHolder]="'������������������'" [nzShowSearch]="true">
-              <nz-option *ngFor="let i of users" [nzLabel]="i.label" [nzValue]="i.value">
-              </nz-option>
-            </nz-select>
-            <nz-form-explain *ngIf="(owner2.dirty || owner2.touched) && owner2.errors?.required">
-              ������������������
-            </nz-form-explain>
-          </nz-form-control>
-        </nz-form-item>
-      </nz-col>
-    </nz-row>
-    <nz-row nzGutter="16">
-      <nz-col nzLg="6" nzMd="12" nzSm="24">
-        <nz-form-item>
-          <nz-form-label>���������</nz-form-label>
-          <nz-form-control>
-            <nz-select formControlName="approver2" [nzPlaceHolder]="'������������������'" [nzShowSearch]="true">
-              <nz-option *ngFor="let i of users" [nzLabel]="i.label" [nzValue]="i.value"></nz-option>
-            </nz-select>
-            <nz-form-explain *ngIf="(approver2.dirty || approver2.touched) && approver2.errors?.required">
-              ������������������
-            </nz-form-explain>
-          </nz-form-control>
-        </nz-form-item>
-      </nz-col>
-      <nz-col [nzXl]="{span:6, offset:2}" [nzLg]="{span:8}" [nzMd]="{span:12}" nzSm="24">
-        <nz-form-item>
-          <nz-form-label>������������</nz-form-label>
-          <nz-form-control>
-            <nz-time-picker formControlName="time"></nz-time-picker>
-          </nz-form-control>
-        </nz-form-item>
-      </nz-col>
-      <nz-col [nzXl]="{span:8, offset:2}" [nzLg]="{span:10}" [nzMd]="{span:24}" nzSm="24">
-        <nz-form-item>
-          <nz-form-label>������������</nz-form-label>
-          <nz-form-control>
-            <nz-select formControlName="type2" [nzShowSearch]="true" [nzPlaceHolder]="'���������������������'">
-              <nz-option [nzLabel]="'������'" [nzValue]="'private'"></nz-option>
-              <nz-option [nzLabel]="'������'" [nzValue]="'public'"></nz-option>
-            </nz-select>
-            <nz-form-explain *ngIf="(type2.dirty || type2.touched) && type2.errors?.required">
-              ���������������������
-            </nz-form-explain>
-          </nz-form-control>
-        </nz-form-item>
-      </nz-col>
-    </nz-row>
-  </nz-card>
-  <nz-card [nzBordered]="false" nzTitle="������������">
-    <nz-table formArrayName="items" [nzData]="items.value" [nzShowPagination]="false">
-      <thead>
-        <tr>
-          <th>������������</th>
-          <th>������</th>
-          <th>������������</th>
-          <th>������</th>
-        </tr>
-      </thead>
-      <tbody>
-        <tr *ngFor="let item of items.controls; let i = index" [formGroupName]="i">
-          <td>
-            <span *ngIf="editIndex!==i">{{items.value[i].name}}</span>
-            <span *ngIf="editIndex===i" nz-form-control>
-              <input nz-input formControlName="name" placeholder="���������������������">
-            </span>
-          </td>
-          <td>
-            <span *ngIf="editIndex!==i">{{items.value[i].workId}}</span>
-            <span *ngIf="editIndex===i" nz-form-control>
-              <input nz-input formControlName="workId" placeholder="���������������">
-            </span>
-          </td>
-          <td>
-            <span *ngIf="editIndex!==i">{{items.value[i].department}}</span>
-            <span *ngIf="editIndex===i" nz-form-control>
-              <input nz-input formControlName="department" placeholder="���������������������">
-            </span>
-          </td>
-          <td>
-            <span *ngIf="editIndex!==i">
-              <a (click)="edit(i)">������</a>
-              <nz-divider nzType="vertical"></nz-divider>
-              <nz-popconfirm (nzOnConfirm)="del(i)" [nzTitle]="'������������������������'">
-                <a nz-popconfirm>������</a>
-              </nz-popconfirm>
-            </span>
-            <span *ngIf="editIndex===i">
-              <a (click)="save(i)">������</a>
-              <nz-divider nzType="vertical"></nz-divider>
-              <nz-popconfirm (nzOnConfirm)="cancel(i)" [nzTitle]="'������������������������'">
-                <a nz-popconfirm>������</a>
-              </nz-popconfirm>
-            </span>
-          </td>
-        </tr>
-      </tbody>
-    </nz-table>
-    <button *ngIf="editIndex===-1" nz-button [nzType]="'dashed'" (click)="add()" class="ant-btn__block mt-md">
-      <i class="anticon anticon-plus"></i>
-      <span>������������</span>
-    </button>
-  </nz-card>
-  <footer-toolbar errorCollect>
-    <button nz-button type="primary" nzType="primary">������</button>
-  </footer-toolbar>
-</form>
diff --git a/src/app/routes/pro/form/advanced-form/advanced-form.component.ts b/src/app/routes/pro/form/advanced-form/advanced-form.component.ts
deleted file mode 100644
index f8a6004..0000000
--- a/src/app/routes/pro/form/advanced-form/advanced-form.component.ts
+++ /dev/null
@@ -1,156 +0,0 @@
-import { Component, OnInit } from '@angular/core';
-import { FormGroup, FormBuilder, Validators, FormArray } from '@angular/forms';
-
-@Component({
-  selector: 'app-advanced-form',
-  templateUrl: './advanced-form.component.html',
-})
-export class AdvancedFormComponent implements OnInit {
-  editIndex = -1;
-  editObj = {};
-
-  form: FormGroup;
-  users: any[] = [
-    { value: 'xiao', label: '���������' },
-    { value: 'mao', label: '���������' },
-  ];
-
-  constructor(private fb: FormBuilder) {}
-
-  ngOnInit() {
-    this.form = this.fb.group({
-      name: [null, [Validators.required]],
-      url: [null, [Validators.required]],
-      owner: [undefined, [Validators.required]],
-      approver: [null, [Validators.required]],
-      date_range: [null, [Validators.required]],
-      type: [null, [Validators.required]],
-      name2: [null, [Validators.required]],
-      summary: [null, [Validators.required]],
-      owner2: [null, [Validators.required]],
-      approver2: [null, [Validators.required]],
-      time: [null, [Validators.required]],
-      type2: [null, [Validators.required]],
-      items: this.fb.array([]),
-    });
-    const userList = [
-      {
-        key: '1',
-        workId: '00001',
-        name: 'John Brown',
-        department: 'New York No. 1 Lake Park',
-      },
-      {
-        key: '2',
-        workId: '00002',
-        name: 'Jim Green',
-        department: 'London No. 1 Lake Park',
-      },
-      {
-        key: '3',
-        workId: '00003',
-        name: 'Joe Black',
-        department: 'Sidney No. 1 Lake Park',
-      },
-    ];
-    userList.forEach(i => {
-      const field = this.createUser();
-      field.patchValue(i);
-      this.items.push(field);
-    });
-  }
-
-  createUser(): FormGroup {
-    return this.fb.group({
-      key: [null],
-      workId: [null, [Validators.required]],
-      name: [null, [Validators.required]],
-      department: [null, [Validators.required]],
-    });
-  }
-
-  //#region get form fields
-  get name() {
-    return this.form.controls.name;
-  }
-  get url() {
-    return this.form.controls.url;
-  }
-  get owner() {
-    return this.form.controls.owner;
-  }
-  get approver() {
-    return this.form.controls.approver;
-  }
-  get time_start() {
-    return this.form.controls.time_start;
-  }
-  get time_end() {
-    return this.form.controls.time_end;
-  }
-  get type() {
-    return this.form.controls.type;
-  }
-  get name2() {
-    return this.form.controls.name2;
-  }
-  get summary() {
-    return this.form.controls.summary;
-  }
-  get owner2() {
-    return this.form.controls.owner2;
-  }
-  get approver2() {
-    return this.form.controls.approver2;
-  }
-  get time() {
-    return this.form.controls.time;
-  }
-  get type2() {
-    return this.form.controls.type2;
-  }
-  get items() {
-    return this.form.controls.items as FormArray;
-  }
-  //#endregion
-
-  add() {
-    this.items.push(this.createUser());
-    this.edit(this.items.length - 1);
-  }
-
-  del(index: number) {
-    this.items.removeAt(index);
-  }
-
-  edit(index: number) {
-    if (this.editIndex !== -1 && this.editObj) {
-      this.items.at(this.editIndex).patchValue(this.editObj);
-    }
-    this.editObj = { ...this.items.at(index).value };
-    this.editIndex = index;
-  }
-
-  save(index: number) {
-    this.items.at(index).markAsDirty();
-    if (this.items.at(index).invalid) return;
-    this.editIndex = -1;
-  }
-
-  cancel(index: number) {
-    if (!this.items.at(index).value.key) {
-      this.del(index);
-    } else {
-      this.items.at(index).patchValue(this.editObj);
-    }
-    this.editIndex = -1;
-  }
-
-  _submitForm() {
-    for (const i in this.form.controls) {
-      this.form.controls[i].markAsDirty();
-      this.form.controls[i].updateValueAndValidity();
-    }
-    if (this.form.invalid) return;
-  }
-}
diff --git a/src/app/routes/pro/form/basic-form/basic-form.component.html b/src/app/routes/pro/form/basic-form/basic-form.component.html
deleted file mode 100644
index 948a647..0000000
--- a/src/app/routes/pro/form/basic-form/basic-form.component.html
+++ /dev/null
@@ -1,78 +0,0 @@
-<page-header [title]="'������������'">
-  ������������������������������������������������������������������������������������������
-</page-header>
-<nz-card [nzBordered]="false">
-  <form nz-form [formGroup]="form" (ngSubmit)="submit()">
-    <nz-form-item>
-      <nz-form-label nzXs="24" nzSm="7" nzRequired nzFor="title">������</nz-form-label>
-      <nz-form-control nzXs="24" nzSm="12" nzMd="10">
-        <input nz-input formControlName="title" id="title" placeholder="���������������������">
-        <nz-form-explain *ngIf="form.get('title').dirty && form.get('title').errors">���������������</nz-form-explain>
-      </nz-form-control>
-    </nz-form-item>
-    <nz-form-item>
-      <nz-form-label nzXs="24" nzSm="7" nzRequired nzFor="date">������������</nz-form-label>
-      <nz-form-control nzXs="24" nzSm="12" nzMd="10">
-        <nz-range-picker formControlName="date" [nzStyle]="{width: '100%'}"></nz-range-picker>
-      </nz-form-control>
-    </nz-form-item>
-    <nz-form-item>
-      <nz-form-label nzXs="24" nzSm="7" nzRequired nzFor="goal">������������</nz-form-label>
-      <nz-form-control nzXs="24" nzSm="12" nzMd="10">
-        <textarea nz-input formControlName="goal" id="goal" [nzAutosize]="{minRows: 4}" placeholder="������������������������������������"></textarea>
-        <nz-form-explain *ngIf="form.get('goal').dirty && form.get('goal').errors">���������������������</nz-form-explain>
-      </nz-form-control>
-    </nz-form-item>
-    <nz-form-item>
-      <nz-form-label nzXs="24" nzSm="7" nzRequired nzFor="standard">������������</nz-form-label>
-      <nz-form-control nzXs="24" nzSm="12" nzMd="10">
-        <textarea nz-input formControlName="standard" id="standard" [nzAutosize]="{minRows: 4}" placeholder="���������������������"></textarea>
-        <nz-form-explain *ngIf="form.get('standard').dirty && form.get('standard').errors">���������������������</nz-form-explain>
-      </nz-form-control>
-    </nz-form-item>
-    <nz-form-item>
-      <nz-form-label nzXs="24" nzSm="7" nzFor="client">
-        ������
-        <em>
-          <nz-tooltip nzTitle="���������������������">
-            <i nz-tooltip class="anticon anticon-info-circle-o"></i>
-          </nz-tooltip>
-        </em>
-      </nz-form-label>
-      <nz-form-control nzXs="24" nzSm="12" nzMd="10">
-        <input nz-input formControlName="client" id="client" placeholder="������������������������������������������������ @���������������">
-      </nz-form-control>
-    </nz-form-item>
-    <nz-form-item>
-      <nz-form-label nzXs="24" nzSm="7" nzFor="invites">���������</nz-form-label>
-      <nz-form-control nzXs="24" nzSm="12" nzMd="10">
-        <input nz-input formControlName="invites" id="invites" placeholder="��������� @��������������������������������� 5 ���">
-      </nz-form-control>
-    </nz-form-item>
-    <nz-form-item>
-      <nz-form-label nzXs="24" nzSm="7" nzFor="weight">������</nz-form-label>
-      <nz-form-control nzXs="24" nzSm="12" nzMd="10">
-        <nz-input-number formControlName="weight" id="weight" placeholder="���������"></nz-input-number>
-        <em>%</em>
-      </nz-form-control>
-    </nz-form-item>
-    <nz-form-item>
-      <nz-form-label nzXs="24" nzSm="7" nzFor="public">������������</nz-form-label>
-      <nz-form-control nzXs="24" nzSm="12" nzMd="10">
-        <nz-radio-group formControlName="public">
-          <label nz-radio [nzValue]="1">������</label>
-          <label nz-radio [nzValue]="2">������������</label>
-          <label nz-radio [nzValue]="3">���������</label>
-        </nz-radio-group>
-        <input *ngIf="form.value.public === 2" nz-input formControlName="publicUsers" placeholder="���������">
-        <nz-form-explain>���������������������������������</nz-form-explain>
-      </nz-form-control>
-    </nz-form-item>
-    <nz-form-item>
-      <nz-form-control [nzXs]="{ span: 24, offset: 0 }" [nzSm]="{ span: 10, offset: 7 }">
-        <button nz-button nzType="primary" type="submit" [nzLoading]="submitting">������</button>
-        <button nz-button class="ml-sm">������</button>
-      </nz-form-control>
-    </nz-form-item>
-  </form>
-</nz-card>
diff --git a/src/app/routes/pro/form/basic-form/basic-form.component.ts b/src/app/routes/pro/form/basic-form/basic-form.component.ts
deleted file mode 100644
index 53f5ea2..0000000
--- a/src/app/routes/pro/form/basic-form/basic-form.component.ts
+++ /dev/null
@@ -1,41 +0,0 @@
-import { Component, OnInit } from '@angular/core';
-import { FormGroup, FormBuilder, Validators } from '@angular/forms';
-import { NzMessageService } from 'ng-zorro-antd';
-
-@Component({
-  selector: 'app-basic-form',
-  templateUrl: './basic-form.component.html',
-})
-export class BasicFormComponent implements OnInit {
-  form: FormGroup;
-  submitting = false;
-
-  constructor(private fb: FormBuilder, private msg: NzMessageService) {}
-
-  ngOnInit(): void {
-    this.form = this.fb.group({
-      title: [null, [Validators.required]],
-      date: [null, [Validators.required]],
-      goal: [null, [Validators.required]],
-      standard: [null, [Validators.required]],
-      client: [null, []],
-      invites: [null, []],
-      weight: [null, []],
-      public: [1, [Validators.min(1), Validators.max(3)]],
-      publicUsers: [null, []],
-    });
-  }
-
-  submit() {
-    for (const i in this.form.controls) {
-      this.form.controls[i].markAsDirty();
-      this.form.controls[i].updateValueAndValidity();
-    }
-    if (this.form.invalid) return;
-    this.submitting = true;
-    setTimeout(() => {
-      this.submitting = false;
-      this.msg.success(`������������`);
-    }, 1000);
-  }
-}
diff --git a/src/app/routes/pro/form/step-form/step-form.component.html b/src/app/routes/pro/form/step-form/step-form.component.html
deleted file mode 100644
index af177e2..0000000
--- a/src/app/routes/pro/form/step-form/step-form.component.html
+++ /dev/null
@@ -1,13 +0,0 @@
-<page-header [title]="'������������'">
-  ������������������������������������������������������������������������������������������
-</page-header>
-<nz-card [nzBordered]="false">
-  <nz-steps [(nzCurrent)]="item.step">
-    <nz-step nzTitle="������������������"></nz-step>
-    <nz-step nzTitle="������������������"></nz-step>
-    <nz-step nzTitle="������"></nz-step>
-  </nz-steps>
-  <app-step1 *ngIf="item.step==0"></app-step1>
-  <app-step2 *ngIf="item.step==1"></app-step2>
-  <app-step3 *ngIf="item.step==2"></app-step3>
-</nz-card>
diff --git a/src/app/routes/pro/form/step-form/step-form.component.less b/src/app/routes/pro/form/step-form/step-form.component.less
deleted file mode 100644
index 858481b..0000000
--- a/src/app/routes/pro/form/step-form/step-form.component.less
+++ /dev/null
@@ -1,26 +0,0 @@
-:host {
-  display: block;
-  ::ng-deep {
-    .ant-steps {
-      max-width: 750px;
-      margin: 16px auto;
-    }
-    [nz-form] {
-      margin: 40px auto 0;
-      max-width: 500px;
-    }
-    app-step3 {
-      display: block;
-      text-align: center;
-      width: 72%;
-      max-width: 560px;
-      margin: 0 auto;
-    }
-    .extra {
-      background: #fafafa;
-      padding: 24px 40px;
-      border-radius: 2px;
-      text-align: left;
-    }
-  }
-}
diff --git a/src/app/routes/pro/form/step-form/step-form.component.ts b/src/app/routes/pro/form/step-form/step-form.component.ts
deleted file mode 100644
index b5a72f5..0000000
--- a/src/app/routes/pro/form/step-form/step-form.component.ts
+++ /dev/null
@@ -1,16 +0,0 @@
-import { Component, AfterViewInit, ViewEncapsulation } from '@angular/core';
-import { TransferService } from './transfer.service';
-
-@Component({
-  selector: 'app-step-form',
-  templateUrl: './step-form.component.html',
-  styleUrls: ['./step-form.component.less'],
-  providers: [TransferService],
-})
-export class StepFormComponent implements AfterViewInit {
-  constructor(public item: TransferService) {}
-
-  ngAfterViewInit() {
-    console.log('item', this.item);
-  }
-}
diff --git a/src/app/routes/pro/form/step-form/step1.component.html b/src/app/routes/pro/form/step-form/step1.component.html
deleted file mode 100644
index 578d10b..0000000
--- a/src/app/routes/pro/form/step-form/step1.component.html
+++ /dev/null
@@ -1,59 +0,0 @@
-<form nz-form [formGroup]="form" (ngSubmit)="_submitForm()">
-  <nz-form-item>
-    <nz-form-label nzSpan="5" nzRequired>������������</nz-form-label>
-    <nz-form-control [nzSpan]="19">
-      <nz-select formControlName="pay_account">
-        <nz-option [nzLabel]="item.pay_account" [nzValue]="item.pay_account"></nz-option>
-      </nz-select>
-    </nz-form-control>
-  </nz-form-item>
-  <nz-form-item>
-    <nz-form-label nzSpan="5" nzRequired nzFor="receiver_account">������������</nz-form-label>
-    <nz-form-control nzSpan="19">
-      <nz-input-group nzCompact>
-        <nz-select formControlName="receiver_type" style="width: 100px;">
-          <nz-option [nzLabel]="'���������'" [nzValue]="'alipay'"></nz-option>
-          <nz-option [nzLabel]="'������������'" [nzValue]="'bank'"></nz-option>
-        </nz-select>
-        <input formControlName="receiver_account" id="receiver_account" nz-input style="width: calc(100% - 100px);">
-      </nz-input-group>
-      <nz-form-explain *ngIf="(receiver_account.dirty || receiver_account.touched) && receiver_account.errors?.required">
-        ���������������������
-      </nz-form-explain>
-    </nz-form-control>
-  </nz-form-item>
-  <nz-form-item>
-    <nz-form-label nzSpan="5" nzRequired nzFor="receiver_name">������������</nz-form-label>
-    <nz-form-control nzSpan="19">
-      <input nz-input formControlName="receiver_name" id="receiver_name">
-      <ng-container *ngIf="receiver_name.dirty || receiver_name.touched">
-        <nz-form-explain *ngIf="receiver_name.errors?.required">���������������������</nz-form-explain>
-        <nz-form-explain *ngIf="receiver_name.errors?.minlength">������2���������������</nz-form-explain>
-      </ng-container>
-    </nz-form-control>
-  </nz-form-item>
-  <nz-form-item>
-    <nz-form-label nzSpan="5" nzRequired nzFor="amount">������������</nz-form-label>
-    <nz-form-control nzSpan="19">
-      <input nz-input formControlName="amount" id="amount" nzAddonAfter="���">
-      <ng-container *ngIf="amount.dirty || amount.touched">
-        <nz-form-explain *ngIf="amount.errors?.required">���������������������</nz-form-explain>
-        <nz-form-explain *ngIf="amount.errors?.pattern">������������������������</nz-form-explain>
-        <nz-form-explain *ngIf="amount.errors?.min">������������1���������</nz-form-explain>
-        <nz-form-explain *ngIf="amount.errors?.max">������������100���������</nz-form-explain>
-      </ng-container>
-    </nz-form-control>
-  </nz-form-item>
-  <nz-form-item>
-    <nz-form-control nzSpan="19" nzOffset="5">
-      <button nz-button nzType="primary" [disabled]="form.invalid">���������</button>
-    </nz-form-control>
-  </nz-form-item>
-</form>
-<div class="border-top-1 mt-lg px-lg text-grey-dark">
-  <h3 class="h3 my-md">������</h3>
-  <h4 class="h4 mb-sm">������������������������</h4>
-  <p class="mb-sm">������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������</p>
-  <h4 class="h4 mb-sm">������������������</h4>
-  <p>������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������</p>
-</div>
diff --git a/src/app/routes/pro/form/step-form/step1.component.ts b/src/app/routes/pro/form/step-form/step1.component.ts
deleted file mode 100644
index 44a71f2..0000000
--- a/src/app/routes/pro/form/step-form/step1.component.ts
+++ /dev/null
@@ -1,61 +0,0 @@
-import { Component, OnInit } from '@angular/core';
-import { FormGroup, FormBuilder, Validators } from '@angular/forms';
-import { TransferService } from './transfer.service';
-
-@Component({
-  selector: 'app-step1',
-  templateUrl: './step1.component.html',
-})
-export class Step1Component implements OnInit {
-  form: FormGroup;
-
-  constructor(private fb: FormBuilder, public item: TransferService) {}
-
-  ngOnInit() {
-    this.form = this.fb.group({
-      pay_account: [
-        null,
-        Validators.compose([Validators.required, Validators.email]),
-      ],
-      receiver_type: [null, [Validators.required]],
-      receiver_account: [null, [Validators.required]],
-      receiver_name: [
-        null,
-        Validators.compose([Validators.required, Validators.minLength(2)]),
-      ],
-      amount: [
-        null,
-        Validators.compose([
-          Validators.required,
-          Validators.pattern(`[0-9]+`),
-          Validators.min(1),
-          Validators.max(10000 * 100),
-        ]),
-      ],
-    });
-    this.form.patchValue(this.item);
-  }
-
-  //#region get form fields
-  get pay_account() {
-    return this.form.controls['pay_account'];
-  }
-  get receiver_type() {
-    return this.form.controls['receiver_type'];
-  }
-  get receiver_account() {
-    return this.form.controls['receiver_account'];
-  }
-  get receiver_name() {
-    return this.form.controls['receiver_name'];
-  }
-  get amount() {
-    return this.form.controls['amount'];
-  }
-  //#endregion
-
-  _submitForm() {
-    this.item = Object.assign(this.item, this.form.value);
-    ++this.item.step;
-  }
-}
diff --git a/src/app/routes/pro/form/step-form/step2.component.html b/src/app/routes/pro/form/step-form/step2.component.html
deleted file mode 100644
index 0cc972a..0000000
--- a/src/app/routes/pro/form/step-form/step2.component.html
+++ /dev/null
@@ -1,51 +0,0 @@
-<form nz-form [formGroup]="form" (ngSubmit)="_submitForm()">
-  <nz-alert class="pb-lg" [nzMessage]="'���������������������������������������������������������������������'" [nzShowIcon]="true" [nzCloseable]="true"></nz-alert>
-  <nz-form-item>
-    <nz-form-label nzSpan="5">������������</nz-form-label>
-    <nz-form-control nzSpan="19">
-      <nz-form-text>{{item.pay_account}}</nz-form-text>
-    </nz-form-control>
-  </nz-form-item>
-  <nz-form-item>
-    <nz-form-label nzSpan="5">������������</nz-form-label>
-    <nz-form-control nzSpan="19">
-      <nz-form-text>{{item.receiver_type==='alipay' ? '���������' : '������'}}</nz-form-text>
-    </nz-form-control>
-  </nz-form-item>
-  <nz-form-item>
-    <nz-form-label nzSpan="5">������������</nz-form-label>
-    <nz-form-control nzSpan="19">
-      <nz-form-text>{{item.receiver_account}}</nz-form-text>
-    </nz-form-control>
-  </nz-form-item>
-  <nz-form-item>
-    <nz-form-label nzSpan="5">���������������</nz-form-label>
-    <nz-form-control nzSpan="19">
-      <nz-form-text>{{item.receiver_name}}</nz-form-text>
-    </nz-form-control>
-  </nz-form-item>
-  <nz-form-item>
-    <nz-form-label nzSpan="5">������������</nz-form-label>
-    <nz-form-control nzSpan="19">
-      <nz-form-text>
-        <strong class="text-lg">{{item.amount}}</strong>
-      </nz-form-text>
-    </nz-form-control>
-  </nz-form-item>
-  <nz-form-item class="border-top-1 mt-lg pt-lg">
-    <nz-form-label nzSpan="5" nzRequired nzFor="password">������������</nz-form-label>
-    <nz-form-control nzSpan="19">
-      <input nz-input formControlName="password" type="password" id="password">
-      <ng-container *ngIf="password.dirty || password.touched">
-        <nz-form-explain *ngIf="password.errors?.required">���������������</nz-form-explain>
-        <nz-form-explain *ngIf="password.errors?.minlength">������6������������</nz-form-explain>
-      </ng-container>
-    </nz-form-control>
-  </nz-form-item>
-  <nz-form-item>
-    <nz-form-control [nzSpan]="19" [nzOffset]="5">
-      <button nz-button [nzType]="'primary'" [nzLoading]="loading" [disabled]="form.invalid">������</button>
-      <button nz-button (click)="prev()">���������</button>
-    </nz-form-control>
-  </nz-form-item>
-</form>
diff --git a/src/app/routes/pro/form/step-form/step2.component.ts b/src/app/routes/pro/form/step-form/step2.component.ts
deleted file mode 100644
index 9f63984..0000000
--- a/src/app/routes/pro/form/step-form/step2.component.ts
+++ /dev/null
@@ -1,42 +0,0 @@
-import { Component, OnInit } from '@angular/core';
-import { FormGroup, FormBuilder, Validators } from '@angular/forms';
-import { TransferService } from './transfer.service';
-
-@Component({
-  selector: 'app-step2',
-  templateUrl: './step2.component.html',
-})
-export class Step2Component implements OnInit {
-  form: FormGroup;
-  loading = false;
-
-  constructor(private fb: FormBuilder, public item: TransferService) {}
-
-  ngOnInit() {
-    this.form = this.fb.group({
-      password: [
-        null,
-        Validators.compose([Validators.required, Validators.minLength(6)]),
-      ],
-    });
-    this.form.patchValue(this.item);
-  }
-
-  //#region get form fields
-  get password() {
-    return this.form.controls.password;
-  }
-  //#endregion
-
-  _submitForm() {
-    this.loading = true;
-    setTimeout(() => {
-      this.loading = false;
-      ++this.item.step;
-    }, 1000 * 2);
-  }
-
-  prev() {
-    --this.item.step;
-  }
-}
diff --git a/src/app/routes/pro/form/step-form/step3.component.html b/src/app/routes/pro/form/step-form/step3.component.html
deleted file mode 100644
index a511950..0000000
--- a/src/app/routes/pro/form/step-form/step3.component.html
+++ /dev/null
@@ -1,34 +0,0 @@
-<div class="icon pt-md">
-  <i class="anticon anticon-check-circle text-success icon-lg"></i>
-</div>
-<h1 class="h2 pt-md">������������</h1>
-<p class="pt-md text-grey">������������������������</p>
-<div class="extra mt-md">
-  <div nz-row class="mb-md">
-    <div nz-col [nzSm]="8" class="text-right">���������������</div>
-    <div nz-col [nzSm]="16">{{item.pay_account}}</div>
-  </div>
-  <div nz-row class="mb-md">
-    <div nz-col [nzSm]="8" class="text-right">���������������</div>
-    <div nz-col [nzSm]="16">{{item.receiver_type_str}}</div>
-  </div>
-  <div nz-row class="mb-md">
-    <div nz-col [nzSm]="8" class="text-right">���������������</div>
-    <div nz-col [nzSm]="16">{{item.receiver_account}}</div>
-  </div>
-  <div nz-row class="mb-md">
-    <div nz-col [nzSm]="8" class="text-right">������������������</div>
-    <div nz-col [nzSm]="16">{{item.receiver_name}}</div>
-  </div>
-  <div nz-row>
-    <div nz-col [nzSm]="8" class="text-right">���������������</div>
-    <div nz-col [nzSm]="16">
-      <strong class="text-lg pr-sm">{{item.amount}}</strong>���</div>
-  </div>
-</div>
-<div nz-row class="my-md py-md">
-  <div nz-col>
-    <button nz-button (click)="item.again()" [nzType]="'primary'">������������</button>
-    <button nz-button class="ml-sm">������������</button>
-  </div>
-</div>
diff --git a/src/app/routes/pro/form/step-form/step3.component.ts b/src/app/routes/pro/form/step-form/step3.component.ts
deleted file mode 100644
index 27fc7df..0000000
--- a/src/app/routes/pro/form/step-form/step3.component.ts
+++ /dev/null
@@ -1,10 +0,0 @@
-import { Component } from '@angular/core';
-import { TransferService } from './transfer.service';
-
-@Component({
-  selector: 'app-step3',
-  templateUrl: './step3.component.html',
-})
-export class Step3Component {
-  constructor(public item: TransferService) {}
-}
diff --git a/src/app/routes/pro/form/step-form/transfer.service.ts b/src/app/routes/pro/form/step-form/transfer.service.ts
deleted file mode 100644
index 02f2c0e..0000000
--- a/src/app/routes/pro/form/step-form/transfer.service.ts
+++ /dev/null
@@ -1,53 +0,0 @@
-import { Injectable } from '@angular/core';
-
-@Injectable()
-export class TransferService {
-  step: 0 | 1 | 2 = 1;
-
-  /**
-   * ������������
-   */
-  pay_account: string;
-
-  /**
-   * ������������������
-   */
-  receiver_type: 'alipay' | 'bank';
-
-  get receiver_type_str() {
-    return this.receiver_type === 'alipay' ? '���������' : '������';
-  }
-
-  /**
-   * ������������
-   */
-  receiver_account: string;
-
-  /**
-   * ������������
-   */
-  receiver_name: string;
-
-  /**
-   * ������
-   */
-  amount: number;
-
-  /**
-   * ������������
-   */
-  password = '123456';
-
-  again() {
-    this.step = 0;
-    this.pay_account = 'ant-design@alipay.com';
-    this.receiver_type = 'alipay';
-    this.receiver_account = 'test@example.com';
-    this.receiver_name = 'asdf';
-    this.amount = 500;
-  }
-
-  constructor() {
-    this.again();
-  }
-}
diff --git a/src/app/routes/pro/list/applications/applications.component.html b/src/app/routes/pro/list/applications/applications.component.html
deleted file mode 100644
index b48f1fd..0000000
--- a/src/app/routes/pro/list/applications/applications.component.html
+++ /dev/null
@@ -1,92 +0,0 @@
-<nz-card [nzBordered]="false">
-  <form nz-form [nzLayout]="'inline'">
-    <standard-form-row [title]="'������������'" block style="padding-bottom: 11px;">
-      <nz-form-item>
-        <nz-form-control>
-          <tag-select>
-            <nz-tag *ngFor="let i of categories; let idx = index" nzMode="checkable" [nzChecked]="i.value" (nzCheckedChange)="changeCategory($event, idx)">
-              {{i.text}}
-            </nz-tag>
-          </tag-select>
-        </nz-form-control>
-      </nz-form-item>
-    </standard-form-row>
-    <standard-form-row [title]="'������������'" grid last>
-      <nz-row [nzGutter]="16">
-        <nz-col nzXs="24" nzSm="24" nzMd="12" nzLg="10" nzXl="8">
-          <nz-form-item>
-            <nz-form-label nzFor="rate">������</nz-form-label>
-            <nz-form-control nzXs="24" nzSm="24" nzMd="12">
-              <nz-select [(ngModel)]="q.user" name="user" [nzPlaceHolder]="'������'" [nzShowSearch]="true" style="width: 200px;">
-                <nz-option [nzLabel]="'���������'" [nzValue]="'lisa'"></nz-option>
-                <nz-option [nzLabel]="'������'" [nzValue]="'libai'"></nz-option>
-                <nz-option [nzLabel]="'������'" [nzValue]="'daji'"></nz-option>
-              </nz-select>
-            </nz-form-control>
-          </nz-form-item>
-        </nz-col>
-        <nz-col nzXs="24" nzSm="24" nzMd="12" nzLg="10" nzXl="8">
-          <nz-form-item>
-            <nz-form-label nzFor="rate">���������</nz-form-label>
-            <nz-form-control nzXs="24" nzSm="24" nzMd="12">
-              <nz-select [(ngModel)]="q.rate" name="rate" [nzPlaceHolder]="'������'" [nzShowSearch]="true" style="width: 200px;">
-                <nz-option [nzLabel]="'������'" [nzValue]="'good'"></nz-option>
-                <nz-option [nzLabel]="'������'" [nzValue]="'normal'"></nz-option>
-              </nz-select>
-            </nz-form-control>
-          </nz-form-item>
-        </nz-col>
-      </nz-row>
-    </standard-form-row>
-  </form>
-</nz-card>
-<nz-list [nzLoading]="loading" [nzDataSource]="list" [nzRenderItem]="item" [nzGrid]="{ gutter: 24, xl: 6, lg: 8, md: 8, sm: 12, xs: 24 }">
-  <ng-template #item let-item>
-    <nz-list-item>
-      <nz-card nzHoverable [nzActions]="[op1,op2,op3,op4]">
-        <ng-template #op1>
-          <nz-tooltip [nzTitle]="'������'">
-            <i nz-tooltip class="anticon anticon-download"></i>
-          </nz-tooltip>
-        </ng-template>
-        <ng-template #op2>
-          <nz-tooltip [nzTitle]="'������'">
-            <i nz-tooltip class="anticon anticon-edit"></i>
-          </nz-tooltip>
-        </ng-template>
-        <ng-template #op3>
-          <nz-tooltip [nzTitle]="'������'">
-            <i nz-tooltip class="anticon anticon-share-alt"></i>
-          </nz-tooltip>
-        </ng-template>
-        <ng-template #op4>
-          <nz-dropdown [nzPlacement]="'bottomLeft'">
-            <i nz-dropdown class="anticon anticon-ellipsis"></i>
-            <ul nz-menu>
-              <li nz-menu-item>1st menu item</li>
-              <li nz-menu-item>2st menu item</li>
-              <li nz-menu-item>3st menu item</li>
-            </ul>
-          </nz-dropdown>
-        </ng-template>
-        <nz-card-meta [nzTitle]="item.title" [nzAvatar]="nzAvatar">
-          <ng-template #nzAvatar>
-            <nz-avatar nzSize="small" [nzSrc]="item.avatar"></nz-avatar>
-          </ng-template>
-        </nz-card-meta>
-        <div class="card-info d-flex">
-          <div>
-            <p>������������</p>
-            <p>{{item.activeUser}}
-              <em class="wan">���</em>
-            </p>
-          </div>
-          <div>
-            <p>������������</p>
-            <p>{{item.newUser | number: '3.'}}</p>
-          </div>
-        </div>
-      </nz-card>
-    </nz-list-item>
-  </ng-template>
-</nz-list>
diff --git a/src/app/routes/pro/list/applications/applications.component.less b/src/app/routes/pro/list/applications/applications.component.less
deleted file mode 100644
index 4d4df68..0000000
--- a/src/app/routes/pro/list/applications/applications.component.less
+++ /dev/null
@@ -1,51 +0,0 @@
-@import 'node_modules/@delon/theme/styles/default';
-:host {
-  margin-bottom: -24px;
-  ::ng-deep {
-    .ant-card {
-      width: 100%;
-    }
-    .ant-card-meta-content {
-      margin-top: 0;
-    } // disabled white space
-    .ant-card-meta-avatar {
-      font-size: 0;
-    }
-    .ant-card-actions {
-      background: #f7f9fa;
-    }
-    .ant-list .ant-list-item-content-single {
-      max-width: 100%;
-    }
-    .card-info {
-      .clearfix();
-      margin-top: 16px;
-      margin-left: 40px;
-      & > div {
-        position: relative;
-        text-align: left;
-        float: left;
-        width: 50%;
-        p {
-          line-height: 32px;
-          font-size: 24px;
-          margin: 0;
-        }
-        p:first-child {
-          color: @text-color-secondary;
-          font-size: 12px;
-          line-height: 20px;
-          margin-bottom: 4px;
-        }
-      }
-    }
-    .wan {
-      position: relative;
-      top: -2px;
-      font-size: @font-size-base;
-      font-style: normal;
-      line-height: 20px;
-      margin-left: 2px;
-    }
-  }
-}
diff --git a/src/app/routes/pro/list/applications/applications.component.ts b/src/app/routes/pro/list/applications/applications.component.ts
deleted file mode 100644
index 404eeab..0000000
--- a/src/app/routes/pro/list/applications/applications.component.ts
+++ /dev/null
@@ -1,76 +0,0 @@
-import { Component, OnInit } from '@angular/core';
-import { NzMessageService } from 'ng-zorro-antd';
-import { _HttpClient } from '@delon/theme';
-
-@Component({
-  selector: 'pro-list-applications',
-  templateUrl: './applications.component.html',
-  styleUrls: ['./applications.component.less'],
-})
-export class ProListApplicationsComponent implements OnInit {
-  q: any = {
-    ps: 8,
-    categories: [],
-    owners: ['zxx'],
-  };
-
-  list: any[] = [];
-
-  loading = true;
-
-  // region: cateogry
-  categories = [
-    { id: 0, text: '������', value: false },
-    { id: 1, text: '���������', value: false },
-    { id: 2, text: '���������', value: false },
-    { id: 3, text: '���������', value: false },
-    { id: 4, text: '���������', value: false },
-    { id: 5, text: '���������', value: false },
-    { id: 6, text: '���������', value: false },
-    { id: 7, text: '���������', value: false },
-    { id: 8, text: '���������', value: false },
-    { id: 9, text: '���������', value: false },
-    { id: 10, text: '���������', value: false },
-    { id: 11, text: '������������', value: false },
-    { id: 12, text: '������������', value: false },
-  ];
-
-  changeCategory(status: boolean, idx: number) {
-    if (idx === 0) {
-      this.categories.map(i => (i.value = status));
-    } else {
-      this.categories[idx].value = status;
-    }
-    this.getData();
-  }
-  // endregion
-
-  constructor(private http: _HttpClient, public msg: NzMessageService) {}
-
-  ngOnInit() {
-    this.getData();
-  }
-
-  getData() {
-    this.loading = true;
-    this.http.get('/api/list', { count: this.q.ps }).subscribe((res: any) => {
-      this.list = res.map(item => {
-        item.activeUser = this.formatWan(item.activeUser);
-        return item;
-      });
-      this.loading = false;
-    });
-  }
-
-  private formatWan(val) {
-    const v = val * 1;
-    if (!v || isNaN(v)) return '';
-
-    let result = val;
-    if (val > 10000) {
-      result = Math.floor(val / 10000);
-      result = `${result}`;
-    }
-    return result;
-  }
-}
diff --git a/src/app/routes/pro/list/articles/articles.component.html b/src/app/routes/pro/list/articles/articles.component.html
deleted file mode 100644
index 216f744..0000000
--- a/src/app/routes/pro/list/articles/articles.component.html
+++ /dev/null
@@ -1,91 +0,0 @@
-<nz-card [nzBordered]="false">
-  <form nz-form [nzLayout]="'inline'">
-    <standard-form-row [title]="'������������'" block style="padding-bottom: 11px;">
-      <nz-form-item>
-        <nz-form-control>
-          <tag-select>
-            <nz-tag *ngFor="let i of categories; let idx = index" nzMode="checkable" [nzChecked]="i.value" (nzCheckedChange)="changeCategory($event, idx)">
-              {{i.text}}
-            </nz-tag>
-          </tag-select>
-        </nz-form-control>
-      </nz-form-item>
-    </standard-form-row>
-    <standard-form-row [title]="'owner'" grid>
-      <nz-form-item>
-        <nz-form-control>
-          <nz-select [(ngModel)]="q.owners" name="owners" [nzMode]="'tags'" style="width: 286px;">
-            <nz-option *ngFor="let i of owners" [nzLabel]="i.name" [nzValue]="i.id"></nz-option>
-          </nz-select>
-          <a class="ml-sm" (click)="setOwner()">���������������</a>
-        </nz-form-control>
-      </nz-form-item>
-    </standard-form-row>
-    <standard-form-row [title]="'������������'" grid last>
-      <nz-row [nzGutter]="16">
-        <nz-col nzXl="8" nzLg="10" nzMd="12" nzSm="24" nzXs="24">
-          <nz-form-item>
-            <nz-form-label nzFor="rate">������������</nz-form-label>
-            <nz-form-control>
-              <nz-select [(ngModel)]="q.user" name="user" [nzPlaceHolder]="'������'" [nzShowSearch]="true" style="width: 200px;">
-                <nz-option [nzLabel]="'������'" [nzValue]="'lisa'"></nz-option>
-              </nz-select>
-            </nz-form-control>
-          </nz-form-item>
-        </nz-col>
-        <nz-col nzXl="8" nzLg="10" nzMd="12" nzSm="24" nzXs="24">
-          <nz-form-item>
-            <nz-form-label nzFor="rate">���������</nz-form-label>
-            <nz-form-control>
-              <nz-select [(ngModel)]="q.rate" name="rate" [nzPlaceHolder]="'������'" [nzShowSearch]="true" style="width: 200px;">
-                <nz-option [nzLabel]="'������'" [nzValue]="'good'"></nz-option>
-              </nz-select>
-            </nz-form-control>
-          </nz-form-item>
-        </nz-col>
-      </nz-row>
-    </standard-form-row>
-  </form>
-</nz-card>
-<nz-card [nzBordered]="false">
-  <nz-list nzItemLayout="vertical" [nzLoading]="loading" [nzDataSource]="list" [nzRenderItem]="item" [nzLoadMore]="loadMore">
-    <ng-template #item let-item>
-      <nz-list-item [nzContent]="nzContent" [nzExtra]="nzExtra" [nzActions]="[op1,op2,op3]">
-        <ng-template #op1>
-          <i class="anticon anticon-star-o mr-sm"></i>{{item.star}}</ng-template>
-        <ng-template #op2>
-          <i class="anticon anticon-like-o mr-sm"></i>{{item.like}}</ng-template>
-        <ng-template #op3>
-          <i class="anticon anticon-message mr-sm"></i>{{item.message}}</ng-template>
-        <ng-template #nzExtra>
-          <div style="width: 272px; height: 1px;"></div>
-        </ng-template>
-        <nz-list-item-meta [nzTitle]="nzTitle" [nzDescription]="nzDescription">
-          <ng-template #nzTitle>
-            <a href="{{item.href}}" target="_blank">{{item.title}}</a>
-          </ng-template>
-          <ng-template #nzDescription>
-            <nz-tag>Alain</nz-tag>
-            <nz-tag>ng-zorro-antd</nz-tag>
-            <nz-tag>Ant Design</nz-tag>
-          </ng-template>
-        </nz-list-item-meta>
-        <ng-template #nzContent>
-          <p>{{item.content}}</p>
-          <div class="mt-md d-flex">
-            <nz-avatar [nzSrc]="item.avatar" [nzSize]="'small'" class="mr-sm"></nz-avatar>
-            <a href="{{item.href}}" target="_blank">{{item.owner}}</a>
-            <span class="px-sm">���������</span>
-            <a href="{{item.href}}" target="_blank">{{item.href}}</a>
-            <time class="pl-md text-grey" title="{{item.updatedAt}}">{{item.updatedAt | _date}}</time>
-          </div>
-        </ng-template>
-      </nz-list-item>
-    </ng-template>
-    <ng-template #loadMore>
-      <div class="text-center mt-md">
-        <button nz-button (click)="getData(true)" [nzLoading]="loading" [nzType]="'dashed'" style="min-width:200px;">������������</button>
-      </div>
-    </ng-template>
-  </nz-list>
-</nz-card>
diff --git a/src/app/routes/pro/list/articles/articles.component.ts b/src/app/routes/pro/list/articles/articles.component.ts
deleted file mode 100644
index 213dbf2..0000000
--- a/src/app/routes/pro/list/articles/articles.component.ts
+++ /dev/null
@@ -1,86 +0,0 @@
-import { Component, ViewEncapsulation, OnInit } from '@angular/core';
-import { _HttpClient } from '@delon/theme';
-
-@Component({
-  selector: 'pro-list-articles',
-  templateUrl: './articles.component.html',
-})
-export class ProListArticlesComponent implements OnInit {
-  q: any = {
-    ps: 5,
-    categories: [],
-    owners: ['zxx'],
-  };
-
-  list: any[] = [];
-  loading = false;
-
-  // region: cateogry
-  categories = [
-    { id: 0, text: '������', value: false },
-    { id: 1, text: '���������', value: false },
-    { id: 2, text: '���������', value: false },
-    { id: 3, text: '���������', value: false },
-    { id: 4, text: '���������', value: false },
-    { id: 5, text: '���������', value: false },
-    { id: 6, text: '���������', value: false },
-    { id: 7, text: '���������', value: false },
-    { id: 8, text: '���������', value: false },
-    { id: 9, text: '���������', value: false },
-    { id: 10, text: '���������', value: false },
-    { id: 11, text: '������������', value: false },
-    { id: 12, text: '������������', value: false },
-  ];
-
-  changeCategory(status: boolean, idx: number) {
-    if (idx === 0) {
-      this.categories.map(i => (i.value = status));
-    } else {
-      this.categories[idx].value = status;
-    }
-  }
-  // endregion
-
-  // region: owners
-  owners = [
-    {
-      id: 'wzj',
-      name: '���������',
-    },
-    {
-      id: 'wjh',
-      name: '���������',
-    },
-    {
-      id: 'zxx',
-      name: '���������',
-    },
-    {
-      id: 'zly',
-      name: '���������',
-    },
-    {
-      id: 'ym',
-      name: '������',
-    },
-  ];
-
-  setOwner() {
-    this.q.owners = [`wzj`];
-  }
-  // endregion
-
-  constructor(private http: _HttpClient) {}
-
-  ngOnInit() {
-    this.getData();
-  }
-
-  getData(more = false) {
-    this.loading = true;
-    this.http.get('/api/list', { count: this.q.ps }).subscribe((res: any) => {
-      this.list = more ? this.list.concat(res) : res;
-      this.loading = false;
-    });
-  }
-}
diff --git a/src/app/routes/pro/list/basic-list/basic-list.component.html b/src/app/routes/pro/list/basic-list/basic-list.component.html
deleted file mode 100644
index 77302ce..0000000
--- a/src/app/routes/pro/list/basic-list/basic-list.component.html
+++ /dev/null
@@ -1,91 +0,0 @@
-<page-header></page-header>
-<nz-card [nzBordered]="false">
-  <div nz-row>
-    <div nz-col [nzXs]="24" [nzSm]="8" class="header-info">
-      <span class="text-grey-dark">������������</span>
-      <span class="d-block display-2">8���������</span>
-      <em></em>
-    </div>
-    <div nz-col [nzXs]="24" [nzSm]="8" class="header-info">
-      <span class="text-grey-dark">������������������������������</span>
-      <span class="d-block display-2">32������</span>
-      <em></em>
-    </div>
-    <div nz-col [nzXs]="24" [nzSm]="8" class="header-info">
-      <span class="text-grey-dark">���������������������</span>
-      <span class="d-block display-2">24���������</span>
-    </div>
-  </div>
-</nz-card>
-<nz-card [nzBordered]="false">
-  <div class="d-flex align-items-center mb-lg">
-    <h3 class="flex-1 text-lg">������������</h3>
-    <div>
-      <nz-radio-group [(ngModel)]="q.status" class="mr-md">
-        <label nz-radio-button [nzValue]="'all'">
-          <span>������</span>
-        </label>
-        <label nz-radio-button [nzValue]="'progress'">
-          <span>���������</span>
-        </label>
-        <label nz-radio-button [nzValue]="'waiting'">
-          <span>���������</span>
-        </label>
-      </nz-radio-group>
-      <nz-input-group nzSuffixIcon="anticon anticon-search" style="width: 270px;">
-        <input type="text" nz-input placeholder="���������" [(ngModel)]="q.q" name="q">
-      </nz-input-group>
-    </div>
-  </div>
-  <button nz-button (click)="msg.success('add')" [nzType]="'dashed'" class="ant-btn__block mb-sm">
-    <i class="anticon anticon-plus"></i>
-    <span>������</span>
-  </button>
-  <nz-list [nzDataSource]="data" [nzLoading]="loading" [nzRenderItem]="item" [nzPagination]="pagination">
-    <ng-template #item let-item>
-      <nz-list-item [nzContent]="nzContent" [nzActions]="[edit, op]">
-        <ng-template #edit>
-          <a (click)="msg.success('���������' + item.title)">������</a>
-        </ng-template>
-        <ng-template #op>
-          <nz-dropdown>
-            <a class="ant-dropdown-link" nz-dropdown>
-              ������
-              <i class="anticon anticon-down"></i>
-            </a>
-            <ul nz-menu>
-              <li nz-menu-item (click)="msg.success('���������' + item.title)">������</li>
-              <li nz-menu-item (click)="msg.success('���������' + item.title)">������</li>
-            </ul>
-          </nz-dropdown>
-        </ng-template>
-        <nz-list-item-meta [nzTitle]="nzTitle" [nzDescription]="item.subDescription" [nzAvatar]="nzAvatar">
-          <ng-template #nzTitle>
-            <a href="{{item.href}}" target="_blank">{{item.title}}</a>
-          </ng-template>
-          <ng-template #nzAvatar>
-            <nz-avatar [nzSrc]="item.logo" nzSize="large" [nzShape]="'square'"></nz-avatar>
-          </ng-template>
-        </nz-list-item-meta>
-        <ng-template #nzContent>
-          <div class="width-md">
-            <div class="d-flex text-grey-dark">
-              <div class="flex-1">
-                Owner
-                <p>{{item.owner}}</p>
-              </div>
-              <div class="text-right">
-                ������������
-                <p>{{item.createdAt | _date}}</p>
-              </div>
-            </div>
-            <nz-progress [nzPercent]="item.percent" [nzStatus]="item.status" [nzStrokeWidth]="6"></nz-progress>
-          </div>
-        </ng-template>
-      </nz-list-item>
-    </ng-template>
-    <ng-template #pagination>
-      <nz-pagination [nzTotal]="50" [nzPageSize]="5" (nzPageIndexChange)="getData()"></nz-pagination>
-    </ng-template>
-  </nz-list>
-</nz-card>
diff --git a/src/app/routes/pro/list/basic-list/basic-list.component.less b/src/app/routes/pro/list/basic-list/basic-list.component.less
deleted file mode 100644
index 4a8ff3f..0000000
--- a/src/app/routes/pro/list/basic-list/basic-list.component.less
+++ /dev/null
@@ -1,21 +0,0 @@
-.header-info {
-  position: relative;
-  text-align: center;
-  > em {
-    background-color: #e8e8e8;
-    position: absolute;
-    height: 56px;
-    width: 1px;
-    top: 0;
-    right: 0;
-  }
-}
-
-@media screen and (max-width: 576px) {
-  .header-info {
-    margin-bottom: 16px;
-    > em {
-      display: none;
-    }
-  }
-}
diff --git a/src/app/routes/pro/list/basic-list/basic-list.component.ts b/src/app/routes/pro/list/basic-list/basic-list.component.ts
deleted file mode 100644
index ae20a91..0000000
--- a/src/app/routes/pro/list/basic-list/basic-list.component.ts
+++ /dev/null
@@ -1,30 +0,0 @@
-import { Component, OnInit } from '@angular/core';
-import { NzMessageService } from 'ng-zorro-antd';
-import { _HttpClient } from '@delon/theme';
-
-@Component({
-  selector: 'pro-basic-list',
-  templateUrl: './basic-list.component.html',
-  styleUrls: ['./basic-list.component.less'],
-})
-export class ProBasicListComponent implements OnInit {
-  q: any = {
-    status: 'all',
-  };
-  loading = false;
-  data: any[] = [];
-
-  constructor(private http: _HttpClient, public msg: NzMessageService) {}
-
-  ngOnInit() {
-    this.getData();
-  }
-
-  getData() {
-    this.loading = true;
-    this.http.get('/api/list', { count: 5 }).subscribe((res: any) => {
-      this.data = res;
-      this.loading = false;
-    });
-  }
-}
diff --git a/src/app/routes/pro/list/card-list/card-list.component.html b/src/app/routes/pro/list/card-list/card-list.component.html
deleted file mode 100644
index b3c60d6..0000000
--- a/src/app/routes/pro/list/card-list/card-list.component.html
+++ /dev/null
@@ -1,48 +0,0 @@
-<page-header [title]="'������������'">
-  <ng-template #extra>
-    <div style="margin-top: -60px; text-align: center; width: 195px;">
-      <img class="img-fluid" src="https://gw.alipayobjects.com/zos/rmsportal/RzwpdLnhmvDJToTdfDPe.png">
-    </div>
-  </ng-template>
-  ������������������������������������������ ant.design���������������������������������������������������������������������������������������������������������������
-  <div class="d-flex pt-md">
-    <a class="d-flex pr-lg">
-      <img class="pr-sm" src="https://gw.alipayobjects.com/zos/rmsportal/MjEImQtenlyueSmVEfUD.svg" />������������
-    </a>
-    <a class="d-flex pr-lg">
-      <img class="pr-sm" src="https://gw.alipayobjects.com/zos/rmsportal/NbuDUAuBlIApFuDvWiND.svg" />������������
-    </a>
-    <a class="d-flex">
-      <img class="pr-sm" src="https://gw.alipayobjects.com/zos/rmsportal/ohOEPSYdDTNnyMbGuyLb.svg" />������������
-    </a>
-  </div>
-</page-header>
-<nz-list [nzLoading]="loading" [nzDataSource]="list" [nzRenderItem]="item" [nzGrid]="{gutter: 24, lg: 8, md: 12, sm: 24, xs: 24 }">
-  <ng-template #item let-item>
-    <nz-list-item>
-      <button *ngIf="item === null" nz-button (click)="msg.success('add')" [nzType]="'dashed'" style="width: 100%; height: 183px;">
-        <i class="anticon anticon-plus"></i>
-        <span>������������</span>
-      </button>
-      <nz-card nzHoverable *ngIf="item !== null" [nzActions]="[op1, op2]">
-        <ng-template #op1>
-          <a (click)="msg.success('������������' + item.id);">���������</a>
-        </ng-template>
-        <ng-template #op2>
-          <a (click)="msg.success('������������' + item.id);">���������</a>
-        </ng-template>
-        <nz-card-meta [nzAvatar]="nzAvatar" [nzTitle]="nzTitle" [nzDescription]="nzDescription">
-          <ng-template #nzAvatar>
-            <nz-avatar nzSize="large" [nzSrc]="item.avatar"></nz-avatar>
-          </ng-template>
-          <ng-template #nzTitle>
-            <a (click)="msg.success('���������' + item.id);">{{item.title}}</a>
-          </ng-template>
-          <ng-template #nzDescription>
-            <ellipsis>{{item.description}}</ellipsis>
-          </ng-template>
-        </nz-card-meta>
-      </nz-card>
-    </nz-list-item>
-  </ng-template>
-</nz-list>
diff --git a/src/app/routes/pro/list/card-list/card-list.component.ts b/src/app/routes/pro/list/card-list/card-list.component.ts
deleted file mode 100644
index 69ee8ad..0000000
--- a/src/app/routes/pro/list/card-list/card-list.component.ts
+++ /dev/null
@@ -1,31 +0,0 @@
-import { Component, OnInit, ViewEncapsulation } from '@angular/core';
-import { NzMessageService } from 'ng-zorro-antd';
-import { _HttpClient } from '@delon/theme';
-
-@Component({
-  selector: 'pro-list-card-list',
-  templateUrl: './card-list.component.html',
-  styles: [
-    `
-    :host ::ng-deep .ant-card-meta-title {
-      margin-bottom: 12px;
-    }
-    `,
-  ],
-  encapsulation: ViewEncapsulation.Emulated,
-})
-export class ProCardListComponent implements OnInit {
-  list: any[] = [null];
-
-  loading = true;
-
-  constructor(private http: _HttpClient, public msg: NzMessageService) {}
-
-  ngOnInit() {
-    this.loading = true;
-    this.http.get('/api/list', { count: 8 }).subscribe((res: any) => {
-      this.list = this.list.concat(res);
-      this.loading = false;
-    });
-  }
-}
diff --git a/src/app/routes/pro/list/list/list.component.html b/src/app/routes/pro/list/list/list.component.html
deleted file mode 100644
index b4ea4ca..0000000
--- a/src/app/routes/pro/list/list/list.component.html
+++ /dev/null
@@ -1,16 +0,0 @@
-<page-header #ph [title]="'������������'">
-  <div class="text-center">
-    <nz-input-group nzSearch nzSize="large" [nzSuffix]="suffixButton" style="width: 520px;">
-      <input type="text" nz-input placeholder="���������">
-      <ng-template #suffixButton>
-        <button nz-button nzType="primary" nzSize="large" nzSearch>Search</button>
-      </ng-template>
-    </nz-input-group>
-  </div>
-  <ng-template #tab>
-    <nz-tabset [nzSelectedIndex]="pos">
-      <nz-tab *ngFor="let i of tabs" [nzTitle]="i.tab" (click)="to(i)"></nz-tab>
-    </nz-tabset>
-  </ng-template>
-</page-header>
-<router-outlet></router-outlet>
diff --git a/src/app/routes/pro/list/list/list.component.ts b/src/app/routes/pro/list/list/list.component.ts
deleted file mode 100644
index 1745cd0..0000000
--- a/src/app/routes/pro/list/list/list.component.ts
+++ /dev/null
@@ -1,43 +0,0 @@
-import { Component, ViewChild, OnInit } from '@angular/core';
-import { Router } from '@angular/router';
-import { PageHeaderComponent } from '@delon/abc';
-
-@Component({
-  // tslint:disable-next-line:component-selector
-  selector: 'pro-list-layout',
-  templateUrl: './list.component.html',
-})
-export class ProListLayoutComponent implements OnInit {
-  tabs: any[] = [
-    {
-      key: 'articles',
-      tab: '������',
-    },
-    {
-      key: 'applications',
-      tab: '������',
-    },
-    {
-      key: 'projects',
-      tab: '������',
-    },
-  ];
-
-  @ViewChild('ph') ph: PageHeaderComponent;
-
-  pos = 0;
-
-  constructor(private router: Router) {}
-
-  ngOnInit(): void {
-    const key = this.router.url.substr(this.router.url.lastIndexOf('/') + 1);
-    const idx = this.tabs.findIndex(w => w.key === key);
-    if (idx !== -1) this.pos = idx;
-  }
-
-  to(item: any) {
-    this.router
-      .navigateByUrl(`/pro/list/${item.key}`)
-      .then(() => this.ph.refresh());
-  }
-}
diff --git a/src/app/routes/pro/list/projects/projects.component.html b/src/app/routes/pro/list/projects/projects.component.html
deleted file mode 100644
index 179fefd..0000000
--- a/src/app/routes/pro/list/projects/projects.component.html
+++ /dev/null
@@ -1,61 +0,0 @@
-<nz-card [nzBordered]="false">
-  <form nz-form [nzLayout]="'inline'">
-    <standard-form-row [title]="'������������'" block style="padding-bottom: 11px;">
-      <nz-form-item>
-        <nz-form-control>
-          <tag-select>
-            <nz-tag *ngFor="let i of categories; let idx = index" nzMode="checkable" [nzChecked]="i.value" (nzCheckedChange)="changeCategory($event, idx)">
-              {{i.text}}
-            </nz-tag>
-          </tag-select>
-        </nz-form-control>
-      </nz-form-item>
-    </standard-form-row>
-    <standard-form-row [title]="'������������'" grid last>
-      <nz-row [nzGutter]="16">
-        <nz-col nzXl="8" nzLg="10" nzMd="12" nzSm="24" nzXs="24">
-          <nz-form-item>
-            <nz-form-label nzFor="rate">������������</nz-form-label>
-            <nz-form-control>
-              <nz-select [(ngModel)]="q.user" name="user" [nzPlaceHolder]="'������'" [nzShowSearch]="true" style="width: 200px;">
-                <nz-option [nzLabel]="'������'" [nzValue]="'lisa'"></nz-option>
-              </nz-select>
-            </nz-form-control>
-          </nz-form-item>
-        </nz-col>
-        <nz-col nzXl="8" nzLg="10" nzMd="12" nzSm="24" nzXs="24">
-          <nz-form-item>
-            <nz-form-label nzFor="rate">���������</nz-form-label>
-            <nz-form-control>
-              <nz-select [(ngModel)]="q.rate" name="rate" [nzPlaceHolder]="'������'" [nzShowSearch]="true" style="width: 200px;">
-                <nz-option [nzLabel]="'������'" [nzValue]="'good'"></nz-option>
-              </nz-select>
-            </nz-form-control>
-          </nz-form-item>
-        </nz-col>
-      </nz-row>
-    </standard-form-row>
-  </form>
-</nz-card>
-<nz-list [nzLoading]="loading" [nzRenderItem]="item" [nzDataSource]="list" [nzGrid]="{gutter: 24, lg: 6, md: 8, sm: 12, xs: 24 }">
-  <ng-template #item let-item>
-    <nz-list-item>
-      <nz-card nzHoverable [nzCover]="cover">
-        <ng-template #cover>
-          <img alt="{{item.title}}" src="{{item.cover}}">
-        </ng-template>
-        <nz-card-meta [nzTitle]="nzTitle" [nzDescription]="item.subDescription">
-          <ng-template #nzTitle>
-            <a (click)="msg.success('���������' + item.id);">{{item.title}}</a>
-          </ng-template>
-        </nz-card-meta>
-        <div class="card-item-content">
-          <span class="text-grey">{{item.updatedAt | _date:'fn'}}</span>
-          <avatar-list size="mini">
-            <avatar-list-item *ngFor="let m of item.members" [src]="m.avatar" [tips]="m.name"></avatar-list-item>
-          </avatar-list>
-        </div>
-      </nz-card>
-    </nz-list-item>
-  </ng-template>
-</nz-list>
diff --git a/src/app/routes/pro/list/projects/projects.component.less b/src/app/routes/pro/list/projects/projects.component.less
deleted file mode 100644
index 79249fb..0000000
--- a/src/app/routes/pro/list/projects/projects.component.less
+++ /dev/null
@@ -1,16 +0,0 @@
-:host ::ng-deep {
-  .ant-card-meta-title {
-    margin-bottom: 4px;
-  }
-  nz-list nz-card {
-    margin-bottom: 0 !important;
-  }
-  .card-item-content {
-    display: flex;
-    margin-top: 16px;
-    margin-bottom: -4px;
-    line-height: 20px;
-    height: 20px;
-    justify-content: space-between;
-  }
-}
diff --git a/src/app/routes/pro/list/projects/projects.component.ts b/src/app/routes/pro/list/projects/projects.component.ts
deleted file mode 100644
index 0d1a423..0000000
--- a/src/app/routes/pro/list/projects/projects.component.ts
+++ /dev/null
@@ -1,61 +0,0 @@
-import { Component, OnInit } from '@angular/core';
-import { NzMessageService } from 'ng-zorro-antd';
-import { _HttpClient } from '@delon/theme';
-
-@Component({
-  selector: 'pro-list-projects',
-  templateUrl: './projects.component.html',
-  styleUrls: ['./projects.component.less'],
-})
-export class ProListProjectsComponent implements OnInit {
-  q: any = {
-    ps: 8,
-    categories: [],
-    owners: ['zxx'],
-  };
-
-  list: any[] = [];
-
-  loading = true;
-
-  // region: cateogry
-  categories = [
-    { id: 0, text: '������', value: false },
-    { id: 1, text: '���������', value: false },
-    { id: 2, text: '���������', value: false },
-    { id: 3, text: '���������', value: false },
-    { id: 4, text: '���������', value: false },
-    { id: 5, text: '���������', value: false },
-    { id: 6, text: '���������', value: false },
-    { id: 7, text: '���������', value: false },
-    { id: 8, text: '���������', value: false },
-    { id: 9, text: '���������', value: false },
-    { id: 10, text: '���������', value: false },
-    { id: 11, text: '������������', value: false },
-    { id: 12, text: '������������', value: false },
-  ];
-
-  changeCategory(status: boolean, idx: number) {
-    if (idx === 0) {
-      this.categories.map(i => (i.value = status));
-    } else {
-      this.categories[idx].value = status;
-    }
-    this.getData();
-  }
-  // endregion
-
-  constructor(private http: _HttpClient, public msg: NzMessageService) {}
-
-  ngOnInit() {
-    this.getData();
-  }
-
-  getData() {
-    this.loading = true;
-    this.http.get('/api/list', { count: this.q.ps }).subscribe((res: any) => {
-      this.list = this.list.concat(res);
-      this.loading = false;
-    });
-  }
-}
diff --git a/src/app/routes/pro/list/table-list/table-list.component.html b/src/app/routes/pro/list/table-list/table-list.component.html
deleted file mode 100644
index 02b9619..0000000
--- a/src/app/routes/pro/list/table-list/table-list.component.html
+++ /dev/null
@@ -1,108 +0,0 @@
-<page-header [title]="'������������'"></page-header>
-<nz-card [nzBordered]="false">
-  <form nz-form [nzLayout]="'inline'" (ngSubmit)="getData()" class="search__form">
-    <nz-row [nzGutter]="{ md: 8, lg: 24, xl: 48 }">
-      <nz-col nzMd="8" nzSm="24">
-        <nz-form-item>
-          <nz-form-label nzFor="no">������������</nz-form-label>
-          <nz-form-control>
-            <input nz-input [(ngModel)]="q.no" name="no" placeholder="���������" id="no">
-          </nz-form-control>
-        </nz-form-item>
-      </nz-col>
-      <nz-col nzMd="8" nzSm="24">
-        <nz-form-item>
-          <nz-form-label nzFor="status">������������</nz-form-label>
-          <nz-form-control>
-            <nz-select [(ngModel)]="q.status" name="status" id="status" [nzPlaceHolder]="'���������'" [nzShowSearch]="true">
-              <nz-option *ngFor="let i of status; let idx = index" [nzLabel]="i.text" [nzValue]="idx"></nz-option>
-            </nz-select>
-          </nz-form-control>
-        </nz-form-item>
-      </nz-col>
-      <nz-col nzMd="8" nzSm="24" *ngIf="expandForm">
-        <nz-form-item>
-          <nz-form-label nzFor="callNo">������������</nz-form-label>
-          <nz-form-control>
-            <input nz-input id="callNo">
-          </nz-form-control>
-        </nz-form-item>
-      </nz-col>
-      <nz-col nzMd="8" nzSm="24" *ngIf="expandForm">
-        <nz-form-item>
-          <nz-form-label nzFor="updatedAt">������������</nz-form-label>
-          <nz-form-control>
-          </nz-form-control>
-        </nz-form-item>
-      </nz-col>
-      <nz-col nzMd="8" nzSm="24" *ngIf="expandForm">
-        <nz-form-item>
-          <nz-form-label nzFor="status2">������������</nz-form-label>
-          <nz-form-control>
-            <nz-select [nzPlaceHolder]="'���������'" nzId="status2" [nzShowSearch]="true">
-              <nz-option *ngFor="let i of status; let idx = index" [nzLabel]="i.text" [nzValue]="idx"></nz-option>
-            </nz-select>
-          </nz-form-control>
-        </nz-form-item>
-      </nz-col>
-      <nz-col nzMd="8" nzSm="24" *ngIf="expandForm">
-        <nz-form-item>
-          <nz-form-label nzFor="status3">������������</nz-form-label>
-          <nz-form-control>
-            <nz-select [nzPlaceHolder]="'���������'" nzId="status3" [nzShowSearch]="true">
-              <nz-option *ngFor="let i of status; let idx = index" [nzLabel]="i.text" [nzValue]="idx"></nz-option>
-            </nz-select>
-          </nz-form-control>
-        </nz-form-item>
-      </nz-col>
-      <nz-col [nzSpan]="expandForm ? 24 : 8" [class.text-right]="expandForm">
-        <button nz-button type="submit" [nzType]="'primary'" [nzLoading]="loading">������</button>
-        <button nz-button type="reset" (click)="getData()" class="mx-sm">������</button>
-        <a (click)="expandForm=!expandForm">
-          {{expandForm ? '������' : '������'}}
-          <i class="anticon" [class.anticon-down]="!expandForm" [class.anticon-up]="expandForm"></i>
-        </a>
-      </nz-col>
-    </nz-row>
-  </form>
-  <button nz-button (click)="add(modalContent)" [nzType]="'primary'">
-    <i class="anticon anticon-plus"></i>
-    <span>������</span>
-  </button>
-  <ng-container *ngIf="selectedRows.length > 0">
-    <button nz-button class="ml-sm">������������</button>
-    <nz-dropdown [nzPlacement]="'bottomLeft'">
-      <button nz-button nz-dropdown class="ml-sm">
-        ������������
-        <i class="anticon anticon-down"></i>
-      </button>
-      <ul nz-menu>
-        <li nz-menu-item (click)="remove()">������</li>
-        <li nz-menu-item (click)="approval()">������������</li>
-      </ul>
-    </nz-dropdown>
-  </ng-container>
-  <div class="my-md">
-    <nz-alert [nzType]="'info'" [nzShowIcon]="true" [nzMessage]="message">
-      <ng-template #message>
-        ���������
-        <strong class="text-primary">{{selectedRows.length}}</strong> ���&nbsp;&nbsp; ������������������
-        <strong>{{totalCallNo}}</strong> ���
-        <a *ngIf="totalCallNo > 0" (click)="st.clearCheck()" class="ml-lg">������</a>
-      </ng-template>
-    </nz-alert>
-  </div>
-  <simple-table #st [columns]="columns" [data]="data" [loading]="loading" (checkboxChange)="checkboxChange($event)" (filterChange)="getData()">
-    <ng-template st-row="status" let-i>
-      <nz-badge [nzStatus]="i.statusType" [nzText]="i.statusText"></nz-badge>
-    </ng-template>
-  </simple-table>
-</nz-card>
-<ng-template #modalContent>
-  <nz-form-item>
-    <nz-form-label nzFor="no">������</nz-form-label>
-    <nz-form-control>
-      <input nz-input [(ngModel)]="description" name="description" placeholder="���������" id="no">
-    </nz-form-control>
-  </nz-form-item>
-</ng-template>
diff --git a/src/app/routes/pro/list/table-list/table-list.component.ts b/src/app/routes/pro/list/table-list/table-list.component.ts
deleted file mode 100644
index f420f8d..0000000
--- a/src/app/routes/pro/list/table-list/table-list.component.ts
+++ /dev/null
@@ -1,154 +0,0 @@
-import { Component, OnInit, ViewChild, TemplateRef } from '@angular/core';
-import { NzMessageService, NzModalService } from 'ng-zorro-antd';
-import { _HttpClient } from '@delon/theme';
-import { tap, map } from 'rxjs/operators';
-import {
-  SimpleTableComponent,
-  SimpleTableColumn,
-  SimpleTableData,
-} from '@delon/abc';
-
-@Component({
-  selector: 'pro-table-list',
-  templateUrl: './table-list.component.html',
-})
-export class ProTableListComponent implements OnInit {
-  q: any = {
-    pi: 1,
-    ps: 10,
-    sorter: '',
-    status: null,
-    statusList: [],
-  };
-  data: any[] = [];
-  loading = false;
-  status = [
-    { index: 0, text: '������', value: false, type: 'default', checked: false },
-    {
-      index: 1,
-      text: '���������',
-      value: false,
-      type: 'processing',
-      checked: false,
-    },
-    { index: 2, text: '���������', value: false, type: 'success', checked: false },
-    { index: 3, text: '������', value: false, type: 'error', checked: false },
-  ];
-  @ViewChild('st') st: SimpleTableComponent;
-  columns: SimpleTableColumn[] = [
-    { title: '', index: 'key', type: 'checkbox' },
-    { title: '������������', index: 'no' },
-    { title: '������', index: 'description' },
-    {
-      title: '������������������',
-      index: 'callNo',
-      type: 'number',
-      format: (item: any) => `${item.callNo} ���`,
-      sorter: (a: any, b: any) => a.callNo - b.callNo,
-    },
-    {
-      title: '������',
-      index: 'status',
-      render: 'status',
-      filters: this.status,
-      filter: () => true,
-    },
-    {
-      title: '������������',
-      index: 'updatedAt',
-      type: 'date',
-      sorter: (a: any, b: any) => a.updatedAt - b.updatedAt,
-    },
-    {
-      title: '������',
-      buttons: [
-        {
-          text: '������',
-          click: (item: any) => this.msg.success(`������${item.no}`),
-        },
-        {
-          text: '������������',
-          click: (item: any) => this.msg.success(`������������${item.no}`),
-        },
-      ],
-    },
-  ];
-  selectedRows: SimpleTableData[] = [];
-  description = '';
-  totalCallNo = 0;
-  expandForm = false;
-
-  constructor(
-    private http: _HttpClient,
-    public msg: NzMessageService,
-    private modalSrv: NzModalService,
-  ) {}
-
-  ngOnInit() {
-    this.getData();
-  }
-
-  getData() {
-    this.loading = true;
-    this.q.statusList = this.status
-      .filter(w => w.checked)
-      .map(item => item.index);
-    if (this.q.status !== null && this.q.status > -1)
-      this.q.statusList.push(this.q.status);
-    this.http
-      .get('/rule', this.q)
-      .pipe(
-        map((list: any[]) =>
-          list.map(i => {
-            const statusItem = this.status[i.status];
-            i.statusText = statusItem.text;
-            i.statusType = statusItem.type;
-            return i;
-          }),
-        ),
-        tap(() => (this.loading = false)),
-      )
-      .subscribe(res => (this.data = res));
-  }
-
-  checkboxChange(list: SimpleTableData[]) {
-    this.selectedRows = list;
-    this.totalCallNo = this.selectedRows.reduce(
-      (total, cv) => total + cv.callNo,
-      0,
-    );
-  }
-
-  remove() {
-    this.http
-      .delete('/rule', { nos: this.selectedRows.map(i => i.no).join(',') })
-      .subscribe(() => {
-        this.getData();
-        this.st.clearCheck();
-      });
-  }
-
-  approval() {
-    this.msg.success(`��������� ${this.selectedRows.length} ���`);
-  }
-
-  add(tpl: TemplateRef<{}>) {
-    this.modalSrv.create({
-      nzTitle: '������������',
-      nzContent: tpl,
-      nzOnOk: () => {
-        this.loading = true;
-        this.http
-          .post('/rule', { description: this.description })
-          .subscribe(() => {
-            this.getData();
-          });
-      },
-    });
-  }
-
-  reset(ls: any[]) {
-    for (const item of ls) item.value = false;
-    this.getData();
-  }
-}
diff --git a/src/app/routes/pro/pro-routing.module.ts b/src/app/routes/pro/pro-routing.module.ts
deleted file mode 100644
index a77d7bd..0000000
--- a/src/app/routes/pro/pro-routing.module.ts
+++ /dev/null
@@ -1,65 +0,0 @@
-import { NgModule } from '@angular/core';
-import { Routes, RouterModule } from '@angular/router';
-
-import { StepFormComponent } from './form/step-form/step-form.component';
-import { AdvancedFormComponent } from './form/advanced-form/advanced-form.component';
-import { BasicFormComponent } from './form/basic-form/basic-form.component';
-import { ProTableListComponent } from './list/table-list/table-list.component';
-import { ProBasicListComponent } from './list/basic-list/basic-list.component';
-import { ProCardListComponent } from './list/card-list/card-list.component';
-import { ProListArticlesComponent } from './list/articles/articles.component';
-import { ProListProjectsComponent } from './list/projects/projects.component';
-import { ProListApplicationsComponent } from './list/applications/applications.component';
-import { ProProfileBaseComponent } from './profile/basic/basic.component';
-import { ProProfileAdvancedComponent } from './profile/advanced/advanced.component';
-import { ProResultSuccessComponent } from './result/success/success.component';
-import { ProResultFailComponent } from './result/fail/fail.component';
-import { ProListLayoutComponent } from './list/list/list.component';
-
-const routes: Routes = [
-  {
-    path: 'form',
-    children: [
-      { path: 'basic-form', component: BasicFormComponent },
-      { path: 'step-form', component: StepFormComponent },
-      { path: 'advanced-form', component: AdvancedFormComponent },
-    ],
-  },
-  {
-    path: 'list',
-    children: [
-      { path: 'table-list', component: ProTableListComponent },
-      { path: 'basic-list', component: ProBasicListComponent },
-      { path: 'card-list', component: ProCardListComponent },
-      {
-        path: '',
-        component: ProListLayoutComponent,
-        children: [
-          { path: 'articles', component: ProListArticlesComponent },
-          { path: 'projects', component: ProListProjectsComponent },
-          { path: 'applications', component: ProListApplicationsComponent },
-        ],
-      },
-    ],
-  },
-  {
-    path: 'profile',
-    children: [
-      { path: 'basic', component: ProProfileBaseComponent },
-      { path: 'advanced', component: ProProfileAdvancedComponent },
-    ],
-  },
-  {
-    path: 'result',
-    children: [
-      { path: 'success', component: ProResultSuccessComponent },
-      { path: 'fail', component: ProResultFailComponent },
-    ],
-  },
-];
-
-@NgModule({
-  imports: [RouterModule.forChild(routes)],
-  exports: [RouterModule],
-})
-export class ProRoutingModule {}
diff --git a/src/app/routes/pro/pro.module.ts b/src/app/routes/pro/pro.module.ts
deleted file mode 100644
index e978bf4..0000000
--- a/src/app/routes/pro/pro.module.ts
+++ /dev/null
@@ -1,48 +0,0 @@
-import { NgModule } from '@angular/core';
-import { Routes, RouterModule } from '@angular/router';
-
-import { SharedModule } from '@shared/shared.module';
-import { ProRoutingModule } from './pro-routing.module';
-
-import { BasicFormComponent } from './form/basic-form/basic-form.component';
-import { StepFormComponent } from './form/step-form/step-form.component';
-import { Step1Component } from './form/step-form/step1.component';
-import { Step2Component } from './form/step-form/step2.component';
-import { Step3Component } from './form/step-form/step3.component';
-import { AdvancedFormComponent } from './form/advanced-form/advanced-form.component';
-import { ProTableListComponent } from './list/table-list/table-list.component';
-import { ProBasicListComponent } from './list/basic-list/basic-list.component';
-import { ProCardListComponent } from './list/card-list/card-list.component';
-import { ProListLayoutComponent } from './list/list/list.component';
-import { ProListArticlesComponent } from './list/articles/articles.component';
-import { ProListProjectsComponent } from './list/projects/projects.component';
-import { ProListApplicationsComponent } from './list/applications/applications.component';
-import { ProProfileBaseComponent } from './profile/basic/basic.component';
-import { ProProfileAdvancedComponent } from './profile/advanced/advanced.component';
-import { ProResultSuccessComponent } from './result/success/success.component';
-import { ProResultFailComponent } from './result/fail/fail.component';
-
-const COMPONENTS_NOROUNT = [Step1Component, Step2Component, Step3Component];
-
-@NgModule({
-  imports: [SharedModule, ProRoutingModule],
-  declarations: [
-    BasicFormComponent,
-    StepFormComponent,
-    AdvancedFormComponent,
-    ProTableListComponent,
-    ProBasicListComponent,
-    ProCardListComponent,
-    ProListLayoutComponent,
-    ProListArticlesComponent,
-    ProListProjectsComponent,
-    ProListApplicationsComponent,
-    ProProfileBaseComponent,
-    ProProfileAdvancedComponent,
-    ProResultSuccessComponent,
-    ProResultFailComponent,
-    ...COMPONENTS_NOROUNT,
-  ],
-  entryComponents: COMPONENTS_NOROUNT,
-})
-export class ProModule {}
diff --git a/src/app/routes/pro/profile/advanced/advanced.component.html b/src/app/routes/pro/profile/advanced/advanced.component.html
deleted file mode 100644
index d243e7b..0000000
--- a/src/app/routes/pro/profile/advanced/advanced.component.html
+++ /dev/null
@@ -1,144 +0,0 @@
-<page-header [title]="'���������234231029431'">
-  <ng-template #logo>
-    <img src="https://gw.alipayobjects.com/zos/rmsportal/nxkuOJlFJuAUhzlMTCEe.png">
-  </ng-template>
-  <ng-template #action>
-    <nz-button-group>
-      <button nz-button>������</button>
-      <button nz-button>������</button>
-    </nz-button-group>
-    <nz-dropdown class="mx-sm">
-      <button nz-button nz-dropdown>
-        <i class="anticon anticon-ellipsis"></i>
-      </button>
-      <ul nz-menu>
-        <li nz-menu-item>���������</li>
-        <li nz-menu-item>���������</li>
-        <li nz-menu-item>���������</li>
-      </ul>
-    </nz-dropdown>
-    <button nz-button [nzType]="'primary'">���������</button>
-  </ng-template>
-  <ng-template #extra>
-    <div nz-row>
-      <div nz-col nzXs="24" nzSm="12">
-        <p class="text-grey">������</p>
-        <p class="text-lg">���������</p>
-      </div>
-      <div nz-col nzXs="24" nzSm="12">
-        <p class="text-grey">������������</p>
-        <p class="text-lg">�� 568.08</p>
-      </div>
-    </div>
-  </ng-template>
-  <ng-template #tab>
-    <nz-tabset>
-      <nz-tab nzTitle="������"></nz-tab>
-      <nz-tab nzTitle="������"></nz-tab>
-    </nz-tabset>
-  </ng-template>
-  <desc-list size="small" col="2">
-    <desc-list-item term="���������">���������</desc-list-item>
-    <desc-list-item term="������������">XX ������</desc-list-item>
-    <desc-list-item term="������������">2017-07-07</desc-list-item>
-    <desc-list-item term="������������">
-      <a (click)="msg.success('yes')">12421</a>
-    </desc-list-item>
-    <desc-list-item term="������������">2017-07-07 ~ 2017-08-08</desc-list-item>
-    <desc-list-item term="������">������������������������������</desc-list-item>
-  </desc-list>
-</page-header>
-<nz-card [nzBordered]="false" class="mb-lg" nzTitle="������������">
-  <nz-steps [nzCurrent]="1" nzProgressDot>
-    <nz-step [nzTitle]="'������������'" [nzDescription]="createDesc">
-      <ng-template #createDesc>
-        <div class="desc">
-          <div class="my-sm">���������
-            <i class="anticon anticon-dingding-o ml-sm"></i>
-          </div>
-          <div>2016-12-12 12:32</div>
-        </div>
-      </ng-template>
-    </nz-step>
-    <nz-step [nzTitle]="'������������'" [nzDescription]="checkedDesc">
-      <ng-template #checkedDesc>
-        <div class="desc">
-          <div class="my-sm">���������
-            <i class="anticon anticon-dingding-o ml-sm" style="color: #00a0e9;"></i>
-          </div>
-          <a (click)="msg.success('click')">���������</a>
-        </div>
-      </ng-template>
-    </nz-step>
-    <nz-step [nzTitle]="'������������'"></nz-step>
-    <nz-step [nzTitle]="'������'"></nz-step>
-  </nz-steps>
-  <div class="steps-content"></div>
-</nz-card>
-<nz-card [nzBordered]="false" nzTitle="������������" class="mb-lg">
-  <desc-list class="mb-lg">
-    <desc-list-item term="������������">���������</desc-list-item>
-    <desc-list-item term="������������">32943898021309809423</desc-list-item>
-    <desc-list-item term="���������">3321944288191034921</desc-list-item>
-    <desc-list-item term="������������">18112345678</desc-list-item>
-    <desc-list-item term="������������">��������� 18100000000 ������������������������������������������������������������</desc-list-item>
-  </desc-list>
-  <desc-list class="mb-lg" title="���������">
-    <desc-list-item term="������������">725</desc-list-item>
-    <desc-list-item term="���������������������">2017-08-08</desc-list-item>
-    <desc-list-item>&nbsp;</desc-list-item>
-    <desc-list-item [term]="term">
-      <ng-template #term>
-        ������������
-        <nz-tooltip [nzTitle]="'������������'">
-          <span nz-tooltip>
-            <i class="anticon anticon-info-circle-o"></i>
-          </span>
-        </nz-tooltip>
-      </ng-template>
-      725
-    </desc-list-item>
-    <desc-list-item term="���������������������">2017-08-08</desc-list-item>
-  </desc-list>
-  <h4 class="mb-md">���������</h4>
-  <nz-card nzType="inner" nzTitle="������������������">
-    <desc-list size="small" title="���������" class="mb-md">
-      <desc-list-item term="���������">���������</desc-list-item>
-      <desc-list-item term="���������">1234567</desc-list-item>
-      <desc-list-item term="������������">XX������ - YY���</desc-list-item>
-      <desc-list-item term="������������">2017-08-08</desc-list-item>
-      <desc-list-item term="������">������������������������������������������������������������������������������������������������...</desc-list-item>
-    </desc-list>
-    <nz-divider class="mb-md"></nz-divider>
-    <desc-list size="small" title="���������" col="1" class="mb-md">
-      <desc-list-item term="������">
-        Citrullus lanatus (Thunb.) Matsum. et Nakai������������������������������������������������������������������������..
-      </desc-list-item>
-    </desc-list>
-    <nz-divider class="mb-md"></nz-divider>
-    <desc-list size="small" title="���������">
-      <desc-list-item term="���������">���������</desc-list-item>
-      <desc-list-item term="���������">1234568</desc-list-item>
-    </desc-list>
-  </nz-card>
-</nz-card>
-<nz-card [nzBordered]="false" nzTitle="���������������������������" class="mb-lg">
-  <div class="no-data">
-    <i class="anticon anticon-frown-o"></i>������������
-  </div>
-</nz-card>
-<nz-card [nzBordered]="false">
-  <nz-card-tab>
-    <nz-tabset nzSize="large" (nzSelectChange)="change($event)">
-      <nz-tab nzTitle="���������������"></nz-tab>
-      <nz-tab nzTitle="���������������"></nz-tab>
-      <nz-tab nzTitle="���������������"></nz-tab>
-    </nz-tabset>
-  </nz-card-tab>
-  <simple-table [columns]="opColumns" [data]="list">
-    <ng-template st-row="status" let-i>
-      <nz-badge *ngIf="i.status === 'success'" [nzStatus]="'success'" [nzText]="'������'"></nz-badge>
-      <nz-badge *ngIf="i.status !== 'success'" [nzStatus]="'processing'" [nzText]="'���������'"></nz-badge>
-    </ng-template>
-  </simple-table>
-</nz-card>
diff --git a/src/app/routes/pro/profile/advanced/advanced.component.less b/src/app/routes/pro/profile/advanced/advanced.component.less
deleted file mode 100644
index a7cfd73..0000000
--- a/src/app/routes/pro/profile/advanced/advanced.component.less
+++ /dev/null
@@ -1,19 +0,0 @@
-@import 'node_modules/@delon/theme/styles/default';
-:host {
-  ::ng-deep {
-    @media screen and (max-width: @screen-sm) {
-      .desc {
-        left: 8px;
-      }
-    }
-    .desc {
-      font-size: @font-size-base;
-      position: relative;
-      left: 38px;
-      & > div {
-        margin-top: 8px;
-        margin-bottom: 4px;
-      }
-    }
-  }
-}
diff --git a/src/app/routes/pro/profile/advanced/advanced.component.ts b/src/app/routes/pro/profile/advanced/advanced.component.ts
deleted file mode 100644
index d8dcf10..0000000
--- a/src/app/routes/pro/profile/advanced/advanced.component.ts
+++ /dev/null
@@ -1,40 +0,0 @@
-import { Component, OnInit } from '@angular/core';
-import { NzMessageService, NzTabChangeEvent } from 'ng-zorro-antd';
-import { _HttpClient } from '@delon/theme';
-import { SimpleTableColumn } from '@delon/abc';
-
-@Component({
-  selector: 'pro-profile-advanced',
-  templateUrl: './advanced.component.html',
-  styleUrls: ['./advanced.component.less'],
-})
-export class ProProfileAdvancedComponent implements OnInit {
-  list: any[] = [];
-
-  data = {
-    advancedOperation1: [],
-    advancedOperation2: [],
-    advancedOperation3: [],
-  };
-
-  opColumns: SimpleTableColumn[] = [
-    { title: '������������', index: 'type' },
-    { title: '���������', index: 'name' },
-    { title: '������������', index: 'status', render: 'status' },
-    { title: '������������', index: 'updatedAt', type: 'date' },
-    { title: '������', index: 'memo', default: '-' },
-  ];
-
-  constructor(public msg: NzMessageService, private http: _HttpClient) {}
-
-  ngOnInit() {
-    this.http.get('/profile/advanced').subscribe((res: any) => {
-      this.data = res;
-      this.change({ index: 0, tab: null });
-    });
-  }
-
-  change(args: NzTabChangeEvent) {
-    this.list = this.data[`advancedOperation${args.index + 1}`];
-  }
-}
diff --git a/src/app/routes/pro/profile/basic/basic.component.html b/src/app/routes/pro/profile/basic/basic.component.html
deleted file mode 100644
index 4c47ebb..0000000
--- a/src/app/routes/pro/profile/basic/basic.component.html
+++ /dev/null
@@ -1,42 +0,0 @@
-<page-header [title]="'���������������'"></page-header>
-<nz-card [nzHoverable]="true" [nzBordered]="false">
-  <desc-list size="large" title="������������" class="mb-lg">
-    <desc-list-item term="������������">1000000000</desc-list-item>
-    <desc-list-item term="������">���������</desc-list-item>
-    <desc-list-item term="������������">1234123421</desc-list-item>
-    <desc-list-item term="���������">3214321432</desc-list-item>
-  </desc-list>
-  <nz-divider class="mb-lg"></nz-divider>
-  <desc-list size="large" title="������������" class="mb-lg">
-    <desc-list-item term="������������">���������</desc-list-item>
-    <desc-list-item term="������������">18100000000</desc-list-item>
-    <desc-list-item term="������������">������������</desc-list-item>
-    <desc-list-item term="������������">������������������������������������18���</desc-list-item>
-    <desc-list-item term="������">���</desc-list-item>
-  </desc-list>
-  <nz-divider class="mb-lg"></nz-divider>
-  <div class="text-lg mb-md">������������</div>
-  <simple-table [data]="goods" [columns]="goodsColumns">
-    <ng-template #body>
-      <tr nz-tbody-tr>
-        <td nz-td>������</td>
-        <td nz-td></td>
-        <td nz-td></td>
-        <td nz-td class="text-right"></td>
-        <td nz-td class="text-right">
-          <strong>{{basicNum}}</strong>
-        </td>
-        <td nz-td class="text-right">
-          <strong>{{amountNum}}</strong>
-        </td>
-      </tr>
-    </ng-template>
-  </simple-table>
-  <div class="text-lg my-md">������������</div>
-  <simple-table [data]="progress" [columns]="progressColumns">
-    <ng-template st-row="status" let-i>
-      <nz-badge *ngIf="i.status === 'success'" [nzStatus]="'success'" [nzText]="'������'"></nz-badge>
-      <nz-badge *ngIf="i.status !== 'success'" [nzStatus]="'processing'" [nzText]="'���������'"></nz-badge>
-    </ng-template>
-  </simple-table>
-</nz-card>
diff --git a/src/app/routes/pro/profile/basic/basic.component.ts b/src/app/routes/pro/profile/basic/basic.component.ts
deleted file mode 100644
index 597778c..0000000
--- a/src/app/routes/pro/profile/basic/basic.component.ts
+++ /dev/null
@@ -1,45 +0,0 @@
-import { Component } from '@angular/core';
-import { NzMessageService } from 'ng-zorro-antd';
-import { _HttpClient } from '@delon/theme';
-import { SimpleTableColumn } from '@delon/abc';
-import { tap } from 'rxjs/operators';
-
-@Component({
-  selector: 'pro-profile-basic',
-  templateUrl: './basic.component.html',
-})
-export class ProProfileBaseComponent {
-  basicNum = 0;
-  amountNum = 0;
-  goods = this.http.get('/profile/goods').pipe(
-    tap((list: any[]) => {
-      list.forEach(item => {
-        this.basicNum += Number(item.num);
-        this.amountNum += Number(item.amount);
-      });
-    }),
-  );
-  goodsColumns: SimpleTableColumn[] = [
-    {
-      title: '������������',
-      index: 'id',
-      type: 'link',
-      click: (item: any) => this.msg.success(`show ${item.id}`),
-    },
-    { title: '������������', index: 'name' },
-    { title: '������������', index: 'barcode' },
-    { title: '������', index: 'price', type: 'currency' },
-    { title: '���������������', index: 'num', className: 'text-right' },
-    { title: '������', index: 'amount', type: 'currency' },
-  ];
-  progress = this.http.get('/profile/progress');
-  progressColumns: SimpleTableColumn[] = [
-    { title: '������', index: 'time' },
-    { title: '������������', index: 'rate' },
-    { title: '������', render: 'status' },
-    { title: '���������ID', index: 'operator' },
-    { title: '������', index: 'cost' },
-  ];
-
-  constructor(private http: _HttpClient, private msg: NzMessageService) {}
-}
diff --git a/src/app/routes/pro/result/fail/fail.component.html b/src/app/routes/pro/result/fail/fail.component.html
deleted file mode 100644
index d3a820b..0000000
--- a/src/app/routes/pro/result/fail/fail.component.html
+++ /dev/null
@@ -1,21 +0,0 @@
-<page-header></page-header>
-<nz-card [nzBordered]="false">
-  <result type="error" [title]="'������������'" description="������������������������������������������������������" [extra]="resultExtra">
-    <ng-template #resultExtra>
-      <div class="mb-md text-lg">������������������������������������</div>
-      <div class="mb-md">
-        <i class="anticon anticon-close-circle-o text-error pr-sm"></i>������������������������
-        <a class="ml-md">������������
-          <i class="anticon anticon-right pl-sm"></i>
-        </a>
-      </div>
-      <div>
-        <i class="anticon anticon-close-circle-o text-error pr-sm"></i>������������������������������������
-        <a class="ml-md">������������
-          <i class="anticon anticon-right pl-sm"></i>
-        </a>
-      </div>
-    </ng-template>
-    <button nz-button [nzType]="'primary'">������������</button>
-  </result>
-</nz-card>
diff --git a/src/app/routes/pro/result/fail/fail.component.ts b/src/app/routes/pro/result/fail/fail.component.ts
deleted file mode 100644
index 603cf37..0000000
--- a/src/app/routes/pro/result/fail/fail.component.ts
+++ /dev/null
@@ -1,7 +0,0 @@
-import { Component } from '@angular/core';
-
-@Component({
-  selector: 'pro-result-fail',
-  templateUrl: './fail.component.html',
-})
-export class ProResultFailComponent {}
diff --git a/src/app/routes/pro/result/success/success.component.html b/src/app/routes/pro/result/success/success.component.html
deleted file mode 100644
index 377a799..0000000
--- a/src/app/routes/pro/result/success/success.component.html
+++ /dev/null
@@ -1,53 +0,0 @@
-<page-header></page-header>
-<nz-card>
-  <result type="success" [title]="'������������'" description="��������������������������������������������������������������������������������������������������� Message ���������������������������������������������������������������������������������������������������x������������������������������������������������������������������������������������"
-    [extra]="resultExtra">
-    <ng-template #resultExtra>
-      <div nz-row [nzGutter]="16" class="mb-md">
-        <div nz-col [nzXs]="24" [nzSm]="12" [nzMd]="12" [nzLg]="12" [nzXl]="6">
-          <span class="text-grey-darker">������ ID���</span>
-          23421
-        </div>
-        <div nz-col [nzXs]="24" [nzSm]="12" [nzMd]="12" [nzLg]="12" [nzXl]="6">
-          <span class="text-grey-darker">������������</span>
-          ���������
-        </div>
-        <div nz-col [nzXs]="24" [nzSm]="24" [nzMd]="24" [nzLg]="24" [nzXl]="12">
-          <span class="text-grey-darker">���������������</span>
-          2016-12-12 ~ 2017-12-12
-        </div>
-      </div>
-      <nz-steps [nzCurrent]="1" nzProgressDot>
-        <nz-step [nzTitle]="'������������'" [nzDescription]="createDesc">
-          <ng-template #createDesc>
-            <div style="font-size: 14px; position: relative; left: 38px;">
-              <div style="margin-top: 8px; margin-bottom: 4px;">
-                ���������
-                <i class="anticon anticon-dingding-o ml-sm"></i>
-              </div>
-              <div style="margin-top: 8px; margin-bottom: 4px;">2016-12-12 12:32</div>
-            </div>
-          </ng-template>
-        </nz-step>
-        <nz-step [nzTitle]="'������������'" [nzDescription]="checkedDesc">
-          <ng-template #checkedDesc>
-            <div style="font-size: 14px; position: relative; left: 38px;">
-              <div style="margin-top: 8px; margin-bottom: 4px;">
-                ���������
-                <i class="anticon anticon-dingding-o ml-sm" style="color: #00a0e9;"></i>
-              </div>
-              <div style="margin-top: 8px; margin-bottom: 4px;">
-                <a (click)="msg.success('click')">���������</a>
-              </div>
-            </div>
-          </ng-template>
-        </nz-step>
-        <nz-step [nzTitle]="'������������'"></nz-step>
-        <nz-step [nzTitle]="'������'"></nz-step>
-      </nz-steps>
-    </ng-template>
-    <button nz-button [nzType]="'primary'">������������</button>
-    <button nz-button>������������</button>
-    <button nz-button>��� ���</button>
-  </result>
-</nz-card>
diff --git a/src/app/routes/pro/result/success/success.component.ts b/src/app/routes/pro/result/success/success.component.ts
deleted file mode 100644
index 06abce1..0000000
--- a/src/app/routes/pro/result/success/success.component.ts
+++ /dev/null
@@ -1,10 +0,0 @@
-import { Component } from '@angular/core';
-import { NzMessageService } from 'ng-zorro-antd';
-
-@Component({
-  selector: 'pro-result-success',
-  templateUrl: './success.component.html',
-})
-export class ProResultSuccessComponent {
-  constructor(public msg: NzMessageService) {}
-}
diff --git a/src/app/routes/routes-routing.module.ts b/src/app/routes/routes-routing.module.ts
index b271c92..84bc767 100644
--- a/src/app/routes/routes-routing.module.ts
+++ b/src/app/routes/routes-routing.module.ts
@@ -3,86 +3,20 @@
 import { environment } from '@env/environment';
 // layout
 import { LayoutDefaultComponent } from '../layout/default/default.component';
-import { LayoutFullScreenComponent } from '../layout/fullscreen/fullscreen.component';
-import { LayoutPassportComponent } from '../layout/passport/passport.component';
-// dashboard pages
-import { DashboardV1Component } from './dashboard/v1/v1.component';
-import { DashboardAnalysisComponent } from './dashboard/analysis/analysis.component';
-import { DashboardMonitorComponent } from './dashboard/monitor/monitor.component';
-import { DashboardWorkplaceComponent } from './dashboard/workplace/workplace.component';
-// passport pages
-import { UserLoginComponent } from './passport/login/login.component';
-import { UserRegisterComponent } from './passport/register/register.component';
-import { UserRegisterResultComponent } from './passport/register-result/register-result.component';
-// single pages
-import { CallbackComponent } from './callback/callback.component';
-import { UserLockComponent } from './passport/lock/lock.component';
-import { Exception403Component } from './exception/403.component';
-import { Exception404Component } from './exception/404.component';
-import { Exception500Component } from './exception/500.component';
+
 
 const routes: Routes = [
   {
     path: '',
     component: LayoutDefaultComponent,
     children: [
-      { path: '', redirectTo: 'dashboard/v1', pathMatch: 'full' },
-      { path: 'dashboard', redirectTo: 'dashboard/v1', pathMatch: 'full' },
-      { path: 'dashboard/v1', component: DashboardV1Component },
-      { path: 'dashboard/analysis', component: DashboardAnalysisComponent },
-      { path: 'dashboard/monitor', component: DashboardMonitorComponent },
-      { path: 'dashboard/workplace', component: DashboardWorkplaceComponent },
+      { path: '', redirectTo: 'home-page', pathMatch: 'full' },
       {
-        path: 'widgets',
-        loadChildren: './widgets/widgets.module#WidgetsModule',
-      },
-      { path: 'style', loadChildren: './style/style.module#StyleModule' },
-      { path: 'delon', loadChildren: './delon/delon.module#DelonModule' },
-      { path: 'extras', loadChildren: './extras/extras.module#ExtrasModule' },
-      { path: 'pro', loadChildren: './pro/pro.module#ProModule' },
-    ],
-  },
-  // ������������
-  {
-    path: 'data-v',
-    component: LayoutFullScreenComponent,
-    children: [
-      { path: '', loadChildren: './data-v/data-v.module#DataVModule' },
-    ],
-  },
-  // passport
-  {
-    path: 'passport',
-    component: LayoutPassportComponent,
-    children: [
-      {
-        path: 'login',
-        component: UserLoginComponent,
-        data: { title: '������', titleI18n: 'pro-login' },
-      },
-      {
-        path: 'register',
-        component: UserRegisterComponent,
-        data: { title: '������', titleI18n: 'pro-register' },
-      },
-      {
-        path: 'register-result',
-        component: UserRegisterResultComponent,
-        data: { title: '������������', titleI18n: 'pro-register-result' },
-      },
-    ],
-  },
-  // ���������������Layout
-  { path: 'callback/:type', component: CallbackComponent },
-  {
-    path: 'lock',
-    component: UserLockComponent,
-    data: { title: '������', titleI18n: 'lock' },
-  },
-  { path: '403', component: Exception403Component },
-  { path: '404', component: Exception404Component },
-  { path: '500', component: Exception500Component },
-  { path: '**', redirectTo: 'dashboard' },
+        path: 'home-page',
+        loadChildren: './home-page/home-page.module#HomePageModule',
+      }
+    ]
+  }
 ];
 
 @NgModule({
diff --git a/src/app/routes/routes.module.ts b/src/app/routes/routes.module.ts
index 5fe1b20..3c51835 100644
--- a/src/app/routes/routes.module.ts
+++ b/src/app/routes/routes.module.ts
@@ -2,37 +2,9 @@
 
 import { SharedModule } from '@shared/shared.module';
 import { RouteRoutingModule } from './routes-routing.module';
-// dashboard pages
-import { DashboardV1Component } from './dashboard/v1/v1.component';
-import { DashboardAnalysisComponent } from './dashboard/analysis/analysis.component';
-import { DashboardMonitorComponent } from './dashboard/monitor/monitor.component';
-import { DashboardWorkplaceComponent } from './dashboard/workplace/workplace.component';
-// passport pages
-import { UserLoginComponent } from './passport/login/login.component';
-import { UserRegisterComponent } from './passport/register/register.component';
-import { UserRegisterResultComponent } from './passport/register-result/register-result.component';
-// single pages
-import { UserLockComponent } from './passport/lock/lock.component';
-import { CallbackComponent } from './callback/callback.component';
-import { Exception403Component } from './exception/403.component';
-import { Exception404Component } from './exception/404.component';
-import { Exception500Component } from './exception/500.component';
 
 const COMPONENTS = [
-  DashboardV1Component,
-  DashboardAnalysisComponent,
-  DashboardMonitorComponent,
-  DashboardWorkplaceComponent,
-  // passport pages
-  UserLoginComponent,
-  UserRegisterComponent,
-  UserRegisterResultComponent,
-  // single pages
-  UserLockComponent,
-  CallbackComponent,
-  Exception403Component,
-  Exception404Component,
-  Exception500Component
+
 ];
 const COMPONENTS_NOROUNT = [];
 
diff --git a/src/app/routes/style/color.service.ts b/src/app/routes/style/color.service.ts
deleted file mode 100644
index 25ef957..0000000
--- a/src/app/routes/style/color.service.ts
+++ /dev/null
@@ -1,31 +0,0 @@
-import { Injectable } from '@angular/core';
-
-@Injectable()
-export class ColorService {
-  APP_COLORS = {
-    primary: '#1890ff',
-    success: '#52c41a',
-    error: '#f5222d',
-    warning: '#fadb14',
-    red: '#f5222d',
-    volcano: '#fa541c',
-    orange: '#fa8c16',
-    gold: '#faad14',
-    yellow: '#fadb14',
-    lime: '#a0d911',
-    green: '#52c41a',
-    cyan: '#13c2c2',
-    blue: '#1890ff',
-    geekblue: '#2f54eb',
-    purple: '#722ed1',
-    magenta: '#eb2f96',
-  };
-
-  get names() {
-    return Object.keys(this.APP_COLORS).filter((name, index) => index > 3);
-  }
-
-  get brands() {
-    return ['primary', 'success', 'error', 'warning'];
-  }
-}
diff --git a/src/app/routes/style/colors/colors.component.html b/src/app/routes/style/colors/colors.component.html
deleted file mode 100644
index e0489d9..0000000
--- a/src/app/routes/style/colors/colors.component.html
+++ /dev/null
@@ -1,105 +0,0 @@
-<div class="content__title">
-  <h1>
-    Colors
-    <small>Color Palettes</small>
-  </h1>
-</div>
-<div nz-row [nzGutter]="16" class="list">
-  <div nz-col [nzMd]="24">
-    <nz-card nzTitle="Classic colors">
-      <div nz-row *ngFor="let c of c.brands">
-        <div nz-col [nzSpan]="8">
-          <div class="bg-{{c}}-light p-lg">
-            <p (click)="onCopy('bg-' + c + '-light')">.bg-{{c}}-light</p>
-            <p (click)="onCopy('text-' + c + '-light')">.text-{{c}}-light</p>
-          </div>
-        </div>
-        <div nz-col [nzSpan]="8">
-          <div class="bg-{{c}} p-lg">
-            <p (click)="onCopy('bg-' + c)">.bg-{{c}}</p>
-            <p (click)="onCopy('text-' + c)">.text-{{c}}</p>
-          </div>
-        </div>
-        <div nz-col [nzSpan]="8">
-          <div class="bg-{{c}}-dark p-lg">
-            <p (click)="onCopy('bg-' + c + '-dark')">.bg-{{c}}-dark</p>
-            <p (click)="onCopy('text-' + c + '-dark')">.text-{{c}}-dark</p>
-          </div>
-        </div>
-      </div>
-    </nz-card>
-  </div>
-</div>
-<div nz-row [nzGutter]="16" class="list">
-  <div nz-col [nzMd]="24">
-    <nz-card nzTitle="Name colors">
-      <div nz-row *ngFor="let c of c.names">
-        <div nz-col [nzSpan]="8">
-          <div class="bg-{{c}}-light p-lg">
-            <p (click)="onCopy('bg-' + c + '-light')">.bg-{{c}}-light</p>
-            <p (click)="onCopy('text-' + c + '-light')">.text-{{c}}-light</p>
-          </div>
-        </div>
-        <div nz-col [nzSpan]="8">
-          <div class="bg-{{c}} p-lg">
-            <p (click)="onCopy('bg-' + c)">.bg-{{c}}</p>
-            <p (click)="onCopy('text-' + c)">.text-{{c}}</p>
-          </div>
-        </div>
-        <div nz-col [nzSpan]="8">
-          <div class="bg-{{c}}-dark p-lg">
-            <p (click)="onCopy('bg-' + c + '-dark')">.bg-{{c}}-dark</p>
-            <p (click)="onCopy('text-' + c + '-dark')">.text-{{c}}-dark</p>
-          </div>
-        </div>
-      </div>
-      <div nz-row>
-        <div nz-col [nzSpan]="5">
-          <div class="bg-grey-darker p-lg">
-            <p (click)="onCopy('bg-grey-darker')">.bg-grey-darker</p>
-            <p (click)="onCopy('text-grey-darker')">.text-grey-darker</p>
-          </div>
-        </div>
-        <div nz-col [nzSpan]="5">
-          <div class="bg-grey-dark p-lg">
-            <p (click)="onCopy('bg-grey-dark')">.bg-grey-dark</p>
-            <p (click)="onCopy('text-grey-dark')">.text-grey-dark</p>
-          </div>
-        </div>
-        <div nz-col [nzSpan]="4">
-          <div class="bg-grey p-lg">
-            <p (click)="onCopy('bg-grey')">.bg-grey</p>
-            <p (click)="onCopy('text-grey')">.text-grey</p>
-          </div>
-        </div>
-        <div nz-col [nzSpan]="5">
-          <div class="bg-grey-light p-lg">
-            <p (click)="onCopy('bg-grey-light')">.bg-grey-light</p>
-            <p (click)="onCopy('text-grey-light')">.text-grey-light</p>
-          </div>
-        </div>
-        <div nz-col [nzSpan]="5">
-          <div class="bg-grey-lighter p-lg">
-            <p (click)="onCopy('bg-grey-lighter')">.bg-grey-lighter</p>
-            <p (click)="onCopy('text-grey-lighter')">.text-grey-lighter</p>
-          </div>
-        </div>
-      </div>
-    </nz-card>
-  </div>
-</div>
-<div nz-row [nzGutter]="16" class="list">
-  <div nz-col [nzMd]="24">
-    <nz-card nzTitle="Full Colors">
-      <div nz-row>
-        <div nz-col [nzSpan]="4" *ngFor="let c of c.names">
-          <div *ngFor="let i of nums" class="bg-{{c}}-{{i}} p-lg">
-            <p (click)="onCopy('bg-' + c + '-' + i)">.bg-{{c}}-{{i}}</p>
-            <p (click)="onCopy('bg-' + c + '-' + i + '-h')">.bg-{{c}}-{{i}}-h</p>
-            <p (click)="onCopy('text-' + c + '-' + i)">.text-{{c}}-{{i}}</p>
-          </div>
-        </div>
-      </div>
-    </nz-card>
-  </div>
-</div>
diff --git a/src/app/routes/style/colors/colors.component.less b/src/app/routes/style/colors/colors.component.less
deleted file mode 100644
index 7725678..0000000
--- a/src/app/routes/style/colors/colors.component.less
+++ /dev/null
@@ -1,13 +0,0 @@
-:host {
-  ::ng-deep {
-    .list {
-      p {
-        margin-bottom: 0;
-        cursor: pointer;
-        &:first-child {
-          margin-bottom: 4px;
-        }
-      }
-    }
-  }
-}
diff --git a/src/app/routes/style/colors/colors.component.spec.ts b/src/app/routes/style/colors/colors.component.spec.ts
deleted file mode 100644
index cb1053a..0000000
--- a/src/app/routes/style/colors/colors.component.spec.ts
+++ /dev/null
@@ -1,18 +0,0 @@
-import { TestBed, TestModuleMetadata } from '@angular/core/testing';
-import { setUpTestBed } from '@testing/common.spec';
-
-import { ColorsComponent } from './colors.component';
-import { ColorService } from '../color.service';
-
-describe('Component: Colors', () => {
-  setUpTestBed(<TestModuleMetadata>{
-    declarations: [ColorsComponent],
-    providers: [ColorService],
-  });
-
-  it('should create an instance', () => {
-    const fixture = TestBed.createComponent(ColorsComponent);
-    const comp = fixture.debugElement.componentInstance;
-    expect(comp).toBeTruthy();
-  });
-});
diff --git a/src/app/routes/style/colors/colors.component.ts b/src/app/routes/style/colors/colors.component.ts
deleted file mode 100644
index d17d0ce..0000000
--- a/src/app/routes/style/colors/colors.component.ts
+++ /dev/null
@@ -1,20 +0,0 @@
-import { Component } from '@angular/core';
-import { ColorService } from '../color.service';
-import { copy } from '@delon/util';
-import { NzMessageService } from 'ng-zorro-antd';
-
-@Component({
-  selector: 'app-colors',
-  templateUrl: './colors.component.html',
-  styleUrls: ['./colors.component.less'],
-})
-export class ColorsComponent {
-  nums = Array(10)
-    .fill(1)
-    .map((v, i) => v + i);
-  constructor(public c: ColorService, private msg: NzMessageService) {}
-
-  onCopy(str: string) {
-    copy(str).then(() => this.msg.success(`Copied Success!`));
-  }
-}
diff --git a/src/app/routes/style/gridmasonry/gridmasonry.component.html b/src/app/routes/style/gridmasonry/gridmasonry.component.html
deleted file mode 100644
index 99cfe46..0000000
--- a/src/app/routes/style/gridmasonry/gridmasonry.component.html
+++ /dev/null
@@ -1,247 +0,0 @@
-<div class="content__title">
-  <h1>
-    Grid Masonry
-    <small>Pure CSS and mobile first with a fallback to inline grid, Supported from IE10,
-      <a href="//caniuse.com/#feat=multicolumn"
-        target="_blank">browser compatibility</a>
-    </small>
-  </h1>
-</div>
-<div class="row-masonry row-masonry-xl-8 row-masonry-lg-5 row-masonry-md-4 row-masonry-sm-3 row-masonry-xs-2">
-  <div class="col-masonry">
-    <div class="box-placeholder">
-      <h2 class="text-grey text-md mb-sm">Masonry Item</h2>
-      <p>Ipsum do ullamco laboris excepteur. Do incididunt commodo adipisicing officia sunt tempor. Deserunt exercitation proident
-        enim veniam laboris fugiat ipsum veniam dolore duis sit duis. In deserunt ut nulla ad eu.</p>
-    </div>
-  </div>
-  <div class="col-masonry">
-    <div class="box-placeholder">
-      <h2 class="text-grey text-md mb-sm">Masonry Item</h2>
-      <p>Veniam non sunt quis ex consequat ea esse duis esse. Ut incididunt eiusmod occaecat esse aute adipisicing culpa. Voluptate
-        ullamco labore laboris et do in.</p>
-    </div>
-  </div>
-  <div class="col-masonry">
-    <div class="box-placeholder">
-      <h2 class="text-grey text-md mb-sm">Masonry Item</h2>
-      <p>Esse elit et aute do aliqua ipsum cillum consectetur deserunt deserunt cupidatat aute aliqua aute. Aliquip ad incididunt
-        dolor cupidatat quis officia cillum sit ex. Irure ut sit Lorem sunt nulla excepteur ipsum ipsum dolore cillum cupidatat
-        ipsum. Do amet aliquip sunt consectetur nulla. Cupidatat ad consectetur veniam aliqua non ullamco laboris eiusmod.
-        In voluptate officia aliquip dolore sit qui consectetur fugiat aliqua duis occaecat. Non mollit elit nisi ea mollit
-        anim excepteur ut qui exercitation.</p>
-    </div>
-  </div>
-  <div class="col-masonry">
-    <div class="box-placeholder">
-      <h2 class="text-grey text-md mb-sm">Masonry Item</h2>
-      <p>Ullamco incididunt do deserunt cillum veniam cillum amet ad. Deserunt laborum cupidatat mollit proident adipisicing
-        in culpa consequat adipisicing et non. Aliqua ea elit voluptate esse aliqua dolor ipsum. Ut officia officia fugiat
-        sint esse qui incididunt Lorem occaecat.</p>
-    </div>
-  </div>
-  <div class="col-masonry">
-    <div class="box-placeholder">
-      <h2 class="text-grey text-md mb-sm">Masonry Item</h2>
-      <p>Ea non irure qui fugiat aliquip esse adipisicing. Cillum aliquip dolor non fugiat ad aliqua. In voluptate et non irure
-        elit. Tempor qui sunt incididunt amet tempor sint et voluptate sunt qui sit culpa proident ipsum. Sunt duis pariatur
-        officia ut magna pariatur fugiat dolor cillum laboris eu. Qui incididunt minim nostrud exercitation aliquip.</p>
-    </div>
-  </div>
-  <div class="col-masonry">
-    <div class="box-placeholder">
-      <h2 class="text-grey text-md mb-sm">Masonry Item</h2>
-      <p>Fugiat commodo ad consectetur reprehenderit. Officia fugiat ea proident exercitation occaecat mollit laboris fugiat
-        consequat deserunt anim ipsum magna ex. Esse do amet cillum aute ut ea.</p>
-    </div>
-  </div>
-  <div class="col-masonry">
-    <div class="box-placeholder">
-      <h2 class="text-grey text-md mb-sm">Masonry Item</h2>
-      <p>Magna id fugiat laborum elit ullamco deserunt do laboris non qui. Duis et exercitation nulla labore cupidatat nostrud
-        pariatur reprehenderit in nostrud. Consequat consequat consectetur mollit adipisicing. Laborum amet sit sint aliquip
-        fugiat adipisicing enim reprehenderit. Voluptate nisi reprehenderit voluptate sit enim aute deserunt cupidatat et
-        dolore labore voluptate id dolore.</p>
-    </div>
-  </div>
-  <div class="col-masonry">
-    <div class="box-placeholder">
-      <h2 class="text-grey text-md mb-sm">Masonry Item</h2>
-      <p>Reprehenderit non ullamco quis non excepteur irure excepteur anim ullamco labore. Sit occaecat consectetur laborum
-        consequat elit sint sit sunt. Duis aliquip magna ipsum consequat eiusmod officia.</p>
-    </div>
-  </div>
-  <div class="col-masonry">
-    <div class="box-placeholder">
-      <h2 class="text-grey text-md mb-sm">Masonry Item</h2>
-      <p>Magna nostrud ex cupidatat id in non labore ad voluptate est irure tempor. Nostrud aliqua magna laborum incididunt
-        deserunt veniam nulla nulla labore cillum. Id laboris Lorem dolore minim reprehenderit eu proident aliqua magna id
-        aute aute. Aliqua est et nulla eu duis id laborum magna.</p>
-    </div>
-  </div>
-  <div class="col-masonry">
-    <div class="box-placeholder">
-      <h2 class="text-grey text-md mb-sm">Masonry Item</h2>
-      <p>Sint pariatur eiusmod id sit est exercitation laboris mollit pariatur minim. Ex aliquip commodo nulla reprehenderit
-        et laboris consequat pariatur culpa culpa proident ullamco laboris. Ex aliquip deserunt labore aliquip ea est sit
-        quis amet tempor sunt amet. Id reprehenderit do elit sit consectetur. Aute amet sint tempor ipsum sint laboris est
-        do culpa tempor. Pariatur fugiat aute officia et laboris voluptate sit nisi in anim excepteur amet eu.</p>
-    </div>
-  </div>
-  <div class="col-masonry">
-    <div class="box-placeholder">
-      <h2 class="text-grey text-md mb-sm">Masonry Item</h2>
-      <p>Incididunt ut eu fugiat do deserunt voluptate id et est aliqua eu sint. Ad dolore excepteur ipsum nulla proident dolore
-        aute sunt. Aute enim do dolor laborum id eiusmod sit.</p>
-    </div>
-  </div>
-  <div class="col-masonry">
-    <div class="box-placeholder">
-      <h2 class="text-grey text-md mb-sm">Masonry Item</h2>
-      <p>Amet elit et ad amet nulla minim deserunt mollit adipisicing. Laboris non ipsum ad laborum non magna velit tempor cillum
-        cillum. Proident dolore eiusmod ex elit cillum. Cupidatat duis pariatur ut id deserunt laboris. Culpa excepteur est
-        deserunt eiusmod do do ut est labore eiusmod. Eu eu veniam excepteur mollit anim est velit nisi. Velit quis tempor
-        laboris culpa.</p>
-    </div>
-  </div>
-  <div class="col-masonry">
-    <div class="box-placeholder">
-      <h2 class="text-grey text-md mb-sm">Masonry Item</h2>
-      <p>Nostrud nulla nisi laboris officia anim nostrud nulla cupidatat veniam ea duis. Pariatur ea ullamco irure laborum.
-        Consectetur labore in occaecat ullamco est fugiat nisi sunt deserunt. Non sunt dolor elit culpa dolore adipisicing.
-        Fugiat mollit ex voluptate nulla deserunt dolore ea sunt commodo et qui laborum.</p>
-    </div>
-  </div>
-  <div class="col-masonry">
-    <div class="box-placeholder">
-      <h2 class="text-grey text-md mb-sm">Masonry Item</h2>
-      <p>Quis pariatur ea nisi excepteur mollit nulla reprehenderit labore. Exercitation pariatur eu pariatur tempor deserunt
-        ad occaecat ad in pariatur id et dolore. Enim veniam aute magna fugiat eiusmod velit quis. Laborum sit consequat
-        dolore qui minim culpa aliqua pariatur cillum velit. Nostrud enim aliqua ut nisi consectetur pariatur fugiat do esse
-        fugiat enim et tempor ad. Eiusmod ut incididunt proident labore sint sit culpa excepteur id. Fugiat mollit qui eu
-        eu fugiat proident.</p>
-    </div>
-  </div>
-  <div class="col-masonry">
-    <div class="box-placeholder">
-      <h2 class="text-grey text-md mb-sm">Masonry Item</h2>
-      <p>Tempor do officia magna do sunt. Nulla cillum anim excepteur adipisicing commodo culpa. Adipisicing pariatur qui voluptate
-        consectetur mollit quis sunt enim veniam ullamco. Duis nostrud anim aliqua adipisicing fugiat aute excepteur deserunt
-        enim occaecat pariatur ad. Qui aliquip aute labore minim ipsum in aute et. Aliqua laboris magna aute incididunt esse
-        ex. Eu ipsum occaecat aliquip enim aute.</p>
-    </div>
-  </div>
-  <div class="col-masonry">
-    <div class="box-placeholder">
-      <h2 class="text-grey text-md mb-sm">Masonry Item</h2>
-      <p>Labore cillum id non anim eiusmod officia. Nostrud laboris sint aliquip cillum magna. Minim sit labore proident culpa
-        non nisi cillum non officia est. Proident elit sit adipisicing est cupidatat ex cupidatat labore aliqua ad.
-      </p>
-    </div>
-  </div>
-  <div class="col-masonry">
-    <div class="box-placeholder">
-      <h2 class="text-grey text-md mb-sm">Masonry Item</h2>
-      <p>Officia tempor ea adipisicing ad sit qui dolore consequat irure veniam. Est sit magna deserunt sint aute commodo fugiat
-        fugiat irure sint dolore commodo amet. Duis cillum dolor quis consectetur dolor et et culpa id elit. Amet ut nulla
-        sunt non in non duis sit fugiat consequat. Velit incididunt ullamco sunt deserunt nulla ad adipisicing. In fugiat
-        ullamco deserunt amet. Ex voluptate amet magna minim ut incididunt veniam.</p>
-    </div>
-  </div>
-  <div class="col-masonry">
-    <div class="box-placeholder">
-      <h2 class="text-grey text-md mb-sm">Masonry Item</h2>
-      <p>Occaecat anim do cillum est dolore sint. Do ut proident exercitation est incididunt irure duis ea laborum minim cillum
-        est. Mollit irure non qui veniam labore eu elit veniam ea amet nisi esse labore. Elit ut nulla exercitation fugiat
-        cupidatat non cupidatat sint id minim.</p>
-    </div>
-  </div>
-  <div class="col-masonry">
-    <div class="box-placeholder">
-      <h2 class="text-grey text-md mb-sm">Masonry Item</h2>
-      <p>Voluptate incididunt tempor nulla voluptate esse dolor Lorem veniam voluptate adipisicing laborum in aliqua. Proident
-        voluptate exercitation mollit consectetur qui commodo minim. Ea esse veniam velit minim reprehenderit incididunt
-        reprehenderit do laborum aliqua. In quis et excepteur cupidatat qui duis. Pariatur Lorem laborum ut consectetur deserunt
-        consectetur officia tempor commodo aliqua aliqua ipsum.</p>
-    </div>
-  </div>
-  <div class="col-masonry">
-    <div class="box-placeholder">
-      <h2 class="text-grey text-md mb-sm">Masonry Item</h2>
-      <p>Ullamco officia esse ex reprehenderit reprehenderit cupidatat. Sunt excepteur sint consectetur ex aliqua excepteur.
-        Laborum id cupidatat ea reprehenderit sit eiusmod ad exercitation ullamco nostrud. Nulla tempor voluptate magna amet
-        culpa exercitation ad laborum in. Aliqua voluptate deserunt pariatur excepteur. Ullamco voluptate est dolore velit
-        aliquip tempor nostrud deserunt. Minim excepteur dolor nulla commodo incididunt ex ullamco excepteur cillum veniam
-        quis reprehenderit.</p>
-    </div>
-  </div>
-</div>
-<h3 class="my-md">Masonry with any kind of element</h3>
-<div class="row-masonry row-masonry-xl-8 row-masonry-lg-5 row-masonry-md-4 row-masonry-sm-3 row-masonry-xs-2">
-  <div class="col-masonry">
-    <img src="assets/tmp/img/bg1.jpg" alt="" />
-  </div>
-  <div class="col-masonry">
-    <div class="box-placeholder">
-      <h2 class="text-grey text-md mb-sm">Masonry Item</h2>
-      <p>Proident est cillum magna qui pariatur. Deserunt ut voluptate sint aliquip anim nisi consequat. Elit laboris anim anim
-        dolor incididunt. Nostrud qui labore qui cillum excepteur mollit excepteur consequat esse anim enim ad enim. Esse
-        qui mollit et minim mollit laboris reprehenderit laborum fugiat do id. Mollit labore proident cupidatat aliqua dolore
-        exercitation consectetur commodo sint mollit nostrud esse sunt. Nostrud fugiat duis sit excepteur excepteur mollit.</p>
-    </div>
-  </div>
-  <div class="col-masonry">
-    <img src="assets/tmp/img/bg2.jpg" alt="" />
-  </div>
-  <div class="col-masonry">
-    <img src="assets/tmp/img/bg3.jpg" alt="" />
-  </div>
-  <div class="col-masonry">
-    <img src="assets/tmp/img/bg4.jpg" alt="" />
-  </div>
-  <div class="col-masonry">
-    <img src="assets/tmp/img/bg5.jpg" alt="" />
-  </div>
-  <div class="col-masonry">
-    <img src="assets/tmp/img/bg6.jpg" alt="" />
-  </div>
-  <div class="col-masonry">
-    <div class="box-placeholder">
-      <h2 class="text-grey text-md mb-sm">Masonry Item</h2>
-      <p>Dolore consequat elit est qui dolore dolore tempor amet magna adipisicing non in commodo. Veniam sint et proident duis
-        eu nulla commodo sunt duis aliquip eiusmod. Occaecat incididunt deserunt consectetur non aliquip velit ullamco eu
-        sit labore proident exercitation. Cillum deserunt voluptate eu eiusmod sint in esse. Velit anim non Lorem proident
-        eu sit nisi Lorem aute do sit ea. Esse nostrud amet excepteur occaecat incididunt amet laborum aliqua qui mollit
-        ullamco. Labore incididunt ullamco non ipsum Lorem duis commodo adipisicing in.</p>
-    </div>
-  </div>
-  <div class="col-masonry">
-    <div class="box-placeholder">
-      <h2 class="text-grey text-md mb-sm">Masonry Item</h2>
-      <p>Amet est dolor id esse veniam duis eu ex velit. Id qui deserunt voluptate veniam. Voluptate ea ipsum in eiusmod enim
-        do velit commodo nulla sint. Fugiat ipsum esse pariatur voluptate exercitation magna ut proident consectetur et.
-        Sint qui elit exercitation anim duis nulla commodo aliqua excepteur pariatur.</p>
-    </div>
-  </div>
-  <div class="col-masonry">
-    <img src="assets/tmp/img/bg7.jpg" alt="" />
-  </div>
-  <div class="col-masonry">
-    <img src="assets/tmp/img/bg8.jpg" alt="" />
-  </div>
-  <div class="col-masonry">
-    <div class="box-placeholder">
-      <h2 class="text-grey text-md mb-sm">Masonry Item</h2>
-      <p>Culpa amet adipisicing consequat nisi dolore sunt amet labore officia aliquip elit tempor officia aliqua. Deserunt
-        laborum enim ut laboris duis. Cillum non proident dolor ullamco cillum nostrud in sint aliqua cillum. Proident magna
-        incididunt occaecat eiusmod cillum dolor tempor Lorem adipisicing nisi adipisicing mollit ex exercitation. Magna
-        nostrud est sunt incididunt culpa. Duis nulla elit ut ea adipisicing duis esse ullamco.</p>
-    </div>
-  </div>
-  <div class="col-masonry">
-    <img src="assets/tmp/img/bg9.jpg" alt="" />
-  </div>
-  <div class="col-masonry">
-    <img src="assets/tmp/img/bg10.jpg" alt="" />
-  </div>
-</div>
diff --git a/src/app/routes/style/gridmasonry/gridmasonry.component.spec.ts b/src/app/routes/style/gridmasonry/gridmasonry.component.spec.ts
deleted file mode 100644
index 2671125..0000000
--- a/src/app/routes/style/gridmasonry/gridmasonry.component.spec.ts
+++ /dev/null
@@ -1,16 +0,0 @@
-import { TestBed, TestModuleMetadata } from '@angular/core/testing';
-import { setUpTestBed } from '@testing/common.spec';
-
-import { GridMasonryComponent } from './gridmasonry.component';
-
-describe('Component: GridMasonry', () => {
-  setUpTestBed(<TestModuleMetadata>{
-    declarations: [GridMasonryComponent],
-  });
-
-  it('should create an instance', () => {
-    const fixture = TestBed.createComponent(GridMasonryComponent);
-    const comp = fixture.debugElement.componentInstance;
-    expect(comp).toBeTruthy();
-  });
-});
diff --git a/src/app/routes/style/gridmasonry/gridmasonry.component.ts b/src/app/routes/style/gridmasonry/gridmasonry.component.ts
deleted file mode 100644
index 5f7ab57..0000000
--- a/src/app/routes/style/gridmasonry/gridmasonry.component.ts
+++ /dev/null
@@ -1,7 +0,0 @@
-import { Component } from '@angular/core';
-
-@Component({
-  selector: 'app-gridmasonry',
-  templateUrl: './gridmasonry.component.html',
-})
-export class GridMasonryComponent {}
diff --git a/src/app/routes/style/style-routing.module.ts b/src/app/routes/style/style-routing.module.ts
deleted file mode 100644
index 27f3778..0000000
--- a/src/app/routes/style/style-routing.module.ts
+++ /dev/null
@@ -1,18 +0,0 @@
-import { NgModule } from '@angular/core';
-import { Routes, RouterModule } from '@angular/router';
-
-import { GridMasonryComponent } from './gridmasonry/gridmasonry.component';
-import { TypographyComponent } from './typography/typography.component';
-import { ColorsComponent } from './colors/colors.component';
-
-const routes: Routes = [
-  { path: 'gridmasonry', component: GridMasonryComponent },
-  { path: 'typography', component: TypographyComponent },
-  { path: 'colors', component: ColorsComponent },
-];
-
-@NgModule({
-  imports: [RouterModule.forChild(routes)],
-  exports: [RouterModule],
-})
-export class StyleRoutingModule {}
diff --git a/src/app/routes/style/style.module.ts b/src/app/routes/style/style.module.ts
deleted file mode 100644
index 4311eed..0000000
--- a/src/app/routes/style/style.module.ts
+++ /dev/null
@@ -1,20 +0,0 @@
-import { NgModule } from '@angular/core';
-import { SharedModule } from '@shared/shared.module';
-
-import { StyleRoutingModule } from './style-routing.module';
-import { ColorService } from './color.service';
-
-import { GridMasonryComponent } from './gridmasonry/gridmasonry.component';
-import { TypographyComponent } from './typography/typography.component';
-import { ColorsComponent } from './colors/colors.component';
-
-@NgModule({
-  imports: [SharedModule, StyleRoutingModule],
-  declarations: [
-    GridMasonryComponent,
-    TypographyComponent,
-    ColorsComponent,
-  ],
-  providers: [ColorService],
-})
-export class StyleModule {}
diff --git a/src/app/routes/style/typography/typography.component.html b/src/app/routes/style/typography/typography.component.html
deleted file mode 100644
index 5a0f0fa..0000000
--- a/src/app/routes/style/typography/typography.component.html
+++ /dev/null
@@ -1,130 +0,0 @@
-<div class="content__title">
-  <h1>
-    Typography
-  </h1>
-</div>
-<div nz-row [nzGutter]="16">
-  <div nz-col [nzMd]="8">
-    <nz-card nzTitle="Headings">
-      <h1 class="h1">
-        class="h1"
-        <small>Sub-heading</small>
-      </h1>
-      <h2 class="h2">
-        class="h2"
-        <small>Sub-heading</small>
-      </h2>
-      <h3 class="h3">
-        class="h3"
-        <small>Sub-heading</small>
-      </h3>
-      <h4 class="h4">
-        class="h4"
-        <small>Sub-heading</small>
-      </h4>
-      <h5 class="h5">
-        class="h5"
-        <small>Sub-heading</small>
-      </h5>
-      <h6 class="h6">
-        class="h6"
-        <small>Sub-heading</small>
-      </h6>
-    </nz-card>
-  </div>
-  <div nz-col [nzMd]="8">
-    <nz-card nzTitle="Paragraphs">
-      <p>
-        <small>This is an example of small, fine print text.</small>
-      </p>
-      <p class="mt-sm">
-        <strong>This is an example of strong, bold text.</strong>
-      </p>
-      <p class="mt-sm">
-        <em>This is an example of emphasized, italic text.</em>
-      </p>
-      <h4 class="mt-sm">Alignment & Sizing Helpers</h4>
-      <p class="mt-sm text-left text-sm">class="text-left text-sm"</p>
-      <p class="mt-sm text-center text-md">class="text-center text-md"</p>
-      <p class="text-right text-lg">class="text-right text-lg"</p>
-    </nz-card>
-  </div>
-  <div nz-col [nzMd]="8">
-    <nz-card nzTitle="Text Colors">
-      <p *ngFor="let color of c.names" class="pb-0 text-{{color}}">class="text-{{color}} bg-{{color}}"</p>
-    </nz-card>
-  </div>
-</div>
-<div nz-row [nzGutter]="16">
-  <div nz-col [nzMd]="8">
-    <nz-card nzTitle="Formatting">
-      <h4>text-nowrap</h4>
-      <p class="pt-sm text-nowrap">[class="text-nowrap"].Ad eiusmod eu velit veniam laborum voluptate duis aliqua esse eiusmod.</p>
-      <h4 class="pt-sm">text-truncate</h4>
-      <p class="pt-sm text-truncate">[class="text-truncate"].Officia nulla velit minim mollit laborum et irure ullamco nisi dolore qui. Sint aute aliqua
-        tempor commodo officia sunt non do id laborum mollit ex ea cupidatat. Amet ad non fugiat magna. Ut cupidatat labore
-        pariatur esse reprehenderit esse sint in proident elit minim sunt enim sit. Enim sint deserunt exercitation duis.
-        Aliquip cillum irure do incididunt do eu eiusmod excepteur culpa ex consectetur nulla duis sit. Ex officia excepteur
-        officia ea ea cupidatat veniam officia officia est.</p>
-      <h4 class="pt-sm">Transformation</h4>
-      <p class="pt-sm text-lowercase">class="text-lowercase"</p>
-      <p class="pt-sm text-uppercase">class="text-uppercase"</p>
-      <p class="pt-sm text-capitalize">class="text-capitalize"</p>
-      <p class="pt-sm text-deleted">class="text-deleted"</p>
-    </nz-card>
-  </div>
-  <div nz-col [nzMd]="8">
-    <nz-card nzTitle="Border">
-      <div class="p-sm m-sm text-center width-sm d-inline-block border border-primary">class="border border-primary"</div>
-      <div class="p-sm m-sm text-center width-sm d-inline-block border-top-1 border-success rounded-circle">class="border-top-1 border-success rounded-circle"</div>
-      <div class="p-sm m-sm text-center width-sm d-inline-block border-bottom-1 border-error">class="border-bottom-1 border-error"</div>
-      <div class="p-sm m-sm text-center width-md d-inline-block border-right-1 border-warning">class="border-right-1 border-warning"</div>
-    </nz-card>
-  </div>
-  <div nz-col [nzMd]="8">
-    <nz-card nzTitle="Padding & Margin">
-      <strong>������������</strong>
-      <p>
-        <code>[<������>p|m][<������>t|r|b|l|x|y]?0</code>
-      </p>
-      <p>eg: p0, pt0, mb0, mt0</p>
-      <strong>������</strong>
-      <p>
-        <code>[<������>p|m][<������>t|r|b|l|x|y]?-[<������>sm|md|lg]</code>
-      </p>
-      <p>eg: p-sm, pb-sm, mt-md, mr-md</p>
-    </nz-card>
-  </div>
-</div>
-<div nz-row [nzGutter]="16">
-  <div nz-col [nzMd]="8">
-    <nz-card nzTitle="Display">
-      <p class="display-1">class="display-1"</p>
-      <p class="display-2">class="display-2"</p>
-      <p class="display-3">class="display-3"</p>
-    </nz-card>
-  </div>
-  <div nz-col [nzMd]="8">
-    <nz-card nzTitle="Code">
-      <p>This is an example of an inline code element within body copy. Wrap inline code within a
-        <code>...</code>tag.</p>
-      <pre class="mt-sm"><code>This is an example of preformatted text.</code></pre>
-    </nz-card>
-  </div>
-  <div nz-col [nzMd]="8">
-    <nz-card nzTitle="Lists">
-      <h4>list styled</h4>
-      <ol class="mt-sm list-styled">
-        <li>List Item</li>
-        <li>List Item</li>
-        <li>List Item</li>
-      </ol>
-      <h4 class="mt-sm">Unstyled List</h4>
-      <ul class="mt-sm list-unstyled">
-        <li>List Item</li>
-        <li>List Item</li>
-        <li>List Item</li>
-      </ul>
-    </nz-card>
-  </div>
-</div>
diff --git a/src/app/routes/style/typography/typography.component.spec.ts b/src/app/routes/style/typography/typography.component.spec.ts
deleted file mode 100644
index b575b38..0000000
--- a/src/app/routes/style/typography/typography.component.spec.ts
+++ /dev/null
@@ -1,18 +0,0 @@
-import { TestBed, TestModuleMetadata } from '@angular/core/testing';
-import { setUpTestBed } from '@testing/common.spec';
-
-import { TypographyComponent } from './typography.component';
-import { ColorService } from '../color.service';
-
-describe('Component: Typography', () => {
-  setUpTestBed(<TestModuleMetadata>{
-    declarations: [TypographyComponent],
-    providers: [ColorService],
-  });
-
-  it('should create an instance', () => {
-    const fixture = TestBed.createComponent(TypographyComponent);
-    const comp = fixture.debugElement.componentInstance;
-    expect(comp).toBeTruthy();
-  });
-});
diff --git a/src/app/routes/style/typography/typography.component.ts b/src/app/routes/style/typography/typography.component.ts
deleted file mode 100644
index b982092..0000000
--- a/src/app/routes/style/typography/typography.component.ts
+++ /dev/null
@@ -1,10 +0,0 @@
-import { Component } from '@angular/core';
-import { ColorService } from '../color.service';
-
-@Component({
-  selector: 'app-typography',
-  templateUrl: './typography.component.html',
-})
-export class TypographyComponent {
-  constructor(public c: ColorService) {}
-}
diff --git a/src/app/routes/widgets/widgets-routing.module.ts b/src/app/routes/widgets/widgets-routing.module.ts
deleted file mode 100644
index 7368602..0000000
--- a/src/app/routes/widgets/widgets-routing.module.ts
+++ /dev/null
@@ -1,12 +0,0 @@
-import { NgModule } from '@angular/core';
-import { Routes, RouterModule } from '@angular/router';
-
-import { WidgetsComponent } from './widgets/widgets.component';
-
-const routes: Routes = [{ path: '', component: WidgetsComponent }];
-
-@NgModule({
-  imports: [RouterModule.forChild(routes)],
-  exports: [RouterModule],
-})
-export class WidgetsRoutingModule {}
diff --git a/src/app/routes/widgets/widgets.module.ts b/src/app/routes/widgets/widgets.module.ts
deleted file mode 100644
index e77f2d8..0000000
--- a/src/app/routes/widgets/widgets.module.ts
+++ /dev/null
@@ -1,13 +0,0 @@
-import { NgModule } from '@angular/core';
-import { Routes, RouterModule } from '@angular/router';
-import { SharedModule } from '@shared/shared.module';
-
-import { WidgetsRoutingModule } from './widgets-routing.module';
-
-import { WidgetsComponent } from './widgets/widgets.component';
-
-@NgModule({
-  imports: [SharedModule, WidgetsRoutingModule],
-  declarations: [WidgetsComponent],
-})
-export class WidgetsModule {}
diff --git a/src/app/routes/widgets/widgets/widgets.component.html b/src/app/routes/widgets/widgets/widgets.component.html
deleted file mode 100644
index 66c50f6..0000000
--- a/src/app/routes/widgets/widgets/widgets.component.html
+++ /dev/null
@@ -1,797 +0,0 @@
-<div class="content__title">
-  <h1>Widgets</h1>
-</div>
-<div nz-row [nzGutter]="16">
-  <div nz-col [nzXs]="24" [nzSm]="8">
-    <nz-card>
-      <div class="text-right text-grey">
-        <i class="anticon anticon-pay-circle display-2"></i>
-      </div>
-      <h3 class="h3">99.999</h3>
-      <div class="text-grey">Games played last month</div>
-      <nz-progress [nzStatus]="'active'" [nzPercent]="60" [nzShowInfo]="false" [nzStrokeWidth]="5"></nz-progress>
-    </nz-card>
-  </div>
-  <div nz-col [nzXs]="24" [nzSm]="8">
-    <nz-card>
-      <div class="text-right text-grey">
-        <i class="anticon anticon-pie-chart display-2"></i>
-      </div>
-      <h3 class="h3">300</h3>
-      <div class="text-grey">Coffee cups per day</div>
-      <nz-progress [nzStatus]="'success'" [nzPercent]="30" [nzShowInfo]="false" [nzStrokeWidth]="5"></nz-progress>
-    </nz-card>
-  </div>
-  <div nz-col [nzXs]="24" [nzSm]="8">
-    <nz-card>
-      <div class="text-right text-grey">
-        <i class="anticon anticon-cloud display-2"></i>
-      </div>
-      <h3 class="h3">1000 Gb</h3>
-      <div class="text-grey">Average Monthly Uploads</div>
-      <nz-progress [nzStatus]="'exception'" [nzPercent]="10" [nzShowInfo]="false" [nzStrokeWidth]="5"></nz-progress>
-    </nz-card>
-  </div>
-</div>
-<div nz-row [nzGutter]="16">
-  <div nz-col [nzXs]="24" [nzSm]="8">
-    <nz-card class="ant-card__body-nopadding">
-      <div nz-row>
-        <div nz-col [nzSpan]="12" class="border-right-1 border-bottom-1">
-          <div nz-row [nzType]="'flex'" [nzJustify]="'center'" [nzAlign]="'middle'">
-            <div nz-col [nzSpan]="12" class="text-center text-red">
-              <i class="anticon anticon-user display-2"></i>
-            </div>
-            <div nz-col [nzSpan]="12" class="py-md">
-              <h4 class="h4">10k</h4>
-              <div class="text-grey">VISITORS</div>
-            </div>
-          </div>
-        </div>
-        <div nz-col [nzSpan]="12" class="border-bottom-1">
-          <div nz-row [nzType]="'flex'" [nzJustify]="'center'" [nzAlign]="'middle'">
-            <div nz-col [nzSpan]="12" class="text-center text-pink">
-              <i class="anticon anticon-sound display-2"></i>
-            </div>
-            <div nz-col [nzSpan]="12" class="py-md">
-              <h4 class="h4">100%</h4>
-              <div class="text-grey">VOLUME</div>
-            </div>
-          </div>
-        </div>
-      </div>
-      <div nz-row>
-        <div nz-col [nzSpan]="12" class="border-right-1">
-          <div nz-row [nzType]="'flex'" [nzJustify]="'center'" [nzAlign]="'middle'">
-            <div nz-col [nzSpan]="12" class="text-center text-grey">
-              <i class="anticon anticon-fork display-2"></i>
-            </div>
-            <div nz-col [nzSpan]="12" class="py-md">
-              <h4 class="h4">150</h4>
-              <div class="text-grey">FORKS</div>
-            </div>
-          </div>
-        </div>
-        <div nz-col [nzSpan]="12">
-          <div nz-row [nzType]="'flex'" [nzJustify]="'center'" [nzAlign]="'middle'">
-            <div nz-col [nzSpan]="12" class="text-center text-green">
-              <i class="anticon anticon-message display-2"></i>
-            </div>
-            <div nz-col [nzSpan]="12" class="py-md">
-              <h4 class="h4">10</h4>
-              <div class="text-grey">MESSAGES</div>
-            </div>
-          </div>
-        </div>
-      </div>
-    </nz-card>
-    <nz-card class="ant-card__body-nopadding">
-      <div nz-row>
-        <div nz-col [nzSpan]="12" class="border-right-1 border-bottom-1">
-          <div nz-row [nzType]="'flex'" [nzJustify]="'center'" [nzAlign]="'middle'">
-            <div nz-col [nzSpan]="12" class="text-center">
-              <g2-mini-bar height="35" color="#999" borderWidth="3" [padding]="[36, 30, 30, 30]" [data]="smallData"></g2-mini-bar>
-            </div>
-            <div nz-col [nzSpan]="12" class="py-md">
-              <h4 class="h4">10k</h4>
-              <div class="text-grey">VISITORS</div>
-            </div>
-          </div>
-        </div>
-        <div nz-col [nzSpan]="12" class="border-bottom-1">
-          <div nz-row [nzType]="'flex'" [nzJustify]="'center'" [nzAlign]="'middle'">
-            <div nz-col [nzSpan]="12" class="text-center">
-              <g2-mini-bar height="35" color="#999" borderWidth="3" [padding]="[36, 30, 30, 30]" [data]="smallData"></g2-mini-bar>
-            </div>
-            <div nz-col [nzSpan]="12" class="py-md">
-              <h4 class="h4">100%</h4>
-              <div class="text-grey">VOLUME</div>
-            </div>
-          </div>
-        </div>
-      </div>
-      <div nz-row>
-        <div nz-col [nzSpan]="12" class="border-right-1">
-          <div nz-row [nzType]="'flex'" [nzJustify]="'center'" [nzAlign]="'middle'">
-            <div nz-col [nzSpan]="12" class="text-center">
-              <g2-mini-bar height="35" color="#999" borderWidth="3" [padding]="[36, 30, 30, 30]" [data]="smallData"></g2-mini-bar>
-            </div>
-            <div nz-col [nzSpan]="12" class="py-md">
-              <h4 class="h4">150</h4>
-              <div class="text-grey">FORKS</div>
-            </div>
-          </div>
-        </div>
-        <div nz-col [nzSpan]="12">
-          <div nz-row [nzType]="'flex'" [nzJustify]="'center'" [nzAlign]="'middle'">
-            <div nz-col [nzSpan]="12" class="text-center">
-              <g2-mini-bar height="35" color="#999" borderWidth="3" [padding]="[36, 30, 30, 30]" [data]="smallData"></g2-mini-bar>
-            </div>
-            <div nz-col [nzSpan]="12" class="py-md">
-              <h4 class="h4">10</h4>
-              <div class="text-grey">MESSAGES</div>
-            </div>
-          </div>
-        </div>
-      </div>
-    </nz-card>
-  </div>
-  <div nz-col [nzXs]="24" [nzSm]="8">
-    <nz-card class="ant-card__body-nopadding">
-      <div class="half-float half-float-md">
-        <img src="./assets/tmp/img/half-float-bg-1.jpg">
-        <div class="half-float-bottom rounded-circle bg-grey-lighter">
-          <img class="p-sm" src="./assets/tmp/img/1.png">
-        </div>
-      </div>
-      <div class="text-center">
-        <h3 class="h3">cipchk</h3>
-        <div class="text-grey">Lead director</div>
-        <div class="p-sm">Voluptate velit id mollit ex. Anim labore non dolore ad cupidatat aute reprehenderit ullamco culpa esse. Esse exercitation
-          laboris culpa ipsum pariatur mollit minim culpa magna.</div>
-      </div>
-      <div class="text-center bg-grey-darker text-white">
-        <div nz-row>
-          <div nz-col [nzSpan]="8" class="py-sm">
-            <h3 class="text-white mb0">400</h3>
-            <div>Photos</div>
-          </div>
-          <div nz-col [nzSpan]="8" class="py-sm">
-            <h3 class="text-white mb0">2000</h3>
-            <div>Likes</div>
-          </div>
-          <div nz-col [nzSpan]="8" class="py-sm">
-            <h3 class="text-white mb0">500</h3>
-            <div>Following</div>
-          </div>
-        </div>
-      </div>
-    </nz-card>
-  </div>
-  <div nz-col [nzXs]="24" [nzSm]="8">
-    <nz-card class="ant-card__body-nopadding">
-      <div class="text-center bg-center py-lg text-white" style="background-image: url('./assets/tmp/img/bg9.jpg');">
-        <nz-avatar [nzSrc]="'./assets/tmp/img/1.png'"></nz-avatar>
-        <h3 class="text-white">cipchk</h3>
-        <div>
-          <i class="fa fa-github fa-fw"></i>
-          @cipchk
-        </div>
-      </div>
-      <div class="text-center bg-grey-darker text-white">
-        <div nz-row>
-          <div nz-col [nzSpan]="8" class="py-md">
-            <a (click)="msg.success('to twitter')">
-              <i class="fa fa-twitter fa-2x"></i>
-            </a>
-          </div>
-          <div nz-col [nzSpan]="8" class="py-md">
-            <a (click)="msg.success('to facebook')">
-              <i class="fa fa-facebook fa-2x"></i>
-            </a>
-          </div>
-          <div nz-col [nzSpan]="8" class="py-md">
-            <a (click)="msg.success('comment')">
-              <i class="fa fa-comments fa-2x"></i>
-            </a>
-          </div>
-        </div>
-      </div>
-      <div nz-row [nzType]="'flex'" [nzJustify]="'center'" [nzAlign]="'middle'" class="py-sm bg-grey-lighter-h point">
-        <div nz-col [nzSpan]="4" class="text-center">
-          <i class="fa fa-fw fa-clock-o text-grey"></i>
-        </div>
-        <div nz-col [nzSpan]="17">Recent Activity</div>
-        <div nz-col [nzSpan]="3">
-          <nz-tag [nzColor]="'blue'">350</nz-tag>
-        </div>
-      </div>
-      <div nz-row [nzType]="'flex'" [nzJustify]="'center'" [nzAlign]="'middle'" class="py-sm bg-grey-lighter-h point">
-        <div nz-col [nzSpan]="4" class="text-center">
-          <i class="fa fa-fw fa-user text-grey"></i>
-        </div>
-        <div nz-col [nzSpan]="17">Following</div>
-        <div nz-col [nzSpan]="3">
-          <nz-tag [nzColor]="'pink'">150</nz-tag>
-        </div>
-      </div>
-      <div nz-row [nzType]="'flex'" [nzJustify]="'center'" [nzAlign]="'middle'" class="py-sm bg-grey-lighter-h point">
-        <div nz-col [nzSpan]="4" class="text-center">
-          <i class="fa fa-fw fa-folder-open-o text-grey"></i>
-        </div>
-        <div nz-col [nzSpan]="17">Photos</div>
-        <div nz-col [nzSpan]="3">
-          <nz-tag [nzColor]="'green'">100</nz-tag>
-        </div>
-      </div>
-      <div nz-row [nzType]="'flex'" [nzJustify]="'center'" [nzAlign]="'middle'" class="py-sm bg-grey-lighter-h point">
-        <div nz-col [nzSpan]="4" class="text-center">
-          <i class="fa fa-fw fa-folder-open-o text-grey"></i>
-        </div>
-        <div nz-col [nzSpan]="17">Article</div>
-        <div nz-col [nzSpan]="3">
-          <nz-tag [nzColor]="'purple'">100</nz-tag>
-        </div>
-      </div>
-    </nz-card>
-  </div>
-</div>
-<div nz-row nzGutter="16">
-  <div nz-col nzXs="24" nzSm="12" nzMd="6" class="mb-md">
-    <div nz-row nzType="flex" nzAlign="middle" class="bg-primary rounded-md">
-      <div nz-col nzSpan="12" class="p-md text-white">
-        <div class="h2 mt0">123,456</div>
-        <div class="text-nowrap">Website Traffics</div>
-      </div>
-      <div nz-col nzSpan="12">
-        <g2-mini-bar height="35" color="#fff" borderWidth="3" [padding]="[36, 30, 30, 30]" [data]="data"></g2-mini-bar>
-      </div>
-    </div>
-  </div>
-  <div nz-col nzXs="24" nzSm="12" nzMd="6" class="mb-md">
-    <div nz-row nzType="flex" nzAlign="middle" class="bg-success rounded-md">
-      <div nz-col nzSpan="12" class="p-md text-white">
-        <div class="h2 mt0">234,567K</div>
-        <div class="text-nowrap">Website Impressions</div>
-      </div>
-      <div nz-col nzSpan="12">
-        <g2-mini-bar height="35" color="#fff" borderWidth="3" [padding]="[36, 30, 30, 30]" [data]="data"></g2-mini-bar>
-      </div>
-    </div>
-  </div>
-  <div nz-col nzXs="24" nzSm="12" nzMd="6" class="mb-md">
-    <div nz-row nzType="flex" nzAlign="middle" class="bg-orange rounded-md">
-      <div nz-col nzSpan="12" class="p-md text-white">
-        <div class="h2 mt0">$458,778</div>
-        <div class="text-nowrap">Total Sales</div>
-      </div>
-      <div nz-col nzSpan="12">
-        <g2-mini-bar height="35" color="#fff" borderWidth="3" [padding]="[36, 30, 30, 30]" [data]="data"></g2-mini-bar>
-      </div>
-    </div>
-  </div>
-  <div nz-col nzXs="24" nzSm="12" nzMd="6" class="mb-md">
-    <div nz-row nzType="flex" nzAlign="middle" class="bg-magenta rounded-md">
-      <div nz-col nzSpan="12" class="p-md text-white">
-        <div class="h2 mt0">456</div>
-        <div class="text-nowrap">Support Tickets</div>
-      </div>
-      <div nz-col nzSpan="12">
-        <g2-mini-bar height="35" color="#fff" borderWidth="3" [padding]="[36, 30, 30, 30]" [data]="data"></g2-mini-bar>
-      </div>
-    </div>
-  </div>
-</div>
-<div nz-row nzGutter="16">
-  <div nz-col nzXs="24" nzSm="12" nzMd="6" class="mb-md">
-    <div nz-row nzType="flex" nzAlign="middle" class="bg-primary text-center rounded-md">
-      <div nz-col nzSpan="8" class="p-md text-white">
-        <i class="anticon anticon-user display-2"></i>
-      </div>
-      <div nz-col nzSpan="16" class="bg-white py-md">
-        <h3 class="h3 mb0">10k</h3>
-        <div class="text-grey-dark">VISITORS</div>
-      </div>
-    </div>
-  </div>
-  <div nz-col nzXs="24" nzSm="12" nzMd="6" class="mb-md">
-    <div nz-row nzType="flex" nzAlign="middle" class="bg-magenta text-center rounded-md">
-      <div nz-col nzSpan="8" class="p-md text-white">
-        <i class="anticon anticon-sound display-2"></i>
-      </div>
-      <div nz-col nzSpan="16" class="bg-white py-md">
-        <h3 class="h3 mb0">100%</h3>
-        <div class="text-grey-dark">VOLUME</div>
-      </div>
-    </div>
-  </div>
-  <div nz-col nzXs="24" nzSm="12" nzMd="6" class="mb-md">
-    <div nz-row nzType="flex" nzAlign="middle" class="bg-grey-darker text-center rounded-md">
-      <div nz-col nzSpan="8" class="p-md text-white">
-        <i class="anticon anticon-fork display-2"></i>
-      </div>
-      <div nz-col nzSpan="16" class="bg-white py-md">
-        <h3 class="h3 mb0">150</h3>
-        <div class="text-grey-dark">FORKS</div>
-      </div>
-    </div>
-  </div>
-  <div nz-col nzXs="24" nzSm="12" nzMd="6" class="mb-md">
-    <div nz-row nzType="flex" nzAlign="middle" class="bg-green text-center rounded-md">
-      <div nz-col nzSpan="8" class="p-md text-white">
-        <i class="anticon anticon-message display-2"></i>
-      </div>
-      <div nz-col nzSpan="16" class="bg-white py-md">
-        <h3 class="h3 mb0">10</h3>
-        <div class="text-grey-dark">NEW MESSAGES</div>
-      </div>
-    </div>
-  </div>
-</div>
-<div nz-row [nzGutter]="16">
-  <div nz-col nzXs="24" nzSm="12" nzMd="8" class="mb-md">
-    <div nz-row nzType="flex" nzAlign="middle" class="bg-green-dark text-white rounded-md">
-      <div nz-col nzSpan="8" class="p-md text-center">
-        <i class="icon-share display-1"></i>
-      </div>
-      <div nz-col nzSpan="16" class="bg-green-light p-md">
-        <h2 class="h2 text-white mb0">150</h2>
-        <div class="text-lg text-uppercase">New connections</div>
-      </div>
-    </div>
-  </div>
-  <div nz-col nzXs="24" nzSm="12" nzMd="8" class="mb-md">
-    <div nz-row nzType="flex" nzAlign="middle" class="bg-red-dark text-white rounded-md">
-      <div nz-col nzSpan="8" class="p-md text-center">
-        <i class="icon-star display-1"></i>
-      </div>
-      <div nz-col nzSpan="16" class="bg-red-light p-md">
-        <h2 class="h2 text-white mb0">7000</h2>
-        <div class="text-lg text-uppercase">RATINGS RECEIVED</div>
-      </div>
-    </div>
-  </div>
-  <div nz-col nzXs="24" nzSm="12" nzMd="8" class="mb-md">
-    <div nz-row nzType="flex" nzAlign="middle" class="bg-warning-dark text-white rounded-md">
-      <div nz-col nzSpan="8" class="p-md text-center">
-        <i class="icon-trophy display-1"></i>
-      </div>
-      <div nz-col nzSpan="16" class="bg-warning-light p-md">
-        <h2 class="h2 text-white mb0">15</h2>
-        <div class="text-lg text-uppercase">ACHIEVEMENTS</div>
-      </div>
-    </div>
-  </div>
-</div>
-<div nz-row nzGutter="16">
-  <div nz-col nzXs="24" nzSm="12" nzMd="6" class="mb-md">
-    <div nz-row nzType="flex" nzAlign="middle" class="bg-green text-white text-center rounded-md">
-      <div nz-col nzSpan="10" class="p-md">
-        <i class="anticon anticon-book display-1"></i>
-      </div>
-      <div nz-col nzSpan="14" class="py-md">
-        <h1 class="text-white mb0">120</h1>
-        <div>New Tasks!</div>
-      </div>
-      <a nz-col nzSpan="24" (click)="msg.info('view')" class="d-block p-sm bg-grey-darker text-white">
-        <div class="float-left">View Details</div>
-        <div class="float-right">
-          <i class="fa fa-chevron-circle-right"></i>
-        </div>
-      </a>
-    </div>
-  </div>
-  <div nz-col nzXs="24" nzSm="12" nzMd="6" class="mb-md">
-    <div nz-row nzType="flex" nzAlign="middle" class="bg-primary text-white text-center rounded-md">
-      <div nz-col nzSpan="10" class="p-md">
-        <i class="anticon anticon-message display-1"></i>
-      </div>
-      <div nz-col nzSpan="14" class="py-md">
-        <h1 class="text-white mb0">36</h1>
-        <div>New Comments!</div>
-      </div>
-      <a nz-col nzSpan="24" (click)="msg.info('view')" class="d-block p-sm bg-grey-darker text-white">
-        <div class="float-left">View Details</div>
-        <div class="float-right">
-          <i class="fa fa-chevron-circle-right"></i>
-        </div>
-      </a>
-    </div>
-  </div>
-  <div nz-col nzXs="24" nzSm="12" nzMd="6" class="mb-md">
-    <div nz-row nzType="flex" nzAlign="middle" class="bg-warning text-white text-center rounded-md">
-      <div nz-col nzSpan="10" class="p-md">
-        <i class="anticon anticon-shopping-cart display-1"></i>
-      </div>
-      <div nz-col nzSpan="14" class="py-md">
-        <h1 class="text-white mb0">110</h1>
-        <div>New Orders!</div>
-      </div>
-      <a nz-col nzSpan="24" (click)="msg.info('view')" class="d-block p-sm bg-grey-darker text-white">
-        <div class="float-left">View Details</div>
-        <div class="float-right">
-          <i class="fa fa-chevron-circle-right"></i>
-        </div>
-      </a>
-    </div>
-  </div>
-  <div nz-col nzXs="24" nzSm="12" nzMd="6" class="mb-md">
-    <div nz-row nzType="flex" nzAlign="middle" class="bg-red text-white text-center rounded-md">
-      <div nz-col nzSpan="10" class="p-md">
-        <i class="anticon anticon-customer-service display-1"></i>
-      </div>
-      <div nz-col nzSpan="14" class="py-md">
-        <h1 class="text-white mb0">19</h1>
-        <div>Support Tickets!</div>
-      </div>
-      <a nz-col nzSpan="24" (click)="msg.info('view')" class="d-block p-sm bg-grey-darker text-white">
-        <div class="float-left">View Details</div>
-        <div class="float-right">
-          <i class="fa fa-chevron-circle-right"></i>
-        </div>
-      </a>
-    </div>
-  </div>
-</div>
-<div nz-row [nzGutter]="16">
-  <div nz-col [nzXs]="24" [nzSm]="12" [nzMd]="8">
-    <nz-card nzTitle="������" [nzExtra]="extra">
-      <ng-template #extra>
-        <a (click)="msg.info('������������')">������������</a>
-      </ng-template>
-      <div class="pb-md">
-        <i class="anticon anticon-check-circle-o text-green"></i> ��������� 16 ���
-        <i class="anticon anticon-check-circle-o pl-md"></i> ��������� 4 ���
-      </div>
-      <nz-carousel class="nz-carousel__dot-blue">
-        <div nz-carousel-content>
-          <div nz-row [nzGutter]="24" class="mb-md">
-            <div nz-col [nzSpan]="12">
-              <div nz-row [nzType]="'flex'" [nzJustify]="'center'" [nzAlign]="'middle'">
-                <div nz-col [nzSpan]="8">
-                  <i class="anticon anticon-laptop display-2 text-blue"></i>
-                </div>
-                <div nz-col [nzSpan]="16">
-                  <h4 class="fs-md text-blue mb0">������������������</h4>
-                  <div class="text-grey">Register Server</div>
-                </div>
-              </div>
-            </div>
-            <div nz-col [nzSpan]="12">
-              <div nz-row [nzType]="'flex'" [nzJustify]="'center'" [nzAlign]="'middle'">
-                <div nz-col [nzSpan]="8">
-                  <i class="anticon anticon-rocket display-2 text-red"></i>
-                </div>
-                <div nz-col [nzSpan]="16">
-                  <h4 class="fs-md text-blue mb0">������������</h4>
-                  <div class="text-grey">Msg Broker</div>
-                </div>
-              </div>
-            </div>
-          </div>
-          <div nz-row [nzGutter]="24">
-            <div nz-col [nzSpan]="12">
-              <div nz-row [nzType]="'flex'" [nzJustify]="'center'" [nzAlign]="'middle'">
-                <div nz-col [nzSpan]="8">
-                  <i class="anticon anticon-usb display-2 text-purple"></i>
-                </div>
-                <div nz-col [nzSpan]="16">
-                  <h4 class="fs-md text-blue mb0">���������������������</h4>
-                  <div class="text-grey">DRM</div>
-                </div>
-              </div>
-            </div>
-            <div nz-col [nzSpan]="12">
-              <div nz-row [nzType]="'flex'" [nzJustify]="'center'" [nzAlign]="'middle'">
-                <div nz-col [nzSpan]="8">
-                  <i class="anticon anticon-fork display-2 text-pink"></i>
-                </div>
-                <div nz-col [nzSpan]="16">
-                  <h4 class="fs-md text-blue mb0">���������������������</h4>
-                  <div class="text-grey">ZDC</div>
-                </div>
-              </div>
-            </div>
-          </div>
-        </div>
-        <div nz-carousel-content>
-          <div nz-row [nzGutter]="24" class="mb-md">
-            <div nz-col [nzSpan]="12">
-              <div nz-row [nzType]="'flex'" [nzJustify]="'center'" [nzAlign]="'middle'">
-                <div nz-col [nzSpan]="8">
-                  <i class="anticon anticon-laptop display-2 text-blue"></i>
-                </div>
-                <div nz-col [nzSpan]="16">
-                  <h4 class="fs-md text-blue mb0">������������������</h4>
-                  <div class="text-grey">Register Server</div>
-                </div>
-              </div>
-            </div>
-            <div nz-col [nzSpan]="12">
-              <div nz-row [nzType]="'flex'" [nzJustify]="'center'" [nzAlign]="'middle'">
-                <div nz-col [nzSpan]="8">
-                  <i class="anticon anticon-rocket display-2 text-red"></i>
-                </div>
-                <div nz-col [nzSpan]="16">
-                  <h4 class="fs-md text-blue mb0">������������</h4>
-                  <div class="text-grey">Msg Broker</div>
-                </div>
-              </div>
-            </div>
-          </div>
-          <div nz-row [nzGutter]="24">
-            <div nz-col [nzSpan]="12">
-              <div nz-row [nzType]="'flex'" [nzJustify]="'center'" [nzAlign]="'middle'">
-                <div nz-col [nzSpan]="8">
-                  <i class="anticon anticon-usb display-2 text-purple"></i>
-                </div>
-                <div nz-col [nzSpan]="16">
-                  <h4 class="fs-md text-blue">���������������������</h4>
-                  <div class="text-grey">DRM</div>
-                </div>
-              </div>
-            </div>
-            <div nz-col [nzSpan]="12">
-              <div nz-row [nzType]="'flex'" [nzJustify]="'center'" [nzAlign]="'middle'">
-                <div nz-col [nzSpan]="8">
-                  <i class="anticon anticon-fork display-2 text-pink"></i>
-                </div>
-                <div nz-col [nzSpan]="16">
-                  <h4 class="fs-md text-blue">���������������������</h4>
-                  <div class="text-grey">ZDC</div>
-                </div>
-              </div>
-            </div>
-          </div>
-        </div>
-      </nz-carousel>
-    </nz-card>
-  </div>
-  <div nz-col [nzXs]="24" [nzSm]="12" [nzMd]="8">
-    <nz-card nzTitle="���������������">
-      <div nz-row [nzType]="'flex'" [nzJustify]="'center'" [nzAlign]="'middle'">
-        <div nz-col [nzSpan]="4">
-          <i class="anticon anticon-database display-1"></i>
-        </div>
-        <div nz-col [nzSpan]="15">
-          <h3 class="font-weight-bold mb0">���������������</h3>
-          <div class="pt-sm text-grey-dark">
-            <nz-badge [nzStatus]="'error'"></nz-badge>
-            ���������������������
-          </div>
-        </div>
-        <div nz-col [nzSpan]="5" class="text-right">
-          <button nz-button (click)="msg.info('Apply')" [nzType]="'default'">
-            <span>������</span>
-          </button>
-        </div>
-      </div>
-    </nz-card>
-  </div>
-  <div nz-col [nzXs]="24" [nzSm]="12" [nzMd]="8">
-    <nz-card nzTitle="������ 1" class="ant-card__body-nopadding" [nzExtra]="extra">
-      <ng-template #extra>
-        <nz-tooltip [nzTitle]="'������������'">
-          <span nz-tooltip>
-            <i class="anticon anticon-shopping-cart display-3"></i>
-          </span>
-        </nz-tooltip>
-      </ng-template>
-      <div nz-row [nzType]="'flex'" [nzJustify]="'center'" [nzAlign]="'middle'" [nzGutter]="8">
-        <div nz-col [nzSpan]="12" class="text-center">
-          ������������
-          <strong class="display-1 text-blur">12</strong>
-        </div>
-        <div nz-col [nzSpan]="12" class="my-md pl-md border-left-1">
-          <div class="pb-sm">
-            <nz-badge [nzStatus]="'success'"></nz-badge>
-            ���������
-            <strong class="text-green">2</strong>
-          </div>
-          <div class="pb-sm">
-            <nz-badge [nzStatus]="'default'"></nz-badge>
-            ������������
-            <strong class="text-grey">0</strong>
-          </div>
-          <div class="pb-sm">
-            <nz-badge [nzStatus]="'error'"></nz-badge>
-            ������������
-            <strong class="text-red">0</strong>
-          </div>
-          <div class="pb-sm">
-            <nz-badge [nzStatus]="'error'"></nz-badge>
-            ���������
-            <strong class="text-red">1</strong>
-          </div>
-        </div>
-      </div>
-      <div nz-row class="text-center border-top-1">
-        <div nz-col [nzSpan]="8" class="bg-grey-lighter-h py-sm point">
-          ������
-          <strong class="text-blue">18</strong>
-        </div>
-        <div nz-col [nzSpan]="8" class="bg-grey-lighter-h py-sm point">
-          ������
-          <strong>0</strong>
-        </div>
-        <div nz-col [nzSpan]="8" class="bg-grey-lighter-h py-sm point">
-          ������
-          <strong class="text-blue">2</strong>
-        </div>
-      </div>
-    </nz-card>
-  </div>
-</div>
-<div nz-row [nzGutter]="16">
-  <div nz-col [nzXs]="24" [nzMd]="12" class="mb-md">
-    <div nz-row [nzType]="'flex'" [nzJustify]="'center'" [nzAlign]="'middle'" class="bg-white py-md rounded-md">
-      <div nz-col [nzSpan]="3" class="text-center">
-        <span class="ant-avatar ant-avatar-lg ant-avatar-circle ant-avatar-icon bg-primary">
-          <i class="icon-speedometer"></i>
-        </span>
-      </div>
-      <div nz-col [nzSpan]="6">
-        <strong class="display-2">10</strong> ���
-        <div class="text-grey">������������������</div>
-      </div>
-      <div nz-col [nzSpan]="5">
-        <nz-badge [nzStatus]="'success'"></nz-badge>
-        ���������
-        <span class="display-3 text-grey-dark">3</span>
-      </div>
-      <div nz-col [nzSpan]="5">
-        <nz-badge [nzStatus]="'processing'"></nz-badge>
-        ������������
-        <span class="display-3 text-grey-dark">5</span>
-      </div>
-      <div nz-col [nzSpan]="5">
-        <nz-badge [nzStatus]="'error'"></nz-badge>
-        ���������
-        <span class="display-3 text-grey-dark">2</span>
-      </div>
-    </div>
-  </div>
-  <div nz-col [nzXs]="24" [nzMd]="12" class="mb-md">
-    <div nz-row [nzType]="'flex'" [nzJustify]="'center'" [nzAlign]="'middle'" class="bg-white rounded-md border p-md">
-      <div nz-col [nzSpan]="16">
-        ������������������������������
-      </div>
-      <div nz-col [nzSpan]="8" class="text-right">
-        <nz-popconfirm [(nzVisible)]="like" [nzPlacement]="'top'" [nzTitle]="'������������������������������������'" [nzOkText]="'������������'" [nzCancelText]="'������������'"
-          (nzOnConfirm)="msg.success('������������')" (nzOnCancel)="msg.error('������������')" style="display:inline-block; padding-top:15px;">
-          <span nz-popconfirm></span>
-        </nz-popconfirm>
-        <span class="pr-lg">
-          <i class="anticon anticon-like display-3 point" [class.text-primary]="like" (click)="like=!like"></i> ���
-        </span>
-        <i class="anticon anticon-dislike display-3 point" [class.text-primary]="dislike" (click)="dislike=!dislike"></i> ���
-      </div>
-    </div>
-  </div>
-</div>
-<div nz-row [nzGutter]="16">
-  <div nz-col nzXs="24" nzSm="12" nzMd="8" class="mb-md">
-    <nz-card class="ant-card__body-nopadding bg-green rounded-md">
-      <div class="p-md">
-        <div class="h5 pb-sm text-white">Received all time</div>
-        <g2-mini-area color="#fff" height="46" [data]="data"></g2-mini-area>
-      </div>
-      <div class="text-center bg-grey-darker text-white">
-        <div nz-row>
-          <div nz-col [nzSpan]="8" class="py-sm">
-            <h3 class="text-white mb0">400</h3>
-            <div>Photos</div>
-          </div>
-          <div nz-col [nzSpan]="8" class="py-sm">
-            <h3 class="text-white mb0">2000</h3>
-            <div>Likes</div>
-          </div>
-          <div nz-col [nzSpan]="8" class="py-sm">
-            <h3 class="text-white mb0">500</h3>
-            <div>Following</div>
-          </div>
-        </div>
-      </div>
-    </nz-card>
-  </div>
-  <div nz-col nzXs="24" nzSm="12" nzMd="8" class="mb-md">
-    <nz-card class="ant-card__body-nopadding bg-green rounded-md">
-      <div class="p-md">
-        <div class="h5 pb-sm text-white">Monthly incomes</div>
-        <g2-mini-area color="#fff" height="46" [data]="data"></g2-mini-area>
-      </div>
-      <div nz-row [nzType]="'flex'" [nzJustify]="'center'" [nzAlign]="'middle'" class="bg-grey-darker py-sm text-center">
-        <div nz-col [nzSpan]="16">
-          <g2-mini-bar height="35" color="#fff" borderWidth="3" [padding]="[36, 30, 30, 30]" [data]="data"></g2-mini-bar>
-        </div>
-        <div nz-col [nzSpan]="8">
-          <div class="text-white">+150</div>
-          <div class="text-grey">From last month</div>
-        </div>
-      </div>
-      <div class="py-sm text-center bg-white text-grey">
-        <div nz-row>
-          <div nz-col [nzSpan]="12">
-            <div class="text-grey-dark">Gross income</div>
-            <h4 class="h4 mb0">12000</h4>
-          </div>
-          <div nz-col [nzSpan]="12">
-            <div class="text-grey-dark">Net income</div>
-            <h4 class="h4 mb0">5100</h4>
-          </div>
-        </div>
-      </div>
-    </nz-card>
-  </div>
-  <div nz-col nzXs="24" nzSm="12" nzMd="8" class="mb-md">
-    <div nz-row [nzType]="'flex'" [nzJustify]="'center'" [nzAlign]="'middle'" class="rounded-md bg-blue">
-      <div nz-col nzSpan="16">
-        <img class="img-fluid align-middle" src="./assets/tmp/img/bg1.jpg" alt="" />
-      </div>
-      <div nz-col nzSpan="8" class="text-white text-center">
-        <h2 class="h1 text-white mb0">11��</h2>
-        <div class="py-sm">Cold</div>
-        <i class="fa fa-sun-o fa-2x"></i>
-      </div>
-    </div>
-  </div>
-</div>
-<div nz-row nzGutter="16">
-  <div nz-col nzXs="24" nzMd="12">
-    <nz-card class="ant-card__img">
-      <img class="img" src="//os.alipayobjects.com/rmsportal/GhjqstwSgxBXrZS.png">
-      <div class="p-md">
-        <h3 class="h3 mb0">ANT DESIGN</h3>
-        <div class="text-grey">A UI Design Language</div>
-        <ol class="list-styled text-lg pt-md">
-          <li>Designed by experienced team, and showcase dozens of inspiring projects.</li>
-          <li>Provide solutions for usual problems that may be encountered while developing enterprise-like complex UIs.</li>
-          <li>Dozens of flexible and practical reusable components that increase your productivity.</li>
-        </ol>
-        <div class="pt-md">
-          <a class="text-grey" href="//ng.ant.design" target="_blank">View Site...</a>
-        </div>
-      </div>
-    </nz-card>
-  </div>
-  <div nz-col nzXs="24" nzMd="12">
-    <nz-card [nzTitle]="nzTitle" class="ant-card__body-nopadding" [nzTitle]="nzTitle">
-      <ng-template #nzTitle>
-        Recent Posts
-        <small class="text-sm font-weight-normal">Venenatis portauam Inceptos ameteiam</small>
-      </ng-template>
-      <div nz-row [nzType]="'flex'" [nzJustify]="'center'" [nzAlign]="'middle'" class="py-sm bg-grey-lighter-h point" *ngFor="let item of todoData">
-        <div nz-col [nzSpan]="4" class="text-center">
-          <nz-avatar [nzSrc]="'./assets/tmp/img/' + item.avatar + '.png'"></nz-avatar>
-        </div>
-        <div nz-col [nzSpan]="20">
-          <strong>{{item.name}}</strong>
-          <div>{{item.content}}</div>
-        </div>
-      </div>
-    </nz-card>
-  </div>
-  <div nz-col nzXs="24" nzMd="12">
-    <nz-card nzTitle="Todo lists" class="ant-card__body-nopadding">
-      <div nz-row [nzType]="'flex'" [nzJustify]="'center'" [nzAlign]="'middle'" class="py-sm bg-grey-lighter-h point" *ngFor="let item of todoData">
-        <div nz-col [nzSpan]="4" class="text-center">
-          <nz-avatar [nzSrc]="'./assets/tmp/img/' + item.avatar + '.png'"></nz-avatar>
-        </div>
-        <div nz-col [nzSpan]="18">
-          <strong>{{item.name}}</strong>
-          <div [class.text-deleted]="item.completed">{{item.content}}</div>
-        </div>
-        <div nz-col [nzSpan]="2" class="text-right pr-md">
-          <nz-dropdown [nzPlacement]="'topRight'">
-            <i nz-dropdown class="icon-options-vertical"></i>
-            <ul nz-menu>
-              <li nz-menu-item *ngIf="item.completed" (click)="item.completed=false">Active</li>
-              <li nz-menu-item *ngIf="!item.completed" (click)="item.completed=true">Completed</li>
-              <li nz-menu-item (click)="todoData.splice(todoData.indexOf(item), 1)">Delted</li>
-            </ul>
-          </nz-dropdown>
-        </div>
-      </div>
-    </nz-card>
-  </div>
-</div>
diff --git a/src/app/routes/widgets/widgets/widgets.component.less b/src/app/routes/widgets/widgets/widgets.component.less
deleted file mode 100644
index 8077540..0000000
--- a/src/app/routes/widgets/widgets/widgets.component.less
+++ /dev/null
@@ -1,11 +0,0 @@
-@import 'node_modules/@delon/theme/styles/default';
-:host ::ng-deep {
-  .ant-carousel {
-    .slick-dots {
-      bottom: -10px;
-      li.slick-active button {
-        background: @primary-color;
-      }
-    }
-  }
-}
diff --git a/src/app/routes/widgets/widgets/widgets.component.spec.ts b/src/app/routes/widgets/widgets/widgets.component.spec.ts
deleted file mode 100644
index 54ebf23..0000000
--- a/src/app/routes/widgets/widgets/widgets.component.spec.ts
+++ /dev/null
@@ -1,16 +0,0 @@
-import { TestBed, TestModuleMetadata } from '@angular/core/testing';
-import { setUpTestBed } from '@testing/common.spec';
-
-import { WidgetsComponent } from './widgets.component';
-
-describe('Comoponent: Widgets', () => {
-  setUpTestBed(<TestModuleMetadata>{
-    declarations: [WidgetsComponent],
-  });
-
-  it('should create an instance', () => {
-    const fixture = TestBed.createComponent(WidgetsComponent);
-    const comp = fixture.debugElement.componentInstance;
-    expect(comp).toBeTruthy();
-  });
-});
diff --git a/src/app/routes/widgets/widgets/widgets.component.ts b/src/app/routes/widgets/widgets/widgets.component.ts
deleted file mode 100644
index dd98087..0000000
--- a/src/app/routes/widgets/widgets/widgets.component.ts
+++ /dev/null
@@ -1,63 +0,0 @@
-import { NzMessageService } from 'ng-zorro-antd';
-import { Component } from '@angular/core';
-import { _HttpClient } from '@delon/theme';
-
-@Component({
-  selector: 'app-widgets',
-  templateUrl: './widgets.component.html',
-  styleUrls: ['./widgets.component.less'],
-})
-export class WidgetsComponent {
-  data = [];
-  smallData = [];
-
-  todoData: any[] = [
-    {
-      completed: true,
-      avatar: '1',
-      name: '���������',
-      content: `������������������������������������������`,
-    },
-    {
-      completed: false,
-      avatar: '2',
-      name: '������������',
-      content: `���������������������������������������`,
-    },
-    {
-      completed: false,
-      avatar: '3',
-      name: 'cipchk',
-      content: `this world was never meant for one as beautiful as you.`,
-    },
-    {
-      completed: false,
-      avatar: '4',
-      name: 'Kent',
-      content: `my heart is beating with hers`,
-    },
-    {
-      completed: false,
-      avatar: '5',
-      name: 'Are you',
-      content: `They always said that I love beautiful girl than my friends`,
-    },
-    {
-      completed: false,
-      avatar: '6',
-      name: 'Forever',
-      content: `Walking through green fields ���sunshine in my eyes.`,
-    },
-  ];
-
-  like = false;
-
-  dislike = false;
-
-  constructor(public msg: NzMessageService, private http: _HttpClient) {
-    this.http.get('/chart/visit').subscribe((res: any[]) => {
-      this.data = res;
-      this.smallData = res.slice(0, 6);
-    });
-  }
-}
diff --git a/src/assets/tmp/app-data.json b/src/assets/tmp/app-data.json
index 1aa46f3..ed08616 100644
--- a/src/assets/tmp/app-data.json
+++ b/src/assets/tmp/app-data.json
@@ -1,12 +1,12 @@
 {
   "app": {
-    "name": "Alain",
+    "name": "������������������������",
     "description": "Ng-zorro admin panel front-end framework"
   },
   "user": {
     "name": "Admin",
     "avatar": "./assets/tmp/img/avatar.jpg",
-    "email": "cipchk@qq.com"
+    "email": "admin@qq.com"
   },
   "menu": [
     {
diff --git a/src/assets/tmp/i18n/zh-CN.json b/src/assets/tmp/i18n/zh-CN.json
index a9558b4..9b78ffe 100644
--- a/src/assets/tmp/i18n/zh-CN.json
+++ b/src/assets/tmp/i18n/zh-CN.json
@@ -64,5 +64,7 @@
   "pro-user": "������",
   "pro-login": "������",
   "pro-register": "������",
-  "pro-register-result": "������������"
+  "pro-register-result": "������������",
+  "home-page":"������������",
+  "system_navigation":"������������"
 }
diff --git a/src/assets/tmp/img/No1.png b/src/assets/tmp/img/No1.png
new file mode 100644
index 0000000..3247245
--- /dev/null
+++ b/src/assets/tmp/img/No1.png
Binary files differ
diff --git a/src/assets/tmp/img/No2.png b/src/assets/tmp/img/No2.png
new file mode 100644
index 0000000..e137d5e
--- /dev/null
+++ b/src/assets/tmp/img/No2.png
Binary files differ
diff --git a/src/assets/tmp/img/No3.png b/src/assets/tmp/img/No3.png
new file mode 100644
index 0000000..04677e7
--- /dev/null
+++ b/src/assets/tmp/img/No3.png
Binary files differ
diff --git a/src/assets/tmp/img/No4.png b/src/assets/tmp/img/No4.png
new file mode 100644
index 0000000..efd5b94
--- /dev/null
+++ b/src/assets/tmp/img/No4.png
Binary files differ
diff --git a/src/assets/tmp/img/No5.png b/src/assets/tmp/img/No5.png
new file mode 100644
index 0000000..4025d3e
--- /dev/null
+++ b/src/assets/tmp/img/No5.png
Binary files differ
diff --git a/src/assets/tmp/img/logo.png b/src/assets/tmp/img/logo.png
new file mode 100644
index 0000000..4c3a71f
--- /dev/null
+++ b/src/assets/tmp/img/logo.png
Binary files differ
diff --git a/src/assets/tmp/img/logo_100x40.png b/src/assets/tmp/img/logo_100x40.png
new file mode 100644
index 0000000..a1e8606
--- /dev/null
+++ b/src/assets/tmp/img/logo_100x40.png
Binary files differ
diff --git a/src/assets/tmp/img/logo_30x30.png b/src/assets/tmp/img/logo_30x30.png
new file mode 100644
index 0000000..547aadf
--- /dev/null
+++ b/src/assets/tmp/img/logo_30x30.png
Binary files differ
diff --git a/src/assets/tmp/img/logo_44x44.png b/src/assets/tmp/img/logo_44x44.png
new file mode 100644
index 0000000..d1db631
--- /dev/null
+++ b/src/assets/tmp/img/logo_44x44.png
Binary files differ
diff --git a/src/assets/tmp/img/map_coordinates.png b/src/assets/tmp/img/map_coordinates.png
new file mode 100644
index 0000000..1c6a7e4
--- /dev/null
+++ b/src/assets/tmp/img/map_coordinates.png
Binary files differ
diff --git a/src/assets/tmp/img/zorro.svg b/src/assets/tmp/img/zorro.svg
new file mode 100644
index 0000000..059bf56
--- /dev/null
+++ b/src/assets/tmp/img/zorro.svg
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
+<svg version="1.1" id="������_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+	 viewBox="0 0 400 400" style="enable-background:new 0 0 400 400;" xml:space="preserve">
+<style type="text/css">
+	.st0{fill:url(#SVGID_1_);}
+	.st1{fill:url(#SVGID_2_);}
+	.st2{fill:url(#SVGID_3_);}
+</style>
+<g>
+	<linearGradient id="SVGID_1_" gradientUnits="userSpaceOnUse" x1="215.0983" y1="173.3861" x2="271.3071" y2="173.3861">
+		<stop  offset="3.215440e-02" style="stop-color:#F0776F"/>
+		<stop  offset="1" style="stop-color:#F0606F"/>
+	</linearGradient>
+	<path class="st0" d="M258.7,213.4c-0.3,0-0.6,0-1-0.1c-4.3-0.5-7.4-4.4-6.9-8.7l4.7-38.9c0.3-2.5-1.2-4.9-3.5-5.7l-31.7-11.3
+		c-4.1-1.5-6.2-5.9-4.8-10c1.5-4.1,5.9-6.2,10-4.8l31.7,11.3c9.4,3.3,15.1,12.5,13.9,22.4l-4.7,38.9
+		C266,210.4,262.6,213.4,258.7,213.4z"/>
+	<linearGradient id="SVGID_2_" gradientUnits="userSpaceOnUse" x1="127.4784" y1="201.0843" x2="263.3311" y2="201.0843">
+		<stop  offset="0" style="stop-color:#6EB4E0"/>
+		<stop  offset="1" style="stop-color:#1588E0"/>
+	</linearGradient>
+	<path class="st1" d="M197.9,275.7c-3.5,0-7-0.9-10.3-2.7l-41-22.8c-5.9-3.3-9.9-9.2-10.7-15.9l-8.3-67.6
+		c-1.2-9.9,4.7-19.3,14.1-22.6l50.7-17.3c4.1-1.4,8.6,0.8,10,4.9c1.4,4.1-0.8,8.6-4.9,10l-50.7,17.3c-2.4,0.8-3.9,3.2-3.6,5.8
+		l8.3,67.6c0.2,1.7,1.2,3.2,2.7,4.1l41,22.8c1.6,0.9,3.6,0.9,5.2,0l44.4-24.3c1.5-0.8,2.6-2.4,2.8-4.1c0.5-4.3,4.4-7.4,8.7-6.9
+		c4.3,0.5,7.4,4.4,6.9,8.7c-0.8,6.7-4.9,12.7-10.8,16l-44.4,24.3C204.9,274.8,201.4,275.7,197.9,275.7z"/>
+	<linearGradient id="SVGID_3_" gradientUnits="userSpaceOnUse" x1="163.5466" y1="194.4135" x2="233.869" y2="194.4135">
+		<stop  offset="3.215440e-02" style="stop-color:#F0776F"/>
+		<stop  offset="1" style="stop-color:#F0606F"/>
+	</linearGradient>
+	<path class="st2" d="M233,214.7l-25.4-45.9l-0.1-0.1c-1.8-3.1-5.2-5.1-8.8-5.1c-3.6,0-7,2-8.8,5.1l-25.4,46
+		c-1.9,3.5-0.7,7.8,2.8,9.7c3.5,1.9,7.8,0.7,9.7-2.8l4.9-8.9h33.6l4.9,8.9c1.3,2.4,3.7,3.7,6.3,3.7c1.2,0,2.4-0.3,3.4-0.9
+		C233.6,222.5,234.9,218.1,233,214.7z M189.8,198.4l8.9-16.1l8.9,16.1H189.8z"/>
+</g>
+</svg>
diff --git a/src/index.html b/src/index.html
index b1f13ae..b3e7817 100644
--- a/src/index.html
+++ b/src/index.html
@@ -3,7 +3,7 @@
 
 <head>
   <meta charset="utf-8">
-  <title>ngAlain</title>
+  <title>������������������������</title>
   <base href="/">
   <meta name="viewport" content="width=device-width, initial-scale=1">
   <meta http-equiv="x-ua-compatible" content="ie=edge">

--
Gitblit v1.8.0