提交 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>
//样式文件
// this is scss
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>
//样式文件
// this is scss
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>
//样式文件
// this is scss
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>
//样式文件
// this is scss
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>
//样式文件
// this is scss
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>
//样式文件
// this is scss
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>
//样式文件
// this is scss
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>
//样式文件
// this is scss
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>
//样式文件
// this is scss
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>
//样式文件
// this is scss
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>
//样式文件
// this is scss
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>
//样式文件
// this is scss
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>
//样式文件
// this is scss
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>
//样式文件
// this is scss
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>
//样式文件
// this is scss
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>
//样式文件
// this is scss
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>
//样式文件
// this is scss
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>
//样式文件
// this is scss
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>
//样式文件
// this is scss
//样式文件
// this is scss
//样式文件
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
Markdown 格式
0% or
您添加了 0 到此讨论。请谨慎行事。
先完成此消息的编辑!
想要评论请 注册