4c9cd5da29ffbd2788c47130416fc8780b941103..3bbe9a88d9ab747ee2e4f01128547efd1fc20038
2018-01-29 fengxiang
编译精简完成
3bbe9a diff | tree
2018-01-29 fengxiang
去除mock前保存
4a4c7f diff | tree
6 files deleted
3 files added
26 files modified
1070 ■■■■■ changed files
.angular-cli.json 2 ●●● patch | view | raw | blame | history
_mock/README.md 1 ●●●● patch | view | raw | blame | history
_mock/_api.ts 271 ●●●●● patch | view | raw | blame | history
_mock/_chart.ts 208 ●●●●● patch | view | raw | blame | history
_mock/_profile.ts 148 ●●●●● patch | view | raw | blame | history
_mock/_rule.ts 74 ●●●●● patch | view | raw | blame | history
_mock/index.ts 4 ●●●● patch | view | raw | blame | history
package.json 1 ●●●● patch | view | raw | blame | history
src/app/app.module.ts 3 ●●●● patch | view | raw | blame | history
src/app/delon.module.ts 10 ●●●● patch | view | raw | blame | history
src/app/layout/passport/passport.component.html 2 ●●● patch | view | raw | blame | history
src/app/routes/devices/basic-info/basic-info.component.html 2 ●●● patch | view | raw | blame | history
src/app/routes/devices/basic-info/device-edit/device-edit.component.ts 8 ●●●● patch | view | raw | blame | history
src/app/routes/devices/monitor-point/monitor-point.component.html 2 ●●● patch | view | raw | blame | history
src/app/routes/devices/version/version-sensor-config/version-sensor-config.component.html 2 ●●● patch | view | raw | blame | history
src/app/routes/devices/version/version.component.html 2 ●●● patch | view | raw | blame | history
src/app/routes/map/coordinates-picker/coordinates-picker.component.html 2 ●●● patch | view | raw | blame | history
src/app/routes/map/coordinates-picker/coordinates-picker.component.ts 2 ●●●●● patch | view | raw | blame | history
src/app/routes/passport/login/login.component.html 54 ●●●●● patch | view | raw | blame | history
src/app/routes/passport/login/login.component.less 75 ●●●●● patch | view | raw | blame | history
src/app/routes/passport/login/login.component.ts 141 ●●●●● patch | view | raw | blame | history
src/app/routes/routes-routing.module.ts 8 ●●●●● patch | view | raw | blame | history
src/app/routes/routes.module.ts 4 ●●● patch | view | raw | blame | history
src/app/routes/sensors/basic-info/basic-info.component.html 4 ●●●● patch | view | raw | blame | history
src/app/routes/systems/account/account-edit/account-edit.component.html 2 ●●● patch | view | raw | blame | history
src/app/routes/systems/account/account.component.ts 2 ●●● patch | view | raw | blame | history
src/app/routes/systems/organization/organization-config/organization-config.component.ts 6 ●●●● patch | view | raw | blame | history
src/app/routes/systems/organization/organization-list/organization-list.component.html 4 ●●●● patch | view | raw | blame | history
src/app/routes/systems/organization/organization.component.ts 2 ●●● patch | view | raw | blame | history
src/app/routes/users/alarm-user/alarm-user-edit/alarm-user-edit.component.html 2 ●●● patch | view | raw | blame | history
src/app/routes/users/alarm-user/alarm-user.component.html 2 ●●● patch | view | raw | blame | history
src/app/routes/users/installer/edit/edit.component.html 2 ●●● patch | view | raw | blame | history
src/app/routes/users/installer/edit/edit.component.ts 2 ●●● patch | view | raw | blame | history
src/environments/environment.prod.ts 2 ●●● patch | view | raw | blame | history
yarn.lock 14 ●●●● patch | view | raw | blame | history
.angular-cli.json
@@ -23,7 +23,7 @@
        "scripts": [
            "../node_modules/@antv/g2/dist/g2.min.js",
            "../node_modules/@antv/data-set/dist/data-set.min.js",
            "../node_modules/@antv/g2-plugin-slider/dist/g-2.0.0.min.js"
            "../node_modules/@antv/g2-plugin-slider/dist/g2-plugin-slider.min.js"
        ],
        "environmentSource": "environments/environment.ts",
        "environments": {
_mock/README.md
File was deleted
_mock/_api.ts
File was deleted
_mock/_chart.ts
File was deleted
_mock/_profile.ts
File was deleted
_mock/_rule.ts
File was deleted
_mock/index.ts
File was deleted
package.json
@@ -44,7 +44,6 @@
    "@delon/acl": "0.6.1",
    "@delon/auth": "0.6.1",
    "@delon/theme": "0.6.1",
    "@delon/mock": "0.6.1",
    "@delon/cache": "0.6.1",
    "@ngx-translate/core": "^9.0.0",
    "@ngx-translate/http-loader": "^2.0.0",
src/app/app.module.ts
@@ -55,8 +55,7 @@
    ],
    providers: [
        { provide: LOCALE_ID, useValue: 'zh-Hans' }, 
        // TODO 暂时关闭登陆验证
        //{ provide: HTTP_INTERCEPTORS, useClass: SimpleInterceptor, multi: true},
        { provide: HTTP_INTERCEPTORS, useClass: SimpleInterceptor, multi: true},
        { provide: HTTP_INTERCEPTORS, useClass: DefaultInterceptor, multi: true},    
        { provide: ALAIN_I18N_TOKEN, useClass: I18NService, multi: false },
        StartupService,
src/app/delon.module.ts
@@ -172,12 +172,8 @@
import { AlainAuthModule } from '@delon/auth';
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 }) ] : [];
@NgModule({
    imports: [
@@ -196,9 +192,7 @@
        // acl
        AlainACLModule.forRoot(),
        // cache
        DelonCacheModule.forRoot(),
        // mock
        ...MOCKMODULE
        DelonCacheModule.forRoot()
    ]
})
export class DelonModule {
src/app/layout/passport/passport.component.html
@@ -6,7 +6,7 @@
                <span class="title">ng-alain</span>
            </a>
        </div>
        <p class="desc">武林中最有影响力的《葵花宝典》;欲练神功,挥刀自宫</p>
        <p class="desc"></p>
    </div>
    <router-outlet></router-outlet>
    <global-footer [links]="links">
src/app/routes/devices/basic-info/basic-info.component.html
@@ -6,7 +6,7 @@
</div>
<nz-card [nzBordered]="false">
        <div class="mb-md">
                <button nz-button (click)="addOrModify()" [nzType]="'primary'" [nzSize]="'large'">
                <button nz-button (click)="addOrModify($event)" [nzType]="'primary'" [nzSize]="'large'">
                    <i class="anticon anticon-plus"></i><span>新建</span>
                </button>
                <ng-container *ngIf="selectedRows.length > 0"> &nbsp;
src/app/routes/devices/basic-info/device-edit/device-edit.component.ts
@@ -16,10 +16,10 @@
  styles: []
})
export class DeviceEditComponent implements OnInit {
  private monitorPoints:any [] = [];
  private deviceVersions:any [] = [];
  private operateUsers:any [] = [];
  private isSaving = false;
  public monitorPoints:any [] = [];
  public deviceVersions:any [] = [];
  public operateUsers:any [] = [];
  public isSaving = false;
  constructor(
    private subject: NzModalSubject,
    private formBuilder: FormBuilder,
src/app/routes/devices/monitor-point/monitor-point.component.html
@@ -1,7 +1,7 @@
<pro-header [title]="grid.title"></pro-header>
<nz-card [nzBordered]="false">
        <div class="mb-md">
                <button nz-button (click)="addOrModify()" [nzType]="'primary'" [nzSize]="'large'">
                <button nz-button (click)="addOrModify($event)" [nzType]="'primary'" [nzSize]="'large'">
                    <i class="anticon anticon-plus"></i><span>新建</span>
                </button>
                <ng-container *ngIf="grid.selectedIndexs.length > 0"> &nbsp;
src/app/routes/devices/version/version-sensor-config/version-sensor-config.component.html
@@ -31,7 +31,7 @@
</nz-table>
<div class="modal-footer">
  <button nz-button type="button" (click)="close()">关闭</button>
  <button nz-button [nzType]="'primary'" (click)="save($event)" [nzLoading]="isSaving">
  <button nz-button [nzType]="'primary'" (click)="save($event,null,null)" [nzLoading]="isSaving">
         <span >
            保存<span *ngIf="isSaving" >中</span>
         </span>
src/app/routes/devices/version/version.component.html
@@ -1,7 +1,7 @@
<pro-header [title]="grid.title"></pro-header>
<nz-card [nzBordered]="false">
        <div class="mb-md">
                <button nz-button (click)="addOrModify()" [nzType]="'primary'" [nzSize]="'large'">
                <button nz-button (click)="addOrModify($event)" [nzType]="'primary'" [nzSize]="'large'">
                    <i class="anticon anticon-plus"></i><span>新建</span>
                </button>
                <ng-container *ngIf="grid.selectedIndexs.length > 0"> &nbsp;
src/app/routes/map/coordinates-picker/coordinates-picker.component.html
@@ -10,7 +10,7 @@
                        </nz-input>
                    </div>
                    <div nz-col [nzSpan]="1">
                        <button nz-button [nzType]="'primary'" [disabled]="disabled"  (click)="mapSearch($event)" class="mr-sm">
                        <button nz-button [nzType]="'primary'"  (click)="mapSearch($event)" class="mr-sm">
                            <i class="anticon anticon-search"></i><span>搜索</span>
                        </button>
                    </div>
src/app/routes/map/coordinates-picker/coordinates-picker.component.ts
@@ -16,6 +16,7 @@
export class CoordinatesPickerComponent{
    Default_LNG = 121;
    Default_LAT = 31.4;
    isSaving = false;
    markerOption:{
      point:Point,
      options:MarkerOptions
@@ -114,6 +115,7 @@
      this.subject.destroy();
  }
  save() {
      this.isSaving = true;
      this.subject.next();
      this.subject.destroy();
  }
src/app/routes/passport/login/login.component.html
New file
@@ -0,0 +1,54 @@
<form nz-form [formGroup]="form" (ngSubmit)="submit()" role="form">
    <nz-alert *ngIf="error" [nzType]="'error'" [nzMessage]="error" [nzShowIcon]="true" class="mb-lg"></nz-alert>
    <div nz-form-item>
        <div nz-form-control [nzValidateStatus]="userName">
            <nz-input formControlName="userName" [nzPlaceHolder]="'admin'" [nzSize]="'large'">
                <ng-template #prefix>
                    <i class="anticon anticon-user"></i>
                </ng-template>
            </nz-input>
            <ng-container *ngIf="userName.dirty || userName.touched">
                <p nz-form-explain *ngIf="userName.errors?.required">请输入账户名!</p>
                <p nz-form-explain *ngIf="userName.errors?.minlength">至少五个字符</p>
            </ng-container>
        </div>
    </div>
    <div nz-form-item>
        <div nz-form-control [nzValidateStatus]="password">
            <nz-input formControlName="password" [nzPlaceHolder]="'888888'" [nzType]="'password'" [nzSize]="'large'">
                <ng-template #prefix>
                    <i class="anticon anticon-lock"></i>
                </ng-template>
            </nz-input>
            <div nz-form-explain *ngIf="(password.dirty || password.touched) && password.errors?.required">请输入密码!</div>
        </div>
    </div>
    <div nz-form-item nz-row>
        <div nz-col [nzSpan]="12">
            <label nz-checkbox formControlName="remember">
                <span>自动登录</span>
            </label>
        </div>
        <div nz-col [nzSpan]="12" class="text-right">
            <a class="forgot" (click)="msg.error('请找欧阳锋')">忘记密码?</a>
        </div>
    </div>
    <div nz-form-item>
        <button nz-button [nzType]="'primary'" [nzLoading]="loading" [nzSize]="'large'" class="ant-btn__block">
            <span>登录</span>
        </button>
    </div>
</form>
<div class="other">
    其他登录方式
    <nz-tooltip [nzTitle]="'in fact Auth0 via window'">
        <span nz-tooltip class="icon-alipay" (click)="open('auth0', 'window')"></span>
    </nz-tooltip>
    <nz-tooltip [nzTitle]="'in fact Github via redirect'">
        <span nz-tooltip class="icon-taobao" (click)="open('github')"></span>
    </nz-tooltip>
    <nz-tooltip [nzTitle]="'真的是微博'">
        <span nz-tooltip class="icon-weibo" (click)="open('weibo', 'window')"></span>
    </nz-tooltip>
    <a class="register" routerLink="/passport/register">注册账户</a>
</div>
src/app/routes/passport/login/login.component.less
New file
@@ -0,0 +1,75 @@
@import '~@delon/theme/styles/antd/themes/default.less';
:host {
    display: block;
    width: 368px;
    margin: 0 auto;
    ::ng-deep {
        .tabs {
            padding: 0 2px;
            margin: 0 -2px;
            .ant-tabs-tab {
                font-size: 16px;
                line-height: 24px;
            }
            .ant-input-affix-wrapper .ant-input:not(:first-child) {
                padding-left: 34px;
            }
        }
        .ant-tabs .ant-tabs-bar {
            border-bottom: 0;
            margin-bottom: 24px;
            text-align: center;
        }
        .ant-form-item {
            margin-bottom: 24px;
        }
        .icon-alipay, .icon-taobao, .icon-weibo {
            display: inline-block;
            width: 24px;
            height: 24px;
            background: url('https://gw.alipayobjects.com/zos/rmsportal/itDzjUnkelhQNsycranf.svg');
            margin-left: 16px;
            vertical-align: middle;
            cursor: pointer;
        }
        .icon-alipay {
            background-position: -24px 0;
            &:hover {
                background-position: 0 0;
            }
        }
        .icon-taobao {
            background-position: -24px -24px;
            &:hover {
                background-position: 0 -24px;
            }
        }
        .icon-weibo {
            background-position: -24px -48px;
            &:hover {
                background-position: 0 -48px;
            }
        }
        .other {
            text-align: left;
            margin-top: 24px;
            line-height: 22px;
            .register {
            float: right;
            }
        }
    }
}
src/app/routes/passport/login/login.component.ts
New file
@@ -0,0 +1,141 @@
import { SettingsService } from '@delon/theme';
import { Component, OnDestroy, Inject } from '@angular/core';
import { Router } from '@angular/router';
import { FormGroup, FormBuilder, Validators } from '@angular/forms';
import { NzMessageService } from 'ng-zorro-antd';
import { SocialService, SocialOpenType, ITokenService, DA_SERVICE_TOKEN } from '@delon/auth';
import { environment } from '@env/environment';
@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 settingsService: SettingsService,
        private socialService: SocialService,
        @Inject(DA_SERVICE_TOKEN) private tokenService: ITokenService) {
        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]
        });
    }
    // 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.password.markAsDirty();
            if (this.userName.invalid || this.password.invalid) return;
        } else {
            this.mobile.markAsDirty();
            this.captcha.markAsDirty();
            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 !== '123456') {
                    this.error = `账户或密码错误`;
                    return;
                }
            }
            this.tokenService.set({
                token: '123456789',
                name: this.userName.value,
                email: `cipchk@qq.com`,
                id: 10000,
                time: +new Date
            });
            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$);
    }
}
src/app/routes/routes-routing.module.ts
@@ -10,6 +10,7 @@
import { DashboardAnalysisComponent } from './dashboard/analysis/analysis.component';
import { DashboardMonitorComponent } from './dashboard/monitor/monitor.component';
import { DashboardWorkplaceComponent } from './dashboard/workplace/workplace.component';
import { UserLoginComponent } from 'app/routes/passport/login/login.component';
const routes: Routes = [
@@ -29,6 +30,13 @@
            { path: 'sensors', loadChildren: './sensors/sensors.module#SensorsModule' },
            { path: 'systems', loadChildren: './systems/systems.module#SystemsModule' },
        ]
    },    // passport
    {
        path: 'passport',
        component: LayoutPassportComponent,
        children: [
            { path: 'login', component: UserLoginComponent }
        ]
    },
    { path: '**', redirectTo: 'dashboard' }
];
src/app/routes/routes.module.ts
@@ -1,3 +1,4 @@
import { UserLoginComponent } from './passport/login/login.component';
import { DateService } from '@business/services/util/date.service';
import { _HttpClient } from '@delon/theme';
import { NgModule } from '@angular/core';
@@ -29,7 +30,8 @@
        DashboardV1Component,
        DashboardAnalysisComponent,
        DashboardMonitorComponent,
        DashboardWorkplaceComponent
        DashboardWorkplaceComponent,
        UserLoginComponent
    ],
    providers: [
        _HttpClient,
src/app/routes/sensors/basic-info/basic-info.component.html
@@ -1,11 +1,11 @@
<pro-header [title]="grid.title"></pro-header>
<nz-card [nzBordered]="false">
        <div class="mb-md">
                <button nz-button (click)="addOrModify()" [nzType]="'primary'" [nzSize]="'large'">
                <button nz-button (click)="addOrModify($event)" [nzType]="'primary'" [nzSize]="'large'">
                    <i class="anticon anticon-plus"></i><span>新建</span>
                </button>
                <ng-container *ngIf="grid.selectedIndexs.length > 0"> &nbsp;
                <button nz-button [nzSize]="'large'" (click)="deleteSelected()">批量删除</button>
                <button nz-button [nzSize]="'large'" (click)="deleteSelected($event)">批量删除</button>
                </ng-container>
                <nz-input [ngStyle]="{'width': '280px','float':'right'}" [(ngModel)]="queryMap.value" name=""  [nzPlaceHolder]="queryMap.text"
                (keyup)="queryTextChanged($event)" (change)="queryTextChanged($event)" ></nz-input>
src/app/routes/systems/account/account-edit/account-edit.component.html
@@ -52,6 +52,6 @@
    </div>
    <div class="modal-footer">
        <button nz-button type="button" (click)="close()">关闭</button>
        <button nz-button [nzLoading]="http.loading" [nzType]="'primary'" [disabled]="!validateForm.valid">保存</button>
        <button nz-button  [nzType]="'primary'" [disabled]="!validateForm.valid">保存</button>
    </div>
</form>
src/app/routes/systems/account/account.component.ts
@@ -13,7 +13,7 @@
export class AccountComponent implements OnInit {
  private isDeleteOptions = [
  public isDeleteOptions = [
    {value: '1', label: '是'},
    {value: '0', label: '否'}
  ];
src/app/routes/systems/organization/organization-config/organization-config.component.ts
@@ -23,7 +23,7 @@
  ngOnDestroy(): void {
    this.backToList();
  }
  private organization: Organization;
  public organization: Organization;
  grid: Grid<object> = new Grid<object>(null);
  validateForm: FormGroup;
  constructor(
@@ -274,8 +274,8 @@
           }
         }
   }
   private hasDegression = false;
   refreshHasDegression(value){
   public hasDegression = false;
   public refreshHasDegression(value){
       if(value){
         this.hasDegression = true;
       }else{
src/app/routes/systems/organization/organization-list/organization-list.component.html
@@ -1,10 +1,10 @@
<nz-card [nzBordered]="false">
        <div class="mb-md">
                <button nz-button (click)="addOrModify()" [nzType]="'primary'" [nzSize]="'large'">
                <button nz-button (click)="addOrModify($event)" [nzType]="'primary'" [nzSize]="'large'">
                    <i class="anticon anticon-plus"></i><span>新建</span>
                </button>
                <ng-container *ngIf="grid.selectedIndexs.length > 0"> &nbsp;
                <button nz-button [nzSize]="'large'" (click)="deleteSelected()">批量删除</button>
                <button nz-button [nzSize]="'large'" (click)="deleteSelected($event)">批量删除</button>
                </ng-container>
                <nz-input [ngStyle]="{'width': '280px','float':'right'}" [(ngModel)]="queryMap.value" name=""  [nzPlaceHolder]="queryMap.text"
                (keyup)="queryTextChanged($event)" (change)="queryTextChanged($event)" ></nz-input>
src/app/routes/systems/organization/organization.component.ts
@@ -12,6 +12,6 @@
  ngOnInit(): void {
  }
  constructor(
    private organizationService: OrganizationService
    public organizationService: OrganizationService
  ) {}
}
src/app/routes/users/alarm-user/alarm-user-edit/alarm-user-edit.component.html
@@ -51,6 +51,6 @@
    </div>
    <div class="modal-footer">
        <button nz-button type="button" (click)="close()">关闭</button>
        <button nz-button [nzLoading]="http.loading" [nzType]="'primary'">保存</button>
        <button nz-button  [nzType]="'primary'">保存</button>
    </div>
</form>
src/app/routes/users/alarm-user/alarm-user.component.html
@@ -81,7 +81,7 @@
                <th nz-th><span>创建日期</span></th>
                <th nz-th>
                    <span>过期日期</span>
                    <nz-table-sort [(nzValue)]="sortMap.updatedAt" (nzValueChange)="sort('expire_time', $event)"></nz-table-sort>
                    <nz-table-sort [(nzValue)]="sortMap" (nzValueChange)="sort('expire_time', $event)"></nz-table-sort>
                </th>
                <th nz-th><span>操作</span></th>
            </tr>
src/app/routes/users/installer/edit/edit.component.html
@@ -36,6 +36,6 @@
  </div>
  <div class="modal-footer">
    <button nz-button type="button" (click)="close()">关闭</button>
    <button nz-button [nzLoading]="http.loading" [nzType]="'primary'">保存</button>
    <button nz-button  [nzType]="'primary'">保存</button>
  </div>
</form>
src/app/routes/users/installer/edit/edit.component.ts
@@ -14,7 +14,7 @@
export class UserInstallerEditComponent implements OnInit {
  user: any;
  private validateForm: FormGroup;
  public validateForm: FormGroup;
  constructor(
    private modalHelper: ModalHelper,
src/environments/environment.prod.ts
@@ -4,5 +4,5 @@
    production: true,
    hmr: false,
    useHash: true,
    SERVER_BASH_URL: `http://47.96.15.25:8001/`
    SERVER_BASH_URL:`http://47.96.171.62:8080/screen_api_v2/`
};
yarn.lock
@@ -235,10 +235,6 @@
  version "0.6.1"
  resolved "http://registry.npm.taobao.org/@delon/cache/download/@delon/cache-0.6.1.tgz#13b412897743dc2ad612c4c4fca280c3dc044825"
"@delon/mock@0.6.1":
  version "0.6.1"
  resolved "http://registry.npm.taobao.org/@delon/mock/download/@delon/mock-0.6.1.tgz#e52bbdd708ff83680c985d0aa4ace282168de873"
"@delon/theme@0.6.1":
  version "0.6.1"
  resolved "http://registry.npm.taobao.org/@delon/theme/download/@delon/theme-0.6.1.tgz#4e98b1dc565c2f0684717c44ed73509cd866f120"
@@ -2176,6 +2172,12 @@
  resolved "http://registry.npm.taobao.org/ecc-jsbn/download/ecc-jsbn-0.1.1.tgz#0fc73a9ed5f0d53c38193398523ef7e543777505"
  dependencies:
    jsbn "~0.1.0"
echarts@^3.8.5:
  version "3.8.5"
  resolved "https://registry.yarnpkg.com/echarts/-/echarts-3.8.5.tgz#58e4a51d2743c6fb75257b0dc0a9cf9f5378ac0e"
  dependencies:
    zrender "3.7.4"
ee-first@1.1.1:
  version "1.1.1"
@@ -8253,3 +8255,7 @@
zone.js@^0.8.14, zone.js@^0.8.18:
  version "0.8.19"
  resolved "http://registry.npm.taobao.org/zone.js/download/zone.js-0.8.19.tgz#a4b522cd9e8b7b616a638c297d720d4c7f292f71"
zrender@3.7.4:
  version "3.7.4"
  resolved "https://registry.yarnpkg.com/zrender/-/zrender-3.7.4.tgz#f847d53948481ef6d42906d1ea9aeec7acbefdf2"