Commit aa6fed30 authored by yating.lin's avatar yating.lin

修改:牛舍告警一览

parent 3021fe72
...@@ -4,15 +4,60 @@ ...@@ -4,15 +4,60 @@
</ion-toolbar> </ion-toolbar>
</ion-header> </ion-header>
<ion-content color="light" style="height: 100%"> <ion-content color="light">
<div class="alarmItem" *ngFor="let a of alarmItem" (click)="toControl(a)">
<div class="listTitle"> <ion-card *ngFor="let item of alarmItems" style="margin-top:10px; margin-bottom:0px;">
<span>{{a.fieldRegionName}}</span> <ion-card-header style="padding-top: 3px; padding-bottom: 3px;">
<span style="float:right;">近一年</span> <ion-card-title style="display: inline-block" style="width:100%">
<div class="cardTitle">
<i class="vo v-fangzi"></i>
<span style="margin-left:10px">{{item.fieldRegionName}}</span>
<span class="alarmNum">{{item.total}}</span>
<span style="float:right; padding-right: 20px;">
<!--<ion-popover-controller></ion-popover-controller>-->
<a (click)="presentPopover($event)">近一年</a>
</span>
</div> </div>
</ion-card-title>
</ion-card-header>
<ion-card-content style="padding-top: 5px; padding-bottom: 5px;">
<div class="sub" style="text-align: center; " style="width:100%">
<!--<ion-icon name="ios-heart" style="padding: auto"></ion-icon>-->
<ion-row style="width:100%">
<ion-col style="padding: 5px; width:51%; border-right:1px solid lightgray">
<div> <div>
<div class="alarmContent"><i class="vo v-guzhang2"></i> &nbsp;&nbsp;未解决故障数/总故障数 {{a.devErr}}/{{a.devErrTotal}}</div> <div style="height: 60px; float:left; width: 40%">
<div class="alarmContent"><i class="vo v-guzhang"></i> &nbsp;&nbsp;未解决预警数/总故障数 {{a.alarm}}/{{a.alarmTotal}}</div> <ion-icon name="ios-heart" style="padding: auto"></ion-icon>
</div>
<div style="height: 60px; float:left; width: 60%">
<div style="height: 35px; float:left;width: 100%">
<span class="label">未解决</span><span style="color:#d33939; font-size:24px;">{{item.devErr}}</span>
</div>
<div style="height: 25px; float:left;width: 100%">
<span class="label">总数</span><span>{{item.devErrTotal}}</span>
</div>
</div> </div>
</div> </div>
</ion-col>
<ion-col style="padding: 5px; width:48%">
<div>
<div style="height: 60px; float:left; width: 40%">
<ion-icon name="ios-heart" style="padding: auto"></ion-icon>
</div>
<div style="height: 60px; float:left; width: 60%">
<div style="height: 35px; float:left;width: 100%">
<span class="label">未解决</span><span style="color:#f0ca45; font-size:24px;">{{item.alarm}}</span>
</div>
<div style="height: 25px; float:left;width: 100%">
<span class="label">总数</span><span>{{item.alarmTotal}}</span>
</div>
</div>
</div>
</ion-col>
</ion-row>
</div>
</ion-card-content>
</ion-card>
</ion-content> </ion-content>
...@@ -22,3 +22,71 @@ ...@@ -22,3 +22,71 @@
text-align: center; text-align: center;
padding-left: 0px padding-left: 0px
} }
.alarmKanban{
// border: #1e2023 1px solid;
width:100%;
//height: auto;
height: 100px;
align-items:center;
justify-content:
center;text-align: center;
//background: url('../../../assets/bg/home_bar.png') no-repeat;
background-image: url('../../../assets/bg/home_bar.png');
background-size:100% 100%;-moz-background-size:100% 100%;
}
.title{
margin-bottom: 5px;
padding-top: 5px;
align-items:center;
justify-content: center;
color: #717171;
font-size: 14px;
}
.sub{
padding-bottom: 3px;
}
.sub-left{
font-size: 20px; //30
position:relative;
// border-right: #cccccc 1px solid;
display: inline;
padding-left: 20px;
}
.sub-right{
font-size: 20px; //30
position:relative;
display: inline;
width: 50%;
padding-left: 20px;
color: #285B90;
}
.alarmNum {
border-radius: 10px;
background-color: #d33939;
display: inline-block;
vertical-align: middle;
// box-shadow: #ccc 0.5px 0.5px 3px;
padding: 2px 2px 2px 2px;
color: white;
margin-left: 10px;
font-size: 12px;
}
.label {
width: 55px;
display: inline-block;
}
.cardTitle {
margin-top:3px;
padding-bottom:3px;
font-size: 16px;
font-weight: normal;
border-bottom: 1px solid lightgray;
}
...@@ -2,6 +2,7 @@ import { Component, OnInit } from '@angular/core'; ...@@ -2,6 +2,7 @@ import { Component, OnInit } from '@angular/core';
import {Api} from '../../service/api'; import {Api} from '../../service/api';
import {NavController} from '@ionic/angular'; import {NavController} from '@ionic/angular';
@Component({ @Component({
selector: 'v-env-alarm', selector: 'v-env-alarm',
templateUrl: './env-alarm.page.html', templateUrl: './env-alarm.page.html',
...@@ -9,45 +10,82 @@ import {NavController} from '@ionic/angular'; ...@@ -9,45 +10,82 @@ import {NavController} from '@ionic/angular';
}) })
export class EnvAlarmPage implements OnInit { export class EnvAlarmPage implements OnInit {
alarmItem = [{ alarmItems = [{
factoryNo: 'FN108050436279648256',
factoryName: '一厂',
fieldRegionNo: 'FRN110268534764224512',
fieldRegionName: '1号牛舍', fieldRegionName: '1号牛舍',
devErr: 36, devErr: 36,
devErrTotal:136, devErrTotal: 55,
alarm:21, alarm: 20,
alarmTotal:121 alarmTotal: 55,
},{ total: 56
}, {
factoryNo: 'FN108050436279648256',
factoryName: '一厂',
fieldRegionNo: 'FRN110268534764224512',
fieldRegionName: '2号牛舍', fieldRegionName: '2号牛舍',
devErr: 1, devErr: 36,
devErrTotal:11, devErrTotal: 55,
alarm:0, alarm: 20,
alarmTotal:10 alarmTotal: 55,
},{ total: 56
}, {
factoryNo: 'FN108050436279648256',
factoryName: '一厂',
fieldRegionNo: 'FRN110268534764224512',
fieldRegionName: '3号牛舍', fieldRegionName: '3号牛舍',
devErr: 2, devErr: 36,
devErrTotal:12, devErrTotal: 55,
alarm:3, alarm: 20,
alarmTotal:13 alarmTotal: 55,
},]; total: 56
}, {
factoryNo: 'FN108050436279648256',
factoryName: '一厂',
fieldRegionNo: 'FRN110268534764224512',
fieldRegionName: '4号牛舍',
devErr: 36,
devErrTotal: 55,
alarm: 20,
alarmTotal: 55,
total: 56
}];
constructor(private api: Api,public nav: NavController) { } constructor(private api: Api, public nav: NavController) {
customElements.define('popover-page', class ModalContent extends HTMLElement {
connectedCallback() {
this.innerHTML = `
<ion-list>
<ion-list-header>Ionic</ion-list-header>
<ion-item button>Learn Ionic</ion-item>
<ion-item button>Documentation</ion-item>
<ion-item button>Showcase</ion-item>
<ion-item button>GitHub Repo</ion-item>
</ion-list>
<ion-button expand="block" onClick="dismissPopover()">确认</ion-button>
`;
}
});
}
ngOnInit() { ngOnInit() {
this.api.alert.getAll(['{"fieldRegionType":"牛舍"}',(data) => { this.api.alert.getAll([{fieldRegionType: '牛舍'}, (data) => {
if(data.total > 0) { if (data.total > 0) {
let rows = data.rows; if (data.rows && data.rows.constructor === Array) {
if(rows.constructor === Array){ this.alarmItems = data.rows;
this.alarmItem = rows; // rows.map((value, index) => {
rows.map((value, index)=> { // // this.totalAlert = this.totalAlert + value.devErr + value.alarm;
// this.totalAlert = this.totalAlert + value.devErr + value.alarm; //
// });
});
} }
} }
}]); }]);
} }
toControl(one){
const query = '/env-alarmDetail?name=' + one.fieldRegionName + '&no='+ one.fieldRegionNo; toControl(one) {
const query = '/env-alarmDetail?name=' + one.fieldRegionName + '&no=' + one.fieldRegionNo;
// this.tf.transfer({ // this.tf.transfer({
// url: '/' + one.url, // url: '/' + one.url,
// query: query, // query: query,
...@@ -56,4 +94,13 @@ export class EnvAlarmPage implements OnInit { ...@@ -56,4 +94,13 @@ export class EnvAlarmPage implements OnInit {
console.log(query); console.log(query);
this.nav.navigateForward(query); this.nav.navigateForward(query);
} }
async presentPopover(ev) {
const popoverElement = Object.assign(document.createElement('ion-popover'), {
component: 'popover-page',
event: event
});
document.body.appendChild(popoverElement);
return await popoverElement.present();
}
} }
...@@ -268,45 +268,14 @@ ...@@ -268,45 +268,14 @@
</ion-item-divider> </ion-item-divider>
<ion-item class="fanItem" *ngIf="isOpenInHouse" @shrink > <ion-item class="fanItem" *ngIf="isOpenInHouse" @shrink >
<ion-grid> <ion-grid>
<!--<ion-row>-->
<!--<ion-col>牛群回舍时需恢复上述的设备</ion-col>-->
<!--</ion-row>-->
<!--<ion-row>-->
<!--<ion-col *ngFor="let device of curCowshed.leave">-->
<!--<ion-item lines="none" class="cow">-->
<!--<ion-label>{{device}}</ion-label>-->
<!--&lt;!&ndash; <ion-checkbox color="primary" class="cowCheckBox" slot="start" [(ngModel)]="curCowshed.propertyConfig.toft"></ion-checkbox>&ndash;&gt;-->
<!--</ion-item>-->
<!--</ion-col>-->
<!--</ion-row>-->
<!--<ion-row>-->
<!--<ion-col>牛群离舍时需完全关闭的设备</ion-col>-->
<!--</ion-row>-->
<!--<ion-row>-->
<!--<ion-col *ngFor="let device of curCowshed.back">-->
<!--<ion-item lines="none" class="cow">-->
<!--<ion-label>{{device}}</ion-label>-->
<!--&lt;!&ndash; <ion-checkbox color="primary" class="cowCheckBox" slot="start" [(ngModel)]="curCowshed.propertyConfig.toft"></ion-checkbox>&ndash;&gt;-->
<!--</ion-item>-->
<!--</ion-col>-->
<!--</ion-row>-->
<ion-row> <ion-row>
<ion-col>牛群回舍时需恢复上述的设备</ion-col> <ion-col>牛群回舍时需恢复上述的设备</ion-col>
</ion-row> </ion-row>
<ion-row> <ion-row>
<ion-col> <ion-col *ngFor="let device of curCowshed.leave">
<ion-item lines="none" class="cow"><ion-label>风机</ion-label> <ion-item lines="none" class="cow">
<ion-checkbox color="primary" class="cowCheckBox" slot="start"></ion-checkbox> <ion-checkbox color="primary" class="cowCheckBox" slot="start" [(ngModel)]="device.flag"></ion-checkbox>
</ion-item> <ion-label>{{device.type}}</ion-label>
</ion-col>
<ion-col>
<ion-item lines="none" class="cow"><ion-label>喷淋</ion-label>
<ion-checkbox color="primary" class="cowCheckBox" slot="start"></ion-checkbox>
</ion-item>
</ion-col>
<ion-col>
<ion-item lines="none" class="cow"><ion-label>照明</ion-label>
<ion-checkbox color="primary" class="cowCheckBox" slot="start"></ion-checkbox>
</ion-item> </ion-item>
</ion-col> </ion-col>
</ion-row> </ion-row>
...@@ -314,22 +283,55 @@ ...@@ -314,22 +283,55 @@
<ion-col>牛群离舍时需完全关闭的设备</ion-col> <ion-col>牛群离舍时需完全关闭的设备</ion-col>
</ion-row> </ion-row>
<ion-row> <ion-row>
<ion-col> <ion-col *ngFor="let device of curCowshed.back">
<ion-item lines="none" class="cow"><ion-label>风机</ion-label> <ion-item lines="none" class="cow">
<ion-checkbox color="primary" class="cowCheckBox" slot="start"></ion-checkbox> <ion-checkbox color="primary" class="cowCheckBox" slot="start" [(ngModel)]="device.flag"></ion-checkbox>
</ion-item> <ion-label>{{device.type}}</ion-label>
</ion-col>
<ion-col>
<ion-item lines="none" class="cow"><ion-label>喷淋</ion-label>
<ion-checkbox color="primary" class="cowCheckBox" slot="start"></ion-checkbox>
</ion-item>
</ion-col>
<ion-col>
<ion-item lines="none" class="cow"><ion-label>照明</ion-label>
<ion-checkbox color="primary" class="cowCheckBox" slot="start"></ion-checkbox>
</ion-item> </ion-item>
</ion-col> </ion-col>
</ion-row> </ion-row>
<!--<ion-row>-->
<!--<ion-col>牛群回舍时需恢复上述的设备</ion-col>-->
<!--</ion-row>-->
<!--<ion-row>-->
<!--<ion-col>-->
<!--<ion-item lines="none" class="cow"><ion-label>风机</ion-label>-->
<!--<ion-checkbox color="primary" class="cowCheckBox" slot="start"></ion-checkbox>-->
<!--</ion-item>-->
<!--</ion-col>-->
<!--<ion-col>-->
<!--<ion-item lines="none" class="cow"><ion-label>喷淋</ion-label>-->
<!--<ion-checkbox color="primary" class="cowCheckBox" slot="start"></ion-checkbox>-->
<!--</ion-item>-->
<!--</ion-col>-->
<!--<ion-col>-->
<!--<ion-item lines="none" class="cow"><ion-label>照明</ion-label>-->
<!--<ion-checkbox color="primary" class="cowCheckBox" slot="start"></ion-checkbox>-->
<!--</ion-item>-->
<!--</ion-col>-->
<!--</ion-row>-->
<!--<ion-row>-->
<!--<ion-col>牛群离舍时需完全关闭的设备</ion-col>-->
<!--</ion-row>-->
<!--<ion-row>-->
<!--<ion-col>-->
<!--<ion-item lines="none" class="cow"><ion-label>风机</ion-label>-->
<!--<ion-checkbox color="primary" class="cowCheckBox" slot="start"></ion-checkbox>-->
<!--</ion-item>-->
<!--</ion-col>-->
<!--<ion-col>-->
<!--<ion-item lines="none" class="cow"><ion-label>喷淋</ion-label>-->
<!--<ion-checkbox color="primary" class="cowCheckBox" slot="start"></ion-checkbox>-->
<!--</ion-item>-->
<!--</ion-col>-->
<!--<ion-col>-->
<!--<ion-item lines="none" class="cow"><ion-label>照明</ion-label>-->
<!--<ion-checkbox color="primary" class="cowCheckBox" slot="start"></ion-checkbox>-->
<!--</ion-item>-->
<!--</ion-col>-->
<!--</ion-row>-->
</ion-grid> </ion-grid>
</ion-item> </ion-item>
...@@ -398,7 +400,7 @@ ...@@ -398,7 +400,7 @@
<ion-row> <ion-row>
<ion-col class="thiItem">应激等级</ion-col> <ion-col class="thiItem">应激等级</ion-col>
<ion-col class="thiItem">THI值(<)</ion-col> <ion-col class="thiItem">THI值(<)</ion-col>
<ion-col class="thiItem">预警等级</ion-col> <ion-col class="thiItem">预警方式</ion-col>
</ion-row> </ion-row>
<ion-row *ngFor="let heatStress of curCowshed.heatStressList"> <ion-row *ngFor="let heatStress of curCowshed.heatStressList">
<ion-col class="thiItem">{{heatStress.heatStressLevel}}</ion-col> <ion-col class="thiItem">{{heatStress.heatStressLevel}}</ion-col>
......
...@@ -38,8 +38,8 @@ export class EnvCfgPage implements OnInit { ...@@ -38,8 +38,8 @@ export class EnvCfgPage implements OnInit {
isWisdomModel: 0, isWisdomModel: 0,
propertyConfig: {toft: '', hoft: ''}, propertyConfig: {toft: '', hoft: ''},
config: [], config: [],
leave: [], leave: [{type: '风机', flag: true}, {type: '喷淋', flag: false}, {type: '照明', flag: true}],
back: [], back: [{type: '风机', flag: false}, {type: '喷淋', flag: true}, {type: '照明', flag: false}],
environmentConfigJson: {TU: 0, TL: 0, HU: 0, HL: 0}, environmentConfigJson: {TU: 0, TL: 0, HU: 0, HL: 0},
heatStressList: [] }; heatStressList: [] };
...@@ -311,8 +311,8 @@ export class EnvCfgPage implements OnInit { ...@@ -311,8 +311,8 @@ export class EnvCfgPage implements OnInit {
controlConfig: {power: 100, startDate: '10-01', stopDate: '11-02'}, controlConfig: {power: 100, startDate: '10-01', stopDate: '11-02'},
} }
], ],
leave: ['风机', '喷淋', '水槽'], leave: [{type: '风机', flag: true}, {type: '喷淋', flag: false}, {type: '照明', flag: true}],
back: ['风机', '喷淋', '水槽'], back: [{type: '风机', flag: false}, {type: '喷淋', flag: true}, {type: '照明', flag: false}],
environmentConfigJson: {HL: 0, HU: 100, TL: -10, TU: 50}, environmentConfigJson: {HL: 0, HU: 100, TL: -10, TU: 50},
heatStressList: [ heatStressList: [
{ {
......
...@@ -43,10 +43,10 @@ export class EnvChangeModelPage implements OnInit { ...@@ -43,10 +43,10 @@ export class EnvChangeModelPage implements OnInit {
saveModels() { saveModels() {
this.controlConfig.forEach((item) => { this.controlConfig.forEach((item) => {
item.on = this.formartTime(item.on); item.on = this.formatTime(item.on);
item.off = this.formartTime(item.off); item.off = this.formatTime(item.off);
item.startDate = this.formartDate(item.startDate); item.startDate = this.formatDate(item.startDate);
item.stopDate = this.formartDate(item.stopDate); item.stopDate = this.formatDate(item.stopDate);
}); });
const query = '?changeModelCfg=' + JSON.stringify(this.controlConfig); const query = '?changeModelCfg=' + JSON.stringify(this.controlConfig);
// this.nav.navigateForward('', ); // this.nav.navigateForward('', );
...@@ -60,11 +60,11 @@ export class EnvChangeModelPage implements OnInit { ...@@ -60,11 +60,11 @@ export class EnvChangeModelPage implements OnInit {
this.nav.back(); this.nav.back();
} }
formartTime(time) { formatTime(time) {
return this.datepipe.transform(time, 'HH:mm'); return this.datepipe.transform(time, 'HH:mm');
} }
formartDate(date) { formatDate(date) {
return this.datepipe.transform(date, 'MM-dd'); return this.datepipe.transform(date, 'MM-dd');
} }
} }
This diff is collapsed.
This source diff could not be displayed because it is too large. You can view the blob instead.
This diff is collapsed.
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