Commit b6931069 authored by zhuangzhuang's avatar zhuangzhuang

临时保存

parent 56932e6c
......@@ -22,6 +22,7 @@ import {EnvCfgPageModule} from './envCtrl/env-cfg/env-cfg.module';
import {EnvCfgPage} from './envCtrl/env-cfg/env-cfg.page';
import {EnvHomePage} from './envCtrl/env-home/env-home.page';
import {EnvHistoryPage} from './envCtrl/env-history/env-history.page';
import {EnvAddModelPage} from './envCtrl/env-add-model/env-add-model.page';
const routes: Routes = [
{
......@@ -67,6 +68,7 @@ const routes: Routes = [
{path: 'env-alarmDetail', component: EnvAlarmDetailPage},
{ path: 'env-alarm-detail', loadChildren: './envCtrl/env-alarm-detail/env-alarm-detail.module#EnvAlarmDetailPageModule' },
{path: 'tabs', loadChildren: './envCtrl/tabs/tabs.module#TabsPageModule'},
{path: 'env-add-model', component: EnvAddModelPage},
];
@NgModule({
......
......@@ -56,6 +56,7 @@ import {EnvLightPage} from './envCtrl/env-light/env-light.page';
import {NgxEchartsModule} from 'ngx-echarts';
import {NgxDatatableModule} from '@swimlane/ngx-datatable';
import {EnvAlarmDetailPage} from './envCtrl/env-alarm-detail/env-alarm-detail.page';
import {EnvAddModelPage} from './envCtrl/env-add-model/env-add-model.page';
@NgModule({
declarations: [
......@@ -85,6 +86,7 @@ import {EnvAlarmDetailPage} from './envCtrl/env-alarm-detail/env-alarm-detail.pa
EnvAlarmDetailPage,
// EnvCfgPage,
// EnvHomePage,
EnvAddModelPage,
],
entryComponents: [],
imports: [
......
import { NgModule } from '@angular/core';
import { CommonModule } from '@angular/common';
import { FormsModule } from '@angular/forms';
import { Routes, RouterModule } from '@angular/router';
import { IonicModule } from '@ionic/angular';
import { EnvAddModelPage } from './env-add-model.page';
import {WtModule} from '../../components/wt/wt.module';
const routes: Routes = [
{
path: '',
component: EnvAddModelPage,
}
];
@NgModule({
imports: [
CommonModule,
FormsModule,
IonicModule,
WtModule, // for test
RouterModule.forChild(routes)
],
declarations: [
EnvAddModelPage,
]
})
export class EnvAddModelPageModule {}
<ion-header>
<ion-toolbar color="secondary">
<ion-buttons slot="start">
<ion-back-button text="" ></ion-back-button>
</ion-buttons>
<ion-title mode="ios" class="title">喷淋模式填写</ion-title>
</ion-toolbar>
</ion-header>
<ion-content style="background-color: #F3F4F4;">
<ion-item-sliding *ngFor="let cfg of controlConfig">
<ion-item class="fanItem">
<ion-grid>
<ion-row style="width: 100%">
<ion-col size="auto" style="font-size: 13px;">
<ion-item class="fanItem" lines="none">
<ion-label style="width:80px">模式名</ion-label>
<ion-input [(ngModel)]="cfg.name" style="width:80px;"></ion-input>
</ion-item>
</ion-col>
<ion-col size="auto" style="font-size: 13px;">
<ion-item class="fanItem" lines="none">
<ion-label style="width:80px">间隔时间</ion-label>
<ion-input style="width:50px;" [(ngModel)]="cfg.interval"></ion-input>
<ion-label></ion-label>
</ion-item>
</ion-col>
</ion-row>
<ion-row style="width: 100%">
<ion-col size="auto" style="font-size: 13px;">
<ion-item class="fanItem" lines="none">
<ion-label style="width:80px">设置温度</ion-label>
<ion-input style="width:50px;" [(ngModel)]="cfg.T" (ionFocus)="tempHaveTouch($event)"></ion-input>
<ion-label></ion-label>
</ion-item>
</ion-col>
</ion-row>
<ion-row style="width: 100%">
<ion-col size="auto" style="font-size: 13px;">
<ion-item class="fanItem" lines="none">
<ion-label style="width:80px">A区喷淋时间</ion-label>
<ion-input style="width:50px;" [(ngModel)]="cfg.A"></ion-input>
<ion-label></ion-label>
</ion-item>
</ion-col>
<ion-col size="auto" style="font-size: 13px;">
<ion-item class="fanItem" lines="none">
<ion-label style="width:80px">B区喷淋时间</ion-label>
<ion-input style="width:50px;" [(ngModel)]="cfg.B"></ion-input>
<ion-label></ion-label>
</ion-item>
</ion-col>
</ion-row>
</ion-grid>
</ion-item>
<ion-item-options side="end">
<ion-button color='danger' expand="full" style="width:15%;height:90%" (click)="deleteShowerModel(cfg)">删除</ion-button>
</ion-item-options>
</ion-item-sliding>
<ion-item width="100%" lines="none">
<!--<ion-button color="secondary" class="addBtn" round (click)="onAddModel()">添加模式</ion-button>-->
<ion-icon name="add-circle" (click)="addModel()"></ion-icon>
</ion-item>
</ion-content>
import { CUSTOM_ELEMENTS_SCHEMA } from '@angular/core';
import { async, ComponentFixture, TestBed } from '@angular/core/testing';
import { EnvAddModelPage } from './env-add-model.page';
describe('EnvAddModelPage', () => {
let component: EnvAddModelPage;
let fixture: ComponentFixture<EnvAddModelPage>;
beforeEach(async(() => {
TestBed.configureTestingModule({
declarations: [ EnvAddModelPage ],
schemas: [CUSTOM_ELEMENTS_SCHEMA],
})
.compileComponents();
}));
beforeEach(() => {
fixture = TestBed.createComponent(EnvAddModelPage);
component = fixture.componentInstance;
fixture.detectChanges();
});
it('should create', () => {
expect(component).toBeTruthy();
});
});
import {Component, OnInit} from '@angular/core';
import {Api} from '../../service/api';
import {NavController} from '@ionic/angular';
import {ActivatedRoute} from '@angular/router';
import {Load} from '../../service/load';
import {Transfer} from '../../service/transfer';
@Component({
selector: 'v-env-add-model',
templateUrl: './env-add-model.page.html',
styleUrls: ['./env-add-model.page.scss'],
})
export class EnvAddModelPage implements OnInit {
constructor(public nav: NavController,
private api: Api,
private ac: ActivatedRoute,
private load: Load,
private tf: Transfer) {}
controlConfig = [];
ngOnInit() {
this.init();
}
init() {
this.controlConfig = [{name: '', interval: '', T: '', A: '', B: ''}];
}
addModel() {
this.controlConfig.push({name: '', interval: '', T: '', A: '', B: ''});
}
}
......@@ -130,14 +130,14 @@
<ion-row style="width: 100%">
<ion-col size="auto" style="font-size: 13px;">
<ion-item class="fanItem" lines="none">
<ion-label style="width:80px">A区喷时间</ion-label>
<ion-label style="width:80px">A区喷时间</ion-label>
<ion-input style="width:50px;" [(ngModel)]="cfg.A"></ion-input>
<ion-label></ion-label>
</ion-item>
</ion-col>
<ion-col size="auto" style="font-size: 13px;">
<ion-item class="fanItem" lines="none">
<ion-label style="width:80px">B区喷时间</ion-label>
<ion-label style="width:80px">B区喷时间</ion-label>
<ion-input style="width:50px;" [(ngModel)]="cfg.B"></ion-input>
<ion-label></ion-label>
</ion-item>
......@@ -146,7 +146,10 @@
</ion-grid>
</ion-item>
<ion-item-options side="end">
<ion-button color='danger' expand="full" style="width:15%;height:90%" (click)="deleteShowerModel(cfg)">删除</ion-button>
<!--<ion-button color='danger' expand="full" style="width:15%;height:90%" (click)="deleteShowerModel(cfg)">删除</ion-button>-->
<div style="text-content: center; background-color: lightgray;">
<ion-icon name="remove-circle" color='danger' class="deleteIcon" (click)="deleteShowerModel(cfg)" style="margin-top: 120px;"></ion-icon>
</div>
</ion-item-options>
</ion-item-sliding>
<ion-item width="100%" lines="none">
......@@ -213,7 +216,10 @@
</ion-grid>
</ion-item>
<ion-item-options side="end">
<ion-button color='danger' expand="full" style="width:15%;height:90%" (click)="deleteLightModel(cfg)">删除</ion-button>
<!--<ion-button color='danger' expand="full" style="width:15%;height:90%" (click)="deleteLightModel(cfg)">删除</ion-button>-->
<div style="text-content: center; background-color: lightgray;" (click)="deleteLightModel(cfg)">
<ion-icon name="remove-circle" color='danger' class="deleteIcon" style="margin-top: 70px;"></ion-icon>
</div>
</ion-item-options>
</ion-item-sliding>
<ion-item width="100%" lines="none" *ngIf="isOpenLight">
......
......@@ -75,3 +75,9 @@
border-left: 1px solid;
border-top: 1px solid;
}
.deleteIcon {
font-size:25px;
margin-left: 10px;
margin-right: 10px;
}
import {Component, OnInit} from '@angular/core';
import {PickerController, AlertController} from '@ionic/angular';
import {PickerController, AlertController, NavController} from '@ionic/angular';
import {Api} from '../../service/api';
import {Load} from '../../service/load';
import {shrink, stretch, zoomIn, zoomOut, fadeIn, fadeOut, up, down} from '../../animations/animations';
import {Transfer} from '../../service/transfer';
@Component({
selector: 'v-env-cfg',
......@@ -20,10 +21,8 @@ export class EnvCfgPage implements OnInit {
'selecting': false,
};
// light = {
// 'selecting': false,
// };
constructor(public alerCtrl: AlertController, private pickerController: PickerController, private api: Api, private load: Load) {
constructor(public alerCtrl: AlertController, private pickerController: PickerController,
private api: Api, private load: Load, public nav: NavController, private tf: Transfer) {
}
isError = false;
......@@ -49,9 +48,6 @@ export class EnvCfgPage implements OnInit {
light: any = {};
waterChannel: any = {};
// 环境参数预警配置
environmentConfig = [];
// 设置菜单折叠/打开
isOpenProperty = false;
isOpenFan = false;
......@@ -110,6 +106,62 @@ export class EnvCfgPage implements OnInit {
return options;
}
workModeEvent(item) {
// this.updateCowshed();
}
// async openCalendarPicker(numColumns = 1, numOptions = 5, columnOptions = this.defaultColumnOptions) {
// const picker = await this.pickerController.create({
// columns: this.getColumns(numColumns, numOptions, columnOptions),
// buttons: [
// {
// text: 'Cancel',
// role: 'cancel',
// handler: () => {
// this.fanMode.selecting = false;
// }
// },
// {
// text: 'Confirm',
// handler: (value) => {
// console.log(`Got Value ${value}`);
// this.fanMode.selecting = false;
// }
// }
// ]
// });
// await picker.present();
// }
tempHaveTouch(event) {
for (let i = 10; i <= 50; i++) {
this.defaultColumnOptions[0][i - 10] = i.toString();
}
if (this.fanMode.selecting === false) {
this.fanMode.selecting = true;
this.openPicker(1, 41, this.defaultColumnOptions, event);
}
}
humHaveTouch(event) {
for (let i = 0; i <= 100; i++) {
this.defaultColumnOptions[0][i] = i.toString();
}
if (this.fanMode.selecting === false) {
this.fanMode.selecting = true;
this.openPicker(1, 101, this.defaultColumnOptions, event);
}
}
lightTimeHaveFouch() {
// console.log('lightTimeHaveFouch');
// if (this.light.selecting === false) {
// this.light.selecting = true;
// this.openPicker();
// }
}
ngOnInit() {
// this.pickerController = document.querySelector('ion-picker-controller');
this.init();
......@@ -206,62 +258,6 @@ export class EnvCfgPage implements OnInit {
// ----------------------------------------------------
}
workModeEvent(item) {
// this.updateCowshed();
}
// async openCalendarPicker(numColumns = 1, numOptions = 5, columnOptions = this.defaultColumnOptions) {
// const picker = await this.pickerController.create({
// columns: this.getColumns(numColumns, numOptions, columnOptions),
// buttons: [
// {
// text: 'Cancel',
// role: 'cancel',
// handler: () => {
// this.fanMode.selecting = false;
// }
// },
// {
// text: 'Confirm',
// handler: (value) => {
// console.log(`Got Value ${value}`);
// this.fanMode.selecting = false;
// }
// }
// ]
// });
// await picker.present();
// }
tempHaveTouch(event) {
for (let i = 10; i <= 50; i++) {
this.defaultColumnOptions[0][i - 10] = i.toString();
}
if (this.fanMode.selecting === false) {
this.fanMode.selecting = true;
this.openPicker(1, 41, this.defaultColumnOptions, event);
}
}
humHaveTouch(event) {
for (let i = 0; i <= 100; i++) {
this.defaultColumnOptions[0][i] = i.toString();
}
if (this.fanMode.selecting === false) {
this.fanMode.selecting = true;
this.openPicker(1, 101, this.defaultColumnOptions, event);
}
}
lightTimeHaveFouch() {
// console.log('lightTimeHaveFouch');
// if (this.light.selecting === false) {
// this.light.selecting = true;
// this.openPicker();
// }
}
// 获取当前牛舍配置信息
selectCowshed() {
this.api.config.getAll([{'fieldRegionNo': this.curFieldRegionNo}, (data) => {
......@@ -557,7 +553,6 @@ export class EnvCfgPage implements OnInit {
const modelCount = this.light.controlConfig.length;
const selectedModel = models.filter(data => data.patternModelName === selectedName);
selectedModel[0].configJson.id = modelCount + 1;
debugger;
this.shower.controlConfig.push(selectedModel[0].configJson);
}
}
......@@ -599,7 +594,7 @@ export class EnvCfgPage implements OnInit {
handler: (value) => {
// 自定义
if (value === 'other') {
// TODO
this.toNextPage(device);
} else {
if (1 === device) {
this.referenceModel(models, value);
......@@ -646,4 +641,21 @@ export class EnvCfgPage implements OnInit {
this.light.controlConfig.forEach((item, index) => item.id = index + 1);
}
toNextPage(device) {
debugger;
let query = '';
if (device === 2) {
query = '/env-add-model';
} else if (device === 3) {
query = '/env-change-model';
}
this.tf.transfer({
url: '/' + device.url,
query: query,
hash: ''
});
this.nav.navigateForward(query);
}
}
import { NgModule } from '@angular/core';
import { CommonModule } from '@angular/common';
import { FormsModule } from '@angular/forms';
import { Routes, RouterModule } from '@angular/router';
import { IonicModule } from '@ionic/angular';
import { EnvChangeModelPage } from './env-change-model.page';
import {WtModule} from '../../components/wt/wt.module';
const routes: Routes = [
{
path: '',
component: EnvChangeModelPage,
}
];
@NgModule({
imports: [
CommonModule,
FormsModule,
IonicModule,
WtModule, // for test
RouterModule.forChild(routes)
],
declarations: [
EnvChangeModelPage,
]
})
export class EnvChangeModelPageModule {}
<ion-header>
<ion-toolbar color="secondary">
<ion-buttons slot="start">
<ion-back-button text="" ></ion-back-button>
</ion-buttons>
<ion-title mode="ios" class="title">{{item.fieldRegionName}}详情</ion-title>
<ion-buttons slot="end">
<ion-button style="font-size: medium" (click)="toHistory(item)">历史</ion-button>
</ion-buttons>
</ion-toolbar>
<div class="top">
<span [ngClass]="{'online': item.online, 'offline': !item.online}">{{item.online ? '在线' : '离线'}} </span>
<span *ngIf="item.operationModel" class="online">{{item.operationModel ? '平控' :'现控'}} </span>
<span *ngIf="item.operationModel" [ngClass]="{'online': item.isWisdomModel, 'offline': !item.isWisdomModel}" class="online">智控 </span>
<span *ngIf="item.ts" class="right">{{item.ts | date: 'yyyy-MM-dd HH:mm'}}</span>
</div>
<div style="background-color: #F0F0F0;" align="center">
<v-kanban class="home-bar" name="温度" [inData]="item.temp" iconClass="vo v-wendu" iconColor="#285B90" iconSize="20px" fontSize="14px"></v-kanban>
<v-kanban class="home-bar" name="湿度" [inData]="item.humi" iconClass="vo v-shidu" iconColor="#285B90" iconSize="20px" fontSize="14px"></v-kanban>
<v-kanban class="home-bar" name="热应激" [inData]="item.heatStressLevelName" iconClass="vo v-nav-ico" [iconColor]="item.heatStressColor" iconSize="20px" fontSize="14px"></v-kanban>
<v-kanban class="home-bar" name="在舍状态" [inData]="item.inHouse" iconClass="vo v-dapeng-" iconColor="#285B90" iconSize="20px" fontSize="14px"></v-kanban>
</div>
<div style="background-color: #F0F0F0; height: 30px; padding-right: 10px; padding-top: 5px;">
<ion-label style="margin-left:15px; height: 30px; vertical-align: middle;">在离舍开关控制</ion-label>
<v-switch (click)="setInHouse(item.inHouse)" [value]="item.inHouse" [loading]="loading"></v-switch>
</div>
</ion-header>
<ion-content style="background-color: #F3F4F4;">
<!--<ion-router-outlet></ion-router-outlet>-->
<ion-tabs>
<ion-tab-bar slot="top">
<ion-tab-button tab="fan" class="tabSelected">
<ion-label>风机</ion-label>
</ion-tab-button>
<ion-tab-button tab="shower" class="tabSelected" [routerLink]="showerLink"> <!--[rootParams]="fieldRegionNo"-->
<ion-label>喷淋</ion-label>
</ion-tab-button>
<ion-tab-button tab="light" class="tabSelected" [routerLink]="lightLink">
<ion-label>照明</ion-label>
</ion-tab-button>
<ion-tab-button tab="waterchannel" class="tabSelected" [routerLink]="waterchannelLink">
<ion-label>水槽</ion-label>
</ion-tab-button>
</ion-tab-bar>
</ion-tabs>
</ion-content>
import { CUSTOM_ELEMENTS_SCHEMA } from '@angular/core';
import { async, ComponentFixture, TestBed } from '@angular/core/testing';
import { EnvChangeModelPage } from './env-change-model.page';
describe('EnvChangeModelPage', () => {
let component: EnvChangeModelPage;
let fixture: ComponentFixture<EnvChangeModelPage>;
beforeEach(async(() => {
TestBed.configureTestingModule({
declarations: [ EnvChangeModelPage ],
schemas: [CUSTOM_ELEMENTS_SCHEMA],
})
.compileComponents();
}));
beforeEach(() => {
fixture = TestBed.createComponent(EnvChangeModelPage);
component = fixture.componentInstance;
fixture.detectChanges();
});
it('should create', () => {
expect(component).toBeTruthy();
});
});
import {Component, OnInit} from '@angular/core';
import {Api} from '../../service/api';
import {NavController} from '@ionic/angular';
import {ActivatedRoute} from '@angular/router';
import {Load} from '../../service/load';
import {Transfer} from '../../service/transfer';
@Component({
selector: 'v-env-change-model',
templateUrl: './env-change-model.page.html',
styleUrls: ['./env-change-model.page.scss'],
})
export class EnvChangeModelPage implements OnInit {
constructor(public nav: NavController,
private api: Api,
private ac: ActivatedRoute,
private load: Load,
private tf: Transfer) {}
item: any = {};
fieldRegionNo = '';
loading = false;
// 发送指令延时判断
comm = {
remain: 20,
isLoading: true
};
// fan = '/env-detail/fan';
showerLink = '';
lightLink = '';
waterchannelLink = '';
ngOnInit() {
this.init();
}
init() {
this.comm.isLoading = false;
this.comm.remain = 0;
this.ac.queryParams.subscribe((data) => {
this.fieldRegionNo = data.no;
});
this.getData(0);
}
initLayout() {
// this.showerLink = '/env-detail/shower/' + this.fieldRegionNo;
// this.lightLink = '/env-detail/light/' + this.fieldRegionNo;
// this.waterchannelLink = '/env-detail/waterchannel/' + this.fieldRegionNo;
if (this.item && this.item.heatStressLevel && this.item.heatStressLevel !== '') {
this.item.heatStressColor = this.item.heatStressLevel === '0' ? '#71fa1d' :
this.item.heatStressLevel === '1' ? '#71fa1d' :
this.item.heatStressLevel === '2' ? '#FAB139' :
this.item.heatStressLevel === '3' ? '#ff6a1f' : '#b22222';
}
}
getData(time) {
if (time) {
this.load.toLoad('加载中...', false);
}
// this.api.cowshedApp.getRealDataByFieldRegionNo([{'fieldRegionNo' : this.fieldRegionNo}, (data) => {
// if (data) {
// this.item = data;
// this.initLayout();
// }
// }]);
// ----------------------------------------------
// TODO 测试用准备数据
this.item = {
// 3-重度热应激 在线 平控 非智控(自控) 有报警
fieldRegionNo: 'FRN136641006052720640',
fieldRegionName: '1号牛舍',
temp: '23.5',
humi: '82.8',
heatStressLevel: '3',
heatStressLevelName: this.getHeatStressLevelName('3'),
online: 1, // 0-离线,1-在线
operationModel: 1, // 0-现控,1-平控
isWisdomModel: 0, // 0-非智控(自控),1-智控
alarm: 1,
inHouse : this.getInHouseState(1), // 0-离舍,1-在舍
ts: '2019-08-05 23:44',
};
this.initLayout();
// ----------------------------------------------
}
getHeatStressLevelName(id) {
let levelName = '';
switch (id) {
case '0':
levelName = '无';
break;
case '1' :
levelName = '轻';
break;
case '2' :
levelName = '中';
break;
case '3' :
levelName = '重';
break;
case '4' :
levelName = 'II重';
break;
default:
break;
}
return levelName;
}
getInHouseState(id) {
let stateName = '';
switch (id) {
case 0:
stateName = '离舍 ';
break;
case 1:
stateName = '在舍';
break;
default:
break;
}
return stateName;
}
toHistory(item) {
const query = 'env-history?no=' + item.fieldRegionNo;
this.nav.navigateForward(query);
}
setInHouse() {
this.loading = true;
// TODO 在离舍开关控制
this.loading = false;
}
// doRefresh(event) {
// setTimeout(() => {
// this.getData(0);
// event.target.complete();
// }, 2000);
// }
}
......@@ -9,6 +9,7 @@ export const environment = {
// url: 'http://172.16.1.53:8096', // cy
// url: 'http://172.16.1.51:8097', // lin
// url: 'http://211.161.200.169:19200', // zz
// url: 'http://172.16.1.52:8096', // zz
// url: 'http://172.16.1.13:8096', // 测试
mqttUrl: '172.16.1.24', // mqttUrl: '172.16.1.24:48083',
// mqttUrl: '211.161.200.169', // 辉度外网访问mqtt地址
......
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