Commit d22ed590 authored by van.chen's avatar van.chen

init

parent 50b2879d
......@@ -20,12 +20,20 @@
"tsConfig": "src/tsconfig.app.json",
"assets": [
"src/favicon.ico",
{
"glob": "**/*",
"input": "./node_modules/@ant-design/icons-angular/src/inline-svg/",
"output": "/assets/"
},
"src/assets"
],
"styles": [
"src/styles.css"
"src/styles.css",
"node_modules/ng-zorro-antd/ng-zorro-antd.min.css"
],
"scripts": [
"src/assets/js/echarts.min.js"
],
"scripts": [],
"es5BrowserSupport": true
},
"configurations": {
......@@ -80,11 +88,19 @@
"tsConfig": "src/tsconfig.spec.json",
"karmaConfig": "src/karma.conf.js",
"styles": [
"src/styles.css"
"src/styles.css",
"node_modules/ng-zorro-antd/ng-zorro-antd.min.css"
],
"scripts": [
"src/assets/js/echarts.min.js"
],
"scripts": [],
"assets": [
"src/favicon.ico",
{
"glob": "**/*",
"input": "./node_modules/@ant-design/icons-angular/src/inline-svg/",
"output": "/assets/"
},
"src/assets"
]
}
......@@ -133,4 +149,4 @@
}
},
"defaultProject": "witiumCloud2"
}
\ No newline at end of file
}
......@@ -129,6 +129,23 @@
"tslib": "^1.9.0"
}
},
"@angular/cdk": {
"version": "7.3.6",
"resolved": "http://registry.npm.taobao.org/@angular/cdk/download/@angular/cdk-7.3.6.tgz",
"integrity": "sha1-TDMMrNEd9K2t5sHNPtWHdF+ZEv0=",
"requires": {
"parse5": "^5.0.0",
"tslib": "^1.7.1"
},
"dependencies": {
"parse5": {
"version": "5.1.0",
"resolved": "http://registry.npm.taobao.org/parse5/download/parse5-5.1.0.tgz",
"integrity": "sha1-xZNByXI/QUxFKXVWTHwApo1YrNI=",
"optional": true
}
}
},
"@angular/cli": {
"version": "7.3.8",
"resolved": "http://registry.npm.taobao.org/@angular/cli/download/@angular/cli-7.3.8.tgz",
......@@ -450,6 +467,14 @@
"tslib": "^1.9.0"
}
},
"@ant-design/icons-angular": {
"version": "2.0.2",
"resolved": "http://registry.npm.taobao.org/@ant-design/icons-angular/download/@ant-design/icons-angular-2.0.2.tgz",
"integrity": "sha1-7oHXwJjrjioE3YLTNwURrybkbRM=",
"requires": {
"ant-design-palettes": "^1.1.3"
}
},
"@babel/code-frame": {
"version": "7.0.0",
"resolved": "http://registry.npm.taobao.org/@babel/code-frame/download/@babel/code-frame-7.0.0.tgz",
......@@ -623,6 +648,22 @@
"webpack-sources": "1.3.0"
}
},
"@ngx-translate/core": {
"version": "11.0.1",
"resolved": "http://registry.npm.taobao.org/@ngx-translate/core/download/@ngx-translate/core-11.0.1.tgz",
"integrity": "sha1-zs761B8GNo9YWdrEj+yPzESFYV8=",
"requires": {
"tslib": "^1.9.0"
}
},
"@ngx-translate/http-loader": {
"version": "4.0.0",
"resolved": "http://registry.npm.taobao.org/@ngx-translate/http-loader/download/@ngx-translate/http-loader-4.0.0.tgz",
"integrity": "sha1-ilVSSK1LfVE0YPzsnaJbBEeWLx0=",
"requires": {
"tslib": "^1.9.0"
}
},
"@schematics/angular": {
"version": "7.3.8",
"resolved": "http://registry.npm.taobao.org/@schematics/angular/download/@schematics/angular-7.3.8.tgz",
......@@ -1030,6 +1071,14 @@
"color-convert": "^1.9.0"
}
},
"ant-design-palettes": {
"version": "1.1.3",
"resolved": "http://registry.npm.taobao.org/ant-design-palettes/download/ant-design-palettes-1.1.3.tgz",
"integrity": "sha1-hBGbGk2GNjrcUqONWH5lM2oKJ90=",
"requires": {
"tinycolor2": "^1.4.1"
}
},
"anymatch": {
"version": "2.0.0",
"resolved": "http://registry.npm.taobao.org/anymatch/download/anymatch-2.0.0.tgz",
......@@ -2503,6 +2552,11 @@
"assert-plus": "^1.0.0"
}
},
"date-fns": {
"version": "1.30.1",
"resolved": "http://registry.npm.taobao.org/date-fns/download/date-fns-1.30.1.tgz",
"integrity": "sha1-LnG/CxGRU9u0zE6I2epaz7UNwFw="
},
"date-format": {
"version": "2.0.0",
"resolved": "http://registry.npm.taobao.org/date-format/download/date-format-2.0.0.tgz",
......@@ -2799,6 +2853,14 @@
"safer-buffer": "^2.1.0"
}
},
"echarts": {
"version": "4.2.1",
"resolved": "http://registry.npm.taobao.org/echarts/download/echarts-4.2.1.tgz",
"integrity": "sha1-mo6jsDNU+G+CTZdiXDNM8Wll7wM=",
"requires": {
"zrender": "4.0.7"
}
},
"ee-first": {
"version": "1.1.1",
"resolved": "http://registry.npm.taobao.org/ee-first/download/ee-first-1.1.1.tgz",
......@@ -6269,6 +6331,25 @@
"integrity": "sha1-udFeTXHGdikIZUtRg+04t1M0CDU=",
"dev": true
},
"ng-zorro-antd": {
"version": "7.2.0",
"resolved": "http://registry.npm.taobao.org/ng-zorro-antd/download/ng-zorro-antd-7.2.0.tgz",
"integrity": "sha1-N0dkjMYfJUhu244wwWKoRKoceZs=",
"requires": {
"@angular/cdk": "^7.0.0",
"@ant-design/icons-angular": "^2.0.2",
"date-fns": "^1.29.0",
"tslib": "^1.9.0"
}
},
"ngx-echarts": {
"version": "4.1.0",
"resolved": "http://registry.npm.taobao.org/ngx-echarts/download/ngx-echarts-4.1.0.tgz",
"integrity": "sha1-J8msGtabs1B9CXEln4nlaMwsrT0=",
"requires": {
"tslib": "^1.9.0"
}
},
"nice-try": {
"version": "1.0.5",
"resolved": "http://registry.npm.taobao.org/nice-try/download/nice-try-1.0.5.tgz",
......@@ -9213,6 +9294,11 @@
"setimmediate": "^1.0.4"
}
},
"tinycolor2": {
"version": "1.4.1",
"resolved": "http://registry.npm.taobao.org/tinycolor2/download/tinycolor2-1.4.1.tgz",
"integrity": "sha1-9PrTM0R7wLB9TcjpIJ2POaisd+g="
},
"tmp": {
"version": "0.0.33",
"resolved": "http://registry.npm.taobao.org/tmp/download/tmp-0.0.33.tgz",
......@@ -10389,6 +10475,11 @@
"version": "0.8.29",
"resolved": "http://registry.npm.taobao.org/zone.js/download/zone.js-0.8.29.tgz",
"integrity": "sha1-jc6Sqg3VU7ULxb+7kK+Zhq2EWhI="
},
"zrender": {
"version": "4.0.7",
"resolved": "http://registry.npm.taobao.org/zrender/download/zrender-4.0.7.tgz",
"integrity": "sha1-Fa6WCCL17+1BCZXTflEH/j3hDm0="
}
}
}
......@@ -19,7 +19,12 @@
"@angular/platform-browser": "~7.2.0",
"@angular/platform-browser-dynamic": "~7.2.0",
"@angular/router": "~7.2.0",
"@ngx-translate/core": "^11.0.1",
"@ngx-translate/http-loader": "^4.0.0",
"core-js": "^2.5.4",
"echarts": "^4.2.1",
"ng-zorro-antd": "^7.2.0",
"ngx-echarts": "^4.1.0",
"rxjs": "~6.3.3",
"tslib": "^1.9.0",
"zone.js": "~0.8.26"
......
// 引入 angular 动画组件
import { trigger, style, state, transition, animate } from '@angular/animations';
export const fadeDown = trigger('fadeDown', [
transition('void => *', [
style({opacity: 0, transform: 'translateY(-50%)'}),
animate('800ms ease-out', style({transform: 'translateY(0px)', opacity: 1}))
]),
transition('* => void', [
animate('800ms ease-out', style({opacity: 0, transform: 'translateY(0px)'}))
])
]);
// 引入 angular 动画组件
import {trigger, style, state, transition, animate} from '@angular/animations';
export const fadeIn = trigger('fade', [
transition('void => *', [
style({opacity: 0}),
animate('1000ms ease-in', style({opacity: 1}))
]),
transition('* => void', [
animate('1000ms ease-in', style({opacity: 0}))
])
]);
import { trigger, style, state, transition, animate } from '@angular/animations';
// export const Flyout = trigger('Flyout', [state('show', style({
// transform: 'translateX(0)'
// })), state('out', style({
// transform: 'translateX(100%)'
// })), state('in', style({
// transform: 'translateX(-100%)'
// })),
// transition('in=>show', animate('600ms ease-in')),
// transition('show=>out', animate('600ms ease-out')),
// ]);
export const Flyout = trigger('Flyout', [
state('in', style({transform: 'translateX(0)'})),
transition('void => *', [
style({transform: 'translateX(-100%)'}),
animate('600ms ease-in')
]),
transition('* => void', [
animate('600ms ease-out', style({transform: 'translateX(100%)'}))
])
]);
import {trigger, style, state, transition, animate} from '@angular/animations';
export const transitionAll = trigger('open', [
state('in', style({height: '*'})),
transition('* => void', [
style({height: '*'}),
animate(250, style({height: 0}))
])
]);
import { trigger, style, state, transition, animate } from '@angular/animations';
export const zoom = trigger('zoom', [state('inactive', style({
backgroundColor: '#fff',
transform: 'scale(1)'
})), state('active', style({
backgroundColor: 'pink',
transform: 'scale(1.2)'
})),
transition('inactive => active', animate('300ms ease-in')),
transition('active => inactive', animate('300ms ease-out')),
]);
<!--The content below is only a placeholder and can be replaced.-->
<div style="text-align:center">
<h1>
Welcome to {{ title }}!
</h1>
<img width="300" alt="Angular Logo" src="data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNTAgMjUwIj4KICAgIDxwYXRoIGZpbGw9IiNERDAwMzEiIGQ9Ik0xMjUgMzBMMzEuOSA2My4ybDE0LjIgMTIzLjFMMTI1IDIzMGw3OC45LTQzLjcgMTQuMi0xMjMuMXoiIC8+CiAgICA8cGF0aCBmaWxsPSIjQzMwMDJGIiBkPSJNMTI1IDMwdjIyLjItLjFWMjMwbDc4LjktNDMuNyAxNC4yLTEyMy4xTDEyNSAzMHoiIC8+CiAgICA8cGF0aCAgZmlsbD0iI0ZGRkZGRiIgZD0iTTEyNSA1Mi4xTDY2LjggMTgyLjZoMjEuN2wxMS43LTI5LjJoNDkuNGwxMS43IDI5LjJIMTgzTDEyNSA1Mi4xem0xNyA4My4zaC0zNGwxNy00MC45IDE3IDQwLjl6IiAvPgogIDwvc3ZnPg==">
</div>
<h2>Here are some links to help you start: </h2>
<ul>
<li>
<h2><a target="_blank" rel="noopener" href="https://angular.io/tutorial">Tour of Heroes</a></h2>
</li>
<li>
<h2><a target="_blank" rel="noopener" href="https://angular.io/cli">CLI Documentation</a></h2>
</li>
<li>
<h2><a target="_blank" rel="noopener" href="https://blog.angular.io/">Angular blog</a></h2>
</li>
</ul>
<router-outlet></router-outlet>
import { TestBed, async } from '@angular/core/testing';
import { AppComponent } from './app.component';
describe('AppComponent', () => {
beforeEach(async(() => {
TestBed.configureTestingModule({
declarations: [
AppComponent
],
}).compileComponents();
}));
it('should create the app', () => {
const fixture = TestBed.createComponent(AppComponent);
const app = fixture.debugElement.componentInstance;
expect(app).toBeTruthy();
});
it(`should have as title 'witiumCloud2'`, () => {
const fixture = TestBed.createComponent(AppComponent);
const app = fixture.debugElement.componentInstance;
expect(app.title).toEqual('witiumCloud2');
});
it('should render title in a h1 tag', () => {
const fixture = TestBed.createComponent(AppComponent);
fixture.detectChanges();
const compiled = fixture.debugElement.nativeElement;
expect(compiled.querySelector('h1').textContent).toContain('Welcome to witiumCloud2!');
});
});
import { BrowserModule } from '@angular/platform-browser';
import { NgModule } from '@angular/core';
import {BrowserModule} from '@angular/platform-browser';
import {NgModule} from '@angular/core';
import {RoutingModule} from './router.module';
import {NgZorroAntdModule} from 'ng-zorro-antd';
import { AppComponent } from './app.component';
import {BrowserAnimationsModule} from '@angular/platform-browser/animations';
import {HttpClientModule, HttpClient} from '@angular/common/http';
import {NgxEchartsModule} from 'ngx-echarts';
// 主模块注册
import {LayoutModule} from './layout/layout.module';
// 主组件注册
import {AppComponent} from './app.component';
// 国际化相关内容
import {TranslateLoader, TranslateModule} from '@ngx-translate/core';
import {TranslateHttpLoader} from '@ngx-translate/http-loader';
// http
import {HTTP_INTERCEPTORS} from '@angular/common/http';
export function createTranslateHttpLoader(http: HttpClient) {
return new TranslateHttpLoader(http, './assets/i18n/', '.json');
}
// 配置 angular i18n
import {registerLocaleData} from '@angular/common';
import zh from '@angular/common/locales/zh';
registerLocaleData(zh);
// 配置 ng-zorro-antd 国际化
import {NZ_I18N, en_US, zh_CN} from 'ng-zorro-antd';
// 相关的服务
import {AuthInterceptor} from './service/token';
import {HttpService} from './service/http';
import {ApiService} from './service/api';
import {AuthService} from './service/auth';
import {PermissionService} from './service/permission';
import {MenuService} from './service/menu';
import {CheckService} from './service/check';
@NgModule({
declarations: [
AppComponent
AppComponent,
],
imports: [
BrowserModule
BrowserModule,
NgxEchartsModule,
LayoutModule,
BrowserAnimationsModule,
HttpClientModule,
RoutingModule,
BrowserAnimationsModule,
NgZorroAntdModule,
TranslateModule.forRoot({
loader: {
provide: TranslateLoader,
useFactory: (createTranslateHttpLoader),
deps: [HttpClient]
}
})
],
providers: [
{provide: NZ_I18N, useValue: zh_CN},
{
provide: HTTP_INTERCEPTORS,
useClass: AuthInterceptor,
multi: true,
},
HttpService,
ApiService,
AuthService,
PermissionService,
MenuService,
CheckService
],
providers: [],
bootstrap: [AppComponent]
bootstrap: [
AppComponent,
]
})
export class AppModule { }
export class AppModule {
}
<div style="width: 100%;
height: 100%;
background-color: #ee9a30;">
<div style="letter-spacing: 40px;
font-size: 200px;
text-align: center;
padding: 130px 0;
font-weight: 900;
color: #ffffff;">404</div>
<div style="text-align: center;
font-size: 35px;
padding-top: 30px;
color: #ffffff;">{{'sorryNotFound' | translate}}...</div>
</div>
import { Component, OnInit } from '@angular/core';
@Component({
selector: 'app-404',
templateUrl: './404.component.html'
})
export class NotFoundComponent implements OnInit {
constructor() {
}
ngOnInit() {
}
}
<router-outlet></router-outlet>
import { Component, OnInit } from '@angular/core';
@Component({
selector: 'app-extra',
templateUrl: './extra.component.html',
styleUrls: ['./extra.component.css']
})
export class ExtraComponent implements OnInit {
constructor() { }
ngOnInit() {
}
}
import {NgModule} from '@angular/core';
import {CommonModule} from '@angular/common';
import {TranslateModule} from '@ngx-translate/core';
import {FormsModule, ReactiveFormsModule} from '@angular/forms';
import {NgZorroAntdModule} from 'ng-zorro-antd';
import {LoginComponent} from './login/login.component';
import {NotFoundComponent} from './404/404.component';
import {ExtraComponent} from './extra.component';
import {RouterModule} from '@angular/router';
@NgModule({
imports: [
FormsModule,
ReactiveFormsModule,
CommonModule,
TranslateModule,
NgZorroAntdModule,
RouterModule.forChild([{
path: '',
component: ExtraComponent,
children: [
{path: '', redirectTo: '/extra/login', pathMatch: 'full'},
{path: 'login', component: LoginComponent}
]
}])
],
declarations: [ExtraComponent, LoginComponent, NotFoundComponent]
})
export class ExtraModule {
}
<div class="mainCon">
<div class="loginPart">
<div class="online">
<div class="label">用户名</div>
<div class="value">
<input nz-input style="width: 100%;" [(ngModel)]="req.userName">
</div>
</div>
<div class="online">
<div class="label">密码</div>
<div class="value">
<input nz-input type="password" style="width: 100%;" [(ngModel)]="req.password">
</div>
</div>
<div class="online">
<button nz-button nzType="primary" nzBlock (click)="login()">登录</button>
</div>
</div>
</div>
.mainCon {
height: 100%;
width: 100%;
display: flex;
justify-content:center;
align-items:Center;
background-color: lightgoldenrodyellow;
.loginPart {
width: 400px;
height: 300px;
margin: auto;
.online {
margin-bottom: 25px;
.label,.value {
display: inline-block;
}
.label {
width: 25%;
}
.value {
width: 75%;
}
}
}
}
import { Component, OnInit } from '@angular/core';
import {
AbstractControl,
FormBuilder,
FormGroup,
Validators
} from '@angular/forms';
import {en_US, NzMessageService, zh_CN, NzI18nService} from 'ng-zorro-antd';
import { ApiService } from '../../service/api';
import {PermissionService} from '../../service/permission';
import {Router} from '@angular/router';
import { TranslateService } from '@ngx-translate/core';
@Component({
selector: 'app-login',
templateUrl: './login.component.html',
styleUrls: ['./login.component.scss']
})
export class LoginComponent implements OnInit {
isLoading = false;
req: any = {};
constructor(private api: ApiService, private message: NzMessageService,
private permission: PermissionService, private router: Router,
private translate: TranslateService, private nzI18nService: NzI18nService) {
}
ngOnInit(): void {
}
login() {
this.isLoading = true;
const req = {
userName: this.req.userName,
password: this.req.password
};
this.api.login.dologin([req, (data: any) => {
if (data.constructor === Object) {
if (data.code === 1) {
debugger;
window.sessionStorage.setItem('_AMap_AMap.MapInner', data.message);
this.router.navigate(['app/home']);
// this.getCurUser();
} else {
this.message.error(data.message);
}
}
this.isLoading = false;
}]);
}
// getCurUser() {
// this.isLoading = true;
// this.api.user.getSelfInfo(['', (data: any) => {
// if (data.userName) {
// window.sessionStorage.setItem(encodeURIComponent('_AMap_AMap.IndoorMapFunc'), encodeURIComponent(JSON.stringify(data)));
// this.permission.getAllPermission('login', data);
// } else {
// this.message.error(this.translate.instant('noUserInfo'));
// }
// this.isLoading = false;
// }]);
// }
// toEn() {
// this.translate.use('en');
// this.nzI18nService.setLocale(en_US);
// document.getElementById('loginBtn').style.letterSpacing = '0px';
// localStorage.setItem('witium-default-language', 'en');
// }
//
// toZh() {
// this.translate.use('zh');
// this.nzI18nService.setLocale(zh_CN);
// document.getElementById('loginBtn').style.letterSpacing = '3px';
// localStorage.setItem('witium-default-language', 'zh');
// }
}
<nz-breadcrumb nzSeparator=">" *ngIf="bcShow && bShow">
<nz-breadcrumb-item *ngFor="let step of _title, let i = index">
<span class="breadText" (click)="goTo(i + 1)">{{step | translate}}</span>
</nz-breadcrumb-item>
</nz-breadcrumb>
nz-breadcrumb{
line-height: 1.5;
background: #fff;
padding: 15px 25px;
font-size: 15px;
color: #bfc0c2;
}
.breadText{
font-weight: 400;
cursor: pointer;
}
import { Component, OnInit, Input } from '@angular/core';
@Component({
selector: 'app-breadcrumb',
templateUrl: './breadcrumb.component.html',
styleUrls: ['./breadcrumb.component.scss']
})
export class BreadcrumbComponent implements OnInit {
bShow = true;
_title = [];
@Input()
get title(): any {
return this._title;
}
set title(_title: any) {
this._title = _title;
this.whenChange();
}
@Input()bcShow;
constructor() { }
ngOnInit() {
}
whenChange() {
if (this._title[0] === 'home') {
this.bShow = false;
} else {
this.bShow = true;
}
}
goTo(index) {
if (index > 1 && this._title[1] !== 'historyData') {
const oldAddr = this._title.join('/');
const addr = this._title.slice(0, index).join('/');
window.location.href = window.location.href.replace(oldAddr, addr);
}
}
}
<div style="text-align: center;height: 50px;line-height: 50px;">Design ©2018 Implement By Witium.</div>
import { Component, OnInit } from '@angular/core';
@Component({
selector: 'app-footer',
templateUrl: './footer.component.html',
styleUrls: ['./footer.component.scss']
})
export class FooterComponent implements OnInit {
constructor() { }
ngOnInit() {
}
}
<nz-layout style="height:100%">
<nz-sider style="background-color: #fff;border-right: 1px solid #e6e6e6;overflow-y: auto;" nzCollapsible [(nzCollapsed)]="isCollapsed" [nzTrigger]="triggerTemplate">
<div class="logo logoBackground bottomLine" [ngClass]="{'width-200': !isCollapsed, 'width-80': isCollapsed}">
<span *ngIf="!isCollapsed">
<div style="height: 54px;"></div>
</span>
<span *ngIf="isCollapsed" style="width: calc(50% - 64px);display: block;">
<i class="iconfont icon-cloud"></i>
</span>
</div>
<app-leftmenu #leftmenu [isCollapsed]="isCollapsed" [selectedItem]="selectedItem"></app-leftmenu>
</nz-sider>
<nz-layout>
<nz-header class="logoBackground bottomLine" style="padding:0;position:fixed; width:100%;z-index: 99;">
<i class="iconfont trigger textStyle1 whenHover" [class.icon-toFold]="!isCollapsed"
[class.icon-toOpen]="isCollapsed" (click)="changeCollapsed()"></i>
<label class="linkToPersonSetting whenHover textStyle1" routerLink="/app/systemSet/personSet">
<i class="iconfont icon-user"></i>
{{'personSet' | translate}}
</label>
<label class="loginOut whenHover textStyle1" (click)="loginOut()">
{{'signOut' | translate}}
</label>
</nz-header>
<nz-content id="layoutCon" style="margin-top:64px;overflow: auto;">
<app-breadcrumb [title]="title" [bcShow]="bcShow"></app-breadcrumb>
<div style="overflow-y: auto;overflow-x: auto;width: 100%;height: 100%">
<router-outlet></router-outlet>
</div>
</nz-content>
<app-footer></app-footer>
</nz-layout>
</nz-layout>
<ng-template #trigger>
<i class="iconfont icon-up"></i>
</ng-template>
<!--<div class="footer"></div>-->
$headerSlideBackground: rgba(255, 255, 255, 1);
:host ::ng-deep .trigger {
font-size: 20px;
line-height: 64px;
padding: 0 24px;
cursor: pointer;
transition: color .3s;
}
:host ::ng-deep .logo {
text-align: center;
}
.logoBackground {
background-color: $headerSlideBackground;
height: 64px;
line-height: 64px;
}
.loginOut {
position: fixed;
right: 40px;
}
.linkToPersonSetting {
position: fixed;
right: 100px;
}
.logo{
z-index: 5;
position: fixed;
padding: 5px;
border-right: 1px solid #e6e6e6;
}
ul {
height: calc(100% - 64px);
overflow-y: auto;
margin-top: 64px;
overflow-x: hidden;
}
.width-200{
width: 200px;
}
.width-80{
width: 80px;
}
import {Component, TemplateRef, ViewChild, OnInit} from '@angular/core';
import {Router, NavigationEnd} from '@angular/router';
import {ApiService} from '../service/api';
import {NzMessageService, zh_CN, en_US, NzI18nService} from 'ng-zorro-antd';
import {LeftmenuComponent} from './leftmenu/leftmenu.component';
import {TranslateService} from '@ngx-translate/core';
@Component({
selector: 'app-layout',
templateUrl: './layout.component.html',
styleUrls: ['./layout.component.scss']
})
export class LayoutComponent implements OnInit {
isCollapsed = false;
triggerTemplate = null;
title;
bcShow = true;
selectedItem;
@ViewChild('trigger') customTrigger: TemplateRef<void>;
@ViewChild('leftmenu') leftmenu: LeftmenuComponent;
constructor(private router: Router, private api: ApiService, private message: NzMessageService,
private translate: TranslateService, private nzI18nService: NzI18nService) {
}
// custom trigger can be TemplateRef
changeTrigger(): void {
this.triggerTemplate = this.customTrigger;
}
changeCollapsed() {
this.leftmenu.collapseChange(!this.isCollapsed);
this.isCollapsed = !this.isCollapsed;
}
ngOnInit() {
let hash = window.location.hash;
if (hash.indexOf('?') > -1) {
hash = hash.slice(0, hash.indexOf('?'));
}
if (hash !== '#/app') {
this.bcShow = true;
this.title = hash.replace(/#\/app\//g, '').split('/');
} else {
this.bcShow = false;
}
this.selectedItem = hash.replace(/#\/app\//g, '')
.replace(/\/detail/g, '/dataMonitoring/')
.replace(/\/oldData/g, '/dataMonitoring/').split('/');
this.router.events
.subscribe((event: NavigationEnd) => {
if (event instanceof NavigationEnd) {
let hashValue = window.location.hash;
if (hashValue.indexOf('?') > -1) {
hashValue = hashValue.slice(0, hashValue.indexOf('?'));
}
if (hashValue !== '#/app') {
this.bcShow = true;
this.title = hashValue.replace(/#\/app\//g, '').split('/');
} else {
this.bcShow = false;
}
this.selectedItem = hashValue.replace(/#\/app\//g, '')
.replace(/\/detail/g, '/dataMonitoring')
.replace(/\/oldData/g, '/dataMonitoring').split('/');
}
});
}
loginOut() {
this.api.login.logout(['', (data: any) => {
const message = data.message ? data.message : this.translate.instant('loginOutSuccess');
this.message.success(message);
window.sessionStorage.clear();
this.router.navigate(['/extra/login']);
}]);
}
}
import {NgModule} from '@angular/core';
import {TranslateModule} from '@ngx-translate/core';
import {NgZorroAntdModule} from 'ng-zorro-antd';
import {FormsModule} from '@angular/forms';
import {CommonModule} from '@angular/common';
import {NZ_MESSAGE_CONFIG} from 'ng-zorro-antd';
import {NgxEchartsModule} from 'ngx-echarts';
import {LayoutComponent} from './layout.component';
import {LeftmenuComponent} from './leftmenu/leftmenu.component';
import {FooterComponent} from './footer/footer.component';
import {BreadcrumbComponent} from './breadcrumb/breadcrumb.component';
import {HomeComponent} from '../main/home/home.component';
import {LayoutRoutingModule} from '../router.module';
@NgModule({
imports: [
TranslateModule,
NgxEchartsModule,
CommonModule,
NgZorroAntdModule,
FormsModule,
LayoutRoutingModule
],
providers: [
{
provide: NZ_MESSAGE_CONFIG,
useValue: {
nzDuration: 3000,
nzMaxStack: 7,
nzPauseOnHover: true,
nzAnimate: true
}
}
],
declarations: [
LayoutComponent,
LeftmenuComponent,
FooterComponent,
BreadcrumbComponent,
HomeComponent
]
})
export class LayoutModule {
}
<div class="menuPart">
<div class="menuFirst" *ngFor="let item of dataArr">
<div class="first-floor textStyle1 whenHover" [title]="item.name | translate" *ngIf="(item.child && item.child.length > 0) || item.type" (click)="selectFirstFloor(item)" [ngClass]="{'isSelectedFirst': isSelected[0] === item.name, 'isSelectedSecond': isSelected[0] === item.name && item.type === 1}">
<i [class]="item.icon" [ngClass]="{'iconLeft': !isCollapsed,'iconLeftCos': isCollapsed}"></i>
<span *ngIf="!isCollapsed">{{item.name | translate}}</span>
<i class="iconfont iconRight" [ngClass]="{'icon-down': !isOpen[item.name] && !item.type && !isCollapsed,'icon-up': isOpen[item.name] && !item.type && !isCollapsed, 'icon-right': isCollapsed && !item.type}"></i>
</div>
<div *ngIf="isOpen[item.name] && !isCollapsed" class="menuSecond whenHover">
<div class="second-floor whenHover textStyle2" [title]="one.name | translate" *ngFor="let one of item.child"
(click)="selectSecondFloor(item.name, one.name)"
[ngClass]="{'isSelectedSecond': isSelected[0] === item.name && isSelected[1] === one.name}">{{one.name | translate}}
</div>
</div>
<div *ngIf="isCollapsed && item.child.length > 0" class="menuSecondCos" [ngClass]="{'isCos': isCollapsed}">
<div class="handleTheLeft">
<div class="second-floor-cos whenHover textStyle2" *ngFor="let one of item.child"
(click)="selectSecondFloor(item.name, one.name)"
[ngClass]="{'isSelectedSecond': isSelected[0] === item.name && isSelected[1] === one.name}">{{one.name | translate}}
</div>
</div>
</div>
</div>
</div>
.menuPart {
margin-top: 64px;
}
.menuFirst,.menuSecond {
padding: 0;
}
.menuFirst {
position: relative;
}
.first-floor {
line-height: 48px;
height: 48px;
color: rgba(0,0,0,.65);
padding-left: 14px;
padding-right: 34px;
position: relative;
cursor: pointer;
width: 100%;
overflow:hidden;
text-overflow:ellipsis;
white-space:nowrap;
}
.second-floor {
line-height: 40px;
height: 40px;
text-indent: 48px;
color: rgba(0,0,0,.65);
cursor: pointer;
width: 100%;
overflow:hidden;
text-overflow:ellipsis;
white-space:nowrap;
}
i.iconLeft {
padding: 0 10px;
}
i.iconRight {
position: absolute;
top: 0;
right: 17px;
font-size: 15px;
font-weight: bolder;
}
.iconLeftCos {
padding: 0 5px;
}
.menuSecondCos {
position: fixed;
left: 80px;
margin-top: -50px;
z-index: 2000;
padding-left: 5px;
}
.second-floor-cos {
line-height: 40px;
height: 40px;
text-indent: 25px;
padding-right: 25px;
cursor: pointer;
}
.menuFirst .menuSecondCos.isCos{
display: none;
}
.menuFirst:hover .menuSecondCos.isCos{
display: block;
}
.handleTheLeft {
min-width: 160px;
background-color: #FFFFFF;
border-radius: 10px;
overflow: hidden;
border: 1px solid #ccc;
}
.isSelectedSecond {
color: #005691 !important;
background-color: #efefef;
}
import { Component, OnInit, Input, OnDestroy } from '@angular/core';
import { NzMessageService } from 'ng-zorro-antd';
import { PermissionService } from '../../service/permission';
import { Router } from '@angular/router';
@Component({
selector: 'app-leftmenu',
templateUrl: './leftmenu.component.html',
styleUrls: ['./leftmenu.component.scss']
})
export class LeftmenuComponent implements OnInit, OnDestroy {
constructor(private message: NzMessageService, private permissionS: PermissionService, private router: Router) {
}
selectItem: any;
@Input() isCollapsed;
@Input()
get selectedItem() {
return this.selectItem;
}
set selectedItem(selectItem: any) {
this.selectItem = selectItem;
this.init();
}
dataArr = [{
name: 'home',
icon: 'iconfont icon-home',
type: 1,
child: []
}, {
name: 'dataManage',
icon: 'iconfont icon-data',
type: 0,
// {name: 'actualData'}, {name: 'compare'}
child: []
}, {
name: 'pointAnalyse',
icon: 'iconfont icon-alarmUp',
type: 0,
child: []
}, {
name: 'alarmWarn',
icon: 'iconfont icon-warn',
type: 0,
// {name: 'warnInfo'}, {name: 'alarmInfo'}
child: []
}, {
name: 'deviceManage',
icon: 'iconfont icon-device',
type: 0,
// {name: 'gatewayManage'}, {name: 'collectorManage'}, {name: 'deviceModel'}, {name: 'deviceType'}
child: []
// }, {
// name: 'moduleCenter',
// icon: 'iconfont icon-edit',
// type: 0,
// child: [{name: 'moduleManage'}, {name: 'partManage'}, {name: 'channelTopic'}, {name: 'subjectManage'}]
}, {
name: 'systemSet',
icon: 'iconfont icon-setting',
type: 0,
child: [{name: 'personSet'}, {name: 'roleManage'}, {name: 'areaManage'},
{name: 'departmentManage'}, {name: 'pointManage'}, {name: 'factoryManage'},
{name: 'userManage'}, {name: 'operateSet'}, {name: 'loginLog'}]
// child: []
}];
isOpen = {monitoring: false, deviceManage: false, pileManage: false, moduleCenter: false, systemSet: false};
isSelected = ['', ''];
ngOnInit() {
this.init();
// this.getPermission();
}
init() {
if (this.selectItem && this.selectItem.length > 0) {
this.isOpen[this.selectItem[0]] = true;
this.isSelected = this.selectItem;
}
}
ngOnDestroy() {
}
// getPermission() {
// const arr = [...this.dataArr];
// const obj = this.permissionS.getTiny();
// arr.map((item, index) => {
// if (item.name !== 'home') {
// item.child = obj[item.name].child;
// }
// if (index === arr.length - 1 ) {
// this.dataArr = arr;
// }
// });
// }
selectFirstFloor(item) {
if (item.type) {
this.isOpen = {monitoring: false, deviceManage: false, pileManage: false, moduleCenter: false, systemSet: false};
this.isSelected = [item.name];
this.router.navigate(['app/' + item.name]);
} else if (!this.isCollapsed) {
this.isOpen[item.name] = !this.isOpen[item.name];
}
}
selectSecondFloor(item1, item2) {
const isOpen = {monitoring: false, deviceManage: false, pileManage: false, moduleCenter: false, systemSet: false};
isOpen[item1] = true;
this.isOpen = isOpen;
this.isSelected = [item1, item2];
this.router.navigate(['app/' + item1 + '/' + item2]);
}
collapseChange(e) {
if (!e) {
const isOpen = {monitoring: false, deviceManage: false, pileManage: false, moduleCenter: false, systemSet: false};
isOpen[this.isSelected[0]] = true;
this.isOpen = isOpen;
}
}
}
import {Component, OnInit} from '@angular/core';
import {fadeIn} from '../../animation/fade-in';
import {ApiService} from '../../service/api';
import {NzMessageService} from 'ng-zorro-antd';
import {TranslateService} from '@ngx-translate/core';
import {Router} from '@angular/router';
@Component({
selector: 'app-home',
templateUrl: './home.component.html',
styleUrls: ['./home.component.scss'],
animations: [fadeIn]
})
export class HomeComponent implements OnInit {
constructor(private api: ApiService, private message: NzMessageService,
private translate: TranslateService, private router: Router) {
}
ngOnInit() {
this.init();
}
init() {
}
}
import { RouterModule, Routes } from '@angular/router';
import { LayoutComponent } from './layout/layout.component';
import { AuthService } from './service/auth';
import { HomeComponent } from './main/home/home.component';
const AppRoutes: Routes = [
{path: '', redirectTo: '/extra/login', pathMatch: 'full'},
{path: 'app', component: LayoutComponent},
{path: 'extra', loadChildren: './extra/extra.module#ExtraModule'},
{path: '**', redirectTo: '/extra/login', pathMatch: 'full'},
];
export const RoutingModule = RouterModule.forRoot(AppRoutes, {useHash: true});
const routes: Routes = [
{
path: 'app',
component: LayoutComponent,
canActivateChild: [AuthService],
children: [
{path: '', redirectTo: '/extra/login', pathMatch: 'full'},
{path: 'home', component: HomeComponent},
]
}
];
export const LayoutRoutingModule = RouterModule.forChild(routes);
import { HttpService } from './http';
import { Injectable } from '@angular/core';
import { Router } from '@angular/router';
import { NzMessageService } from 'ng-zorro-antd';
import { environment } from '../../environments/environment';
import { TranslateService } from '@ngx-translate/core';
@Injectable()
export class ApiService {
constructor(private http: HttpService, private router: Router,
private message: NzMessageService, private translate: TranslateService) {
}
tokenLoseflag = 0;
public url = environment.baseUrl;
public imgUrl = environment.imgUrl; // 前端地址
public homePage = {
homePage: (data) => this.trans('post', '/homePage/homePage', data)
};
public deviceConfig = {
addTopicConfig: (data) => this.trans('post', '/deviceConfig/addTopicConfig', data),
delTopicConfig: (data) => this.trans('post', '/deviceConfig/delTopicConfig', data),
getAll: (data) => this.trans('post', '/deviceConfig/getAll', data),
};
public analysis = {
getCuttingMachine: (data) => this.trans('get', '/analysis/getCuttingMachine', data),
getCuttingMachineDetail: (data) => this.trans('post', '/analysis/getCuttingMachineDetail', data),
getCuttingMachineDetailForAlarm: (data) => this.trans('post', '/analysis/getCuttingMachineDetailForAlarm', data),
getCuttingMachineDetailForData: (data) => this.trans('post', '/analysis/getCuttingMachineDetailForData', data),
getCuttingMachineDetailForAlarmDetail: (data) => this.trans('post', '/analysis/getCuttingMachineDetailForAlarmDetail', data),
getCuttingMachineDetailForDisposeAlarm: (data) => this.trans('post', '/analysis/getCuttingMachineDetailForDisposeAlarm', data),
getCuttingMachineDetailForKnife: (data) => this.trans('post', '/analysis/getCuttingMachineDetailForKnife', data),
getCuttingMachineForLike: (data) => this.trans('post', '/analysis/getCuttingMachineForLike', data),
getMachineRoom: (data) => this.trans('get', '/analysis/getMachineRoom', data),
getMachineRoomAlarm: (data) => this.trans('post', '/analysis/getMachineRoomAlarm', data),
getMachineRoomAlarmDetail: (data) => this.trans('post', '/analysis/getMachineRoomAlarmDetail', data),
getMachineRoomDetail: (data) => this.trans('post', '/analysis/getMachineRoomDetail', data),
getMachineRoomForLike: (data) => this.trans('post', '/analysis/getMachineRoomForLike', data),
};
public data = {
getCISS: (data) => this.trans('post', '/data/getCISS', data),
getCISSData: (data) => this.trans('get', '/data/getCISSData', data),
getCISSHistoryData: (data) => this.trans('post', '/data/getCISSHistoryData', data),
getCISSNum: (data) => this.trans('post', '/data/getCISSNum', data),
getXDK: (data) => this.trans('post', '/data/getXDK', data),
getXDKData: (data) => this.trans('get', '/data/getXDKData', data),
getXDKHistoryData: (data) => this.trans('post', '/data/getXDKHistoryData', data),
getCISSDataByTerm: (data) => this.trans('post', '/data/getCISSDataByTerm', data),
getXDKDataByTerm: (data) => this.trans('post', '/data/getXDKDataByTerm', data),
getAlarmData: (data) => this.trans('post', '/getAlarmData', data),
getData: (data) => this.trans('post', '/getData', data)
};
public dataComparison = {
getComparisonForKeepCiss: (data) => this.trans('post', '/dataComparison/getComparisonForKeepCiss', data),
getDataComparisonForKeepCiss: (data) => this.trans('post', '/dataComparison/getDataComparisonForKeepCiss', data),
getDataComparisonForStepCiss: (data) => this.trans('post', '/dataComparison/getDataComparisonForStepCiss', data),
getDataComparisonForXDK: (data) => this.trans('post', '/dataComparison/getDataComparisonForXDK', data),
};
public download = {
downloadCissData: (data) => this.trans('post', '/download/downloadCissData', data)
};
public deviceType = {
addDeviceType: (data) => this.trans('post', '/deviceType/addDeviceType', data),
deleteDeviceType: (data) => this.trans('post', '/deviceType/deleteDeviceType', data),
getAll: (data) => this.trans('get', '/deviceType/getAll', data),
getByDeviceTypeForLike: (data) => this.trans('post', '/deviceType/getByDeviceTypeForLike', data),
updateDeviceType: (data) => this.trans('post', '/deviceType/updateDeviceType', data),
};
public deviceModel = {
addDeviceModel: (data) => this.trans('post', '/deviceModel/addDeviceModel', data),
getAll: (data) => this.trans('get', '/deviceModel/getAll', data),
deleteDeviceModel: (data) => this.trans('post', '/deviceModel/deleteDeviceModel', data),
getByDeviceModelForLike: (data) => this.trans('post', '/deviceModel/getByDeviceModelForLike', data),
updateDeviceModel: (data) => this.trans('post', '/deviceModel/updateDeviceModel', data),
};
public alarm = {
addAlarm: (data) => this.trans('post', '/alarm/addAlarm', data),
deleteAlarm: (data) => this.trans('post', '/alarm/deleteAlarm', data),
getAll: (data) => this.trans('get', '/alarm/getAll', data),
getByAlarmNameForLike: (data) => this.trans('post', '/alarm/getByAlarmNameForLike', data),
updateAlarm: (data) => this.trans('post', '/alarm/updateAlarm', data),
};
public alarmLog = {
addAlarmLog: (data) => this.trans('post', '/alarmLog/addAlarmLog', data),
disposeAlarm: (data) => this.trans('post', '/alarmLog/disposeAlarm', data),
downloadExcel: (data) => this.trans('post', '/alarmLog/downloadExcel', data),
getAll: (page, rows, data) => this.trans('get', '/alarmLog/getAll?page=' + page + '&rows=' + rows, data),
getForTerm: (page, rows, data) => this.trans('post', '/alarmLog/getForTerm?page=' + page + '&rows=' + rows, data),
updateFault: (data) => this.trans('post', '/alarmLog/updateFault', data),
};
public area = {
getAll: (data) => this.trans('get', '/getAll', data),
getByCity: (data) => this.trans('post', '/getByCity', data),
};
public factory = {
addFactory: (data) => this.trans('post', '/factory/addFactory', data),
addFactoryDepartment: (data) => this.trans('post', '/factory/addFactoryDepartment', data),
addFactoryLine: (data) => this.trans('post', '/factory/addFactoryLine', data),
deleteFactory: (data) => this.trans('post', '/factory/deleteFactory', data),
getAll: (data) => this.trans('get', '/factory/getAll', data),
getAllForDepartment: (data) => this.trans('get', '/factory/getAllForDepartment', data),
getAllForFactoryArea: (data) => this.trans('get', '/factory/getAllForFactoryArea', data),
getAllForFactoryLine: (data) => this.trans('get', '/factory/getAllForFactoryLine', data),
getDepartmentByFactoryNameForLike: (data) => this.trans('post', '/factory/getDepartmentByFactoryNameForLike', data),
getFactoryAreaByFactoryNameForLike: (data) => this.trans('post', '/factory/getFactoryAreaByFactoryNameForLike', data),
getFactoryLineByFactoryNameForLike: (data) => this.trans('post', '/factory/getFactoryLineByFactoryNameForLike', data),
updateFactoryArea: (data) => this.trans('post', '/factory/updateFactoryArea', data),
updateFactoryLine: (data) => this.trans('post', '/factory/updateFactoryLine', data),
};
public operationLog = {
downloadExcel: (data) => this.trans('post', '/operationLog/downloadExcel', data),
getAll: (page, rows, data) => this.trans('get', '/operationLog/getAll?page=' + page + '&rows=' + rows, data),
getByTerm: (page, rows, data) => this.trans('post', '/operationLog/getByTerm?page=' + page + '&rows=' + rows, data),
};
public gateway = {
addGateway: (data) => this.trans('post', '/gateway/addGateway', data),
allocationGateway: (data) => this.trans('post', '/gateway/allocationGateway', data),
batchAddGateway: (data) => this.trans('post', '/gateway/batchAddGateway', data),
batchDeleteGateway: (data) => this.trans('post', '/gateway/batchDeleteGateway', data),
deleteGateway: (data) => this.trans('post', '/gateway/deleteGateway', data),
deployGateway: (data) => this.trans('post', '/gateway/deployGateway', data),
disonnectGateway: (data) => this.trans('post', '/gateway/disonnectGateway', data),
getAll: (data) => this.trans('get', '/gateway/getAll', data),
getAllForLike: (data) => this.trans('post', '/gateway/getAllForLike', data),
updateGateway: (data) => this.trans('post', '/gateway/updateGateway', data),
};
public login = {
dologin: (data) => this.trans('post', '/login/dologin', data),
logout: (data) => this.trans('get', '/login/logout', data),
};
public loginlog = {
getAll: (page, rows, data) => this.trans('get', '/loginlog/getAll?page=' + page + '&rows=' + rows, data),
getByTime: (page, rows, data) => this.trans('post', '/loginlog/getByTime?page=' + page + '&rows=' + rows, data),
};
public monitoringPoint = {
getByFactoryAreaNo: (data) => this.trans('post', '/monitoringPoint/getByFactoryAreaNo', data),
addMonitoringPoint: (data) => this.trans('post', '/monitoringPoint/addMonitoringPoint', data),
deleteMonitoringPoint: (data) => this.trans('post', '/monitoringPoint/deleteMonitoringPoint', data),
geByMonitoringPointNameForLike: (data) => this.trans('post', '/monitoringPoint/geByMonitoringPointNameForLike', data),
getAll: (data) => this.trans('get', '/monitoringPoint/getAll', data),
getByFactoryNo: (data) => this.trans('post', '/monitoringPoint/getByFactoryNo', data),
updateMonitoringPoint: (data) => this.trans('post', '/monitoringPoint/updateMonitoringPoint', data),
};
public monitoringPointType = {
addMonitoringPointType: (data) => this.trans('post', '/monitoringPointType/addMonitoringPointType', data),
deleteMonitoringPointType: (data) => this.trans('post', '/monitoringPointType/deleteMonitoringPointType', data),
getAll: (data) => this.trans('get', '/monitoringPointType/getAll', data),
getByMonitoringPointTypeForLike: (data) => this.trans('post', '/monitoringPointType/getByMonitoringPointTypeForLike', data),
updateMonitoringPointType: (data) => this.trans('post', '/monitoringPointType/updateMonitoringPointType', data),
};
public permission = {
getAll: (data) => this.trans('get', '/permission/getAll', data),
getPermissionByRoleNo: (data) => this.trans('post', '/permission/getPermissionByRoleNo', data),
};
public sensor = {
addSensor: (data) => this.trans('post', '/sensor/addSensor', data),
batchAddSensor: (data) => this.trans('post', '/sensor/batchAddSensor', data),
batchDeleteSensor: (data) => this.trans('post', '/sensor/batchDeleteSensor', data),
bindSensor: (data) => this.trans('post', '/sensor/bindSensor', data),
bindSensorAndMonitoringPoint: (data) => this.trans('post', '/sensor/bindSensorAndMonitoringPoint', data),
deleteSensor: (data) => this.trans('post', '/sensor/deleteSensor', data),
getAll: (data) => this.trans('get', '/sensor/getAll', data),
getByFreeAndBindGateway: (data) => this.trans('get', '/sensor/getByFreeAndBindGateway', data),
getByMonitoringPoint: (data) => this.trans('post', '/sensor/getByMonitoringPoint', data),
getByFreeForType: (data) => this.trans('post', '/sensor/getByFreeForType', data),
getUnFreeByType: (data) => this.trans('post', '/sensor/getUnFreeByType', data),
getByTerm: (data) => this.trans('post', '/sensor/getByTerm', data),
unBindSensor: (data) => this.trans('post', '/sensor/unBindSensor', data),
getUnFreeByCissType: (data) => this.trans('post', '/sensor/getUnFreeByCissType', data),
unbindSensorAndMonitoringPoint: (data) => this.trans('post', '/sensor/unbindSensorAndMonitoringPoint', data),
updateSensor: (data) => this.trans('post', '/sensor/updateSensor', data),
updateSensorFactory: (data) => this.trans('post', '/sensor/updateSensorFactory', data)
};
public user = {
addUser: (data) => this.trans('post', '/user/addUser', data),
deleteUser: (data) => this.trans('post', '/user/deleteUser', data),
getAll: (data) => this.trans('get', '/user/getAll', data),
getByUserNameForLike: (data) => this.trans('post', '/user/getByUserNameForLike', data),
getSelfInfo: (data) => this.trans('get', '/user/getSelfInfo', data),
updateSelfPassword: (data) => this.trans('post', '/user/updateSelfPassword', data),
updateSelfUser: (data) => this.trans('post', '/user/updateSelfUser', data),
updateUser: (data) => this.trans('post', '/user/updateUser', data),
};
public role = {
addRole: (data) => this.trans('post', '/role/addRole', data),
deleteRole: (data) => this.trans('post', '/role/deleteRole', data),
getAll: (data) => this.trans('get', '/role/getAll', data),
getByFactoryNo: (data) => this.trans('post', '/role/getByFactoryNo', data),
getByRoleNameForLike: (data) => this.trans('post', '/role/getByRoleNameForLike', data),
updateRole: (data) => this.trans('post', '/role/updateRole', data),
};
public device = {
addDevice: (data) => this.trans('post', '/device/addDevice', data),
addRecord: (data) => this.trans('post', '/device/addRecord', data),
delDevice: (data) => this.trans('post', '/device/delDevice', data),
downloadAlarmData: (data) => this.trans('post', '/device/downloadAlarmData', data),
downloadData: (data) => this.trans('post', '/device/downloadData', data),
downRecord: (data) => this.trans('get', '/device/downRecord', data),
getAll: (data) => this.trans('get', '/device/getAll', data),
setState: (data) => this.trans('post', '/device/setState', data),
updateDevice: (data) => this.trans('post', '/device/updateDevice', data),
};
public model = {
addModel: (data) => this.trans('post', '/model/addModel', data),
delModel: (data) => this.trans('post', '/model/delModel', data),
getAll: (data) => this.trans('get', '/model/getAll', data),
getByDeviceType: (data) => this.trans('post', '/model/getByDeviceType', data),
updateModel: (data) => this.trans('post', '/model/updateModel', data),
};
public modelInfo = {
addModelInfo: (data) => this.trans('post', '/modelInfo/addModelInfo', data),
delModelInfo: (data) => this.trans('post', '/modelInfo/delModelInfo', data),
getAll: (data) => this.trans('post', '/modelInfo/getAll', data),
};
public probes = {
addProbes: (data) => this.trans('post', '/probes/addProbes', data),
delDevChannel: (data) => this.trans('post', '/probes/delDevChannel', data),
getAll: (data) => this.trans('post', '/probes/getAll', data),
updateDevChannel: (data) => this.trans('post', '/probes/updateDevChannel', data),
};
public probesModel = {
addProbesModel: (data) => this.trans('post', '/probesModel/addProbesModel', data),
delProbesModel: (data) => this.trans('post', '/probesModel/delProbesModel', data),
getAll: (data) => this.trans('get', '/probesModel/getAll', data),
updateProbesModel: (data) => this.trans('post', '/probesModel/updateProbesModel', data),
};
public topicModel = {
addTopicModel: (data) => this.trans('post', '/topicModel/addTopicModel', data),
delTopicModel: (data) => this.trans('post', '/topicModel/delTopicModel', data),
getAll: (data) => this.trans('get', '/topicModel/getAll', data),
updateTopic: (data) => this.trans('post', '/topicModel/updateTopic', data),
};
public topicModelInfo = {
addTopicModelInfo: (data) => this.trans('post', '/topicModelInfo/addTopicModelInfo', data),
delTopicModel: (data) => this.trans('post', '/topicModelInfo/delTopicModel', data),
getAll: (data) => this.trans('post', '/topicModelInfo/getAll', data),
updateTopicModelInfo: (data) => this.trans('post', '/topicModelInfo/updateTopicModelInfo', data),
};
public probesModelInfo = {
addProbesModelInfo: (data) => this.trans('post', '/probesModelInfo/addProbesModelInfo', data),
delProbesModelInfo: (data) => this.trans('post', '/probesModelInfo/delProbesModelInfo', data),
getAll: (data) => this.trans('post', '/probesModelInfo/getAll', data),
updateProbesModelInfo: (data) => this.trans('post', '/probesModelInfo/updateProbesModelInfo', data),
};
private trans(type, addr, data) {
this.sendHttpReq(type, addr, data[0], data[1], data[2], data[3]);
}
private sendHttpReq(type, addr, reqB, next, error, complete) {
let nextFunc;
if (addr === '/login/dologin') {
nextFunc = (data: any) => {
next(data);
};
} else {
nextFunc = (data: any) => {
if (this.http.handleToken(data)) {
next(data);
} else {
if (!this.tokenLoseflag) {
this.message.error(this.translate.instant('loginOutValidityTips'));
this.http.toLoginPage(2000);
this.tokenLoseflag = 1;
setTimeout(() => {
this.tokenLoseflag = 0;
}, 5000);
}
}
};
}
if (!error) {
error = (err) => {
let data;
if (err && err.error && err.error.status) {
if (err.error.status === 401) {
data = {code: 0, message: this.translate.instant('noLoginTips')};
this.router.navigate(['/extra/login']);
} else {
data = {code: 0, message: this.translate.instant('wrongServerWithCode') + err.error.status};
}
} else {
data = {code: 0, message: this.translate.instant('wrongServer')};
}
next(data);
};
}
if (type === 'get') {
this.http.get(this.url + addr, nextFunc, error, complete);
} else {
this.http.post(this.url + addr, reqB, nextFunc, error, complete);
}
}
}
import {Injectable, OnInit} from '@angular/core';
import {CanActivateChild, Router, ActivatedRouteSnapshot, RouterStateSnapshot} from '@angular/router';
import {PermissionService} from './permission';
import {MenuService} from './menu';
@Injectable()
export class AuthService implements CanActivateChild, OnInit {
public login = false;
private permissionR = '';
// 判断是否有 cookie 的标识
isLogin = false;
constructor(private router: Router, private menu: MenuService, private permission: PermissionService) {
}
ngOnInit() {
}
canActivateChild(route: ActivatedRouteSnapshot, state: RouterStateSnapshot) {
const layoutCon = document.getElementById('layoutCon');
if (layoutCon) {
layoutCon.scrollTop = 0;
}
return this.checkLogin() && this.permissionCheck(state.url);
// return this.checkLogin();
// return true;
}
// 登录验证,如果有值就返回true.没有就跳转登录
checkLogin() {
if (window.sessionStorage.getItem('_AMap_AMap.MapInner')) {
return true;
}
this.router.navigate(['/extra/login']);
return false;
}
// 路由跳转权限检测
permissionCheck(routerUrl) {
return true;
}
}
import { Injectable } from '@angular/core';
import { NzMessageService } from 'ng-zorro-antd';
import { isUndefined } from 'util';
import { TranslateService } from '@ngx-translate/core';
@Injectable()
export class CheckService {
constructor( private message: NzMessageService, private translate: TranslateService) {}
formCheck(data, req) {
const fNum = req.field.length;
const fieldStr = '-' + req.field.join('-') + '-';
const field = req.field.filter((item) => data[item] !== null && !isUndefined(data[item])).length;
if (field !== fNum) {
this.message.warning(this.translate.instant('pleaseFillAll'));
return false;
}
const tNum = req.time ? req.time.length : 0;
const time = req.time ? req.time.filter((item) => this.checkTime(fieldStr, data, item)).length : 0;
if (time !== tNum) {
this.message.warning(this.translate.instant('wrongTime'));
return false;
}
const telNum = req.tel ? req.tel.length : 0;
const tel = req.tel ? req.tel.filter((item) => this.checkTel(fieldStr, data, item)).length : 0;
if (tel !== telNum) {
this.message.warning(this.translate.instant('wrongTel'));
return false;
}
const mNum = req.money ? req.money.length : 0;
const money = req.money ? req.money.filter((item) => this.checkMoney(fieldStr, data, item)).length : 0;
if (money !== mNum) {
this.message.warning(this.translate.instant('wrongAmount'));
return false;
}
const nNum = req.num ? req.num.length : 0;
const num = req.num ? req.num.filter((item) => this.checkNum(fieldStr, data, item)).length : 0;
if (num !== nNum) {
this.message.warning(this.translate.instant('wrongNum'));
return false;
}
const f2Num = req.float2 ? req.float2.length : 0;
const float2 = req.float2 ? req.float2.filter((item) => this.checkFloat2(fieldStr, data, item)).length : 0;
if (float2 !== f2Num) {
this.message.warning(this.translate.instant('wrongNum'));
return false;
}
return true;
}
private checkTime(fieldStr, data, time) {
if ((data[time] === '' || isUndefined(data[time]) || data[time] === null) && fieldStr.indexOf('-' + time + '-') > -1) {
return true;
}
if (data[time] && new Date(data[time]).getTime() > 0 && new Date(data[time]).getTime().toString().length === 13) {
return true;
} else {
return false;
}
}
private checkTel(fieldStr, data, tel) {
if ((data[tel] === '' || isUndefined(data[tel]) || data[tel] === null) && fieldStr.indexOf('-' + tel + '-') > -1) {
return true;
}
const reg = new RegExp( '^1\\d{10}$');
if (data[tel].length !== 11 || !reg.test(data[tel])) {
return false;
} else {
return true;
}
}
private checkMoney(fieldStr, data, money) {
if ((data[money] === '' || isUndefined(data[money]) || data[money] === null) && fieldStr.indexOf('-' + money + '-') > -1) {
return true;
}
if (parseFloat(data[money]).toFixed(2) === data[money] && parseInt(data[money], 10).toString().length < 8) {
return true;
} else {
return false;
}
}
private checkNum(fieldStr, data, num) {
if ((data[num] === '' || isUndefined(data[num]) || data[num] === null) && fieldStr.indexOf('-' + num + '-') > -1) {
return true;
}
const reg = new RegExp( '^[0-9]*$');
if (reg.test(data[num])) {
return true;
} else {
return false;
}
}
private checkFloat2(fieldStr, data, float2) {
if ((data[float2] === '' || isUndefined(data[float2]) || data[float2] === null) && fieldStr.indexOf('-' + float2 + '-') > -1) {
return true;
}
if ( parseFloat(data[float2]).toFixed(2).toString() === data[float2]) {
return true;
} else {
return false;
}
}
}
import { Injectable } from '@angular/core';
import { HttpClient, HttpHeaders } from '@angular/common/http';
import { Subscription } from 'rxjs/index';
import { Router } from '@angular/router';
import { NzMessageService } from 'ng-zorro-antd';
@Injectable()
export class HttpService {
constructor(private http: HttpClient, private router: Router, private message: NzMessageService) {
this.subs = new Array<Subscription>();
}
private subs: Subscription[];
private header = new HttpHeaders().append('Content-Type', 'application/json').append('Access-Control-Allow-Origin', '*');
postParamObj = {
withCredentials: true,
headers: this.header
};
getParamObj = {
withCredentials: true,
};
// 封装统一的 http 请求方法
get(url: string,
next?: (value: Response) => void,
error?: (error: any) => void,
complete?: () => void): void {
if (url.indexOf('?') > -1) {
// 有参数
url += `&dateStamp=` + + new Date().getTime().toString();
} else {
// 无参数
url += `?dateStamp=` + new Date().getTime().toString();
}
this.subs.push(this.http.get(`${url}`, this.getParamObj).subscribe(next, error, complete));
}
post(url: string,
data: any,
next?: (value: Response) => void,
error?: (error: any) => void,
complete?: () => void): void {
if (url.indexOf('?') > -1) {
// 有参数
url += `&dateStamp=` + new Date().getTime().toString();
} else {
// 无参数
url += `?dateStamp=` + new Date().getTime().toString();
}
this.subs.push(this.http.post(url, data, this.postParamObj).subscribe(next, error, complete));
}
// token 失效处理函数
handleToken = (value) => {
if (value && value.code && value.code === 2) {
return false;
} else {
return true;
}
}
// 跳转登录页面
toLoginPage(time) {
window.setTimeout(() => {
this.router.navigate(['/extra/login']);
}, time);
}
// 复制属性
public cloneProp(ob, nOb) {
const car = new nOb();
for (const prop in ob) {
if (ob[prop] || ob[prop] === 0) {
car[prop] = ob[prop];
} else {
car[prop] = '';
}
}
return car;
}
}
import { Injectable } from '@angular/core';
import { TranslateService } from '@ngx-translate/core';
@Injectable()
export class MenuService {
constructor(private translate: TranslateService) {}
private menu = {
indexManager: '首页',
dataManager: '数据管理',
alarmWarning: '报警预警',
deviceManager: '传感器管理',
systemManager: '系统设置',
index: '首页',
realData: '实时数据',
historyData: '历史数据',
dataComparison: '数据对比',
warning: '预警管理',
alarm: '报警管理',
};
private menuFront = {
indexManager: 'home',
dataManager: 'dataManage',
alarmWarning: 'alarmWarn',
deviceManager: 'deviceManage',
systemManager: 'systemSet',
index: 'home',
realData: 'actualData',
historyData: 'historyData',
dataComparison: 'compare',
warning: 'warnInfo',
alarm: 'alarmInfo',
};
transform(value: any): any {
return this.translate.instant(value);
}
transformFront(value: any): any {
return this.menuFront[value];
}
}
import { Injectable } from '@angular/core';
import { ApiService } from './api';
import { Router } from '@angular/router';
import { MenuService } from './menu';
@Injectable({
providedIn: 'root'
})
export class PermissionService {
private permissionAll = {};
private permissionTiny = {};
private functions = [];
constructor(private api: ApiService, private menu: MenuService, private router: Router) {
}
getAllPermission(type, data) {
// let roleNo = '';
// if (data.roleNo) {
// roleNo = data.roleNo;
// } else {
// this.router.navigate(['/extra/login']);
// return;
// }
// this.permissionAll = [];
// this.api.permission.getPermissionByRoleNo([{roleNo: roleNo}, (resp: any) => {
// if (resp.constructor === Array) {
// this.permissionAll = resp;
// window.sessionStorage.setItem(encodeURIComponent('_AMap_AMap.OuterEnter'), this.transform(JSON.stringify(resp)));
// this.getTinyPermission(type);
// } else {
// this.router.navigate(['/extra/login']);
// }}]);
}
getTinyPermission(type) {
// this.permissionTiny = [];
// const all: any = this.permissionAll;
// const obj: any = {};
// const opers = [];
// if (all.constructor === Array) {
// all.map((item: any, index) => {
// obj[this.menu.transformFront(item.parentSidebarName)] = {};
// obj[this.menu.transformFront(item.parentSidebarName)].child = [];
// // if ( index === 4 ) {
// // obj[this.menu.transformFront(item.parentSidebarName)].child.push({name: 'personSet'});
// // }
// if (item.sidebarVos.constructor === Array && item.sidebarVos.length > 0) {
// item.sidebarVos.map((side: any, sIndex) => {
// let check = false;
// if (side.permissionShowVos.constructor === Array && side.permissionShowVos.length > 0) {
// side.permissionShowVos.map((oper: any, oIndex) => {
// if (oper.checked && (oper.permissionName === 'factoryConfig' ||
// oper.permissionName === 'monitoringPointConfig' || oper.permissionName === 'cuttingMachineSelect' ||
// oper.permissionName === 'machineRoomSelect')) {
// obj[this.menu.transformFront(oper.permissionName)] = {};
// }
// if (oper.checked) {
// check = true;
// opers.push(oper.permissionName);
// }
// if (oIndex === side.permissionShowVos.length - 1 && check) {
// obj[this.menu.transformFront(item.parentSidebarName)].child.push({name: this.menu.transformFront(side.sidebarName)});
// }
// if (oIndex === side.permissionShowVos.length - 1 && sIndex === item.sidebarVos.length - 1 && index === all.length - 1) {
// this.permissionTiny = obj;
// this.functions = opers;
// this.out(type);
// }
// });
// } else if (sIndex === item.sidebarVos.length - 1 && index === all.length - 1) {
// this.permissionTiny = obj;
// this.functions = opers;
// this.out(type);
// }
// });
// } else if (index === all.length - 1) {
// this.permissionTiny = obj;
// this.functions = opers;
// this.out(type);
// }
// });
// }
}
out(type) {
const permissionCheckJson = JSON.stringify(this.permissionTiny);
window.sessionStorage.setItem(encodeURIComponent('_AMap_AMap.OuterEnterKey'), this.transform(permissionCheckJson));
const funcCheckJson = JSON.stringify(this.functions);
window.sessionStorage.setItem(encodeURIComponent('_AMap_AMap.InterEnterKey'), this.transform(funcCheckJson));
if (permissionCheckJson.indexOf('home') && type === 'login') {
this.router.navigate(['app/home']);
} else {
this.router.navigate(['extra/login']);
}
}
// 生成一个随机token的key值
createTokenKey(length) {
const chars = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9',
'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z',
'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z'];
let num = '';
for (let i = 0; i < length; i++) {
const id = parseInt((Math.random() * 60).toString(), 10);
num += chars[id];
}
return num;
}
transform(data) {
const str = data;
const key = this.createTokenKey(str.length);
let defaultStr = '';
for (let i = 0, length = str.length; i < length; i++) {
defaultStr += str[i] + key[i];
}
return encodeURIComponent(defaultStr);
}
transback(data) {
const str = decodeURIComponent(data);
let defaultStr = '';
for (let i = 0, length = str.length; i < length; i++) {
if (i % 2 === 0) {
defaultStr += str[i];
}
}
return defaultStr;
}
getFull(): any {
let data = window.sessionStorage.getItem(encodeURIComponent('_AMap_AMap.OuterEnter'));
if (data) {
data = JSON.parse(this.transback(data));
return data;
} else {
this.router.navigate(['extra/login']);
return [];
}
}
getTiny(): any {
let data = window.sessionStorage.getItem(encodeURIComponent('_AMap_AMap.OuterEnterKey'));
if (data) {
data = JSON.parse(this.transback(data));
return data;
} else {
this.router.navigate(['extra/login']);
return [];
}
}
private getFuncs(): any {
let data = window.sessionStorage.getItem(encodeURIComponent('_AMap_AMap.InterEnterKey'));
if (data) {
data = JSON.parse(this.transback(data));
return data;
} else {
this.router.navigate(['extra/login']);
return [];
}
}
testFuncs(funcName) {
if (this.functions.length <= 0) {
this.functions = this.getFuncs();
}
if (JSON.stringify(this.functions).indexOf(funcName) > -1) {
return true;
} else {
return false;
}
}
}
import { Injectable, OnInit } from '@angular/core';
import { HttpEvent, HttpInterceptor, HttpHandler, HttpRequest } from '@angular/common/http';
import { Observable } from 'rxjs/index';
@Injectable()
export class AuthInterceptor implements HttpInterceptor, OnInit {
constructor() {
}
token: string;
ngOnInit() {
}
intercept(req: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {
// 这里的拦截了所有的请求,并且加上了token和语言
// const authHeader = '';
// 每次都获取最新的token
this.token = window.sessionStorage.getItem('_AMap_AMap.MapInner') || '';
let lan = localStorage.getItem('witium-default-language') || '';
if (lan === 'zh') {
lan = 'cn';
}
lan = lan || 'cn';
const authReq = req.clone({headers: req.headers.set('AccountToken', this.token).set('AccountLanguage', lan)});
// 额外加上语言识别
// const authLanguage = authReq.clone({headers: authReq.headers.set('AccountLanguage', this.language.authLangauge)})
return next.handle(authReq);
}
}
{
"---------------其他": "---------------其他",
"picMaxTips":"(limit in 200*200)",
"data":"Data",
"per":"pcs",
"tai":"pcs",
"hour":"hours",
"times":"times",
"webPlatform":"WebSite",
"x": "X(mg)",
"y": "Y(mg)",
"z": "Z(mg)",
"temp": "Temperature(℃)",
"press": "Pressure(kPa)",
"humid": "Humidity(%rH)",
"mag_x": "X axis geomagnetism (μT)",
"mag_y": "Y axis geomagnetism (μT)",
"mag_z": "Z axis geomagnetism (μT)",
"light": "Brightness(lux)",
"noise": "Noise(mV)",
"mag_r": "Geomagnetic reluctance(Ω)",
"acc_x": "X axis acceleration(mg)",
"acc_y": "Y axis acceleration(mg)",
"acc_z": "Z axis acceleration(mg)",
"gyros": "Gyroscope angular velocity(°/s)",
"gyros_x": "Gyroscope angular velocity X(°/s)",
"gyros_y": "Gyroscope angular velocity Y(°/s)",
"gyros_z": "Gyroscope angular velocity Z(°/s)",
"---------------侧边栏": "---------------侧边栏",
"alarmInfo": "Alarm information",
"alarmWarn": "Alarm early warning",
"departmentManage": "Department management",
"operateSet": "Operation log",
"factoryManage":"Plant management",
"factoryPaint":"Plant configuration chart",
"loginLog": "Login log",
"personSet":"Personal settings",
"pointAnalyse": "Monitoring point analysis",
"pointManage": "Monitoring point management",
"pointType": "Monitoring point type",
"pointPaint":"Monitoring point configuration chart",
"macRoom": "Server room",
"machineRoom": "Server room management",
"machineRoomDetail": "Server room details",
"roleManage": "Role management",
"historyData": "History data",
"areaManage":"Line management",
"cuttingMachine": "Cutting machine management",
"cuttingMachineDetail": "Cutting machine details",
"deviceManage": "Sensor management",
"deviceModel": "Equipment type",
"compare": "Data comparison",
"dataManage": "Data management",
"actualData": "Realtime data",
"home":"Home page",
"gatewayManage": "Gateway management",
"systemSet": "System setup",
"userManage": "Database user management",
"warnInfo": "Alarm information",
"warnNew": "Add alarm",
"warnEdit": "Modify alarm",
"xdkDetail": "XDK sensor",
"cissDetail": "CISS sensor",
"---------------a": "---------------a",
"installAddr":"Installation address",
"installTime":"Installation time",
"installPlace":"Installation position",
"downloadByTerm":"Downloading data by conditions",
"---------------b": "---------------b",
"alarmInformation":"Alarm information",
"editSensor":"Edit Sensor",
"editMonitoringPoint":"Edit monitoring point",
"editMonitoringPointType":"Edit monitoring point type",
"percent":"Percentile value",
"bind":"Binding",
"bindSensor":"Binding sensor",
"bindMonitoringPoint":"Binding monitoring point",
"bindGateway":"Binding gateway",
"bindWarn":"Binding alarm",
"save":"Save",
"savePic":"Save picture",
"alarm":"Alarm",
"alarmNo":"Alarm number",
"alarmSelect":"Alarm query",
"alarmDispose":"Alarm processing",
"alarmExport":"Alarm export",
"alarmType":"Alarm type",
"alarmDes":"Alarm description",
"alarmTime":"Alarm time",
"alarmInThirty":" Alarm time should be within 30 days.",
"alarmData":"Alarm data",
"alarmDataGraph":"Alarm data chart",
"alarmCountStatis":"Alarm quantity statistics",
"alarmStatisInfo":"Alarm statistics information",
"alarmWarning":"Alarm early warning",
"sorryNotFound":"Sorry, the page you visited does not exist.",
"remark":"Remark",
"edit":"Edit",
"editDepartment":"Edit department",
"editFactoryLine":"Edit line",
"editSensorType":"Edit sensor type",
"editFactory":"Edit plant",
"editMonitoring":"Edit monitoring point",
"editMonitoringType":"Edit monitoring point type",
"editRole":"Edit role",
"editDeviceModel":"Edit equipment type",
"editGateway":"Edit gateway",
"editUser":"Edit user",
"editWarn":"Edit alarm",
"change":"Update",
"boschChina":"Bosch China",
"departmentSelect":"Department query",
"department":"Department management",
"departmentName":"Department name",
"departmentDelete":"Delete department",
"departmentInsert":"Add department",
"departmentUpdate":"Modify department",
"departmentHighestPermission":"Department's highest authority",
"---------------c": "---------------c",
"excess":"excess",
"sensorType": "Sensor type",
"egNum":"Sampling SN",
"params":"Parameter",
"operate":"Operation",
"operateIp":"Operation IP",
"operateSuccess":"Operation success",
"operateDes":"Operation description",
"operateName":"Operation name",
"operationLog":"Operation log",
"operationLogSelect":"Operation log query",
"operationLogExport":"Operation log export",
"operateFail":"Operation failed",
"operateTime":"Operation time",
"operateTips":"Operation hint",
"operateUser":"Operation user",
"operateUserLoginName":"Operation user login name",
"operateUserName":"Operation user name",
"see":"View",
"seeHistory":"Viewing history",
"search":"Query",
"searchParams":"Query parameter",
"searchTimeInOneHour":"Query interval should be less than one hour.",
"factoryLine":"Line",
"factoryLineSelect":"Line query",
"factoryLineName":"Line name",
"factoryLineDelete":"Delete Line",
"factoryLineInsert":"Add line",
"factoryLineUpdate":"Modify line",
"factoryLineHighestPermission":"Line's highest authority",
"factory":"Plant",
"factorySelect":"Plant query",
"factoryArea":"Plant management",
"factoryName":"Plant name",
"factoryConfig":"Plant configuration",
"factoryDelete":"Delete plant",
"factoryInsert":"Add plant",
"factoryInfo":"Plant information",
"factoryUpdate":"Modify plant",
"factoryHighestPermission":"Plant's highest authority",
"moreThanCanBeSelectedSensors":"Exceeding the number of selectable sensors",
"dispose":"Handle",
"disposeResult":"Handling result",
"disposer":"Handler",
"sensor":"Sensor",
"sensorSelect":"Sensor query",
"sensorAllocation":"Distribution sensor",
"sensorNum":"Number of sensors",
"deviceManager":"Sensor management",
"collectorManage":"Sensor management",
"sensorUnbindGateway":"Sensor unbunding gateway",
"deviceType":"Sensor type",
"deviceTypeSelect":"Sensor type query",
"deviceTypeDelete":"Delete sensor type",
"deviceTypeInsert":"Add sensor type",
"deviceTypeUpdate":"Modify sensor type",
"sensorName":"Sensor name",
"sensorDelete":"Delete sensor",
"sensorInsert":"Add sensor",
"sensorUpdate":"Modify sensor",
"sensorSN":"Sensor SN",
"sensorState":"Sensor status",
"createTime":"Create time",
"---------------d": "---------------d",
"waitForSelect":"Content to be selected",
"onceTestResult":"Roughness of single production",
"onceTestResultLineChart":"Roughness of single production",
"current":"Current",
"currentPassword":"Current password",
"knife":"Knife head 4",
"loginOutSuccess":"Log out successfully",
"loginPassword":"Login password",
"loginName":"Login name",
"loginOutValidityTips":"Login certificate is invalid. Please login again.",
"loginWay":"Login way",
"loginLogSelect":"Login log query",
"loginLogExport":"Login log export",
"loginTime":"Login time",
"loginInfo":"Login information",
"under":"is under",
"address":"Address",
"wrongTel":"Incorrect telephone",
"readParams":"Read parameter",
"compareParams":"Contrast parameter",
"---------------e": "---------------e",
"---------------f": "---------------f",
"backToList":"Return list",
"distribute":"Distribution",
"distributeSensor":"Distribution sensor",
"distributeGateway":"Distribution gateway",
"wrongServer":"Server exception",
"wrongServerWithCode":"Server exception,error code",
"contact":"Responsibler",
"contactLinkWay":"Responsibler contact mode",
"contactTel":"Responsibler mobile phone number",
"---------------g": "---------------g",
"sensorBeSelected":"The sensor has been already selected.",
"allKnifeAllTimesInOneMonth":"The number of knife heads used by the cutting machine.",
"selfSystem":"Personal settings",
"selfSelect":"Personal information query",
"personSetSelect":"Personal information query",
"selfUpdate":"Personal information update",
"personSetUpdate":"Personal information update",
"more":"More",
"updateTime":"Update time",
"factoryImg":"Plant picture",
"companyInfo":"Company information",
"wrongReason":"Fault cause",
"---------------h": "---------------h",
"horizontalContrast":"Horizontal contrast",
"userSelect":"Database user query",
"user":"Database user management",
"userDelete":"Delete database user",
"userInsert":"Add database user",
"userUpdate":"Modify database user",
"wrongToGetData":"Get data failed",
"---------------i": "---------------i",
"---------------j": "---------------j",
"machineRoomSelect":"Server room details",
"baseInfo":"Basic information",
"refreshNow":"Realtime refresh",
"loading":"Loading",
"monitoringPoint":"Monitoring point",
"monitoringPointBindingSensor":"Monitoring point binding sensor",
"monitoringPointNo":"Monitoring point number",
"monitoringPointSelect":"Monitoring point query",
"monitoringPointAnalyse":"Monitoring point analysis",
"monitoringPointType":"Monitoring point type",
"monitoringPointTypeSelect":"Monitoring point type query",
"pointTypeSelect":"Monitoring point type query",
"monitoringPointTypeName":"Monitoring point type name",
"monitoringPointTypeDelete":"Monitoring point type delete",
"monitoringPointTypeInsert":"Monitoring point type add",
"pointTypeInsert":"Monitoring point type add",
"monitoringPointTypeUpdate":"Monitoring point type modify",
"pointTypeUpdate":"Monitoring point type modify",
"monitoringPointName":"Monitoring point name",
"monitoringPointDelete":"Delete monitoring point",
"pointTypeDelete":"Delete monitoring point",
"monitoringPointInsert":"Add monitoring point",
"monitoringPointImg":"Monitoring point picture",
"monitoringPointUpdate":"Modify monitoring point",
"monitoringPointStatusStatis":"Monitoring point status chart",
"monitoringPointState":"Monitoring point status",
"monitoringPointConfig":"Monitoring point configuration",
"role":"Role",
"roleSelect":"Role query",
"roleName":"Role name",
"rolePermission":"Role permission",
"roleDelete":"Delete role",
"roleInsert":"Add role",
"roleUpdate":"Modify role",
"end":"End",
"endTime":"End time",
"unbindSensor":"Untying sensor",
"unbindGateway":"Untying gateway",
"wrongAmount":"Incorrect amount",
"lastHalfMonth":"Nearly half a month",
"lastMonthAlarmData":"Alarm data in the past month",
"lastMonthAlarmCounts":"Total alarm times in the past month",
"lastDay":"Nearly one day",
"lastAHour":"Nearly one hour",
"lastHalfDay":"Nearly half a day",
"lastMonth":"Nearly one month",
"lastWeek":"Nearly one week",
"---------------k": "---------------k",
"start":"Start",
"startCompare":"Start comparison",
"startTime":"Start time",
"startEndTimeInOneDay":"Start time and end time should be on the same day.",
"startShouldLessThanEndTime":"Start time should be less than end time",
"startEndTimeShouldInFiveMinutes":"The interval between start time and end time less than 5 minutes.",
"startDownload":"Start downloading",
"---------------l": "---------------l",
"type":"Type",
"typeName":"Type name",
"offline":"Offline",
"historyDataSelect":"History data query",
"quicklyLogin":"Login immediately",
"contactType":"Contact information",
"differentPassword":"The two new passwords are different,please confirm and input again.",
"---------------m": "---------------m",
"password":"Password",
"description":"Description",
"name":"Name",
"---------------n": "---------------n",
"testPercent":"Roughness trend",
"testPercentLineChart":"Roughness trend diagram",
"testResultAve":"Fitting result mean value",
"testResultAveLineChart":"Fitting result mean value broken line chart",
"---------------o": "---------------o",
"---------------p": "---------------p",
"config":"Configuration",
"---------------q": "---------------q",
"remove": "Clear",
"to":"to",
"cutMachine":"Cutting machine",
"cuttingMachineSelect":"Cutting machine details",
"checkIfSerialNumberExists":"Please check if there are sample SN in this period.",
"checkIfAllSensorAndSerialNumFilled":"Please check whether the sensor and sample sn are complete.",
"checkIfAllSensorFilled":"Please check whether comparison sensor is complete.",
"checkIfHasData":"Please check if where is any data in the period.",
"pleaseFillInPassword":"Please input password.",
"pleaseFillInLanguage":"Please input language.",
"pleaseFillInKeyword":"Please input search keywords.",
"pleaseFillInUserName":"Please input username.",
"pleaseAddSensorToCompare":"Please add sensors that need comparision.",
"pleaseFillAll":"Please fill out all required items.",
"pleaseFillSerialNum":"Please fill out sample SN.",
"pleaseFillRequired":"Please fill out required items first.",
"pleaseChooseParams":"Please choose parameter.",
"pleaseChooseSensor":"Please choose sensor.",
"pleaseChooseSensorType":"Please choose sensor type.",
"pleaseChooseCompareParams":"Please choose comparison parameter.",
"pleaseChooseMonitoringPoint":"Please choose monitoring point.",
"pleaseChooseEndTime":"Please choose end time.",
"pleaseChooseStartTime":"Please choose begin time.",
"pleaseChooseStartEndTime":"Please choose begin time and end time.",
"pleaseChoosePermission":"Please choose permission.",
"pleaseChooseDevices":"Please choose equipment.",
"pleaseChooseWarnNo":"Please choose alarm number.",
"pleaseChooseRightAlarmTime":"Please choose correct alarm time.",
"cancel":"Cancel",
"allCleanUp":"All clear",
"allSelected":"All choose",
"confirm":"Confirm",
"confirmUnbindMonitoringPoint":"Confirm untying monitoring point?",
"confirmUnbindGateway":"Confirm untying gateway?",
"confirmDelete":"Confirm deletion?",
"confirmDeleteThisRecord":"Confirm delete the record?",
"confirmNewPassword":"Confirm new password",
"---------------r": "---------------r",
"---------------s": "---------------s",
"all": "All",
"delete":"Delete",
"uploadHeadImg":"Upload head picture",
"uploadImg":"Upload picture",
"max":"upper limit",
"deviceModelSelect":"Equipment type query",
"deviceModelDelete":"Delete equipment type",
"deviceModelInsert":"Add equipment type",
"deviceModelUpdate":"Modify equipment type",
"setParams":"Configuration parameter",
"time":"Time",
"timeShouldInOneHour":"Interval should be within one hour.",
"wrongTime":"Incorrect time",
"realData":"Realtime data",
"realDataSelect":"Realtime date query",
"confirmDeleteThisKnifeBroken":"Confirm delete device collision alarm?",
"phone":"Cell-phone number",
"indexManager":"Home page",
"index":"Home page",
"indexSelect":"Home page query",
"dataComparison":"Data comparison",
"dataComparisonSelect":"Data comparison query",
"dataManager":"Data management",
"wrongNum":"Incorrect numerical value",
"belongDepartment":"Department",
"belongFactory":"Plant",
"belongMonitoringPoint":"Monitoring point",
"belongGroup":"Organization",
"allData":"All data",
"belongFactoryArea":"Plant",
"belongFactoryAlarmMpointNum":"Total number of alarm monitoring points in plant",
"belongFactoryMPointNum":"Total number of monitoring points in plant",
"belongFactoryOfflineMPointNum":"Total number of offline monitoring points in plant",
"belongFactoryOnlineMPointNum":"Total number of online monitoring points in plant",
"belongFactoryNormalMPointNum":"Total number of normal monitoring points in plant",
"belongPlace":"Location",
"---------------t": "---------------t",
"condition":"Condition",
"picUploadSuccess":"Upload picture successfully",
"picUploadFailed":"Upload picture failed.",
"signOut":"Exit",
"fillError":"filled in is incorrect",
"---------------u": "---------------u",
"---------------v": "---------------v",
"---------------w": "---------------w",
"gatewayBindingSensor":"Gateway binding sensor",
"gatewaySelect":"Gateway query",
"gateway":"Gateway management",
"gatewayType":"Gateway type",
"gatewayName":"Gateway name",
"gatewayDelete":"Delete gateway",
"gatewayInsert":"Add gateway",
"gatewayUpdate":"Modify gateway",
"gatewaySN":"Gateway SN",
"gatewayState":"Gateway status",
"unDispose":"Untreated",
"tempHumidTrend":"Temperature and humidity trend",
"noUserInfo":"Unable to read current user information.",
"---------------x": "---------------x",
"modifyTime":"Modify time",
"systemManager":"System setup",
"min":"lower limit",
"nowKnifeTimes":"The number of knife head used",
"nowKnifeTime":"Usage time of knife head",
"nowKnifeRunTimes":"Knife head running times",
"nowKnifeUsed": "The current tool bit \n has been used for",
"nowKnifeRunTime":"Knife head running time",
"detail":"Details",
"detailAddress":"Detail address",
"projectNum":"Project No",
"addDepartment":"Create department",
"addFactoryLine":"Create line",
"addSensor":"Create sensor",
"addSensorType":"Create sensor type",
"addFactory":"Creat plant",
"addMonitoringPoint":"Create monitoring point",
"addMonitoringPointType":"Create monitoring type",
"addDeviceModel":"Create equipment type",
"addGateway":"Create gateway",
"addUser":"Create user",
"addWarn":"Create alarm",
"newPassword":"Create password",
"add":"Create",
"addRole":"Create role",
"modelName":"Type name",
"update":"Modify",
"updatePassword":"Modify password",
"num":"No",
"selectSensor":"Choose sensor",
"selectMonitoringPoint":"Choose monitoring point",
"selectTime":"Choose time",
"---------------y": "---------------y",
"disposed":"Done",
"selected":"Choosed content",
"userNo":"User NO",
"userLogin":"User login",
"userRole":"User role",
"userName":"Username",
"nickName":"Nickname",
"userPhone":"User cell-phone number",
"userHeadImg":"User head picture",
"noLoginTips":"User is not logged in ,please login first.",
"userRealName":"Username",
"userEmail":"User email",
"email":"mailbox",
"warnNo":"Alarm number",
"warningSelect":"Alarm query",
"warningExport":"Alarm export",
"warning":"Alarm management",
"warnName":"Alarm name",
"warningDelete":"Delete alarm",
"warningInsert":"Add alarm",
"warningUpdate":"Modify alarm",
"maybeUsed":"It's expected \n to be used",
"run":"Running",
"---------------z": "---------------z",
"maximum":"maximum",
"minimum":"minimum",
"accountInfo":"Account information",
"online":"Online",
"noData":"No data",
"normal":"Normal",
"linkingToSource":"Ongoing resource connection…",
"toZh":"Ch",
"toEn":"En",
"statusChart":"Status chart",
"state":"Status",
"knifeDispose":"Knife collision treatment ",
"verticalContrast":"Vertical contrast ",
"lastAlarmTime":"Lasted alarm time"
}
{
"---------------a": "---------------a",
"---------------b": "---------------b",
"percent": "百分值",
"change": "变更",
"alarm": "报警",
"alarmInfo": "报警信息",
"alarmWarn": "报警预警",
"edit": "编辑",
"departmentManage": "部门管理",
"---------------c": "---------------c",
"search":"查询",
"operate": "操作",
"operateSet": "操作设置",
"collectorManage": "传感器管理",
"factoryManage":"厂区管理",
"factoryPaint":"厂区配置图",
"---------------d": "---------------d",
"tel": "电话",
"loginName": "登录名",
"loginLog": "登录日志",
"current": "当前",
"---------------e": "---------------e",
"---------------f": "---------------f",
"---------------g": "---------------g",
"more":"更多",
"personSet":"个人设置",
"---------------h": "---------------h",
"---------------i": "---------------i",
"---------------j": "---------------j",
"pointAnalyse": "监测点分析",
"pointManage": "监测点管理",
"pointType": "监测点类型",
"pointPaint":"监测点配置图",
"machineRoom": "机房管理",
"machineRoomDetail": "机房详情",
"end": "结束",
"roleManage": "角色管理",
"---------------k": "---------------k",
"start": "开始",
"---------------l": "---------------l",
"historyData": "历史数据",
"type": "类型",
"---------------m": "---------------m",
"name": "名称",
"moduleManage": "模块管理",
"description": "描述",
"---------------n": "---------------n",
"---------------o": "---------------o",
"---------------p": "---------------p",
"channelTopic": "配置模板管理",
"moduleCenter": "配置中心",
"---------------q": "---------------q",
"remove": "清除",
"confirm": "确认",
"cancel":"取消",
"areaManage":"产线管理",
"cuttingMachine": "切削机管理",
"cuttingMachineDetail": "切削机详情",
"---------------r": "---------------r",
"---------------s": "---------------s",
"deviceManage": "设备管理",
"deviceType": "传感器类型",
"deviceModel": "设备型号",
"delete": "删除",
"time": "时间",
"data": "数据",
"compare": "数据对比",
"dataManage": "数据管理",
"actualData": "实时数据",
"all": "所有",
"home":"首页",
"---------------t": "---------------t",
"loginOut":"退出",
"partManage": "通道模板管理",
"condition": "条件",
"---------------u": "---------------u",
"---------------v": "---------------v",
"---------------w": "---------------w",
"gatewayManage": "网关管理",
"---------------x": "---------------x",
"index": "序号",
"detail":"详情",
"systemSet": "系统设置",
"add": "新增",
"adr": "地址",
"---------------y": "---------------y",
"user": "用户",
"userManage": "后台用户管理",
"warnInfo": "预警信息",
"warnNew": "预警新增",
"warnEdit": "预警编辑",
"---------------z": "---------------z",
"status": "状态",
"subjectManage": "主题模板管理",
"---------------else": "---------------else",
"xdkDetail": "XDK传感器",
"cissDetail": "CISS传感器"
}
{
"---------------其他": "---------------其他",
"picMaxTips":"(宽高为200*200)",
"per":"个",
"tai":"台",
"hour":"小时",
"times":"次",
"webPlatform":"Web端",
"x": "X(mg)",
"y": "Y(mg)",
"z": "Z(mg)",
"temp": "温度(℃)",
"press": "气压(kPa)",
"humid": "湿度(%rH)",
"mag_x": "x轴地磁(μT)",
"mag_y": "y轴地磁(μT)",
"mag_z": "z轴地磁(μT)",
"light": "亮度(lux)",
"noise": "噪音(mV)",
"mag_r": "地磁磁阻(Ω)",
"acc_x": "x轴加速度(mg)",
"acc_y": "y轴加速度(mg)",
"acc_z": "z轴加速度(mg)",
"gyros": "陀螺仪角速度(°/s)",
"gyros_x": "陀螺仪角速度X(°/s)",
"gyros_y": "陀螺仪角速度Y(°/s)",
"gyros_z": "陀螺仪角速度Z(°/s)",
"---------------侧边栏": "---------------侧边栏",
"alarmInfo": "报警信息",
"alarmWarn": "报警预警",
"departmentManage": "部门管理",
"operateSet": "操作日志",
"factoryManage":"厂区管理",
"factoryPaint":"厂区配置图",
"loginLog": "登录日志",
"personSet":"个人设置",
"pointAnalyse": "监测点分析",
"pointManage": "监测点管理",
"pointType": "监测点类型",
"pointPaint":"监测点配置图",
"macRoom": "机房",
"machineRoom": "机房管理",
"machineRoomDetail": "机房详情",
"roleManage": "角色管理",
"historyData": "历史数据",
"areaManage":"产线管理",
"cuttingMachine": "切削机管理",
"cuttingMachineDetail": "切削机详情",
"deviceManage": "设备管理",
"deviceModel": "设备型号",
"compare": "数据对比",
"dataManage": "数据管理",
"actualData": "实时数据",
"home":"首页",
"gatewayManage": "网关管理",
"systemSet": "系统设置",
"userManage": "后台用户管理",
"warnInfo": "预警信息",
"warnNew": "预警新增",
"warnEdit": "预警编辑",
"xdkDetail": "XDK传感器",
"cissDetail": "CISS传感器",
"---------------a": "---------------a",
"installAddr":"安装地址",
"installTime":"安装时间",
"installPlace":"安装位置",
"downloadByTerm":"根据条件下载数据",
"---------------b": "---------------b",
"percent":"百分值",
"bind":"绑定",
"bindSensor":"绑定传感器",
"bindMonitoringPoint":"绑定监测点",
"bindGateway":"绑定网关",
"bindWarn":"绑定预警",
"save":"保存",
"savePic":"保存图片",
"alarm":"报警",
"alarmNo":"报警编号",
"alarmSelect":"报警查询",
"alarmDispose":"报警处理",
"alarmExport":"报警导出",
"alarmType":"报警类型",
"alarmDes":"报警描述",
"alarmTime":"报警时间",
"alarmInThirty":"报警时间应在近30天内",
"alarmData":"报警数据",
"alarmDataGraph":"报警数据图",
"alarmCountStatis":"报警数量统计",
"alarmStatisInfo":"报警统计信息",
"alarmInformation":"报警信息",
"alarmWarning":"报警预警",
"sorryNotFound":"抱歉,您访问的页面不存在",
"remark":"备注",
"edit":"编辑",
"editDepartment":"编辑部门",
"editFactoryLine":"编辑产线",
"editSensor":"编辑传感器",
"editSensorType":"编辑传感器类型",
"editFactory":"编辑工厂",
"editMonitoringPoint":"编辑监测点",
"editMonitoringPointType":"编辑监测点类型",
"editRole":"编辑角色",
"editDeviceModel":"编辑设备型号",
"editGateway":"编辑网关",
"editUser":"编辑用户",
"editWarn":"编辑预警",
"change":"变更",
"boschChina":"博世中国",
"departmentSelect":"部门查询",
"department":"部门管理",
"departmentName":"部门名称",
"departmentDelete":"部门删除",
"departmentInsert":"部门添加",
"departmentUpdate":"部门修改",
"departmentHighestPermission":"部门最高权限",
"---------------c": "---------------c",
"excess":"超过",
"egNum":"采样序号",
"params":"参数",
"operate":"操作",
"operateIp":"操作IP",
"operateSuccess":"操作成功",
"operateDes":"操作描述",
"operateName":"操作名称",
"operationLog":"操作日志",
"operationLogSelect":"操作日志查询",
"operationLogExport":"操作日志导出",
"operateFail":"操作失败",
"operateTime":"操作时间",
"operateTips":"操作提示",
"operateUser":"操作用户",
"operateUserLoginName":"操作用户登录名",
"operateUserName":"操作用户姓名",
"see":"查看",
"seeHistory":"查看历史",
"search":"查询",
"searchParams":"查询参数",
"searchTimeInOneHour":"查询时间间隔应小于一小时",
"factoryLine":"产线",
"factoryLineSelect":"产线查询",
"factoryLineName":"产线名称",
"factoryLineDelete":"产线删除",
"factoryLineInsert":"产线添加",
"factoryLineUpdate":"产线修改",
"factoryLineHighestPermission":"产线最高权限",
"factory":"厂区",
"factorySelect":"厂区查询",
"factoryArea":"厂区管理",
"factoryName":"厂区名称",
"factoryConfig":"厂区配置",
"factoryDelete":"厂区删除",
"factoryInsert":"厂区添加",
"factoryInfo":"厂区信息",
"factoryUpdate":"厂区修改",
"factoryHighestPermission":"厂区最高权限",
"moreThanCanBeSelectedSensors":"超过可选择传感器数量",
"dispose":"处理",
"disposeResult":"处理结果",
"disposer":"处理人",
"sensor":"传感器",
"sensorSelect":"传感器查询",
"sensorAllocation":"传感器分配",
"sensorNum":"传感器个数",
"deviceManager":"传感器管理",
"collectorManage": "传感器管理",
"sensorUnbindGateway":"传感器解绑网关",
"sensorType": "传感器类型",
"deviceType": "传感器类型",
"deviceTypeSelect":"传感器类型查询",
"deviceTypeDelete":"传感器类型删除",
"deviceTypeInsert":"传感器类型添加",
"deviceTypeUpdate":"传感器类型修改",
"sensorName":"传感器名称",
"sensorDelete":"传感器删除",
"sensorInsert":"传感器添加",
"sensorUpdate":"传感器修改",
"sensorSN":"传感器序列号",
"sensorState":"传感器状态",
"createTime":"创建时间",
"---------------d": "---------------d",
"waitForSelect":"待选择内容",
"onceTestResult":"单次粗糙度评价",
"onceTestResultLineChart":"单次粗糙度评价折线图",
"current":"当前",
"currentPassword":"当前密码",
"knife":"刀头",
"loginOutSuccess":"登出成功",
"loginPassword":"登录密码",
"loginName":"登录名",
"loginOutValidityTips":"登录凭证失效,请重新登录",
"loginWay":"登录渠道",
"loginLogSelect":"登录日志查询",
"loginLogExport":"登录日志导出",
"loginTime":"登录时间",
"loginInfo":"登录信息",
"under":"低于",
"address":"地址",
"wrongTel":"电话填写有误",
"readParams":"读取参数",
"compareParams":"对比参数",
"---------------e": "---------------e",
"---------------f": "---------------f",
"backToList":"返回列表",
"distribute":"分配",
"distributeSensor":"分配传感器",
"distributeGateway":"分配网关",
"wrongServer":"服务器异常",
"wrongServerWithCode":"服务器异常,错误代码",
"contact":"负责人",
"contactLinkWay":"负责人联系方式",
"contactTel":"负责人手机号",
"---------------g": "---------------g",
"sensorBeSelected":"该传感器已经被选择",
"allKnifeAllTimesInOneMonth":"该切削机所有刀头使用次数",
"selfSystem":"个人设置",
"selfSelect":"个人信息查询",
"personSetSelect":"个人信息查询",
"selfUpdate":"个人信息更新",
"personSetUpdate":"个人信息更新",
"more":"更多",
"updateTime":"更新时间",
"factoryImg":"工厂图片",
"companyInfo":"公司信息",
"wrongReason":"故障原因",
"---------------h": "---------------h",
"horizontalContrast":"横向对比",
"userSelect":"后台用户查询",
"user":"用户",
"userDelete":"后台用户删除",
"userInsert":"后台用户添加",
"userUpdate":"后台用户修改",
"wrongToGetData":"获取数据失败",
"---------------i": "---------------i",
"---------------j": "---------------j",
"machineRoomSelect":"机房详情",
"baseInfo":"基本信息",
"refreshNow":"即时刷新",
"loading":"加载中",
"monitoringPoint":"监测点",
"monitoringPointBindingSensor":"监测点绑定传感器",
"monitoringPointNo":"监测点编号",
"monitoringPointSelect":"监测点查询",
"monitoringPointAnalyse":"监测点分析",
"monitoringPointType":"监测点类型",
"monitoringPointTypeSelect":"监测点类型查询",
"pointTypeSelect":"监测点类型查询",
"monitoringPointTypeName":"监测点类型名称",
"monitoringPointTypeDelete":"监测点类型删除",
"pointTypeInsert":"监测点类型新增",
"monitoringPointTypeInsert":"监测点类型新增",
"monitoringPointTypeUpdate":"监测点类型修改",
"pointTypeUpdate":"监测点类型修改",
"monitoringPointName":"监测点名称",
"monitoringPointDelete":"监测点删除",
"pointTypeDelete":"监测点类型删除",
"monitoringPointInsert":"监测点添加",
"monitoringPointImg":"监测点图片",
"monitoringPointUpdate":"监测点修改",
"monitoringPointStatusStatis":"监测点状况统计",
"monitoringPointState":"监测点状态",
"monitoringPointConfig":"检测点配置",
"role":"角色",
"roleSelect":"角色查询",
"roleName":"角色名称",
"rolePermission":"角色权限",
"roleDelete":"角色删除",
"roleInsert":"角色添加",
"roleUpdate":"角色修改",
"end":"结束",
"endTime":"结束时间",
"unbindSensor":"解绑传感器",
"unbindGateway":"解绑网关",
"wrongAmount":"金额填写有误",
"lastHalfMonth":"近半个月",
"lastMonthAlarmData":"近一个月报警数据",
"lastMonthAlarmCounts":"近一个月总报警次数",
"lastDay":"近一天",
"lastAHour":"近一小时",
"lastHalfDay":"近半天",
"lastMonth":"近一月",
"lastWeek":"近一周",
"---------------k": "---------------k",
"start":"开始",
"startCompare":"开始对比",
"startTime":"开始时间",
"startEndTimeInOneDay":"开始时间和结束时间应在同一天",
"startShouldLessThanEndTime":"开始时间应小于结束时间",
"startEndTimeShouldInFiveMinutes":"开始时间与结束时间的时间间隔应小于五分钟",
"startDownload":"开始下载",
"---------------l": "---------------l",
"type":"类型",
"typeName":"类型名称",
"offline":"离线",
"historyDataSelect":"历史数据查询",
"quicklyLogin":"立即登录",
"contactType":"联系方式",
"differentPassword":"两次新密码不同,请重新输入.",
"---------------m": "---------------m",
"password":"密码",
"description":"描述",
"name":"名称",
"---------------n": "---------------n",
"testPercent":"粗糙度趋势",
"testPercentLineChart":"粗糙度趋势图",
"testResultAve":"拟合结果均值",
"testResultAveLineChart":"拟合结果均值折线图",
"---------------o": "---------------o",
"---------------p": "---------------p",
"config":"配置",
"---------------q": "---------------q",
"remove": "清除",
"to":"至",
"cutMachine":"切削机",
"cuttingMachineSelect":"切削机详情",
"checkIfSerialNumberExists":"请检查本时段内是否有采样序号",
"checkIfAllSensorAndSerialNumFilled":"请检查对比的传感器和采样序号是否填写完全",
"checkIfAllSensorFilled":"请检查对比的传感器是否填写完全",
"checkIfHasData":"请检查该时段内是否有数据",
"pleaseFillInPassword":"请输入密码",
"pleaseFillInLanguage":"请输入语言",
"pleaseFillInKeyword":"请输入搜索的关键字",
"pleaseFillInUserName":"请输入用户名",
"pleaseAddSensorToCompare":"请添加需要对比的传感器",
"pleaseFillAll":"请填完所有必填项",
"pleaseFillSerialNum":"请填写采样序号",
"pleaseFillRequired":"请先填完必填项",
"pleaseChooseParams":"请选择参数",
"pleaseChooseSensor":"请选择传感器",
"pleaseChooseSensorType":"请选择传感器类型",
"pleaseChooseCompareParams":"请选择对比参数",
"pleaseChooseMonitoringPoint":"请选择监测点",
"pleaseChooseEndTime":"请选择结束时间",
"pleaseChooseStartTime":"请选择开始时间",
"pleaseChooseStartEndTime":"请选择开始时间和结束时间",
"pleaseChoosePermission":"请选择权限",
"pleaseChooseDevices":"请选择设备",
"pleaseChooseWarnNo":"请选择预警编号",
"pleaseChooseRightAlarmTime":"请选择正确的报警时间",
"cancel":"取消",
"allCleanUp":"全清",
"allSelected":"全选",
"confirm":"确认",
"confirmUnbindMonitoringPoint":"确认解绑监测点吗",
"confirmUnbindGateway":"确认解绑网关吗",
"confirmDelete":"确认删除吗",
"confirmDeleteThisRecord":"确认删除这条记录吗",
"confirmNewPassword":"确认新密码",
"---------------r": "---------------r",
"---------------s": "---------------s",
"time": "时间",
"all": "所有",
"delete":"删除",
"uploadHeadImg":"上传头像",
"uploadImg":"上传图片",
"max":"上限",
"deviceModelSelect":"设备型号查询",
"deviceModelDelete":"设备型号删除",
"deviceModelInsert":"设备型号添加",
"deviceModelUpdate":"设备型号修改",
"setParams":"设置参数",
"timeShouldInOneHour":"时间间隔应在一小时内",
"wrongTime":"时间填写有误",
"realData":"实时数据",
"realDataSelect":"实时数据查询",
"confirmDeleteThisKnifeBroken":"是否删除该次设备撞刀报警",
"phone":"手机号",
"indexManager":"首页",
"index":"首页",
"indexSelect":"首页查询",
"data":"数据",
"dataComparison":"数据对比",
"dataComparisonSelect":"数据对比查询",
"dataManager":"数据管理",
"wrongNum":"数值填写有误",
"belongDepartment":"所属部门",
"belongFactory":"所属厂区",
"belongMonitoringPoint":"所属监测点",
"belongGroup":"所属组织",
"allData":"所有数据",
"belongFactoryArea":"所在厂区",
"belongFactoryAlarmMpointNum":"所在厂区报警监测点数",
"belongFactoryMPointNum":"所在厂区监测点总数",
"belongFactoryOfflineMPointNum":"所在厂区离线监测点数",
"belongFactoryOnlineMPointNum":"所在厂区在线监测点数",
"belongFactoryNormalMPointNum":"所在厂区正常监测点数",
"belongPlace":"所在地区",
"---------------t": "---------------t",
"condition":"条件",
"picUploadSuccess":"图片上传成功",
"picUploadFailed":"图片上传失败",
"signOut":"退出",
"fillError":"填写错误",
"---------------u": "---------------u",
"---------------v": "---------------v",
"---------------w": "---------------w",
"gatewayBindingSensor":"网关绑定传感器",
"gatewaySelect":"网关查询",
"gateway":"网关管理",
"gatewayType":"网关类型",
"gatewayName":"网关名称",
"gatewayDelete":"网关删除",
"gatewayInsert":"网关添加",
"gatewayUpdate":"网关修改",
"gatewaySN":"网关序列号",
"gatewayState":"网关状态",
"unDispose":"未处理",
"tempHumidTrend":"温湿度趋势",
"noUserInfo":"无法读取当前用户信息",
"---------------x": "---------------x",
"systemManager":"系统设置",
"min":"下限",
"nowKnifeTimes":"现刀头使用次数",
"nowKnifeTime":"现刀头使用时长",
"nowKnifeRunTimes":"现刀头运行次数",
"nowKnifeUsed": "现刀头已使用",
"nowKnifeRunTime":"现刀头运行时间",
"detail":"详情",
"detailAddress":"详细地址",
"projectNum":"项目编号",
"addDepartment":"新建部门",
"addFactoryLine":"新建产线",
"addSensor":"新建传感器",
"addSensorType":"新建传感器类型",
"addFactory":"新建工厂",
"addMonitoringPoint":"新建监测点",
"addMonitoringPointType":"新建监测点类型",
"addDeviceModel":"新建设备型号",
"addGateway":"新建网关",
"addUser":"新建用户",
"addWarn":"新建预警",
"newPassword":"新密码",
"add":"新增",
"addRole":"新增角色",
"modelName":"型号名称",
"update":"修改",
"updatePassword":"修改密码",
"modifyTime":"修改时间",
"num":"序号",
"selectSensor":"选择传感器",
"selectMonitoringPoint":"选择监测点",
"selectTime":"选择时间",
"---------------y": "---------------y",
"disposed":"已处理",
"selected":"已选择内容",
"userNo":"用户编号",
"userLogin":"用户登录",
"userRole":"用户角色",
"userName":"用户名",
"nickName":"用户昵称",
"userPhone":"用户手机号",
"userHeadImg":"用户头像",
"noLoginTips":"用户未登录,请先登录",
"userRealName":"用户姓名",
"userEmail":"用户邮箱",
"email":"邮箱",
"warnNo":"预警编号",
"warningSelect":"预警查询",
"warningExport":"预警导出",
"warning":"预警管理",
"warnName":"预警名称",
"warningDelete":"预警删除",
"warningInsert":"预警添加",
"warningUpdate":"预警修改",
"maybeUsed":"预计还可使用",
"run":"运行",
"---------------z": "---------------z",
"maximum":"最大值",
"minimum":"最小值",
"accountInfo":"账号信息",
"online":"在线",
"noData":"暂无数据",
"normal":"正常",
"linkingToSource":"正在进行资源连接…",
"toZh":"中",
"toEn":"英",
"statusChart":"状况统计图",
"state":"状态",
"knifeDispose":"撞刀处理",
"verticalContrast":"纵向对比",
"lastAlarmTime":"最近一次报警时间"
}
This source diff could not be displayed because it is too large. You can view the blob instead.
......@@ -3,7 +3,9 @@
// The list of file replacements can be found in `angular.json`.
export const environment = {
production: false
production: false,
baseUrl: 'http://172.16.1.23:8092', // 对外访问测试网地址
imgUrl: 'http://172.16.1.23' // 图片地址
};
/*
......
/* You can add global styles to this file, and also import other style files */
html, body {
margin: 0;
padding: 0;
width: 100%;
height: 100%;
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment