Commit 6817aec5 authored by zhuangzhuang's avatar zhuangzhuang

牛舍配置页改修 牛舍历史数据微调

parent 80b92e88
...@@ -7,15 +7,39 @@ ...@@ -7,15 +7,39 @@
<ion-content> <ion-content>
<ion-item lines="full"> <ion-item lines="full">
<ion-label>请选择牛舍</ion-label> <ion-label>请选择牛舍</ion-label>
<ion-select multiple="false" cancelText="取消" okText="确认" (ionChange)="selFarmEvent()"> <ion-select multiple="false" cancelText="取消" okText="确认" [(ngModel)]="curFieldRegionNo" (ionChange)="selectCowshed()">
<ion-select-option *ngFor="let a of cowFarm" value="a.value">{{a.name}}</ion-select-option> <ion-select-option *ngFor="let cowshed of cowshedList" [value]="cowshed.fieldRegionNo">{{cowshed.fieldRegionName}}</ion-select-option>
</ion-select> </ion-select>
</ion-item> </ion-item>
<div *ngIf="curCowshed.fieldRegionName">
<ion-item lines="full"> <ion-item lines="full">
<ion-label>智慧模式选择</ion-label> <ion-label>智慧模式选择</ion-label>
<ion-toggle slot="end" name="apple" color="secondary" checked style="width:50px"></ion-toggle> <ion-toggle slot="end" color="secondary" style="width:50px" [checked]="curCowshed.isWisdomModel"></ion-toggle>
</ion-item> </ion-item>
<ion-label text-wrap color="danger" style="margin-left: 20px">选择智慧模式时,风机/喷淋/照明的控制将强制进入有环境条件影响的自控模式</ion-label> <ion-label text-wrap color="danger" style="margin-left: 20px">选择智慧模式时,风机/喷淋/照明的控制将强制进入有环境条件影响的自控模式</ion-label>
<ion-item-divider>
<ion-label>偏差值配置</ion-label>
</ion-item-divider>
<ion-item class="fanItem" lines="none">
<ion-grid>
<ion-row>
<ion-col>
<ion-item class="fanItem">
<ion-label position="fixed">偏差温度</ion-label>
<ion-input placeholder="25" [(ngModel)]="curCowshed.propertyConfig.toft"></ion-input>
<ion-label position="fixed"></ion-label>
</ion-item>
</ion-col>
<ion-col>
<ion-item class="fanItem">
<ion-label position="fixed">偏差湿度</ion-label>
<ion-input placeholder="25" [(ngModel)]="curCowshed.propertyConfig.hoft" (ionFocus)="fanTempHaveFouch()"></ion-input>
<ion-label position="fixed"></ion-label>
</ion-item>
</ion-col>
</ion-row>
</ion-grid>
</ion-item>
<ion-item-divider> <ion-item-divider>
<ion-label>风机模式配置</ion-label> <ion-label>风机模式配置</ion-label>
<ion-select multiple="false" cancelText="取消" okText="确认" [(ngModel)]="workModeSetting.workMode" [(value)]="workModeSetting.workMode" (ionChange)="workModeEvent()"> <ion-select multiple="false" cancelText="取消" okText="确认" [(ngModel)]="workModeSetting.workMode" [(value)]="workModeSetting.workMode" (ionChange)="workModeEvent()">
...@@ -178,14 +202,14 @@ ...@@ -178,14 +202,14 @@
<ion-item class="timepickerItem" lines="none"> <ion-item class="timepickerItem" lines="none">
<ion-label style="width:80px">日期范围</ion-label> <ion-label style="width:80px">日期范围</ion-label>
<!--<ion-input placeholder={{cfg.startTime}} (ionFocus)="fanTempHaveFouch()" style="width:50px;"></ion-input>--> <!--<ion-input placeholder={{cfg.startTime}} (ionFocus)="fanTempHaveFouch()" style="width:50px;"></ion-input>-->
<ion-datetime displayFormat="MM-DD" placeholder="Date" class="timepicker"></ion-datetime> <ion-datetime displayFormat="MM-DD" placeholder="Date" class="timepicker" [(ngModel)]="shuiCao.startDate"></ion-datetime>
</ion-item> </ion-item>
</ion-col> </ion-col>
<ion-col size="auto" style="font-size: 13px;"> <ion-col size="auto" style="font-size: 13px;">
<ion-item class="timepickerItem" lines="none"> <ion-item class="timepickerItem" lines="none">
<ion-label style="width:80px">~</ion-label> <ion-label style="width:80px">~</ion-label>
<!--<ion-input placeholder={{cfg.endTime}} (ionFocus)="fanTempHaveFouch()" style="width:50px;"></ion-input>--> <!--<ion-input placeholder={{cfg.endTime}} (ionFocus)="fanTempHaveFouch()" style="width:50px;"></ion-input>-->
<ion-datetime displayFormat="MM-DD" placeholder="Date" class="timepicker"></ion-datetime> <ion-datetime displayFormat="MM-DD" placeholder="Date" class="timepicker" [(ngModel)]="shuiCao.stopDate"></ion-datetime>
</ion-item> </ion-item>
</ion-col> </ion-col>
</ion-row> </ion-row>
...@@ -305,4 +329,5 @@ ...@@ -305,4 +329,5 @@
</ion-row> </ion-row>
</ion-grid> </ion-grid>
</ion-item> </ion-item>
</div>
</ion-content> </ion-content>
This diff is collapsed.
<ion-header> <ion-header>
<ion-toolbar> <ion-toolbar color="secondary">
<ion-title class="title">{{item.fieldRegionName}}历史数据</ion-title> <ion-buttons slot="start">
<ion-back-button text="" ></ion-back-button>
</ion-buttons>
<ion-title mode="ios" class="title">{{item.fieldRegionName}}历史数据</ion-title>
</ion-toolbar> </ion-toolbar>
</ion-header> </ion-header>
<ion-content color='light' style="height: 100%"> <ion-content color='light' style="height: 100%; padding-top: 30px;">
<div style="padding-top: 10px">
<h1 class="subTittle">牛舍热应激状态</h1> <span [ngClass]="{'perfect': analResult === '优','good': analResult === '良','bad': analResult === '差'}" margin-start="10px;">{{analResult}}</span>
<h1 style=" <h1 class="subTittle">近8个小时环境参数曲线</h1>
font-size: 16px;
padding-left: 5px;
border-left: 5px solid #28c9bd;
line-height: 25px;
margin-bottom: 5px;">牛舍热应激状态</h1> <span [ngClass]="{'perfect': analResult === '优','good': analResult === '良','bad': analResult === '差'}">{{analResult}}</span>
<h1 style="
font-size: 16px;
padding-left: 5px;
border-left: 5px solid #28c9bd;
line-height: 25px;
margin-bottom: 5px;">近8个小时环境参数曲线</h1>
<div echarts [options]="chartOption" class="demo-chart"></div> <div echarts [options]="chartOption" class="demo-chart"></div>
<h1 style=" <h1 class="subTittle">近8个小时环境参数表</h1>
font-size: 16px;
padding-left: 5px;
border-left: 5px solid #28c9bd;
line-height: 25px;
margin-bottom: 5px;">近8个小时环境参数表</h1>
<div> <div>
<ngx-datatable class='material' [rows]="rows" [columnMode]="'force'" [scrollbarH]="true"[scrollbarV]="true" style="white-space: nowrap; "> <ngx-datatable class='material' [rows]="rows" [columnMode]="'force'" [scrollbarH]="true"[scrollbarV]="true" style="white-space: nowrap; text-align: center">
<ngx-datatable-column name="时间" prop="time" width="100"> <ngx-datatable-column name="时间" prop="time" width="100">
</ngx-datatable-column> </ngx-datatable-column>
<ngx-datatable-column name="热应激" prop="thi" width="60"> <ngx-datatable-column name="热应激" prop="thi" width="60">
...@@ -46,5 +34,6 @@ ...@@ -46,5 +34,6 @@
</ngx-datatable-column> </ngx-datatable-column>
</ngx-datatable> </ngx-datatable>
</div> </div>
</div>
</ion-content> </ion-content>
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
@import '~@swimlane/ngx-datatable/release/themes/material.css'; @import '~@swimlane/ngx-datatable/release/themes/material.css';
@import '~@swimlane/ngx-datatable/release/assets/icons.css'; @import '~@swimlane/ngx-datatable/release/assets/icons.css';
.perfect{ .perfect {
width: 30px; width: 30px;
height: 30px; height: 30px;
background-color:green; background-color:green;
...@@ -35,12 +35,22 @@ ...@@ -35,12 +35,22 @@
color:white; color:white;
} }
.demo-chart{ .demo-chart {
width: 100%; width: 100%;
height: 230px; height: 230px;
} }
.title{ .title {
text-align: center; text-align: center;
padding-left: 0px padding-left: 0px;
font-weight: lighter;
font-size: large
}
.subTittle {
font-size: 16px;
padding-left: 5px;
border-left: 5px solid #28c9bd;
line-height: 25px;
margin-bottom: 5px;
} }
import { Component, OnInit } from '@angular/core'; import {Component, OnInit} from '@angular/core';
import {ActivatedRoute} from '@angular/router'; import {ActivatedRoute} from '@angular/router';
import {Api} from '../../service/api'; import {Api} from '../../service/api';
import {Load} from '../../service/load'; import {Load} from '../../service/load';
import { NgxDatatableModule } from '@swimlane/ngx-datatable'; import {NgxDatatableModule} from '@swimlane/ngx-datatable';
@Component({ @Component({
selector: 'v-env-history', selector: 'v-env-history',
...@@ -11,7 +11,9 @@ import { NgxDatatableModule } from '@swimlane/ngx-datatable'; ...@@ -11,7 +11,9 @@ import { NgxDatatableModule } from '@swimlane/ngx-datatable';
}) })
export class EnvHistoryPage implements OnInit { export class EnvHistoryPage implements OnInit {
constructor(private api: Api, private ac: ActivatedRoute, private load: Load) { } constructor(private api: Api, private ac: ActivatedRoute, private load: Load) {
}
item = {fieldRegionNo: ''}; item = {fieldRegionNo: ''};
// TODO 以下为假数据 待删除 // TODO 以下为假数据 待删除
...@@ -19,60 +21,33 @@ export class EnvHistoryPage implements OnInit { ...@@ -19,60 +21,33 @@ export class EnvHistoryPage implements OnInit {
chartOption = { chartOption = {
backgroundColor: '#F0F8FF', backgroundColor: '#F0F8FF',
visualMap: [{ visualMap: [
show: false, {show: false, type: 'continuous', seriesIndex: 0, min: 0, max: 400},
type: 'continuous', {show: false, type: 'continuous', seriesIndex: 1, dimension: 0, min: 0, max: 400}],
seriesIndex: 0,
min: 0,
max: 400},
{
show: false,
type: 'continuous',
seriesIndex: 1,
dimension: 0,
min: 0,
max: 400
}],
xAxis: { xAxis: {
name: '时间', name: '', type: 'category',
type: 'category', data: ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun'],
data: ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun']
}, },
yAxis: [{ yAxis: [
name: '温度(℃)', {name: '温度(℃)', type: 'value', splitLine: {show: false}},
type: 'value', {name: '湿度(%)', type: 'value', max: 100, splitLine: {show: false}}
splitLine: {show: false} ],
}, series: [
{ {data: [28, 32, 35, 34, 30, 29, 27], type: 'line'},
name: '湿度(%)', {data: [15, 13, 12, 11, 12, 11, 87], yAxisIndex: 1, type: 'line'},
type: 'value', {data: [76, 45, 43, 23, 34, 54, 23], yAxisIndex: 1, type: 'line'}
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'
}]
}; };
// 时间 热应激 温度 湿度 光照 风机 喷淋 照明 // 时间 热应激 温度 湿度 光照 风机 喷淋 照明
rows = [ rows = [
{ time: '17:00', thi: '轻', temp: '23.8', humi: '56', AA: '70', BB: '55%', CC: 'O', DD: 'X'}, {time: '17:00', thi: '轻', temp: '23.8', humi: '56', AA: '70', BB: '55%', CC: 'O', DD: 'X'},
{ time: '17:30', thi: '中', temp: '27.2', humi: '43', AA: '80', BB: '55%', CC: 'X', DD: 'O' }, {time: '17:30', thi: '中', temp: '27.2', humi: '43', AA: '80', BB: '55%', CC: 'X', DD: 'O'},
{ time: '18:00', thi: '轻', temp: '23.2', humi: '61', AA: '99', BB: '55%', CC: 'O', DD: 'X' }, {time: '18:00', thi: '轻', temp: '23.2', humi: '61', AA: '99', BB: '55%', CC: 'O', DD: 'X'},
{ time: '18:30', thi: '轻', temp: '23.1', humi: '47', AA: '100', BB: '55%', CC: 'X', DD: 'O'}, {time: '18:30', thi: '轻', temp: '23.1', humi: '47', AA: '100', BB: '55%', CC: 'X', DD: 'O'},
{ time: '19:00', thi: '轻', temp: '20.2', humi: '43', AA: '60', BB: '55%', CC: 'O', DD: 'X' }, {time: '19:00', thi: '轻', temp: '20.2', humi: '43', AA: '60', BB: '55%', CC: 'O', DD: 'X'},
{ time: '19:30', thi: '轻', temp: '21.6', humi: '34', AA: '50', BB: '55%', CC: 'O', DD: 'X' }, {time: '19:30', thi: '轻', temp: '21.6', humi: '34', AA: '50', BB: '55%', CC: 'O', DD: 'X'},
{ time: '20:00', thi: '轻', temp: '22.5', humi: '43', AA: '40', BB: '55%', CC: 'X', DD: 'O' }, {time: '20:00', thi: '轻', temp: '22.5', humi: '43', AA: '40', BB: '55%', CC: 'X', DD: 'O'},
]; ];
...@@ -83,16 +58,17 @@ export class EnvHistoryPage implements OnInit { ...@@ -83,16 +58,17 @@ export class EnvHistoryPage implements OnInit {
this.getData(0); this.getData(0);
// TODO 待删除 // TODO 待删除
for (let i = 0; i < 8; i ++) { this.chartOption.xAxis.data = ['1', '2', '3', '4', '5', '6', '7', '8'];
this.chartOption.xAxis.data = ['8', '7', '6', '5', '4', '3', '2', '1']; // for (let i = 0; i < 8; i++) {
} // this.chartOption.xAxis.data = ['1', '2', '3', '4', '5', '6', '7', '8'];
// }
} }
getData(time) { getData(time) {
if (time) { if (time) {
this.load.toLoad('加载中...', false); this.load.toLoad('加载中...', false);
} }
this.api.cowshedApp.getRealDataByFieldRegionNo([{'fieldRegionNo' : this.item.fieldRegionNo}, (data) => { this.api.cowshedApp.getRealDataByFieldRegionNo([{'fieldRegionNo': this.item.fieldRegionNo}, (data) => {
if (data) { if (data) {
this.item = data; this.item = data;
......
...@@ -3,7 +3,7 @@ ...@@ -3,7 +3,7 @@
<ion-buttons slot="start"> <ion-buttons slot="start">
<ion-back-button color="secondary" defaultHref="/index" text=""></ion-back-button> <ion-back-button color="secondary" defaultHref="/index" text=""></ion-back-button>
</ion-buttons> </ion-buttons>
<ion-searchbar (ionInput)="getItems($event)" (ionClear)="resetItems()" debounce="1000"></ion-searchbar> <ion-searchbar (ionInput)="getItems($event)" (ionClear)="resetItems()" debounce="1000" style="height: 40px;"></ion-searchbar>
<!--<ion-searchbar (ionInput)="getItems($event)" [(ngModel)]="searchItem"></ion-searchbar>--> <!--<ion-searchbar (ionInput)="getItems($event)" [(ngModel)]="searchItem"></ion-searchbar>-->
<!--<div class="topSearch"> <!--<div class="topSearch">
<SearchBar [placeholder]="'点击此处进行搜索'" [(ngModel)]="searchText" <SearchBar [placeholder]="'点击此处进行搜索'" [(ngModel)]="searchText"
......
...@@ -90,6 +90,11 @@ export class Api { ...@@ -90,6 +90,11 @@ export class Api {
controlSwitch: (data) => this.trans('post', '/control/controlSwitch', data), controlSwitch: (data) => this.trans('post', '/control/controlSwitch', data),
}; };
public config = {
getAll: (data) => this.trans('post', '/cowshedConfig/getAll', data),
updateCowshedConfig: (data) => this.trans('post', '/cowshedConfig/updateCowshedConfig', data),
};
private trans(type, addr, data) { private trans(type, addr, data) {
this.sendHttpReq(type, addr, data[0], data[1], data[2], data[3]); this.sendHttpReq(type, addr, data[0], data[1], data[2], data[3]);
} }
......
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