From ef18cca293a817e22908c9adf77c3cbe8a640d8a Mon Sep 17 00:00:00 2001
From: fengxiang <110431245@qq.com>
Date: Fri, 13 Jul 2018 10:04:24 +0800
Subject: [PATCH] 提交修改

---
 src/app/delon.module.ts                                     |   14 
 src/app/routes/home-page/home-page/home-page.component.ts   |  105 ++++++
 src/environments/environment.hmr.ts                         |    2 
 _mock/index.ts                                              |    4 
 src/app/routes/home-page/home-page-routing.module.ts        |   11 
 src/app/routes/home-page/home-page/home-page.component.less |    0 
 src/app/routes/home-page/home-page.module.ts                |   11 
 _mock/_profile.ts                                           |  148 ++++++++
 src/app/routes/reports/query/query.component.ts             |    2 
 yarn.lock                                                   |    4 
 src/environments/environment.prod.ts                        |    2 
 _mock/_rule.ts                                              |   74 ++++
 src/app/routes/routes-routing.module.ts                     |    6 
 package.json                                                |    1 
 src/environments/environment.ts                             |    2 
 _mock/README.md                                             |    1 
 _mock/_api.ts                                               |  271 +++++++++++++++
 _mock/_chart.ts                                             |  214 ++++++++++++
 src/app/routes/home-page/home-page/home-page.component.html |  109 ++++++
 19 files changed, 969 insertions(+), 12 deletions(-)

