提交 cc784853 编写于 作者: IBZGIT01's avatar IBZGIT01

ibizdev提交

上级 938f4a39
流水线 #126 已失败

要显示的变更太多。

为了保持性能,仅显示文件中的 1000/1000+

!!!!模版产生代码错误:----
Tip: If the failing expression is known to be legally refer to something that's sometimes null or missing, either specify a default value like myOptionalVar!myDefault, or use <#if myOptionalVar??>when-present<#else>when-missing</#if>. (These only cover the last step of the expression; to cover the whole expression, use parenthesis: (myOptionalVar.foo)!myDefault, (myOptionalVar.foo)??
----
----
FTL stack trace ("~" means nesting-related):
- Failed at: ${depnode.getSSHPassword()} [in template "CODETEMPL_zh_CN" at line 23, column 19]
----
\ No newline at end of file
此差异已折叠。
因为 它太大了无法显示 源差异 。您可以改为 查看blob
{
"$schema": "./node_modules/@angular-devkit/core/src/workspace/workspace-schema.json",
"version": 1,
"defaultProject": "app",
"newProjectRoot": "projects",
"projects": {
"app": {
"root": "",
"sourceRoot": "src",
"projectType": "application",
"prefix": "app",
"schematics": {},
"architect": {
"build": {
"builder": "@angular-devkit/build-angular:browser",
"options": {
"outputPath": "../springboot_DemoApp/src/main/webapp/mob",
"index": "src/index.html",
"main": "src/main.ts",
"polyfills": "src/polyfills.ts",
"tsConfig": "src/tsconfig.app.json",
"assets": [
{
"glob": "**/*",
"input": "src/assets",
"output": "assets"
},
{
"glob": "**/*.svg",
"input": "node_modules/ionicons/dist/ionicons/svg",
"output": "./svg"
}
],
"styles": [
"node_modules/ng-zorro-antd-mobile/src/ng-zorro-antd-mobile.min.css",
{
"input": "src/theme/variables.scss"
},
{
"input": "src/global.scss"
}
],
"scripts": [],
"es5BrowserSupport": true
},
"configurations": {
"production": {
"fileReplacements": [
{
"replace": "src/environments/environment.ts",
"with": "src/environments/environment.prod.ts"
}
],
"optimization": true,
"outputHashing": "all",
"sourceMap": false,
"extractCss": true,
"namedChunks": false,
"aot": true,
"extractLicenses": true,
"vendorChunk": false,
"buildOptimizer": true,
"budgets": [
{
"type": "initial",
"maximumWarning": "2mb",
"maximumError": "5mb"
}
]
},
"ci": {
"progress": false
}
}
},
"serve": {
"builder": "@angular-devkit/build-angular:dev-server",
"options": {
"browserTarget": "app:build",
"host": "0.0.0.0",
"port": 8100,
"proxyConfig": "./proxy.conf.json"
},
"configurations": {
"production": {
"browserTarget": "app:build:production"
},
"ci": {
"progress": false
}
}
},
"extract-i18n": {
"builder": "@angular-devkit/build-angular:extract-i18n",
"options": {
"browserTarget": "app:build"
}
},
"test": {
"builder": "@angular-devkit/build-angular:karma",
"options": {
"main": "src/test.ts",
"polyfills": "src/polyfills.ts",
"tsConfig": "src/tsconfig.spec.json",
"karmaConfig": "src/karma.conf.js",
"styles": [],
"scripts": [],
"assets": [
{
"glob": "favicon.ico",
"input": "src/",
"output": "/"
},
{
"glob": "**/*",
"input": "src/assets",
"output": "/assets"
}
]
},
"configurations": {
"ci": {
"progress": false,
"watch": false
}
}
},
"lint": {
"builder": "@angular-devkit/build-angular:tslint",
"options": {
"tsConfig": ["src/tsconfig.app.json", "src/tsconfig.spec.json"],
"exclude": ["**/node_modules/**"]
}
},
"ionic-cordova-build": {
"builder": "@ionic/angular-toolkit:cordova-build",
"options": {
"browserTarget": "app:build"
},
"configurations": {
"production": {
"browserTarget": "app:build:production"
}
}
},
"ionic-cordova-serve": {
"builder": "@ionic/angular-toolkit:cordova-serve",
"options": {
"cordovaBuildTarget": "app:ionic-cordova-build",
"devServerTarget": "app:serve"
},
"configurations": {
"production": {
"cordovaBuildTarget": "app:ionic-cordova-build:production",
"devServerTarget": "app:serve:production"
}
}
}
}
},
"app-e2e": {
"root": "e2e/",
"projectType": "application",
"architect": {
"e2e": {
"builder": "@angular-devkit/build-angular:protractor",
"options": {
"protractorConfig": "e2e/protractor.conf.js",
"devServerTarget": "app:serve"
},
"configurations": {
"ci": {
"devServerTarget": "app:serve:ci"
}
}
},
"lint": {
"builder": "@angular-devkit/build-angular:tslint",
"options": {
"tsConfig": "e2e/tsconfig.e2e.json",
"exclude": ["**/node_modules/**"]
}
}
}
}
},
"cli": {
"defaultCollection": "@ionic/angular-toolkit"
},
"schematics": {
"@ionic/angular-toolkit:component": {
"styleext": "scss"
},
"@ionic/angular-toolkit:page": {
"styleext": "scss"
}
}
}
import { NgModule } from '@angular/core';
import { PreloadAllModules, RouterModule, Routes } from '@angular/router';
const routes: Routes = [
{
path: '',
loadChildren: '@pages/demo/app-index-view/app-index-view.module#AppIndexViewModule'
},
{
path: 'demo_appportalview',
loadChildren: '@pages/demo/app-portal-view/app-portal-view.module#AppPortalViewModule'
},
{
path: 'demo_qjmobeditview',
loadChildren: '@pages/demo/qjmob-edit-view/qjmob-edit-view.module#QJMobEditViewModule'
},
{
path: 'demo_orgusermobmdview',
loadChildren: '@pages/demo/org-user-mob-mdview/org-user-mob-mdview.module#OrgUserMobMDViewModule'
},
{
path: 'demo_qjmobwfactionview',
loadChildren: '@pages/demo/qjmob-wfaction-view/qjmob-wfaction-view.module#QJMobWFActionViewModule'
},
{
path: 'demo_bgypmobpickupmdview',
loadChildren: '@pages/demo/bgypmob-pickup-mdview/bgypmob-pickup-mdview.module#BGYPMobPickupMDViewModule'
},
{
path: 'demo_kqmobeditview',
loadChildren: '@pages/demo/kqmob-edit-view/kqmob-edit-view.module#KQMobEditViewModule'
},
{
path: 'demo_appportalview3',
loadChildren: '@pages/demo/app-portal-view3/app-portal-view3.module#AppPortalView3Module'
},
{
path: 'demo_qjmobwfeditview3',
loadChildren: '@pages/demo/qjmob-wfedit-view3/qjmob-wfedit-view3.module#QJMobWFEditView3Module'
},
{
path: 'demo_ycsqusr2mobeditview',
loadChildren: '@pages/demo/ycsqusr2-mob-edit-view/ycsqusr2-mob-edit-view.module#YCSQUsr2MobEditViewModule'
},
{
path: 'demo_qjusr3mobeditview',
loadChildren: '@pages/demo/qjusr3-mob-edit-view/qjusr3-mob-edit-view.module#QJUsr3MobEditViewModule'
},
{
path: 'demo_appstartview',
loadChildren: '@pages/demo/app-start-view/app-start-view.module#AppStartViewModule'
},
{
path: 'demo_wfworklistmobmdview',
loadChildren: '@pages/demo/wfwork-list-mob-mdview/wfwork-list-mob-mdview.module#WFWorkListMobMDViewModule'
},
{
path: 'demo_dfmobmdview',
loadChildren: '@pages/demo/dfmob-mdview/dfmob-mdview.module#DFMobMDViewModule'
},
{
path: 'demo_qjmobwfstartview',
loadChildren: '@pages/demo/qjmob-wfstart-view/qjmob-wfstart-view.module#QJMobWFStartViewModule'
},
{
path: 'demo_qjusr2mobeditview',
loadChildren: '@pages/demo/qjusr2-mob-edit-view/qjusr2-mob-edit-view.module#QJUsr2MobEditViewModule'
},
{
path: 'demo_xmmobeditview',
loadChildren: '@pages/demo/xmmob-edit-view/xmmob-edit-view.module#XMMobEditViewModule'
},
{
path: 'demo_apploginview',
loadChildren: '@pages/demo/app-login-view/app-login-view.module#AppLoginViewModule'
},
{
path: 'demo_dfmobeditview',
loadChildren: '@pages/demo/dfmob-edit-view/dfmob-edit-view.module#DFMobEditViewModule'
},
{
path: 'demo_zbmobcalendarview',
loadChildren: '@pages/demo/zbmob-calendar-view/zbmob-calendar-view.module#ZBMobCalendarViewModule'
},
{
path: 'demo_ycsqmobeditview',
loadChildren: '@pages/demo/ycsqmob-edit-view/ycsqmob-edit-view.module#YCSQMobEditViewModule'
},
{
path: 'demo_orgusermobeditview',
loadChildren: '@pages/demo/org-user-mob-edit-view/org-user-mob-edit-view.module#OrgUserMobEditViewModule'
},
{
path: 'demo_appportalview2',
loadChildren: '@pages/demo/app-portal-view2/app-portal-view2.module#AppPortalView2Module'
},
{
path: 'demo_appindexview2',
loadChildren: '@pages/demo/app-index-view2/app-index-view2.module#AppIndexView2Module'
},
{
path: 'demo_xmmobpickupmdview',
loadChildren: '@pages/demo/xmmob-pickup-mdview/xmmob-pickup-mdview.module#XMMobPickupMDViewModule'
},
{
path: 'demo_appdashboardview',
loadChildren: '@pages/demo/app-dashboard-view/app-dashboard-view.module#AppDashboardViewModule'
},
{
path: 'demo_qjqjsp_d_mobwfeditview',
loadChildren: '@pages/demo/qjqjsp-d-mob-wfedit-view/qjqjsp-d-mob-wfedit-view.module#QJQJSP_D_MobWFEditViewModule'
},
{
path: 'demo_htmobmdview',
loadChildren: '@pages/demo/htmob-mdview/htmob-mdview.module#HTMobMDViewModule'
},
{
path: 'demo_htmobeditview',
loadChildren: '@pages/demo/htmob-edit-view/htmob-edit-view.module#HTMobEditViewModule'
},
{
path: 'demo_qjqjsp_d_mobwfmdview',
loadChildren: '@pages/demo/qjqjsp-d-mob-wfmdview/qjqjsp-d-mob-wfmdview.module#QJQJSP_D_MobWFMDViewModule'
},
{
path: 'demo_kqmobmdview',
loadChildren: '@pages/demo/kqmob-mdview/kqmob-mdview.module#KQMobMDViewModule'
},
{
path: 'demo_xmmobmdview',
loadChildren: '@pages/demo/xmmob-mdview/xmmob-mdview.module#XMMobMDViewModule'
},
{
path: 'demo_bgypmobmdview',
loadChildren: '@pages/demo/bgypmob-mdview/bgypmob-mdview.module#BGYPMobMDViewModule'
},
{
path: 'demo_qjmobmdview',
loadChildren: '@pages/demo/qjmob-mdview/qjmob-mdview.module#QJMobMDViewModule'
},
{
path: 'demo_bgyptreeexpview',
loadChildren: '@pages/demo/bgyptree-exp-view/bgyptree-exp-view.module#BGYPTreeExpViewModule'
},
{
path: 'demo_appportalview4',
loadChildren: '@pages/demo/app-portal-view4/app-portal-view4.module#AppPortalView4Module'
},
{
path: '**',
redirectTo: '',
pathMatch: 'full'
}
];
@NgModule({
imports: [
RouterModule.forRoot(routes, { preloadingStrategy: PreloadAllModules })
],
exports: [RouterModule]
})
export class AppRoutingModule {}
export const AppEnvironment = {
// 原型示例数模式
SampleMode: false,
// 应用名称
AppName: 'Mob',
// 应用 title
AppTitle: 'Mob',
// 应用基础路径
BaseUrl: '../',
// 系统名称
SysName: 'ionicdemo',
// 远程登录地址
RemoteLogin: 'api/login',
// session登录地址
AppLogin: 'ibizutil/login',
// 文件导出
ExportFile: 'ibizutil/download',
// 文件上传
UploadFile: 'ibizutil/upload',
//登录模式(默认远程登录/session/uac)
LoginModel: 'session'
};
\ No newline at end of file
import { Injectable } from '@angular/core';
import { App } from './App';
@Injectable({ providedIn: 'root' })
export class AppInitService {
/**
* Creates an instance of AppInitService.
*/
constructor(private app: App) {
this.init();
}
/**
* 初始化
*
* @private
* @memberof AppInitService
*/
private init(): void {
this.app.regFunctionPage('start', '/demo_appstartview');
this.app.regFunctionPage('login', '/demo_apploginview');
}
}
\ No newline at end of file
import { IonicModule } from '@ionic/angular';
import { RouterModule } from '@angular/router';
import { NgModule,CUSTOM_ELEMENTS_SCHEMA } from '@angular/core';
import { CommonModule } from '@angular/common';
import { FormsModule } from '@angular/forms';
import { ShareModule } from '@share/share.module';
import { DashboardModule } from '@widget/app/app-dashboard-view-db-dashboard/app-dashboard-view-db-dashboard.module';
import {AppDashboardViewPage} from './app-dashboard-view.page';
@NgModule({
imports: [
RouterModule.forChild([{ path: '', component: AppDashboardViewPage}]),
],
exports:[RouterModule]
})
export class AppDashboardViewRouteModule {}
@NgModule({
imports: [
IonicModule,
CommonModule,
FormsModule,
ShareModule,
AppDashboardViewRouteModule,
DashboardModule,
],
schemas: [CUSTOM_ELEMENTS_SCHEMA],
declarations: [AppDashboardViewPage],
entryComponents:[AppDashboardViewPage],
exports:[AppDashboardViewPage]
})
export class AppDashboardViewModule {}
<ng-container *ngIf="!isembeddedView">
<ion-header class="app-view-header">
<ion-toolbar class="app-view-toolbar" color="primary">
<ion-buttons slot="start" class="app-toolbar-left-buttons">
<ion-button (click)="backView()">
<ion-icon name="arrow-back"></ion-icon>
返回
</ion-button>
</ion-buttons>
<ion-title class="app-view-title">我的申请</ion-title>
<ion-buttons slot="end" class="app-toolbar-right-buttons">
</ion-buttons>
</ion-toolbar>
</ion-header>
<ion-content class="app-view app-portal app-view-mobportalview app-dashboard-view" >
<div class="app-view-body">
<ctrl-dashboard-dashboard [isembeddedView]="isembeddedView" [isModalMode]="isModalMode" [name]="'dashboard'" [viewState]="viewState"></ctrl-dashboard-dashboard>
</div>
</ion-content>
</ng-container>
<ng-container *ngIf="isembeddedView">
<div class="app-view app-embedded-mobportalview app-dashboard-view">
<ng-container *ngIf="!isTabexp">
<div class="app-view-embedded">
<div>我的申请</div>
<div class="app-view-embedded-icon"><ion-icon name="more" (click)="click_more()"></ion-icon></div>
</div>
</ng-container>
<div class="app-view-body">
<ctrl-dashboard-dashboard [isembeddedView]="isembeddedView" [isModalMode]="isModalMode" [name]="'dashboard'" [viewState]="viewState"></ctrl-dashboard-dashboard>
</div>
</div>
</ng-container>
import { Component,ViewChild, AfterViewInit,Input } from '@angular/core';
import { Subject } from 'rxjs';
import { ActivatedRoute } from '@angular/router';
import { NavController,ModalController } from '@ionic/angular';
import { App } from '@global/service/App';
import { ComUtil } from '@global/util/ComUtil';
import { AppNotification } from '@global/service/Notification';
import { AppEnvironment } from 'src/environments/AppEnvironment';
import { Dashboard } from '@widget/app/app-dashboard-view-db-dashboard/app-dashboard-view-db-dashboard';
@Component({
selector: 'view-app-dashboard-view',
templateUrl: './app-dashboard-view.page.html',
styleUrls: ['./app-dashboard-view.page.scss']
})
export class AppDashboardViewPage implements AfterViewInit {
/**
* 子组件AppDashboardView
*
* @type {*}
* @memberof AppDashboardView
*/
@ViewChild(Dashboard)
private dashboard: Dashboard;
/**
* 视图状态订阅对象
*
* @type {*}
* @memberof AppDashboardView
*/
public viewState: Subject<ViewState> = new Subject();
/**
* 当前视图激活数据
*
* @public
* @type {void}
* @memberof AppDashboardView
*/
public $activeData:Array<any> =[];
/**
* 是否为模态框弹出
*
* @memberof AppDashboardView
*/
@Input() isModalMode:boolean =false;
/**
* 容器模型
*
* @type {*}
* @memberof AppDashboardView
*/
public containerModel: any = {
view_dashboard: { name: 'dashboard', type: 'DASHBOARD' },
};
/**
* 实例化对象
*
* @type {*}
* @memberof AppDashboardView
*/
constructor(private $navCtrl:NavController,public $modalCtrl:ModalController,public $app:App){
}
/**
* 返回
*
* @type {*}
* @memberof AppDashboardView
*/
public backView(){
let res:any;
if(this.isModalMode){
if(this.$activeData && this.$activeData.length >0){
res = { ret: 'OK', result:this.$activeData };
}else{
res = { ret: 'NO', result:[] };
}
this.$modalCtrl.dismiss(res, 'close');
}else{
this.$navCtrl.back();
if(this.$activeData && this.$activeData.length >0){
res = { ret: 'OK', result:this.$activeData };
}else{
res = { ret: 'NO', result:[] };
}
this.$app.closeCallback(res);
}
}
/**
* 引擎初始化
*
* @private
* @memberof AppDashboardView
*/
private engineInit(): void {
}
/**
* angular声明周期(组件初始化完毕)
*
* @memberof AppDashboardView
*/
public ngAfterViewInit() {
this.engineInit();
this.viewState.next({ tag: 'dashboard', action: 'load', data: {} });
}
}
\ No newline at end of file
import { IonicModule } from '@ionic/angular';
import { RouterModule,Routes } from '@angular/router';
import { NgModule } from '@angular/core';
import { CommonModule } from '@angular/common';
import { FormsModule } from '@angular/forms';
import { ShareModule } from '@share/share.module';
import { AuthGuard } from '@global/guard/auth-guard';
import {AppMenuModule} from '@widget/app/app-index-view-appmenu/app-index-view-appmenu.module';
import {AppIndexViewPage} from './app-index-view.page'
const routes: Routes = [
{
path: '',
redirectTo: 'demo_appindexview',
pathMatch: 'full'
},
{
path: 'demo_appindexview',
component: AppIndexViewPage,
canActivate: [AuthGuard],
data: { backendurl: '/Mob/Demo/AppIndexView.do', accessMode: 2 },
children: [
{
path: '',
redirectTo: 'appportalview',
pathMatch: 'full',
},
{
path: 'appportalview',
children: [
{
path: '',
loadChildren: '@pages/demo/app-portal-view/app-portal-view.module#AppPortalViewModule'
}
]
},
]
}
];
@NgModule({
imports: [
RouterModule.forChild(routes)
],
exports: [
RouterModule
]
})
export class AppIndexViewRouteModule {}
@NgModule({
imports: [
IonicModule,
CommonModule,
FormsModule,
ShareModule,
AppIndexViewRouteModule,
AppMenuModule,
],
declarations: [ AppIndexViewPage]
})
export class AppIndexViewModule {}
<div class="app-view app-view-mobindexview app-index-view">
<div class="app-view-body">
<ctrl-app-index-view-appmenu></ctrl-app-index-view-appmenu>
</div>
</div>
import { Component, OnInit, ViewChild, AfterViewInit } from '@angular/core';
import { Subject } from 'rxjs';
import { ComUtil } from '@global/util/ComUtil';
import { AppEnvironment } from 'src/environments/AppEnvironment';
import {AppMenu} from '@widget/app/app-index-view-appmenu/app-index-view-appmenu';
@Component({
selector: 'view-app-index-view',
templateUrl: './app-index-view.page.html',
styleUrls: ['./app-index-view.page.scss']
})
export class AppIndexViewPage implements OnInit,AfterViewInit {
/**
* 子组件AppMenu
*
* @type {*}
* @memberof AppIndexView
*/
@ViewChild(AppMenu)
private appmenu: AppMenu;
/**
* angular生命周期oninit事件
*
* @type {*}
* @memberof AppIndexView
*/
ngOnInit(){
}
/**
* angular生命周期AfterViewInit事件
*
* @type {*}
* @memberof AppIndexView
*/
ngAfterViewInit(){
}
}
\ No newline at end of file
import { IonicModule } from '@ionic/angular';
import { RouterModule,Routes } from '@angular/router';
import { NgModule } from '@angular/core';
import { CommonModule } from '@angular/common';
import { FormsModule } from '@angular/forms';
import { ShareModule } from '@share/share.module';
import { AuthGuard } from '@global/guard/auth-guard';
import {AppMenuModule} from '@widget/app/app-index-view2-appmenu/app-index-view2-appmenu.module';
import {AppIndexView2Page} from './app-index-view2.page'
const routes: Routes = [
{
path: '',
redirectTo: 'demo_appindexview2',
pathMatch: 'full'
},
{
path: 'demo_appindexview2',
component: AppIndexView2Page,
canActivate: [AuthGuard],
data: { backendurl: '/Mob/Demo/AppIndexView2.do', accessMode: 0 },
children: [
]
}
];
@NgModule({
imports: [
RouterModule.forChild(routes)
],
exports: [
RouterModule
]
})
export class AppIndexView2RouteModule {}
@NgModule({
imports: [
IonicModule,
CommonModule,
FormsModule,
ShareModule,
AppIndexView2RouteModule,
AppMenuModule,
],
declarations: [ AppIndexView2Page]
})
export class AppIndexView2Module {}
<div class="app-view app-view-mobindexview app-index-view2">
<div class="app-view-body">
<ctrl-app-index-view2-appmenu></ctrl-app-index-view2-appmenu>
</div>
</div>
import { Component, OnInit, ViewChild, AfterViewInit } from '@angular/core';
import { Subject } from 'rxjs';
import { ComUtil } from '@global/util/ComUtil';
import { AppEnvironment } from 'src/environments/AppEnvironment';
import {AppMenu} from '@widget/app/app-index-view2-appmenu/app-index-view2-appmenu';
@Component({
selector: 'view-app-index-view2',
templateUrl: './app-index-view2.page.html',
styleUrls: ['./app-index-view2.page.scss']
})
export class AppIndexView2Page implements OnInit,AfterViewInit {
/**
* 子组件AppMenu
*
* @type {*}
* @memberof AppIndexView2
*/
@ViewChild(AppMenu)
private appmenu: AppMenu;
/**
* angular生命周期oninit事件
*
* @type {*}
* @memberof AppIndexView2
*/
ngOnInit(){
}
/**
* angular生命周期AfterViewInit事件
*
* @type {*}
* @memberof AppIndexView2
*/
ngAfterViewInit(){
}
}
\ No newline at end of file
import { IonicModule } from '@ionic/angular';
import { RouterModule } from '@angular/router';
import { NgModule,CUSTOM_ELEMENTS_SCHEMA } from '@angular/core';
import { CommonModule } from '@angular/common';
import { FormsModule } from '@angular/forms';
import { ShareModule } from '@share/share.module';
import {AppLoginViewPage} from './app-login-view.page'
@NgModule({
imports: [
IonicModule,
CommonModule,
FormsModule,
ShareModule,
RouterModule.forChild([{ path: '', component: AppLoginViewPage}]),
],
schemas: [CUSTOM_ELEMENTS_SCHEMA],
declarations: [AppLoginViewPage]
})
export class AppLoginViewModule {}
<div class="app-view app-view-mobloginview app-login-view">
<ion-content class="app-view-body app-login-view" padding=false>
<img src="./assets/images/login.jpg" class="app-login-view-back" />
<div style="position: relative">
<div style="text-align: end;"><img src="./assets/images/logo.png"/></div>
<div padding class="app-login-view-title">
欢迎使用
</div>
<ion-grid padding>
<ion-row style="margin-top: 1rem;">
<ion-input type="text" placeholder="请输入用户名/手机号" [(ngModel)]="username" [clearInput]="true" class="app-login-view-input"></ion-input>
</ion-row>
<ion-row style="margin-top: 1.5rem;">
<ion-input type="password" inputmode="password" placeholder="请输入密码" [(ngModel)]="password"
[clearInput]="true" class="app-login-view-input"></ion-input>
</ion-row>
</ion-grid>
<div padding style="margin-top: 1rem;">
<ion-button [disabled]="(username.length === 0 || password.length === 0) ? true : false" class="login-button"
color="medium" expand="block" (click)="login()">登录</ion-button>
</div>
<div padding style="padding-top: 0px">
<ion-text color="light" (click)="registerAccount()">注册账号</ion-text>
<ion-text style="float: right;color: #666;" (click)="modifyPassword()">忘记密码?</ion-text>
</div>
</div>
</ion-content>
<div>
//样式文件
// this is scss
.app-login-view{
.app-login-view-back{
height: 100%;
width: 100%;
position: fixed;
top: 0;
left: 0;
right: 0;
bottom: 0;
}
.app-login-view-title{
color: aliceblue;
}
.app-login-view-input{
background-color: aliceblue;
padding-left: 10px !important;
}
}
\ No newline at end of file
import { Component, OnInit } from '@angular/core';
import { NavController } from '@ionic/angular';
import { AppNotification } from '@global/service/Notification';
import { Http } from '@global/service/Http';
import { AppEnvironment } from 'src/environments/AppEnvironment';
@Component({
selector: 'view-app-login-view',
templateUrl: './app-login-view.page.html',
styleUrls: ['./app-login-view.page.scss']
})
export class AppLoginViewPage implements OnInit {
/**
* 用户名
*
* @memberof AppLoginView
*/
public username: string = '';
/**
* 密码
*
* @memberof AppLoginView
*/
public password: string = '';
/**
* 实例化对象
*
* @memberof AppLoginView
*/
constructor(private $http: Http, private $notification: AppNotification,private $navCtrl:NavController) { }
/**
* angular生命周期
*
* @memberof AppLoginView
*/
ngOnInit() { }
/**
* 登录
*
* @memberof AppLoginView
*/
public async login(): Promise<any> {
let loginUrl;
if(Object.is(AppEnvironment.LoginModel,'default')){
loginUrl = AppEnvironment.RemoteLogin;
}else{
loginUrl = AppEnvironment.AppLogin;
}
this.$http.post(loginUrl, { loginname: this.username, password: this.password }).then((response:any) =>{
if (response) {
if(window.localStorage.getItem('srfloginkey')){
window.localStorage.removeItem('srfloginkey');
}
if(window.localStorage.getItem('userInfo')){
window.localStorage.removeItem('userInfo');
}
//默认登陆方式
if(Object.is(AppEnvironment.LoginModel,'default')){
//远程登录
window.localStorage.setItem('srfloginkey', response.loginkey);
}else{
//session登录方式
window.localStorage.setItem('srfloginkey', response.token);
}
window.localStorage.setItem('userInfo', JSON.stringify(response.user));
if(window.location.hash.indexOf('url=') !== -1){
let urlIndex= window.location.hash.indexOf('url=') + 4;
this.$navCtrl.navigateRoot(''+decodeURIComponent(window.location.hash.substring(urlIndex)));
}else{
this.$navCtrl.navigateRoot('');
}
} else {
this.$notification.error("登录失败");
}
}).catch((error:any) =>{
this.$notification.error("登录失败");
});
}
/**
* 注册用户
*
* @memberof AppLoginView
*/
public registerAccount(): void { }
/**
* 忘记密码
*
* @memberof AppLoginView
*/
public modifyPassword(): void { }
}
\ No newline at end of file
import { IonicModule } from '@ionic/angular';
import { RouterModule } from '@angular/router';
import { NgModule,CUSTOM_ELEMENTS_SCHEMA } from '@angular/core';
import { CommonModule } from '@angular/common';
import { FormsModule } from '@angular/forms';
import { ShareModule } from '@share/share.module';
import { TitlebarModule } from '@widget/app/titlebar-titlebar/titlebar-titlebar.module';
import { DashboardModule } from '@widget/app/app-portal-view-db-dashboard/app-portal-view-db-dashboard.module';
import {AppPortalViewPage} from './app-portal-view.page';
@NgModule({
imports: [
RouterModule.forChild([{ path: '', component: AppPortalViewPage}]),
],
exports:[RouterModule]
})
export class AppPortalViewRouteModule {}
@NgModule({
imports: [
IonicModule,
CommonModule,
FormsModule,
ShareModule,
AppPortalViewRouteModule,
TitlebarModule,DashboardModule,
],
schemas: [CUSTOM_ELEMENTS_SCHEMA],
declarations: [AppPortalViewPage],
entryComponents:[AppPortalViewPage],
exports:[AppPortalViewPage]
})
export class AppPortalViewModule {}
<ng-container *ngIf="!isembeddedView">
<ctrl-titlebar-titlebar [name]="'titlebar'" [viewState]="viewState"></ctrl-titlebar-titlebar>
<ion-content class="app-view app-portal app-view-mobportalview app-portal-view" >
<div class="app-view-body">
<ctrl-dashboard-dashboard [isembeddedView]="isembeddedView" [isModalMode]="isModalMode" [name]="'dashboard'" [viewState]="viewState"></ctrl-dashboard-dashboard>
</div>
</ion-content>
</ng-container>
<ng-container *ngIf="isembeddedView">
<div class="app-view app-embedded-mobportalview app-portal-view">
<ng-container *ngIf="!isTabexp">
<div class="app-view-embedded">
<div>个人中心</div>
<div class="app-view-embedded-icon"><ion-icon name="more" (click)="click_more()"></ion-icon></div>
</div>
</ng-container>
<div class="app-view-body">
<ctrl-dashboard-dashboard [isembeddedView]="isembeddedView" [isModalMode]="isModalMode" [name]="'dashboard'" [viewState]="viewState"></ctrl-dashboard-dashboard>
</div>
</div>
</ng-container>
import { Component,ViewChild, AfterViewInit,Input } from '@angular/core';
import { Subject } from 'rxjs';
import { ActivatedRoute } from '@angular/router';
import { NavController,ModalController } from '@ionic/angular';
import { App } from '@global/service/App';
import { ComUtil } from '@global/util/ComUtil';
import { AppNotification } from '@global/service/Notification';
import { AppEnvironment } from 'src/environments/AppEnvironment';
import { Titlebar } from '@widget/app/titlebar-titlebar/titlebar-titlebar';
import { Dashboard } from '@widget/app/app-portal-view-db-dashboard/app-portal-view-db-dashboard';
@Component({
selector: 'view-app-portal-view',
templateUrl: './app-portal-view.page.html',
styleUrls: ['./app-portal-view.page.scss']
})
export class AppPortalViewPage implements AfterViewInit {
/**
* 子组件AppPortalView
*
* @type {*}
* @memberof AppPortalView
*/
@ViewChild(Titlebar)
private titlebar: Titlebar;
/**
* 子组件AppPortalView
*
* @type {*}
* @memberof AppPortalView
*/
@ViewChild(Dashboard)
private dashboard: Dashboard;
/**
* 视图状态订阅对象
*
* @type {*}
* @memberof AppPortalView
*/
public viewState: Subject<ViewState> = new Subject();
/**
* 当前视图激活数据
*
* @public
* @type {void}
* @memberof AppPortalView
*/
public $activeData:Array<any> =[];
/**
* 是否为模态框弹出
*
* @memberof AppPortalView
*/
@Input() isModalMode:boolean =false;
/**
* 容器模型
*
* @type {*}
* @memberof AppPortalView
*/
public containerModel: any = {
view_titlebar: { name: 'titlebar', type: 'TITLEBAR' },
view_dashboard: { name: 'dashboard', type: 'DASHBOARD' },
};
/**
* 实例化对象
*
* @type {*}
* @memberof AppPortalView
*/
constructor(private $navCtrl:NavController,public $modalCtrl:ModalController,public $app:App){
}
/**
* 返回
*
* @type {*}
* @memberof AppPortalView
*/
public backView(){
let res:any;
if(this.isModalMode){
if(this.$activeData && this.$activeData.length >0){
res = { ret: 'OK', result:this.$activeData };
}else{
res = { ret: 'NO', result:[] };
}
this.$modalCtrl.dismiss(res, 'close');
}else{
this.$navCtrl.back();
if(this.$activeData && this.$activeData.length >0){
res = { ret: 'OK', result:this.$activeData };
}else{
res = { ret: 'NO', result:[] };
}
this.$app.closeCallback(res);
}
}
/**
* 引擎初始化
*
* @private
* @memberof AppPortalView
*/
private engineInit(): void {
}
/**
* angular声明周期(组件初始化完毕)
*
* @memberof AppPortalView
*/
public ngAfterViewInit() {
this.engineInit();
this.viewState.next({ tag: 'titlebar', action: 'load', data: {} });
this.viewState.next({ tag: 'dashboard', action: 'load', data: {} });
}
}
\ No newline at end of file
import { IonicModule } from '@ionic/angular';
import { RouterModule } from '@angular/router';
import { NgModule,CUSTOM_ELEMENTS_SCHEMA } from '@angular/core';
import { CommonModule } from '@angular/common';
import { FormsModule } from '@angular/forms';
import { ShareModule } from '@share/share.module';
import { DashboardModule } from '@widget/app/app-portal-view2-db-dashboard/app-portal-view2-db-dashboard.module';
import {AppPortalView2Page} from './app-portal-view2.page';
@NgModule({
imports: [
RouterModule.forChild([{ path: '', component: AppPortalView2Page}]),
],
exports:[RouterModule]
})
export class AppPortalView2RouteModule {}
@NgModule({
imports: [
IonicModule,
CommonModule,
FormsModule,
ShareModule,
AppPortalView2RouteModule,
DashboardModule,
],
schemas: [CUSTOM_ELEMENTS_SCHEMA],
declarations: [AppPortalView2Page],
entryComponents:[AppPortalView2Page],
exports:[AppPortalView2Page]
})
export class AppPortalView2Module {}
<ng-container *ngIf="!isembeddedView">
<ion-header class="app-view-header">
<ion-toolbar class="app-view-toolbar" color="primary">
<ion-buttons slot="start" class="app-toolbar-left-buttons">
<ion-button (click)="backView()">
<ion-icon name="arrow-back"></ion-icon>
返回
</ion-button>
</ion-buttons>
<ion-title class="app-view-title">工作申请</ion-title>
<ion-buttons slot="end" class="app-toolbar-right-buttons">
</ion-buttons>
</ion-toolbar>
</ion-header>
<ion-content class="app-view app-portal app-view-mobportalview app-portal-view2" >
<div class="app-view-body">
<ctrl-dashboard-dashboard [isembeddedView]="isembeddedView" [isModalMode]="isModalMode" [name]="'dashboard'" [viewState]="viewState"></ctrl-dashboard-dashboard>
</div>
</ion-content>
</ng-container>
<ng-container *ngIf="isembeddedView">
<div class="app-view app-embedded-mobportalview app-portal-view2">
<ng-container *ngIf="!isTabexp">
<div class="app-view-embedded">
<div>工作申请</div>
<div class="app-view-embedded-icon"><ion-icon name="more" (click)="click_more()"></ion-icon></div>
</div>
</ng-container>
<div class="app-view-body">
<ctrl-dashboard-dashboard [isembeddedView]="isembeddedView" [isModalMode]="isModalMode" [name]="'dashboard'" [viewState]="viewState"></ctrl-dashboard-dashboard>
</div>
</div>
</ng-container>
import { Component,ViewChild, AfterViewInit,Input } from '@angular/core';
import { Subject } from 'rxjs';
import { ActivatedRoute } from '@angular/router';
import { NavController,ModalController } from '@ionic/angular';
import { App } from '@global/service/App';
import { ComUtil } from '@global/util/ComUtil';
import { AppNotification } from '@global/service/Notification';
import { AppEnvironment } from 'src/environments/AppEnvironment';
import { Dashboard } from '@widget/app/app-portal-view2-db-dashboard/app-portal-view2-db-dashboard';
@Component({
selector: 'view-app-portal-view2',
templateUrl: './app-portal-view2.page.html',
styleUrls: ['./app-portal-view2.page.scss']
})
export class AppPortalView2Page implements AfterViewInit {
/**
* 子组件AppPortalView2
*
* @type {*}
* @memberof AppPortalView2
*/
@ViewChild(Dashboard)
private dashboard: Dashboard;
/**
* 视图状态订阅对象
*
* @type {*}
* @memberof AppPortalView2
*/
public viewState: Subject<ViewState> = new Subject();
/**
* 当前视图激活数据
*
* @public
* @type {void}
* @memberof AppPortalView2
*/
public $activeData:Array<any> =[];
/**
* 是否为模态框弹出
*
* @memberof AppPortalView2
*/
@Input() isModalMode:boolean =false;
/**
* 容器模型
*
* @type {*}
* @memberof AppPortalView2
*/
public containerModel: any = {
view_dashboard: { name: 'dashboard', type: 'DASHBOARD' },
};
/**
* 实例化对象
*
* @type {*}
* @memberof AppPortalView2
*/
constructor(private $navCtrl:NavController,public $modalCtrl:ModalController,public $app:App){
}
/**
* 返回
*
* @type {*}
* @memberof AppPortalView2
*/
public backView(){
let res:any;
if(this.isModalMode){
if(this.$activeData && this.$activeData.length >0){
res = { ret: 'OK', result:this.$activeData };
}else{
res = { ret: 'NO', result:[] };
}
this.$modalCtrl.dismiss(res, 'close');
}else{
this.$navCtrl.back();
if(this.$activeData && this.$activeData.length >0){
res = { ret: 'OK', result:this.$activeData };
}else{
res = { ret: 'NO', result:[] };
}
this.$app.closeCallback(res);
}
}
/**
* 引擎初始化
*
* @private
* @memberof AppPortalView2
*/
private engineInit(): void {
}
/**
* angular声明周期(组件初始化完毕)
*
* @memberof AppPortalView2
*/
public ngAfterViewInit() {
this.engineInit();
this.viewState.next({ tag: 'dashboard', action: 'load', data: {} });
}
}
\ No newline at end of file
import { IonicModule } from '@ionic/angular';
import { RouterModule } from '@angular/router';
import { NgModule,CUSTOM_ELEMENTS_SCHEMA } from '@angular/core';
import { CommonModule } from '@angular/common';
import { FormsModule } from '@angular/forms';
import { ShareModule } from '@share/share.module';
import { DashboardModule } from '@widget/app/app-portal-view3-db-dashboard/app-portal-view3-db-dashboard.module';
import {AppPortalView3Page} from './app-portal-view3.page';
@NgModule({
imports: [
RouterModule.forChild([{ path: '', component: AppPortalView3Page}]),
],
exports:[RouterModule]
})
export class AppPortalView3RouteModule {}
@NgModule({
imports: [
IonicModule,
CommonModule,
FormsModule,
ShareModule,
AppPortalView3RouteModule,
DashboardModule,
],
schemas: [CUSTOM_ELEMENTS_SCHEMA],
declarations: [AppPortalView3Page],
entryComponents:[AppPortalView3Page],
exports:[AppPortalView3Page]
})
export class AppPortalView3Module {}
<ng-container *ngIf="!isembeddedView">
<ion-header class="app-view-header">
<ion-toolbar class="app-view-toolbar" color="primary">
<ion-buttons slot="start" class="app-toolbar-left-buttons">
<ion-button (click)="backView()">
<ion-icon name="arrow-back"></ion-icon>
返回
</ion-button>
</ion-buttons>
<ion-title class="app-view-title">请假申请</ion-title>
<ion-buttons slot="end" class="app-toolbar-right-buttons">
</ion-buttons>
</ion-toolbar>
</ion-header>
<ion-content class="app-view app-portal app-view-mobportalview app-portal-view3" >
<div class="app-view-body">
<ctrl-dashboard-dashboard [isembeddedView]="isembeddedView" [isModalMode]="isModalMode" [name]="'dashboard'" [viewState]="viewState"></ctrl-dashboard-dashboard>
</div>
</ion-content>
</ng-container>
<ng-container *ngIf="isembeddedView">
<div class="app-view app-embedded-mobportalview app-portal-view3">
<ng-container *ngIf="!isTabexp">
<div class="app-view-embedded">
<div>请假申请</div>
<div class="app-view-embedded-icon"><ion-icon name="more" (click)="click_more()"></ion-icon></div>
</div>
</ng-container>
<div class="app-view-body">
<ctrl-dashboard-dashboard [isembeddedView]="isembeddedView" [isModalMode]="isModalMode" [name]="'dashboard'" [viewState]="viewState"></ctrl-dashboard-dashboard>
</div>
</div>
</ng-container>
import { Component,ViewChild, AfterViewInit,Input } from '@angular/core';
import { Subject } from 'rxjs';
import { ActivatedRoute } from '@angular/router';
import { NavController,ModalController } from '@ionic/angular';
import { App } from '@global/service/App';
import { ComUtil } from '@global/util/ComUtil';
import { AppNotification } from '@global/service/Notification';
import { AppEnvironment } from 'src/environments/AppEnvironment';
import { Dashboard } from '@widget/app/app-portal-view3-db-dashboard/app-portal-view3-db-dashboard';
@Component({
selector: 'view-app-portal-view3',
templateUrl: './app-portal-view3.page.html',
styleUrls: ['./app-portal-view3.page.scss']
})
export class AppPortalView3Page implements AfterViewInit {
/**
* 子组件AppPortalView3
*
* @type {*}
* @memberof AppPortalView3
*/
@ViewChild(Dashboard)
private dashboard: Dashboard;
/**
* 视图状态订阅对象
*
* @type {*}
* @memberof AppPortalView3
*/
public viewState: Subject<ViewState> = new Subject();
/**
* 当前视图激活数据
*
* @public
* @type {void}
* @memberof AppPortalView3
*/
public $activeData:Array<any> =[];
/**
* 是否为模态框弹出
*
* @memberof AppPortalView3
*/
@Input() isModalMode:boolean =false;
/**
* 容器模型
*
* @type {*}
* @memberof AppPortalView3
*/
public containerModel: any = {
view_dashboard: { name: 'dashboard', type: 'DASHBOARD' },
};
/**
* 实例化对象
*
* @type {*}
* @memberof AppPortalView3
*/
constructor(private $navCtrl:NavController,public $modalCtrl:ModalController,public $app:App){
}
/**
* 返回
*
* @type {*}
* @memberof AppPortalView3
*/
public backView(){
let res:any;
if(this.isModalMode){
if(this.$activeData && this.$activeData.length >0){
res = { ret: 'OK', result:this.$activeData };
}else{
res = { ret: 'NO', result:[] };
}
this.$modalCtrl.dismiss(res, 'close');
}else{
this.$navCtrl.back();
if(this.$activeData && this.$activeData.length >0){
res = { ret: 'OK', result:this.$activeData };
}else{
res = { ret: 'NO', result:[] };
}
this.$app.closeCallback(res);
}
}
/**
* 引擎初始化
*
* @private
* @memberof AppPortalView3
*/
private engineInit(): void {
}
/**
* angular声明周期(组件初始化完毕)
*
* @memberof AppPortalView3
*/
public ngAfterViewInit() {
this.engineInit();
this.viewState.next({ tag: 'dashboard', action: 'load', data: {} });
}
}
\ No newline at end of file
import { IonicModule } from '@ionic/angular';
import { RouterModule } from '@angular/router';
import { NgModule,CUSTOM_ELEMENTS_SCHEMA } from '@angular/core';
import { CommonModule } from '@angular/common';
import { FormsModule } from '@angular/forms';
import { ShareModule } from '@share/share.module';
import { DashboardModule } from '@widget/app/app-portal-view4-db-dashboard/app-portal-view4-db-dashboard.module';
import {AppPortalView4Page} from './app-portal-view4.page';
@NgModule({
imports: [
RouterModule.forChild([{ path: '', component: AppPortalView4Page}]),
],
exports:[RouterModule]
})
export class AppPortalView4RouteModule {}
@NgModule({
imports: [
IonicModule,
CommonModule,
FormsModule,
ShareModule,
AppPortalView4RouteModule,
DashboardModule,
],
schemas: [CUSTOM_ELEMENTS_SCHEMA],
declarations: [AppPortalView4Page],
entryComponents:[AppPortalView4Page],
exports:[AppPortalView4Page]
})
export class AppPortalView4Module {}
<ng-container *ngIf="!isembeddedView">
<ion-header class="app-view-header">
<ion-toolbar class="app-view-toolbar" color="primary">
<ion-buttons slot="start" class="app-toolbar-left-buttons">
<ion-button (click)="backView()">
<ion-icon name="arrow-back"></ion-icon>
返回
</ion-button>
</ion-buttons>
<ion-title class="app-view-title">车辆申请</ion-title>
<ion-buttons slot="end" class="app-toolbar-right-buttons">
</ion-buttons>
</ion-toolbar>
</ion-header>
<ion-content class="app-view app-portal app-view-mobportalview app-portal-view4" >
<div class="app-view-body">
<ctrl-dashboard-dashboard [isembeddedView]="isembeddedView" [isModalMode]="isModalMode" [name]="'dashboard'" [viewState]="viewState"></ctrl-dashboard-dashboard>
</div>
</ion-content>
</ng-container>
<ng-container *ngIf="isembeddedView">
<div class="app-view app-embedded-mobportalview app-portal-view4">
<ng-container *ngIf="!isTabexp">
<div class="app-view-embedded">
<div>车辆申请</div>
<div class="app-view-embedded-icon"><ion-icon name="more" (click)="click_more()"></ion-icon></div>
</div>
</ng-container>
<div class="app-view-body">
<ctrl-dashboard-dashboard [isembeddedView]="isembeddedView" [isModalMode]="isModalMode" [name]="'dashboard'" [viewState]="viewState"></ctrl-dashboard-dashboard>
</div>
</div>
</ng-container>
import { Component,ViewChild, AfterViewInit,Input } from '@angular/core';
import { Subject } from 'rxjs';
import { ActivatedRoute } from '@angular/router';
import { NavController,ModalController } from '@ionic/angular';
import { App } from '@global/service/App';
import { ComUtil } from '@global/util/ComUtil';
import { AppNotification } from '@global/service/Notification';
import { AppEnvironment } from 'src/environments/AppEnvironment';
import { Dashboard } from '@widget/app/app-portal-view4-db-dashboard/app-portal-view4-db-dashboard';
@Component({
selector: 'view-app-portal-view4',
templateUrl: './app-portal-view4.page.html',
styleUrls: ['./app-portal-view4.page.scss']
})
export class AppPortalView4Page implements AfterViewInit {
/**
* 子组件AppPortalView4
*
* @type {*}
* @memberof AppPortalView4
*/
@ViewChild(Dashboard)
private dashboard: Dashboard;
/**
* 视图状态订阅对象
*
* @type {*}
* @memberof AppPortalView4
*/
public viewState: Subject<ViewState> = new Subject();
/**
* 当前视图激活数据
*
* @public
* @type {void}
* @memberof AppPortalView4
*/
public $activeData:Array<any> =[];
/**
* 是否为模态框弹出
*
* @memberof AppPortalView4
*/
@Input() isModalMode:boolean =false;
/**
* 容器模型
*
* @type {*}
* @memberof AppPortalView4
*/
public containerModel: any = {
view_dashboard: { name: 'dashboard', type: 'DASHBOARD' },
};
/**
* 实例化对象
*
* @type {*}
* @memberof AppPortalView4
*/
constructor(private $navCtrl:NavController,public $modalCtrl:ModalController,public $app:App){
}
/**
* 返回
*
* @type {*}
* @memberof AppPortalView4
*/
public backView(){
let res:any;
if(this.isModalMode){
if(this.$activeData && this.$activeData.length >0){
res = { ret: 'OK', result:this.$activeData };
}else{
res = { ret: 'NO', result:[] };
}
this.$modalCtrl.dismiss(res, 'close');
}else{
this.$navCtrl.back();
if(this.$activeData && this.$activeData.length >0){
res = { ret: 'OK', result:this.$activeData };
}else{
res = { ret: 'NO', result:[] };
}
this.$app.closeCallback(res);
}
}
/**
* 引擎初始化
*
* @private
* @memberof AppPortalView4
*/
private engineInit(): void {
}
/**
* angular声明周期(组件初始化完毕)
*
* @memberof AppPortalView4
*/
public ngAfterViewInit() {
this.engineInit();
this.viewState.next({ tag: 'dashboard', action: 'load', data: {} });
}
}
\ No newline at end of file
import { IonicModule } from '@ionic/angular';
import { RouterModule } from '@angular/router';
import { NgModule,CUSTOM_ELEMENTS_SCHEMA } from '@angular/core';
import { CommonModule } from '@angular/common';
import { FormsModule } from '@angular/forms';
import { ShareModule } from '@share/share.module';
import {AppStartViewPage} from './app-start-view.page'
@NgModule({
imports: [
IonicModule,
CommonModule,
FormsModule,
ShareModule,
RouterModule.forChild([{ path: '', component: AppStartViewPage}]),
],
schemas: [CUSTOM_ELEMENTS_SCHEMA],
declarations: [AppStartViewPage]
})
export class AppStartViewModule {}
<div class="app-view app-view-mobstartview app-start-view">
<ion-content class="ibiz-view-content ibiz-star-view">
<ng-container *ngIf="isLogin; else startContent;">
<div class="ibiz-star-view-item">
<img src="./assets/images/start_default.jpeg">
</div>
<button type="button" class="navigation-button" (tap)="viewJump()">
跳过({{ count }})
</button>
</ng-container>
<ng-template #startContent>
<ion-slides #startSlides pager="true" [options]="slideOptions" style="height: 100%;">
<ion-slide>
<div class="ibiz-star-view-item">
<img src="./assets/images/start_one.jpeg">
</div>
</ion-slide>
<ion-slide>
<div class="ibiz-star-view-item">
<img src="./assets/images/start_two.jpeg">
</div>
</ion-slide>
<ion-slide>
<div class="ibiz-star-view-item">
<img src="./assets/images/start_three.jpeg">
</div>
<div class="ibiz-star-view-buttons">
<div class="ibiz-star-view-button">
<ion-button color="light" expand="full" shape="round" (click)="login()">登录</ion-button>
</div>
<div class="ibiz-star-view-button">
<ion-button color="primary" expand="full" shape="round">注册</ion-button>
</div>
</div>
</ion-slide>
</ion-slides>
</ng-template>
</ion-content>
</div>
//样式文件
// this is scss
// 启动视图
.ibiz-star-view {
overflow: hidden;
.ibiz-star-view-item {
height: 100%;
width: 100%;
img {
height: 100%;
width: 100%;
}
}
.navigation-button {
position: absolute;
top: 30pt;
right: 30pt;
background-color: rgba(140, 140, 140, 0.6);
color: white;
padding: 6px 14px;
}
.ibiz-star-view-buttons {
position: absolute;
bottom: 88px;
z-index: 1;
width: 100%;
display: flex;
div {
flex-grow: 1;
}
}
}
import { Component, OnInit } from '@angular/core';
import { NavController } from '@ionic/angular';
import { AppNotification } from '@global/service/Notification';
import { Http } from '@global/service/Http';
import { App } from '@global/service/App';
@Component({
selector: 'view-app-start-view',
templateUrl: './app-start-view.page.html',
styleUrls: ['./app-start-view.page.scss']
})
export class AppStartViewPage implements OnInit {
/**
* 计数器
*
* @memberof AppStartView
*/
public count:number =5;
/**
* 定时器指向
*
* @memberof AppStartView
*/
public timer:any;
/**
* 实例化对象
*
* @memberof AppStartView
*/
constructor(private $http: Http, private $notification: AppNotification,private $navCtrl:NavController,private $app:App) { }
/**
* angular生命周期
*
* @memberof AppStartView
*/
ngOnInit() {
this.timer=setInterval(() => {
this.count --;
}, 1000);
}
ngOnDestroy(): void {
clearTimeout(this.timer);
}
/**
* 登录
*
* @memberof AppStartView
*/
public login(){
this.$navCtrl.navigateRoot([this.$app.getLoginPage()]);
}
/**
* 跳过
*
* @memberof AppStartView
*/
public viewJump(){
this.$navCtrl.navigateRoot(this.$app.getDefaultPage());
clearInterval(this.timer);
}
}
\ No newline at end of file
import { IonicModule } from '@ionic/angular';
import { RouterModule } from '@angular/router';
import { NgModule,CUSTOM_ELEMENTS_SCHEMA } from '@angular/core';
import { CommonModule } from '@angular/common';
import { FormsModule } from '@angular/forms';
import { ShareModule } from '@share/share.module';
import { MdctrlModule } from '@widget/bgyp/mob-mobmdctrl/mob-mobmdctrl.module';
import { RighttoolbarModule } from '@widget/bgyp/mob-mdviewrighttoolbar-toolbar/mob-mdviewrighttoolbar-toolbar.module';
import {BGYPMobMDViewPage} from './bgypmob-mdview.page';
@NgModule({
imports: [
RouterModule.forChild([{ path: '', component: BGYPMobMDViewPage}])
],
exports:[RouterModule]
})
export class BGYPMobMDViewRouteModule {}
@NgModule({
imports: [
IonicModule,
CommonModule,
FormsModule,
ShareModule,
BGYPMobMDViewRouteModule,
MdctrlModule,RighttoolbarModule,
],
schemas: [CUSTOM_ELEMENTS_SCHEMA],
declarations: [BGYPMobMDViewPage],
entryComponents:[BGYPMobMDViewPage],
exports:[BGYPMobMDViewPage]
})
export class BGYPMobMDViewModule {}
<ng-container *ngIf="!isembeddedView">
<ion-header class="app-view-header">
<ion-toolbar class="app-view-toolbar" color="primary">
<ion-buttons slot="start">
<ion-button (click)="backView()" >
<ion-icon name="arrow-back"></ion-icon>
返回
</ion-button>
</ion-buttons>
<ion-searchbar (ionChange)="onQuickSearchValueChange($event)" showCancelButton cancelButtonText="取消" debounce="500" animated placeholder="搜索" mode="ios" clearIcon="close-circle"></ion-searchbar>
<ion-buttons slot="end" >
<div class="app-mob-toolbar ">
<div >
<ion-button class="app-view-toolbar-button" (click)="righttoolbar_click({ tag: 'tbitem1' }, $event)">
<ion-icon name="fa fa-file-text-o" ></ion-icon>
新建
</ion-button>
</div>
</div>
</ion-buttons>
</ion-toolbar>
</ion-header>
<ion-content class="app-view app-view-mobmdview bgypmob-mdview">
<div class="app-view-body">
<ctrl-mob-mobmdctrl [viewState]="viewState" [isembeddedView]="isembeddedView" [isModalMode]="isModalMode" [updateAction]="'update'" [removeAction]="'remove'" [loadAction]="'get'" [createAction]="'create'" [searchAction]="'searchdefault'" [name]="'mdctrl'" (loademit)="mdctrl_load($event)" (clickemit)="mdctrl_click($event)" ></ctrl-mob-mobmdctrl>
</div>
</ion-content>
</ng-container>
<ng-container *ngIf="isembeddedView">
<div class="app-view app-embedded-mobmdview bgypmob-mdview">
<ng-container *ngIf="!isTabexp">
<div class="app-view-embedded">
<div>办公用品</div>
<div class="app-view-embedded-icon"><ion-icon name="more" (click)="click_more()"></ion-icon></div>
</div>
</ng-container>
<div class="app-view-body">
<ctrl-mob-mobmdctrl [viewState]="viewState" [isembeddedView]="isembeddedView" [isModalMode]="isModalMode" [searchAction]="'searchdefault'" [name]="'mdctrl'" (loademit)="mdctrl_load($event)" (clickemit)="mdctrl_click($event)" ></ctrl-mob-mobmdctrl>
</div>
</div>
</ng-container>
import { Component, OnInit,AfterViewInit,Output,Input,EventEmitter,ViewChild,ElementRef } from '@angular/core';
import { Subject,Unsubscribable } from 'rxjs';
import { ActivatedRoute } from '@angular/router';
import { NavController,ModalController } from '@ionic/angular';
import { AppNotification } from '@global/service/Notification';
import { App } from '@global/service/App';
import { Http } from '@global/service/Http';
import { ComUtil } from '@global/util/ComUtil';
import { AppEnvironment } from 'src/environments/AppEnvironment';
import MobMDViewEngine from 'src/engine/view/mob-mdview-engine';
import { Mdctrl } from '@widget/bgyp/mob-mobmdctrl/mob-mobmdctrl';
import { Righttoolbar } from '@widget/bgyp/mob-mdviewrighttoolbar-toolbar/mob-mdviewrighttoolbar-toolbar';
@Component({
selector: 'view-bgypmob-mdview',
templateUrl: './bgypmob-mdview.page.html',
styleUrls: ['./bgypmob-mdview.page.scss']
})
export class BGYPMobMDViewPage implements OnInit,AfterViewInit {
/**
* 子组件Mdctrl
*
* @public
* @type {Subject}
* @memberof BGYPMobMDView
*/
@ViewChild(Mdctrl)
private mdctrl: Mdctrl;
/**
* 子组件Righttoolbar
*
* @public
* @type {Subject}
* @memberof BGYPMobMDView
*/
@ViewChild(Righttoolbar)
private righttoolbar: Righttoolbar;
/**
* 视图订阅对象
*
* @public
* @type {Subject}
* @memberof BGYPMobMDView
*/
public viewState: Subject<ViewState> = new Subject();
/**
* 路由传递参数
*
* @public
* @type {void}
* @memberof BGYPMobMDView
*/
public $route ={};
/**
* 当前视图激活数据
*
* @public
* @type {void}
* @memberof BGYPMobMDView
*/
public $activeData:Array<any> =[];
/**
* 是否为模态框弹出
*
* @memberof BGYPMobMDView
*/
@Input() isModalMode:boolean =false;
/**
* 是否嵌入分页导航视图
*
* @memberof TestEntity2MobPickupView
*/
@Input() isTabexp:boolean =false;
/**
* 视图值变化事件
*
* @public
* @type {EventEmitter}
* @memberof BGYPMobMDView
*/
@Output() public viewdataschange =new EventEmitter();
/**
* 视图参数
*
* @public
* @type {Subject}
* @memberof BGYPMobMDView
*/
@Input() public viewdata:any;
/**
* 父数据对象
*
* @protected
* @type {*}
* @memberof BGYPMobMDView
*/
protected srfparentdata: any = {};
/**
* 是否为内敛视图
*
* @public
* @type {EventEmitter}
* @memberof BGYPMobMDView
*/
@Input() public isembeddedView:boolean =false;
/**
* 视图值加载完成事件
*
* @public
* @type {EventEmitter}
* @memberof BGYPMobMDView
*/
@Output() public viewload =new EventEmitter();
/**
* 视图的关联试图Map
*
* @public
* @type {Map}
* @memberof BGYPMobMDView
*/
public RefViewMap =new Map();
/**
* 视图引擎
*
* @private
* @type {Engine}
* @memberof BGYPMobMDView
*/
private engine: MobMDViewEngine = new MobMDViewEngine();
/**
* 引擎初始化
*
* @private
* @memberof BGYPMobMDView
*/
private engineInit(): void {
this.engine.init({
view: this,
opendata: (params: any) => {
this.opendata(params);
},
mdctrl: this.mdctrl,
newdata: (params: any) => {
this.newdata(params);
},
});
}
/**
* angular生命周期(在ngOnInit之后)
*
* @memberof BGYPMobMDView
*/
public ngAfterViewInit(){
this.engineInit();
this.registerRefView();
}
/**
* 新建
*
* @param {*} [arg={}]
* @param {*} [params]
* @memberof BGYPMobMDView
*/
public New(args: any[], params?: any, $event?: any, xData?: any) {
const _this: any = this;
if (_this.newdata && _this.newdata instanceof Function) {
const data: any = {};
if (_this.srfparentdata) {
Object.assign(data, _this.srfparentdata);
}
_this.newdata([{ ...data }], params, $event, xData);
} else {
this.$notification.error('错误,视图处理逻辑不存在,请添加!');
}
}
/**
* mdctrl 部件 load 事件
*
* @param {*} [args={}]
* @param {*} $event
* @memberof TestEntityEditView
*/
public mdctrl_load($event: any, $event2?: any) {
this.engine.onCtrlEvent('mdctrl', 'load', $event);
}
/**
* mdctrl 部件 click 事件
*
* @param {*} [args={}]
* @param {*} $event
* @memberof TestEntityEditView
*/
public mdctrl_click($event: any, $event2?: any) {
this.engine.onCtrlEvent('mdctrl', 'click', $event);
}
/**
* righttoolbar 部件 click 事件
*
* @param {*} [args={}]
* @param {*} $event
* @memberof TestEntityEditView
*/
public righttoolbar_click($event: any, $event2?: any) {
if (Object.is($event.tag, 'tbitem1')) {
this.righttoolbar_tbitem1_click($event, '', $event2);
}
}
/**
* 部件逻辑事件
*
* @param {*} [params={}]
* @param {*} [tag]
* @memberof BGYPMobMDView
*/
public righttoolbar_tbitem1_click(params: any = {}, tag?: any, $event?: any) {
// 参数
// 取数
let datas: any[] = [];
let xData: any = null;
const paramJO = {};
xData = this.mdctrl;
datas = [...xData.getDatas()];
// 界面行为
this.New(datas, paramJO, $event, xData);
}
/**
* 打开新建数据视图
*
* @param {*} [params={}]
* @memberof BGYPMobMDView
*/
public async newdata(params: any = {}) {
}
/**
* 打开编辑数据视图
*
* @param {*} [params={}]
* @memberof BGYPMobMDView
*/
public async opendata(params: any = {}) {
}
/**
* 返回
*
* @memberof BGYPMobMDView
*/
public backView() {
let res:any;
if(this.isModalMode){
if(this.$activeData && this.$activeData.length >0){
res = { ret: 'OK', result:this.$activeData };
}else{
res = { ret: 'NO', result:[] };
}
this.$modalCtrl.dismiss(res, 'close');
}else{
this.$navCtrl.back();
if(this.$activeData && this.$activeData.length >0){
res = { ret: 'OK', result:this.$activeData };
}else{
res = { ret: 'NO', result:[] };
}
this.$app.closeCallback(res);
}
}
/**
* 嵌入视图点击更多
*
* @public
* @memberof BGYPMobMDView
*/
public async click_more(){
let leftopts:Array<any> =[
];
let rightopts:Array<any> =[
{text:'新建',id:'righttoolbar_tbitem1'},
];
let opts:Array<any>=leftopts.concat(rightopts);
const result: string = await this.$app.openActionSheet({items:opts});
let _this =this;
if(result.startsWith('righttoolbar')){
if(_this && _this.righttoolbar_click && _this.righttoolbar_click instanceof Function){
let firstIndex = result.indexOf('_');
_this.righttoolbar_click({tag:result.substring(firstIndex + 1)});
}
}
}
/**
* 点击toolbar的操作组事件
*
* @public
* @memberof BGYPMobMDView
*/
public async openActionSheet(data:any){
}
/**
* 注册关联视图
*
* @public
* @memberof BGYPMobMDView
*/
public registerRefView(){
}
/**
* 实例化对象
*
* @memberof BGYPMobMDView
*/
constructor(public $http:Http,public $navCtrl: NavController, public $notification: AppNotification, public $activatedRoute: ActivatedRoute,public $modalCtrl:ModalController,public $app:App) {
this.$activatedRoute.queryParams.subscribe(params => {
this.$route ="";
if(params){
this.$route =JSON.stringify(params);
}
this.engineInit();
})
}
/**
* angular生命周期(组件初始化)
*
* @memberof BGYPMobMDView
*/
public ngOnInit() {
}
/**
* 视图抛出值变化事件
*
* @public
* @memberof BGYPMobMDView
*/
public viewDataChanges($event:any){
this.viewdataschange.emit($event);
}
/**
* 快速搜索
*
* @public
* @memberof BGYPMobMDView
*/
public onQuickSearchValueChange($event:any){
this.viewState.next({tag:'mdctrl',action:'quicksearch',data:$event.detail.value});
}
}
import { IonicModule } from '@ionic/angular';
import { RouterModule } from '@angular/router';
import { NgModule,CUSTOM_ELEMENTS_SCHEMA } from '@angular/core';
import { CommonModule } from '@angular/common';
import { FormsModule } from '@angular/forms';
import { ShareModule } from '@share/share.module';
import { MdctrlModule } from '@widget/bgyp/mob-mobmdctrl/mob-mobmdctrl.module';
import {BGYPMobPickupMDViewPage} from './bgypmob-pickup-mdview.page';
@NgModule({
imports: [
RouterModule.forChild([{ path: '', component: BGYPMobPickupMDViewPage}])
],
exports:[RouterModule]
})
export class BGYPMobPickupMDViewRouteModule {}
@NgModule({
imports: [
IonicModule,
CommonModule,
FormsModule,
ShareModule,
BGYPMobPickupMDViewRouteModule,
MdctrlModule,
],
schemas: [CUSTOM_ELEMENTS_SCHEMA],
declarations: [BGYPMobPickupMDViewPage],
entryComponents:[BGYPMobPickupMDViewPage],
exports:[BGYPMobPickupMDViewPage]
})
export class BGYPMobPickupMDViewModule {}
<div class="app-view app-view-mobpickupmdview bgypmob-pickup-mdview">
<div style="overflow-y: auto;" class="app-view-body">
<ctrl-mob-mobmdctrl [oldSelected]="oldSelected" [isembeddedView]="isembeddedView" [isModalMode]="isModalMode" [isMulti]="isMulti" [isSelectedView]="true" [loadMode]="2" [viewState]="viewState" [searchAction]="'searchdefault'" [name]="'mdctrl'" (selectchangeemit)="mdctrl_selectchange($event)" (loademit)="mdctrl_load($event)" ></ctrl-mob-mobmdctrl>
</div>
</div>
import { Component, OnInit,AfterViewInit,Output,Input,EventEmitter,ViewChild,ElementRef } from '@angular/core';
import { Subject,Unsubscribable } from 'rxjs';
import { ActivatedRoute } from '@angular/router';
import { NavController,ModalController } from '@ionic/angular';
import { AppNotification } from '@global/service/Notification';
import { App } from '@global/service/App';
import { Http } from '@global/service/Http';
import { ComUtil } from '@global/util/ComUtil';
import { AppEnvironment } from 'src/environments/AppEnvironment';
import MobPickupMDViewEngine from 'src/engine/view/mob-pickup-mdview-engine';
import { Mdctrl } from '@widget/bgyp/mob-mobmdctrl/mob-mobmdctrl';
@Component({
selector: 'view-bgypmob-pickup-mdview',
templateUrl: './bgypmob-pickup-mdview.page.html',
styleUrls: ['./bgypmob-pickup-mdview.page.scss']
})
export class BGYPMobPickupMDViewPage implements OnInit,AfterViewInit {
/**
* 子组件Mdctrl
*
* @public
* @type {Subject}
* @memberof BGYPMobPickupMDView
*/
@ViewChild(Mdctrl)
private mdctrl: Mdctrl;
/**
* 视图订阅对象
*
* @public
* @type {Subject}
* @memberof BGYPMobPickupMDView
*/
public viewState: Subject<ViewState> = new Subject();
/**
* 路由传递参数
*
* @public
* @type {void}
* @memberof BGYPMobPickupMDView
*/
public $route ={};
/**
* 当前视图激活数据
*
* @public
* @type {void}
* @memberof BGYPMobPickupMDView
*/
public $activeData:Array<any> =[];
/**
* 是否为模态框弹出
*
* @memberof BGYPMobPickupMDView
*/
@Input() isModalMode:boolean =false;
/**
* 是否嵌入分页导航视图
*
* @memberof TestEntity2MobPickupView
*/
@Input() isTabexp:boolean =false;
/**
* 视图值变化事件
*
* @public
* @type {EventEmitter}
* @memberof BGYPMobPickupMDView
*/
@Output() public viewdataschange =new EventEmitter();
/**
* 视图参数
*
* @public
* @type {Subject}
* @memberof BGYPMobPickupMDView
*/
@Input() public viewdata:any;
/**
* 父数据对象
*
* @protected
* @type {*}
* @memberof BGYPMobPickupMDView
*/
protected srfparentdata: any = {};
/**
* 是否为内敛视图
*
* @public
* @type {EventEmitter}
* @memberof BGYPMobPickupMDView
*/
@Input() public isembeddedView:boolean =false;
/**
* 视图值加载完成事件
*
* @public
* @type {EventEmitter}
* @memberof BGYPMobPickupMDView
*/
@Output() public viewload =new EventEmitter();
/**
* 视图的关联试图Map
*
* @public
* @type {Map}
* @memberof BGYPMobPickupMDView
*/
public RefViewMap =new Map();
/**
* 视图引擎
*
* @private
* @type {Engine}
* @memberof BGYPMobPickupMDView
*/
private engine: MobPickupMDViewEngine = new MobPickupMDViewEngine();
/**
* 引擎初始化
*
* @private
* @memberof BGYPMobPickupMDView
*/
private engineInit(): void {
this.engine.init({
view: this,
mdctrl: this.mdctrl,
});
}
/**
* angular生命周期(在ngOnInit之后)
*
* @memberof BGYPMobPickupMDView
*/
public ngAfterViewInit(){
this.engineInit();
if (this.viewState) {
this.viewState.subscribe(({ tag, action, data }) => {
if (!Object.is(tag, this.name)) {
return;
}
this.viewState.next({tag:tag, action:action, data:data})
});
}
this.registerRefView();
}
/**
* mdctrl 部件 selectchange 事件
*
* @param {*} [args={}]
* @param {*} $event
* @memberof TestEntityEditView
*/
public mdctrl_selectchange($event: any, $event2?: any) {
this.engine.onCtrlEvent('mdctrl', 'selectchange', $event);
}
/**
* mdctrl 部件 load 事件
*
* @param {*} [args={}]
* @param {*} $event
* @memberof TestEntityEditView
*/
public mdctrl_load($event: any, $event2?: any) {
this.engine.onCtrlEvent('mdctrl', 'load', $event);
}
/**
* 返回
*
* @memberof BGYPMobPickupMDView
*/
public backView() {
let res:any;
if(this.isModalMode){
if(this.$activeData && this.$activeData.length >0){
res = { ret: 'OK', result:this.$activeData };
}else{
res = { ret: 'NO', result:[] };
}
this.$modalCtrl.dismiss(res, 'close');
}else{
this.$navCtrl.back();
if(this.$activeData && this.$activeData.length >0){
res = { ret: 'OK', result:this.$activeData };
}else{
res = { ret: 'NO', result:[] };
}
this.$app.closeCallback(res);
}
}
/**
* 嵌入视图点击更多
*
* @public
* @memberof BGYPMobPickupMDView
*/
public async click_more(){
let leftopts:Array<any> =[
];
let rightopts:Array<any> =[
];
let opts:Array<any>=leftopts.concat(rightopts);
const result: string = await this.$app.openActionSheet({items:opts});
let _this =this;
}
/**
* 点击toolbar的操作组事件
*
* @public
* @memberof BGYPMobPickupMDView
*/
public async openActionSheet(data:any){
}
/**
* 注册关联视图
*
* @public
* @memberof BGYPMobPickupMDView
*/
public registerRefView(){
}
/**
* 是否多选
*
* @memberof BGYPMobPickupMDView
*/
@Input() public isMulti:boolean;
/**
* 是否多选
*
* @memberof BGYPMobPickupMDView
*/
@Input() public name:string;
/**
* 已选择值
*
* @memberof BGYPMobPickupMDView
*/
@Input() public oldSelected:Array<any>;
/**
* 搜索值变化 quicksearch
*
* @memberof BGYPMobPickupMDView
*/
@Input() set searchtext(val: any) {
if(val){
this.viewState.next({ tag: 'mdctrl', action: 'quicksearch', data: val });
}
}
/**
* 搜索值变化 search
*
* @memberof BGYPMobPickupMDView
*/
@Input() set loadText(val: any) {
if(val){
setTimeout(() => {
this.viewState.next({ tag: 'mdctrl', action: 'search', data: val });
}, 500);
}
}
/**
* 实例化对象
*
* @memberof BGYPMobPickupMDView
*/
constructor(public $http:Http,public $navCtrl: NavController, public $notification: AppNotification, public $activatedRoute: ActivatedRoute,public $modalCtrl:ModalController,public $app:App) {
this.$activatedRoute.queryParams.subscribe(params => {
this.$route ="";
if(params){
this.$route =JSON.stringify(params);
}
})
}
/**
* angular生命周期(组件初始化)
*
* @memberof BGYPMobPickupMDView
*/
public ngOnInit() {
}
}
\ No newline at end of file
import { IonicModule } from '@ionic/angular';
import { RouterModule } from '@angular/router';
import { NgModule,CUSTOM_ELEMENTS_SCHEMA } from '@angular/core';
import { CommonModule } from '@angular/common';
import { FormsModule } from '@angular/forms';
import { ShareModule } from '@share/share.module';
import { RighttoolbarModule } from '@widget/bgyp/tree-exp-viewrighttoolbar-toolbar/tree-exp-viewrighttoolbar-toolbar.module';
import { TreeExpBarModule } from '@widget/bgyp/tree-exp-viewtreeexpbar-treeexpbar/tree-exp-viewtreeexpbar-treeexpbar.module';
import { Treeexpbar_treeModule } from '@widget/bgyp/usr-treeview/usr-treeview.module';
import {BGYPMobPickupMDViewModule} from '@pages/demo/bgypmob-pickup-mdview/bgypmob-pickup-mdview.module';
import {BGYPTreeExpViewPage} from './bgyptree-exp-view.page';
@NgModule({
imports: [
RouterModule.forChild([{ path: '', component: BGYPTreeExpViewPage}])
],
exports:[RouterModule]
})
export class BGYPTreeExpViewRouteModule {}
@NgModule({
imports: [
IonicModule,
CommonModule,
FormsModule,
ShareModule,
BGYPTreeExpViewRouteModule,
RighttoolbarModule,TreeExpBarModule,Treeexpbar_treeModule,
BGYPMobPickupMDViewModule,
],
schemas: [CUSTOM_ELEMENTS_SCHEMA],
declarations: [BGYPTreeExpViewPage],
entryComponents:[BGYPTreeExpViewPage],
exports:[BGYPTreeExpViewPage]
})
export class BGYPTreeExpViewModule {}
<ng-container *ngIf="!isembeddedView">
<ion-header class="app-view-header">
<ion-toolbar class="app-view-toolbar" color="primary">
<ion-buttons slot="start">
<ion-button (click)="backView()" >
<ion-icon name="arrow-back"></ion-icon>
返回
</ion-button>
</ion-buttons>
<ion-title class="app-view-title">办公用品树导航视图</ion-title>
<ion-buttons slot="end" >
<div class="app-mob-toolbar ">
<div >
<ion-button class="app-view-toolbar-button" (click)="righttoolbar_click({ tag: 'tbitem1' }, $event)">
<ion-icon name="fa fa-file-text-o" ></ion-icon>
新建
</ion-button>
</div>
</div>
</ion-buttons>
</ion-toolbar>
</ion-header>
<ion-content class="app-view app-view-mobtreeexpview bgyptree-exp-view">
<div class="app-view-body">
<ctrl-tree-exp-viewtreeexpbar-treeexpbar [viewdata]="viewdata" [isembeddedView]="isembeddedView" [isModalMode]="isModalMode" [viewState]="viewState" [name]="'treeexpbar'" ></ctrl-tree-exp-viewtreeexpbar-treeexpbar>
</div>
</ion-content>
</ng-container>
<ng-container *ngIf="isembeddedView">
<div class="app-view app-embedded-mobtreeexpview bgyptree-exp-view">
<ng-container *ngIf="!isTabexp">
<div class="app-view-embedded">
<div>办公用品树导航视图</div>
<div class="app-view-embedded-icon"><ion-icon name="more" (click)="click_more()"></ion-icon></div>
</div>
</ng-container>
<div class="app-view-body">
<ctrl-tree-exp-viewtreeexpbar-treeexpbar [isembeddedView]="isembeddedView" [isModalMode]="isModalMode" [viewState]="viewState" [name]="'treeexpbar'" ></ctrl-tree-exp-viewtreeexpbar-treeexpbar>
</div>
</div>
</ng-container>
import { Component, OnInit,AfterViewInit,Output,Input,EventEmitter,ViewChild,ElementRef } from '@angular/core';
import { Subject,Unsubscribable } from 'rxjs';
import { ActivatedRoute } from '@angular/router';
import { NavController,ModalController } from '@ionic/angular';
import { AppNotification } from '@global/service/Notification';
import { App } from '@global/service/App';
import { Http } from '@global/service/Http';
import { ComUtil } from '@global/util/ComUtil';
import { AppEnvironment } from 'src/environments/AppEnvironment';
import { BGYPMobPickupMDViewPage } from '@pages/demo/bgypmob-pickup-mdview/bgypmob-pickup-mdview.page';
import { Righttoolbar } from '@widget/bgyp/tree-exp-viewrighttoolbar-toolbar/tree-exp-viewrighttoolbar-toolbar';
import { TreeExpBar } from '@widget/bgyp/tree-exp-viewtreeexpbar-treeexpbar/tree-exp-viewtreeexpbar-treeexpbar';
@Component({
selector: 'view-bgyptree-exp-view',
templateUrl: './bgyptree-exp-view.page.html',
styleUrls: ['./bgyptree-exp-view.page.scss']
})
export class BGYPTreeExpViewPage implements OnInit,AfterViewInit {
/**
* 子组件Righttoolbar
*
* @public
* @type {Subject}
* @memberof BGYPTreeExpView
*/
@ViewChild(Righttoolbar)
private righttoolbar: Righttoolbar;
/**
* 子组件TreeExpBar
*
* @public
* @type {Subject}
* @memberof BGYPTreeExpView
*/
@ViewChild(TreeExpBar)
private treeexpbar: TreeExpBar;
/**
* 视图订阅对象
*
* @public
* @type {Subject}
* @memberof BGYPTreeExpView
*/
public viewState: Subject<ViewState> = new Subject();
/**
* 路由传递参数
*
* @public
* @type {void}
* @memberof BGYPTreeExpView
*/
public $route ={};
/**
* 当前视图激活数据
*
* @public
* @type {void}
* @memberof BGYPTreeExpView
*/
public $activeData:Array<any> =[];
/**
* 是否为模态框弹出
*
* @memberof BGYPTreeExpView
*/
@Input() isModalMode:boolean =false;
/**
* 是否嵌入分页导航视图
*
* @memberof TestEntity2MobPickupView
*/
@Input() isTabexp:boolean =false;
/**
* 视图值变化事件
*
* @public
* @type {EventEmitter}
* @memberof BGYPTreeExpView
*/
@Output() public viewdataschange =new EventEmitter();
/**
* 视图参数
*
* @public
* @type {Subject}
* @memberof BGYPTreeExpView
*/
@Input() public viewdata:any;
/**
* 父数据对象
*
* @protected
* @type {*}
* @memberof BGYPTreeExpView
*/
protected srfparentdata: any = {};
/**
* 是否为内敛视图
*
* @public
* @type {EventEmitter}
* @memberof BGYPTreeExpView
*/
@Input() public isembeddedView:boolean =false;
/**
* 视图值加载完成事件
*
* @public
* @type {EventEmitter}
* @memberof BGYPTreeExpView
*/
@Output() public viewload =new EventEmitter();
/**
* 视图的关联试图Map
*
* @public
* @type {Map}
* @memberof BGYPTreeExpView
*/
public RefViewMap =new Map();
/**
* 引擎初始化
*
* @private
* @memberof BGYPTreeExpView
*/
private engineInit(): void {
}
/**
* angular生命周期(在ngOnInit之后)
*
* @memberof BGYPTreeExpView
*/
public ngAfterViewInit(){
this.engineInit();
this.viewState.next({ tag: 'treeexpbar', action: 'load', data: this.viewdata });
this.registerRefView();
}
/**
* 新建
*
* @param {*} [arg={}]
* @param {*} [params]
* @memberof BGYPTreeExpView
*/
public New(args: any[], params?: any, $event?: any, xData?: any) {
const _this: any = this;
if (_this.newdata && _this.newdata instanceof Function) {
const data: any = {};
if (_this.srfparentdata) {
Object.assign(data, _this.srfparentdata);
}
_this.newdata([{ ...data }], params, $event, xData);
} else {
this.$notification.error('错误,视图处理逻辑不存在,请添加!');
}
}
/**
* righttoolbar 部件 click 事件
*
* @param {*} [args={}]
* @param {*} $event
* @memberof TestEntityEditView
*/
public righttoolbar_click($event: any, $event2?: any) {
if (Object.is($event.tag, 'tbitem1')) {
this.righttoolbar_tbitem1_click($event, '', $event2);
}
}
/**
* 部件逻辑事件
*
* @param {*} [params={}]
* @param {*} [tag]
* @memberof BGYPTreeExpView
*/
public righttoolbar_tbitem1_click(params: any = {}, tag?: any, $event?: any) {
// 参数
// 取数
let datas: any[] = [];
let xData: any = null;
const paramJO = {};
// 界面行为
this.New(datas, paramJO, $event, xData);
}
/**
* 打开新建数据视图
*
* @param {*} [params={}]
* @memberof BGYPTreeExpView
*/
public async newdata(params: any = {}) {
}
/**
* 打开编辑数据视图
*
* @param {*} [params={}]
* @memberof BGYPTreeExpView
*/
public async opendata(params: any = {}) {
}
/**
* 返回
*
* @memberof BGYPTreeExpView
*/
public backView() {
let res:any;
if(this.isModalMode){
if(this.$activeData && this.$activeData.length >0){
res = { ret: 'OK', result:this.$activeData };
}else{
res = { ret: 'NO', result:[] };
}
this.$modalCtrl.dismiss(res, 'close');
}else{
this.$navCtrl.back();
if(this.$activeData && this.$activeData.length >0){
res = { ret: 'OK', result:this.$activeData };
}else{
res = { ret: 'NO', result:[] };
}
this.$app.closeCallback(res);
}
}
/**
* 嵌入视图点击更多
*
* @public
* @memberof BGYPTreeExpView
*/
public async click_more(){
let leftopts:Array<any> =[
];
let rightopts:Array<any> =[
{text:'新建',id:'righttoolbar_tbitem1'},
];
let opts:Array<any>=leftopts.concat(rightopts);
const result: string = await this.$app.openActionSheet({items:opts});
let _this =this;
if(result.startsWith('righttoolbar')){
if(_this && _this.righttoolbar_click && _this.righttoolbar_click instanceof Function){
let firstIndex = result.indexOf('_');
_this.righttoolbar_click({tag:result.substring(firstIndex + 1)});
}
}
}
/**
* 点击toolbar的操作组事件
*
* @public
* @memberof BGYPTreeExpView
*/
public async openActionSheet(data:any){
}
/**
* 注册关联视图
*
* @public
* @memberof BGYPTreeExpView
*/
public registerRefView(){
this.RefViewMap.set('BGYPMobPickupMDView',BGYPMobPickupMDViewPage);
}
/**
* 实例化对象
*
* @memberof BGYPTreeExpView
*/
constructor(public $http:Http,public $navCtrl: NavController, public $notification: AppNotification, public $activatedRoute: ActivatedRoute,public $modalCtrl:ModalController,public $app:App) {
this.$activatedRoute.queryParams.subscribe(params => {
this.$route ="";
if(params){
this.$route =JSON.stringify(params);
}
})
}
/**
* angular生命周期(组件初始化)
*
* @memberof BGYPTreeExpView
*/
public ngOnInit() {
}
/**
* 视图抛出值变化事件
*
* @public
* @memberof BGYPTreeExpView
*/
public viewDataChanges($event:any){
this.viewdataschange.emit($event);
}
/**
* 快速搜索
*
* @public
* @memberof BGYPTreeExpView
*/
public onQuickSearchValueChange($event:any){
this.viewState.next({tag:'treeexpbar',action:'quicksearch',data:$event.detail.value});
}
}
import { IonicModule } from '@ionic/angular';
import { RouterModule } from '@angular/router';
import { NgModule,CUSTOM_ELEMENTS_SCHEMA } from '@angular/core';
import { CommonModule } from '@angular/common';
import { FormsModule } from '@angular/forms';
import { ShareModule } from '@share/share.module';
import { EditFormModule } from '@widget/df/mob-form-form/mob-form-form.module';
import { RighttoolbarModule } from '@widget/df/mob-edit-viewrighttoolbar-toolbar/mob-edit-viewrighttoolbar-toolbar.module';
import {DFMobEditViewPage} from './dfmob-edit-view.page';
@NgModule({
imports: [
RouterModule.forChild([{ path: '', component: DFMobEditViewPage}])
],
exports:[RouterModule]
})
export class DFMobEditViewRouteModule {}
@NgModule({
imports: [
IonicModule,
CommonModule,
FormsModule,
ShareModule,
DFMobEditViewRouteModule,
EditFormModule,RighttoolbarModule,
],
schemas: [CUSTOM_ELEMENTS_SCHEMA],
declarations: [DFMobEditViewPage],
entryComponents:[DFMobEditViewPage],
exports:[DFMobEditViewPage]
})
export class DFMobEditViewModule {}
<ng-container *ngIf="!isembeddedView">
<ion-header class="app-view-header">
<ion-toolbar class="app-view-toolbar" color="primary">
<ion-buttons slot="start" class="app-toolbar-left-buttons">
<ion-button (click)="editBackView()">
<ion-icon name="arrow-back"></ion-icon>
返回
</ion-button>
</ion-buttons>
<ion-title class="app-view-title">电费</ion-title>
<ion-buttons slot="end" class="app-toolbar-right-buttons">
<div class="app-mob-toolbar ">
<div >
<ion-button class="app-view-toolbar-button" (click)="righttoolbar_click({ tag: 'tbitem1' }, $event)">
<ion-icon name="sx-tb-saveandclose" src="../sasrfex/images/default/icon_saveandclose.png"></ion-icon>
保存
</ion-button>
</div>
</div>
</ion-buttons>
</ion-toolbar>
</ion-header>
<ion-content class="app-view app-view-mobeditview dfmob-edit-view">
<div class="app-view-body">
<ctrl-mob-form-form [isembeddedView]="isembeddedView" [isModalMode]="isModalMode" [viewState]="viewState" [updateAction]="'update'" [removeAction]="'remove'" [loaddraftAction]="'getdraft'" [loadAction]="'get'" [createAction]="'create'" [name]="'form'" (saveemit)="form_save($event)" (removeemit)="form_remove($event)" (loademit)="form_load($event)" ></ctrl-mob-form-form>
</div>
</ion-content>
</ng-container>
<ng-container *ngIf="isembeddedView">
<div class="app-view app-embedded-mobeditview dfmob-edit-view">
<ng-container *ngIf="!isTabexp">
<div class="app-view-embedded">
<div>电费</div>
<div class="app-view-embedded-icon"><ion-icon name="more" (click)="click_more()"></ion-icon></div>
</div>
</ng-container>
<div class="app-view-body">
<ctrl-mob-form-form [isembeddedView]="isembeddedView" [isModalMode]="isModalMode" [viewState]="viewState" [updateAction]="'update'" [removeAction]="'remove'" [loaddraftAction]="'getdraft'" [loadAction]="'get'" [createAction]="'create'" [name]="'form'" (saveemit)="form_save($event)" (removeemit)="form_remove($event)" (loademit)="form_load($event)" ></ctrl-mob-form-form>
</div>
</div>
</ng-container>
import { IonicModule } from '@ionic/angular';
import { RouterModule } from '@angular/router';
import { NgModule,CUSTOM_ELEMENTS_SCHEMA } from '@angular/core';
import { CommonModule } from '@angular/common';
import { FormsModule } from '@angular/forms';
import { ShareModule } from '@share/share.module';
import { MdctrlModule } from '@widget/df/mob-mobmdctrl/mob-mobmdctrl.module';
import { RighttoolbarModule } from '@widget/df/mob-mdviewrighttoolbar-toolbar/mob-mdviewrighttoolbar-toolbar.module';
import {DFMobEditViewModule} from '@pages/demo/dfmob-edit-view/dfmob-edit-view.module';
import {DFMobMDViewPage} from './dfmob-mdview.page';
@NgModule({
imports: [
RouterModule.forChild([{ path: '', component: DFMobMDViewPage}])
],
exports:[RouterModule]
})
export class DFMobMDViewRouteModule {}
@NgModule({
imports: [
IonicModule,
CommonModule,
FormsModule,
ShareModule,
DFMobMDViewRouteModule,
MdctrlModule,RighttoolbarModule,
DFMobEditViewModule,
],
schemas: [CUSTOM_ELEMENTS_SCHEMA],
declarations: [DFMobMDViewPage],
entryComponents:[DFMobMDViewPage],
exports:[DFMobMDViewPage]
})
export class DFMobMDViewModule {}
<ng-container *ngIf="!isembeddedView">
<ion-header class="app-view-header">
<ion-toolbar class="app-view-toolbar" color="primary">
<ion-buttons slot="start">
<ion-button (click)="backView()" >
<ion-icon name="arrow-back"></ion-icon>
返回
</ion-button>
</ion-buttons>
<ion-searchbar (ionChange)="onQuickSearchValueChange($event)" showCancelButton cancelButtonText="取消" debounce="500" animated placeholder="搜索" mode="ios" clearIcon="close-circle"></ion-searchbar>
<ion-buttons slot="end" >
<div class="app-mob-toolbar ">
<div >
<ion-button class="app-view-toolbar-button" (click)="righttoolbar_click({ tag: 'tbitem1' }, $event)">
<ion-icon name="fa fa-file-text-o" ></ion-icon>
新建
</ion-button>
</div>
</div>
</ion-buttons>
</ion-toolbar>
</ion-header>
<ion-content class="app-view app-view-mobmdview dfmob-mdview">
<div class="app-view-body">
<ctrl-mob-mobmdctrl [viewState]="viewState" [isembeddedView]="isembeddedView" [isModalMode]="isModalMode" [updateAction]="'update'" [removeAction]="'remove'" [loadAction]="'get'" [createAction]="'create'" [searchAction]="'searchdefault'" [name]="'mdctrl'" (loademit)="mdctrl_load($event)" (clickemit)="mdctrl_click($event)" ></ctrl-mob-mobmdctrl>
</div>
</ion-content>
</ng-container>
<ng-container *ngIf="isembeddedView">
<div class="app-view app-embedded-mobmdview dfmob-mdview">
<ng-container *ngIf="!isTabexp">
<div class="app-view-embedded">
<div>电费</div>
<div class="app-view-embedded-icon"><ion-icon name="more" (click)="click_more()"></ion-icon></div>
</div>
</ng-container>
<div class="app-view-body">
<ctrl-mob-mobmdctrl [viewState]="viewState" [isembeddedView]="isembeddedView" [isModalMode]="isModalMode" [searchAction]="'searchdefault'" [name]="'mdctrl'" (loademit)="mdctrl_load($event)" (clickemit)="mdctrl_click($event)" ></ctrl-mob-mobmdctrl>
</div>
</div>
</ng-container>
import { IonicModule } from '@ionic/angular';
import { RouterModule } from '@angular/router';
import { NgModule,CUSTOM_ELEMENTS_SCHEMA } from '@angular/core';
import { CommonModule } from '@angular/common';
import { FormsModule } from '@angular/forms';
import { ShareModule } from '@share/share.module';
import { EditFormModule } from '@widget/ht/mob-form-form/mob-form-form.module';
import { RighttoolbarModule } from '@widget/ht/mob-edit-viewrighttoolbar-toolbar/mob-edit-viewrighttoolbar-toolbar.module';
import {XMMobPickupViewModule} from '@pages/demo/xmmob-pickup-view/xmmob-pickup-view.module';
import {HTMobEditViewPage} from './htmob-edit-view.page';
@NgModule({
imports: [
RouterModule.forChild([{ path: '', component: HTMobEditViewPage}])
],
exports:[RouterModule]
})
export class HTMobEditViewRouteModule {}
@NgModule({
imports: [
IonicModule,
CommonModule,
FormsModule,
ShareModule,
HTMobEditViewRouteModule,
EditFormModule,RighttoolbarModule,
XMMobPickupViewModule,
],
schemas: [CUSTOM_ELEMENTS_SCHEMA],
declarations: [HTMobEditViewPage],
entryComponents:[HTMobEditViewPage],
exports:[HTMobEditViewPage]
})
export class HTMobEditViewModule {}
<ng-container *ngIf="!isembeddedView">
<ion-header class="app-view-header">
<ion-toolbar class="app-view-toolbar" color="primary">
<ion-buttons slot="start" class="app-toolbar-left-buttons">
<ion-button (click)="editBackView()">
<ion-icon name="arrow-back"></ion-icon>
返回
</ion-button>
</ion-buttons>
<ion-title class="app-view-title">合同</ion-title>
<ion-buttons slot="end" class="app-toolbar-right-buttons">
<div class="app-mob-toolbar ">
<div >
<ion-button class="app-view-toolbar-button" (click)="righttoolbar_click({ tag: 'tbitem1' }, $event)">
<ion-icon name="sx-tb-saveandclose" src="../sasrfex/images/default/icon_saveandclose.png"></ion-icon>
保存
</ion-button>
</div>
</div>
</ion-buttons>
</ion-toolbar>
</ion-header>
<ion-content class="app-view app-view-mobeditview htmob-edit-view">
<div class="app-view-body">
<ctrl-mob-form-form [isembeddedView]="isembeddedView" [isModalMode]="isModalMode" [viewState]="viewState" [updateAction]="'update'" [removeAction]="'remove'" [loaddraftAction]="'getdraft'" [loadAction]="'get'" [createAction]="'create'" [name]="'form'" (saveemit)="form_save($event)" (removeemit)="form_remove($event)" (loademit)="form_load($event)" ></ctrl-mob-form-form>
</div>
</ion-content>
</ng-container>
<ng-container *ngIf="isembeddedView">
<div class="app-view app-embedded-mobeditview htmob-edit-view">
<ng-container *ngIf="!isTabexp">
<div class="app-view-embedded">
<div>合同</div>
<div class="app-view-embedded-icon"><ion-icon name="more" (click)="click_more()"></ion-icon></div>
</div>
</ng-container>
<div class="app-view-body">
<ctrl-mob-form-form [isembeddedView]="isembeddedView" [isModalMode]="isModalMode" [viewState]="viewState" [updateAction]="'update'" [removeAction]="'remove'" [loaddraftAction]="'getdraft'" [loadAction]="'get'" [createAction]="'create'" [name]="'form'" (saveemit)="form_save($event)" (removeemit)="form_remove($event)" (loademit)="form_load($event)" ></ctrl-mob-form-form>
</div>
</div>
</ng-container>
import { IonicModule } from '@ionic/angular';
import { RouterModule } from '@angular/router';
import { NgModule,CUSTOM_ELEMENTS_SCHEMA } from '@angular/core';
import { CommonModule } from '@angular/common';
import { FormsModule } from '@angular/forms';
import { ShareModule } from '@share/share.module';
import { MdctrlModule } from '@widget/ht/mob-mobmdctrl/mob-mobmdctrl.module';
import { RighttoolbarModule } from '@widget/ht/mob-mdviewrighttoolbar-toolbar/mob-mdviewrighttoolbar-toolbar.module';
import {HTMobEditViewModule} from '@pages/demo/htmob-edit-view/htmob-edit-view.module';
import {HTMobMDViewPage} from './htmob-mdview.page';
@NgModule({
imports: [
RouterModule.forChild([{ path: '', component: HTMobMDViewPage}])
],
exports:[RouterModule]
})
export class HTMobMDViewRouteModule {}
@NgModule({
imports: [
IonicModule,
CommonModule,
FormsModule,
ShareModule,
HTMobMDViewRouteModule,
MdctrlModule,RighttoolbarModule,
HTMobEditViewModule,
],
schemas: [CUSTOM_ELEMENTS_SCHEMA],
declarations: [HTMobMDViewPage],
entryComponents:[HTMobMDViewPage],
exports:[HTMobMDViewPage]
})
export class HTMobMDViewModule {}
<ng-container *ngIf="!isembeddedView">
<ion-header class="app-view-header">
<ion-toolbar class="app-view-toolbar" color="primary">
<ion-buttons slot="start">
<ion-button (click)="backView()" >
<ion-icon name="arrow-back"></ion-icon>
返回
</ion-button>
</ion-buttons>
<ion-searchbar (ionChange)="onQuickSearchValueChange($event)" showCancelButton cancelButtonText="取消" debounce="500" animated placeholder="搜索" mode="ios" clearIcon="close-circle"></ion-searchbar>
<ion-buttons slot="end" >
<div class="app-mob-toolbar ">
<div >
<ion-button class="app-view-toolbar-button" (click)="righttoolbar_click({ tag: 'tbitem1' }, $event)">
<ion-icon name="fa fa-file-text-o" ></ion-icon>
新建
</ion-button>
</div>
</div>
</ion-buttons>
</ion-toolbar>
</ion-header>
<ion-content class="app-view app-view-mobmdview htmob-mdview">
<div class="app-view-body">
<ctrl-mob-mobmdctrl [viewState]="viewState" [isembeddedView]="isembeddedView" [isModalMode]="isModalMode" [updateAction]="'update'" [removeAction]="'remove'" [loadAction]="'get'" [createAction]="'create'" [searchAction]="'searchdefault'" [name]="'mdctrl'" (loademit)="mdctrl_load($event)" (clickemit)="mdctrl_click($event)" ></ctrl-mob-mobmdctrl>
</div>
</ion-content>
</ng-container>
<ng-container *ngIf="isembeddedView">
<div class="app-view app-embedded-mobmdview htmob-mdview">
<ng-container *ngIf="!isTabexp">
<div class="app-view-embedded">
<div>合同</div>
<div class="app-view-embedded-icon"><ion-icon name="more" (click)="click_more()"></ion-icon></div>
</div>
</ng-container>
<div class="app-view-body">
<ctrl-mob-mobmdctrl [viewState]="viewState" [isembeddedView]="isembeddedView" [isModalMode]="isModalMode" [searchAction]="'searchdefault'" [name]="'mdctrl'" (loademit)="mdctrl_load($event)" (clickemit)="mdctrl_click($event)" ></ctrl-mob-mobmdctrl>
</div>
</div>
</ng-container>
import { IonicModule } from '@ionic/angular';
import { RouterModule } from '@angular/router';
import { NgModule,CUSTOM_ELEMENTS_SCHEMA } from '@angular/core';
import { CommonModule } from '@angular/common';
import { FormsModule } from '@angular/forms';
import { ShareModule } from '@share/share.module';
import { EditFormModule } from '@widget/kq/main-form/main-form.module';
import { RighttoolbarModule } from '@widget/kq/mob-edit-viewrighttoolbar-toolbar/mob-edit-viewrighttoolbar-toolbar.module';
import {KQMobEditViewPage} from './kqmob-edit-view.page';
@NgModule({
imports: [
RouterModule.forChild([{ path: '', component: KQMobEditViewPage}])
],
exports:[RouterModule]
})
export class KQMobEditViewRouteModule {}
@NgModule({
imports: [
IonicModule,
CommonModule,
FormsModule,
ShareModule,
KQMobEditViewRouteModule,
EditFormModule,RighttoolbarModule,
],
schemas: [CUSTOM_ELEMENTS_SCHEMA],
declarations: [KQMobEditViewPage],
entryComponents:[KQMobEditViewPage],
exports:[KQMobEditViewPage]
})
export class KQMobEditViewModule {}
<ng-container *ngIf="!isembeddedView">
<ion-header class="app-view-header">
<ion-toolbar class="app-view-toolbar" color="primary">
<ion-buttons slot="start" class="app-toolbar-left-buttons">
<ion-button (click)="editBackView()">
<ion-icon name="arrow-back"></ion-icon>
返回
</ion-button>
</ion-buttons>
<ion-title class="app-view-title">考勤</ion-title>
<ion-buttons slot="end" class="app-toolbar-right-buttons">
<div class="app-mob-toolbar ">
<div >
<ion-button class="app-view-toolbar-button" (click)="righttoolbar_click({ tag: 'tbitem1' }, $event)">
<ion-icon name="sx-tb-saveandclose" src="../sasrfex/images/default/icon_saveandclose.png"></ion-icon>
保存
</ion-button>
</div>
</div>
</ion-buttons>
</ion-toolbar>
</ion-header>
<ion-content class="app-view app-view-mobeditview kqmob-edit-view">
<div class="app-view-body">
<ctrl-main-form [isembeddedView]="isembeddedView" [isModalMode]="isModalMode" [viewState]="viewState" [updateAction]="'update'" [removeAction]="'remove'" [loaddraftAction]="'getdraft'" [loadAction]="'get'" [createAction]="'create'" [name]="'form'" (saveemit)="form_save($event)" (removeemit)="form_remove($event)" (loademit)="form_load($event)" ></ctrl-main-form>
</div>
</ion-content>
</ng-container>
<ng-container *ngIf="isembeddedView">
<div class="app-view app-embedded-mobeditview kqmob-edit-view">
<ng-container *ngIf="!isTabexp">
<div class="app-view-embedded">
<div>考勤</div>
<div class="app-view-embedded-icon"><ion-icon name="more" (click)="click_more()"></ion-icon></div>
</div>
</ng-container>
<div class="app-view-body">
<ctrl-main-form [isembeddedView]="isembeddedView" [isModalMode]="isModalMode" [viewState]="viewState" [updateAction]="'update'" [removeAction]="'remove'" [loaddraftAction]="'getdraft'" [loadAction]="'get'" [createAction]="'create'" [name]="'form'" (saveemit)="form_save($event)" (removeemit)="form_remove($event)" (loademit)="form_load($event)" ></ctrl-main-form>
</div>
</div>
</ng-container>
import { IonicModule } from '@ionic/angular';
import { RouterModule } from '@angular/router';
import { NgModule,CUSTOM_ELEMENTS_SCHEMA } from '@angular/core';
import { CommonModule } from '@angular/common';
import { FormsModule } from '@angular/forms';
import { ShareModule } from '@share/share.module';
import { MdctrlModule } from '@widget/kq/mob-mobmdctrl/mob-mobmdctrl.module';
import { RighttoolbarModule } from '@widget/kq/mob-mdviewrighttoolbar-toolbar/mob-mdviewrighttoolbar-toolbar.module';
import {KQMobMDViewPage} from './kqmob-mdview.page';
@NgModule({
imports: [
RouterModule.forChild([{ path: '', component: KQMobMDViewPage}])
],
exports:[RouterModule]
})
export class KQMobMDViewRouteModule {}
@NgModule({
imports: [
IonicModule,
CommonModule,
FormsModule,
ShareModule,
KQMobMDViewRouteModule,
MdctrlModule,RighttoolbarModule,
],
schemas: [CUSTOM_ELEMENTS_SCHEMA],
declarations: [KQMobMDViewPage],
entryComponents:[KQMobMDViewPage],
exports:[KQMobMDViewPage]
})
export class KQMobMDViewModule {}
<ng-container *ngIf="!isembeddedView">
<ion-header class="app-view-header">
<ion-toolbar class="app-view-toolbar" color="primary">
<ion-buttons slot="start">
<ion-button (click)="backView()" >
<ion-icon name="arrow-back"></ion-icon>
返回
</ion-button>
</ion-buttons>
<ion-searchbar (ionChange)="onQuickSearchValueChange($event)" showCancelButton cancelButtonText="取消" debounce="500" animated placeholder="搜索" mode="ios" clearIcon="close-circle"></ion-searchbar>
<ion-buttons slot="end" >
<div class="app-mob-toolbar ">
<div >
<ion-button class="app-view-toolbar-button" (click)="righttoolbar_click({ tag: 'tbitem1' }, $event)">
<ion-icon name="fa fa-file-text-o" ></ion-icon>
新建
</ion-button>
</div>
</div>
</ion-buttons>
</ion-toolbar>
</ion-header>
<ion-content class="app-view app-view-mobmdview kqmob-mdview">
<div class="app-view-body">
<ctrl-mob-mobmdctrl [viewState]="viewState" [isembeddedView]="isembeddedView" [isModalMode]="isModalMode" [updateAction]="'update'" [removeAction]="'remove'" [loadAction]="'get'" [createAction]="'create'" [searchAction]="'searchdefault'" [name]="'mdctrl'" (loademit)="mdctrl_load($event)" (clickemit)="mdctrl_click($event)" ></ctrl-mob-mobmdctrl>
</div>
</ion-content>
</ng-container>
<ng-container *ngIf="isembeddedView">
<div class="app-view app-embedded-mobmdview kqmob-mdview">
<ng-container *ngIf="!isTabexp">
<div class="app-view-embedded">
<div>个人考勤</div>
<div class="app-view-embedded-icon"><ion-icon name="more" (click)="click_more()"></ion-icon></div>
</div>
</ng-container>
<div class="app-view-body">
<ctrl-mob-mobmdctrl [viewState]="viewState" [isembeddedView]="isembeddedView" [isModalMode]="isModalMode" [searchAction]="'searchdefault'" [name]="'mdctrl'" (loademit)="mdctrl_load($event)" (clickemit)="mdctrl_click($event)" ></ctrl-mob-mobmdctrl>
</div>
</div>
</ng-container>
import { IonicModule } from '@ionic/angular';
import { RouterModule } from '@angular/router';
import { NgModule,CUSTOM_ELEMENTS_SCHEMA } from '@angular/core';
import { CommonModule } from '@angular/common';
import { FormsModule } from '@angular/forms';
import { ShareModule } from '@share/share.module';
import { EditFormModule } from '@widget/org-user/user-info-form-form/user-info-form-form.module';
import { RighttoolbarModule } from '@widget/org-user/mob-edit-viewrighttoolbar-toolbar/mob-edit-viewrighttoolbar-toolbar.module';
import {WFWorkListMobMDViewModule} from '@pages/demo/wfwork-list-mob-mdview/wfwork-list-mob-mdview.module';
import {AppDashboardViewModule} from '@pages/demo/app-dashboard-view/app-dashboard-view.module';
import {OrgUserMobEditViewPage} from './org-user-mob-edit-view.page';
@NgModule({
imports: [
RouterModule.forChild([{ path: '', component: OrgUserMobEditViewPage}])
],
exports:[RouterModule]
})
export class OrgUserMobEditViewRouteModule {}
@NgModule({
imports: [
IonicModule,
CommonModule,
FormsModule,
ShareModule,
OrgUserMobEditViewRouteModule,
EditFormModule,RighttoolbarModule,
WFWorkListMobMDViewModule,
AppDashboardViewModule,
],
schemas: [CUSTOM_ELEMENTS_SCHEMA],
declarations: [OrgUserMobEditViewPage],
entryComponents:[OrgUserMobEditViewPage],
exports:[OrgUserMobEditViewPage]
})
export class OrgUserMobEditViewModule {}
<ng-container *ngIf="!isembeddedView">
<ion-content class="app-view app-view-mobeditview org-user-mob-edit-view">
<div class="app-view-body">
<ctrl-user-info-form-form [isembeddedView]="isembeddedView" [isModalMode]="isModalMode" [viewState]="viewState" [updateAction]="'update'" [removeAction]="'remove'" [loaddraftAction]="'getdraft'" [loadAction]="'get'" [createAction]="'create'" [name]="'form'" (saveemit)="form_save($event)" (removeemit)="form_remove($event)" (loademit)="form_load($event)" ></ctrl-user-info-form-form>
</div>
</ion-content>
</ng-container>
<ng-container *ngIf="isembeddedView">
<div class="app-view app-embedded-mobeditview org-user-mob-edit-view">
<div class="app-view-body">
<ctrl-user-info-form-form [isembeddedView]="isembeddedView" [isModalMode]="isModalMode" [viewState]="viewState" [updateAction]="'update'" [removeAction]="'remove'" [loaddraftAction]="'getdraft'" [loadAction]="'get'" [createAction]="'create'" [name]="'form'" (saveemit)="form_save($event)" (removeemit)="form_remove($event)" (loademit)="form_load($event)" ></ctrl-user-info-form-form>
</div>
</div>
</ng-container>
import { IonicModule } from '@ionic/angular';
import { RouterModule } from '@angular/router';
import { NgModule,CUSTOM_ELEMENTS_SCHEMA } from '@angular/core';
import { CommonModule } from '@angular/common';
import { FormsModule } from '@angular/forms';
import { ShareModule } from '@share/share.module';
import { MdctrlModule } from '@widget/org-user/mob-mobmdctrl/mob-mobmdctrl.module';
import {OrgUserMobMDViewPage} from './org-user-mob-mdview.page';
@NgModule({
imports: [
RouterModule.forChild([{ path: '', component: OrgUserMobMDViewPage}])
],
exports:[RouterModule]
})
export class OrgUserMobMDViewRouteModule {}
@NgModule({
imports: [
IonicModule,
CommonModule,
FormsModule,
ShareModule,
OrgUserMobMDViewRouteModule,
MdctrlModule,
],
schemas: [CUSTOM_ELEMENTS_SCHEMA],
declarations: [OrgUserMobMDViewPage],
entryComponents:[OrgUserMobMDViewPage],
exports:[OrgUserMobMDViewPage]
})
export class OrgUserMobMDViewModule {}
<ng-container *ngIf="!isembeddedView">
<ion-content class="app-view app-view-mobmdview org-user-mob-mdview">
<div class="app-view-body">
<ctrl-mob-mobmdctrl [viewState]="viewState" [isembeddedView]="isembeddedView" [isModalMode]="isModalMode" [updateAction]="'update'" [removeAction]="'remove'" [loadAction]="'get'" [createAction]="'create'" [searchAction]="'searchcurorguser'" [name]="'mdctrl'" (loademit)="mdctrl_load($event)" (clickemit)="mdctrl_click($event)" ></ctrl-mob-mobmdctrl>
</div>
</ion-content>
</ng-container>
<ng-container *ngIf="isembeddedView">
<div class="app-view app-embedded-mobmdview org-user-mob-mdview">
<div class="app-view-body">
<ctrl-mob-mobmdctrl [viewState]="viewState" [isembeddedView]="isembeddedView" [isModalMode]="isModalMode" [searchAction]="'searchcurorguser'" [name]="'mdctrl'" (loademit)="mdctrl_load($event)" (clickemit)="mdctrl_click($event)" ></ctrl-mob-mobmdctrl>
</div>
</div>
</ng-container>
import { IonicModule } from '@ionic/angular';
import { RouterModule } from '@angular/router';
import { NgModule,CUSTOM_ELEMENTS_SCHEMA } from '@angular/core';
import { CommonModule } from '@angular/common';
import { FormsModule } from '@angular/forms';
import { ShareModule } from '@share/share.module';
import { EditFormModule } from '@widget/qj/mob-form-form/mob-form-form.module';
import { RighttoolbarModule } from '@widget/qj/mob-edit-viewrighttoolbar-toolbar/mob-edit-viewrighttoolbar-toolbar.module';
import {QJMobWFStartViewModule} from '@pages/demo/qjmob-wfstart-view/qjmob-wfstart-view.module';
import {QJMobEditViewPage} from './qjmob-edit-view.page';
@NgModule({
imports: [
RouterModule.forChild([{ path: '', component: QJMobEditViewPage}])
],
exports:[RouterModule]
})
export class QJMobEditViewRouteModule {}
@NgModule({
imports: [
IonicModule,
CommonModule,
FormsModule,
ShareModule,
QJMobEditViewRouteModule,
EditFormModule,RighttoolbarModule,
QJMobWFStartViewModule,
],
schemas: [CUSTOM_ELEMENTS_SCHEMA],
declarations: [QJMobEditViewPage],
entryComponents:[QJMobEditViewPage],
exports:[QJMobEditViewPage]
})
export class QJMobEditViewModule {}
<ng-container *ngIf="!isembeddedView">
<ion-header class="app-view-header">
<ion-toolbar class="app-view-toolbar" color="primary">
<ion-buttons slot="start" class="app-toolbar-left-buttons">
<ion-button (click)="editBackView()">
<ion-icon name="arrow-back"></ion-icon>
返回
</ion-button>
</ion-buttons>
<ion-title class="app-view-title">请假</ion-title>
<ion-buttons slot="end" class="app-toolbar-right-buttons">
<div class="app-mob-toolbar ">
<div >
<ion-button class="app-view-toolbar-button" (click)="righttoolbar_click({ tag: 'tbitem1' }, $event)">
<ion-icon name="sx-tb-saveandclose" src="../sasrfex/images/default/icon_saveandclose.png"></ion-icon>
保存
</ion-button>
<ion-button class="app-view-toolbar-button" (click)="righttoolbar_click({ tag: 'deuiaction1_saveandstart' }, $event)">
<ion-icon name="fa fa-play" ></ion-icon>
开始
</ion-button>
</div>
</div>
</ion-buttons>
</ion-toolbar>
</ion-header>
<ion-content class="app-view app-view-mobeditview qjmob-edit-view">
<div class="app-view-body">
<ctrl-mob-form-form [isembeddedView]="isembeddedView" [isModalMode]="isModalMode" [viewState]="viewState" [updateAction]="'update'" [removeAction]="'remove'" [loaddraftAction]="'getdraft'" [loadAction]="'get'"[wfsubmitAction]="'wfsubmit'" [createAction]="'create'"[wfstartAction]="'wfstart'" [name]="'form'" (saveemit)="form_save($event)" (removeemit)="form_remove($event)" (loademit)="form_load($event)" ></ctrl-mob-form-form>
</div>
</ion-content>
</ng-container>
<ng-container *ngIf="isembeddedView">
<div class="app-view app-embedded-mobeditview qjmob-edit-view">
<ng-container *ngIf="!isTabexp">
<div class="app-view-embedded">
<div>请假</div>
<div class="app-view-embedded-icon"><ion-icon name="more" (click)="click_more()"></ion-icon></div>
</div>
</ng-container>
<div class="app-view-body">
<ctrl-mob-form-form [isembeddedView]="isembeddedView" [isModalMode]="isModalMode" [viewState]="viewState" [updateAction]="'update'" [removeAction]="'remove'" [loaddraftAction]="'getdraft'" [loadAction]="'get'"[wfsubmitAction]="'wfsubmit'" [createAction]="'create'"[wfstartAction]="'wfstart'" [name]="'form'" (saveemit)="form_save($event)" (removeemit)="form_remove($event)" (loademit)="form_load($event)" ></ctrl-mob-form-form>
</div>
</div>
</ng-container>
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
Markdown 格式
0% or
您添加了 0 到此讨论。请谨慎行事。
先完成此消息的编辑!
想要评论请 注册