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

接口调试

parent eba7dfa5
......@@ -8,20 +8,20 @@
</ion-header>
<ion-content style="background-color: #F3F4F4;">
<div style="max-height: calc(100% - 100px);overflow-y:auto;">
<ion-item-sliding *ngFor="let cfg of controlConfig">
<ion-item-sliding *ngFor="let allCfg 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 class="inputText" [(ngModel)]="cfg.name" style="width:80px;"></ion-input>
<ion-input class="inputText" [(ngModel)]="allCfg.config.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 class="inputText" style="width:50px;" [(ngModel)]="cfg.interval"></ion-input>
<ion-input class="inputText" style="width:50px;" [(ngModel)]="allCfg.config.interval"></ion-input>
<ion-label></ion-label>
</ion-item>
</ion-col>
......@@ -30,7 +30,7 @@
<ion-col size="auto" style="font-size: 13px;">
<ion-item class="fanItem" lines="none">
<ion-label style="width:80px">设置温度</ion-label>
<ion-input class="inputText" style="width:50px;" [(ngModel)]="cfg.T" (ionFocus)="tempHaveTouch($event)"></ion-input>
<ion-input class="inputText" style="width:50px;" [(ngModel)]="allCfg.config.T" (ionFocus)="tempHaveTouch($event)"></ion-input>
<ion-label></ion-label>
</ion-item>
</ion-col>
......@@ -39,14 +39,14 @@
<ion-col size="auto" style="font-size: 13px;">
<ion-item class="fanItem" lines="none">
<ion-label style="width:80px">A区喷淋时间</ion-label>
<ion-input class="inputText" style="width:50px;" [(ngModel)]="cfg.A"></ion-input>
<ion-input class="inputText" style="width:50px;" [(ngModel)]="allCfg.config.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 class="inputText" style="width:50px;" [(ngModel)]="cfg.B"></ion-input>
<ion-input class="inputText" style="width:50px;" [(ngModel)]="allCfg.config.B"></ion-input>
<ion-label></ion-label>
</ion-item>
</ion-col>
......@@ -55,7 +55,7 @@
</ion-item>
<ion-item-options side="end">
<div style="text-content: center; background-color: lightgray;">
<ion-icon name="remove-circle" color='danger' class="deleteIcon" (click)="deleteModel(cfg)" style="margin-top: 120px;"></ion-icon>
<ion-icon name="remove-circle" color='danger' class="deleteIcon" (click)="deleteModel(allCfg.config)" style="margin-top: 120px;"></ion-icon>
</div>
</ion-item-options>
</ion-item-sliding>
......
import {Component, OnInit} from '@angular/core';
import {Api} from '../../service/api';
import {NavController, PickerController} from '@ionic/angular';
import {ActivatedRoute} from '@angular/router';
import {Load} from '../../service/load';
import {Transfer} from '../../service/transfer';
@Component({
selector: 'v-env-add-model',
......@@ -25,18 +21,21 @@ export class EnvAddModelPage implements OnInit {
}
init() {
this.controlConfig = [{id: 1, name: '', interval: '', T: '', A: '', B: ''}];
this.controlConfig = [{id: 1, config: {id: 1, name: '', interval: '', T: '', A: '', B: ''}}];
}
addModel() {
const modelCount = this.controlConfig.length;
this.controlConfig.push({id: modelCount + 1, name: '', interval: '', T: '', A: '', B: ''});
this.controlConfig.push({id: modelCount + 1, config: {id: modelCount + 1, name: '', interval: '', T: '', A: '', B: ''}});
}
deleteModel(one) {
const updateModel = this.controlConfig.filter(data => data.id !== one.id);
this.controlConfig = updateModel;
this.controlConfig.forEach((item, index) => item.id = index + 1);
this.controlConfig.forEach((item, index) => {
item.id = index + 1;
item.config.id = index + 1;
});
}
saveModels() {
......
......@@ -36,7 +36,7 @@
}
.popLabel {
width: 120px;
// width: 120px;
font-size: 15px;
--padding-start: 5px;
--padding-end: 5px;
......@@ -45,7 +45,7 @@
}
.popContent {
width: 135px !important;
// width: 135px !important;
margin-bottom:5px;
margin-right:5px;
--padding-start: 5px;
......
......@@ -102,7 +102,7 @@
}
.popContent {
width: 135px !important;
// width: 135px !important;
margin-bottom:5px;
margin-right:5px;
--padding-start: 5px;
......
......@@ -71,20 +71,20 @@ export class EnvAlarmPage implements OnInit {
connectedCallback() {
this.innerHTML = `
<ion-list class="popContent">
<ion-radio-group style="width: 135px;">
<ion-item style="width: 135px;">
<ion-radio-group style="">
<ion-item style="">
<ion-label class="popLabel">近一年</ion-label>
<ion-radio slot="start" value="12" checked id="popSelect1"></ion-radio>
</ion-item>
<ion-item style="width: 135px;">
<ion-item style="">
<ion-label class="popLabel">近六个月</ion-label>
<ion-radio slot="start" value="6" id="popSelect2"></ion-radio>
</ion-item>
<ion-item style="width: 135px;">
<ion-item style="">
<ion-label class="popLabel">近三个月</ion-label>
<ion-radio slot="start" value="3" id="popSelect3"></ion-radio>
</ion-item>
<ion-item style="width: 135px;">
<ion-item style="">
<ion-label class="popLabel">近一个月</ion-label>
<ion-radio slot="start" value="1" id="popSelect4"></ion-radio>
</ion-item>
......
This diff is collapsed.
......@@ -81,3 +81,11 @@
margin-left: 10px;
margin-right: 10px;
}
.heatSelect {
font-size:12px;
--padding-bottom: 0px;
--padding-end: 0px;
--padding-start: 0px;
--padding-top: 0px;
}
This diff is collapsed.
......@@ -8,14 +8,14 @@
</ion-header>
<ion-content style="background-color: #F3F4F4;">
<div style="max-height: calc(100% - 100px);overflow-y:auto;">
<ion-item-sliding *ngFor="let cfg of controlConfig" >
<ion-item-sliding *ngFor="let allCfg 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 class="inputText" style="width:80px;" [(ngModel)]="cfg.name"></ion-input>
<ion-input class="inputText" style="width:80px;" [(ngModel)]="allCfg.config.name"></ion-input>
</ion-item>
</ion-col>
</ion-row>
......@@ -24,14 +24,14 @@
<ion-item class="fanItem" lines="none">
<ion-label style="width:80px">日期范围</ion-label>
<!--<ion-input placeholder={{cfg.startTime}} (ionFocus)="tempHaveTouch()" style="width:50px;"></ion-input>-->
<ion-datetime class="inputDateTime timepicker" [(ngModel)]="cfg.startDate" displayFormat="MM-DD" cancelText="取消" doneText="确认"></ion-datetime>
<ion-datetime class="inputDateTime timepicker" [(ngModel)]="allCfg.config.startDate" displayFormat="MM-DD" cancelText="取消" doneText="确认"></ion-datetime>
</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-label style="width:60px">~</ion-label>
<!--<ion-input placeholder={{cfg.endTime}} (ionFocus)="tempHaveTouch()" style="width:50px;"></ion-input>-->
<ion-datetime class="inputDateTime timepicker" [(ngModel)]="cfg.stopDate" displayFormat="MM-DD" cancelText="取消" doneText="确认"></ion-datetime>
<ion-datetime class="inputDateTime timepicker" [(ngModel)]="allCfg.config.stopDate" displayFormat="MM-DD" cancelText="取消" doneText="确认"></ion-datetime>
</ion-item>
</ion-col>
</ion-row>
......@@ -39,14 +39,14 @@
<ion-col size="auto" style="font-size: 13px;">
<ion-item class="fanItem" lines="none">
<ion-label style="width:80px">开灯时间</ion-label>
<ion-datetime class="inputDateTime timepicker" [(ngModel)]="cfg.on" displayFormat="HH:mm" cancelText="取消" doneText="确认"></ion-datetime>
<ion-datetime class="inputDateTime timepicker" [(ngModel)]="allCfg.config.on" displayFormat="HH:mm" cancelText="取消" doneText="确认"></ion-datetime>
<!--<ion-input style="width:50px;" [(ngModel)]="cfg.on" (ionFocus)="tempHaveTouch()"></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-datetime class="inputDateTime timepicker" [(ngModel)]="cfg.off" displayFormat="HH:mm" cancelText="取消" doneText="确认"></ion-datetime>
<ion-datetime class="inputDateTime timepicker" [(ngModel)]="allCfg.config.off" displayFormat="HH:mm" cancelText="取消" doneText="确认"></ion-datetime>
<!--<ion-input style="width:50px;" [(ngModel)]="cfg.off" (ionFocus)="tempHaveTouch()"></ion-input>-->
</ion-item>
</ion-col>
......@@ -54,7 +54,7 @@
</ion-grid>
</ion-item>
<ion-item-options side="end">
<div style="text-content: center; background-color: lightgray;" (click)="deleteModel(cfg)">
<div style="text-content: center; background-color: lightgray;" (click)="deleteModel(allCfg)">
<ion-icon name="remove-circle" color='danger' class="deleteIcon" style="margin-top: 70px;"></ion-icon>
</div>
</ion-item-options>
......
......@@ -27,26 +27,33 @@ export class EnvChangeModelPage implements OnInit {
}
init() {
this.controlConfig = [{id: 1, name: '', startDate: '', stopDate: '', on: '', off: ''}];
this.controlConfig = [{id: 1, config: {id: 1, name: '', startDate: '', stopDate: '', on: '', off: ''}}];
}
addModel() {
const modelCount = this.controlConfig.length;
this.controlConfig.push({id: modelCount + 1, name: '', startDate: '', stopDate: '', on: '', off: ''});
this.controlConfig.push({
id : modelCount + 1,
config: {id: modelCount + 1, name: '', startDate: '', stopDate: '', on: '', off: ''}});
}
deleteModel(one) {
const updateModel = this.controlConfig.filter(data => data.id !== one.id);
this.controlConfig = updateModel;
this.controlConfig.forEach((item, index) => item.id = index + 1);
this.controlConfig.forEach((item, index) => {
item.id = index + 1;
item.config.id = index + 1;
});
}
saveModels() {
this.controlConfig.forEach((item) => {
item.on = this.formatTime(item.on);
item.off = this.formatTime(item.off);
item.startDate = this.formatDate(item.startDate);
item.stopDate = this.formatDate(item.stopDate);
this.controlConfig.forEach((item, index) => {
item.id = index + 1;
item.config.id = index + 1;
item.config.on = this.formatTime(item.config.on);
item.config.off = this.formatTime(item.config.off);
item.config.startDate = this.formatDate(item.config.startDate);
item.config.stopDate = this.formatDate(item.config.stopDate);
});
const query = '?changeModelCfg=' + JSON.stringify(this.controlConfig);
// this.nav.navigateForward('', );
......
......@@ -19,7 +19,7 @@
<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.inHouseName" iconClass="vo v-dapeng-" iconColor="#285B90" iconSize="20px" fontSize="14px"></v-kanban>
<v-kanban class="home-bar" name="在舍状态" [inData]="item.inHouse.inHouse === 1 ? '在舍' : '离舍'" iconClass="vo v-dapeng-" iconColor="#285B90" iconSize="20px" fontSize="14px"></v-kanban>
</div>
<div class="inHouse">
<ion-label class="inHouseLabel">在离舍开关控制</ion-label>
......
......@@ -18,7 +18,7 @@ export class EnvDetailPage implements OnInit {
private load: Load,
private tf: Transfer) {}
item: any = {
item = {
factoryNo: '',
factoryName: '',
fieldRegionNo: '',
......@@ -26,13 +26,15 @@ export class EnvDetailPage implements OnInit {
temp: 0,
humi: 0,
heatStressLevel: 0,
heatStressColor: '#71fa1d',
heatStressLevelName: '无',
online: 0,
operationModel: 1,
isWisdomModel: 1,
alarm: 1,
inHouse: {
inHouse: 1,
inHouseName: '',
inHouseName: '离舍',
fieldDeviceNo: '',
fieldDeviceType: '',
},
......@@ -62,8 +64,8 @@ export class EnvDetailPage implements OnInit {
this.comm.remain = 0;
this.ac.queryParams.subscribe((data) => {
this.fieldRegionNo = data.no;
this.getData(0);
});
this.getData(0);
}
initLayout() {
......@@ -104,7 +106,12 @@ export class EnvDetailPage implements OnInit {
// operationModel: 1, // 0-现控,1-平控
// isWisdomModel: 0, // 0-非智控(自控),1-智控
// alarm: 1,
// inHouse : this.getInHouseState(1), // 0-离舍,1-在舍
// inHouse : {
// inHouse: 1,
// inHouseName: this.getInHouseState(1), // 0-离舍,1-在舍},
// fieldDeviceNo: 'FDN15615456135612',
// fieldDeviceType: '牛舍'
// },
// ts: '2019-08-05 23:44',
// };
// this.initLayout();
......@@ -114,19 +121,19 @@ export class EnvDetailPage implements OnInit {
getHeatStressLevelName(level) {
let levelName = '';
switch (level) {
case '0':
case 0:
levelName = '无';
break;
case '1' :
case 1 :
levelName = '轻';
break;
case '2' :
case 2 :
levelName = '中';
break;
case '3' :
case 3 :
levelName = '重';
break;
case '4' :
case 4 :
levelName = 'II重';
break;
default:
......@@ -154,21 +161,23 @@ export class EnvDetailPage implements OnInit {
// 在离舍开关控制
inHouseControl(inHouse) {
if (inHouse.fieldDeviceNo !== null && inHouse.fieldDeviceNo !== '') {
const opt = {fieldDeviceNo: '', fieldDeviceType: '', op: '', ts: 0};
const opt = {fieldDeviceNo: '', fieldDeviceType: '', op: 0, ts: 0};
opt.fieldDeviceNo = inHouse.fieldDeviceNo;
opt.fieldDeviceType = inHouse.fieldDeviceType;
opt.op = inHouse.inHouse;
opt.op = inHouse.inHouse ? 1 : 0;
opt.ts = new Date().valueOf();
this.comm.remain = 20;
this.api.control.controlCowedSwitch([opt, (data) => {
if (data && data.code === 1) {
this.getData(1);
this.api.presentMsgToast(data.message);
// this.alarmMsg.locked = false;
} else {
this.api.presentMsgToast(data.message);
}
// if (data && data.code === 1) {
// this.getData(1);
// this.api.presentMsgToast(data.message);
// // this.alarmMsg.locked = false;
// } else {
// this.api.presentMsgToast(data.message);
// }
this.getData(0);
this.api.presentMsgToast(data.message);
this.comm.remain = 0;
}]);
}
......
......@@ -23,8 +23,8 @@
margin-bottom: 5px;">控制/状态</h1>
<ion-item *ngIf="batchSwitch" lines="full" insert="false">
<ion-label>一键控制</ion-label>
<ion-toggle slot="end" [checked]="batchSwitch.op === 1" [disabled]="batchSwitch.disabled"
(load)="batchSwitch.load" (ionChange)="toggle(batchSwitch)"></ion-toggle>
<ion-toggle slot="end" [checked]="batchSwitch.op" [disabled]="batchSwitch.disabled"
[(ngModel)]="batchSwitch.op" (load)="batchSwitch.load" (click)="toggle(batchSwitch)"></ion-toggle>
<!--<v-switch (click)="allCheck(batchSwitch)" [value]="batchSwitch.op" [disabled]="batchSwitch.disabled" [loading]="batchSwitch.load"></v-switch>-->
</ion-item>
<div>
......@@ -35,10 +35,10 @@
<ion-card-content class="cardContent">
<!--<ion-toggle slot="middle" [checked]="device.state"></ion-toggle>-->
<ion-toggle class="btn-switch" *ngIf="device.alarm === 0" [checked]="batchSwitch.op === 1" [disabled]="device.disabled"
(click)="deviceCheck(device)"></ion-toggle>
<ion-toggle class="btn-switch" *ngIf="device.alarm === 1" [checked]="batchSwitch.op === 1" [disabled]="device.disabled" color="danger"
(click)="deviceCheck(device)"></ion-toggle>
<ion-toggle class="btn-switch" *ngIf="device.alarm === 0" [checked]="device.op" [disabled]="device.disabled"
[(ngModel)]="device.op" (click)="deviceCheck(device)"></ion-toggle>
<ion-toggle class="btn-switch" *ngIf="device.alarm === 1" [checked]="device.op" [disabled]="device.disabled" color="danger"
[(ngModel)]="device.op" (click)="deviceCheck(device)"></ion-toggle>
<!--<v-switch *ngIf="device.alarm === 0" class="btn-switch" (click)="deviceCheck(device)" [value]="device.state" [disabled]="device.disabled" [loading]="device.load"></v-switch>-->
<!--<v-switch *ngIf="device.alarm === 1" class="btn-switch" color="danger" (click)="deviceCheck(device)" [value]="device.state" [disabled]="device.disabled" [loading]="device.load"></v-switch>-->
</ion-card-content>
......
import { Component, OnInit } from '@angular/core';
import { Component, OnInit } from '@angular/core';
import {Api} from '../../service/api';
import {ActivatedRoute} from '@angular/router';
import {Load} from '../../service/load';
......@@ -21,7 +21,7 @@ export class EnvFanPage implements OnInit {
// 各设备信息
devices = [];
// 一鍵控制按钮
batchSwitch = {op: undefined, type: undefined, load: false, disabled: undefined};
batchSwitch = {op: false, type: undefined, load: false, disabled: undefined};
controlModelOptions = [
{modelId: 0, modelValue: '手控模式'},
......@@ -34,11 +34,17 @@ export class EnvFanPage implements OnInit {
isLoading : true
};
constructor(private api: Api, private ac: ActivatedRoute, private load: Load, private alertControlle: AlertController) { }
constructor(private api: Api, private ac: ActivatedRoute, private load: Load, private alertController: AlertController) { }
ngOnInit() {
this.ionViewWillEnter();
this.init();
}
ionViewWillEnter() {
}
init() {
this.ac.queryParams.subscribe((data) => {
this.fieldRegionNo = data.no;
......@@ -50,28 +56,31 @@ export class EnvFanPage implements OnInit {
this.load.toLoad('加载中...', false);
}
this.api.cowshedApp.getFengJiData([{fieldRegionNo: this.fieldRegionNo}, (data) => {
// if (data && data.fieldRegionNo) {
// this.fieldRegionNo = data.fieldRegionNo;
// this.fieldDeviceType = data.fieldDeviceType;
// this.controlModel = data.controlModel;
// this.devices = data.param;
//
// this.initButtons();
// }
if (data && data.fieldRegionNo) {
this.fieldRegionNo = data.fieldRegionNo;
this.fieldDeviceType = data.fieldDeviceType;
this.controlModel = data.controlModel;
this.devices = data.param;
this.devices.forEach(device => {
device.op = device.state === 1 ? true : false;
});
// START--------------------------------------------------------------------
// TODO 测试用准备数据
this.fieldDeviceType = '风机';
this.controlModel = 0;
this.devices = [{fieldDeviceNo: '136641005998194688', fieldDeviceName: '1号组', state: 1, alarm: 1},
{fieldDeviceNo: '136641005998194688', fieldDeviceName: '2号组', state: 0, alarm: 1},
{fieldDeviceNo: '136641005998194688', fieldDeviceName: '3号组', state: 1, alarm: 0},
{fieldDeviceNo: '136641005998194688', fieldDeviceName: '4号组', state: 0, alarm: 1},
{fieldDeviceNo: '136641005998194688', fieldDeviceName: '5号组', state: 1, alarm: 0},
{fieldDeviceNo: '136641005998194688', fieldDeviceName: '6号组', state: 1, alarm: 0}];
this.initButtons();
// END--------------------------------------------------------------------
this.initButtons();
}
}]);
// START--------------------------------------------------------------------
// TODO 测试用准备数据
// this.fieldDeviceType = '风机';
// this.controlModel = 0;
// this.devices = [{fieldDeviceNo: '136641005998194688', fieldDeviceName: '1号组', state: 1, alarm: 1},
// {fieldDeviceNo: '136641005998194688', fieldDeviceName: '2号组', state: 0, alarm: 1},
// {fieldDeviceNo: '136641005998194688', fieldDeviceName: '3号组', state: 1, alarm: 0},
// {fieldDeviceNo: '136641005998194688', fieldDeviceName: '4号组', state: 0, alarm: 1},
// {fieldDeviceNo: '136641005998194688', fieldDeviceName: '5号组', state: 1, alarm: 0},
// {fieldDeviceNo: '136641005998194688', fieldDeviceName: '6号组', state: 1, alarm: 0}];
// this.initButtons();
// END--------------------------------------------------------------------
}
initButtons() {
......@@ -85,15 +94,17 @@ export class EnvFanPage implements OnInit {
// [一键控制]按钮(默认: 开启)
// 当任意子按钮[关闭]的状态下: 关闭 以外:开启
this.batchSwitch.op = 1;
this.batchSwitch.op = true;
this.devices.map((device) => {
if (device.state === 0) {
this.batchSwitch.op = 0;
if (device.op === false) {
this.batchSwitch.op = false;
}
});
}
toggle(btn) {
// btn.op = btn.op ? 1 : 0;
// event.preventDefault();
// a.loading = true;
this.opChangeComfirm(btn);
......@@ -101,8 +112,8 @@ export class EnvFanPage implements OnInit {
async opChangeComfirm(btn) {
const msgHeader = this.fieldDeviceType;
const msgOp = btn.op ? '关闭' : '打开';
const alert = await this.alertControlle.create({
const msgOp = btn.op ? '打开' : '关闭';
const alert = await this.alertController.create({
header: '请注意',
// subHeader: '确定要' + msgOp + ' ' + msgHeader + ' 这个泵吗?',
message: '所有' + msgHeader + '即将' + msgOp + ',要继续吗?',
......@@ -112,7 +123,8 @@ export class EnvFanPage implements OnInit {
text: '取消',
cssClass: 'width: 40%',
handler: () => {
this.batchSwitch.op = btn.op === 0 ? 1 : 0;
this.batchSwitch.op = !btn.op;
event.preventDefault();
}
}, {
text: '确定',
......@@ -132,7 +144,7 @@ export class EnvFanPage implements OnInit {
const req = {
fieldRegionNo: this.fieldRegionNo,
fieldDeviceType: this.fieldDeviceType,
op: btn.op ? 0 : 1,
op: btn.op ? 1 : 0,
ts: parseInt((new Date().getTime() / 1000).toString(), 10)
};
this.comm.remain = 120;
......@@ -150,6 +162,12 @@ export class EnvFanPage implements OnInit {
this.comm.remain = 0;
btn.load = false;
}]);
// 子按钮状态
this.devices.forEach((device) => {
device.state = btn.op ? 1 : 0;
device.op = btn.op;
});
}
// 单个设备控制
......@@ -158,7 +176,7 @@ export class EnvFanPage implements OnInit {
const req = {
fieldDeviceNo: btn.fieldDeviceNo,
fieldDeviceType: this.fieldDeviceType,
op: btn.state ? 0 : 1,
op: btn.op ? 1 : 0,
ts: new Date().valueOf()
};
this.comm.remain = 20;
......
......@@ -21,38 +21,39 @@ export class EnvHistoryPage implements OnInit {
item: any = {};
chartOption = {};
tableRows = [];
// START--------------------------------------------------------------------------------
// TODO 以下为假数据 待删除
chartOption = {
backgroundColor: '#F0F8FF',
visualMap: [
{show: false, type: 'continuous', seriesIndex: 0, min: 0, max: 400},
{show: false, type: 'continuous', seriesIndex: 1, dimension: 0, min: 0, max: 400}],
xAxis: {
name: '', type: 'category',
data: ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun'],
},
yAxis: [
{name: '温度(℃)', type: 'value', splitLine: {show: false}},
{name: '湿度(%)', type: 'value', max: 100, splitLine: {show: false}}
],
series: [
{data: [28, 32, 35, 34, 30, 29, 27], type: 'line'},
{data: [15, 13, 12, 11, 12, 11, 87], yAxisIndex: 1, type: 'line'},
{data: [76, 45, 43, 23, 34, 54, 23], yAxisIndex: 1, type: 'line'}
]
};
// 时间 热应激 温度 湿度 光照 风机 喷淋 照明
tableRows = [
{ts: '17:00', thi: '轻', temp: '23.8', humi: '56', NH3: '70'},
{ts: '17:30', thi: '中', temp: '27.2', humi: '43', NH3: '80'},
{ts: '18:00', thi: '轻', temp: '23.2', humi: '61', NH3: '99'},
{ts: '18:30', thi: '轻', temp: '23.1', humi: '47', NH3: '100'},
{ts: '19:00', thi: '轻', temp: '20.2', humi: '43', NH3: '60'},
{ts: '19:30', thi: '轻', temp: '21.6', humi: '34', NH3: '50'},
{ts: '20:00', thi: '轻', temp: '22.5', humi: '43', NH3: '40'},
];
// chartOption = {
// backgroundColor: '#F0F8FF',
// visualMap: [
// {show: false, type: 'continuous', seriesIndex: 0, min: 0, max: 400},
// {show: false, type: 'continuous', seriesIndex: 1, dimension: 0, min: 0, max: 400}],
// xAxis: {
// name: '', type: 'category',
// data: ['1', '2', '3', '4', '5', '6', '7', '8'],
// },
// yAxis: [
// {name: '温度(℃)', type: 'value', splitLine: {show: false}},
// {name: '湿度(%)', type: 'value', max: 100, splitLine: {show: false}}
// ],
// series: [
// {data: [28, 32, 35, 34, 30, 29, 27], type: 'line'},
// {data: [15, 13, 12, 11, 12, 11, 87], yAxisIndex: 1, type: 'line'},
// {data: [76, 45, 43, 23, 34, 54, 23], yAxisIndex: 1, type: 'line'}
// ]
// };
// // 时间 热应激 温度 湿度 光照 风机 喷淋 照明
// tableRows = [
// {ts: '17:00', thi: '轻', temp: '23.8', humi: '56', NH3: '70'},
// {ts: '17:30', thi: '中', temp: '27.2', humi: '43', NH3: '80'},
// {ts: '18:00', thi: '轻', temp: '23.2', humi: '61', NH3: '99'},
// {ts: '18:30', thi: '轻', temp: '23.1', humi: '47', NH3: '100'},
// {ts: '19:00', thi: '轻', temp: '20.2', humi: '43', NH3: '60'},
// {ts: '19:30', thi: '轻', temp: '21.6', humi: '34', NH3: '50'},
// {ts: '20:00', thi: '轻', temp: '22.5', humi: '43', NH3: '40'},
// ];
// END--------------------------------------------------------------------------------
ngOnInit() {
......@@ -97,7 +98,7 @@ export class EnvHistoryPage implements OnInit {
const humi = [];
const thi = [];
const times = [];
debugger;
if (param.temp && param.temp.constructor === Array) {
param.temp.map(item => {
times.push(new Date(item.time).getHours());
......
......@@ -45,10 +45,10 @@
<span style="text-align: center">{{item.fieldRegionName}}</span><span style="text-align: center; font-size:12px; padding-left:10px; color:red;" *ngIf="item.operationModel === 4">(部分设备处于现控状态)</span></div>
</div>
<div class="content">
<span *ngIf="item.temp" class="detailInfo" style="width: 40%">温度: &nbsp;&nbsp;{{item.temp}} ℃</span>
<span *ngIf="item.humi" class="detailInfo" style="width: 40%">湿度: &nbsp;&nbsp;{{item.humi}} % rH</span>
<span *ngIf="item.humi" class="detailInfo" style="width: 40%">氨气: &nbsp;&nbsp;{{item.NH3}} ppm</span>
<span *ngIf="item.heatStressLevel" class="detailInfo" style="width: 40%">热应激: &nbsp;&nbsp;<span class="warmColor{{item.heatStressLevel}}">{{item.heatStressLevelName}}</span></span>
<span *ngIf="item.temp !== null" class="detailInfo" style="width: 40%">温度: &nbsp;&nbsp;{{item.temp}} ℃</span>
<span *ngIf="item.humi !== null" class="detailInfo" style="width: 40%">湿度: &nbsp;&nbsp;{{item.humi}} % rH</span>
<span *ngIf="item.humi !== null" class="detailInfo" style="width: 40%">氨气: &nbsp;&nbsp;{{item.NH3}} ppm</span>
<span *ngIf="item.heatStressLevel !== null" class="detailInfo" style="width: 40%">热应激: &nbsp;&nbsp;<span class="warmColor{{item.heatStressLevel}}">{{item.heatStressLevelName}}</span></span>
</div>
<div class="bottom">
<div style="width:100%">
......@@ -60,8 +60,8 @@
<!-- 1:远控 0:现控 4:混乱 -->
<div *ngIf="item.operationModel === 1 || item.operationModel === 0" class="online">{{item.operationModel === 1 ? '远控' :'现控'}} </div>
<div *ngIf="item.operationModel === 4" class="offline">现控 </div>
<div *ngIf="item.operationModel" [ngClass]="{'online': item.isWisdomModel, 'offline': !item.isWisdomModel}" class="online">智控 </div>
<div *ngIf="item.ts" class="right">{{item.ts | date: 'yyyy-MM-dd HH:mm'}}</div>
<div *ngIf="item.operationModel !== null" [ngClass]="{'online': item.isWisdomModel, 'offline': !item.isWisdomModel}" class="online">智控 </div>
<div *ngIf="item.ts !== null" class="right">{{item.ts | date: 'yyyy-MM-dd HH:mm'}}</div>
</div>
</div>
</div>
......
This diff is collapsed.
......@@ -34,18 +34,22 @@
margin-bottom: 5px;">控制/状态</h1>
<ion-item *ngIf="devices" lines="full" insert="false">
<ion-label>一键控制</ion-label>
<!-- <ion-toggle slot="end" [checked]="batchSwitch.op"></ion-toggle>-->
<v-switch (click)="allCheck(batchSwitch)" [value]="batchSwitch.op" [disabled]="batchSwitch.disabled" [loading]="batchSwitch.load"></v-switch>
<ion-toggle slot="end" [checked]="batchSwitch.op" [disabled]="batchSwitch.disabled"
[(ngModel)]="batchSwitch.op" (load)="batchSwitch.load" (click)="toggle(batchSwitch)"></ion-toggle>
<!--<v-switch (click)="allCheck(batchSwitch)" [value]="batchSwitch.op" [disabled]="batchSwitch.disabled" [loading]="batchSwitch.load"></v-switch>-->
</ion-item>
<div>
<ion-card *ngFor="let device of devices" class="card" color="white">
<ion-card-header>
<ion-card-header class="cardHeader">
<ion-card-subtitle align="center">{{device.fieldDeviceName}}</ion-card-subtitle>
</ion-card-header>
<ion-card-content>
<!-- <ion-toggle slot="middle" [checked]="device.state"></ion-toggle>-->
<v-switch class="btn-switch" (click)="deviceCheck(device)" [value]="device.state" [disabled]="device.disabled" [loading]="device.load"></v-switch>
<ion-card-content class="cardContent">
<ion-toggle class="btn-switch" *ngIf="device.alarm === 0" [checked]="device.op" [disabled]="device.disabled"
[(ngModel)]="device.op" (click)="deviceCheck(device)"></ion-toggle>
<ion-toggle class="btn-switch" *ngIf="device.alarm === 1" [checked]="device.op" [disabled]="device.disabled" color="danger"
[(ngModel)]="device.op" (click)="deviceCheck(device)"></ion-toggle>
<!--<v-switch class="btn-switch" (click)="deviceCheck(device)" [value]="device.state" [disabled]="device.disabled" [loading]="device.load"></v-switch>-->
</ion-card-content>
</ion-card>
</div>
......
......@@ -8,8 +8,18 @@ i.vo {
.card{
float: none;
display: inline-block;
width:28%;
margin: 10px 10px 5px 5px;
width:22%;
margin: 5px;
}
.cardHeader {
--padding-inline-start: 0px !important;
--padding-inline-end: 0px !important;
padding: 10px;
}
.cardContent {
padding: 5px;
text-align: center;
}
.btn-switch {
......
......@@ -2,6 +2,7 @@ import {Component, Input, OnInit} from '@angular/core';
import {Api} from '../../service/api';
import {ActivatedRoute} from '@angular/router';
import {Load} from '../../service/load';
import {AlertController} from '@ionic/angular';
@Component({
selector: 'v-env-light',
......@@ -35,7 +36,7 @@ export class EnvLightPage implements OnInit {
controlModelOptions = [
{modelId: 0, modelValue: '手控模式'},
{modelId: 1, modelValue: '自控模式'},
{modelId: 2, modelValue: '智慧控制'}];
{modelId: 2, modelValue: '智控模式'}];
// 发送指令延时判断
comm = {
......@@ -43,7 +44,8 @@ export class EnvLightPage implements OnInit {
isLoading: true
};
constructor(private api: Api, private ac: ActivatedRoute, private load: Load, private route: ActivatedRoute) {
constructor(private api: Api, private ac: ActivatedRoute, private load: Load, private route: ActivatedRoute,
private alertControlle: AlertController) {
}
ngOnInit() {
......@@ -68,43 +70,106 @@ export class EnvLightPage implements OnInit {
this.on = data.controlConfig.on;
this.off = data.controlConfig.off;
this.devices = data.param;
this.devices.forEach(device => {
device.op = device.state === 1 ? true : false;
});
// --------------------------------------------------------------------
// START--------------------------------------------------------------------
// TODO 测试用准备数据
this.fieldRegionNo = 'FRN136641006052720640';
this.startDate = '05-01';
this.stopDate = '08-31';
// this.fieldDeviceType = '照明';
// this.controlModel = 2;
this.on = '19:00';
this.off = '05:00';
this.devices = [{fieldDeviceNo: '136641005998194688', fieldDeviceName: 'A号照明组', state: 1},
{fieldDeviceNo: '136641005998194688', fieldDeviceName: 'B号照明组', state: 0},
{fieldDeviceNo: '136641005998194688', fieldDeviceName: 'C号照明组', state: 1},
{fieldDeviceNo: '136641005998194688', fieldDeviceName: 'D号照明组', state: 0},
{fieldDeviceNo: '136641005998194688', fieldDeviceName: 'E号照明组', state: 1},
{fieldDeviceNo: '136641005998194688', fieldDeviceName: 'F号照明组', state: 1}];
// --------------------------------------------------------------------
// [智控(2)]的状态下:非活性(true) 以外:活性(false)
const allDisabled = this.controlModel === 2 ? true : false;
this.batchSwitch.disabled = allDisabled;
this.devices.forEach((device, i) => {
device.disabled = allDisabled;
});
// this.fieldRegionNo = 'FRN136641006052720640';
// this.startDate = '05-01';
// this.stopDate = '08-31';
// // this.fieldDeviceType = '照明';
// // this.controlModel = 2;
// this.on = '19:00';
// this.off = '05:00';
// this.devices = [{fieldDeviceNo: '136641005998194688', fieldDeviceName: 'A号照明组', state: 1},
// {fieldDeviceNo: '136641005998194688', fieldDeviceName: 'B号照明组', state: 0},
// {fieldDeviceNo: '136641005998194688', fieldDeviceName: 'C号照明组', state: 1},
// {fieldDeviceNo: '136641005998194688', fieldDeviceName: 'D号照明组', state: 0},
// {fieldDeviceNo: '136641005998194688', fieldDeviceName: 'E号照明组', state: 1},
// {fieldDeviceNo: '136641005998194688', fieldDeviceName: 'F号照明组', state: 1}];
// END--------------------------------------------------------------------
// 设置[一键控制]按钮(默认: 开启)
// 当任意子按钮[关闭]的状态下: 关闭 以外:开启
this.batchSwitch.op = 1;
this.devices.map((device) => {
if (device.state === 0) {
this.batchSwitch.op = 0;
}
});
this.initButtons();
}
}]);
}
initButtons() {
// 智控:2
if (this.controlModel === 2) {
this.batchSwitch.disabled = true;
this.devices.forEach((device) => {
device.disabled = true;
});
} else if (this.controlModel === 1) {
// 自控:1
// 一键控制: 活性 其他按钮: 非活性
this.batchSwitch.disabled = false;
this.devices.forEach((device) => {
device.disabled = true;
});
} else {
// 手控:0
// 一键控制: 活性 其他按钮: 活性
this.batchSwitch.disabled = false;
this.devices.forEach((device) => {
device.disabled = false;
});
}
// 设置[一键控制]按钮(默认: 开启)
// 当任意子按钮[关闭]的状态下: 关闭 以外:开启
this.batchSwitch.op = true;
this.devices.map((device) => {
if (device.op === false) {
this.batchSwitch.op = false;
}
});
}
toggle(btn) {
// btn.op = btn.op ? 1 : 0;
// event.preventDefault();
// a.loading = true;
this.opChangeComfirm(btn);
}
async opChangeComfirm(btn) {
const msgHeader = '照明灯';
const msgOp = btn.op ? '打开' : '关闭';
let msgContent = '';
if (this.controlModel === 0) {
msgContent = '所有' + msgHeader + '即将' + msgOp + ',要继续吗?';
} else {
msgContent = '确认要' + msgOp + '所有' + msgHeader + ',并且自动切换至手动模式吗?';
}
const alert = await this.alertControlle.create({
header: '请注意',
message: msgContent,
mode: 'ios',
buttons: [
{
text: '取消',
cssClass: 'width: 40%',
handler: () => {
this.batchSwitch.op = !btn.op;
event.preventDefault();
}
}, {
text: '确定',
cssClass: 'width: 40%',
handler: () => {
this.allCheck(btn);
}
}
]
});
await alert.present();
}
// 一键控制
allCheck(btn) {
btn.load = true;
......@@ -117,21 +182,26 @@ export class EnvLightPage implements OnInit {
this.comm.remain = 120;
// 一键开启设备
this.api.control.controlBatchSwitch([req, (data) => {
if (data.code === 1) {
this.getData(1);
this.api.presentMsgToast(data.message);
} else {
this.api.presentMsgToast(data.message);
}
this.api.control.controlCowedBatchSwitch([req, (data) => {
// if (data.code === 1) {
// this.getData(1);
// this.api.presentMsgToast(data.message);
// } else {
// this.api.presentMsgToast(data.message);
// }
this.getData(0);
this.api.presentMsgToast(data.message);
this.comm.remain = 0;
btn.load = false;
}]);
// 子按钮状态
this.devices.forEach((device, i) => {
device.state = btn.op ? 0 : 1;
this.devices.forEach((device) => {
device.op = btn.op ? 0 : 1;
});
// 自动控制时, 强制切换至手动模式
this.controlModel = this.controlModel === 1 ? 0 : this.controlModel;
}
// 单个设备控制
......@@ -143,15 +213,18 @@ export class EnvLightPage implements OnInit {
ts: parseInt((new Date().getTime() / 1000).toString(), 10)
};
this.comm.remain = 20;
this.api.control.controlSwitch([req, (data) => {
if (data && data.code === 1) {
this.getData(1);
this.comm.remain = 0;
this.api.presentMsgToast(data.message);
} else {
this.comm.remain = 0;
this.api.presentMsgToast(data.message);
}
this.api.control.controlCowedSwitch([req, (data) => {
// if (data && data.code === 1) {
// this.getData(1);
// this.comm.remain = 0;
// this.api.presentMsgToast(data.message);
// } else {
// this.comm.remain = 0;
// this.api.presentMsgToast(data.message);
// }
this.getData(1);
this.comm.remain = 0;
this.api.presentMsgToast(data.message);
btn.loading = false;
}]);
}
......
......@@ -23,8 +23,8 @@
line-height: 25px;
margin-bottom: 5px;">供液泵状态</h1>
<ion-item lines="full">
<div [ngClass]="{'sucCir': bump.online, 'errCir': !bump.online}"></div>&nbsp;
<span class="content">{{bump.online ? '在线' : '离线'}}</span>
<div [ngClass]="{'sucCir': bump.alarm === 0, 'errCir': bump.alarm === 0}"></div>&nbsp;
<span class="content">{{bump.alarm === 1 ? '异常' : '运行'}}</span>
<span class="content" style="margin-left: 30px">压力: {{bump.press}} Mpa</span>
</ion-item>
<h1 style="
......@@ -33,13 +33,13 @@
border-left: 5px solid #28c9bd;
line-height: 25px;
margin-bottom: 5px;">时间参数</h1>
<ion-item lines="full" *ngIf="controlConfig.a" insert="false">
<span class="content">A区喷淋时间 {{controlConfig.a}} 秒</span>
<ion-item lines="full" insert="false">
<span class="content">{{param[0].fieldDeviceName}}喷淋时间 {{controlConfig.A}} 秒</span>
</ion-item>
<ion-item lines="full" *ngIf="controlConfig.b" insert="false">
<span class="content">B区喷淋时间 {{controlConfig.b}} 秒</span>
<ion-item lines="full" insert="false">
<span class="content">{{param[1].fieldDeviceName}}喷淋时间 {{controlConfig.B}} 秒</span>
</ion-item>
<ion-item lines="full" *ngIf="controlConfig.interval" insert="false">
<ion-item lines="full" insert="false">
<span class="content">间隔时间 {{controlConfig.interval}} 秒</span>
</ion-item>
......@@ -50,15 +50,26 @@
line-height: 25px;
margin-bottom: 5px;">控制/状态</h1>
<div>
<ion-card *ngFor="let a of param" class="card" color="white">
<ion-card-header>
<ion-card-title class="card-title">{{a.fieldDeviceName}}</ion-card-title>
<ion-card *ngFor="let device of param" class="card" color="white">
<ion-card-header class="cardHeader">
<ion-card-title class="card-title">
<div style="width:100%;text-align:center;">
<div style="width:48%;display: inline-block; height: 40px;float: left; text-align: center; padding-top: 10px;">
<div style="text-align: center;margin:auto">{{device.fieldDeviceName}}</div>
</div>
<div style="width:48%;display: inline-block"><img [src]="'../../assets/img/shower-' + device.state + '.png'" style="width:50px !important; margin: auto;"></div>
</div>
</ion-card-title>
</ion-card-header>
<ion-card-content style="margin: 0px; padding-top:0px;">
<span class="content">压力 {{a.press}} MPa</span><br>
<ion-card-content class="cardContent">
<span class="content">压力 {{device.press}} MPa</span><br>
<!-- <ion-toggle [checked]="a.state"></ion-toggle>-->
<v-switch class="btn-switch" (click)="deviceCheck(a)" [value]="a.state" [loading]="a.load"></v-switch>
<ion-toggle class="btn-switch" *ngIf="device.alarm === 0" [checked]="device.op" [disabled]="device.disabled"
[(ngModel)]="device.op" (click)="deviceCheck(device)"></ion-toggle>
<ion-toggle class="btn-switch" *ngIf="device.alarm === 1" [checked]="device.op" [disabled]="device.disabled" color="danger"
[(ngModel)]="device.op" (click)="deviceCheck(device)"></ion-toggle>
<!--<v-switch class="btn-switch" (click)="deviceCheck(a)" [value]="a.state" [loading]="a.load"></v-switch>-->
</ion-card-content>
</ion-card>
</div>
......
.card{
float: none;
display: inline-block;
width:42%;
margin: 10px 10px 5px 10px;
width: 44%;
margin: 3%;
text-align: center;
}
.card-title {
font-size: 20px;
font-size: 16px;
}
.content {
......@@ -19,3 +19,33 @@
display: inline-block;
margin-top: 5px;
}
.sucCir {
width: 17px;
height: 17px;
border-radius: 17px;
background-color: #2ecc71;
display: inline-block;
vertical-align: middle;
box-shadow: #ccc 0.5px 0.5px 3px;
}
.errCir {
width: 17px;
height: 17px;
border-radius: 17px;
background-color: #cb0000;
display: inline-block;
vertical-align: middle;
box-shadow: #ccc 0.5px 0.5px 3px;
}
.cardHeader {
--padding-inline-start: 0px !important;
--padding-inline-end: 0px !important;
padding: 10px;
}
.cardContent {
padding: 5px;
text-align: center;
}
......@@ -27,14 +27,15 @@ export class EnvShowerPage implements OnInit {
// 模式状态
controlModel = 0;
// 供液泵状态
bump = {online: true, press: 0};
bump = {alarm: 0, press: 0};
// 时间参数
controlConfig = {
name: '',
interval: 0, // 间隔时间
a: '', // A区喷淋时间
t: '',
b: '', // A区喷淋时间
A: 0, // A区喷淋时间
T: 0,
B: 0, // A区喷淋时间
offset: 0
};
// 各设备信息
param = [];
......@@ -42,7 +43,7 @@ export class EnvShowerPage implements OnInit {
controlModelOptions = [
{modelId: 0, modelValue: '手控模式'},
{modelId: 1, modelValue: '自控模式'},
{modelId: 2, modelValue: '智慧控制'}];
{modelId: 2, modelValue: '智控模式'}];
constructor(private api: Api, private ac: ActivatedRoute, private load: Load, private route: ActivatedRoute) { }
......@@ -50,16 +51,21 @@ export class EnvShowerPage implements OnInit {
this.init();
}
ionViewWillEnter() {
this.init();
}
init() {
this.route.paramMap.subscribe(params => {this.fieldRegionNo = params.get('fieldRegionNo'); });
this.getData(0);
this.route.paramMap.subscribe(params => {
this.fieldRegionNo = params.get('fieldRegionNo');
this.getData(0);
});
}
getData(time) {
if (time) {
this.load.toLoad('加载中...', false);
}
this.api.cowshedApp.getPenLinData([{'fieldRegionNo' : this.fieldRegionNo}, (data) => {
this.api.cowshedApp.getPenLinData([{fieldRegionNo: this.fieldRegionNo}, (data) => {
if (data) {
this.fieldRegionNo = data.fieldRegionNo;
this.fieldDeviceType = data.fieldDeviceType;
......@@ -67,29 +73,43 @@ export class EnvShowerPage implements OnInit {
this.bump = data.bump;
this.controlConfig = data.controlConfig;
this.param = data.param;
this.param.forEach(device => {
device.op = device.cycle === 1 ? true : false;
});
this.initButtons();
}
}]);
}
initButtons() {
this.param.forEach((device) => {
// disabled:手控状态下 活性false 其他非活性true
device.disabled = this.controlModel === 0 ? false : true;
});
}
// 单个设备控制
deviceCheck(btn) {
const req = {
fieldDeviceNo: btn.fieldDeviceNo,
op: btn.state ? 0 : 1,
fieldDeviceType: this.fieldDeviceType,
op: btn.op ? 1 : 0,
ts: parseInt((new Date().getTime() / 1000).toString(), 10)
};
this.comm.remain = 20;
this.api.control.controlSwitch([req, (data) => {
if (data && data.code === 1) {
this.getData(1);
this.comm.remain = 0;
this.api.presentMsgToast(data.message);
} else {
this.comm.remain = 0;
this.api.presentMsgToast(data.message);
}
this.api.control.controlCowedSwitch([req, (data) => {
// if (data && data.code === 1) {
// this.getData(1);
// this.comm.remain = 0;
// this.api.presentMsgToast(data.message);
// } else {
// this.comm.remain = 0;
// this.api.presentMsgToast(data.message);
// }
this.getData(0);
this.comm.remain = 0;
this.api.presentMsgToast(data.message);
btn.loading = false;
}]);
}
}
......@@ -9,13 +9,13 @@
line-height: 25px;
margin-bottom: 5px;">状态</h1>
<ion-card *ngFor="let device of devices" class="card" color="white">
<ion-card-header>
<ion-card-title> <span [ngClass]="{'sucCir': device.online, 'errCir': !device.online}"></span>&nbsp; {{device .fieldDeviceName}}</ion-card-title>
<ion-card-header class="cardTitle">
<ion-card-title class="cardHeader"> <span class="sucCir"></span>&nbsp; {{device .fieldDeviceName}}</ion-card-title>
</ion-card-header>
<ion-card-content>
<span>当前功率 </span> <span> {{device.kw}} KW<br></span>
<span>估计加热设备台数 </span> <span> {{device.deviceOnlineNum}} 台</span>
<ion-card-content class="cardContent">
<span>当前功率 </span> <span style="color:#0bb8cc"> {{device.kw}} KW<br></span>
<span>估计加热设备台数 </span> <span style="color:#0bb8cc"> {{device.deviceOnlineNum}} 台</span>
</ion-card-content>
</ion-card>
</ion-content>
.card{
float: none;
display: inline-block;
width:97%;
margin: 2%;
}
.cardTitle {
font-size: 20px;
padding: 0px;
}
.cardHeader {
--padding-inline-start: 0px !important;
--padding-inline-end: 0px !important;
padding: 10px;
font-size: 20px;
text-align:left;
}
.cardContent {
padding: 0px 5px 5px 35px;
}
.sucCir {
width: 17px;
height: 17px;
border-radius: 17px;
background-color: #2ecc71;
display: inline-block;
vertical-align: middle;
box-shadow: #ccc 0.5px 0.5px 3px;
}
.errCir {
width: 17px;
height: 17px;
border-radius: 17px;
background-color: #cb0000;
display: inline-block;
vertical-align: middle;
box-shadow: #ccc 0.5px 0.5px 3px;
}
......@@ -26,15 +26,21 @@ export class EnvWaterchannelPage implements OnInit {
// this.ac.queryParams.subscribe((data) => {
// this.fieldRegionNo = data.no;
// });
this.route.paramMap.subscribe(params => {this.fieldRegionNo = params.get('fieldRegionNo'); });
this.getData(0);
this.init();
}
init() {
this.route.paramMap.subscribe(params => {
this.fieldRegionNo = params.get('fieldRegionNo');
this.getData(0);
});
}
getData(time) {
if (time) {
this.load.toLoad('加载中...', false);
}
this.api.cowshedApp.getShuiCaoData([{'fieldRegionNo' : this.fieldRegionNo}, (data) => {
this.api.cowshedApp.getShuiCaoData([{fieldRegionNo: this.fieldRegionNo}, (data) => {
if (data) {
this.devices = data.param;
}
......
......@@ -33,7 +33,7 @@ export class Api {
public cowshedApp = {
// 牛舍首页查询
getAllRegionData: (data) => this.trans('get', '/cowshedApp/getAll', data),
getAll: (data) => this.trans('get', '/cowshedApp/getAll', data),
// 根据牛舍名称查询牛舍信息
getAllForLike: (data) => this.trans('post', '/cowshedApp/getAllForLike', data),
// 获取牛舍的基本信息
......@@ -95,8 +95,8 @@ export class Api {
};
public config = {
getAll: (data) => this.trans('post', '/cowshedConfig/getAll', data),
updateCowshedConfig: (data) => this.trans('post', '/cowshedConfig/updateCowshedConfig', data),
getByFieldRegionNo: (data) => this.trans('post', '/config/getByFieldRegionNo', data),
updateConfig: (data) => this.trans('post', '/config/updateConfig', data),
};
public devicePatternModel = {
......
......@@ -4,12 +4,14 @@
export const environment = {
// production: false,
url: 'http://pasture.witium.com.cn/api', // 对外访问测试网地址
// url: 'http://pasture.witium.com.cn/api', // 对外访问测试网地址
// url: 'http://172.16.1.14:8096',
// url: 'http://cloud-test.witium.com:8096', // 测试
// 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.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