diff --git a/_mock/README.md b/_mock/README.md
new file mode 100644
index 0000000..ac06b06
--- /dev/null
+++ b/_mock/README.md
@@ -0,0 +1 @@
+[Document](http://ng-alain.com/docs/mock)
diff --git a/_mock/_api.ts b/_mock/_api.ts
new file mode 100644
index 0000000..04b577c
--- /dev/null
+++ b/_mock/_api.ts
@@ -0,0 +1,271 @@
+import { MockRequest } from '@delon/mock';
+// region: mock data
+
+const titles = [
+    'Alipay',
+    'Angular',
+    'Ant Design',
+    'Ant Design Pro',
+    'Bootstrap',
+    'React',
+    'Vue',
+    'Webpack'
+];
+
+const avatars = [
+    'https://gw.alipayobjects.com/zos/rmsportal/WdGqmHpayyMjiEhcKoVE.png', // Alipay
+    'https://gw.alipayobjects.com/zos/rmsportal/zOsKZmFRdUtvpqCImOVY.png', // Angular
+    'https://gw.alipayobjects.com/zos/rmsportal/dURIMkkrRFpPgTuzkwnB.png', // Ant Design
+    'https://gw.alipayobjects.com/zos/rmsportal/sfjbOqnsXXJgNCjCzDBL.png', // Ant Design Pro
+    'https://gw.alipayobjects.com/zos/rmsportal/siCrBXXhmvTQGWPNLBow.png', // Bootstrap
+    'https://gw.alipayobjects.com/zos/rmsportal/kZzEzemZyKLKFsojXItE.png', // React
+    'https://gw.alipayobjects.com/zos/rmsportal/ComBAopevLwENQdKWiIn.png', // Vue
+    'https://gw.alipayobjects.com/zos/rmsportal/nxkuOJlFJuAUhzlMTCEe.png'  // Webpack
+];
+const covers = [
+    'https://gw.alipayobjects.com/zos/rmsportal/HrxcVbrKnCJOZvtzSqjN.png',
+    'https://gw.alipayobjects.com/zos/rmsportal/alaPpKWajEbIYEUvvVNf.png',
+    'https://gw.alipayobjects.com/zos/rmsportal/RLwlKSYGSXGHuWSojyvp.png',
+    'https://gw.alipayobjects.com/zos/rmsportal/gLaIAoVWTtLbBWZNYEMg.png'
+];
+const desc = [
+    '������������������������������ ���������������������������������������',
+    '���������������������������������������������������������������������������',
+    '������������������������������������������������������',
+    '������������������������������������������������������������������',
+    '���������������������������������������������������������������������'
+];
+
+const user = [
+    '������',
+    'cipchk',
+    '���������',
+    '���������',
+    '���������',
+    '���������',
+    '���������',
+    '���������',
+    '������',
+    '������',
+    '���������',
+    '������'
+];
+
+// endregion
+
+function getFakeList(count: number = 20): any[] {
+    const list = [];
+    for (let i = 0; i < count; i += 1) {
+        list.push({
+        id: `fake-list-${i}`,
+        owner: user[i % 10],
+        title: titles[i % 8],
+        avatar: avatars[i % 8],
+        cover: parseInt((i / 4).toString(), 10) % 2 === 0 ? covers[i % 4] : covers[3 - (i % 4)],
+        status: ['active', 'exception', 'normal'][i % 3],
+        percent: Math.ceil(Math.random() * 50) + 50,
+        logo: avatars[i % 8],
+        href: 'https://ant.design',
+        updatedAt: new Date(new Date().getTime() - (1000 * 60 * 60 * 2 * i)),
+        createdAt: new Date(new Date().getTime() - (1000 * 60 * 60 * 2 * i)),
+        subDescription: desc[i % 5],
+        description: '���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������',
+        activeUser: Math.ceil(Math.random() * 100000) + 100000,
+        newUser: Math.ceil(Math.random() * 1000) + 1000,
+        star: Math.ceil(Math.random() * 100) + 100,
+        like: Math.ceil(Math.random() * 100) + 100,
+        message: Math.ceil(Math.random() * 10) + 10,
+        content: '��������������������������������������� ant.design��������������������������������������������������������������������������������������������������������������������������������������� ant.design���������������������������������������������������������������������������������������������������������������',
+        members: [
+                {
+                    avatar: 'https://gw.alipayobjects.com/zos/rmsportal/ZiESqWwCXBRQoaPONSJe.png',
+                    name: '���������',
+                },
+                {
+                    avatar: 'https://gw.alipayobjects.com/zos/rmsportal/tBOxZPlITHqwlGjsJWaF.png',
+                    name: '���������',
+                },
+                {
+                    avatar: 'https://gw.alipayobjects.com/zos/rmsportal/sBxjgqiuHMGRkIjqlQCd.png',
+                    name: '���������',
+                },
+            ]
+        });
+    }
+
+    return list;
+}
+
+function getNotice(): any[] {
+    return [
+        {
+          id: 'xxx1',
+          title: titles[0],
+          logo: avatars[0],
+          description: '������������������������������ ���������������������������������������',
+          updatedAt: new Date(),
+          member: '���������������',
+          href: '',
+          memberLink: '',
+        },
+        {
+          id: 'xxx2',
+          title: titles[1],
+          logo: avatars[1],
+          description: '���������������������������������������������������������������������������',
+          updatedAt: new Date('2017-07-24'),
+          member: '���������������������',
+          href: '',
+          memberLink: '',
+        },
+        {
+          id: 'xxx3',
+          title: titles[2],
+          logo: avatars[2],
+          description: '������������������������������������������������������������������',
+          updatedAt: new Date(),
+          member: '���������������',
+          href: '',
+          memberLink: '',
+        },
+        {
+          id: 'xxx4',
+          title: titles[3],
+          logo: avatars[3],
+          description: '���������������������������������������������������������������������',
+          updatedAt: new Date('2017-07-23'),
+          member: '���������������',
+          href: '',
+          memberLink: '',
+        },
+        {
+          id: 'xxx5',
+          title: titles[4],
+          logo: avatars[4],
+          description: '������������',
+          updatedAt: new Date('2017-07-23'),
+          member: '���������������������',
+          href: '',
+          memberLink: '',
+        },
+        {
+          id: 'xxx6',
+          title: titles[5],
+          logo: avatars[5],
+          description: '������������������������������������������������������',
+          updatedAt: new Date('2017-07-23'),
+          member: '���������������������',
+          href: '',
+          memberLink: '',
+        },
+      ];
+}
+
+function getActivities(): any[] {
+    return  [
+        {
+          id: 'trend-1',
+          updatedAt: new Date(),
+          user: {
+            name: '���������',
+            avatar: avatars[0],
+          },
+          group: {
+            name: '���������������������',
+            link: 'http://github.com/',
+          },
+          project: {
+            name: '������������',
+            link: 'http://github.com/',
+          },
+          template: '��� @{group} ������������ @{project}',
+        },
+        {
+          id: 'trend-2',
+          updatedAt: new Date(),
+          user: {
+            name: '���������',
+            avatar: avatars[1],
+          },
+          group: {
+            name: '���������������������',
+            link: 'http://github.com/',
+          },
+          project: {
+            name: '������������',
+            link: 'http://github.com/',
+          },
+          template: '��� @{group} ������������ @{project}',
+        },
+        {
+          id: 'trend-3',
+          updatedAt: new Date(),
+          user: {
+            name: '���������',
+            avatar: avatars[2],
+          },
+          group: {
+            name: '���������������',
+            link: 'http://github.com/',
+          },
+          project: {
+            name: '������������',
+            link: 'http://github.com/',
+          },
+          template: '��� @{group} ������������ @{project}',
+        },
+        {
+          id: 'trend-4',
+          updatedAt: new Date(),
+          user: {
+            name: '���������',
+            avatar: avatars[3],
+          },
+          project: {
+            name: '5 ���������������',
+            link: 'http://github.com/',
+          },
+          template: '��� @{project} ������������������������',
+        },
+        {
+          id: 'trend-5',
+          updatedAt: new Date(),
+          user: {
+            name: '���������',
+            avatar: avatars[4],
+          },
+          project: {
+            name: '������������',
+            link: 'http://github.com/',
+          },
+          comment: {
+            name: '������',
+            link: 'http://github.com/',
+          },
+          template: '��� @{project} ��������� @{comment}',
+        },
+        {
+          id: 'trend-6',
+          updatedAt: new Date(),
+          user: {
+            name: '������',
+            avatar: avatars[5],
+          },
+          group: {
+            name: '���������������',
+            link: 'http://github.com/',
+          },
+          project: {
+            name: '������������',
+            link: 'http://github.com/',
+          },
+          template: '��� @{group} ������������ @{project}',
+        },
+      ];
+}
+
+export const APIS = {
+    '/api/list': (req: MockRequest) => getFakeList(req.queryString.count),
+    '/api/notice': () => getNotice(),
+    '/api/activities': () => getActivities()
+};
diff --git a/_mock/_chart.ts b/_mock/_chart.ts
new file mode 100644
index 0000000..974bcbc
--- /dev/null
+++ b/_mock/_chart.ts
@@ -0,0 +1,214 @@
+// tslint:disable
+import * as Mock from 'mockjs';
+import * as moment from "moment";
+
+// region: mock data
+
+const visitData = [];
+const beginDay = new Date().getTime();
+
+const fakeY = [7, 5, 4, 2, 4, 7, 5, 6, 5, 9, 6, 3, 1, 5, 3, 6, 5];
+for (let i = 0; i < fakeY.length; i += 1) {
+	visitData.push({
+		x: moment(new Date(beginDay + 1000 * 60 * 60 * 24 * i)).format(
+			"YYYY-MM-DD"
+		),
+		y: fakeY[i]
+	});
+}
+
+const visitData2 = [];
+const fakeY2 = [1, 6, 4, 8, 3, 7, 2];
+for (let i = 0; i < fakeY2.length; i += 1) {
+	visitData2.push({
+		x: moment(new Date(beginDay + 1000 * 60 * 60 * 24 * i)).format(
+			"YYYY-MM-DD"
+		),
+		y: fakeY2[i]
+	});
+}
+
+const salesData = [];
+// for (let i = 0; i < 12; i += 1) {
+// 	salesData.push({
+// 		x: `${i + 1}���`,
+// 		y: Math.floor(Math.random() * 1000) + 200
+// 	});
+// }
+for (let i = 0; i < 24; i += 1) {
+	salesData.push({
+		x: `${i}���`,
+		y: Math.floor(Math.random() * 1000) + 200
+	});
+}
+const searchData = [];
+for (let i = 0; i < 50; i += 1) {
+	searchData.push({
+		index: i + 1,
+		keyword: `���������������-${i}`,
+		count: Math.floor(Math.random() * 1000),
+		range: Math.floor(Math.random() * 100),
+		status: Math.floor((Math.random() * 10) % 2)
+	});
+}
+const salesTypeData = [
+	{
+		x: "������������",
+		y: 4544
+	},
+	{
+		x: "������������",
+		y: 3321
+	},
+	{
+		x: "������������",
+		y: 3113
+	},
+	{
+		x: "������������",
+		y: 2341
+	},
+	{
+		x: "������������",
+		y: 1231
+	},
+	{
+		x: "������",
+		y: 1231
+	}
+];
+
+const salesTypeDataOnline = [
+	{
+		x: "������������",
+		y: 244
+	},
+	{
+		x: "������������",
+		y: 321
+	},
+	{
+		x: "������������",
+		y: 311
+	},
+	{
+		x: "������������",
+		y: 41
+	},
+	{
+		x: "������������",
+		y: 121
+	},
+	{
+		x: '������',
+		y: 111
+	}
+];
+
+const salesTypeDataOffline = [
+	{
+		x: '������������',
+		y: 99
+	},
+	{
+		x: '������������',
+		y: 188
+	},
+	{
+		x: '������������',
+		y: 344
+	},
+	{
+		x: '������������',
+		y: 255
+	},
+	{
+		x: '������',
+		y: 65
+	}
+];
+
+const offlineData = [];
+for (let i = 0; i < 10; i += 1) {
+	offlineData.push({
+		name: `������${i}`,
+		cvr: Math.ceil(Math.random() * 9) / 10
+	});
+}
+const offlineChartData = [];
+for (let i = 0; i < 20; i += 1) {
+	offlineChartData.push({
+		x: new Date().getTime() + 1000 * 60 * 30 * i,
+		y1: Math.floor(Math.random() * 100) + 10,
+		y2: Math.floor(Math.random() * 100) + 10
+	});
+}
+
+const radarOriginData = [
+	{
+		name: '������',
+		ref: 10,
+		koubei: 8,
+		output: 4,
+		contribute: 5,
+		hot: 7
+	},
+	{
+		name: '������',
+		ref: 3,
+		koubei: 9,
+		output: 6,
+		contribute: 3,
+		hot: 1
+	},
+	{
+		name: '������',
+		ref: 4,
+		koubei: 1,
+		output: 6,
+		contribute: 5,
+		hot: 7
+	}
+];
+
+//
+const radarData = [];
+const radarTitleMap = {
+	ref: '������',
+	koubei: '������',
+	output: '������',
+	contribute: '������',
+	hot: '������'
+};
+radarOriginData.forEach(item => {
+	Object.keys(item).forEach(key => {
+		if (key !== 'name') {
+			radarData.push({
+				name: item.name,
+				label: radarTitleMap[key],
+				value: item[key]
+			});
+		}
+	});
+});
+
+// endregion
+
+export const CHARTS = {
+    '/chart': Object.assign({}, {
+        visitData,
+        visitData2,
+        salesData,
+        searchData,
+        offlineData,
+        offlineChartData,
+        salesTypeData,
+        salesTypeDataOnline,
+        salesTypeDataOffline,
+        radarData
+    }),
+    '/chart/visit': Object.assign([], visitData),
+    '/chart/tags': Mock.mock({
+        'list|100': [{ name: '@city', 'value|1-100': 150, 'type|0-2': 1 }]
+    })
+};
diff --git a/_mock/_profile.ts b/_mock/_profile.ts
new file mode 100644
index 0000000..729a371
--- /dev/null
+++ b/_mock/_profile.ts
@@ -0,0 +1,148 @@
+const basicGoods = [
+    {
+        id: '1234561',
+        name: '��������� 550ml',
+        barcode: '12421432143214321',
+        price: '2.00',
+        num: '1',
+        amount: '2.00',
+    },
+    {
+        id: '1234562',
+        name: '������ 300ml',
+        barcode: '12421432143214322',
+        price: '3.00',
+        num: '2',
+        amount: '6.00',
+    },
+    {
+        id: '1234563',
+        name: '���������������',
+        barcode: '12421432143214323',
+        price: '7.00',
+        num: '4',
+        amount: '28.00',
+    },
+    {
+        id: '1234564',
+        name: '���������������������',
+        barcode: '12421432143214324',
+        price: '8.50',
+        num: '3',
+        amount: '25.50',
+    },
+];
+
+const basicProgress = [
+    {
+        key: '1',
+        time: '2017-10-01 14:10',
+        rate: '������������',
+        status: 'processing',
+        operator: '��������� ID1234',
+        cost: '5mins',
+    },
+    {
+        key: '2',
+        time: '2017-10-01 14:05',
+        rate: '���������������',
+        status: 'success',
+        operator: '��������� ID1234',
+        cost: '1h',
+    },
+    {
+        key: '3',
+        time: '2017-10-01 13:05',
+        rate: '���������������',
+        status: 'success',
+        operator: '��������� ID1234',
+        cost: '5mins',
+    },
+    {
+        key: '4',
+        time: '2017-10-01 13:00',
+        rate: '������������������',
+        status: 'success',
+        operator: '������',
+        cost: '1h',
+    },
+    {
+        key: '5',
+        time: '2017-10-01 12:00',
+        rate: '������������������',
+        status: 'success',
+        operator: '������',
+        cost: '5mins',
+    },
+];
+
+const advancedOperation1 = [
+    {
+        key: 'op1',
+        type: '������������������',
+        name: '���������',
+        status: 'agree',
+        updatedAt: '2017-10-03  19:23:12',
+        memo: '-',
+    },
+    {
+        key: 'op2',
+        type: '������������',
+        name: '���������',
+        status: 'reject',
+        updatedAt: '2017-10-03  19:23:12',
+        memo: '���������������',
+    },
+    {
+        key: 'op3',
+        type: '������������',
+        name: '���������',
+        status: 'agree',
+        updatedAt: '2017-10-03  19:23:12',
+        memo: '-',
+    },
+    {
+        key: 'op4',
+        type: '������������',
+        name: '���������',
+        status: 'agree',
+        updatedAt: '2017-10-03  19:23:12',
+        memo: '������',
+    },
+    {
+        key: 'op5',
+        type: '������������',
+        name: '���������',
+        status: 'agree',
+        updatedAt: '2017-10-03  19:23:12',
+        memo: '-',
+    },
+];
+
+const advancedOperation2 = [
+    {
+        key: 'op1',
+        type: '������������������',
+        name: '���������',
+        status: 'agree',
+        updatedAt: '2017-10-03  19:23:12',
+        memo: '-',
+    },
+];
+
+const advancedOperation3 = [
+    {
+        key: 'op1',
+        type: '������������',
+        name: '���������',
+        status: 'agree',
+        updatedAt: '2017-10-03  19:23:12',
+        memo: '-',
+    },
+];
+
+export const PROFILES = {
+    'GET /profile/progress': basicProgress,
+    'GET /profile/goods': basicGoods,
+    'GET /profile/advanced': { advancedOperation1, advancedOperation2, advancedOperation3 }
+};
diff --git a/_mock/_rule.ts b/_mock/_rule.ts
new file mode 100644
index 0000000..bd555c5
--- /dev/null
+++ b/_mock/_rule.ts
@@ -0,0 +1,74 @@
+import { HttpRequest } from '@angular/common/http';
+import { MockRequest } from '@delon/mock';
+
+const list = [];
+
+for (let i = 0; i < 46; i += 1) {
+    list.push({
+        key: i,
+        disabled: ((i % 6) === 0),
+        href: 'https://ant.design',
+        avatar: ['https://gw.alipayobjects.com/zos/rmsportal/eeHMaZBwmTvLdIwMfBpg.png', 'https://gw.alipayobjects.com/zos/rmsportal/udxAbMEhpwthVVcjLXik.png'][i % 2],
+        no: `TradeCode ${i}`,
+        title: `������������������ ${i}`,
+        owner: '���������',
+        description: '������������������',
+        callNo: Math.floor(Math.random() * 1000),
+        status: Math.floor(Math.random() * 10) % 4,
+        updatedAt: new Date(`2017-07-${Math.floor(i / 2) + 1}`),
+        createdAt: new Date(`2017-07-${Math.floor(i / 2) + 1}`),
+        progress: Math.ceil(Math.random() * 100),
+    });
+}
+
+function getRule(params: any) {
+    let ret = [...list];
+    if (params.sorter) {
+        const s = params.sorter.split('_');
+        ret = ret.sort((prev, next) => {
+            if (s[1] === 'descend') {
+                return next[s[0]] - prev[s[0]];
+            }
+            return prev[s[0]] - next[s[0]];
+        });
+    }
+    if (params.statusList && params.statusList.length > 0) {
+        ret = ret.filter(data => params.statusList.indexOf(data.status) > -1);
+    }
+    if (params.no) {
+        ret = ret.filter(data => data.no.indexOf(params.no) > -1);
+    }
+    return ret;
+}
+
+function removeRule(nos: string): boolean {
+    nos.split(',').forEach(no => {
+        const idx = list.findIndex(w => w.no === no);
+        if (idx !== -1) list.splice(idx, 1);
+    });
+    return true;
+}
+
+function saveRule(description: string) {
+    const i = Math.ceil(Math.random() * 10000);
+    list.unshift({
+      key: i,
+      href: 'https://ant.design',
+      avatar: ['https://gw.alipayobjects.com/zos/rmsportal/eeHMaZBwmTvLdIwMfBpg.png', 'https://gw.alipayobjects.com/zos/rmsportal/udxAbMEhpwthVVcjLXik.png'][i % 2],
+      no: `TradeCode ${i}`,
+      title: `������������������ ${i}`,
+      owner: '���������',
+      description,
+      callNo: Math.floor(Math.random() * 1000),
+      status: Math.floor(Math.random() * 10) % 2,
+      updatedAt: new Date(),
+      createdAt: new Date(),
+      progress: Math.ceil(Math.random() * 100),
+    });
+}
+
+export const RULES = {
+    '/rule': (req: MockRequest) => getRule(req.queryString),
+    'DELETE /rule': (req: MockRequest) => removeRule(req.queryString.nos),
+    'POST /rule': (req: MockRequest) => saveRule(req.body.description)
+};
diff --git a/_mock/index.ts b/_mock/index.ts
new file mode 100644
index 0000000..34345bf
--- /dev/null
+++ b/_mock/index.ts
@@ -0,0 +1,4 @@
+export * from './_profile';
+export * from './_rule';
+export * from './_api';
+export * from './_chart';
diff --git a/package.json b/package.json
index 0ca5c08..a003894 100644
--- a/package.json
+++ b/package.json
@@ -48,6 +48,7 @@
     "@delon/auth": "0.6.6",
     "@delon/cache": "0.6.6",
     "@delon/theme": "0.6.6",
+    "@delon/mock": "^0.6.6",
     "@ngx-translate/core": "^9.0.0",
     "@ngx-translate/http-loader": "^2.0.0",
     "@types/jquery": "^3.3.0",
diff --git a/src/app/delon.module.ts b/src/app/delon.module.ts
index 0305521..b51cc22 100644
--- a/src/app/delon.module.ts
+++ b/src/app/delon.module.ts
@@ -175,11 +175,11 @@
 import { AlainACLModule } from '@delon/acl';
 import { DelonCacheModule } from '@delon/cache';
 // mock
-// import { DelonMockModule } from '@delon/mock';
-// import * as MOCKDATA from '../../_mock';
-// import { environment } from '@env/environment';
-// const MOCKMODULE = !environment.production || environment.chore === true ?
-//                     [ DelonMockModule.forRoot({ data: MOCKDATA }) ] : [];
+import { DelonMockModule } from '@delon/mock';
+import * as MOCKDATA from '../../_mock';
+import { environment } from '@env/environment';
+const MOCKMODULE = !environment.production || environment.chore === true ?
+                    [ DelonMockModule.forRoot({ data: MOCKDATA }) ] : [];
 
 // region: global config functions
 
@@ -204,7 +204,7 @@
         AdReuseTabModule.forRoot(), AdFullContentModule.forRoot(), AdXlsxModule.forRoot(), AdZipModule.forRoot(),
         // auth
         AlainAuthModule.forRoot({
-            // ignores: [ `\\/login`, `assets\\/` ],
+            ignores: [ `\\/login`, `assets\\/` ],
             token_send_key : 'X-Authorization',
             token_send_template : 'Bearer ${token}',
             token_send_place : 'header',
@@ -216,7 +216,7 @@
         // cache
         DelonCacheModule.forRoot(),
         // mock
-        // ...MOCKMODULE
+        ...MOCKMODULE
     ]
 })
 export class DelonModule {
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..5601a76
--- /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..a3adbbb
--- /dev/null
+++ b/src/app/routes/home-page/home-page.module.ts
@@ -0,0 +1,11 @@
+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..b3a8e0b
--- /dev/null
+++ b/src/app/routes/home-page/home-page/home-page.component.html
@@ -0,0 +1,109 @@
+<div class="content__title">
+    <h1>������������������</h1>
+</div>
+<div nz-row [nzGutter]="24" class="pt-lg">
+    <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="24" class="p-md text-white" style="height: 90px;text-align: center;">
+                <div style="height: 40px;" class="h2 mt0">{{ cardData.api }}</div>
+                <p class="text-nowrap mb0">AQI</p>
+            </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="24" class="p-md text-white" style="height: 90px;text-align: center;">
+                <div style="height: 40px;" class="h2 mt0">{{ cardData.temperature }} ���</div>
+                <p class="text-nowrap mb0">������</p>
+            </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="24" class="p-md text-white" style="height: 90px;text-align: center;">
+                <div style="height: 40px;" class="h2 mt0">{{ cardData.windDirection }}</div>
+                <p class="text-nowrap mb0">������</p>
+            </div>
+        </div>
+    </div>
+    <div nz-col nzXs="24" nzSm="12" nzMd="6" class="mb-md">
+        <div nz-row nzType="flex" nzAlign="middle" class="bg-pink rounded-md">
+            <div nz-col nzSpan="24" class="p-md text-white" style="height: 90px;text-align: center;">
+                <div style="height: 40px;" class="h2 mt0">{{ cardData.pm25 }} mg/m��</div>
+                <p class="text-nowrap">PM2.5</p>
+            </div>
+        </div>
+    </div>
+</div>
+<div nz-row [nzGutter]="24" class="pt-lg">
+    <div nz-col nzXs="24" nzSm="12" nzMd="12" nzLg="8">
+        <chart-card [title]="'API������������'" total="216���" contentHeight="46px">
+            <mini-progress height="46" percent="60" target="60" strokeWidth="8" color="#13C2C2"></mini-progress>
+        </chart-card>
+    </div>
+    <div nz-col nzXs="24" nzSm="12" nzMd="12" nzLg="8">
+        <chart-card [title]="'PM2.5������������'" total="158���" contentHeight="46px">
+            <mini-progress height="46" percent="50" target="50" strokeWidth="8" color="#108ee9"></mini-progress>
+        </chart-card>
+    </div>
+    <div nz-col nzXs="24" nzSm="12" nzMd="12" nzLg="8">
+        <chart-card [title]="'PM10������������'" total="112���" contentHeight="46px">
+            <mini-progress height="46" percent="40" target="40" strokeWidth="8" color="#00a854"></mini-progress>
+        </chart-card>
+    </div>
+</div>
+<div nz-row [nzGutter]="24" class="pt-lg">
+    <div nz-col nzXs="24" nzMd="24">
+        <nz-card [nzBordered]="false">
+            <ng-template #title>
+                AQI��������������� &nbsp;
+                <nz-dropdown>
+                    <a class="ant-dropdown-link" nz-dropdown>
+                     PM2.5 <i class="anticon anticon-down"></i>
+                    </a>
+                    <ul nz-menu>
+                      <li nz-menu-item>
+                        PM10
+                      </li>
+                      <li nz-menu-item>
+                        ������������
+                      </li>
+                      <li nz-menu-item>
+                        ������������
+                      </li>
+                      <li nz-menu-item>
+                        ������������
+                      </li>
+                      <li nz-menu-item>
+                        ������
+                      </li>
+                    </ul>
+                  </nz-dropdown>
+            </ng-template>
+            <bar height="275" [data]="salesData"></bar>
+        </nz-card>
+    </div>
+</div>
+<div nz-row [nzGutter]="24" class="pt-lg">
+    <div nz-col nzXs="24" nzMd="24">
+        <nz-card [nzBordered]="false">
+            <ng-template #title>
+               ������������GIS������
+               <small class="text-sm font-weight-normal">������: 128</small>
+            </ng-template>
+            <iframe style="width: 100%; height: 500px;" target="_top" src="http://monitor-api2.7drlb.com/screen/map-page?areaCode=320583&accountId=1" frameborder="0"></iframe>
+        </nz-card>
+    </div>
+  </div>
+  <div nz-row [nzGutter]="24" class="pt-lg">
+      <div nz-col nzXs="24" nzMd="12">
+          <nz-card [nzBordered]="false">
+              <div echarts style="margin-top: 12px;" [options]="chartOption" [loading]="aqiChartLoading" class="line-chart" (chartInit)="onApiChartInit($event)"></div>
+          </nz-card>
+      </div>
+      <div nz-col nzXs="24" nzMd="12">
+          <nz-card [nzBordered]="false">
+            22222222222
+          </nz-card>
+      </div>
+  </div>
diff --git a/src/app/routes/home-page/home-page/home-page.component.less b/src/app/routes/home-page/home-page/home-page.component.less
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/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..0bb0017
--- /dev/null
+++ b/src/app/routes/home-page/home-page/home-page.component.ts
@@ -0,0 +1,105 @@
+import { Component, OnInit } from "@angular/core";
+import { _HttpClient } from "@delon/theme";
+import { zip } from 'rxjs/observable/zip';
+
+@Component({
+  selector: "app-home-page",
+  templateUrl: "./home-page.component.html",
+  styleUrls: ["./home-page.component.less"]
+})
+export class HomePageComponent implements OnInit {
+  public cardData: {'api'?:number,'temperature'?:number,'windDirection'?: string,'pm25'?: number} = {};
+
+  constructor(
+    private http:_HttpClient,
+  ) {
+  }
+  salesData: any[] =  [ ];
+  ngOnInit() {
+    zip(
+       this.http.get<any>('http://sapi.7drlb.com/api/mj?cityID=1102&apiKey=condition'),
+       this.http.get<any>('http://sapi.7drlb.com/api/mj?cityID=1102&apiKey=aqi')
+
+     ).subscribe(
+        ([conRes,aqiRes]) => {
+          if( conRes.code == 0 && aqiRes.code == 0 ) {
+            this.cardData.windDirection = conRes.data.condition.windDir;
+            this.cardData.temperature = conRes.data.condition.temp;
+            this.cardData.api = aqiRes.data.aqi.value;
+            this.cardData.pm25 = aqiRes.data.aqi.pm25;
+          }
+        }
+     );
+     this.http.get('/chart').subscribe((res: any) => {
+      // this.webSite = res.visitData.slice(0, 10);
+      this.salesData = res.salesData;
+      // this.offlineChartData = res.offlineChartData;
+  });
+  }
+  public aqiChartOption
+  public aqiEchartsIntance;
+  public aqiChartLoading = false;
+  public onApiChartInit(e): void {
+        this.aqiEchartsIntance = e;
+  }
+  private reloadChart(): void {
+    // const  timeList = this.grid.columns.map(item => item.text);  
+     if (!!this.aqiEchartsIntance) {
+         this.aqiChartOption = null;
+         this.aqiEchartsIntance.clear();
+     }
+    //  let series = null;
+    //  if ( this.chartSelectedIndex < this.grid.data.length ) {
+    //     series = [{type: 'line', data: this.grid.data[this.chartSelectedIndex]}];
+    //  }
+     
+    //  this.initOpton(chartOption ,{ xAxis : [{data : []}]});
+    //  this.aqiChartOption = true;
+    this.initOpton(this.aqiChartOption ,{ xAxis : [{data : []}]});
+  }
+  private initOpton(chartOption,opt: {[key: string]: object}) {
+     const defaultOption = {
+        title: {
+            left: 'center'
+        },
+        tooltip : {
+            trigger: 'axis',
+            axisPointer: {
+                type: 'cross',
+                label: {
+                    backgroundColor: '#6a7985'
+                }
+            }
+        },
+        legend: {
+            data: []
+        },
+        toolbox: {
+            feature: {
+                saveAsImage: {}
+            }
+        },
+        grid: {
+            left: '3%',
+            right: '4%',
+            bottom: '3%',
+            containLabel: true
+        },
+        xAxis : [
+            {
+                type : 'category',
+                boundaryGap : false
+            }
+        ],
+        yAxis : [
+            {
+                type : 'value'
+            }
+        ],
+        series : [
+        ]
+    };
+    $.extend(true, defaultOption, opt);
+    chartOption = defaultOption;
+  }
+}
diff --git a/src/app/routes/reports/query/query.component.ts b/src/app/routes/reports/query/query.component.ts
index 6a3e980..923a8c7 100644
--- a/src/app/routes/reports/query/query.component.ts
+++ b/src/app/routes/reports/query/query.component.ts
@@ -625,7 +625,7 @@
         //  if ( this.chartSelectedIndex < this.grid.data.length ) {
         //     series = [{type: 'line', data: this.grid.data[this.chartSelectedIndex]}];
         //  }
-         
+         debugger;
          this.initOpton({ xAxis : [{data : timeList}]});
          this.chartLoading = true;
       }
