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

修改手机物理返回键的功能(按下后 跳转至上级页面,非上一次的页面)

parent 072dfe3d
<?xml version='1.0' encoding='utf-8'?> <?xml version='1.0' encoding='utf-8'?>
<widget id="com.witium.muchang.test" version="2.9.6.4" xmlns="http://www.w3.org/ns/widgets" xmlns:cdv="http://cordova.apache.org/ns/1.0"> <widget id="com.witium.muchang.test" version="2.9.6.6.7" xmlns="http://www.w3.org/ns/widgets" xmlns:cdv="http://cordova.apache.org/ns/1.0">
<name>牧场云</name> <name>牧场云</name>
<description>test</description> <description>test</description>
<author email="frank.feng@witium.com" href="http://muchang.witium.com/">Van.chen - frank.feng</author> <author email="frank.feng@witium.com" href="http://muchang.witium.com/">Van.chen - frank.feng</author>
......
import {Component, AfterViewInit, OnDestroy} from '@angular/core'; import {Component, AfterViewInit, OnDestroy} from '@angular/core';
import {NavController, Platform} from '@ionic/angular'; import {
ActionSheetController,
AlertController,
MenuController,
ModalController,
NavController,
Platform,
PopoverController
} from '@ionic/angular';
import {SplashScreen} from '@ionic-native/splash-screen/ngx'; import {SplashScreen} from '@ionic-native/splash-screen/ngx';
import {StatusBar} from '@ionic-native/status-bar/ngx'; import {StatusBar} from '@ionic-native/status-bar/ngx';
import {Router, NavigationEnd} from '@angular/router'; import {Router, NavigationEnd} from '@angular/router';
...@@ -7,6 +15,7 @@ import {AppMinimize} from '@ionic-native/app-minimize/ngx'; ...@@ -7,6 +15,7 @@ import {AppMinimize} from '@ionic-native/app-minimize/ngx';
import {Mqtt} from './service/mqtt'; import {Mqtt} from './service/mqtt';
import {Load} from './service/load'; import {Load} from './service/load';
import {Loading} from './service/loading'; import {Loading} from './service/loading';
import {Api} from './service/api';
declare var screen: any; declare var screen: any;
...@@ -104,7 +113,13 @@ export class AppComponent implements AfterViewInit, OnDestroy { ...@@ -104,7 +113,13 @@ export class AppComponent implements AfterViewInit, OnDestroy {
private mqtt: Mqtt, private mqtt: Mqtt,
public load: Load, public load: Load,
public loading: Loading, public loading: Loading,
private nav: NavController private nav: NavController,
public alertController: AlertController,
public modalCtrl: ModalController,
public menuCtrl: MenuController,
public actionSheetCtrl: ActionSheetController,
public popoverCtrl: PopoverController,
private api: Api
) { ) {
this.initializeApp(); this.initializeApp();
} }
...@@ -155,7 +170,8 @@ export class AppComponent implements AfterViewInit, OnDestroy { ...@@ -155,7 +170,8 @@ export class AppComponent implements AfterViewInit, OnDestroy {
} }
registerBackButtonAction() { registerBackButtonAction() {
this.platform.backButton.subscribe(() => { this.platform.backButton.subscribe( () => {
this.androidBackButtonHandle();
if (this.url === '/index' || this.url === '/login') { if (this.url === '/index' || this.url === '/login') {
if (this.backBtnPressed) { if (this.backBtnPressed) {
this.appMinimize.minimize(); this.appMinimize.minimize();
...@@ -167,11 +183,47 @@ export class AppComponent implements AfterViewInit, OnDestroy { ...@@ -167,11 +183,47 @@ export class AppComponent implements AfterViewInit, OnDestroy {
setTimeout(() => this.backBtnPressed = false, 2000); setTimeout(() => this.backBtnPressed = false, 2000);
} }
} else { } else {
this.backBtnPressed = true; if (
setTimeout(() => this.backBtnPressed = false, 2000); this.url.indexOf('/env-detail/fan') >= 0 ||
} this.url.indexOf('/env-detail/light') >= 0 ||
this.url.indexOf('/env-detail/shower') >= 0 ||
this.url.indexOf('/env-detail/waterchannel') >= 0) {
this.nav.navigateRoot('/tabs/tab-home');
return;
} else if (
this.url === '/tabs/tab-home' ||
this.url === '/tabs/tab-anal' ||
this.url === '/tabs/tab-alarm' ||
this.url === '/tabs/tab-cfg') {
this.nav.navigateRoot('/index');
return;
} else {
this.nav.back(); this.nav.back();
return; return;
}
}
}); });
} }
async androidBackButtonHandle() {
try {
const alert = await this.alertController.getTop();
const action = await this.actionSheetCtrl.getTop();
const popover = await this.popoverCtrl.getTop();
const modal = await this.modalCtrl.getTop();
const isOpen = await this.menuCtrl.isOpen();
if (alert) {
alert.dismiss();
} else if (action) {
action.dismiss();
} else if (popover) {
popover.dismiss();
} else if (modal) {
modal.dismiss();
} else if (isOpen) {
this.menuCtrl.close();
}
} catch (error) {
}
}
} }
...@@ -63,7 +63,7 @@ export class EnvAlarmDetailPage implements OnInit { ...@@ -63,7 +63,7 @@ export class EnvAlarmDetailPage implements OnInit {
// @ViewChild('currentItem') currentItem; // @ViewChild('currentItem') currentItem;
constructor(private ac: ActivatedRoute, private api: Api, public load: Load, public loadingController: LoadingController, constructor(private ac: ActivatedRoute, private api: Api, public load: Load, public loadingController: LoadingController,
private alterController: AlertController, private datePipe: DatePipe, public loading: Loading, public alterController: AlertController, private datePipe: DatePipe, public loading: Loading,
public eventService: EventService) { public eventService: EventService) {
} }
...@@ -246,7 +246,7 @@ export class EnvAlarmDetailPage implements OnInit { ...@@ -246,7 +246,7 @@ export class EnvAlarmDetailPage implements OnInit {
event.target.complete(); event.target.complete();
// App logic to determine if all data is loaded // App logic to determine if all data is loaded
// and disable the infinite scroll // and disable the infinite scroll
await this.wait(1000); await this.wait(500);
if (this.troubleList.length === this.detailInfoLength) { if (this.troubleList.length === this.detailInfoLength) {
event.target.disabled = true; event.target.disabled = true;
} }
...@@ -379,7 +379,7 @@ export class EnvAlarmDetailPage implements OnInit { ...@@ -379,7 +379,7 @@ export class EnvAlarmDetailPage implements OnInit {
cssClass: 'main-color', cssClass: 'main-color',
mode: 'ios', mode: 'ios',
message: '', message: '',
duration: 1000 duration: 500
}); });
await loading.present(); await loading.present();
......
...@@ -35,7 +35,7 @@ export class EnvCfgPage implements OnInit { ...@@ -35,7 +35,7 @@ export class EnvCfgPage implements OnInit {
{alarmId: '平台', alarmValue: '平台'}, {alarmId: '平台', alarmValue: '平台'},
{alarmId: '平台/短信', alarmValue: '平/短'}]; {alarmId: '平台/短信', alarmValue: '平/短'}];
constructor(public alertCtrl: AlertController, private pickerController: PickerController, private alertController: AlertController, constructor(public alertCtrl: AlertController, private pickerController: PickerController, public alertController: AlertController,
private api: Api, private load: Load, public nav: NavController, private tf: Transfer, private ac: ActivatedRoute, private api: Api, private load: Load, public nav: NavController, private tf: Transfer, private ac: ActivatedRoute,
private datePipe: DatePipe, public loading: Loading) { private datePipe: DatePipe, public loading: Loading) {
} }
......
<ion-header> <ion-header>
<ion-toolbar color="dark"> <ion-toolbar color="dark" mode="ios">
<ion-buttons slot="start"> <ion-buttons slot="start">
<ion-back-button mode="ios" text="" ></ion-back-button> <ion-back-button mode="ios" text="" ></ion-back-button>
</ion-buttons> </ion-buttons>
...@@ -30,7 +30,7 @@ ...@@ -30,7 +30,7 @@
</ion-header> </ion-header>
<ion-content color="light"> <ion-content color="light">
<ion-router-outlet></ion-router-outlet> <ion-router-outlet></ion-router-outlet>
<ion-tabs> <ion-tabs #tabs>
<ion-tab-bar slot="top" mode="ios" style="--border: 0px;"> <ion-tab-bar slot="top" mode="ios" style="--border: 0px;">
<ion-tab-button tab="fan" class="tabSelected ion-segment-button"> <ion-tab-button tab="fan" class="tabSelected ion-segment-button">
<ion-label>风机</ion-label> <ion-label>风机</ion-label>
......
import {Component, OnInit} from '@angular/core'; import {Component, OnInit, ViewChild} from '@angular/core';
import {Api} from '../../service/api'; import {Api} from '../../service/api';
import {NavController} from '@ionic/angular'; import {NavController, Platform} from '@ionic/angular';
import {ActivatedRoute} from '@angular/router'; import {ActivatedRoute} from '@angular/router';
import {Load} from '../../service/load'; import {Load} from '../../service/load';
import {Transfer} from '../../service/transfer'; import {Transfer} from '../../service/transfer';
......
...@@ -47,7 +47,7 @@ export class EnvFanPage implements OnInit { ...@@ -47,7 +47,7 @@ export class EnvFanPage implements OnInit {
commTmr: any; commTmr: any;
constructor(private api: Api, private ac: ActivatedRoute, private load: Load, private alertController: AlertController, constructor(private api: Api, private ac: ActivatedRoute, private load: Load, public alertController: AlertController,
public loading: Loading, public eventService: EventService) { public loading: Loading, public eventService: EventService) {
this.ac.queryParams.subscribe((data) => { this.ac.queryParams.subscribe((data) => {
if (data && data.fieldRegionNo !== undefined && data.fieldRegionNo !== null && data.fieldRegionNo !== '') { if (data && data.fieldRegionNo !== undefined && data.fieldRegionNo !== null && data.fieldRegionNo !== '') {
......
...@@ -5,6 +5,8 @@ import {Load} from '../../service/load'; ...@@ -5,6 +5,8 @@ import {Load} from '../../service/load';
import {NgxDatatableModule, ColumnMode} from '@swimlane/ngx-datatable'; import {NgxDatatableModule, ColumnMode} from '@swimlane/ngx-datatable';
import {DateFormatter} from '@angular/common/src/pipes/deprecated/intl'; import {DateFormatter} from '@angular/common/src/pipes/deprecated/intl';
import {DatePipe} from '@angular/common'; import {DatePipe} from '@angular/common';
import {Constants} from '../../service/constants';
import {Loading} from '../../service/loading';
@Component({ @Component({
selector: 'v-env-history', selector: 'v-env-history',
...@@ -14,7 +16,7 @@ import {DatePipe} from '@angular/common'; ...@@ -14,7 +16,7 @@ import {DatePipe} from '@angular/common';
export class EnvHistoryPage implements OnInit { export class EnvHistoryPage implements OnInit {
ColumnMode = ColumnMode; ColumnMode = ColumnMode;
constructor(private api: Api, private ac: ActivatedRoute, private load: Load, private datePipe: DatePipe) { constructor(private api: Api, private ac: ActivatedRoute, private load: Load, private datePipe: DatePipe, public loading: Loading) {
} }
fieldRegionNo = ''; fieldRegionNo = '';
...@@ -113,6 +115,7 @@ export class EnvHistoryPage implements OnInit { ...@@ -113,6 +115,7 @@ export class EnvHistoryPage implements OnInit {
if (time) { if (time) {
this.load.toLoad('加载中...', false); this.load.toLoad('加载中...', false);
} }
this.loading.presentLoading(Constants.LOADING_SHORTER, false);
const req: any = {}; const req: any = {};
req.fieldRegionNo = this.fieldRegionNo; req.fieldRegionNo = this.fieldRegionNo;
req.startTime = new Date().valueOf() - 8 * 3600 * 1000; req.startTime = new Date().valueOf() - 8 * 3600 * 1000;
...@@ -121,6 +124,7 @@ export class EnvHistoryPage implements OnInit { ...@@ -121,6 +124,7 @@ export class EnvHistoryPage implements OnInit {
if (data) { if (data) {
this.paintChart(data); this.paintChart(data);
} }
this.loading.closeLoading();
}]); }]);
req.counts = 10; req.counts = 10;
......
...@@ -3,7 +3,7 @@ import {ActivatedRoute} from '@angular/router'; ...@@ -3,7 +3,7 @@ import {ActivatedRoute} from '@angular/router';
import {Transfer} from '../../service/transfer'; import {Transfer} from '../../service/transfer';
import {Api} from '../../service/api'; import {Api} from '../../service/api';
import {Load} from '../../service/load'; import {Load} from '../../service/load';
import {NavController} from '@ionic/angular'; import {ActionSheetController, AlertController, MenuController, ModalController, NavController, PopoverController} from '@ionic/angular';
import {Network} from '@ionic-native/network/ngx'; import {Network} from '@ionic-native/network/ngx';
import {EventService} from '../../service/event'; import {EventService} from '../../service/event';
......
...@@ -58,7 +58,7 @@ export class EnvLightPage implements OnInit { ...@@ -58,7 +58,7 @@ export class EnvLightPage implements OnInit {
commTmr: any; commTmr: any;
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, public loading: Loading, private eventService: EventService) { public alertControlle: AlertController, public loading: Loading, private eventService: EventService) {
} }
ionViewWillLeave() { ionViewWillLeave() {
......
import {Injectable} from '@angular/core';
import {ActionSheetController, AlertController, MenuController, ModalController, NavController, PopoverController} from '@ionic/angular';
@Injectable()
export class BackService {
tabsCanGoBack = false;
tabsParentCanGoBack = false;
constructor(public nav: NavController,
public alertCtrl: AlertController,
public modalCtrl: ModalController,
public menuCtrl: MenuController,
public actionSheetCtrl: ActionSheetController,
public popoverCtrl: PopoverController) {}
async androidBackButtonHandle(next) {
try {
const alert = await this.alertCtrl.getTop();
if (alert) {
alert.dismiss();
return;
}
const action = await this.actionSheetCtrl.getTop();
if (action) {
action.dismiss();
return;
}
const popover = await this.popoverCtrl.getTop();
if (popover) {
popover.dismiss();
return;
}
const modal = await this.modalCtrl.getTop();
if (modal) {
modal.dismiss();
return;
}
const isOpen = await this.menuCtrl.isOpen();
if (isOpen) {
this.menuCtrl.close();
return;
}
if (!this.tabsCanGoBack && !this.tabsParentCanGoBack) {
// this.native.appMinimize();
this.nav.navigateRoot('/' + next);
return;
}
} catch (error) {
}
}
}
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