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��������������� + <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