diff --git a/src/app/routes/routes-routing.module.ts b/src/app/routes/routes-routing.module.ts
index f4719f0..ae052a2 100644
--- a/src/app/routes/routes-routing.module.ts
+++ b/src/app/routes/routes-routing.module.ts
@@ -19,7 +19,11 @@
         path: '',
         component: LayoutDefaultComponent,
         children: [
-            { path: '', redirectTo: 'dashboard/workplace', pathMatch: 'full' },
+            { path: "", redirectTo: "home-page", pathMatch: "full" },
+            {
+              path: "home-page",
+              loadChildren: "./home-page/home-page.module#HomePageModule"
+            },
             { path: 'dashboard', redirectTo: 'dashboard/v1', pathMatch: 'full' },
             { path: 'dashboard/v1', component: DashboardV1Component, data: { translate: 'dashboard_v1' } },
             { path: 'dashboard/analysis', component: DashboardAnalysisComponent, data: { translate: 'dashboard_analysis' } },
diff --git a/src/environments/environment.hmr.ts b/src/environments/environment.hmr.ts
index cdf064e..23a52db 100644
--- a/src/environments/environment.hmr.ts
+++ b/src/environments/environment.hmr.ts
@@ -4,5 +4,5 @@
     production: false,
     hmr: true,
     useHash: true,
-    SERVER_BASH_URL: `http://47.96.171.62:8080/screen_api_v2/`
+    SERVER_BASH_URL: `http://monitor-api2.7drlb.com/`
 };
