Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Contribute to GitLab
Sign in
Toggle navigation
M
muChangApp
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
WitCloud
muChangApp
Commits
4aa16b6f
Commit
4aa16b6f
authored
Nov 15, 2019
by
yating.lin
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
接口调试
parent
7055323f
Show whitespace changes
Inline
Side-by-side
Showing
15 changed files
with
189 additions
and
98 deletions
+189
-98
env-alarm-detail.page.html
src/app/envCtrl/env-alarm-detail/env-alarm-detail.page.html
+6
-6
env-alarm-detail.page.ts
src/app/envCtrl/env-alarm-detail/env-alarm-detail.page.ts
+6
-0
env-cfg.module.ts
src/app/envCtrl/env-cfg/env-cfg.module.ts
+3
-1
env-cfg.page.html
src/app/envCtrl/env-cfg/env-cfg.page.html
+9
-2
env-cfg.page.ts
src/app/envCtrl/env-cfg/env-cfg.page.ts
+95
-67
env-detail.page.scss
src/app/envCtrl/env-detail/env-detail.page.scss
+1
-1
env-detail.page.ts
src/app/envCtrl/env-detail/env-detail.page.ts
+11
-3
env-fan.page.ts
src/app/envCtrl/env-fan/env-fan.page.ts
+2
-2
env-home.page.html
src/app/envCtrl/env-home/env-home.page.html
+11
-3
env-home.page.scss
src/app/envCtrl/env-home/env-home.page.scss
+1
-1
env-home.page.ts
src/app/envCtrl/env-home/env-home.page.ts
+3
-3
env-shower.page.html
src/app/envCtrl/env-shower/env-shower.page.html
+2
-2
env-shower.page.ts
src/app/envCtrl/env-shower/env-shower.page.ts
+39
-6
tabs.module.ts
src/app/envCtrl/tabs/tabs.module.ts
+0
-1
4.png
src/assets/lunbo/4.png
+0
-0
No files found.
src/app/envCtrl/env-alarm-detail/env-alarm-detail.page.html
View file @
4aa16b6f
...
...
@@ -69,12 +69,12 @@
<h3
style=
"margin-bottom: 5px;"
>
{{item.description}}
</h3>
<div>
<div
style=
"width:65%; float: left"
>
<div
*
ngIf=
"item.data.temp"
class=
"warnContent"
>
温度: {{item.data.temp}} ℃
</div>
<div
*
ngIf=
"item.data.humi"
class=
"warnContent"
>
湿度: {{item.data.humi}} %
</div>
<div
*
ngIf=
"item.data.heatStressLevel"
class=
"warnContent"
>
热应激等级: {{item.data.heatStressLevel}}
</div>
<div
*
ngIf=
"item.data.liquidPump"
class=
"warnContent"
>
供液泵压力: {{item.data.liquidPump}} MPa
</div>
<div
*
ngIf=
"item.data.press"
class=
"warnContent"
>
电磁阀压力: {{item.data.press}} MPa
</div>
<div
*
ngIf=
"item.data.NH3"
class=
"warnContent"
>
氨气: {{item.data.NH3}} ppm
</div>
<div
*
ngIf=
"item.data
!== null && item.data
.temp"
class=
"warnContent"
>
温度: {{item.data.temp}} ℃
</div>
<div
*
ngIf=
"item.data
!== null && item.data
.humi"
class=
"warnContent"
>
湿度: {{item.data.humi}} %
</div>
<div
*
ngIf=
"item.data
!== null && item.data
.heatStressLevel"
class=
"warnContent"
>
热应激等级: {{item.data.heatStressLevel}}
</div>
<div
*
ngIf=
"item.data
!== null && item.data
.liquidPump"
class=
"warnContent"
>
供液泵压力: {{item.data.liquidPump}} MPa
</div>
<div
*
ngIf=
"item.data
!== null && item.data
.press"
class=
"warnContent"
>
电磁阀压力: {{item.data.press}} MPa
</div>
<div
*
ngIf=
"item.data
!== null && item.data
.NH3"
class=
"warnContent"
>
氨气: {{item.data.NH3}} ppm
</div>
</div>
<div
style=
"width:35%; float: left"
>
<div
*
ngIf=
"displayArea === 'trouble' && item.disposeState === 0"
>
...
...
src/app/envCtrl/env-alarm-detail/env-alarm-detail.page.ts
View file @
4aa16b6f
...
...
@@ -197,6 +197,12 @@ export class EnvAlarmDetailPage implements OnInit {
};
this
.
api
.
troubleLog
.
processingFailure
([
req
,
(
data
)
=>
{
if
(
data
&&
data
.
code
===
1
)
{
this
.
api
.
presentMsgToast
(
data
.
message
);
}
else
{
this
.
api
.
presentMsgToast
(
'获取数据失败'
);
}
this
.
reflush
();
}]);
}
...
...
src/app/envCtrl/env-cfg/env-cfg.module.ts
View file @
4aa16b6f
...
...
@@ -7,6 +7,7 @@ import { IonicModule } from '@ionic/angular';
import
{
EnvCfgPage
}
from
'./env-cfg.page'
;
import
{
NgxDatatableModule
}
from
'@swimlane/ngx-datatable'
;
import
{
WtModule
}
from
'../../components/wt/wt.module'
;
const
routes
:
Routes
=
[
{
...
...
@@ -21,7 +22,8 @@ const routes: Routes = [
FormsModule
,
IonicModule
,
RouterModule
.
forChild
(
routes
),
NgxDatatableModule
NgxDatatableModule
,
WtModule
],
declarations
:
[
EnvCfgPage
]
})
...
...
src/app/envCtrl/env-cfg/env-cfg.page.html
View file @
4aa16b6f
...
...
@@ -11,6 +11,7 @@
<ion-select-option
*
ngFor=
"let cowshed of cowshedList"
[
value
]="
cowshed
.
fieldRegionNo
"
>
{{cowshed.fieldRegionName}}
</ion-select-option>
</ion-select>
</ion-item>
<div
*
ngIf=
"curCowshed.fieldRegionName"
>
<ion-item
lines=
"full"
class=
"subTitle"
>
<ion-label>
智慧模式选择
</ion-label>
...
...
@@ -315,8 +316,12 @@
</tr>
<tr
style=
"height: 30px"
>
<th>
氨气
</th>
<td><ion-input
[(
ngModel
)]="
curCowshed
.
environmentConfigJson
.
NH3U
"
(
ionFocus
)="
humHaveTouch
($
event
)"
class=
"tdBorder"
style=
"border-bottom: 1px solid lightgray;"
></ion-input></td>
<td><ion-input
[(
ngModel
)]="
curCowshed
.
environmentConfigJson
.
NH3L
"
(
ionFocus
)="
humHaveTouch
($
event
)"
class=
"tdBorder"
style=
"border-right: 1px solid lightgray; border-bottom: 1px solid lightgray;"
></ion-input></td>
<!--<td><ion-input [(ngModel)]="curCowshed.environmentConfigJson.NH3U" (ionFocus)="humHaveTouch($event)" class="tdBorder" style="border-bottom: 1px solid lightgray;"></ion-input></td>-->
<!--<td><ion-input [(ngModel)]="curCowshed.environmentConfigJson.NH3L" (ionFocus)="humHaveTouch($event)" class="tdBorder" style="border-right: 1px solid lightgray; border-bottom: 1px solid lightgray;"></ion-input></td>-->
<td><ion-input
[(
ngModel
)]="
curCowshed
.
environmentConfigJson
.
NH3U
"
class=
"tdBorder"
style=
"border-bottom: 1px solid lightgray;"
></ion-input></td>
<td><ion-input
[(
ngModel
)]="
curCowshed
.
environmentConfigJson
.
NH3L
"
class=
"tdBorder"
style=
"border-right: 1px solid lightgray; border-bottom: 1px solid lightgray;"
></ion-input></td>
<td>
ppm
</td>
</tr>
...
...
@@ -358,4 +363,6 @@
<ion-button
color=
"secondary"
class=
"addBtn"
round
(
click
)="
updateCowshed
()"
>
保存配置
</ion-button>
</ion-item>
</div>
<!--<v-loading-bump style="z-index: 9999; color: red" [remain]="comm.remain" *ngIf="comm.isLoading"></v-loading-bump>-->
</ion-content>
src/app/envCtrl/env-cfg/env-cfg.page.ts
View file @
4aa16b6f
...
...
@@ -74,78 +74,37 @@ export class EnvCfgPage implements OnInit {
isShowerDisplay
=
false
;
isFanDisplay
=
false
;
private
$ionicPopup
:
any
;
// 发送指令延时判断
comm
=
{
remain
:
20
,
isLoading
:
true
};
async
openPicker
(
numColumns
=
1
,
numOptions
=
5
,
columnOptions
=
this
.
defaultColumnOptions
,
event
)
{
const
picker
=
await
this
.
pickerController
.
create
({
columns
:
this
.
getColumns
(
numColumns
,
numOptions
,
columnOptions
),
buttons
:
[
{
text
:
'取消'
,
role
:
'cancel'
,
handler
:
()
=>
{
this
.
fanMode
.
selecting
=
false
;
}
},
{
text
:
'确认'
,
handler
:
(
value
)
=>
{
event
.
target
.
value
=
value
.
col0
.
text
;
console
.
log
(
value
.
value
);
this
.
fanMode
.
selecting
=
false
;
}
}
]
});
await
picker
.
present
();
}
commTmr
:
any
;
getColumns
(
numColumns
,
numOptions
,
columnOptions
)
{
const
columns
=
[];
for
(
let
i
=
0
;
i
<
numColumns
;
i
++
)
{
columns
.
push
({
name
:
`col
${
i
}
`
,
options
:
this
.
getColumnOptions
(
i
,
numOptions
,
columnOptions
)
});
}
return
columns
;
}
getColumnOptions
(
columnIndex
,
numOptions
,
columnOptions
)
{
const
options
=
[];
for
(
let
i
=
0
;
i
<
numOptions
;
i
++
)
{
options
.
push
({
text
:
columnOptions
[
columnIndex
][
i
%
numOptions
],
value
:
i
});
}
return
options
;
}
private
$ionicPopup
:
any
;
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
;
ngOnInit
()
{
// this.pickerController = document.querySelector('ion-picker-controller');
this
.
comm
.
remain
=
0
;
this
.
comm
.
isLoading
=
false
;
this
.
commTmr
=
window
.
setInterval
(()
=>
{
this
.
openPicker
(
1
,
41
,
this
.
defaultColumnOptions
,
event
);
}
if
(
this
.
comm
.
remain
>
0
)
{
this
.
comm
.
remain
=
this
.
comm
.
remain
-
1
;
}
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
);
if
(
this
.
comm
.
remain
<
1
)
{
this
.
comm
.
isLoading
=
false
;
}
else
{
this
.
comm
.
isLoading
=
true
;
}
},
1000
)
;
this
.
init
();
}
ngOnInit
()
{
// this.pickerController = document.querySelector('ion-picker-controller');
this
.
init
();
ionViewWillLeave
()
{
clearInterval
(
this
.
commTmr
);
}
init
()
{
...
...
@@ -276,6 +235,73 @@ export class EnvCfgPage implements OnInit {
}
}
async
openPicker
(
numColumns
=
1
,
numOptions
=
5
,
columnOptions
=
this
.
defaultColumnOptions
,
event
)
{
const
picker
=
await
this
.
pickerController
.
create
({
columns
:
this
.
getColumns
(
numColumns
,
numOptions
,
columnOptions
),
buttons
:
[
{
text
:
'取消'
,
role
:
'cancel'
,
handler
:
()
=>
{
this
.
fanMode
.
selecting
=
false
;
}
},
{
text
:
'确认'
,
handler
:
(
value
)
=>
{
event
.
target
.
value
=
value
.
col0
.
text
;
console
.
log
(
value
.
value
);
this
.
fanMode
.
selecting
=
false
;
}
}
]
});
await
picker
.
present
();
}
getColumns
(
numColumns
,
numOptions
,
columnOptions
)
{
const
columns
=
[];
for
(
let
i
=
0
;
i
<
numColumns
;
i
++
)
{
columns
.
push
({
name
:
`col
${
i
}
`
,
options
:
this
.
getColumnOptions
(
i
,
numOptions
,
columnOptions
)
});
}
return
columns
;
}
getColumnOptions
(
columnIndex
,
numOptions
,
columnOptions
)
{
const
options
=
[];
for
(
let
i
=
0
;
i
<
numOptions
;
i
++
)
{
options
.
push
({
text
:
columnOptions
[
columnIndex
][
i
%
numOptions
],
value
:
i
});
}
return
options
;
}
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
);
}
}
workModeChange
(
device
)
{
switch
(
device
)
{
case
'fan'
:
...
...
@@ -341,7 +367,8 @@ export class EnvCfgPage implements OnInit {
this
.
updateDateFormat
();
if
(
this
.
validate
())
{
this
.
updateModels
();
this
.
load
.
toLoad
(
'加载中...'
,
false
);
// this.load.toLoad('加载中...', false);
this
.
comm
.
remain
=
120
;
this
.
curCowshed
.
isWisdomModel
=
this
.
curCowshed
.
isWisdomModelChecked
?
1
:
0
;
this
.
api
.
config
.
updateConfig
([
this
.
curCowshed
,
(
data
)
=>
{
if
(
data
&&
data
.
code
!==
0
)
{
...
...
@@ -350,6 +377,7 @@ export class EnvCfgPage implements OnInit {
this
.
api
.
presentMsgToast
(
'获取数据失败'
);
this
.
isError
=
true
;
}
this
.
comm
.
remain
=
0
;
this
.
load
.
offLoad
();
}]);
}
...
...
@@ -400,7 +428,7 @@ export class EnvCfgPage implements OnInit {
return
false
;
}
if
(
this
.
fan
.
controlModel
===
Constants
.
CONTROLL_SELF
)
{
if
(
this
.
isEmpty
(
this
.
fan
.
controlConfig
.
TU
)
||
this
.
isEmpty
(
this
.
fan
.
controlC
onfig
.
TL
))
{
if
(
this
.
isEmpty
(
this
.
fan
.
controlConfig
.
config
.
TU
)
||
this
.
isEmpty
(
this
.
fan
.
controlConfig
.
c
onfig
.
TL
))
{
this
.
api
.
presentMsgToast
(
'请完成风机配置'
);
return
false
;
}
...
...
src/app/envCtrl/env-detail/env-detail.page.scss
View file @
4aa16b6f
...
...
@@ -18,7 +18,7 @@
.online
{
border-radius
:
2px
;
background-color
:
#
199ED8
;
background-color
:
#
61C7CC
;
display
:
inline-block
;
vertical-align
:
middle
;
box-shadow
:
#ccc
0
.5px
0
.5px
3px
;
...
...
src/app/envCtrl/env-detail/env-detail.page.ts
View file @
4aa16b6f
...
...
@@ -16,7 +16,13 @@ export class EnvDetailPage implements OnInit {
private
api
:
Api
,
private
ac
:
ActivatedRoute
,
private
load
:
Load
,
private
tf
:
Transfer
)
{}
private
tf
:
Transfer
)
{
this
.
ac
.
queryParams
.
subscribe
((
data
)
=>
{
if
(
data
.
no
)
{
this
.
fieldRegionNo
=
data
.
no
;
}
});
}
item
=
{
factoryNo
:
''
,
...
...
@@ -72,8 +78,10 @@ export class EnvDetailPage implements OnInit {
this
.
comm
.
isLoading
=
false
;
this
.
comm
.
remain
=
0
;
this
.
ac
.
queryParams
.
subscribe
((
data
)
=>
{
if
(
data
.
no
)
{
this
.
fieldRegionNo
=
data
.
no
;
this
.
getData
(
0
);
}
});
}
...
...
src/app/envCtrl/env-fan/env-fan.page.ts
View file @
4aa16b6f
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'
;
import
{
AlertController
}
from
'@ionic/angular'
;
import
{
Constants
}
from
'../../service/constants'
;
import
{
Constants
}
from
'../../service/constants'
;
@
Component
({
selector
:
'v-env-fan'
,
...
...
src/app/envCtrl/env-home/env-home.page.html
View file @
4aa16b6f
...
...
@@ -5,11 +5,19 @@
</ion-buttons>
<ion-searchbar
(
ionInput
)="
getItems
($
event
)"
debounce=
"1000"
style=
"height: 40px;"
></ion-searchbar>
</ion-toolbar>
<!--<ion-slides style="width: 100%; height: 125px;" mode="ios"-->
<!--[options]="lunbo" #slide (ionSlideTouchEnd)="slideDidChange()">-->
<!--<ion-slide class="slideCon" *ngFor="let one of imgs">-->
<!--<div class="inBox">-->
<!--<img [src]="'../../../../assets/lunbo/' + one">-->
<!--</div>-->
<!--</ion-slide>-->
<!--</ion-slides>-->
<ion-slides
style=
"width: 100%; height: 125px;"
mode=
"ios"
[
options
]="
lunbo
"
#
slide
(
ionSlideTouchEnd
)="
slideDidChange
()"
>
<ion-slide
class=
"slideCon"
*
ngFor=
"let one of imgs"
>
[
options
]="
lunbo
"
#
slide
>
<ion-slide
class=
"slideCon"
>
<div
class=
"inBox"
>
<img
[
src
]="'../../../../
assets
/
lunbo
/
'
+
one
"
>
<img
[
src
]="'../../../../
assets
/
lunbo
/
4
.
png
'
"
>
</div>
</ion-slide>
</ion-slides>
...
...
src/app/envCtrl/env-home/env-home.page.scss
View file @
4aa16b6f
...
...
@@ -64,7 +64,7 @@
.online
{
border-radius
:
2px
;
background-color
:
#
199ED8
;
background-color
:
#
61C7CC
;
display
:
inline-block
;
vertical-align
:
middle
;
box-shadow
:
#ccc
0
.5px
0
.5px
3px
;
...
...
src/app/envCtrl/env-home/env-home.page.ts
View file @
4aa16b6f
...
...
@@ -29,15 +29,15 @@ export class EnvHomePage implements OnInit {
isLoading
:
true
};
imgs
=
[
'
1.jpg'
,
'2.jpg'
,
'3.jp
g'
];
imgs
=
[
'
4.pn
g'
];
lunbo
=
{
speed
:
1000
,
allowTouchMove
:
tru
e
,
allowTouchMove
:
fals
e
,
effect
:
'flip'
,
autoplay
:
{
delay
:
2000
,
},
loop
:
tru
e
,
loop
:
fals
e
,
spaceBetween
:
0
,
zoom
:
false
,
height
:
150
,
...
...
src/app/envCtrl/env-shower/env-shower.page.html
View file @
4aa16b6f
...
...
@@ -34,10 +34,10 @@
line-height: 25px;
margin-bottom: 5px;"
>
时间参数
</h1>
<ion-item
lines=
"full"
insert=
"false"
>
<span
class=
"content"
>
{{
param[0].fieldDeviceName
}}喷淋时间
{{controlConfig.A}}
秒
</span>
<span
class=
"content"
>
{{
fieldDeviceNameA
}}喷淋时间
{{controlConfig.A}}
秒
</span>
</ion-item>
<ion-item
lines=
"full"
insert=
"false"
>
<span
class=
"content"
>
{{
param[1].fieldDeviceName
}}喷淋时间
{{controlConfig.B}}
秒
</span>
<span
class=
"content"
>
{{
fieldDeviceNameB
}}喷淋时间
{{controlConfig.B}}
秒
</span>
</ion-item>
<ion-item
lines=
"full"
insert=
"false"
>
<span
class=
"content"
>
间隔时间
{{controlConfig.interval}}
秒
</span>
...
...
src/app/envCtrl/env-shower/env-shower.page.ts
View file @
4aa16b6f
...
...
@@ -41,7 +41,26 @@ export class EnvShowerPage implements OnInit {
offset
:
0
};
// 各设备信息
param
=
[];
param
:
any
=
[{
fieldDeviceNo
:
''
,
fieldDeviceName
:
''
,
alarm
:
0
,
cycle
:
0
,
state
:
0
,
press
:
0.25
,
ts
:
0
},
{
fieldDeviceNo
:
''
,
fieldDeviceName
:
''
,
alarm
:
0
,
cycle
:
0
,
state
:
0
,
press
:
0.25
,
ts
:
0
}];
fieldDeviceNameA
=
'A区'
;
fieldDeviceNameB
=
'B区'
;
controlModelOptions
=
[
{
modelId
:
0
,
modelValue
:
'-'
},
...
...
@@ -49,7 +68,14 @@ export class EnvShowerPage implements OnInit {
{
modelId
:
2
,
modelValue
:
'自控模式'
},
{
modelId
:
3
,
modelValue
:
'智控模式'
}];
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
)
{
this
.
param
[
0
].
fieldDeviceName
=
'A区'
;
this
.
param
[
1
].
fieldDeviceName
=
'B区'
;
this
.
route
.
paramMap
.
subscribe
(
params
=>
{
this
.
fieldRegionNo
=
params
.
get
(
'fieldRegionNo'
);
this
.
getData
(
0
);
});
}
ngOnInit
()
{
this
.
comm
.
remain
=
0
;
...
...
@@ -69,10 +95,10 @@ export class EnvShowerPage implements OnInit {
this
.
init
();
}
//
ionViewWillEnter() {
//
console.log('ionViewWillEnter_shower');
//
this.init();
//
}
ionViewWillEnter
()
{
console
.
log
(
'ionViewWillEnter_shower'
);
this
.
init
();
}
ionViewWillLeave
()
{
clearInterval
(
this
.
commTmr
);
}
...
...
@@ -99,6 +125,13 @@ export class EnvShowerPage implements OnInit {
this
.
param
.
forEach
(
device
=>
{
device
.
op
=
device
.
cycle
===
1
?
true
:
false
;
});
if
(
this
.
param
[
0
])
{
this
.
fieldDeviceNameA
=
this
.
param
[
0
].
fieldDeviceName
;
}
if
(
this
.
param
[
1
])
{
this
.
fieldDeviceNameB
=
this
.
param
[
1
].
fieldDeviceName
;
}
this
.
initButtons
();
}
this
.
load
.
offLoad
();
...
...
src/app/envCtrl/tabs/tabs.module.ts
View file @
4aa16b6f
...
...
@@ -70,7 +70,6 @@ const routes: Routes = [
// EnvShowerPage,
// EnvLightPage,
// EnvWaterchannelPage,
EnvCfgPage
,
]
})
export
class
TabsPageModule
{}
src/assets/lunbo/4.png
0 → 100644
View file @
4aa16b6f
425 KB
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment