Merge branch 'feature/partner' of https://gitlab.eascs.com/tms-ui/tms-obc-web into feature/partner
This commit is contained in:
		| @ -16,16 +16,16 @@ | ||||
|     </ng-template> | ||||
|  | ||||
|     <!-- 企业法人信息 --> | ||||
|     <ng-template sf-template="legalPersonIdentityDTO/_legalPersontitle" let-me let-ui="ui" let-schema="schema"> | ||||
|       <div class="form-title" style="margin-top: 40px;margin-left: -180px;">营业执照法人信息</div> | ||||
|     <ng-template sf-template="legalPersonIdentity/_legalPersontitle" let-me let-ui="ui" let-schema="schema"> | ||||
|       <div class="form-title" style="margin-top: 40px; margin-left: -180px">营业执照法人信息</div> | ||||
|     </ng-template> | ||||
|     <ng-template sf-template="legalPersonIdentityDTO/_certificatePhototips" let-me let-ui="ui" let-schema="schema"> | ||||
|     <ng-template sf-template="legalPersonIdentity/_certificatePhototips" let-me let-ui="ui" let-schema="schema"> | ||||
|       <div class="pr"> | ||||
|         <div>请上传身份证原件的高清照片,若上传复印件,则需申请人签字;</div> | ||||
|         <div>上传后系统会自动识别并填写</div> | ||||
|       </div> | ||||
|     </ng-template> | ||||
|     <ng-template sf-template="legalPersonIdentityDTO/_certificatePhotoExmplateA" let-me let-ui="ui" let-schema="schema"> | ||||
|     <ng-template sf-template="legalPersonIdentity/_certificatePhotoExmplateA" let-me let-ui="ui" let-schema="schema"> | ||||
|       <div class="pr"> | ||||
|         <dl class="tips"> | ||||
|           <dt>正面照(人像面)</dt> | ||||
| @ -34,7 +34,7 @@ | ||||
|         <div class="pa"><img width="190" src="./assets/images/usercenter/certificate-demo-front.png" /></div> | ||||
|       </div> | ||||
|     </ng-template> | ||||
|     <ng-template sf-template="legalPersonIdentityDTO/_certificatePhotoExmplateB" let-me let-ui="ui" let-schema="schema"> | ||||
|     <ng-template sf-template="legalPersonIdentity/_certificatePhotoExmplateB" let-me let-ui="ui" let-schema="schema"> | ||||
|       <div class="pr"> | ||||
|         <dl class="tips"> | ||||
|           <dt>背面照(国徽面)</dt> | ||||
| @ -45,8 +45,8 @@ | ||||
|     </ng-template> | ||||
|  | ||||
|     <!-- 企业管理员信息 --> | ||||
|     <ng-template sf-template="adminUserInfo/_adminTitle" let-me let-ui="ui" let-schema="schema"> | ||||
|       <div class="form-title" style="margin-top: 40px;margin-left: -180px;">企业管理员信息</div> | ||||
|     <ng-template sf-template="_adminTitle" let-me let-ui="ui" let-schema="schema"> | ||||
|       <div class="form-title" style="margin-top: 40px; margin-left: -180px">企业管理员信息</div> | ||||
|     </ng-template> | ||||
|     <ng-template sf-template="adminUserInfo/_adminCertificatePhotoTipsA" let-me let-ui="ui" let-schema="schema"> | ||||
|       <div class="pr"> | ||||
| @ -69,19 +69,17 @@ | ||||
|  | ||||
|     <!-- 所属城市 --> | ||||
|     <ng-template sf-template="_addressTitle" let-me let-ui="ui" let-schema="schema"> | ||||
|       <div class="form-title" style="margin-top: 40px;margin-left: -180px;">所属城市</div> | ||||
|       <div class="form-title" style="margin-top: 40px; margin-left: -180px">所属城市</div> | ||||
|     </ng-template> | ||||
|  | ||||
|     <!-- 渠道销售 --> | ||||
|     <ng-template sf-template="_channelTitle" let-me let-ui="ui" let-schema="schema"> | ||||
|       <div class="form-title" style="margin-top: 40px;margin-left: -180px;">渠道销售</div> | ||||
|       <div class="form-title" style="margin-top: 40px; margin-left: -180px">渠道销售</div> | ||||
|     </ng-template> | ||||
|   </sf> | ||||
|  | ||||
|  | ||||
|   <div style="display: flex;justify-content: center;"> | ||||
|     <button nz-button type="button" nzType="primary" (click)="submitForm()" | ||||
|       [nzLoading]="service.http.loading">确认新增</button> | ||||
|   <div style="display: flex; justify-content: center"> | ||||
|     <button nz-button type="button" nzType="primary" (click)="submitForm()" [nzLoading]="service.http.loading">确认新增</button> | ||||
|     <button nz-button (click)="goBack()">返回</button> | ||||
|   </div> | ||||
| </nz-card> | ||||
| @ -1,19 +1,19 @@ | ||||
| import { Component, OnInit, ViewChild } from '@angular/core'; | ||||
| import { Router } from '@angular/router'; | ||||
| import { Component, ViewChild } from '@angular/core'; | ||||
| import { apiConf } from '@conf/api.conf'; | ||||
| import { | ||||
|   SFUploadWidgetSchema, | ||||
|   SFComponent, | ||||
|   SFSchema, | ||||
|   SFUISchema, | ||||
|   SFCascaderWidgetSchema, | ||||
|   SFTextareaWidgetSchema, | ||||
|   SFDateWidgetSchema, | ||||
|   SFCheckboxWidgetSchema, | ||||
|   SFTreeSelectWidgetSchema | ||||
| } from '@delon/form'; | ||||
| import { NzTreeNode } from 'ng-zorro-antd/tree'; | ||||
| import { NzUploadFile } from 'ng-zorro-antd/upload'; | ||||
| import { of } from 'rxjs'; | ||||
| import { map } from 'rxjs/operators'; | ||||
|  | ||||
| import { PartnerListService } from '../../services/partner-list.service'; | ||||
|  | ||||
| const IMAGECONFIG = { | ||||
| @ -43,7 +43,7 @@ const DATECONFIG = { | ||||
|   templateUrl: './add-etp-partner.component.html', | ||||
|   styleUrls: ['./add-etp-partner.component.less'] | ||||
| }) | ||||
| export class AddEtpPartnerComponent implements OnInit { | ||||
| export class AddEtpPartnerComponent { | ||||
|   @ViewChild('sf', { static: false }) | ||||
|   sf!: SFComponent; | ||||
|   schema: SFSchema = this.initBasicInfoSF(); | ||||
| @ -64,66 +64,54 @@ export class AddEtpPartnerComponent implements OnInit { | ||||
|     } | ||||
|   }; | ||||
|  | ||||
|   constructor(private router: Router, public service: PartnerListService) {} | ||||
|   ngOnInit() {} | ||||
|   constructor(public service: PartnerListService) {} | ||||
|  | ||||
|   submitForm() { | ||||
|     if (!this.sf.valid ) { | ||||
|     if (!this.sf.valid) { | ||||
|       this.sf.validator({ emitError: true }); | ||||
|       this.service.msgSrv.warning('请修改填写错误信息'); | ||||
|       return; | ||||
|     } | ||||
|     const enterpriseRegistrationTime = new Date(this.sf.value.enterpriseRegistrationTime); | ||||
|     const operatingStartTime = new Date(this.sf.value.operatingStartTime); | ||||
|     if (enterpriseRegistrationTime.getTime() > operatingStartTime.getTime()) { | ||||
|       this.service.msgSrv.warning('营业期限不能小于成立日期'); | ||||
|     if (this.sf.value.cityCodesList?.length > 3) { | ||||
|       this.sf.validator({ emitError: true }); | ||||
|       this.service.msgSrv.warning('所属城市不能超过3个'); | ||||
|       return; | ||||
|     } | ||||
|     if (this.sf.value.operatingEndTime) { | ||||
|     // 校验企业营业期限 | ||||
|     const operatingStartTime = new Date(this.sf.value.operatingStartTime); | ||||
|     const operatingEndTime = new Date(this.sf.value.operatingEndTime); | ||||
|     if (operatingStartTime.getTime() > operatingEndTime.getTime()) { | ||||
|         this.service.msgSrv.warning('营业期限不能小于期限开始日期'); | ||||
|       this.service.msgSrv.warning('营业截止日期不能小于开始日期'); | ||||
|       return; | ||||
|     } | ||||
|     } | ||||
|     const validStartTime = new Date(this.sf.value.legalPersonIdentityDTO.validStartTime); | ||||
|     if (this.sf.value.legalPersonIdentityDTO.validEndTime) { | ||||
|       const validEndTime = new Date(this.sf.value.legalPersonIdentityDTO.validEndTime); | ||||
|     // 校验法人证件有效期限 | ||||
|     if (this.sf.value.legalPersonIdentity.validEndTime) { | ||||
|       const validStartTime = new Date(this.sf.value.legalPersonIdentity.validStartTime); | ||||
|       const validEndTime = new Date(this.sf.value.legalPersonIdentity.validEndTime); | ||||
|       if (validStartTime.getTime() > validEndTime.getTime()) { | ||||
|         this.service.msgSrv.warning('法人证件有效截止日期小于开始日期'); | ||||
|         this.service.msgSrv.warning('法人证件有效截止日期不能小于开始日期'); | ||||
|         return; | ||||
|       } | ||||
|     } | ||||
|     // 校验管理员证件有效期限 | ||||
|     if (this.sf.value.adminUserInfo.validEndTime) { | ||||
|       const validStartTime = new Date(this.sf.value.adminUserInfo.validStartTime); | ||||
|       const validEndTime = new Date(this.sf.value.adminUserInfo.validEndTime); | ||||
|       if (validStartTime.getTime() > validEndTime.getTime()) { | ||||
|         this.service.msgSrv.warning('管理员证件有效截止日期小于开始日期'); | ||||
|         return; | ||||
|       } | ||||
|     } | ||||
|     const sfVlaue = this.sf.value; | ||||
|     const params = {}; | ||||
|     Object.assign( | ||||
|       params, | ||||
|       { ...this.sf.value }, | ||||
|       { | ||||
|         enterpriseAddressCode: this.sf.value.enterpriseAddressCode[2], | ||||
|         oftenUsedServices: sfVlaue.oftenUsedServices, | ||||
|         registerAddress: sfVlaue.registerAddress, | ||||
|         registerPhone: sfVlaue.registerPhone, | ||||
|         creditPhoto: sfVlaue.creditPhoto, | ||||
|         creditPhotoWatermark: sfVlaue.creditPhotoWatermark, | ||||
|         promotersTelephone: sfVlaue.promotersTelephone, | ||||
|         networkTransporter: sfVlaue.networkTransporter, | ||||
|         adminUserInfo: { | ||||
|           certificateNumber: sfVlaue.certificateNumber, | ||||
|           certificatePhotoBack: sfVlaue.certificatePhotoBack, | ||||
|           certificatePhotoBackWatermark: sfVlaue.certificatePhotoBackWatermark, | ||||
|           certificatePhotoFront: sfVlaue.certificatePhotoFront, | ||||
|           certificatePhotoFrontWatermark: sfVlaue.certificatePhotoFrontWatermark, | ||||
|           name: sfVlaue.name | ||||
|     Object.assign(params, { ...this.sf.value, source: 2 }); | ||||
|     // console.log(params); | ||||
|  | ||||
|     this.service.request(this.service.$api_save_entp_partner, params).subscribe(res => { | ||||
|       if (res) { | ||||
|         this.service.msgSrv.success('新增企业合伙人成功'); | ||||
|         this.goBack(); | ||||
|       } | ||||
|       } | ||||
|     ); | ||||
|     // this.service.request(this.service.$api_save_enterprise_admin, params).subscribe(res => { | ||||
|     //   if (res) { | ||||
|     //     this.service.msgSrv.success('企业新增成功'); | ||||
|     //     this.goBack(); | ||||
|     //   } | ||||
|     // }); | ||||
|     }); | ||||
|   } | ||||
|  | ||||
|   /* | ||||
| @ -146,23 +134,23 @@ export class AddEtpPartnerComponent implements OnInit { | ||||
|           if (isFront === 'front') { | ||||
|             // 正面 | ||||
|             if (res.name) { | ||||
|               this.sf.setValue('/legalPersonIdentityDTO/name', res.name); | ||||
|               this.sf.setValue('/legalPersonIdentity/name', res.name); | ||||
|             } | ||||
|             if (res.number) { | ||||
|               this.sf.setValue('/legalPersonIdentityDTO/certificateType', 0); | ||||
|               this.sf.setValue('/legalPersonIdentityDTO/certificateNumber', res.number); | ||||
|               this.sf.setValue('/legalPersonIdentity/certificateType', 0); | ||||
|               this.sf.setValue('/legalPersonIdentity/certificateNumber', res.number); | ||||
|             } | ||||
|           } | ||||
|           if (isFront === 'back') { | ||||
|             // 背面 | ||||
|             if (res.validFrom) { | ||||
|               this.sf.setValue('/legalPersonIdentityDTO/validStartTime', res.validFrom); | ||||
|               this.sf.setValue('/legalPersonIdentity/validStartTime', res.validFrom); | ||||
|             } | ||||
|             if (res.validTo) { | ||||
|               this.sf.setValue('/legalPersonIdentityDTO/validEndTime', res.validTo); | ||||
|               this.sf.setValue('/legalPersonIdentityDTO/_isLoingDate', false); | ||||
|               this.sf.setValue('/legalPersonIdentity/validEndTime', res.validTo); | ||||
|               this.sf.setValue('/legalPersonIdentity/_isLoingDate', false); | ||||
|             } else { | ||||
|               this.sf.setValue('/legalPersonIdentityDTO/_isLoingDate', true); | ||||
|               this.sf.setValue('/legalPersonIdentity/_isLoingDate', true); | ||||
|             } | ||||
|           } | ||||
|         } | ||||
| @ -171,10 +159,22 @@ export class AddEtpPartnerComponent implements OnInit { | ||||
|           if (isFront === 'front') { | ||||
|             // 正面 | ||||
|             if (res.name) { | ||||
|               this.sf.setValue('/name', res.name); | ||||
|               this.sf.setValue('/adminUserInfo/name', res.name); | ||||
|             } | ||||
|             if (res.number) { | ||||
|               this.sf.setValue('/certificateNumber', res.number); | ||||
|               this.sf.setValue('/adminUserInfo/certificateNumber', res.number); | ||||
|             } | ||||
|           } | ||||
|           if (isFront === 'back') { | ||||
|             // 背面 | ||||
|             if (res.validFrom) { | ||||
|               this.sf.setValue('/adminUserInfo/validStartTime', res.validFrom); | ||||
|             } | ||||
|             if (res.validTo) { | ||||
|               this.sf.setValue('/adminUserInfo/validEndTime', res.validTo); | ||||
|               this.sf.setValue('/adminUserInfo/_isLoingDate', false); | ||||
|             } else { | ||||
|               this.sf.setValue('/adminUserInfo/_isLoingDate', true); | ||||
|             } | ||||
|           } | ||||
|         } | ||||
| @ -192,29 +192,15 @@ export class AddEtpPartnerComponent implements OnInit { | ||||
|         if (res.name) { | ||||
|           this.sf.setValue('/enterpriseName', res.name); | ||||
|         } | ||||
|         if (res.type) { | ||||
|           this.sf.setValue('/enterpriseType', res.type); | ||||
|         } | ||||
|         if (res.addressRegionCodes) { | ||||
|           this.sf.setValue('/enterpriseAddressCode', res.addressRegionCodes); | ||||
|         } | ||||
|         if (res.address) { | ||||
|           this.sf.setValue('/enterpriseAddress', res.address); | ||||
|         } | ||||
|         if (res.foundDate) { | ||||
|           this.sf.setValue('/enterpriseRegistrationTime', res.foundDate); | ||||
|         } | ||||
|         if (res.businessTermStartDate) { | ||||
|           this.sf.setValue('/operatingStartTime', res.businessTermStartDate); | ||||
|         } | ||||
|         if (res.businessTermEndDate) { | ||||
|           this.sf.setValue('/operatingEndTime', res.businessTermEndDate); | ||||
|           this.sf.setValue('/_isLoingDate', false); | ||||
|         } else { | ||||
|           this.sf.setValue('/_isLoingDate', true); | ||||
|         } | ||||
|         if (res.businessScope) { | ||||
|           this.sf.setValue('/businessScope', res.businessScope); | ||||
|         } | ||||
|       } | ||||
|     }); | ||||
|   } | ||||
| @ -308,7 +294,7 @@ export class AddEtpPartnerComponent implements OnInit { | ||||
|         }, | ||||
|  | ||||
|         // 法人信息 | ||||
|         legalPersonIdentityDTO: { | ||||
|         legalPersonIdentity: { | ||||
|           type: 'object', | ||||
|           properties: { | ||||
|             _legalPersontitle: { title: '', type: 'string', ui: { widget: 'custom' } }, | ||||
| @ -322,7 +308,7 @@ export class AddEtpPartnerComponent implements OnInit { | ||||
|                 descriptionI18n: '图片支持jpg、jpeg、png、gif格式,大小不超过5M', | ||||
|                 change: args => { | ||||
|                   if (args.type === 'success') { | ||||
|                     this.sf.setValue('/legalPersonIdentityDTO/certificatePhotoFront', args.fileList[0].response.data.fullFilePath); | ||||
|                     this.sf.setValue('/legalPersonIdentity/certificatePhotoFront', args.fileList[0].response.data.fullFilePath); | ||||
|                     this.checkIdCard(args.fileList[0].response.data.fullFilePath, 'front', 1); | ||||
|                   } | ||||
|                 } | ||||
| @ -339,7 +325,7 @@ export class AddEtpPartnerComponent implements OnInit { | ||||
|                 descriptionI18n: '图片支持jpg、jpeg、png、gif格式,大小不超过5M', | ||||
|                 change: args => { | ||||
|                   if (args.type === 'success') { | ||||
|                     this.sf.setValue('/legalPersonIdentityDTO/certificatePhotoBack', args.fileList[0].response.data.fullFilePath); | ||||
|                     this.sf.setValue('/legalPersonIdentity/certificatePhotoBack', args.fileList[0].response.data.fullFilePath); | ||||
|                     this.checkIdCard(args.fileList[0].response.data.fullFilePath, 'back', 1); | ||||
|                   } | ||||
|                 } | ||||
| @ -404,7 +390,7 @@ export class AddEtpPartnerComponent implements OnInit { | ||||
|                   required: '请选择截止日期' | ||||
|                 }, | ||||
|                 change: i => { | ||||
|                   this.sf?.setValue('/legalPersonIdentityDTO/_isLoingDate', false); | ||||
|                   this.sf?.setValue('/legalPersonIdentity/_isLoingDate', false); | ||||
|                 } | ||||
|               } as SFDateWidgetSchema | ||||
|             }, | ||||
| @ -416,7 +402,7 @@ export class AddEtpPartnerComponent implements OnInit { | ||||
|                 grid: { span: 6 }, | ||||
|                 class: 'input-back', | ||||
|                 widget: 'checkbox', | ||||
|                 change: i => this.sf?.setValue('/legalPersonIdentityDTO/validEndTime', null) | ||||
|                 change: i => this.sf?.setValue('/legalPersonIdentity/validEndTime', null) | ||||
|               } as SFCheckboxWidgetSchema | ||||
|             } | ||||
|           }, | ||||
| @ -430,10 +416,6 @@ export class AddEtpPartnerComponent implements OnInit { | ||||
|             'validStartTime' | ||||
|           ] | ||||
|         }, | ||||
|         // 企业管理员信息 | ||||
|         adminUserInfo: { | ||||
|           type: 'object', | ||||
|           properties: { | ||||
|         _adminTitle: { title: '', type: 'string', ui: { widget: 'custom' } }, | ||||
|         adminMobile: { | ||||
|           title: ' 企业管理员手机号', | ||||
| @ -447,6 +429,10 @@ export class AddEtpPartnerComponent implements OnInit { | ||||
|             errors: { required: '请输入企业管理员手机号', format: '手机号格式错误' } | ||||
|           } | ||||
|         }, | ||||
|         // 企业管理员信息 | ||||
|         adminUserInfo: { | ||||
|           type: 'object', | ||||
|           properties: { | ||||
|             _adminCertificatePhotoTipsA: { | ||||
|               title: '企业管理员证件照', | ||||
|               type: 'string', | ||||
| @ -465,7 +451,7 @@ export class AddEtpPartnerComponent implements OnInit { | ||||
|                 descriptionI18n: '图片支持jpg、jpeg、png、gif格式,大小不超过5M', | ||||
|                 change: args => { | ||||
|                   if (args.type === 'success') { | ||||
|                     this.sf.setValue('/certificatePhotoFront', args.fileList[0].response.data.fullFilePath); | ||||
|                     this.sf.setValue('/adminUserInfo/certificatePhotoFront', args.fileList[0].response.data.fullFilePath); | ||||
|                     this.checkIdCard(args.fileList[0].response.data.fullFilePath, 'front', 0); | ||||
|                   } | ||||
|                 } | ||||
| @ -487,7 +473,8 @@ export class AddEtpPartnerComponent implements OnInit { | ||||
|                 descriptionI18n: '图片支持jpg、jpeg、png、gif格式,大小不超过5M', | ||||
|                 change: args => { | ||||
|                   if (args.type === 'success') { | ||||
|                     this.sf.setValue('/certificatePhotoBack', args.fileList[0].response.data.fullFilePath); | ||||
|                     this.sf.setValue('/adminUserInfo/certificatePhotoBack', args.fileList[0].response.data.fullFilePath); | ||||
|                     this.checkIdCard(args.fileList[0].response.data.fullFilePath, 'back', 0); | ||||
|                   } | ||||
|                 } | ||||
|               } as SFUploadWidgetSchema | ||||
| @ -512,7 +499,7 @@ export class AddEtpPartnerComponent implements OnInit { | ||||
|                 placeholder: '请输入企业管理员身份证号' | ||||
|               } | ||||
|             }, | ||||
|             operatingStartTime: { | ||||
|             validStartTime: { | ||||
|               title: '身份证有效开始日期', | ||||
|               type: 'string', | ||||
|               ui: { | ||||
| @ -523,7 +510,7 @@ export class AddEtpPartnerComponent implements OnInit { | ||||
|                 } | ||||
|               } as SFDateWidgetSchema | ||||
|             }, | ||||
|             operatingEndTime: { | ||||
|             validEndTime: { | ||||
|               title: '身份证有效截止日期', | ||||
|               type: 'string', | ||||
|               ui: { | ||||
| @ -545,34 +532,38 @@ export class AddEtpPartnerComponent implements OnInit { | ||||
|                 grid: { span: 6 }, | ||||
|                 class: 'input-back', | ||||
|                 widget: 'checkbox', | ||||
|                 change: i => this.sf?.setValue('/adminUserInfo/operatingEndTime', null) | ||||
|                 change: i => this.sf?.setValue('/adminUserInfo/validEndTime', null) | ||||
|               } as SFCheckboxWidgetSchema | ||||
|             } | ||||
|           }, | ||||
|           required: ['_adminCertificatePhotoTipsA', 'adminMobile', 'name', 'certificateNumber','operatingStartTime'] | ||||
|           required: ['_adminCertificatePhotoTipsA', 'name', 'certificateNumber', 'operatingStartTime'] | ||||
|         }, | ||||
|         // 所属城市 | ||||
|         _addressTitle: { title: '', type: 'string', ui: { widget: 'custom' } }, | ||||
|         status3: { | ||||
|         cityCodesList: { | ||||
|           type: 'string', | ||||
|           title: '所属城市', | ||||
|           default: ['WAIT_BUYER_PAY', 'TRADE_FINISHED'], | ||||
|           ui: { | ||||
|             widget: 'tree-select', | ||||
|             grid: { xxl: 13, xl: 18, lg: 24, md: 24 }, | ||||
|             placeholder: '请选择城市(最多3个)', | ||||
|             checkable: true, | ||||
|             class: 'city-tree-select', | ||||
|             asyncData: () => | ||||
|               of([ | ||||
|                 { title: '待支付', key: 'WAIT_BUYER_PAY' }, | ||||
|                 { title: '已支付', key: 'TRADE_SUCCESS' }, | ||||
|                 { title: '交易完成', key: 'TRADE_FINISHED' } | ||||
|               ]) | ||||
|           } as SFTreeSelectWidgetSchema, | ||||
|               this.getRegionDetailByCode('').pipe( | ||||
|                 map((res: any) => | ||||
|                   res.map((item: any) => ({ ...item, title: item.name, key: item.regionCode, disabled: true, isDisableCheckbox: true })) | ||||
|                 ) | ||||
|               ), | ||||
|             expandChange: ({ node }: { node: NzTreeNode }) => | ||||
|               this.getRegionDetailByCode(node.key).pipe( | ||||
|                 map((res: any) => res.map((item: any) => ({ ...item, title: item.name, key: item.regionCode, isLeaf: true }))) | ||||
|               ) | ||||
|           } as SFTreeSelectWidgetSchema | ||||
|         }, | ||||
|         // 渠道销售 | ||||
|         _channelTitle: { title: '', type: 'string', ui: { widget: 'custom' } }, | ||||
|         channel: { | ||||
|         invitationCode: { | ||||
|           title: '渠道销售邀请码', | ||||
|           type: 'string', | ||||
|           minLength: 1, | ||||
| @ -586,7 +577,16 @@ export class AddEtpPartnerComponent implements OnInit { | ||||
|           } | ||||
|         } | ||||
|       }, | ||||
|       required: ['_licenseTips', 'licensePhotoWatermark', 'unifiedSocialCreditCode', 'enterpriseName', 'operatingStartTime', 'status3','channel'] | ||||
|       required: [ | ||||
|         '_licenseTips', | ||||
|         'licensePhotoWatermark', | ||||
|         'unifiedSocialCreditCode', | ||||
|         'enterpriseName', | ||||
|         'operatingStartTime', | ||||
|         'cityCodesList', | ||||
|         'adminMobile', | ||||
|         'invitationCode' | ||||
|       ] | ||||
|     }; | ||||
|   } | ||||
| } | ||||
|  | ||||
| @ -3,7 +3,7 @@ | ||||
|   <sf #sf [ui]="ui" [schema]="schema" [button]="'none'"> | ||||
|     <!-- 合伙人信息 --> | ||||
|     <ng-template sf-template="adminUserInfo/_adminTitle" let-me let-ui="ui" let-schema="schema"> | ||||
|             <div class="form-title" style="margin-top: 40px;margin-left: -180px;">合伙人信息</div> | ||||
|       <div class="form-title" style="margin-top: 40px; margin-left: -180px">合伙人信息</div> | ||||
|     </ng-template> | ||||
|     <ng-template sf-template="adminUserInfo/_adminCertificatePhotoTipsA" let-me let-ui="ui" let-schema="schema"> | ||||
|       <div class="pr"> | ||||
| @ -26,19 +26,17 @@ | ||||
|  | ||||
|     <!-- 所属城市 --> | ||||
|     <ng-template sf-template="_addressTitle" let-me let-ui="ui" let-schema="schema"> | ||||
|             <div class="form-title" style="margin-top: 40px;margin-left: -180px;">所属城市</div> | ||||
|       <div class="form-title" style="margin-top: 40px; margin-left: -180px">所属城市</div> | ||||
|     </ng-template> | ||||
|  | ||||
|     <!-- 渠道销售 --> | ||||
|     <ng-template sf-template="_channelTitle" let-me let-ui="ui" let-schema="schema"> | ||||
|             <div class="form-title" style="margin-top: 40px;margin-left: -180px;">渠道销售</div> | ||||
|       <div class="form-title" style="margin-top: 40px; margin-left: -180px">渠道销售</div> | ||||
|     </ng-template> | ||||
|   </sf> | ||||
|  | ||||
|  | ||||
|     <div style="display: flex;justify-content: center;"> | ||||
|         <button nz-button type="button" nzType="primary" (click)="submitForm()" | ||||
|             [nzLoading]="service.http.loading">确认新增</button> | ||||
|   <div style="display: flex; justify-content: center"> | ||||
|     <button nz-button type="button" nzType="primary" (click)="submitForm()" [nzLoading]="service.http.loading">确认新增</button> | ||||
|     <button nz-button (click)="goBack()">返回</button> | ||||
|   </div> | ||||
| </nz-card> | ||||
| @ -1,9 +1,20 @@ | ||||
| import { Component, OnInit, ViewChild } from '@angular/core'; | ||||
| import { Component, ViewChild } from '@angular/core'; | ||||
| import { Router } from '@angular/router'; | ||||
| import { apiConf } from '@conf/api.conf'; | ||||
| import { SFUploadWidgetSchema, SFComponent, SFSchema, SFUISchema, SFDateWidgetSchema, SFCheckboxWidgetSchema, SFTreeSelectWidgetSchema } from '@delon/form'; | ||||
| import { | ||||
|   SFUploadWidgetSchema, | ||||
|   SFComponent, | ||||
|   SFSchema, | ||||
|   SFUISchema, | ||||
|   SFDateWidgetSchema, | ||||
|   SFCheckboxWidgetSchema, | ||||
|   SFTreeSelectWidgetSchema | ||||
| } from '@delon/form'; | ||||
| import { NzTreeNode } from 'ng-zorro-antd/tree'; | ||||
| import { NzUploadFile } from 'ng-zorro-antd/upload'; | ||||
| import { of } from 'rxjs'; | ||||
| import { map } from 'rxjs/operators'; | ||||
|  | ||||
| import { PartnerListService } from '../../services/partner-list.service'; | ||||
|  | ||||
| const IMAGECONFIG = { | ||||
| @ -33,7 +44,7 @@ const DATECONFIG = { | ||||
|   templateUrl: './add-personal-partner.component.html', | ||||
|   styleUrls: ['./add-personal-partner.component.less'] | ||||
| }) | ||||
| export class AddPersonalPartnerComponent implements OnInit { | ||||
| export class AddPersonalPartnerComponent { | ||||
|   @ViewChild('sf', { static: false }) | ||||
|   sf!: SFComponent; | ||||
|   schema: SFSchema = this.initBasicInfoSF(); | ||||
| @ -55,7 +66,6 @@ export class AddPersonalPartnerComponent implements OnInit { | ||||
|   }; | ||||
|  | ||||
|   constructor(private router: Router, public service: PartnerListService) {} | ||||
|   ngOnInit() {} | ||||
|  | ||||
|   submitForm() { | ||||
|     if (!this.sf.valid) { | ||||
| @ -63,57 +73,28 @@ export class AddPersonalPartnerComponent implements OnInit { | ||||
|       this.service.msgSrv.warning('请修改填写错误信息'); | ||||
|       return; | ||||
|     } | ||||
|     const enterpriseRegistrationTime = new Date(this.sf.value.enterpriseRegistrationTime); | ||||
|     const operatingStartTime = new Date(this.sf.value.operatingStartTime); | ||||
|     if (enterpriseRegistrationTime.getTime() > operatingStartTime.getTime()) { | ||||
|       this.service.msgSrv.warning('营业期限不能小于成立日期'); | ||||
|     if (this.sf.value.cityCodesList?.length > 3) { | ||||
|       this.sf.validator({ emitError: true }); | ||||
|       this.service.msgSrv.warning('所属城市不能超过3个'); | ||||
|       return; | ||||
|     } | ||||
|     if (this.sf.value.operatingEndTime) { | ||||
|       const operatingEndTime = new Date(this.sf.value.operatingEndTime); | ||||
|       if (operatingStartTime.getTime() > operatingEndTime.getTime()) { | ||||
|         this.service.msgSrv.warning('营业期限不能小于期限开始日期'); | ||||
|         return; | ||||
|       } | ||||
|     } | ||||
|     const validStartTime = new Date(this.sf.value.legalPersonIdentityDTO.validStartTime); | ||||
|     if (this.sf.value.legalPersonIdentityDTO.validEndTime) { | ||||
|       const validEndTime = new Date(this.sf.value.legalPersonIdentityDTO.validEndTime); | ||||
|     if (this.sf.value.validEndTime) { | ||||
|       const validStartTime = new Date(this.sf.value.validStartTime); | ||||
|       const validEndTime = new Date(this.sf.value.validEndTime); | ||||
|       if (validStartTime.getTime() > validEndTime.getTime()) { | ||||
|         this.service.msgSrv.warning('法人证件有效截止日期小于开始日期'); | ||||
|         this.service.msgSrv.warning('身份证有效截止日期不能小于开始日期'); | ||||
|         return; | ||||
|       } | ||||
|     } | ||||
|     const sfVlaue = this.sf.value; | ||||
|     const params = {}; | ||||
|     Object.assign( | ||||
|       params, | ||||
|       { ...this.sf.value }, | ||||
|       { | ||||
|         enterpriseAddressCode: this.sf.value.enterpriseAddressCode[2], | ||||
|         oftenUsedServices: sfVlaue.oftenUsedServices, | ||||
|         registerAddress: sfVlaue.registerAddress, | ||||
|         registerPhone: sfVlaue.registerPhone, | ||||
|         creditPhoto: sfVlaue.creditPhoto, | ||||
|         creditPhotoWatermark: sfVlaue.creditPhotoWatermark, | ||||
|         promotersTelephone: sfVlaue.promotersTelephone, | ||||
|         networkTransporter: sfVlaue.networkTransporter, | ||||
|         adminUserInfo: { | ||||
|           certificateNumber: sfVlaue.certificateNumber, | ||||
|           certificatePhotoBack: sfVlaue.certificatePhotoBack, | ||||
|           certificatePhotoBackWatermark: sfVlaue.certificatePhotoBackWatermark, | ||||
|           certificatePhotoFront: sfVlaue.certificatePhotoFront, | ||||
|           certificatePhotoFrontWatermark: sfVlaue.certificatePhotoFrontWatermark, | ||||
|           name: sfVlaue.name | ||||
|     Object.assign(params, { ...this.sf.value, source: 2 }); | ||||
|  | ||||
|     this.service.request(this.service.$api_save_personal_partner, params).subscribe(res => { | ||||
|       if (res) { | ||||
|         this.service.msgSrv.success('新增个人合伙人成功'); | ||||
|         this.goBack(); | ||||
|       } | ||||
|       } | ||||
|     ); | ||||
|     // this.service.request(this.service.$api_save_enterprise_admin, params).subscribe(res => { | ||||
|     //   if (res) { | ||||
|     //     this.service.msgSrv.success('企业新增成功'); | ||||
|     //     this.goBack(); | ||||
|     //   } | ||||
|     // }); | ||||
|     }); | ||||
|   } | ||||
|  | ||||
|   /* | ||||
| @ -124,48 +105,34 @@ export class AddPersonalPartnerComponent implements OnInit { | ||||
|   } | ||||
|  | ||||
|   // 识别身份证 参数isFront:front-正面、back-背面;type:0-申请人身份证,1-法定代表人身份证 | ||||
|   checkIdCard(imgurl: any, isFront: string, type: number) { | ||||
|   checkIdCard(imgurl: any, isFront: string) { | ||||
|     const params = { | ||||
|       idCardUrl: imgurl, | ||||
|       side: isFront | ||||
|     }; | ||||
|     this.service.request(this.service.$api_ocr_recognize_id_card, params).subscribe(res => { | ||||
|       if (res) { | ||||
|         if (type === 1) { | ||||
|         // 法定代表人证件照 | ||||
|         if (isFront === 'front') { | ||||
|           // 正面 | ||||
|           if (res.name) { | ||||
|               this.sf.setValue('/legalPersonIdentityDTO/name', res.name); | ||||
|             this.sf.setValue('/adminUserInfo/name', res.name); | ||||
|           } | ||||
|           if (res.number) { | ||||
|               this.sf.setValue('/legalPersonIdentityDTO/certificateType', 0); | ||||
|               this.sf.setValue('/legalPersonIdentityDTO/certificateNumber', res.number); | ||||
|             this.sf.setValue('/adminUserInfo/certificateType', 0); | ||||
|             this.sf.setValue('/adminUserInfo/certificateNumber', res.number); | ||||
|           } | ||||
|         } | ||||
|         if (isFront === 'back') { | ||||
|           // 背面 | ||||
|           if (res.validFrom) { | ||||
|               this.sf.setValue('/legalPersonIdentityDTO/validStartTime', res.validFrom); | ||||
|             this.sf.setValue('/adminUserInfo/validStartTime', res.validFrom); | ||||
|           } | ||||
|           if (res.validTo) { | ||||
|               this.sf.setValue('/legalPersonIdentityDTO/validEndTime', res.validTo); | ||||
|               this.sf.setValue('/legalPersonIdentityDTO/_isLoingDate', false); | ||||
|             this.sf.setValue('/adminUserInfo/validEndTime', res.validTo); | ||||
|             this.sf.setValue('/adminUserInfo/_isLoingDate', false); | ||||
|           } else { | ||||
|               this.sf.setValue('/legalPersonIdentityDTO/_isLoingDate', true); | ||||
|             } | ||||
|           } | ||||
|         } | ||||
|         // 企业管理员证件照 | ||||
|         if (type === 0) { | ||||
|           if (isFront === 'front') { | ||||
|             // 正面 | ||||
|             if (res.name) { | ||||
|               this.sf.setValue('/name', res.name); | ||||
|             } | ||||
|             if (res.number) { | ||||
|               this.sf.setValue('/certificateNumber', res.number); | ||||
|             } | ||||
|             this.sf.setValue('/adminUserInfo/_isLoingDate', true); | ||||
|           } | ||||
|         } | ||||
|       } | ||||
| @ -178,13 +145,9 @@ export class AddPersonalPartnerComponent implements OnInit { | ||||
|  | ||||
|   private initBasicInfoSF(): SFSchema { | ||||
|     return { | ||||
|       properties: { | ||||
|         // 合伙人信息 | ||||
|         adminUserInfo: { | ||||
|           type: 'object', | ||||
|       properties: { | ||||
|         _adminTitle: { title: '', type: 'string', ui: { widget: 'custom' } }, | ||||
|             adminMobile: { | ||||
|         mobile: { | ||||
|           title: ' 手机号', | ||||
|           type: 'string', | ||||
|           minLength: 1, | ||||
| @ -196,6 +159,10 @@ export class AddPersonalPartnerComponent implements OnInit { | ||||
|             errors: { required: '请输入手机号', format: '手机号格式错误' } | ||||
|           } | ||||
|         }, | ||||
|         // 合伙人信息 | ||||
|         adminUserInfo: { | ||||
|           type: 'object', | ||||
|           properties: { | ||||
|             _adminCertificatePhotoTipsA: { | ||||
|               title: '证件照', | ||||
|               type: 'string', | ||||
| @ -206,6 +173,7 @@ export class AddPersonalPartnerComponent implements OnInit { | ||||
|             }, | ||||
|             certificatePhotoFront: { title: '', type: 'string', ui: { hidden: true } }, | ||||
|             certificatePhotoBack: { title: '', type: 'string', ui: { hidden: true } }, | ||||
|             certificateType: { title: '', type: 'string', ui: { hidden: true }, default: 0 }, | ||||
|             certificatePhotoFrontWatermark: { | ||||
|               type: 'string', | ||||
|               title: '', | ||||
| @ -214,8 +182,8 @@ export class AddPersonalPartnerComponent implements OnInit { | ||||
|                 descriptionI18n: '图片支持jpg、jpeg、png、gif格式,大小不超过5M', | ||||
|                 change: args => { | ||||
|                   if (args.type === 'success') { | ||||
|                     this.sf.setValue('/certificatePhotoFront', args.fileList[0].response.data.fullFilePath); | ||||
|                     this.checkIdCard(args.fileList[0].response.data.fullFilePath, 'front', 0); | ||||
|                     this.sf.setValue('/adminUserInfo/certificatePhotoFront', args.fileList[0].response.data.fullFilePath); | ||||
|                     this.checkIdCard(args.fileList[0].response.data.fullFilePath, 'front'); | ||||
|                   } | ||||
|                 } | ||||
|               } as SFUploadWidgetSchema | ||||
| @ -236,7 +204,8 @@ export class AddPersonalPartnerComponent implements OnInit { | ||||
|                 descriptionI18n: '图片支持jpg、jpeg、png、gif格式,大小不超过5M', | ||||
|                 change: args => { | ||||
|                   if (args.type === 'success') { | ||||
|                     this.sf.setValue('/certificatePhotoBack', args.fileList[0].response.data.fullFilePath); | ||||
|                     this.sf.setValue('/adminUserInfo/certificatePhotoBack', args.fileList[0].response.data.fullFilePath); | ||||
|                     this.checkIdCard(args.fileList[0].response.data.fullFilePath, 'back'); | ||||
|                   } | ||||
|                 } | ||||
|               } as SFUploadWidgetSchema | ||||
| @ -261,7 +230,7 @@ export class AddPersonalPartnerComponent implements OnInit { | ||||
|                 placeholder: '请输入身份证号' | ||||
|               } | ||||
|             }, | ||||
|             operatingStartTime: { | ||||
|             validStartTime: { | ||||
|               title: '身份证有效开始日期', | ||||
|               type: 'string', | ||||
|               ui: { | ||||
| @ -272,7 +241,7 @@ export class AddPersonalPartnerComponent implements OnInit { | ||||
|                 } | ||||
|               } as SFDateWidgetSchema | ||||
|             }, | ||||
|             operatingEndTime: { | ||||
|             validEndTime: { | ||||
|               title: '身份证有效截止日期', | ||||
|               type: 'string', | ||||
|               ui: { | ||||
| @ -294,34 +263,38 @@ export class AddPersonalPartnerComponent implements OnInit { | ||||
|                 grid: { span: 6 }, | ||||
|                 class: 'input-back', | ||||
|                 widget: 'checkbox', | ||||
|                 change: i => this.sf?.setValue('/adminUserInfo/operatingEndTime', null) | ||||
|                 change: i => this.sf?.setValue('/adminUserInfo/validEndTime', null) | ||||
|               } as SFCheckboxWidgetSchema | ||||
|             } | ||||
|           }, | ||||
|           required: ['_adminCertificatePhotoTipsA', 'adminMobile', 'name', 'certificateNumber', 'operatingStartTime'] | ||||
|           required: ['_adminCertificatePhotoTipsA', 'adminMobile', 'name', 'certificateNumber', 'validStartTime'] | ||||
|         }, | ||||
|         // 所属城市 | ||||
|         _addressTitle: { title: '', type: 'string', ui: { widget: 'custom' } }, | ||||
|         status3: { | ||||
|         cityCodesList: { | ||||
|           type: 'string', | ||||
|           title: '所属城市', | ||||
|           default: ['WAIT_BUYER_PAY', 'TRADE_FINISHED'], | ||||
|           ui: { | ||||
|             widget: 'tree-select', | ||||
|             grid: { xxl: 13, xl: 18, lg: 24, md: 24 }, | ||||
|             placeholder: '请选择城市(最多3个)', | ||||
|             checkable: true, | ||||
|             class: 'city-tree-select', | ||||
|             asyncData: () => | ||||
|               of([ | ||||
|                 { title: '待支付', key: 'WAIT_BUYER_PAY' }, | ||||
|                 { title: '已支付', key: 'TRADE_SUCCESS' }, | ||||
|                 { title: '交易完成', key: 'TRADE_FINISHED' } | ||||
|               ]) | ||||
|               this.getRegionDetailByCode('').pipe( | ||||
|                 map((res: any) => | ||||
|                   res.map((item: any) => ({ ...item, title: item.name, key: item.regionCode, disabled: true, isDisableCheckbox: true })) | ||||
|                 ) | ||||
|               ), | ||||
|             expandChange: ({ node }: { node: NzTreeNode }) => | ||||
|               this.getRegionDetailByCode(node.key).pipe( | ||||
|                 map((res: any) => res.map((item: any) => ({ ...item, title: item.name, key: item.regionCode, isLeaf: true }))) | ||||
|               ) | ||||
|           } as SFTreeSelectWidgetSchema | ||||
|         }, | ||||
|         // 渠道销售 | ||||
|         _channelTitle: { title: '', type: 'string', ui: { widget: 'custom' } }, | ||||
|         channel: { | ||||
|         invitationCode: { | ||||
|           title: '渠道销售邀请码', | ||||
|           type: 'string', | ||||
|           minLength: 1, | ||||
| @ -335,10 +308,7 @@ export class AddPersonalPartnerComponent implements OnInit { | ||||
|           } | ||||
|         } | ||||
|       }, | ||||
|       required: [ | ||||
|         'status3', | ||||
|         'channel' | ||||
|       ] | ||||
|       required: ['cityCodesList', 'invitationCode'] | ||||
|     }; | ||||
|   } | ||||
| } | ||||
|  | ||||
| @ -1,15 +1,17 @@ | ||||
| <page-header-wrapper [title]="'合伙人列表'"> | ||||
| </page-header-wrapper> | ||||
| <page-header-wrapper [title]="'合伙人列表'"> </page-header-wrapper> | ||||
|  | ||||
| <nz-card class="search-box" nzBordered> | ||||
|   <div nz-row nzGutter="8"> | ||||
|     <div nz-col [nzXl]="_$expand ? 24 : 17" [nzLg]="24" [nzSm]="24" [nzXs]="24"> | ||||
|             <sf #sf [schema]="searchSchema" | ||||
|                 [ui]="{ '*': { spanLabelFixed: 110,grid: { lg: 8, md: 12, sm: 12, xs: 24 } }}" [compact]="true" | ||||
|                 [button]="'none'"></sf> | ||||
|       <sf | ||||
|         #sf | ||||
|         [schema]="searchSchema" | ||||
|         [ui]="{ '*': { spanLabelFixed: 110, grid: { lg: 8, md: 12, sm: 12, xs: 24 } } }" | ||||
|         [compact]="true" | ||||
|         [button]="'none'" | ||||
|       ></sf> | ||||
|     </div> | ||||
|         <div nz-col [nzXl]="_$expand ? 24 : 7" [nzLg]="24" [nzSm]="24" [nzXs]="24" class="text-right" | ||||
|             [class.expend-options]="_$expand"> | ||||
|     <div nz-col [nzXl]="_$expand ? 24 : 7" [nzLg]="24" [nzSm]="24" [nzXs]="24" class="text-right" [class.expend-options]="_$expand"> | ||||
|       <button nz-button nzType="primary" [nzLoading]="service.http.loading" (click)="st?.load(1)">查询</button> | ||||
|       <button nz-button (click)="resetSF()">重置</button> | ||||
|       <button nz-button nzType="link" (click)="expandToggle()"> | ||||
| @ -26,19 +28,24 @@ | ||||
|     <button nz-button (click)="this.routeTo('/partner/partner-list/add-personal-partner')" nzType="primary">新增个人合伙人</button> | ||||
|   </div> | ||||
|  | ||||
|     <st #st [data]="service.$mock_url" [columns]="columns" [req]="{  process: beforeReq }" | ||||
|         [loading]="service.http.loading" [scroll]="{ x:'1200px' }"> | ||||
|   <st | ||||
|     #st | ||||
|     [data]="service.$api_get_partner_page" | ||||
|     [columns]="columns" | ||||
|     [req]="{ process: beforeReq }" | ||||
|     [loading]="service.http.loading" | ||||
|     [scroll]="{ x: '1200px' }" | ||||
|     [page]="{}" | ||||
|   > | ||||
|   </st> | ||||
| </nz-card> | ||||
|  | ||||
| <ng-template #editTemplate> | ||||
|   <div nz-row nzGutter="8"> | ||||
|     <div nz-col nzSpan="24" se-container [labelWidth]="120"> | ||||
|             <se [col]="1" label="合伙人名称"> | ||||
|                 深圳某某有限公司 | ||||
|             </se> | ||||
|       <se [col]="1" label="合伙人名称"> 深圳某某有限公司 </se> | ||||
|       <se [col]="1" label="返佣模板" required> | ||||
|                 <nz-select ngModel="lucy" style="width: 100%;"> | ||||
|         <nz-select ngModel="lucy" style="width: 100%"> | ||||
|           <nz-option nzValue="jack" nzLabel="Jack"></nz-option> | ||||
|           <nz-option nzValue="lucy" nzLabel="Lucy"></nz-option> | ||||
|         </nz-select> | ||||
| @ -51,14 +58,10 @@ | ||||
| <ng-template #editCannel> | ||||
|   <div nz-row nzGutter="8"> | ||||
|     <div nz-col nzSpan="24" se-container [labelWidth]="140" [col]="1"> | ||||
|             <se label="合伙人名称"> | ||||
|                 深圳某某有限公司 | ||||
|             </se> | ||||
|             <se label="当前渠道销售"> | ||||
|                 张三/13999999999 | ||||
|             </se> | ||||
|       <se label="合伙人名称"> 深圳某某有限公司 </se> | ||||
|       <se label="当前渠道销售"> 张三/13999999999 </se> | ||||
|       <se label="渠道销售修改为" required> | ||||
|                 <nz-select ngModel="lucy" style="width: 100%;"> | ||||
|         <nz-select ngModel="lucy" style="width: 100%"> | ||||
|           <nz-option nzValue="jack" nzLabel="Jack"></nz-option> | ||||
|           <nz-option nzValue="lucy" nzLabel="Lucy"></nz-option> | ||||
|         </nz-select> | ||||
| @ -67,7 +70,7 @@ | ||||
|         <textarea rows="3" nz-input></textarea> | ||||
|       </se> | ||||
|       <se label="一并转移的客户"> | ||||
|                 <p style="margin-top: 8px;">已选(0)</p> | ||||
|         <p style="margin-top: 8px">已选(0)</p> | ||||
|         <nz-table #rowSelectionTable [nzData]="customers" nzSize="small" nzBordered> | ||||
|           <thead> | ||||
|             <tr> | ||||
| @ -91,5 +94,7 @@ | ||||
|       </se> | ||||
|     </div> | ||||
|   </div> | ||||
|     <p class="text-center mt-md">客户转移:客户跟着上级合伙人转移一并到新渠道销售下,会同步发起CRM《客户转移》流程;不转移的,客户会与上级合伙人解绑,成为渠道销售的直客</p> | ||||
|   <p class="text-center mt-md" | ||||
|     >客户转移:客户跟着上级合伙人转移一并到新渠道销售下,会同步发起CRM《客户转移》流程;不转移的,客户会与上级合伙人解绑,成为渠道销售的直客</p | ||||
|   > | ||||
| </ng-template> | ||||
| @ -1,9 +1,10 @@ | ||||
| import { Component, OnInit, ViewChild } from '@angular/core'; | ||||
| import { Component, ViewChild } from '@angular/core'; | ||||
| import { Router } from '@angular/router'; | ||||
| import { STComponent, STColumn, STRequestOptions, STChange } from '@delon/abc/st'; | ||||
| import { SFComponent, SFSchema, SFDateWidgetSchema } from '@delon/form'; | ||||
| import { NzModalService } from 'ng-zorro-antd/modal'; | ||||
| import { AddCollectionInvoiceModalComponent } from 'src/app/routes/ticket-management/components/input-invoice/add-collection-invoice-modal/add-collection-invoice-modal.component'; | ||||
|  | ||||
| import { PartnerListService } from '../../services/partner-list.service'; | ||||
| import { PartnerAuditModalComponent } from '../partner-audit-modal/partner-audit-modal.component'; | ||||
|  | ||||
| @ -12,7 +13,7 @@ import { PartnerAuditModalComponent } from '../partner-audit-modal/partner-audit | ||||
|   templateUrl: './partner-list.component.html', | ||||
|   styleUrls: ['../../../../commom/less/box.less'] | ||||
| }) | ||||
| export class PartnerListComponent implements OnInit { | ||||
| export class PartnerListComponent { | ||||
|   @ViewChild('st', { static: true }) | ||||
|   st!: STComponent; | ||||
|   @ViewChild('sf', { static: false }) | ||||
| @ -30,8 +31,6 @@ export class PartnerListComponent implements OnInit { | ||||
|  | ||||
|   constructor(public service: PartnerListService, private nzModalService: NzModalService, private router: Router) {} | ||||
|  | ||||
|   ngOnInit(): void {} | ||||
|  | ||||
|   beforeReq = (requestOptions: STRequestOptions) => { | ||||
|     if (this.sf) { | ||||
|       let params = { ...this.sf.value }; | ||||
| @ -122,19 +121,19 @@ export class PartnerListComponent implements OnInit { | ||||
|             hidden: true | ||||
|           } | ||||
|         }, | ||||
|         paycode: { | ||||
|         enterpriseName: { | ||||
|           type: 'string', | ||||
|           title: '合伙人名称' | ||||
|         }, | ||||
|         paycode2: { | ||||
|         contactName: { | ||||
|           type: 'string', | ||||
|           title: '企业管理员' | ||||
|         }, | ||||
|         paycod3e: { | ||||
|         contactMobile: { | ||||
|           type: 'string', | ||||
|           title: '手机号' | ||||
|         }, | ||||
|         paycod31e: { | ||||
|         channelId: { | ||||
|           type: 'string', | ||||
|           title: '渠道销售', | ||||
|           ui: { | ||||
| @ -144,32 +143,37 @@ export class PartnerListComponent implements OnInit { | ||||
|             } | ||||
|           } | ||||
|         }, | ||||
|         orderS2n: { | ||||
|         partnerType: { | ||||
|           type: 'string', | ||||
|           title: '类型', | ||||
|           enum: [ | ||||
|             { value: '', label: '全部' }, | ||||
|             { value: 1, label: '企业' }, | ||||
|             { value: 2, label: '个人' } | ||||
|           ], | ||||
|           ui: { | ||||
|             widget: 'dict-select', | ||||
|             containsAllLabel: true, | ||||
|             params: { dictKey: 'refund:apply:status' }, | ||||
|             widget: 'select', | ||||
|             placeholder: '请选择', | ||||
|             visibleIf: { | ||||
|               expand: (value: boolean) => value | ||||
|             } | ||||
|           } | ||||
|           }, | ||||
|         paytype: { | ||||
|           default: '' | ||||
|         }, | ||||
|         approvalStatus: { | ||||
|           type: 'string', | ||||
|           title: '认证审核状态', | ||||
|           ui: { | ||||
|             widget: 'dict-select', | ||||
|             containsAllLabel: true, | ||||
|             params: { dictKey: 'pay:mode' }, | ||||
|             placeholder: '请选择', | ||||
|             visibleIf: { | ||||
|               expand: (value: boolean) => value | ||||
|             } | ||||
|           } | ||||
|         }, | ||||
|         paymode: { | ||||
|         signStatus: { | ||||
|           type: 'string', | ||||
|           title: '签约状态', | ||||
|           ui: { | ||||
| @ -182,7 +186,7 @@ export class PartnerListComponent implements OnInit { | ||||
|             } | ||||
|           } | ||||
|         }, | ||||
|         paymo1de: { | ||||
|         crmStatus: { | ||||
|           type: 'string', | ||||
|           title: 'CRM状态', | ||||
|           ui: { | ||||
| @ -198,41 +202,47 @@ export class PartnerListComponent implements OnInit { | ||||
|         paymo11de: { | ||||
|           type: 'string', | ||||
|           title: '注册渠道', | ||||
|           enum: [ | ||||
|             { value: '', label: '全部' }, | ||||
|             { value: 1, label: '合伙人注册' }, | ||||
|             { value: 2, label: '平台添加' } | ||||
|           ], | ||||
|           ui: { | ||||
|             widget: 'dict-select', | ||||
|             containsAllLabel: true, | ||||
|             params: { dictKey: 'pay:mode' }, | ||||
|             widget: 'select', | ||||
|             placeholder: '请选择', | ||||
|             visibleIf: { | ||||
|               expand: (value: boolean) => value | ||||
|             } | ||||
|           } | ||||
|           }, | ||||
|         paymo11d1e: { | ||||
|           default: '' | ||||
|         }, | ||||
|         templateId: { | ||||
|           type: 'string', | ||||
|           title: '返佣模板', | ||||
|           ui: { | ||||
|             widget: 'dict-select', | ||||
|             containsAllLabel: true, | ||||
|             params: { dictKey: 'pay:mode' }, | ||||
|             widget: 'select', | ||||
|             placeholder: '请选择', | ||||
|             visibleIf: { | ||||
|               expand: (value: boolean) => value | ||||
|             } | ||||
|           } | ||||
|         }, | ||||
|         paymo11d11e: { | ||||
|         lockedStatus: { | ||||
|           type: 'string', | ||||
|           title: '合伙人状态', | ||||
|           enum: [ | ||||
|             { value: '', label: '全部' }, | ||||
|             { value: 0, label: '启用' }, | ||||
|             { value: 1, label: '冻结' } | ||||
|           ], | ||||
|           ui: { | ||||
|             widget: 'dict-select', | ||||
|             containsAllLabel: true, | ||||
|             params: { dictKey: 'pay:mode' }, | ||||
|             widget: 'select', | ||||
|             placeholder: '请选择', | ||||
|             visibleIf: { | ||||
|               expand: (value: boolean) => value | ||||
|             } | ||||
|           } | ||||
|           }, | ||||
|           default: '' | ||||
|         }, | ||||
|         createTime: { | ||||
|           title: '注册时间', | ||||
| @ -251,20 +261,63 @@ export class PartnerListComponent implements OnInit { | ||||
|  | ||||
|   private initST(): STColumn[] { | ||||
|     return [ | ||||
|       { title: '合伙人名称', index: 'payCode', width: 180 }, | ||||
|       { title: '合伙人名称', index: 'enterpriseName', width: 180 }, | ||||
|       { title: '付款编码', index: 'ltdName', width: 160 }, | ||||
|       { title: '邀请码', index: 'payDate', className: 'text-center', width: 130 }, | ||||
|       { title: '企业管理员', index: 'payDate', width: 150 }, | ||||
|       { title: '手机号', index: 'payDate', className: 'text-center', width: 150 }, | ||||
|       { title: '类型', index: 'payDate', className: 'text-center', width: 130 }, | ||||
|       { title: '邀请码', index: 'invitationCode', className: 'text-center', width: 130 }, | ||||
|       { title: '企业管理员', index: 'contactName', width: 150 }, | ||||
|       { title: '手机号', index: 'contactMobile', className: 'text-center', width: 150 }, | ||||
|       { title: '类型', index: 'partnerType', className: 'text-center', width: 130, type: 'enum', enum: { 1: '企业', 2: '个人' } }, | ||||
|       { title: '注册渠道', index: 'payDate', type: 'date', width: 130 }, | ||||
|       { title: '注册时间', index: 'payDate', className: 'text-center', width: 170 }, | ||||
|       { title: '注册时间', index: 'createTime', className: 'text-center', width: 170 }, | ||||
|       { title: '渠道销售', index: 'payDate', width: 170 }, | ||||
|       { title: '返佣模板', index: 'payDate', width: 150 }, | ||||
|       { title: '认证审核状态', index: 'payDate', width: 150 }, | ||||
|       { title: '签约状态', index: 'payDate', width: 150 }, | ||||
|       { title: 'CRM状态', index: 'payDate', width: 150 }, | ||||
|       { title: '合伙人状态', index: 'payDate', className: 'text-center', width: 140 }, | ||||
|       { title: '返佣模板', index: 'templateName', width: 150 }, | ||||
|       { | ||||
|         title: '认证审核状态', | ||||
|         index: 'approvalStatus', | ||||
|         width: 150, | ||||
|         type: 'badge', | ||||
|         badge: { | ||||
|           0: { text: '草稿', color: 'default' }, | ||||
|           10: { text: '待审核', color: 'processing' }, | ||||
|           20: { text: '审核通过', color: 'success' }, | ||||
|           30: { text: '驳回', color: 'error' } | ||||
|         } | ||||
|       }, | ||||
|       { | ||||
|         title: '签约状态', | ||||
|         index: 'signStatus', | ||||
|         width: 150, | ||||
|         type: 'badge', | ||||
|         badge: { | ||||
|           10: { text: '待合伙人签约', color: 'default' }, | ||||
|           15: { text: '签约中', color: 'processing' }, | ||||
|           20: { text: '平台签约完成', color: 'success' }, | ||||
|           30: { text: '驳回', color: 'error' } | ||||
|         } | ||||
|       }, | ||||
|       { | ||||
|         title: 'CRM状态', | ||||
|         index: 'crmStatus', | ||||
|         width: 150, | ||||
|         type: 'badge', | ||||
|         badge: { | ||||
|           0: { text: '未发起', color: 'default' }, | ||||
|           10: { text: '待审核', color: 'processing' }, | ||||
|           20: { text: '审核通过', color: 'success' }, | ||||
|           30: { text: '驳回', color: 'error' } | ||||
|         } | ||||
|       }, | ||||
|       { | ||||
|         title: '合伙人状态', | ||||
|         index: 'lockedStatus', | ||||
|         className: 'text-center', | ||||
|         width: 140, | ||||
|         type: 'badge', | ||||
|         badge: { | ||||
|           0: { text: '启用', color: 'success' }, | ||||
|           1: { text: '冻结', color: 'error' } | ||||
|         } | ||||
|       }, | ||||
|       { | ||||
|         title: '操作', | ||||
|         fixed: 'right', | ||||
| @ -273,7 +326,13 @@ export class PartnerListComponent implements OnInit { | ||||
|           { type: 'divider' }, | ||||
|           { | ||||
|             text: '详情<br>', | ||||
|             click: item => this.router.navigate(['/partner/partner-list/detail/' + item.id]) | ||||
|             click: item => { | ||||
|               if (item.partnerType === 1) { | ||||
|                 this.router.navigate([`/partner/partner-list/etp-detail/${item.appUserId}`]); | ||||
|               } else { | ||||
|                 this.router.navigate([`/partner/partner-list/personal-detail/${item.appUserId}`]); | ||||
|               } | ||||
|             } | ||||
|           }, | ||||
|           { | ||||
|             text: '修改返佣模板', | ||||
| @ -289,7 +348,7 @@ export class PartnerListComponent implements OnInit { | ||||
|           }, | ||||
|           { | ||||
|             text: '重发CRM流程', | ||||
|             click: item => this.router.navigate(['/partner/account-management/list/detail/' + item.id]) | ||||
|             click: item => this.router.navigate([`/partner/account-management/list/detail/${item.id}`]) | ||||
|           } | ||||
|         ] | ||||
|       } | ||||
|  | ||||
| @ -1,5 +1,5 @@ | ||||
| <!-- 页头 --> | ||||
| <page-header-wrapper [logo]="logo" [content]="content" [title]="'合伙人详情'" [ngClass]="{'affix': scrollTop>210}"> | ||||
| <page-header-wrapper [logo]="logo" [content]="content" [title]="'合伙人详情'" [ngClass]="{ affix: scrollTop > 210 }"> | ||||
|   <ng-template #logo> | ||||
|     <button nz-button nz-tooltip nzTooltipTitle="返回上一页" (click)="goBack()"> | ||||
|       <i nz-icon nzType="left" nzTheme="outline"></i> | ||||
| @ -10,14 +10,13 @@ | ||||
|       <div class="user-info" nz-row> | ||||
|         <div nz-col [nzXl]="18" [nzLg]="24" [nzSm]="24" [nzXs]="24" class="d-flex"> | ||||
|           <img [src]="detailData?.enterpriseLogo" /> | ||||
|                     <div style="flex: 1;"> | ||||
|           <div style="flex: 1"> | ||||
|             <div nz-row> | ||||
|               <div nz-col [nzLg]="12" [nzSm]="24" [nzXs]="24"> | ||||
|                                 <p style="margin-bottom: 0;">{{ detailData?.enterpriseName }}</p> | ||||
|                 <p style="margin-bottom: 0">{{ detailData?.enterpriseName }}</p> | ||||
|               </div> | ||||
|               <div nz-col [nzLg]="12" [nzSm]="24" [nzXs]="24"> | ||||
|                                 <nz-badge nzStatus="success" nzText="正常" *ngIf="detailData?.stateLocked === 0"> | ||||
|                                 </nz-badge> | ||||
|                 <nz-badge nzStatus="success" nzText="正常" *ngIf="detailData?.stateLocked === 0"> </nz-badge> | ||||
|                 <nz-badge nzStatus="error" nzText="冻结" *ngIf="detailData?.stateLocked === 1"></nz-badge> | ||||
|               </div> | ||||
|             </div> | ||||
| @ -25,55 +24,57 @@ | ||||
|               <div nz-col [nzLg]="12" [nzSm]="24" [nzXs]="24"> | ||||
|                 <p>{{ detailData?.unifiedSocialCreditCode }}</p> | ||||
|               </div> | ||||
|                             <div nz-col [nzLg]="12" [nzSm]="24" [nzXs]="24"> | ||||
|                                 企业合伙人 | ||||
|                             </div> | ||||
|               <div nz-col [nzLg]="12" [nzSm]="24" [nzXs]="24"> 企业合伙人 </div> | ||||
|             </div> | ||||
|             <div nz-row> | ||||
|               <div nz-col [nzLg]="12" [nzSm]="24" [nzXs]="24"> 注册时间:{{ detailData?.createTime }} </div> | ||||
|               <div nz-col [nzLg]="12" [nzSm]="24" [nzXs]="24"> | ||||
|                                 注册时间:{{detailData?.createTime}} | ||||
|                             </div> | ||||
|                             <div nz-col [nzLg]="12" [nzSm]="24" [nzXs]="24"> | ||||
|                                 所属城市:{{detailData?.createTime}} | ||||
|                 所属城市:{{ detailData?.cityCodesList?.provinceName }}{{ detailData?.cityCodesList?.cityName }} | ||||
|               </div> | ||||
|             </div> | ||||
|           </div> | ||||
|         </div> | ||||
|         <div nz-col [nzXl]="6" [nzLg]="24" [nzSm]="24" [nzXs]="24" class="text-right mt-sm"> | ||||
|                     <ng-container *ngIf="isEdit;else editButton"> | ||||
|                         <button [disabled]="service.http.loading" nz-button (click)="reset()"> | ||||
|                             取消 | ||||
|                         </button> | ||||
|                         <button [disabled]="service.http.loading" nz-button nzDanger (click)="save()"> | ||||
|                             保存 | ||||
|                         </button> | ||||
|           <ng-container *ngIf="isEdit; else editButton"> | ||||
|             <button [disabled]="service.http.loading" nz-button (click)="reset()"> 取消 </button> | ||||
|             <button [disabled]="service.http.loading" nz-button nzDanger (click)="save()"> 保存 </button> | ||||
|           </ng-container> | ||||
|           <ng-template #editButton> | ||||
|             <ng-container> | ||||
|                             <button [disabled]="service.http.loading" nz-button nzDanger (click)="auditPartner(true)"> | ||||
|                                 通过 | ||||
|                             </button> | ||||
|                             <button [disabled]="service.http.loading" nz-button nzDanger (click)="auditPartner(false)"> | ||||
|                                 驳回 | ||||
|                             </button> | ||||
|               <button [disabled]="service.http.loading" nz-button nzDanger (click)="auditPartner(true)"> 通过 </button> | ||||
|               <button [disabled]="service.http.loading" nz-button nzDanger (click)="auditPartner(false)"> 驳回 </button> | ||||
|             </ng-container> | ||||
|                         <ng-container *ngIf="detailData?.approvalStatus!=10"> | ||||
|                             <button [disabled]="service.http.loading" nz-button nzDanger nz-popconfirm | ||||
|                                 [nzPopconfirmTitle]="enable" (nzOnConfirm)="freezeOrResume(0)" | ||||
|                                 nzPopconfirmPlacement="bottomRight" *ngIf="detailData?.stateLocked" acl | ||||
|                                 [acl-ability]="['USERCENTER-FREIGHT-ENTERPRISE-D-lock']"> | ||||
|             <ng-container *ngIf="detailData?.approvalStatus != 10"> | ||||
|               <button | ||||
|                 [disabled]="service.http.loading" | ||||
|                 nz-button | ||||
|                 nzDanger | ||||
|                 nz-popconfirm | ||||
|                 [nzPopconfirmTitle]="enable" | ||||
|                 (nzOnConfirm)="freezeOrResume(0)" | ||||
|                 nzPopconfirmPlacement="bottomRight" | ||||
|                 *ngIf="detailData?.stateLocked" | ||||
|                 acl | ||||
|                 [acl-ability]="['USERCENTER-FREIGHT-ENTERPRISE-D-lock']" | ||||
|               > | ||||
|                 启用 | ||||
|               </button> | ||||
|                             <button [disabled]="service.http.loading" nz-button nzDanger nz-popconfirm | ||||
|                                 [nzPopconfirmTitle]="frozen" (nzOnConfirm)="freezeOrResume(1)" | ||||
|                                 nzPopconfirmPlacement="bottomRight" *ngIf="!detailData?.stateLocked" acl | ||||
|                                 [acl-ability]="['USERCENTER-FREIGHT-ENTERPRISE-D-lock']"> | ||||
|               <button | ||||
|                 [disabled]="service.http.loading" | ||||
|                 nz-button | ||||
|                 nzDanger | ||||
|                 nz-popconfirm | ||||
|                 [nzPopconfirmTitle]="frozen" | ||||
|                 (nzOnConfirm)="freezeOrResume(1)" | ||||
|                 nzPopconfirmPlacement="bottomRight" | ||||
|                 *ngIf="!detailData?.stateLocked" | ||||
|                 acl | ||||
|                 [acl-ability]="['USERCENTER-FREIGHT-ENTERPRISE-D-lock']" | ||||
|               > | ||||
|                 冻结 | ||||
|               </button> | ||||
|             </ng-container> | ||||
|                         <button [disabled]="service.http.loading" nz-button nzDanger (click)="ratify()"> | ||||
|                             修改 | ||||
|                         </button> | ||||
|             <button [disabled]="service.http.loading" nz-button nzDanger (click)="ratify()"> 修改 </button> | ||||
|           </ng-template> | ||||
|         </div> | ||||
|       </div> | ||||
| @ -82,65 +83,120 @@ | ||||
|  | ||||
|   <ng-template #frozen> | ||||
|     <ng-container | ||||
|             *ngTemplateOutlet="PopconfirmTempalte;context:{title:'确定冻结该企业吗?',content:'停用后,该企业将被限制使用,不限于访问受限、无法发布货源等,请谨慎操作'}"> | ||||
|       *ngTemplateOutlet=" | ||||
|         PopconfirmTempalte; | ||||
|         context: { title: '确定冻结该企业吗?', content: '停用后,该企业将被限制使用,不限于访问受限、无法发布货源等,请谨慎操作' } | ||||
|       " | ||||
|     > | ||||
|     </ng-container> | ||||
|   </ng-template> | ||||
|   <ng-template #enable> | ||||
|     <ng-container | ||||
|             *ngTemplateOutlet="PopconfirmTempalte;context:{title:'确定启用该企业吗?',content:'启用后,该企业将恢复正常使用功能,请再次确认'}"> | ||||
|         </ng-container> | ||||
|     </ng-template> | ||||
|     <ng-template #Payenable> | ||||
|         <ng-container | ||||
|             *ngTemplateOutlet="PopconfirmTempalte;context:{title:'确定关闭该企业支付权限吗?',content:'停用后,该企业将被限制使用支付功能,请谨慎操作'}"> | ||||
|         </ng-container> | ||||
|     </ng-template> | ||||
|     <ng-template #Payfrozen> | ||||
|         <ng-container | ||||
|             *ngTemplateOutlet="PopconfirmTempalte;context:{title:'确定开通该企业支付权限吗?',content:'启用后,该企业将恢复正常支付功能,请再次确认'}"> | ||||
|       *ngTemplateOutlet=" | ||||
|         PopconfirmTempalte; | ||||
|         context: { title: '确定启用该企业吗?', content: '启用后,该企业将恢复正常使用功能,请再次确认' } | ||||
|       " | ||||
|     > | ||||
|     </ng-container> | ||||
|   </ng-template> | ||||
| </page-header-wrapper> | ||||
|  | ||||
| <nz-card [class]="isEdit?'edit-box':'readOnly-box'"> | ||||
| <nz-card [class]="isEdit ? 'edit-box' : 'readOnly-box'"> | ||||
|   <sv-container col="3"> | ||||
|     <sv-title>企业管理员信息</sv-title> | ||||
|     <sv label="姓名"> | ||||
|             <input nz-input type="text" [(ngModel)]="detailData.adminUserInfo.name" [readonly]="!isEdit" | ||||
|                 [nzBorderless]="!isEdit" [placeholder]="isEdit?'':'-'"> | ||||
|       <input | ||||
|         nz-input | ||||
|         type="text" | ||||
|         [(ngModel)]="detailData.adminUserInfo.name" | ||||
|         [readonly]="!isEdit" | ||||
|         [nzBorderless]="!isEdit" | ||||
|         [placeholder]="isEdit ? '' : '-'" | ||||
|       /> | ||||
|     </sv> | ||||
|     <sv label="手机号"> | ||||
|             <input nz-input type="text" [(ngModel)]="detailData.adminUserInfo.mobile" [readonly]="!isEdit" | ||||
|                 [nzBorderless]="!isEdit" [placeholder]="isEdit?'':'-'"> | ||||
|       <input | ||||
|         nz-input | ||||
|         type="text" | ||||
|         [(ngModel)]="detailData.adminUserInfo.mobile" | ||||
|         [readonly]="!isEdit" | ||||
|         [nzBorderless]="!isEdit" | ||||
|         [placeholder]="isEdit ? '' : '-'" | ||||
|       /> | ||||
|     </sv> | ||||
|     <sv label="身份证号"> | ||||
|             <input nz-input type="text" [(ngModel)]="detailData.adminUserInfo.certificateNumber" [readonly]="!isEdit" | ||||
|                 [nzBorderless]="!isEdit" [placeholder]="isEdit?'':'-'"> | ||||
|       <input | ||||
|         nz-input | ||||
|         type="text" | ||||
|         [(ngModel)]="detailData.adminUserInfo.certificateNumber" | ||||
|         [readonly]="!isEdit" | ||||
|         [nzBorderless]="!isEdit" | ||||
|         [placeholder]="isEdit ? '' : '-'" | ||||
|       /> | ||||
|     </sv> | ||||
|     <sv label="身份证照" col="2"> | ||||
|       <div class="d-flex"> | ||||
|         <ng-container | ||||
|                     *ngTemplateOutlet="uploadTemplate;context:{data:detailData?.adminUserInfo,status:isEdit,key:'certificatePhotoFrontWatermark',key2:'certificatePhotoFront',hover:'certificateBackFront'}"> | ||||
|           *ngTemplateOutlet=" | ||||
|             uploadTemplate; | ||||
|             context: { | ||||
|               data: detailData?.adminUserInfo, | ||||
|               status: isEdit, | ||||
|               key: 'certificatePhotoFrontWatermark', | ||||
|               key2: 'certificatePhotoFront', | ||||
|               hover: 'certificateBackFront' | ||||
|             } | ||||
|           " | ||||
|         > | ||||
|         </ng-container> | ||||
|         <ng-container | ||||
|                     *ngTemplateOutlet="uploadTemplate;context:{data:detailData?.adminUserInfo,status:isEdit,key:'certificatePhotoBackWatermark',key2:'certificatePhotoBack',hover:'certificateBack'}"> | ||||
|           *ngTemplateOutlet=" | ||||
|             uploadTemplate; | ||||
|             context: { | ||||
|               data: detailData?.adminUserInfo, | ||||
|               status: isEdit, | ||||
|               key: 'certificatePhotoBackWatermark', | ||||
|               key2: 'certificatePhotoBack', | ||||
|               hover: 'certificateBack' | ||||
|             } | ||||
|           " | ||||
|         > | ||||
|         </ng-container> | ||||
|       </div> | ||||
|     </sv> | ||||
|     <sv label="身份证有效期" col="1"> | ||||
|             <nz-date-picker [(ngModel)]="detailData.operatingStartTime" [nzDisabled]="!isEdit" nzPlaceHolder=" " | ||||
|                 [nzBorderless]="!isEdit" [nzSuffixIcon]="isEdit?'calendar':''" style="width: 100px;" class="calendar"> | ||||
|       <nz-date-picker | ||||
|         [(ngModel)]="detailData.operatingStartTime" | ||||
|         [nzDisabled]="!isEdit" | ||||
|         nzPlaceHolder=" " | ||||
|         [nzBorderless]="!isEdit" | ||||
|         [nzSuffixIcon]="isEdit ? 'calendar' : ''" | ||||
|         style="width: 100px" | ||||
|         class="calendar" | ||||
|       > | ||||
|       </nz-date-picker> | ||||
|       - | ||||
|       <ng-container *ngIf="!isEdit && !detailData?.operatingEndTime && detailData?.operatingStartTime"> | ||||
|                 <label style="padding-left: 11px;">长期</label> | ||||
|         <label style="padding-left: 11px">长期</label> | ||||
|       </ng-container> | ||||
|             <nz-date-picker [(ngModel)]="detailData.operatingEndTime" [nzDisabled]="!isEdit" nzPlaceHolder=" " | ||||
|                 [nzBorderless]="!isEdit" [nzSuffixIcon]="isEdit?'calendar':''" style="width: 100px;" class="calendar"> | ||||
|       <nz-date-picker | ||||
|         [(ngModel)]="detailData.operatingEndTime" | ||||
|         [nzDisabled]="!isEdit" | ||||
|         nzPlaceHolder=" " | ||||
|         [nzBorderless]="!isEdit" | ||||
|         [nzSuffixIcon]="isEdit ? 'calendar' : ''" | ||||
|         style="width: 100px" | ||||
|         class="calendar" | ||||
|       > | ||||
|       </nz-date-picker> | ||||
|       <ng-container *ngIf="isEdit"> | ||||
|                 <label nz-checkbox [ngModel]="!!!detailData.operatingEndTime" | ||||
|                     (ngModelChange)="$event?detailData.operatingEndTime='':''" class="ml-sm">长期</label> | ||||
|         <label | ||||
|           nz-checkbox | ||||
|           [ngModel]="!!!detailData.operatingEndTime" | ||||
|           (ngModelChange)="$event ? (detailData.operatingEndTime = '') : ''" | ||||
|           class="ml-sm" | ||||
|           >长期</label | ||||
|         > | ||||
|       </ng-container> | ||||
|     </sv> | ||||
|   </sv-container> | ||||
| @ -149,56 +205,91 @@ | ||||
|   <sv-container col="3" class="mt16"> | ||||
|     <sv-title> | ||||
|       <label class="mr-md">企业基本信息</label> | ||||
|             <label *ngIf="detailData?.approvalStatus===10" style="color: #1890ff;"><i nz-icon nzType="info-circle" | ||||
|                     nzTheme="fill" class="mr-xs"></i>待审核 | ||||
|       <label *ngIf="detailData?.approvalStatus === 10" style="color: #1890ff" | ||||
|         ><i nz-icon nzType="info-circle" nzTheme="fill" class="mr-xs"></i>待审核 | ||||
|       </label> | ||||
|             <label *ngIf="detailData?.approvalStatus===20" style="color: #52c41a;"><i nz-icon nzType="check-circle" | ||||
|                     nzTheme="fill" class="mr-xs"></i>审核通过 | ||||
|       <label *ngIf="detailData?.approvalStatus === 20" style="color: #52c41a" | ||||
|         ><i nz-icon nzType="check-circle" nzTheme="fill" class="mr-xs"></i>审核通过 | ||||
|       </label> | ||||
|             <label *ngIf="detailData?.approvalStatus===30" style="color: #ff4d4f;"><i nz-icon nzType="close-circle" | ||||
|                     nzTheme="fill" class="mr-xs"></i>驳回 驳回原因:{{detailData?.approvalOpinion}} | ||||
|       <label *ngIf="detailData?.approvalStatus === 30" style="color: #ff4d4f" | ||||
|         ><i nz-icon nzType="close-circle" nzTheme="fill" class="mr-xs"></i>驳回 驳回原因:{{ detailData?.approvalOpinion }} | ||||
|       </label> | ||||
|             <p style="margin-bottom: 0;"> | ||||
|       <p style="margin-bottom: 0"> | ||||
|         四要素验证: | ||||
|                 <label *ngIf="detailData?.esignCheckStatus===0" style="color: #ff4d4f;"><i nz-icon nzType="info-circle" | ||||
|                         nzTheme="fill" class="mr-xs"></i>不通过  驳回原因:{{detailData?.esignCheckMsg}} | ||||
|         <label *ngIf="detailData?.esignCheckStatus === 0" style="color: #ff4d4f" | ||||
|           ><i nz-icon nzType="info-circle" nzTheme="fill" class="mr-xs"></i>不通过  驳回原因:{{ detailData?.esignCheckMsg }} | ||||
|         </label> | ||||
|                 <label *ngIf="detailData?.esignCheckStatus===1" style="color: #52c41a;"><i nz-icon nzType="check-circle" | ||||
|                         nzTheme="fill" class="mr-xs"></i>通过 | ||||
|         <label *ngIf="detailData?.esignCheckStatus === 1" style="color: #52c41a" | ||||
|           ><i nz-icon nzType="check-circle" nzTheme="fill" class="mr-xs"></i>通过 | ||||
|         </label> | ||||
|                 <label *ngIf="detailData?.esignCheckStatus===2" style="color:  #1890ff;"><i nz-icon | ||||
|                         nzType="close-circle" nzTheme="fill" class="mr-xs"></i>未认证 | ||||
|         <label *ngIf="detailData?.esignCheckStatus === 2" style="color: #1890ff" | ||||
|           ><i nz-icon nzType="close-circle" nzTheme="fill" class="mr-xs"></i>未认证 | ||||
|         </label> | ||||
|       </p> | ||||
|     </sv-title> | ||||
|     <sv label="公司名称"> | ||||
|             <input nz-input type="text" [(ngModel)]="detailData.enterpriseName" [readonly]="!isEdit" | ||||
|                 [nzBorderless]="!isEdit" [placeholder]="isEdit?'':'-'"> | ||||
|       <input | ||||
|         nz-input | ||||
|         type="text" | ||||
|         [(ngModel)]="detailData.enterpriseName" | ||||
|         [readonly]="!isEdit" | ||||
|         [nzBorderless]="!isEdit" | ||||
|         [placeholder]="isEdit ? '' : '-'" | ||||
|       /> | ||||
|     </sv> | ||||
|     <sv label="统一社会信用代码"> | ||||
|             <input nz-input type="text" [(ngModel)]="detailData.unifiedSocialCreditCode" [readonly]="!isEdit" | ||||
|                 [nzBorderless]="!isEdit" [placeholder]="isEdit?'':'-'"> | ||||
|       <input | ||||
|         nz-input | ||||
|         type="text" | ||||
|         [(ngModel)]="detailData.unifiedSocialCreditCode" | ||||
|         [readonly]="!isEdit" | ||||
|         [nzBorderless]="!isEdit" | ||||
|         [placeholder]="isEdit ? '' : '-'" | ||||
|       /> | ||||
|     </sv> | ||||
|     <sv label="营业执照" col="2"> | ||||
|       <ng-container | ||||
|                 *ngTemplateOutlet="uploadTemplate;context:{data:detailData,status:isEdit,key:'licensePhotoWatermark',key2:'licensePhoto',hover:'detailPhoto'}"> | ||||
|         *ngTemplateOutlet=" | ||||
|           uploadTemplate; | ||||
|           context: { data: detailData, status: isEdit, key: 'licensePhotoWatermark', key2: 'licensePhoto', hover: 'detailPhoto' } | ||||
|         " | ||||
|       > | ||||
|       </ng-container> | ||||
|     </sv> | ||||
|  | ||||
|     <sv label="营业期限" col="1"> | ||||
|             <nz-date-picker [(ngModel)]="detailData.operatingStartTime" [nzDisabled]="!isEdit" nzPlaceHolder=" " | ||||
|                 [nzBorderless]="!isEdit" [nzSuffixIcon]="isEdit?'calendar':''" style="width: 100px;" class="calendar"> | ||||
|       <nz-date-picker | ||||
|         [(ngModel)]="detailData.operatingStartTime" | ||||
|         [nzDisabled]="!isEdit" | ||||
|         nzPlaceHolder=" " | ||||
|         [nzBorderless]="!isEdit" | ||||
|         [nzSuffixIcon]="isEdit ? 'calendar' : ''" | ||||
|         style="width: 100px" | ||||
|         class="calendar" | ||||
|       > | ||||
|       </nz-date-picker> | ||||
|       - | ||||
|       <ng-container *ngIf="!isEdit && !detailData?.operatingEndTime && detailData?.operatingStartTime"> | ||||
|                 <label style="padding-left: 11px;">长期</label> | ||||
|         <label style="padding-left: 11px">长期</label> | ||||
|       </ng-container> | ||||
|             <nz-date-picker [(ngModel)]="detailData.operatingEndTime" [nzDisabled]="!isEdit" nzPlaceHolder=" " | ||||
|                 [nzBorderless]="!isEdit" [nzSuffixIcon]="isEdit?'calendar':''" style="width: 100px;" class="calendar"> | ||||
|       <nz-date-picker | ||||
|         [(ngModel)]="detailData.operatingEndTime" | ||||
|         [nzDisabled]="!isEdit" | ||||
|         nzPlaceHolder=" " | ||||
|         [nzBorderless]="!isEdit" | ||||
|         [nzSuffixIcon]="isEdit ? 'calendar' : ''" | ||||
|         style="width: 100px" | ||||
|         class="calendar" | ||||
|       > | ||||
|       </nz-date-picker> | ||||
|       <ng-container *ngIf="isEdit"> | ||||
|                 <label nz-checkbox [ngModel]="!!!detailData.operatingEndTime" | ||||
|                     (ngModelChange)="$event?detailData.operatingEndTime='':''" class="ml-sm">长期</label> | ||||
|         <label | ||||
|           nz-checkbox | ||||
|           [ngModel]="!!!detailData.operatingEndTime" | ||||
|           (ngModelChange)="$event ? (detailData.operatingEndTime = '') : ''" | ||||
|           class="ml-sm" | ||||
|           >长期</label | ||||
|         > | ||||
|       </ng-container> | ||||
|     </sv> | ||||
|   </sv-container> | ||||
| @ -206,49 +297,94 @@ | ||||
|   <sv-container col="3" class="mt16"> | ||||
|     <sv-title>企业法人信息</sv-title> | ||||
|     <sv label="法定代表人"> | ||||
|             <input nz-input type="text" [(ngModel)]="detailData.legalPersonIdentityVO.name" [readonly]="!isEdit" | ||||
|                 [nzBorderless]="!isEdit" [placeholder]="isEdit?'':'-'"> | ||||
|       <input | ||||
|         nz-input | ||||
|         type="text" | ||||
|         [(ngModel)]="detailData.legalPersonIdentity.name" | ||||
|         [readonly]="!isEdit" | ||||
|         [nzBorderless]="!isEdit" | ||||
|         [placeholder]="isEdit ? '' : '-'" | ||||
|       /> | ||||
|     </sv> | ||||
|     <sv label="身份证号码"> | ||||
|             <input nz-input type="text" [(ngModel)]="detailData.legalPersonIdentityVO.certificateNumber" | ||||
|                 [readonly]="!isEdit" [nzBorderless]="!isEdit" [placeholder]="isEdit?'':'-'"> | ||||
|       <input | ||||
|         nz-input | ||||
|         type="text" | ||||
|         [(ngModel)]="detailData.legalPersonIdentity.certificateNumber" | ||||
|         [readonly]="!isEdit" | ||||
|         [nzBorderless]="!isEdit" | ||||
|         [placeholder]="isEdit ? '' : '-'" | ||||
|       /> | ||||
|     </sv> | ||||
|     <sv label="身份证有效期" col="1"> | ||||
|             <nz-date-picker [(ngModel)]="detailData.legalPersonIdentityVO.validStartTime" [nzDisabled]="!isEdit" | ||||
|                 nzPlaceHolder=" " [nzBorderless]="!isEdit" [nzSuffixIcon]="isEdit?'calendar':''" style="width: 100px;" | ||||
|                 class="calendar"></nz-date-picker> | ||||
|       <nz-date-picker | ||||
|         [(ngModel)]="detailData.legalPersonIdentity.validStartTime" | ||||
|         [nzDisabled]="!isEdit" | ||||
|         nzPlaceHolder=" " | ||||
|         [nzBorderless]="!isEdit" | ||||
|         [nzSuffixIcon]="isEdit ? 'calendar' : ''" | ||||
|         style="width: 100px" | ||||
|         class="calendar" | ||||
|       ></nz-date-picker> | ||||
|       - | ||||
|             <ng-container | ||||
|                 *ngIf="!isEdit && !detailData?.legalPersonIdentityVO?.validEndTime && detailData.legalPersonIdentityVO.validStartTime"> | ||||
|                 <label style="padding-left: 11px;">长期</label> | ||||
|       <ng-container *ngIf="!isEdit && !detailData?.legalPersonIdentity?.validEndTime && detailData.legalPersonIdentity.validStartTime"> | ||||
|         <label style="padding-left: 11px">长期</label> | ||||
|       </ng-container> | ||||
|             <nz-date-picker [(ngModel)]="detailData.legalPersonIdentityVO.validEndTime" [nzDisabled]="!isEdit" | ||||
|                 nzPlaceHolder=" " [nzBorderless]="!isEdit" [nzSuffixIcon]="isEdit?'calendar':''" style="width: 100px;" | ||||
|                 class="calendar"></nz-date-picker> | ||||
|       <nz-date-picker | ||||
|         [(ngModel)]="detailData.legalPersonIdentity.validEndTime" | ||||
|         [nzDisabled]="!isEdit" | ||||
|         nzPlaceHolder=" " | ||||
|         [nzBorderless]="!isEdit" | ||||
|         [nzSuffixIcon]="isEdit ? 'calendar' : ''" | ||||
|         style="width: 100px" | ||||
|         class="calendar" | ||||
|       ></nz-date-picker> | ||||
|       <ng-container *ngIf="isEdit"> | ||||
|                 <label nz-checkbox [ngModel]="!!!detailData.legalPersonIdentityVO.validEndTime" | ||||
|                     (ngModelChange)="$event?detailData.legalPersonIdentityVO.validEndTime='':''" | ||||
|                     class="ml-sm">长期</label> | ||||
|         <label | ||||
|           nz-checkbox | ||||
|           [ngModel]="!!!detailData.legalPersonIdentity.validEndTime" | ||||
|           (ngModelChange)="$event ? (detailData.legalPersonIdentity.validEndTime = '') : ''" | ||||
|           class="ml-sm" | ||||
|           >长期</label | ||||
|         > | ||||
|       </ng-container> | ||||
|     </sv> | ||||
|     <sv label="身份证照" col="1"> | ||||
|       <div class="d-flex"> | ||||
|         <ng-container | ||||
|                     *ngTemplateOutlet="uploadTemplate;context:{data:detailData?.legalPersonIdentityVO,status:isEdit,key:'certificatePhotoFrontWatermark',key2:'certificatePhotoFront',hover:'legalFront'}"> | ||||
|           *ngTemplateOutlet=" | ||||
|             uploadTemplate; | ||||
|             context: { | ||||
|               data: detailData?.legalPersonIdentity, | ||||
|               status: isEdit, | ||||
|               key: 'certificatePhotoFrontWatermark', | ||||
|               key2: 'certificatePhotoFront', | ||||
|               hover: 'legalFront' | ||||
|             } | ||||
|           " | ||||
|         > | ||||
|         </ng-container> | ||||
|         <ng-container | ||||
|                     *ngTemplateOutlet="uploadTemplate;context:{data:detailData?.legalPersonIdentityVO,status:isEdit,key:'certificatePhotoBackWatermark',key2:'certificatePhotoBack',hover:'legalBack'}"> | ||||
|           *ngTemplateOutlet=" | ||||
|             uploadTemplate; | ||||
|             context: { | ||||
|               data: detailData?.legalPersonIdentity, | ||||
|               status: isEdit, | ||||
|               key: 'certificatePhotoBackWatermark', | ||||
|               key2: 'certificatePhotoBack', | ||||
|               hover: 'legalBack' | ||||
|             } | ||||
|           " | ||||
|         > | ||||
|         </ng-container> | ||||
|       </div> | ||||
|     </sv> | ||||
|     <sv label="所属城市"> | ||||
|       <ng-container *ngIf="isEdit; else cascaderelseTemplate"> | ||||
|                 <nz-cascader [(ngModel)]="enterpriseAddressCode" [nzLoadData]="loadRegionData"> | ||||
|                 </nz-cascader> | ||||
|         <nz-cascader [(ngModel)]="enterpriseAddressCode" [nzLoadData]="loadRegionData"> </nz-cascader> | ||||
|       </ng-container> | ||||
|       <ng-template #cascaderelseTemplate> | ||||
|                 {{ detailData?.fullRegionVO?.provinceName }}{{ detailData?.fullRegionVO?.cityName }}{{ | ||||
|                 detailData?.fullRegionVO?.areaName }} | ||||
|         {{ detailData?.fullRegionVO?.provinceName }}{{ detailData?.fullRegionVO?.cityName }}{{ detailData?.fullRegionVO?.areaName }} | ||||
|       </ng-template> | ||||
|     </sv> | ||||
|   </sv-container> | ||||
| @ -256,15 +392,9 @@ | ||||
|   <nz-divider></nz-divider> | ||||
|   <sv-container col="3" class="mt16"> | ||||
|     <sv-title>渠道销售信息</sv-title> | ||||
|         <sv label="姓名"> | ||||
|             张学友 | ||||
|         </sv> | ||||
|         <sv label="手机号"> | ||||
|             13999999999 | ||||
|         </sv> | ||||
|         <sv label="绑定时间"> | ||||
|             2021-09-23 14:43:31 | ||||
|         </sv> | ||||
|     <sv label="姓名"> 张学友 </sv> | ||||
|     <sv label="手机号"> 13999999999 </sv> | ||||
|     <sv label="绑定时间"> 2021-09-23 14:43:31 </sv> | ||||
|   </sv-container> | ||||
| </nz-card> | ||||
|  | ||||
| @ -272,8 +402,16 @@ | ||||
|   <sv-container col="3" class="mt16"> | ||||
|     <sv-title>修改渠道销售记录</sv-title> | ||||
|     <sv label=""> | ||||
|             <st #st [data]="service.$mock_url" [columns]="columns.logsColumn" [loading]="service.http.loading" bordered | ||||
|                 size="small" [page]="{show:false}" [scroll]="{ x:'1200px' }"> | ||||
|       <st | ||||
|         #st | ||||
|         [data]="service.$api_get_personal_channel_list" | ||||
|         [columns]="columns.logsColumn" | ||||
|         [loading]="service.http.loading" | ||||
|         bordered | ||||
|         size="small" | ||||
|         [page]="{ show: false }" | ||||
|         [scroll]="{ x: '1200px' }" | ||||
|       > | ||||
|       </st> | ||||
|     </sv> | ||||
|   </sv-container> | ||||
| @ -282,30 +420,40 @@ | ||||
| <ng-template #PopconfirmTempalte let-title="title" let-content="content"> | ||||
|   <div class="ant-popover-message"> | ||||
|     <i nz-icon nzType="info-circle" nzTheme="fill"></i> | ||||
|         <div class="ant-popover-message-title ng-star-inserted self-ant-popover-title" style="font-size: 16px">{{title}} | ||||
|         </div> | ||||
|     <div class="ant-popover-message-title ng-star-inserted self-ant-popover-title" style="font-size: 16px">{{ title }} </div> | ||||
|     <div class="ant-popover-message-title ng-star-inserted"> | ||||
|             {{content}} | ||||
|       {{ content }} | ||||
|     </div> | ||||
|   </div> | ||||
| </ng-template> | ||||
|  | ||||
| <ng-template #uploadTemplate let-data="data" let-status="status" let-key="key" let-key2="key2" let-hover="hover"> | ||||
|     <nz-upload class="avatar-uploader" [nzAction]="uploadURl" nzName="multipartFile" nzListType="picture-card" | ||||
|         [nzShowUploadList]="false" nzFileType="image/png,image/jpeg,image/jpg,image/gif" | ||||
|         [nzDisabled]="!isEdit || disabledUpload" (nzChange)="changeUpload($event,data,key,key2,hover)"> | ||||
|   <nz-upload | ||||
|     class="avatar-uploader" | ||||
|     [nzAction]="uploadURl" | ||||
|     nzName="multipartFile" | ||||
|     nzListType="picture-card" | ||||
|     [nzShowUploadList]="false" | ||||
|     nzFileType="image/png,image/jpeg,image/jpg,image/gif" | ||||
|     [nzDisabled]="!isEdit || disabledUpload" | ||||
|     (nzChange)="changeUpload($event, data, key, key2, hover)" | ||||
|   > | ||||
|     <ng-container *ngIf="!data[key] && isEdit"> | ||||
|       <i class="upload-icon" nz-icon [nzType]="service.http.loading ? 'loading' : 'plus'"></i> | ||||
|       <div class="ant-upload-text">上传</div> | ||||
|     </ng-container> | ||||
|         <div *ngIf="data[key]" (mouseover)="detailData[hover]=true" (mouseleave)="detailData[hover]=false" | ||||
|             (click)="$event.cancelBubble=true" class="image-hover"> | ||||
|             <img [src]="data[key]" style="width: 200px;height: 160px;" (click)="service.showImg(data[key])" /> | ||||
|     <div | ||||
|       *ngIf="data[key]" | ||||
|       (mouseover)="detailData[hover] = true" | ||||
|       (mouseleave)="detailData[hover] = false" | ||||
|       (click)="$event.cancelBubble = true" | ||||
|       class="image-hover" | ||||
|     > | ||||
|       <img [src]="data[key]" style="width: 200px; height: 160px" (click)="service.showImg(data[key])" /> | ||||
|       <div class="mask" *ngIf="detailData[hover] && isEdit"></div> | ||||
|       <div class="mask-over" *ngIf="detailData[hover] && isEdit"> | ||||
|                 <i nz-icon nzType="close-circle" nzTheme="fill" class="delete-icon" | ||||
|                     (click)="deleteImg(data,key,key2)"></i> | ||||
|                 <div style="display: flex;align-items: center;"> | ||||
|         <i nz-icon nzType="close-circle" nzTheme="fill" class="delete-icon" (click)="deleteImg(data, key, key2)"></i> | ||||
|         <div style="display: flex; align-items: center"> | ||||
|           <i nz-icon nzType="eye" nzTheme="fill" class="show-icon" (click)="service.showImg(data[key])"></i> | ||||
|         </div> | ||||
|       </div> | ||||
| @ -315,12 +463,28 @@ | ||||
|  | ||||
| <ng-template #logModal> | ||||
|   <h2>转移客户数:10</h2> | ||||
|     <st #st [data]="service.$mock_url" [columns]="columns.changeColumn" [loading]="service.http.loading" bordered | ||||
|         size="small" [page]="{show:false}" [scroll]="{ x:'750px' }"> | ||||
|   <st | ||||
|     #st | ||||
|     [data]="service.$mock_url" | ||||
|     [columns]="columns.changeColumn" | ||||
|     [loading]="service.http.loading" | ||||
|     bordered | ||||
|     size="small" | ||||
|     [page]="{ show: false }" | ||||
|     [scroll]="{ x: '750px' }" | ||||
|   > | ||||
|   </st> | ||||
|   <h2>不转移客户数:10</h2> | ||||
|     <st #st [data]="service.$mock_url" [columns]="columns.beChangeColumn" [loading]="service.http.loading" bordered | ||||
|         size="small" [page]="{show:false}" [scroll]="{ x:'750px' }"> | ||||
|   <st | ||||
|     #st | ||||
|     [data]="service.$mock_url" | ||||
|     [columns]="columns.beChangeColumn" | ||||
|     [loading]="service.http.loading" | ||||
|     bordered | ||||
|     size="small" | ||||
|     [page]="{ show: false }" | ||||
|     [scroll]="{ x: '750px' }" | ||||
|   > | ||||
|   </st> | ||||
|   <p> | ||||
|     客户转移:客户跟着上级合伙人转移一并到新渠道销售下,会同步发起CRM《客户转移》流程;不转移的,客户会与上级合伙人解绑,修改成功后,修改时间也是合伙人与客户的结算结束时间,成为原来渠道销售的直客。 | ||||
|  | ||||
| @ -1,10 +1,11 @@ | ||||
| import { DatePipe } from '@angular/common'; | ||||
| import { Component, OnInit, ViewChild } from '@angular/core'; | ||||
| import { Component, OnDestroy, OnInit, ViewChild } from '@angular/core'; | ||||
| import { ActivatedRoute } from '@angular/router'; | ||||
| import { apiConf } from '@conf/api.conf'; | ||||
| import { STColumn } from '@delon/abc/st'; | ||||
| import { NzModalService } from 'ng-zorro-antd/modal'; | ||||
| import { Subscription, fromEvent } from 'rxjs'; | ||||
|  | ||||
| import { PartnerListService } from '../../services/partner-list.service'; | ||||
| import { PartnerAuditModalComponent } from '../partner-audit-modal/partner-audit-modal.component'; | ||||
|  | ||||
| @ -14,13 +15,13 @@ import { PartnerAuditModalComponent } from '../partner-audit-modal/partner-audit | ||||
|   styleUrls: ['./partner-detail.component.less'], | ||||
|   providers: [DatePipe] | ||||
| }) | ||||
| export class PartnerDetailComponent implements OnInit { | ||||
| export class PartnerDetailComponent implements OnInit, OnDestroy { | ||||
|   @ViewChild('logModal') | ||||
|   logModal: any; | ||||
|  | ||||
|   columns: { logsColumn: STColumn[]; changeColumn: STColumn[]; beChangeColumn: STColumn[] } = this.initST(); | ||||
|  | ||||
|   detailData: any = { adminUserInfo: { name: '' }, legalPersonIdentityVO: { name: '' } }; | ||||
|   detailData: any = { adminUserInfo: { name: '' }, legalPersonIdentity: { name: '' } }; | ||||
|   tempalateData = { ...this.detailData }; | ||||
|  | ||||
|   isEdit = false; | ||||
| @ -64,21 +65,21 @@ export class PartnerDetailComponent implements OnInit { | ||||
|   } | ||||
|  | ||||
|   initData() { | ||||
|     // this.service | ||||
|     //   .request(this.service.$api_get_freight_detail, { | ||||
|     //     id: this.route.snapshot.params.id | ||||
|     //   }) | ||||
|     //   .subscribe(res => { | ||||
|     //     if (res) { | ||||
|     //       this.detailData = res; | ||||
|     //       this.tempalateData = { ...this.detailData }; | ||||
|     //       this.enterpriseAddressCode = [ | ||||
|     //         Number(this.detailData.fullRegionVO?.provinceCode), | ||||
|     //         Number(this.detailData.fullRegionVO?.cityCode), | ||||
|     //         Number(this.detailData.fullRegionVO?.areaCode) | ||||
|     //       ]; | ||||
|     //     } | ||||
|     //   }); | ||||
|     this.service | ||||
|       .request(this.service.$api_get_ent_partner_detail, { | ||||
|         id: this.route.snapshot.params.id | ||||
|       }) | ||||
|       .subscribe(res => { | ||||
|         if (res) { | ||||
|           this.detailData = res; | ||||
|           console.log(this.detailData); | ||||
|  | ||||
|           this.tempalateData = { ...this.detailData }; | ||||
|           if (this.detailData?.cityCodes) { | ||||
|             this.enterpriseAddressCode = JSON.parse(this.detailData.cityCodes); | ||||
|           } | ||||
|         } | ||||
|       }); | ||||
|   } | ||||
|  | ||||
|   goBack() { | ||||
| @ -161,6 +162,7 @@ export class PartnerDetailComponent implements OnInit { | ||||
|  | ||||
|   /** | ||||
|    * 级联获取地区数据 | ||||
|    * | ||||
|    * @param node 节点 | ||||
|    * @param index 层级 | ||||
|    * @returns | ||||
| @ -186,9 +188,9 @@ export class PartnerDetailComponent implements OnInit { | ||||
|  | ||||
|   save() { | ||||
|     const dateil = { ...this.detailData }; | ||||
|     Object.assign(dateil.legalPersonIdentityVO, { | ||||
|       validStartTime: this.datePipe.transform(dateil.legalPersonIdentityVO.validStartTime, 'yyyy-MM-dd'), | ||||
|       validEndTime: this.datePipe.transform(dateil.legalPersonIdentityVO.validEndTime, 'yyyy-MM-dd') | ||||
|     Object.assign(dateil.legalPersonIdentity, { | ||||
|       validStartTime: this.datePipe.transform(dateil.legalPersonIdentity.validStartTime, 'yyyy-MM-dd'), | ||||
|       validEndTime: this.datePipe.transform(dateil.legalPersonIdentity.validEndTime, 'yyyy-MM-dd') | ||||
|     }); | ||||
|     const params = {}; | ||||
|     Object.assign(params, { | ||||
| @ -207,7 +209,7 @@ export class PartnerDetailComponent implements OnInit { | ||||
|       enterpriseRegistrationTime: this.datePipe.transform(dateil.enterpriseRegistrationTime, 'yyyy-MM-dd'), | ||||
|       enterpriseType: dateil.enterpriseType, | ||||
|       id: dateil.id, | ||||
|       legalPersonIdentityDTO: { ...dateil.legalPersonIdentityVO }, | ||||
|       legalPersonIdentityDTO: { ...dateil.legalPersonIdentity }, | ||||
|       licensePhoto: dateil.licensePhoto, | ||||
|       licensePhotoWatermark: dateil.licensePhotoWatermark, | ||||
|       networkTransporter: dateil.networkTransporter, | ||||
| @ -243,21 +245,21 @@ export class PartnerDetailComponent implements OnInit { | ||||
|     //       if (isFront === 'front') { | ||||
|     //         // 正面 | ||||
|     //         if (res.name) { | ||||
|     //           this.detailData.legalPersonIdentityVO.name = res.name; | ||||
|     //           this.detailData.legalPersonIdentity.name = res.name; | ||||
|     //         } | ||||
|     //         if (res.number) { | ||||
|     //           this.detailData.legalPersonIdentityVO.certificateNumber = res.number; | ||||
|     //           this.detailData.legalPersonIdentity.certificateNumber = res.number; | ||||
|     //         } | ||||
|     //       } | ||||
|     //       if (isFront === 'back') { | ||||
|     //         // 背面 | ||||
|     //         if (res.validFrom) { | ||||
|     //           this.detailData.legalPersonIdentityVO.validStartTime = res.validFrom; | ||||
|     //           this.detailData.legalPersonIdentity.validStartTime = res.validFrom; | ||||
|     //         } | ||||
|     //         if (res.validTo) { | ||||
|     //           this.detailData.legalPersonIdentityVO.validEndTime = res.validTo; | ||||
|     //           this.detailData.legalPersonIdentity.validEndTime = res.validTo; | ||||
|     //         } else { | ||||
|     //           this.detailData.legalPersonIdentityVO.validEndTime = null; | ||||
|     //           this.detailData.legalPersonIdentity.validEndTime = null; | ||||
|     //         } | ||||
|     //       } | ||||
|     //     } | ||||
| @ -320,13 +322,13 @@ export class PartnerDetailComponent implements OnInit { | ||||
|   private initST(): { logsColumn: STColumn[]; changeColumn: STColumn[]; beChangeColumn: STColumn[] } { | ||||
|     return { | ||||
|       logsColumn: [ | ||||
|         { title: '修改后渠道销售', index: 'payCode', width: 180 }, | ||||
|         { title: '修改前渠道销售', index: 'ltdName', width: 160 }, | ||||
|         { title: '转移客户数', index: 'payDate', className: 'text-center', width: 130 }, | ||||
|         { title: '生效节点', index: 'payDate', width: 150 }, | ||||
|         { title: '备注', index: 'payDate', className: 'text-center', width: 150 }, | ||||
|         { title: '修改时间', index: 'payDate', className: 'text-center', width: 130 }, | ||||
|         { title: '操作人', index: 'payDate', type: 'date', width: 130 }, | ||||
|         { title: '修改后渠道销售', index: 'newChannelId', width: 180 }, | ||||
|         { title: '修改前渠道销售', index: 'originalChannelId', width: 160 }, | ||||
|         { title: '转移客户数', index: 'quantity', className: 'text-center', width: 130 }, | ||||
|         { title: '生效节点', index: 'effectiveNode', width: 150, type: 'enum', enum: { 1: '立即生效', 2: 'CRM审核后生效' } }, | ||||
|         { title: '备注', index: 'remark', className: 'text-center', width: 150 }, | ||||
|         { title: '修改时间', index: 'modifyTime', className: 'text-center', width: 130 }, | ||||
|         { title: '操作人', index: 'modifyUserId', type: 'date', width: 130 }, | ||||
|         { | ||||
|           title: '操作', | ||||
|           fixed: 'right', | ||||
|  | ||||
| @ -0,0 +1,253 @@ | ||||
| <!-- 页头 --> | ||||
| <page-header-wrapper [logo]="logo" [content]="content" [title]="'合伙人详情'"> | ||||
|   <ng-template #logo> | ||||
|     <button nz-button nz-tooltip nzTooltipTitle="返回上一页" (click)="goBack()"> | ||||
|       <i nz-icon nzType="left" nzTheme="outline"></i> | ||||
|     </button> | ||||
|   </ng-template> | ||||
|   <ng-template #content> | ||||
|     <nz-skeleton [nzLoading]="false"> | ||||
|       <div class="user-info" nz-row> | ||||
|         <div nz-col [nzXl]="18" [nzLg]="24" [nzSm]="24" [nzXs]="24" class="d-flex"> | ||||
|           <img [src]="detailData?.enterpriseLogo" /> | ||||
|           <div style="flex: 1"> | ||||
|             <div nz-row> | ||||
|               <div nz-col [nzLg]="12" [nzSm]="24" [nzXs]="24"> | ||||
|                 <p style="margin-bottom: 0">{{ detailData?.enterpriseName }}</p> | ||||
|               </div> | ||||
|               <div nz-col [nzLg]="12" [nzSm]="24" [nzXs]="24"> | ||||
|                 <nz-badge nzStatus="success" nzText="正常" *ngIf="detailData?.stateLocked === 0"> </nz-badge> | ||||
|                 <nz-badge nzStatus="error" nzText="冻结" *ngIf="detailData?.stateLocked === 1"></nz-badge> | ||||
|               </div> | ||||
|             </div> | ||||
|             <div nz-row> | ||||
|               <div nz-col [nzLg]="12" [nzSm]="24" [nzXs]="24"> | ||||
|                 <p>{{ detailData?.unifiedSocialCreditCode }}</p> | ||||
|               </div> | ||||
|               <div nz-col [nzLg]="12" [nzSm]="24" [nzXs]="24"> 个人合伙人 </div> | ||||
|             </div> | ||||
|             <div nz-row> | ||||
|               <div nz-col [nzLg]="12" [nzSm]="24" [nzXs]="24"> 注册时间:{{ detailData?.createTime }} </div> | ||||
|               <div nz-col [nzLg]="12" [nzSm]="24" [nzXs]="24"> | ||||
|                 所属城市:{{ detailData?.cityCodesList?.provinceName }}{{ detailData?.cityCodesList?.cityName }} | ||||
|               </div> | ||||
|             </div> | ||||
|           </div> | ||||
|         </div> | ||||
|         <div nz-col [nzXl]="6" [nzLg]="24" [nzSm]="24" [nzXs]="24" class="text-right mt-sm"> | ||||
|           <ng-container *ngIf="isEdit; else editButton"> | ||||
|             <button [disabled]="service.http.loading" nz-button (click)="reset()"> 取消 </button> | ||||
|             <button [disabled]="service.http.loading" nz-button nzDanger (click)="save()"> 保存 </button> | ||||
|           </ng-container> | ||||
|           <ng-template #editButton> | ||||
|             <ng-container> | ||||
|               <button [disabled]="service.http.loading" nz-button nzDanger (click)="auditPartner(true)"> 通过 </button> | ||||
|               <button [disabled]="service.http.loading" nz-button nzDanger (click)="auditPartner(false)"> 驳回 </button> | ||||
|             </ng-container> | ||||
|             <ng-container *ngIf="detailData?.approvalStatus != 10"> | ||||
|               <button | ||||
|                 [disabled]="service.http.loading" | ||||
|                 nz-button | ||||
|                 nzDanger | ||||
|                 nz-popconfirm | ||||
|                 [nzPopconfirmTitle]="enable" | ||||
|                 (nzOnConfirm)="freezeOrResume(0)" | ||||
|                 nzPopconfirmPlacement="bottomRight" | ||||
|                 *ngIf="detailData?.stateLocked" | ||||
|                 acl | ||||
|                 [acl-ability]="['USERCENTER-FREIGHT-ENTERPRISE-D-lock']" | ||||
|               > | ||||
|                 启用 | ||||
|               </button> | ||||
|               <button | ||||
|                 [disabled]="service.http.loading" | ||||
|                 nz-button | ||||
|                 nzDanger | ||||
|                 nz-popconfirm | ||||
|                 [nzPopconfirmTitle]="frozen" | ||||
|                 (nzOnConfirm)="freezeOrResume(1)" | ||||
|                 nzPopconfirmPlacement="bottomRight" | ||||
|                 *ngIf="!detailData?.stateLocked" | ||||
|                 acl | ||||
|                 [acl-ability]="['USERCENTER-FREIGHT-ENTERPRISE-D-lock']" | ||||
|               > | ||||
|                 冻结 | ||||
|               </button> | ||||
|             </ng-container> | ||||
|             <button [disabled]="service.http.loading" nz-button nzDanger (click)="ratify()"> 修改 </button> | ||||
|           </ng-template> | ||||
|         </div> | ||||
|       </div> | ||||
|     </nz-skeleton> | ||||
|   </ng-template> | ||||
|  | ||||
|   <ng-template #frozen> | ||||
|     <ng-container | ||||
|       *ngTemplateOutlet=" | ||||
|         PopconfirmTempalte; | ||||
|         context: { title: '确定冻结该企业吗?', content: '停用后,该企业将被限制使用,不限于访问受限、无法发布货源等,请谨慎操作' } | ||||
|       " | ||||
|     > | ||||
|     </ng-container> | ||||
|   </ng-template> | ||||
|   <ng-template #enable> | ||||
|     <ng-container | ||||
|       *ngTemplateOutlet=" | ||||
|         PopconfirmTempalte; | ||||
|         context: { title: '确定启用该企业吗?', content: '启用后,该企业将恢复正常使用功能,请再次确认' } | ||||
|       " | ||||
|     > | ||||
|     </ng-container> | ||||
|   </ng-template> | ||||
| </page-header-wrapper> | ||||
|  | ||||
| <nz-card [class]="isEdit ? 'edit-box' : 'readOnly-box'"> | ||||
|   <sv-container col="3" class="mt16"> | ||||
|     <sv-title>合伙人信息</sv-title> | ||||
|     <sv label="姓名"> | ||||
|       <input | ||||
|         nz-input | ||||
|         type="text" | ||||
|         [(ngModel)]="detailData.adminUserInfo.name" | ||||
|         [readonly]="!isEdit" | ||||
|         [nzBorderless]="!isEdit" | ||||
|         [placeholder]="isEdit ? '' : '-'" | ||||
|       /> | ||||
|     </sv> | ||||
|     <sv label="手机号"> | ||||
|       <input | ||||
|         nz-input | ||||
|         type="text" | ||||
|         [(ngModel)]="detailData.adminUserInfo.certificateNumber" | ||||
|         [readonly]="!isEdit" | ||||
|         [nzBorderless]="!isEdit" | ||||
|         [placeholder]="isEdit ? '' : '-'" | ||||
|       /> | ||||
|     </sv> | ||||
|     <sv label="身份证号"> | ||||
|       <input | ||||
|         nz-input | ||||
|         type="text" | ||||
|         [(ngModel)]="detailData.adminUserInfo.certificateNumber" | ||||
|         [readonly]="!isEdit" | ||||
|         [nzBorderless]="!isEdit" | ||||
|         [placeholder]="isEdit ? '' : '-'" | ||||
|       /> | ||||
|     </sv> | ||||
|     <sv label="身份证有效期" col="1"> | ||||
|       <nz-date-picker | ||||
|         [(ngModel)]="detailData.adminUserInfo.validStartTime" | ||||
|         [nzDisabled]="!isEdit" | ||||
|         nzPlaceHolder=" " | ||||
|         [nzBorderless]="!isEdit" | ||||
|         [nzSuffixIcon]="isEdit ? 'calendar' : ''" | ||||
|         style="width: 100px" | ||||
|         class="calendar" | ||||
|       ></nz-date-picker> | ||||
|       - | ||||
|       <ng-container *ngIf="!isEdit && !detailData?.adminUserInfo?.validEndTime && detailData.adminUserInfo.validStartTime"> | ||||
|         <label style="padding-left: 11px">长期</label> | ||||
|       </ng-container> | ||||
|       <nz-date-picker | ||||
|         [(ngModel)]="detailData.adminUserInfo.validEndTime" | ||||
|         [nzDisabled]="!isEdit" | ||||
|         nzPlaceHolder=" " | ||||
|         [nzBorderless]="!isEdit" | ||||
|         [nzSuffixIcon]="isEdit ? 'calendar' : ''" | ||||
|         style="width: 100px" | ||||
|         class="calendar" | ||||
|       ></nz-date-picker> | ||||
|       <ng-container *ngIf="isEdit"> | ||||
|         <label | ||||
|           nz-checkbox | ||||
|           [ngModel]="!!!detailData.adminUserInfo.validEndTime" | ||||
|           (ngModelChange)="$event ? (detailData.adminUserInfo.validEndTime = '') : ''" | ||||
|           class="ml-sm" | ||||
|           >长期</label | ||||
|         > | ||||
|       </ng-container> | ||||
|     </sv> | ||||
|     <sv label="身份证照" col="1"> | ||||
|       <div class="d-flex"> | ||||
|         <ng-container | ||||
|           *ngTemplateOutlet=" | ||||
|             uploadTemplate; | ||||
|             context: { | ||||
|               data: detailData?.adminUserInfo, | ||||
|               status: isEdit, | ||||
|               key: 'certificatePhotoFrontWatermark', | ||||
|               key2: 'certificatePhotoFront', | ||||
|               hover: 'legalFront' | ||||
|             } | ||||
|           " | ||||
|         > | ||||
|         </ng-container> | ||||
|         <ng-container | ||||
|           *ngTemplateOutlet=" | ||||
|             uploadTemplate; | ||||
|             context: { | ||||
|               data: detailData?.adminUserInfo, | ||||
|               status: isEdit, | ||||
|               key: 'certificatePhotoBackWatermark', | ||||
|               key2: 'certificatePhotoBack', | ||||
|               hover: 'legalBack' | ||||
|             } | ||||
|           " | ||||
|         > | ||||
|         </ng-container> | ||||
|       </div> | ||||
|     </sv> | ||||
|     <sv label="所属城市"> | ||||
|       <ng-container *ngIf="isEdit; else cascaderelseTemplate"> | ||||
|         <nz-cascader [(ngModel)]="enterpriseAddressCode" [nzLoadData]="loadRegionData"> </nz-cascader> | ||||
|       </ng-container> | ||||
|       <ng-template #cascaderelseTemplate> | ||||
|         {{ detailData?.fullRegionVO?.provinceName }}{{ detailData?.fullRegionVO?.cityName }}{{ detailData?.fullRegionVO?.areaName }} | ||||
|       </ng-template> | ||||
|     </sv> | ||||
|   </sv-container> | ||||
| </nz-card> | ||||
|  | ||||
| <ng-template #PopconfirmTempalte let-title="title" let-content="content"> | ||||
|   <div class="ant-popover-message"> | ||||
|     <i nz-icon nzType="info-circle" nzTheme="fill"></i> | ||||
|     <div class="ant-popover-message-title ng-star-inserted self-ant-popover-title" style="font-size: 16px">{{ title }} </div> | ||||
|     <div class="ant-popover-message-title ng-star-inserted"> | ||||
|       {{ content }} | ||||
|     </div> | ||||
|   </div> | ||||
| </ng-template> | ||||
|  | ||||
| <ng-template #uploadTemplate let-data="data" let-status="status" let-key="key" let-key2="key2" let-hover="hover"> | ||||
|   <nz-upload | ||||
|     class="avatar-uploader" | ||||
|     [nzAction]="uploadURl" | ||||
|     nzName="multipartFile" | ||||
|     nzListType="picture-card" | ||||
|     [nzShowUploadList]="false" | ||||
|     nzFileType="image/png,image/jpeg,image/jpg,image/gif" | ||||
|     [nzDisabled]="!isEdit || disabledUpload" | ||||
|     (nzChange)="changeUpload($event, data, key, key2, hover)" | ||||
|   > | ||||
|     <ng-container *ngIf="!data[key] && isEdit"> | ||||
|       <i class="upload-icon" nz-icon [nzType]="service.http.loading ? 'loading' : 'plus'"></i> | ||||
|       <div class="ant-upload-text">上传</div> | ||||
|     </ng-container> | ||||
|     <div | ||||
|       *ngIf="data[key]" | ||||
|       (mouseover)="detailData[hover] = true" | ||||
|       (mouseleave)="detailData[hover] = false" | ||||
|       (click)="$event.cancelBubble = true" | ||||
|       class="image-hover" | ||||
|     > | ||||
|       <img [src]="data[key]" style="width: 200px; height: 160px" (click)="service.showImg(data[key])" /> | ||||
|       <div class="mask" *ngIf="detailData[hover] && isEdit"></div> | ||||
|       <div class="mask-over" *ngIf="detailData[hover] && isEdit"> | ||||
|         <i nz-icon nzType="close-circle" nzTheme="fill" class="delete-icon" (click)="deleteImg(data, key, key2)"></i> | ||||
|         <div style="display: flex; align-items: center"> | ||||
|           <i nz-icon nzType="eye" nzTheme="fill" class="show-icon" (click)="service.showImg(data[key])"></i> | ||||
|         </div> | ||||
|       </div> | ||||
|     </div> | ||||
|   </nz-upload> | ||||
| </ng-template> | ||||
| @ -0,0 +1,30 @@ | ||||
| @import '../../../../usercenter/less/edit.less'; | ||||
|  | ||||
|  | ||||
| .user-info { | ||||
|   font-size: 16px; | ||||
|  | ||||
|   .enterprise-name { | ||||
|     margin-right: 15px; | ||||
|   } | ||||
|  | ||||
|   img { | ||||
|     width        : 64px; | ||||
|     height       : 64px; | ||||
|     margin-right : 15px; | ||||
|     border-radius: 50%; | ||||
|   } | ||||
|  | ||||
|   .user-info-des { | ||||
|     margin-bottom: 5px; | ||||
|   } | ||||
| } | ||||
|  | ||||
| :host::ng-deep { | ||||
|   .affix { | ||||
|     position: fixed !important; | ||||
|     top     : 20px !important; | ||||
|     z-index : 999 !important; | ||||
|     width   : 100% !important; | ||||
|   } | ||||
| } | ||||
| @ -0,0 +1,240 @@ | ||||
| import { DatePipe } from '@angular/common'; | ||||
| import { Component, OnDestroy, OnInit, ViewChild } from '@angular/core'; | ||||
| import { ActivatedRoute } from '@angular/router'; | ||||
| import { apiConf } from '@conf/api.conf'; | ||||
| import { STColumn } from '@delon/abc/st'; | ||||
| import { NzModalService } from 'ng-zorro-antd/modal'; | ||||
| import { Subscription, fromEvent } from 'rxjs'; | ||||
|  | ||||
| import { PartnerListService } from '../../services/partner-list.service'; | ||||
| import { PartnerAuditModalComponent } from '../partner-audit-modal/partner-audit-modal.component'; | ||||
|  | ||||
| @Component({ | ||||
|   selector: 'app-personal-partner-detail', | ||||
|   templateUrl: './personal-partner-detail.component.html', | ||||
|   styleUrls: ['./personal-partner-detail.component.less'], | ||||
|   providers: [DatePipe] | ||||
| }) | ||||
| export class PersonalPartnerDetailComponent implements OnInit { | ||||
|   detailData: any = { adminUserInfo: { name: '' }, legalPersonIdentity: { name: '' } }; | ||||
|   tempalateData = { ...this.detailData }; | ||||
|  | ||||
|   isEdit = false; | ||||
|  | ||||
|   uploadURl = apiConf.waterFileUpload; | ||||
|   disabledUpload = false; | ||||
|   enterpriseAddressCode: any = []; | ||||
|  | ||||
|   constructor( | ||||
|     public service: PartnerListService, | ||||
|     private route: ActivatedRoute, | ||||
|     private nzModalService: NzModalService, | ||||
|     private datePipe: DatePipe | ||||
|   ) {} | ||||
|  | ||||
|   ngOnInit() { | ||||
|     this.initData(); | ||||
|   } | ||||
|  | ||||
|   initData() { | ||||
|     this.service | ||||
|       .request(this.service.$api_get_personal_partner_detail, { | ||||
|         id: this.route.snapshot.params.id | ||||
|       }) | ||||
|       .subscribe(res => { | ||||
|         if (res) { | ||||
|           this.detailData = res; | ||||
|           console.log(this.detailData); | ||||
|  | ||||
|           this.tempalateData = { ...this.detailData }; | ||||
|           if (this.detailData?.cityCodes) { | ||||
|             this.enterpriseAddressCode = JSON.parse(this.detailData.cityCodes); | ||||
|           } | ||||
|         } | ||||
|       }); | ||||
|   } | ||||
|  | ||||
|   goBack() { | ||||
|     window.history.go(-1); | ||||
|   } | ||||
|   /** | ||||
|    * 冻结 | ||||
|    */ | ||||
|   freezeOrResume(type: number) { | ||||
|     // this.service.http | ||||
|     //   .post(this.service.$api_lock_freight, { | ||||
|     //     id: this.route.snapshot.params.id, | ||||
|     //     statedLocked: !!type | ||||
|     //   }) | ||||
|     //   .subscribe(res => { | ||||
|     //     if (res.data === true) { | ||||
|     //       if (type === 0) { | ||||
|     //         this.service.msgSrv.success(`启用成功!`); | ||||
|     //       } else { | ||||
|     //         this.service.msgSrv.success(`冻结成功!`); | ||||
|     //       } | ||||
|     //       this.initData(); | ||||
|     //     } else { | ||||
|     //       this.service.msgSrv.error(res.msg || '操作失败!'); | ||||
|     //     } | ||||
|     //   }); | ||||
|   } | ||||
|  | ||||
|   auditPartner(isPass: boolean) { | ||||
|     const modal = this.nzModalService.create({ | ||||
|       nzTitle: '审核', | ||||
|       nzContent: PartnerAuditModalComponent, | ||||
|       nzComponentParams: { info: { ...this.detailData, isPass } }, | ||||
|       nzFooter: null | ||||
|     }); | ||||
|   } | ||||
|  | ||||
|   ratify() { | ||||
|     this.isEdit = true; | ||||
|   } | ||||
|  | ||||
|   deleteImg(data: any, key: string, key2: string) { | ||||
|     this.nzModalService.warning({ | ||||
|       nzTitle: '是否确认删除该图片', | ||||
|       nzOnOk: () => { | ||||
|         this.disabledUpload = true; | ||||
|         data[key] = ''; | ||||
|         data[key2] = ''; | ||||
|         setTimeout(() => { | ||||
|           this.disabledUpload = false; | ||||
|         }, 100); | ||||
|       } | ||||
|     }); | ||||
|   } | ||||
|   changeUpload({ file, fileList, type }: any, data: any, key: string, key2: string, id: string) { | ||||
|     if (type === 'success') { | ||||
|       data[key] = file.response.data?.fullFileWatermarkPath; | ||||
|       data[key2] = file.response.data?.fullFilePath; | ||||
|       if (id === 'legalFront' || id === 'legalBack') { | ||||
|         this.checkIdCard(file.response.data?.fullFilePath, id === 'legalFront' ? 'front' : 'back', 1); | ||||
|       } | ||||
|       if (id === 'certificateBackFront' || id === 'certificateBack') { | ||||
|         this.checkIdCard(file.response.data?.fullFilePath, id === 'certificateBackFront' ? 'front' : 'back', 0); | ||||
|       } | ||||
|     } | ||||
|   } | ||||
|  | ||||
|   /** | ||||
|    * 级联获取地区数据 | ||||
|    * | ||||
|    * @param node 节点 | ||||
|    * @param index 层级 | ||||
|    * @returns | ||||
|    */ | ||||
|   loadRegionData = (node: any, index: number) => { | ||||
|     return new Promise(resolve => { | ||||
|       this.service.request(this.service.$api_get_region_by_code, { regionCode: node?.regionCode || '' }).subscribe( | ||||
|         res => { | ||||
|           node.children = res.map((item: any) => ({ ...item, isLeaf: index === 1, value: item.regionCode, label: item.name })); | ||||
|         }, | ||||
|         _ => {}, | ||||
|         () => { | ||||
|           resolve(node); | ||||
|         } | ||||
|       ); | ||||
|     }); | ||||
|   }; | ||||
|  | ||||
|   reset() { | ||||
|     this.detailData = { ...this.tempalateData }; | ||||
|     this.isEdit = false; | ||||
|   } | ||||
|  | ||||
|   save() { | ||||
|     const dateil = { ...this.detailData }; | ||||
|     Object.assign(dateil.legalPersonIdentity, { | ||||
|       validStartTime: this.datePipe.transform(dateil.legalPersonIdentity.validStartTime, 'yyyy-MM-dd'), | ||||
|       validEndTime: this.datePipe.transform(dateil.legalPersonIdentity.validEndTime, 'yyyy-MM-dd') | ||||
|     }); | ||||
|     const params = {}; | ||||
|     Object.assign(params, { | ||||
|       adminMobile: dateil.adminMobile, | ||||
|       adminAppUserId: dateil.adminAppUserId, | ||||
|       adminUserInfo: { ...dateil.adminUserInfo }, | ||||
|       bankAccount: dateil.bankAccount, | ||||
|       businessScope: dateil.businessScope, | ||||
|       createBank: dateil.createBank, | ||||
|       creditPhoto: dateil.creditPhoto, | ||||
|       creditPhotoWatermark: dateil.creditPhotoWatermark, | ||||
|       enterpriseAddress: dateil.enterpriseAddress, | ||||
|       enterpriseAddressCode: this.enterpriseAddressCode[2], | ||||
|       enterpriseLogo: dateil.enterpriseLogo, | ||||
|       enterpriseName: dateil.enterpriseName, | ||||
|       enterpriseRegistrationTime: this.datePipe.transform(dateil.enterpriseRegistrationTime, 'yyyy-MM-dd'), | ||||
|       enterpriseType: dateil.enterpriseType, | ||||
|       id: dateil.id, | ||||
|       legalPersonIdentityDTO: { ...dateil.legalPersonIdentity }, | ||||
|       licensePhoto: dateil.licensePhoto, | ||||
|       licensePhotoWatermark: dateil.licensePhotoWatermark, | ||||
|       networkTransporter: dateil.networkTransporter, | ||||
|       oftenUsedServices: dateil.oftenUsedServices, | ||||
|       operatingEndTime: this.datePipe.transform(dateil.operatingEndTime, 'yyyy-MM-dd'), | ||||
|       operatingStartTime: this.datePipe.transform(dateil.operatingStartTime, 'yyyy-MM-dd'), | ||||
|       promotersTelephone: dateil.promotersTelephone, | ||||
|       registerAddress: dateil.registerAddress, | ||||
|       registerPhone: dateil.registerPhone, | ||||
|       registrationCapital: dateil.registrationCapital, | ||||
|       taxAuthority: dateil.taxAuthority, | ||||
|       unifiedSocialCreditCode: dateil.unifiedSocialCreditCode | ||||
|     }); | ||||
|     // this.service.request(this.service.$api_save_enterprise_admin, params).subscribe(res => { | ||||
|     //   if (res) { | ||||
|     //     this.service.msgSrv.success('企业修改成功'); | ||||
|     //     this.initData(); | ||||
|     //     this.isEdit = false; | ||||
|     //   } | ||||
|     // }); | ||||
|   } | ||||
|  | ||||
|   // 识别身份证 参数isFront:front-正面、back-背面;type:0-申请人身份证,1-法定代表人身份证 | ||||
|   checkIdCard(imgurl: any, isFront: string, type: number) { | ||||
|     const params = { | ||||
|       idCardUrl: imgurl, | ||||
|       side: isFront | ||||
|     }; | ||||
|     // this.service.request(this.service.$api_ocr_recognize_id_card, params).subscribe(res => { | ||||
|     //   if (res) { | ||||
|     //     if (type === 1) { | ||||
|     //       // 法定代表人证件照 | ||||
|     //       if (isFront === 'front') { | ||||
|     //         // 正面 | ||||
|     //         if (res.name) { | ||||
|     //           this.detailData.legalPersonIdentity.name = res.name; | ||||
|     //         } | ||||
|     //         if (res.number) { | ||||
|     //           this.detailData.legalPersonIdentity.certificateNumber = res.number; | ||||
|     //         } | ||||
|     //       } | ||||
|     //       if (isFront === 'back') { | ||||
|     //         // 背面 | ||||
|     //         if (res.validFrom) { | ||||
|     //           this.detailData.legalPersonIdentity.validStartTime = res.validFrom; | ||||
|     //         } | ||||
|     //         if (res.validTo) { | ||||
|     //           this.detailData.legalPersonIdentity.validEndTime = res.validTo; | ||||
|     //         } else { | ||||
|     //           this.detailData.legalPersonIdentity.validEndTime = null; | ||||
|     //         } | ||||
|     //       } | ||||
|     //     } | ||||
|     //     // 企业管理员证件照 | ||||
|     //     if (type === 0) { | ||||
|     //       if (isFront === 'front') { | ||||
|     //         // 正面 | ||||
|     //         if (res.name) { | ||||
|     //           this.detailData.adminUserInfo.name = res.name; | ||||
|     //         } | ||||
|     //         if (res.number) { | ||||
|     //           this.detailData.adminUserInfo.certificateNumber = res.number; | ||||
|     //         } | ||||
|     //       } | ||||
|     //     } | ||||
|     //   } | ||||
|     // }); | ||||
|   } | ||||
| } | ||||
| @ -7,6 +7,19 @@ import { ImageViewComponent } from 'src/app/shared/components/imagelist'; | ||||
| export class PartnerListService extends BaseService { | ||||
|   $mock_url = '/rule?_allow_anonymous=true'; | ||||
|  | ||||
|   // 查询合伙人信息-分页 | ||||
|   $api_get_partner_page = '/api/mdc/partner/list/page'; | ||||
|   // 新增/更新保存企业合伙人信息 | ||||
|   $api_save_entp_partner = '/api/mdc/partner/saveEnterprise'; | ||||
|   // 新增/更新个人合伙人信息 | ||||
|   $api_save_personal_partner = '/api/mdc/partner/savePersonally'; | ||||
|   // 获取企业合伙人信息 | ||||
|   $api_get_ent_partner_detail = '/api/mdc/partner/getEnterprise'; | ||||
|   // 获取合伙人信息 | ||||
|   $api_get_personal_partner_detail = '/api/mdc/partner/getPersonally'; | ||||
|   // 查询合伙人修改渠道渠道销售记录 | ||||
|   $api_get_personal_channel_list = '/api/mdc/partnerChannelRelLog/list/page'; | ||||
|  | ||||
|   // 根据地区code查询列表 | ||||
|   $api_get_region_by_code = '/api/mdc/pbc/region/getRegionByCode'; | ||||
|   // 根据地区code查询地区详情 | ||||
|  | ||||
| @ -10,41 +10,43 @@ | ||||
|  */ | ||||
| import { NgModule } from '@angular/core'; | ||||
| import { RouterModule, Routes } from '@angular/router'; | ||||
|  | ||||
| import { PartnerAccountManagementAccountDetailComponent } from './account-management/components/account-detail/account-detail.component'; | ||||
| import { PartnerAccountManagementListComponent } from './account-management/components/list/list.component'; | ||||
| import { PartnerAccountManagementRecordedDetailComponent } from './account-management/components/recorded-detail/recorded-detail.component'; | ||||
| import { PartnerBusinessStatisticsIndexComponent } from './business-statistics/components/index/index.component'; | ||||
| import { PartnerPartnerCustomDetailComponent } from './business-statistics/components/partner-custom-detail/partner-custom-detail.component'; | ||||
| import { PartnerSaleCustomDetailComponent } from './business-statistics/components/sale-custom-detail/sale-custom-detail.component'; | ||||
| import { ParterChannelSalesEditComponent } from './channel-sales/components/edit/edit.component'; | ||||
| import { ParterChannelSalesListComponent } from './channel-sales/components/list/list.component'; | ||||
| import { ParterLevelConfigEditComponent } from './level-config/components/edit/edit.component'; | ||||
| import { ParterLevelConfigListComponent } from './level-config/components/list/list.component'; | ||||
| import { ParterRebateManageMentParticularsComponent } from './rebate-management/components/particulars/particulars.component'; | ||||
| import { PartnerSalePartnerDetailComponent } from './business-statistics/components/sale-partner-detail/sale-partner-detail.component'; | ||||
| import { PartnerPartnerCustomOrderDetailComponent } from './business-statistics/components/partner-custom-order-detail/partner-custom-order-detail.component'; | ||||
| import { PartnerPartnerOrderDetailComponent } from './business-statistics/components/partner-order-detail/partner-order-detail.component'; | ||||
| import { PartnerAccountManagementListComponent } from './account-management/components/list/list.component'; | ||||
| import { ParterClaimAuditListComponent } from './claim-audit/components/list/list.component'; | ||||
| import { PartnerSaleCustomDetailComponent } from './business-statistics/components/sale-custom-detail/sale-custom-detail.component'; | ||||
| import { PartnerSalePartnerDetailComponent } from './business-statistics/components/sale-partner-detail/sale-partner-detail.component'; | ||||
| import { ParterChannelSalesEditComponent } from './channel-sales/components/edit/edit.component'; | ||||
| import { ParterChannelSalesListComponent } from './channel-sales/components/list/list.component'; | ||||
| import { ParterClaimAuditListChannelDetailComponent } from './claim-audit/components/channel-detail/channel-detail.component'; | ||||
| import { ParterClaimAuditListComponent } from './claim-audit/components/list/list.component'; | ||||
| import { ParterClaimAuditListPartnerDetailComponent } from './claim-audit/components/partner-detail/partner-detail.component'; | ||||
| import { ParterLevelConfigEditComponent } from './level-config/components/edit/edit.component'; | ||||
| import { ParterLevelConfigListComponent } from './level-config/components/list/list.component'; | ||||
| import { PartnerDetailComponent } from './partner-list/components/partner-detail/partner-detail.component'; | ||||
| import { ParterRebateManageMentParticularsComponent } from './rebate-management/components/particulars/particulars.component'; | ||||
| import { ParterRebateManageMentRecordComponent } from './rebate-management/components/rebate-record/rebate-record.component'; | ||||
| import { PartnerAccountManagementAccountDetailComponent } from './account-management/components/account-detail/account-detail.component'; | ||||
| import { PartnerAccountManagementRecordedDetailComponent } from './account-management/components/recorded-detail/recorded-detail.component'; | ||||
| import { PartnerAccountManagementWithdrawalsRecordComponent } from './account-management/components/withdrawals-record/withdrawals-record.component'; | ||||
| import { PartnerAccountManagementWithdralDetailComponent } from './account-management/components/withdrawals-record/withdrawals-detail/withdrawals-detail.component'; | ||||
| import { PartnerRecordedRecordComponent } from './recorded/components/record/record.component'; | ||||
| import { PartnerRecordedDetailComponent } from './recorded/components/detail/detail.component'; | ||||
| import { ParterRebateManageMentAddComponent } from './rebate-management/components/rebate-setting/add/add.component'; | ||||
| import { ParterRebateManageMentSettingComponent } from './rebate-management/components/rebate-setting/rebate-setting.component'; | ||||
| import { PartnerRecordedDetailComponent } from './recorded/components/detail/detail.component'; | ||||
| import { PartnerRecordedRecordComponent } from './recorded/components/record/record.component'; | ||||
| import { AddEtpPartnerComponent } from './partner-list/components/add-etp-partner/add-etp-partner.component'; | ||||
| import { AddPersonalPartnerComponent } from './partner-list/components/add-personal-partner/add-personal-partner.component'; | ||||
| import { PartnerDetailComponent } from './partner-list/components/partner-detail/partner-detail.component'; | ||||
| import { PartnerListComponent } from './partner-list/components/index/partner-list.component'; | ||||
| import { ParterRebateManageMentAddComponent } from './rebate-management/components/rebate-setting/add/add.component'; | ||||
| import { PartnerKnowledgeClassificationListComponent } from './knowledge/classification/components/list/list.component'; | ||||
| import { ParterArticleManagementListComponent } from './article-management/components/list/list.component'; | ||||
| import { ParterArticleManagementEditComponent } from './article-management/components/edit/edit.component'; | ||||
| import { ScrollimgComponentsAddComponent } from './scrollimg/components/add/add.component'; | ||||
| import { ScrollImgComponentsListComponent } from './scrollimg/components/list/list.component'; | ||||
| import { BannerComponentsListComponent } from './knowledge/banner/components/list/list.component'; | ||||
| import { ScrollimgComponentsAddComponent } from './scrollimg/components/add/add.component'; | ||||
| import { BannerComponentsAddComponent } from './knowledge/banner/components/add/add.component'; | ||||
| import { PersonalPartnerDetailComponent } from './partner-list/components/personal-partner-detail/personal-partner-detail.component'; | ||||
|  | ||||
| const routes: Routes = [ | ||||
|   { | ||||
| @ -81,7 +83,7 @@ const routes: Routes = [ | ||||
|       { path: 'particulars', component: ParterRebateManageMentParticularsComponent }, | ||||
|       { path: 'record', component: ParterRebateManageMentRecordComponent }, | ||||
|       { path: 'setting', component: ParterRebateManageMentSettingComponent }, | ||||
|       { path: 'setting/add/:id', component: ParterRebateManageMentAddComponent }, | ||||
|       { path: 'setting/add/:id', component: ParterRebateManageMentAddComponent } | ||||
|     ] | ||||
|   }, | ||||
|   { | ||||
| @ -93,7 +95,7 @@ const routes: Routes = [ | ||||
|           { path: '', redirectTo: 'list' }, | ||||
|           { path: 'list', component: PartnerAccountManagementListComponent }, | ||||
|           { path: 'detail/:id', component: PartnerAccountManagementAccountDetailComponent }, | ||||
|           { path: 'recorded/detail/:id', component: PartnerAccountManagementRecordedDetailComponent }, | ||||
|           { path: 'recorded/detail/:id', component: PartnerAccountManagementRecordedDetailComponent } | ||||
|         ] | ||||
|       }, | ||||
|       { | ||||
| @ -104,16 +106,16 @@ const routes: Routes = [ | ||||
|           { path: 'detail/:id', component: PartnerAccountManagementWithdralDetailComponent } | ||||
|         ] | ||||
|       } | ||||
|  | ||||
|     ] | ||||
|   }, | ||||
|   { | ||||
|     path: 'partner-list', | ||||
|     children: [ | ||||
|       { path: '', component: PartnerListComponent }, | ||||
|       { path: 'detail/:id', component: PartnerDetailComponent }, | ||||
|       { path: 'etp-detail/:id', component: PartnerDetailComponent }, | ||||
|       { path: 'personal-detail/:id', component: PersonalPartnerDetailComponent }, | ||||
|       { path: 'add-etp-partner', component: AddEtpPartnerComponent }, | ||||
|       { path: 'add-personal-partner', component: AddPersonalPartnerComponent }, | ||||
|       { path: 'add-personal-partner', component: AddPersonalPartnerComponent } | ||||
|     ] | ||||
|   }, | ||||
|   { | ||||
| @ -130,7 +132,7 @@ const routes: Routes = [ | ||||
|     children: [ | ||||
|       { path: '', component: ScrollImgComponentsListComponent }, | ||||
|       { path: 'list', component: ScrollImgComponentsListComponent }, | ||||
|       { path: 'detail', component: ScrollimgComponentsAddComponent }, | ||||
|       { path: 'detail', component: ScrollimgComponentsAddComponent } | ||||
|     ] | ||||
|   }, | ||||
|   { | ||||
| @ -147,13 +149,13 @@ const routes: Routes = [ | ||||
|       { path: 'article-management-list', component: ParterArticleManagementListComponent }, | ||||
|       { path: 'article-management-add', component: ParterArticleManagementEditComponent }, | ||||
|       { path: 'article-management-edit', component: ParterArticleManagementEditComponent }, | ||||
|       { path: 'banner', component: BannerComponentsListComponent}, | ||||
|       { path: 'banner/detail', component: BannerComponentsAddComponent }, | ||||
|       { path: 'banner', component: BannerComponentsListComponent }, | ||||
|       { path: 'banner/detail', component: BannerComponentsAddComponent } | ||||
|     ] | ||||
|   }, | ||||
|   } | ||||
| ]; | ||||
| @NgModule({ | ||||
|   imports: [RouterModule.forChild(routes)], | ||||
|   exports: [RouterModule] | ||||
| }) | ||||
| export class PartnerRoutingModule { } | ||||
| export class PartnerRoutingModule {} | ||||
|  | ||||
| @ -58,6 +58,7 @@ import { ScrollimgComponentsAddComponent } from './scrollimg/components/add/add. | ||||
| import { ScrollImgComponentsListComponent } from './scrollimg/components/list/list.component'; | ||||
| import { BannerComponentsListComponent } from './knowledge/banner/components/list/list.component'; | ||||
| import { BannerComponentsAddComponent } from './knowledge/banner/components/add/add.component'; | ||||
| import { PersonalPartnerDetailComponent } from './partner-list/components/personal-partner-detail/personal-partner-detail.component'; | ||||
|  | ||||
| const COMPONENTS: any[] = [ | ||||
|   PartnerBusinessStatisticsIndexComponent, | ||||
| @ -105,7 +106,8 @@ const COMPONENTS: any[] = [ | ||||
|   PartnerKnowledgeClassificationListComponent, | ||||
|   PartnerEditComponent, | ||||
|   BannerComponentsListComponent, | ||||
|   BannerComponentsAddComponent | ||||
|   BannerComponentsAddComponent, | ||||
|   PersonalPartnerDetailComponent | ||||
| ]; | ||||
|  | ||||
| @NgModule({ | ||||
| @ -113,4 +115,4 @@ const COMPONENTS: any[] = [ | ||||
|   imports: [CommonModule, PartnerRoutingModule, SharedModule], | ||||
|   providers: [PartnerListService] | ||||
| }) | ||||
| export class PartnerModule { } | ||||
| export class PartnerModule {} | ||||
|  | ||||
| @ -10,7 +10,7 @@ | ||||
|     width       : 18px; | ||||
|     fill        : currentColor; | ||||
|     overflow    : hidden; | ||||
|     font-size: 18px !important; | ||||
|     font-size   : 18px !important; | ||||
|     color       : #ffffff; | ||||
|     margin-right: 10px; | ||||
| } | ||||
| @ -48,3 +48,19 @@ input[type="number"] { | ||||
|     word-break: break-all; | ||||
|     word-wrap : break-word; | ||||
| } | ||||
|  | ||||
| .ant-select-tree .ant-select-tree-treenode-disabled { | ||||
|     .ant-select-tree-checkbox { | ||||
|         margin: 0; | ||||
|  | ||||
|         .ant-select-tree-checkbox-inner { | ||||
|             width       : 0px; | ||||
|             border-color: #ffffff !important; | ||||
|         } | ||||
|     } | ||||
|  | ||||
|     .ant-select-tree-node-content-wrapper { | ||||
|         color : unset; | ||||
|         cursor: not-allowed; | ||||
|     } | ||||
| } | ||||
		Reference in New Issue
	
	Block a user