diff --git a/src/environments/environment.prod.ts b/src/environments/environment.prod.ts
index 7e3be56..a43819d 100644
--- a/src/environments/environment.prod.ts
+++ b/src/environments/environment.prod.ts
@@ -4,5 +4,5 @@
     production: true,
     hmr: false,
     useHash: true,
-    SERVER_BASH_URL:`http://47.96.15.25:8080/screen_api_v2/`
+    SERVER_BASH_URL: `http://monitor-api2.7drlb.com/`
 };
diff --git a/src/environments/environment.ts b/src/environments/environment.ts
index 6163163..0fc0b3c 100644
--- a/src/environments/environment.ts
+++ b/src/environments/environment.ts
@@ -9,5 +9,5 @@
     production: false,
     hmr: false,
     useHash: true,
-    SERVER_BASH_URL: `http://47.96.171.62:8080/screen_api_v2/`
+    SERVER_BASH_URL: `http://127.0.0.1:8080/`
 };
diff --git a/yarn.lock b/yarn.lock
index bd91a1a..839675a 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -240,6 +240,10 @@
   version "0.6.6"
   resolved "https://registry.yarnpkg.com/@delon/cli/-/cli-0.6.6.tgz#0e17ac163c12a2f6c73ac32f5bf919624b31b33f"
 
+"@delon/mock@^0.6.6":
+  version "0.6.9"
+  resolved "http://registry.npm.taobao.org/@delon/mock/download/@delon/mock-0.6.9.tgz#424de74de5d95c9dc9a3492512eae218534e0b4f"
+
 "@delon/theme@0.6.6":
   version "0.6.6"
   resolved "https://registry.yarnpkg.com/@delon/theme/-/theme-0.6.6.tgz#de3439d709bdc3bac312f3f21b4a09d9ccc25467"

--
Gitblit v1.8.0