profile-bind.component.mjs 16 KB

12345678910
  1. /**
  2. * @copyright © 未来飞马 © 未来全栈 www.fmode.cn
  3. * 版权所有 © 未来飞马 © 江西脑控科技有限公司 Copyright © Fmode Technology Co., Ltd.
  4. * 保留所有权利 All Rights Reserved.
  5. * /home/ryan/workspace/nova/nova-admin/dist/fmode-ng/esm2022/lib/user/profile/profile-bind/profile-bind.component.mjs
  6. */
  7. import{Component,HostListener}from"@angular/core";import{AuthProfileService}from"../auth-profile.service";import Parse from"parse";import{Router}from"@angular/router";import{AlertController,ModalController}from"@ionic/angular";import{ToastController}from"@ionic/angular";import{CrossService}from"../../../platform/cross.service";import{ProfileConfirmModalComponent}from"./profile-confirm-modal.component";import*as i0 from"@angular/core";import*as i1 from"../auth-profile.service";import*as i2 from"@angular/router";import*as i3 from"@ionic/angular";import*as i4 from"../../../platform/cross.service";import*as i5 from"@angular/common";import*as i6 from"@angular/forms";export class ProfileBindComponent{onResize(){this.cross.onResizeScreen()}constructor(n,e,o,i,t,r){this.authProfile=n,this.router=e,this.alertController=o,this.toastController=i,this.cross=t,this.modalController=r,this.profileList=[],this.pdata={name:null,mobile:null},this.now=new Date,this.isLoading=!1,this.profile=this.authProfile.profile,this.currentProfile=localStorage.getItem("Parse/ProfileId"),this.user=Parse.User.current(),this.loadProfiles()}async loadProfiles(){this.isLoading=!0;try{let n=new Parse.Query("Profile");n.include("company"),n.notEqualTo("isDeleted",!0),this.profile?.id?(n.equalTo("mobile",this.profile.get("mobile")),n.equalTo("name",this.profile.get("name"))):n.equalTo("user",this.user.id),this.profileList=await n.find()}catch(n){console.error("Error loading profiles:",n),this.showToast("加载身份信息失败,请重试","danger")}finally{this.isLoading=!1}}async bindProfile(n){if(n?.id||(n=this.profileSearched),n?.id)try{await this.authProfile.bindProfile(n)}catch(n){console.error("Error binding profile:",n),this.showToast("绑定身份失败,请重试","danger")}}async searchProfile(){if(this.profileList=[],this.pdata.name&&this.pdata.mobile){this.isLoading=!0;try{let n=new Parse.Query("Profile");n.include("company"),n.equalTo("name",this.pdata.name),n.equalTo("mobile",this.pdata.mobile),this.profileList=await n.find(),this.profileList?.length<1&&this.showToast("该身份不存在,无法绑定!","warning")}catch(n){console.error("Error searching profile:",n),this.showToast("查询身份失败,请重试","danger")}finally{this.isLoading=!1}}else this.showToast("请填写完整信息以查询您的身份","warning")}async selectProfile(n){if(!n?.id)return;this.profileSearched=n;const e=await this.modalController.create({component:ProfileConfirmModalComponent,componentProps:{profile:n}});await e.present();const{data:o}=await e.onWillDismiss();o?.confirmed&&this.bindProfile(n)}goProfileManage(){this.router.navigate(["/common/manage/Profile",{rid:"x6xybaLWIC"}])}async onShowModal(){const n=await this.alertController.create({header:"团队成员管理",message:"您是企业管理员,可进入添加团队成员身份",buttons:[{text:"取消",role:"cancel"},{text:"前往管理",handler:()=>{this.goProfileManage()}}]});await n.present()}async showToast(n,e="success"){const o=await this.toastController.create({message:n,duration:2e3,color:e,position:"top"});await o.present()}static{this.ɵfac=i0.ɵɵngDeclareFactory({minVersion:"12.0.0",version:"17.3.12",ngImport:i0,type:ProfileBindComponent,deps:[{token:i1.AuthProfileService},{token:i2.Router},{token:i3.AlertController},{token:i3.ToastController},{token:i4.CrossService},{token:i3.ModalController}],target:i0.ɵɵFactoryTarget.Component})}static{this.ɵcmp=i0.ɵɵngDeclareComponent({minVersion:"14.0.0",version:"17.3.12",type:ProfileBindComponent,selector:"fm-profile-bind",host:{listeners:{"window:resize":"onResize($event)"}},ngImport:i0,template:'<ion-content>\n <ng-container *ngIf="cross?.navMenuType == \'mobile\'; else desktopTemplate">\n <div class="ion-padding tips-block">\n <img src="https://file-cloud.fmode.cn/CCuWCEM24z/20231213/45hm71034653179.png" alt="" />\n <div>请使用电脑浏览器打开</div>\n </div>\n </ng-container>\n\n <ng-template #desktopTemplate>\n <div class="profile-page ion-padding">\n <div class="title">企业项目管理系统</div>\n \n <div class="date-container">\n <div class="date">{{ now | date : "yyyy年MM月dd日" }}</div>\n <ion-button *ngIf="user?.get(\'type\') == \'admin\'" fill="clear" size="small" (click)="onShowModal()">\n <ion-icon slot="start" name="people"></ion-icon>\n 企业管理员\n </ion-button>\n </div>\n\n <ng-container *ngIf="profileList?.length > 0; else noProfileTemplate">\n <h2>\n 欢迎您:{{\n profile?.get("name") ||\n this.profileList[0]?.get("name") ||\n user?.get("nickname") ||\n user?.get("name") ||\n user?.get("username")\n }},请选择您的企业身份:\n </h2>\n </ng-container>\n \n <ng-template #noProfileTemplate>\n <h2>您还未绑定企业,请先联系管理员绑定!</h2>\n </ng-template>\n\n <ion-list *ngIf="profileList?.length > 0" lines="full">\n <ion-item \n *ngFor="let p of profileList" \n button \n detail="false"\n [color]="currentProfile == p.id ? \'primary\' : \'\'"\n (click)="selectProfile(p)">\n <ion-icon slot="start" name="person" color="primary"></ion-icon>\n <ion-label>\n <h2>{{ p.get("name") }}</h2>\n <p>企业:{{ p.get("company")?.get("name") || p.get("company")?.get("title") }}</p>\n </ion-label>\n <ion-icon *ngIf="currentProfile == p.id" slot="end" name="checkmark" color="primary"></ion-icon>\n </ion-item>\n </ion-list>\n\n <div class="ion-margin-top ion-text-center">\n <ion-text color="medium">\n <ion-icon name="information-circle-outline"></ion-icon>\n 若无帐套信息,请输入企业身份验证绑定\n </ion-text>\n </div>\n\n <div class="form-container ion-margin-top">\n <ion-item>\n <ion-icon slot="start" name="person-outline"></ion-icon>\n <ion-input \n type="text" \n [(ngModel)]="pdata.name" \n placeholder="请输入您的姓名"\n clearInput>\n </ion-input>\n </ion-item>\n\n <ion-item>\n <ion-icon slot="start" name="phone-portrait-outline"></ion-icon>\n <ion-input \n type="tel" \n [(ngModel)]="pdata.mobile" \n placeholder="请输入您手机号"\n clearInput>\n </ion-input>\n </ion-item>\n\n <ion-button \n expand="block" \n (click)="searchProfile()"\n [disabled]="!pdata.name || !pdata.mobile"\n class="ion-margin-top">\n 查询身份\n <ion-spinner *ngIf="isLoading" name="crescent"></ion-spinner>\n </ion-button>\n </div>\n </div>\n </ng-template>\n</ion-content>',styles:[".profile-page{max-width:500px;margin:0 auto;padding-top:20px}.profile-page .title{font-size:24px;font-weight:700;text-align:center;margin-bottom:30px;color:var(--ion-color-primary)}.profile-page .date-container{display:flex;justify-content:space-between;align-items:center;margin-bottom:30px}.profile-page .date-container .date{font-size:16px;color:var(--ion-color-medium)}.profile-page h2{font-size:18px;color:var(--ion-color-dark);margin-bottom:20px}.profile-page ion-list{background:transparent;border-radius:8px;margin-bottom:20px}.profile-page ion-list ion-item{--border-radius: 8px;--padding-start: 10px;--inner-padding-end: 10px;margin-bottom:10px}.profile-page ion-list ion-item ion-label h2{font-weight:500;margin-bottom:5px}.profile-page ion-list ion-item ion-label p{color:var(--ion-color-medium);font-size:14px}.profile-page .form-container ion-item{--background: var(--ion-color-light);--border-radius: 8px;margin-bottom:15px}.tips-block{display:flex;flex-direction:column;align-items:center;justify-content:center;height:80vh;text-align:center}.tips-block img{width:220px;margin-bottom:20px}.tips-block div{font-size:18px;color:var(--ion-color-medium)}\n"],dependencies:[{kind:"directive",type:i5.NgForOf,selector:"[ngFor][ngForOf]",inputs:["ngForOf","ngForTrackBy","ngForTemplate"]},{kind:"directive",type:i5.NgIf,selector:"[ngIf]",inputs:["ngIf","ngIfThen","ngIfElse"]},{kind:"directive",type:i6.NgControlStatus,selector:"[formControlName],[ngModel],[formControl]"},{kind:"directive",type:i6.NgModel,selector:"[ngModel]:not([formControlName]):not([formControl])",inputs:["name","disabled","ngModel","ngModelOptions"],outputs:["ngModelChange"],exportAs:["ngModel"]},{kind:"component",type:i3.IonButton,selector:"ion-button",inputs:["buttonType","color","disabled","download","expand","fill","form","href","mode","rel","routerAnimation","routerDirection","shape","size","strong","target","type"]},{kind:"component",type:i3.IonContent,selector:"ion-content",inputs:["color","fixedSlotPlacement","forceOverscroll","fullscreen","scrollEvents","scrollX","scrollY"]},{kind:"component",type:i3.IonIcon,selector:"ion-icon",inputs:["color","flipRtl","icon","ios","lazy","md","mode","name","sanitize","size","src"]},{kind:"component",type:i3.IonInput,selector:"ion-input",inputs:["autocapitalize","autocomplete","autocorrect","autofocus","clearInput","clearInputIcon","clearOnEdit","color","counter","counterFormatter","debounce","disabled","enterkeyhint","errorText","fill","helperText","inputmode","label","labelPlacement","max","maxlength","min","minlength","mode","multiple","name","pattern","placeholder","readonly","required","shape","spellcheck","step","type","value"]},{kind:"component",type:i3.IonItem,selector:"ion-item",inputs:["button","color","detail","detailIcon","disabled","download","href","lines","mode","rel","routerAnimation","routerDirection","target","type"]},{kind:"component",type:i3.IonLabel,selector:"ion-label",inputs:["color","mode","position"]},{kind:"component",type:i3.IonList,selector:"ion-list",inputs:["inset","lines","mode"]},{kind:"component",type:i3.IonSpinner,selector:"ion-spinner",inputs:["color","duration","name","paused"]},{kind:"component",type:i3.IonText,selector:"ion-text",inputs:["color","mode"]},{kind:"directive",type:i3.TextValueAccessor,selector:"ion-input:not([type=number]),ion-textarea,ion-searchbar"},{kind:"pipe",type:i5.DatePipe,name:"date"}]})}}i0.ɵɵngDeclareClassMetadata({minVersion:"12.0.0",version:"17.3.12",ngImport:i0,type:ProfileBindComponent,decorators:[{type:Component,args:[{selector:"fm-profile-bind",template:'<ion-content>\n <ng-container *ngIf="cross?.navMenuType == \'mobile\'; else desktopTemplate">\n <div class="ion-padding tips-block">\n <img src="https://file-cloud.fmode.cn/CCuWCEM24z/20231213/45hm71034653179.png" alt="" />\n <div>请使用电脑浏览器打开</div>\n </div>\n </ng-container>\n\n <ng-template #desktopTemplate>\n <div class="profile-page ion-padding">\n <div class="title">企业项目管理系统</div>\n \n <div class="date-container">\n <div class="date">{{ now | date : "yyyy年MM月dd日" }}</div>\n <ion-button *ngIf="user?.get(\'type\') == \'admin\'" fill="clear" size="small" (click)="onShowModal()">\n <ion-icon slot="start" name="people"></ion-icon>\n 企业管理员\n </ion-button>\n </div>\n\n <ng-container *ngIf="profileList?.length > 0; else noProfileTemplate">\n <h2>\n 欢迎您:{{\n profile?.get("name") ||\n this.profileList[0]?.get("name") ||\n user?.get("nickname") ||\n user?.get("name") ||\n user?.get("username")\n }},请选择您的企业身份:\n </h2>\n </ng-container>\n \n <ng-template #noProfileTemplate>\n <h2>您还未绑定企业,请先联系管理员绑定!</h2>\n </ng-template>\n\n <ion-list *ngIf="profileList?.length > 0" lines="full">\n <ion-item \n *ngFor="let p of profileList" \n button \n detail="false"\n [color]="currentProfile == p.id ? \'primary\' : \'\'"\n (click)="selectProfile(p)">\n <ion-icon slot="start" name="person" color="primary"></ion-icon>\n <ion-label>\n <h2>{{ p.get("name") }}</h2>\n <p>企业:{{ p.get("company")?.get("name") || p.get("company")?.get("title") }}</p>\n </ion-label>\n <ion-icon *ngIf="currentProfile == p.id" slot="end" name="checkmark" color="primary"></ion-icon>\n </ion-item>\n </ion-list>\n\n <div class="ion-margin-top ion-text-center">\n <ion-text color="medium">\n <ion-icon name="information-circle-outline"></ion-icon>\n 若无帐套信息,请输入企业身份验证绑定\n </ion-text>\n </div>\n\n <div class="form-container ion-margin-top">\n <ion-item>\n <ion-icon slot="start" name="person-outline"></ion-icon>\n <ion-input \n type="text" \n [(ngModel)]="pdata.name" \n placeholder="请输入您的姓名"\n clearInput>\n </ion-input>\n </ion-item>\n\n <ion-item>\n <ion-icon slot="start" name="phone-portrait-outline"></ion-icon>\n <ion-input \n type="tel" \n [(ngModel)]="pdata.mobile" \n placeholder="请输入您手机号"\n clearInput>\n </ion-input>\n </ion-item>\n\n <ion-button \n expand="block" \n (click)="searchProfile()"\n [disabled]="!pdata.name || !pdata.mobile"\n class="ion-margin-top">\n 查询身份\n <ion-spinner *ngIf="isLoading" name="crescent"></ion-spinner>\n </ion-button>\n </div>\n </div>\n </ng-template>\n</ion-content>',styles:[".profile-page{max-width:500px;margin:0 auto;padding-top:20px}.profile-page .title{font-size:24px;font-weight:700;text-align:center;margin-bottom:30px;color:var(--ion-color-primary)}.profile-page .date-container{display:flex;justify-content:space-between;align-items:center;margin-bottom:30px}.profile-page .date-container .date{font-size:16px;color:var(--ion-color-medium)}.profile-page h2{font-size:18px;color:var(--ion-color-dark);margin-bottom:20px}.profile-page ion-list{background:transparent;border-radius:8px;margin-bottom:20px}.profile-page ion-list ion-item{--border-radius: 8px;--padding-start: 10px;--inner-padding-end: 10px;margin-bottom:10px}.profile-page ion-list ion-item ion-label h2{font-weight:500;margin-bottom:5px}.profile-page ion-list ion-item ion-label p{color:var(--ion-color-medium);font-size:14px}.profile-page .form-container ion-item{--background: var(--ion-color-light);--border-radius: 8px;margin-bottom:15px}.tips-block{display:flex;flex-direction:column;align-items:center;justify-content:center;height:80vh;text-align:center}.tips-block img{width:220px;margin-bottom:20px}.tips-block div{font-size:18px;color:var(--ion-color-medium)}\n"]}]}],ctorParameters:()=>[{type:i1.AuthProfileService},{type:i2.Router},{type:i3.AlertController},{type:i3.ToastController},{type:i4.CrossService},{type:i3.ModalController}],propDecorators:{onResize:[{type:HostListener,args:["window:resize",["$event"]]}]}});
  8. var MODULE_PATH_NEED = `6K+l5paH5Lu25piv5pys6aG555uu55qE5LiA6YOo5YiGIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBDb21wb25lbnRzIGluIEZtb2RlIEluYy4KICAgIOeJiOadg+aJgOaciSDCqSDmnKrmnaXpo57pqawgwqkg5rGf6KW/6ISR5o6n56eR5oqA5pyJ6ZmQ5YWs5Y+4IENvcHlyaWdodCDCqSBGbW9kZSBUZWNobm9sb2d5IENvLiwgTHRkLgogICAg5L+d55WZ5omA5pyJ5p2D5YipIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICDkuKXnpoHlnKjmnKrnu4/mjojmnYPnmoTmg4XlhrXkuIvvvIzpgJrov4fku7vkvZXlqpLku4vlpI3liLbmraTmlofku7YgVW5hdXRob3JpemVkIGNvcHlpbmcgb2YgdGhpcyBmaWxlLCB2aWEgYW55IG1lZGl1bSBpcyBzdHJpY3RseSBwcm9oaWJpdGVkCiAgICDor6Xmlofku7bmmK/kuJPmnInnmoTmnLrlr4bmlofku7YgUHJvcHJpZXRhcnkgYW5kIGNvbmZpZGVudGlhbAogICAKICAgIENvcHlyaWdodCAyMDIxLW5vdyBGbW9kZSBJbmMuIHN1cHBvcnRAZm1vZGUuY24uIDE4NjA3MDA3MDczLgogICAg5L+d55WZ5omA5pyJ5p2D5YipIEFsbCByaWdodHMgcmVzZXJ2ZWQuCgogICAgUEFUSDovaG9tZS9yeWFuL3dvcmtzcGFjZS9ub3ZhL25vdmEtYWRtaW4vZGlzdC9mbW9kZS1uZy9lc20yMDIyL2xpYi91c2VyL3Byb2ZpbGUvcHJvZmlsZS1iaW5kL3Byb2ZpbGUtYmluZC5jb21wb25lbnQubWpz`